@adminiumjs/i18n 0.1.0 → 0.1.2

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 (89) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/locales.d.ts +1 -1
  4. package/dist/locales.js +1 -1
  5. package/dist/react.d.ts +10 -0
  6. package/dist/react.d.ts.map +1 -1
  7. package/dist/react.js +37 -0
  8. package/dist/react.js.map +1 -1
  9. package/dist/resources/ar-eg/common.d.ts +4 -0
  10. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  11. package/dist/resources/ar-eg/common.js +4 -0
  12. package/dist/resources/ar-eg/common.js.map +1 -1
  13. package/dist/resources/ar-eg/ui.d.ts +769 -1
  14. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  15. package/dist/resources/ar-eg/ui.js +823 -55
  16. package/dist/resources/ar-eg/ui.js.map +1 -1
  17. package/dist/resources/cs-cz/common.d.ts +4 -0
  18. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  19. package/dist/resources/cs-cz/common.js +4 -0
  20. package/dist/resources/cs-cz/common.js.map +1 -1
  21. package/dist/resources/cs-cz/ui.d.ts +769 -1
  22. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  23. package/dist/resources/cs-cz/ui.js +823 -55
  24. package/dist/resources/cs-cz/ui.js.map +1 -1
  25. package/dist/resources/da-dk/common.d.ts +4 -0
  26. package/dist/resources/da-dk/common.d.ts.map +1 -1
  27. package/dist/resources/da-dk/common.js +4 -0
  28. package/dist/resources/da-dk/common.js.map +1 -1
  29. package/dist/resources/da-dk/ui.d.ts +769 -1
  30. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  31. package/dist/resources/da-dk/ui.js +823 -55
  32. package/dist/resources/da-dk/ui.js.map +1 -1
  33. package/dist/resources/de-de/common.d.ts +4 -0
  34. package/dist/resources/de-de/common.d.ts.map +1 -1
  35. package/dist/resources/de-de/common.js +4 -0
  36. package/dist/resources/de-de/common.js.map +1 -1
  37. package/dist/resources/de-de/ui.d.ts +769 -1
  38. package/dist/resources/de-de/ui.d.ts.map +1 -1
  39. package/dist/resources/de-de/ui.js +823 -55
  40. package/dist/resources/de-de/ui.js.map +1 -1
  41. package/dist/resources/en-us/common.d.ts +4 -0
  42. package/dist/resources/en-us/common.d.ts.map +1 -1
  43. package/dist/resources/en-us/common.js +4 -0
  44. package/dist/resources/en-us/common.js.map +1 -1
  45. package/dist/resources/en-us/ui.d.ts +809 -41
  46. package/dist/resources/en-us/ui.d.ts.map +1 -1
  47. package/dist/resources/en-us/ui.js +861 -93
  48. package/dist/resources/en-us/ui.js.map +1 -1
  49. package/dist/resources/fr-fr/common.d.ts +4 -0
  50. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  51. package/dist/resources/fr-fr/common.js +4 -0
  52. package/dist/resources/fr-fr/common.js.map +1 -1
  53. package/dist/resources/fr-fr/ui.d.ts +769 -1
  54. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  55. package/dist/resources/fr-fr/ui.js +823 -55
  56. package/dist/resources/fr-fr/ui.js.map +1 -1
  57. package/dist/resources/zh-cn/common.d.ts +4 -0
  58. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  59. package/dist/resources/zh-cn/common.js +4 -0
  60. package/dist/resources/zh-cn/common.js.map +1 -1
  61. package/dist/resources/zh-cn/ui.d.ts +769 -1
  62. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  63. package/dist/resources/zh-cn/ui.js +823 -55
  64. package/dist/resources/zh-cn/ui.js.map +1 -1
  65. package/dist/resources/zh-tw/common.d.ts +4 -0
  66. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  67. package/dist/resources/zh-tw/common.js +4 -0
  68. package/dist/resources/zh-tw/common.js.map +1 -1
  69. package/dist/resources/zh-tw/ui.d.ts +769 -1
  70. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  71. package/dist/resources/zh-tw/ui.js +823 -55
  72. package/dist/resources/zh-tw/ui.js.map +1 -1
  73. package/locales/ar-EG/common.json +4 -0
  74. package/locales/ar-EG/ui.json +823 -55
  75. package/locales/cs-CZ/common.json +4 -0
  76. package/locales/cs-CZ/ui.json +823 -55
  77. package/locales/da-DK/common.json +4 -0
  78. package/locales/da-DK/ui.json +823 -55
  79. package/locales/de-DE/common.json +4 -0
  80. package/locales/de-DE/ui.json +823 -55
  81. package/locales/en-US/common.json +4 -0
  82. package/locales/en-US/ui.json +861 -93
  83. package/locales/fr-FR/common.json +4 -0
  84. package/locales/fr-FR/ui.json +823 -55
  85. package/locales/zh-CN/common.json +4 -0
  86. package/locales/zh-CN/ui.json +823 -55
  87. package/locales/zh-TW/common.json +4 -0
  88. package/locales/zh-TW/ui.json +823 -55
  89. package/package.json +1 -1
@@ -25,7 +25,8 @@ export default {
25
25
  "showPassword": "Show password",
26
26
  "hidePassword": "Hide password",
27
27
  "reveal": "Reveal",
28
- "hide": "Hide"
28
+ "hide": "Hide",
29
+ "clearSearch": "Clear search"
29
30
  },
30
31
  "state": {
31
32
  "loading": "Loading…",
@@ -67,7 +68,9 @@ export default {
67
68
  "description": "The workhorse metric card: a headline aggregate with an optional trend pill and mini sparkline."
68
69
  },
69
70
  "usageMeter": {
70
- "description": "Quota consumption against a limit; the bar turns amber, then red, past your thresholds."
71
+ "description": "Quota consumption against a limit; the bar turns amber, then red, past your thresholds.",
72
+ "usageLabel": "Usage",
73
+ "ofLabel": "of"
71
74
  },
72
75
  "statTileCompact": {
73
76
  "description": "A slim metric tile with a micro-label, trend chip, and 6-bar spark — for dense rows of 4 to 6."
@@ -83,13 +86,17 @@ export default {
83
86
  "description": "A ring gauge for a score or percentage, tinted by the band the value falls in."
84
87
  },
85
88
  "gaugeArc": {
86
- "description": "A speedometer arc with qualitative bands and a needle; also renders a grid of gauges."
89
+ "description": "A speedometer arc with qualitative bands and a needle; also renders a grid of gauges.",
90
+ "emptyTitle": "No gauges to show",
91
+ "emptyBody": "Services appear here as gauges once there is a reading for them."
87
92
  },
88
93
  "periodComparison": {
89
94
  "description": "This period against last as two bars, with the difference computed underneath.",
90
95
  "higherLabel": "higher",
91
96
  "lowerLabel": "lower",
92
- "flatLabel": "flat"
97
+ "flatLabel": "flat",
98
+ "periodALabel": "This period",
99
+ "periodBLabel": "Last period"
93
100
  },
94
101
  "microKpiSubtitle": {
95
102
  "description": "A one-line header stat built from a template, recomputed from live state."
@@ -105,54 +112,250 @@ export default {
105
112
  "boxplot": {
106
113
  "description": "Whisker-and-box summary of a numeric column's spread per category — min, quartiles, median and max.",
107
114
  "emptyTitle": "No distribution to plot",
108
- "emptyBody": "No rows matched the filters to summarise as box plots."
115
+ "emptyBody": "No rows matched the filters to summarise as box plots.",
116
+ "chartLabel": "Box plot"
109
117
  },
110
118
  "violin": {
111
119
  "description": "Mirrored density curves comparing how a numeric column is distributed across groups.",
112
120
  "emptyTitle": "No distribution to plot",
113
- "emptyBody": "No rows matched the filters to build density profiles."
121
+ "emptyBody": "No rows matched the filters to build density profiles.",
122
+ "chartLabel": "Violin plot"
114
123
  },
115
124
  "ridgeline": {
116
125
  "description": "Overlapping density ridges comparing a numeric column across ordered groups.",
117
126
  "emptyTitle": "No ridges to plot",
118
- "emptyBody": "No rows matched the filters to build density profiles."
127
+ "emptyBody": "No rows matched the filters to build density profiles.",
128
+ "chartLabel": "Ridgeline"
119
129
  },
120
130
  "scatterBubble": {
121
131
  "description": "Two numeric columns as points, with an optional bubble size and a trend line.",
122
132
  "emptyTitle": "No points to plot",
123
- "emptyBody": "No rows matched the filters for the selected columns."
133
+ "emptyBody": "No rows matched the filters for the selected columns.",
134
+ "chartLabel": "Scatter plot"
124
135
  },
125
136
  "hexbin": {
126
137
  "description": "Hex-binned density of two numeric columns, shaded by how many rows fall in each tile.",
127
138
  "emptyTitle": "No density to plot",
128
- "emptyBody": "No rows matched the filters to bin."
139
+ "emptyBody": "No rows matched the filters to bin.",
140
+ "chartLabel": "Density hexbin"
129
141
  },
130
142
  "correlationMatrix": {
131
143
  "description": "Pearson correlation between selected numeric columns, from strong positive to strong negative.",
132
144
  "emptyTitle": "Nothing to correlate",
133
- "emptyBody": "Select at least two numeric columns with matching rows."
145
+ "emptyBody": "Select at least two numeric columns with matching rows.",
146
+ "chartLabel": "Correlation matrix"
134
147
  },
135
148
  "parallelCoordinates": {
136
149
  "description": "Each record as a line across several normalised numeric axes, coloured by a category.",
137
150
  "emptyTitle": "No records to plot",
138
- "emptyBody": "No rows matched the filters across the selected axes."
151
+ "emptyBody": "No rows matched the filters across the selected axes.",
152
+ "chartLabel": "Parallel coordinates"
153
+ },
154
+ "unexpectedShape": "Unexpected data shape.",
155
+ "lineArea": {
156
+ "chartLabel": "Line chart",
157
+ "description": "A metric over time as a line with a soft area fill, with an optional dashed prior-period comparison."
158
+ },
159
+ "bar": {
160
+ "chartLabel": "Bar chart",
161
+ "description": "Categorical or time-bucketed values as vertical bars, with an optional highlight on the largest or current bar."
162
+ },
163
+ "donut": {
164
+ "chartLabel": "Donut chart",
165
+ "otherLabel": "Other",
166
+ "description": "Category shares as donut slices with a legend and centre total, folding small slices into an Other bucket."
167
+ },
168
+ "bullet": {
169
+ "chartLabel": "Bullet chart",
170
+ "description": "Progress toward a goal as a measure bar over qualitative bands, with a target tick per row.",
171
+ "emptyTitle": "No goals to track",
172
+ "emptyBody": "Add measures with targets to compare against."
173
+ },
174
+ "rankingBars": {
175
+ "chartLabel": "Ranking",
176
+ "description": "A top-N ranking as horizontal bars — the leader at full strength, the rest dimmed — with values alongside.",
177
+ "emptyTitle": "Nothing to rank",
178
+ "emptyBody": "No records matched this breakdown yet."
179
+ },
180
+ "pareto": {
181
+ "chartLabel": "Pareto chart",
182
+ "description": "Sorted category bars under a cumulative-percent line, with an optional 80% cutline.",
183
+ "emptyTitle": "No categories to chart",
184
+ "emptyBody": "No grouped counts were returned for this range."
185
+ },
186
+ "waterfall": {
187
+ "chartLabel": "Waterfall chart",
188
+ "description": "A floating-bar bridge from a start total through positive and negative steps to a net total.",
189
+ "emptyTitle": "No movement to bridge",
190
+ "emptyBody": "No start, change, or total steps were found."
191
+ },
192
+ "marimekko": {
193
+ "chartLabel": "Marimekko chart",
194
+ "description": "A two-level mix as variable-width stacked columns — width for the outer share, segments for the inner split.",
195
+ "emptyTitle": "No mix to break down",
196
+ "emptyBody": "No two-level breakdown was returned for this range."
197
+ },
198
+ "stackedBar100": {
199
+ "chartLabel": "100% stacked bar",
200
+ "description": "One 100% bar split into proportional segments with a legend, comparing shares of a whole.",
201
+ "emptyTitle": "No shares to split",
202
+ "emptyBody": "No parts were returned for this breakdown."
203
+ },
204
+ "slope": {
205
+ "chartLabel": "Slope chart",
206
+ "description": "Two periods joined by one line per record, coloured by whether the value rose or fell.",
207
+ "emptyTitle": "No period shift to show",
208
+ "emptyBody": "No before/after values were returned to compare."
209
+ },
210
+ "multiline": {
211
+ "chartLabel": "Multi-line chart",
212
+ "description": "Several series as overlaid lines with end labels, comparing trends over the same time span.",
213
+ "emptyTitle": "No series to plot",
214
+ "emptyBody": "No time series matched the filters for this range."
215
+ },
216
+ "stream": {
217
+ "chartLabel": "Stream chart",
218
+ "description": "Stacked bands flowing around a centre line, showing how a total's composition shifts over time.",
219
+ "emptyTitle": "No flow to chart",
220
+ "emptyBody": "No stacked series were returned for this range."
221
+ },
222
+ "forecast": {
223
+ "chartLabel": "Forecast chart",
224
+ "nowLabel": "Now",
225
+ "forecastLabel": "Forecast",
226
+ "actualLabel": "Actual",
227
+ "description": "A history line extended by a dashed projection inside a widening confidence band, split at a now divider.",
228
+ "emptyTitle": "No history to project",
229
+ "emptyBody": "No past points were returned to forecast from."
230
+ },
231
+ "anomaly": {
232
+ "chartLabel": "Anomaly chart",
233
+ "description": "A value line over its expected range, flagging points that fall outside it with halo dots.",
234
+ "emptyTitle": "No signal to scan",
235
+ "emptyBody": "No points were returned to check for anomalies."
236
+ },
237
+ "candlestick": {
238
+ "chartLabel": "Candlestick chart",
239
+ "livePillLabel": "Live",
240
+ "description": "Open-high-low-close candles coloured by direction, with a dashed last-price line and an optional live pill.",
241
+ "emptyTitle": "No candles to chart",
242
+ "emptyBody": "No open-high-low-close rows matched this range."
243
+ },
244
+ "bump": {
245
+ "chartLabel": "Bump chart",
246
+ "description": "Rank-over-time lines showing how competitors trade places between periods.",
247
+ "emptyTitle": "No ranks to trace",
248
+ "emptyBody": "No period-over-period rankings were returned."
249
+ },
250
+ "timelineLanes": {
251
+ "chartLabel": "Timeline lanes",
252
+ "laneLabel": "Events",
253
+ "description": "Dated events as pills on horizontal swimlanes sharing one time axis.",
254
+ "emptyTitle": "No events to place",
255
+ "emptyBody": "No events matched the filters for this range."
256
+ },
257
+ "treemap": {
258
+ "chartLabel": "Treemap",
259
+ "otherLabel": "Other",
260
+ "description": "A part-to-whole breakdown as squarified tiles sized by value, folding small slices into an Other tile.",
261
+ "emptyTitle": "No slices to tile",
262
+ "emptyBody": "No categories were returned for this breakdown."
263
+ },
264
+ "sunburst": {
265
+ "chartLabel": "Sunburst",
266
+ "description": "A two-level hierarchy as nested rings — parents inside, their children outside — with a parent legend.",
267
+ "emptyTitle": "No rings to draw",
268
+ "emptyBody": "No grouped categories were returned to nest."
269
+ },
270
+ "funnel": {
271
+ "chartLabel": "Funnel",
272
+ "description": "Ordered shrinking stages with per-step continuation rates and an overall-conversion footer.",
273
+ "emptyTitle": "No stages to funnel",
274
+ "emptyBody": "No step counts were returned for this range."
275
+ },
276
+ "radialBar": {
277
+ "chartLabel": "Radial bar",
278
+ "description": "Up to four percentages as concentric progress rings with a dot legend.",
279
+ "emptyTitle": "No rings to fill",
280
+ "emptyBody": "No categories matched this breakdown yet."
281
+ },
282
+ "radar": {
283
+ "chartLabel": "Radar",
284
+ "description": "Several named axes on a polygon with one filled shape per series, against an optional target overlay.",
285
+ "emptyTitle": "No axes to compare",
286
+ "emptyBody": "No matrix of series and axes was returned."
287
+ },
288
+ "chord": {
289
+ "chartLabel": "Chord",
290
+ "description": "Pairwise flows as ribbons between nodes on a ring, with ribbon opacity weighted by volume.",
291
+ "emptyTitle": "No flows to link",
292
+ "emptyBody": "No connections between groups were returned."
293
+ },
294
+ "wordcloud": {
295
+ "chartLabel": "Word cloud",
296
+ "description": "Terms sized by frequency and flowed into rows, for a glanceable view of what dominates.",
297
+ "emptyTitle": "No terms to cloud",
298
+ "emptyBody": "No weighted terms matched the filters."
299
+ },
300
+ "cohortMatrix": {
301
+ "chartLabel": "Cohort retention",
302
+ "description": "Cohort rows against period columns, each cell shaded by retention or revenue."
303
+ },
304
+ "heatmapCalendar": {
305
+ "chartLabel": "Activity calendar",
306
+ "legendLessLabel": "Less",
307
+ "legendMoreLabel": "More",
308
+ "description": "A year of daily activity as a week-by-day grid shaded by intensity."
309
+ },
310
+ "heatMonth": {
311
+ "chartLabel": "Monthly activity",
312
+ "description": "One calendar month as a day grid shaded by each day's value."
313
+ },
314
+ "choroplethGrid": {
315
+ "chartLabel": "Regional breakdown",
316
+ "legendLowLabel": "Low",
317
+ "legendHighLabel": "High",
318
+ "description": "Regional values as a tinted US tilegram or compact grid, with an optional top-N ranking list."
319
+ },
320
+ "sankey": {
321
+ "chartLabel": "Flow",
322
+ "description": "Layered source-to-target flows as ribbons whose thickness encodes volume."
323
+ },
324
+ "sparkline": {
325
+ "description": "An inline micro-trend of recent values — no axes or labels — for KPI cards, table cells and list rows."
139
326
  }
140
327
  },
141
328
  "feeds": {
142
329
  "activityFeed": {
143
330
  "description": "A running feed of who did what across your workspace, newest first.",
144
331
  "emptyTitle": "No recent activity",
145
- "emptyBody": "Actions across your workspace will show up here."
332
+ "emptyBody": "Actions across your workspace will show up here.",
333
+ "viewAllLabel": "View all"
146
334
  },
147
335
  "notificationFeed": {
148
336
  "description": "Grouped notifications with unread state, filters, and inline actions.",
149
337
  "emptyTitle": "No notifications",
150
- "emptyBody": "New notifications will appear here."
338
+ "emptyBody": "New notifications will appear here.",
339
+ "allLabel": "All",
340
+ "unreadLabel": "Unread",
341
+ "mentionsLabel": "Mentions",
342
+ "filterLabel": "Notification filter",
343
+ "markAllReadLabel": "Mark all read",
344
+ "todayLabel": "Today",
345
+ "yesterdayLabel": "Yesterday",
346
+ "earlierLabel": "Earlier",
347
+ "dismissLabel": "Dismiss",
348
+ "emptyUnreadTitle": "You're all caught up",
349
+ "emptyMentionsTitle": "No mentions"
151
350
  },
152
351
  "realtimeFeed": {
153
352
  "description": "A live event stream that prepends new items as they arrive.",
154
353
  "emptyTitle": "Waiting for events",
155
- "emptyBody": "Live events will stream in as they happen."
354
+ "emptyBody": "Live events will stream in as they happen.",
355
+ "liveLabel": "Live",
356
+ "pausedLabel": "Paused",
357
+ "pauseLabel": "Pause",
358
+ "resumeLabel": "Resume"
156
359
  },
157
360
  "timelineVertical": {
158
361
  "description": "A vertical timeline of events, releases, incidents, or run steps.",
@@ -181,22 +384,41 @@ export default {
181
384
  "calendarMonth": {
182
385
  "description": "A month grid of scheduled events with per-day chips and month navigation.",
183
386
  "emptyTitle": "Nothing scheduled",
184
- "emptyBody": "Scheduled events will appear on this calendar."
387
+ "emptyBody": "Scheduled events will appear on this calendar.",
388
+ "previousLabel": "Previous month",
389
+ "nextLabel": "Next month",
390
+ "overflowLabel": "+{count} more"
185
391
  },
186
392
  "dayAgenda": {
187
393
  "description": "The selected day's events as a time-ordered agenda.",
188
394
  "emptyTitle": "Nothing scheduled",
189
- "emptyBody": "Events for the selected day will appear here."
395
+ "emptyBody": "Events for the selected day will appear here.",
396
+ "countLabel": "{count, plural, one {{n} event} other {{n} events}}"
190
397
  },
191
398
  "scheduleMatrix": {
192
399
  "description": "A resource-by-day shift grid with per-day coverage and a shift legend.",
193
400
  "emptyTitle": "No shifts scheduled",
194
- "emptyBody": "Assigned shifts will appear on this schedule."
401
+ "emptyBody": "Assigned shifts will appear on this schedule.",
402
+ "resourceLabel": "Resource",
403
+ "coverageLabel": "Coverage",
404
+ "hoursLabel": "{hours}h"
195
405
  },
196
406
  "capacityBoard": {
197
407
  "description": "Per-member utilization bars with a project breakdown and load status.",
198
408
  "emptyTitle": "No workload data",
199
- "emptyBody": "Member utilization will appear here once assignments exist."
409
+ "emptyBody": "Member utilization will appear here once assignments exist.",
410
+ "status": {
411
+ "overloaded": "Overloaded",
412
+ "balanced": "Balanced",
413
+ "available": "Available"
414
+ },
415
+ "utilizationLabel": "{name}: {util}%",
416
+ "assignmentLabel": "{project} · {hours}h",
417
+ "periodLabel": "h · {period}",
418
+ "period": {
419
+ "week": "week",
420
+ "month": "month"
421
+ }
200
422
  },
201
423
  "calendarLegendFilter": {
202
424
  "description": "Event categories with counts; toggling one filters the calendar beside it.",
@@ -235,13 +457,29 @@ export default {
235
457
  "tables": {
236
458
  "masterList": {
237
459
  "description": "A selectable list of records that drives a detail pane.",
238
- "emptyTitle": "No items",
239
- "emptyBody": "Items will appear here once they exist."
460
+ "emptyTitle": "No items match this filter",
461
+ "emptyBody": "Items will appear here once they exist.",
462
+ "allLabel": "All",
463
+ "toggleLabel": "Toggle {title}",
464
+ "progressLabel": "{title} progress"
240
465
  },
241
466
  "logTable": {
242
467
  "description": "An append-only event log with search, an errors filter, and row actions.",
243
468
  "emptyTitle": "No log entries",
244
- "emptyBody": "Events will be recorded here as they happen."
469
+ "emptyBody": "Events will be recorded here as they happen.",
470
+ "liveLabel": "Live",
471
+ "placeholder": "Search logs…",
472
+ "filterLabel": "Log filter",
473
+ "allLabel": "All",
474
+ "errorsLabel": "Errors",
475
+ "noMatchesLabel": "No matching entries",
476
+ "todayLabel": "Today",
477
+ "yesterdayLabel": "Yesterday",
478
+ "action": {
479
+ "retry": "retry",
480
+ "download": "download",
481
+ "inspect": "inspect"
482
+ }
245
483
  },
246
484
  "cardGallery": {
247
485
  "description": "A responsive gallery of entity cards with status and quick actions.",
@@ -251,17 +489,23 @@ export default {
251
489
  "groupedSummaryTable": {
252
490
  "description": "Grouped rows with aggregate columns, expandable details, and totals.",
253
491
  "emptyTitle": "No summary data",
254
- "emptyBody": "Grouped totals will appear here once there is data."
492
+ "emptyBody": "Grouped totals will appear here once there is data.",
493
+ "groupLabel": "Group",
494
+ "totalsLabel": "Total"
255
495
  },
256
496
  "schemaTree": {
257
497
  "description": "An explorer for schemas, tables, and columns with type and key badges.",
258
498
  "emptyTitle": "No schema introspected",
259
- "emptyBody": "Connect a database to explore its schema here."
499
+ "emptyBody": "Connect a database to explore its schema here.",
500
+ "treeLabel": "Schema",
501
+ "viewLabel": "view"
260
502
  },
261
503
  "toggleMatrix": {
262
504
  "description": "An interactive grid of boolean toggles for roles, policies, or channels.",
263
505
  "emptyTitle": "No matrix configured",
264
- "emptyBody": "Rows and columns will appear here once configured."
506
+ "emptyBody": "Rows and columns will appear here once configured.",
507
+ "matrixLabel": "Permissions matrix",
508
+ "rowHeaderLabel": "Permission"
265
509
  },
266
510
  "sparklineTable": {
267
511
  "description": "Metric rows with a micro sparkline, the current value, and a good/bad-aware change pill.",
@@ -294,13 +538,47 @@ export default {
294
538
  "emptyTitle": "Nothing discovered yet",
295
539
  "emptyBody": "Tables and variables will appear here as chips once they are found.",
296
540
  "moreLabel": "+{n} more"
541
+ },
542
+ "dataGrid": {
543
+ "selectAllLabel": "Select all rows",
544
+ "selectRowLabel": "Select row",
545
+ "sortByLabel": "Sort by {column}",
546
+ "description": "The canonical CRUD grid with sortable columns, row selection, and type-aware cells."
547
+ },
548
+ "paginationFooter": {
549
+ "emptyLabel": "0 rows",
550
+ "ofLabel": "of",
551
+ "pageSizeLabel": "Rows",
552
+ "a11y": {
553
+ "pageSize": "Rows per page"
554
+ },
555
+ "prevLabel": "Previous page",
556
+ "nextLabel": "Next page",
557
+ "description": "A footer with the visible row range, prev/next paging, and a page-size select."
558
+ },
559
+ "bulkActionToolbar": {
560
+ "selectedLabel": "selected",
561
+ "clearLabel": "Clear selection",
562
+ "toolbarLabel": "Bulk actions",
563
+ "description": "A selection-aware toolbar showing the selected count and bulk actions."
564
+ },
565
+ "miniTable": {
566
+ "viewAllLabel": "View all",
567
+ "description": "A compact dashboard row list with mapped columns and a view-all link."
568
+ },
569
+ "revealLabel": "Reveal value",
570
+ "hideLabel": "Hide value",
571
+ "trueLabel": "true",
572
+ "falseLabel": "false",
573
+ "detailKeyValue": {
574
+ "description": "A record's fields as label/value rows with type-aware values."
297
575
  }
298
576
  },
299
577
  "boards": {
300
578
  "kanbanBoard": {
301
579
  "description": "Fixed status columns of draggable cards; drag a card to another column to update its status.",
302
- "emptyTitle": "No cards yet",
303
- "emptyBody": "Cards will appear in their status columns as records are created."
580
+ "emptyTitle": "No board columns",
581
+ "emptyBody": "Add a status field to group cards into columns."
304
582
  },
305
583
  "kanbanSwimlaneGrid": {
306
584
  "description": "A lane × column grid where dragging a card reassigns both its lane and its status.",
@@ -347,7 +625,8 @@ export default {
347
625
  "composerPlaceholder": "Write a message…",
348
626
  "sendLabel": "Send",
349
627
  "attachLabel": "Add attachment",
350
- "typingLabel": "typing…"
628
+ "typingLabel": "typing…",
629
+ "composerLabel": "Message"
351
630
  },
352
631
  "aiChatPanel": {
353
632
  "description": "An assistant panel for asking questions about your schema and data.",
@@ -358,7 +637,9 @@ export default {
358
637
  "pendingLabel": "Thinking…",
359
638
  "configureTitle": "No AI provider configured",
360
639
  "configureBody": "Add an Anthropic or OpenAI key — or point Adminium at your own endpoint — to ask questions about your schema.",
361
- "configureCtaLabel": "Configure a provider"
640
+ "configureCtaLabel": "Configure a provider",
641
+ "assistantLabel": "Assistant",
642
+ "composerLabel": "Ask a question"
362
643
  },
363
644
  "typingIndicator": {
364
645
  "description": "An avatar and an italic “typing…” row, bound to a live per-conversation boolean.",
@@ -386,7 +667,7 @@ export default {
386
667
  "description": "A map whose circle markers are sized by the metric you choose, alongside a ranked list of the top places.",
387
668
  "emptyTitle": "No locations",
388
669
  "emptyBody": "Rows with latitude and longitude values appear here as map markers.",
389
- "mapUnavailableLabel": "The map could not be loaded. The ranked list shows the same data.",
670
+ "mapUnavailableLabel": "The map could not be loaded. The ranked list below shows the same data.",
390
671
  "regionsLabel": "Top regions",
391
672
  "metricLabel": "Metric"
392
673
  },
@@ -395,7 +676,8 @@ export default {
395
676
  "emptyTitle": "No regions",
396
677
  "emptyBody": "Rows with a region code and a numeric value appear here as tinted tiles.",
397
678
  "legendLowLabel": "Low",
398
- "legendHighLabel": "High"
679
+ "legendHighLabel": "High",
680
+ "chartLabel": "Regional breakdown"
399
681
  }
400
682
  },
401
683
  "domain": {
@@ -414,8 +696,8 @@ export default {
414
696
  },
415
697
  "documentCanvas": {
416
698
  "description": "A paper-styled document canvas — invoice, report or email — whose blocks can be selected, reordered and removed.",
417
- "emptyTitle": "Nothing in this document",
418
- "emptyBody": "Add a block from the palette to start building the document.",
699
+ "emptyTitle": "No blocks yet",
700
+ "emptyBody": "Add a block from the palette to build this document.",
419
701
  "addBlockLabel": "Add block",
420
702
  "removeBlockLabel": "Remove block",
421
703
  "moveUpLabel": "Move block up",
@@ -423,11 +705,13 @@ export default {
423
705
  "blockListLabel": "Document blocks",
424
706
  "billedToLabel": "Billed to",
425
707
  "issuedLabel": "Issued",
426
- "dueLabel": "Due"
708
+ "dueLabel": "Due",
709
+ "noDocumentTitle": "No document yet",
710
+ "noDocumentBody": "Pick a starter template or add a block to begin."
427
711
  },
428
712
  "blockTotalsSummary": {
429
713
  "description": "The document totals — subtotal, discount, tax and the total due, recomputed from the line items.",
430
- "emptyTitle": "No totals yet",
714
+ "emptyTitle": "No totals",
431
715
  "emptyBody": "Totals appear once the document has line items.",
432
716
  "subtotalLabel": "Subtotal",
433
717
  "discountLabel": "Discount",
@@ -437,7 +721,7 @@ export default {
437
721
  "blockLineItems": {
438
722
  "description": "Editable description, quantity and rate rows that feed the document totals.",
439
723
  "emptyTitle": "No line items",
440
- "emptyBody": "Add a line item to bill for work on this document.",
724
+ "emptyBody": "Add a line item to build this document.",
441
725
  "descHeader": "Description",
442
726
  "qtyHeader": "Qty",
443
727
  "rateHeader": "Rate",
@@ -446,84 +730,87 @@ export default {
446
730
  "blockKpiRow": {
447
731
  "description": "A row of stat tiles with sign-aware delta coloring.",
448
732
  "emptyTitle": "No metrics",
449
- "emptyBody": "Metrics appear here once the report has figures to show."
733
+ "emptyBody": "Report metrics will appear here once the document is bound."
450
734
  },
451
735
  "blockBarChart": {
452
736
  "description": "A mini bar chart in the document accent, sized for a document block.",
453
- "emptyTitle": "No data to chart",
454
- "emptyBody": "The bars appear once the report has a series to plot."
737
+ "emptyTitle": "No chart data",
738
+ "emptyBody": "A mini bar chart appears once this block is bound to a series.",
739
+ "a11yLabel": "Bar chart"
455
740
  },
456
741
  "blockLineChart": {
457
742
  "description": "A mini line chart with an optional filled area, sized for a document block.",
458
- "emptyTitle": "No data to chart",
459
- "emptyBody": "The line appears once the report has a series to plot."
743
+ "emptyTitle": "No chart data",
744
+ "emptyBody": "A mini line chart appears once this block is bound to a series.",
745
+ "a11yLabel": "Line chart"
460
746
  },
461
747
  "blockTwoColTable": {
462
748
  "description": "A two-column table with a styled header row and a mono value column.",
463
749
  "emptyTitle": "No rows",
464
- "emptyBody": "Rows appear here once the report has values to list."
750
+ "emptyBody": "Two-column rows will appear here."
465
751
  },
466
752
  "blockTaxBreakdown": {
467
753
  "description": "Tax lines with label, rate and amount, applied to the document subtotal.",
468
754
  "emptyTitle": "No tax lines",
469
- "emptyBody": "Tax lines appear once the document has rates to apply."
755
+ "emptyBody": "Tax lines appear once a rate applies to this document."
470
756
  },
471
757
  "blockMultiCurrency": {
472
758
  "description": "The document total converted per currency at the given rates.",
473
759
  "emptyTitle": "No conversions",
474
- "emptyBody": "Conversions appear once the document lists exchange rates.",
760
+ "emptyBody": "Currency conversions appear once exchange rates are available.",
475
761
  "footnote": "Rates are indicative and may differ at settlement."
476
762
  },
477
763
  "blockPaymentHistory": {
478
764
  "description": "Past payments with date, masked method, amount and a status pill.",
479
765
  "emptyTitle": "No payments yet",
480
- "emptyBody": "Payments against this document appear here."
766
+ "emptyBody": "Payments against this document will appear here."
481
767
  },
482
768
  "blockDiscountCodes": {
483
769
  "description": "Applied discount codes with their label and credited amount.",
484
- "emptyTitle": "No discounts applied",
485
- "emptyBody": "Discount codes applied to this document appear here."
770
+ "emptyTitle": "No discount codes",
771
+ "emptyBody": "Applied discount codes will appear here."
486
772
  },
487
773
  "blockLoyaltyBanner": {
488
774
  "description": "A loyalty banner with the points balance, tier and points earned on this order.",
489
775
  "emptyTitle": "No loyalty balance",
490
- "emptyBody": "The loyalty banner appears once the customer has a points balance.",
776
+ "emptyBody": "Loyalty points appear once this customer is enrolled.",
491
777
  "balanceLabel": "{balance} pts · {tier}",
492
- "earnedLabel": "+{earned} earned on this order"
778
+ "earnedLabel": "+{earned} earned"
493
779
  },
494
780
  "blockRecurringBanner": {
495
781
  "description": "A banner announcing the billing frequency, the next charge date and the cycles remaining.",
496
782
  "emptyTitle": "Not recurring",
497
- "emptyBody": "This banner appears once the document is on a recurring schedule.",
783
+ "emptyBody": "Recurrence details appear once a schedule is set.",
498
784
  "template": "Recurring — {freq} · Next on {next} · {count} cycles"
499
785
  },
500
786
  "blockQrPay": {
501
787
  "description": "A scan-to-pay tile with a caption and the amount due.",
502
- "emptyTitle": "Nothing to pay",
503
- "emptyBody": "The payment code appears once the document has an amount due.",
788
+ "emptyTitle": "No payment link",
789
+ "emptyBody": "A scannable payment code appears once an amount is due.",
504
790
  "amountLabel": "Amount due"
505
791
  },
506
792
  "blockDeliveryStepper": {
507
793
  "description": "Horizontal delivery steps marked done, current or upcoming.",
508
794
  "emptyTitle": "No delivery steps",
509
- "emptyBody": "Steps appear once the order has a delivery route."
795
+ "emptyBody": "Fulfilment progress will appear here."
510
796
  },
511
797
  "blockSignature": {
512
798
  "description": "Signature lines for a name and title, with the date signed.",
513
799
  "emptyTitle": "No signature",
514
- "emptyBody": "The signature lines appear once the document names a signer.",
515
- "namePlaceholder": "Full name",
800
+ "emptyBody": "A signature line appears once this document requires one.",
801
+ "namePlaceholder": "Name",
516
802
  "titlePlaceholder": "Title",
517
- "dateLabel": "Date"
803
+ "dateLabel": "Date",
804
+ "nameInputLabel": "Signature name"
518
805
  },
519
806
  "blockTermsCheckbox": {
520
807
  "description": "A terms toggle with an editable label.",
521
- "defaultLabel": "I accept the terms and conditions"
808
+ "defaultLabel": "I accept the terms"
522
809
  },
523
810
  "blockApproval": {
524
811
  "description": "An approver card with a status-tinted pill and optional approve or reject actions.",
525
812
  "emptyTitle": "No approver",
526
- "emptyBody": "The approval card appears once the document names an approver.",
813
+ "emptyBody": "The approval chain appears once a reviewer is assigned.",
527
814
  "approveLabel": "Approve",
528
815
  "rejectLabel": "Reject",
529
816
  "pendingLabel": "Pending",
@@ -533,103 +820,185 @@ export default {
533
820
  "blockAttachments": {
534
821
  "description": "Attached files with their names and sizes.",
535
822
  "emptyTitle": "No attachments",
536
- "emptyBody": "Files attached to this document appear here."
823
+ "emptyBody": "Files attached to this document will appear here."
537
824
  },
538
825
  "blockLateFees": {
539
826
  "description": "A warning callout stating the late fee and the grace period.",
540
827
  "emptyTitle": "No late fee",
541
- "emptyBody": "This callout appears once the document sets a late-fee policy.",
828
+ "emptyBody": "Late-fee terms appear once they are set on this document.",
542
829
  "template": "A {rate} late fee applies after {days} days."
543
830
  },
544
831
  "blockImagePlaceholder": {
545
832
  "description": "A dashed placeholder box standing in for an image, with a caption.",
546
- "emptyTitle": "No image",
547
- "emptyBody": "The placeholder appears once the block has a caption."
833
+ "emptyTitle": "No image slot",
834
+ "emptyBody": "An image placeholder appears once this block is bound."
548
835
  },
549
836
  "blockContact": {
550
837
  "description": "Contact rows for a name, email address and phone number.",
551
838
  "emptyTitle": "No contact",
552
- "emptyBody": "Contact details appear once the document names a contact."
839
+ "emptyBody": "Contact details appear once this document names a recipient."
553
840
  },
554
841
  "blockHighlightBox": {
555
842
  "description": "A callout box pairing a label with a large mono value.",
556
- "emptyTitle": "Nothing to highlight",
557
- "emptyBody": "The callout appears once the block has a value to show."
843
+ "emptyTitle": "Nothing highlighted",
844
+ "emptyBody": "A highlighted figure appears once this block is bound."
558
845
  },
559
846
  "starterTemplatePicker": {
560
847
  "description": "A grid of predefined starters with generated thumbnails; picking one seeds a full document.",
561
848
  "emptyTitle": "No starters",
562
- "emptyBody": "Add starter definitions in config or bind a starters table."
849
+ "emptyBody": "Add starter definitions in config or bind a starters table.",
850
+ "blankLabel": "Blank",
851
+ "kicker": {
852
+ "invoice": "Invoice",
853
+ "report": "Report",
854
+ "email": "Email"
855
+ }
563
856
  },
564
857
  "sloMonitorCard": {
565
858
  "description": "Per-service SLA card with status, availability against target, a daily uptime strip, error budget, and p95 latency.",
566
859
  "emptyTitle": "No monitor",
567
- "emptyBody": "Bind a monitors table with a status and an availability column."
860
+ "emptyBody": "Bind a monitors table with a status and an availability column.",
861
+ "targetLabel": "Target",
862
+ "budgetLabel": "Error budget",
863
+ "latencyLabel": "p95 latency",
864
+ "status": {
865
+ "operational": "Operational",
866
+ "degraded": "Degraded",
867
+ "down": "Down",
868
+ "unknown": "Unknown"
869
+ }
568
870
  },
569
871
  "uptimeSegmentBar": {
570
872
  "description": "Statuspage-style day strips coloured by daily status, with a 30/90-day toggle.",
571
873
  "emptyTitle": "No uptime history",
572
- "emptyBody": "Daily status rows appear here as an uptime strip."
874
+ "emptyBody": "Daily status rows appear here as an uptime strip.",
875
+ "daysAgoLabel": "{days} days ago",
876
+ "todayLabel": "Today",
877
+ "uptimeLabel": "uptime",
878
+ "period30Label": "30d",
879
+ "period90Label": "90d",
880
+ "status": {
881
+ "operational": "Operational",
882
+ "degraded": "Degraded",
883
+ "down": "Down",
884
+ "unknown": "No data"
885
+ }
573
886
  },
574
887
  "experimentVariantCompare": {
575
888
  "description": "Per-variant conversion bars with lift against the control and a significance meter.",
576
889
  "emptyTitle": "No variants",
577
- "emptyBody": "Bind an experiment variants table with conversion numbers."
890
+ "emptyBody": "Bind an experiment variants table with conversion numbers.",
891
+ "controlLabel": "CONTROL",
892
+ "winnerLabel": "WINNER",
893
+ "significanceLabel": "Confidence",
894
+ "verdictSignificantLabel": "Statistically significant — safe to call.",
895
+ "verdictInconclusiveLabel": "Not yet significant — keep the test running.",
896
+ "countsLabel": "{users} participants · {conversions} conversions"
578
897
  },
579
898
  "creditCardTile": {
580
899
  "description": "A stored payment method as a branded card with a masked number, holder, and expiry.",
581
900
  "emptyTitle": "No payment method",
582
- "emptyBody": "Add a card to see it here."
901
+ "emptyBody": "Add a card to see it here.",
902
+ "defaultLabel": "Default",
903
+ "setDefaultLabel": "Set default",
904
+ "manageLabel": "Manage",
905
+ "addLabel": "Add payment method",
906
+ "expiresLabel": "Expires"
583
907
  },
584
908
  "planPricingCards": {
585
909
  "description": "Pricing tiers with a monthly/annual switch, feature lists, and a promoted plan.",
586
910
  "emptyTitle": "No plans",
587
- "emptyBody": "Bind a plans table with a name and a monthly price."
911
+ "emptyBody": "Bind a plans table with a name and a monthly price.",
912
+ "monthlyLabel": "Monthly",
913
+ "annualLabel": "Annual",
914
+ "popularLabel": "POPULAR",
915
+ "perMonthLabel": "/ month",
916
+ "billedAnnuallyLabel": "Billed {total} yearly",
917
+ "currentLabel": "Current plan",
918
+ "ctaLabel": "Choose plan"
588
919
  },
589
920
  "apiKeysPanel": {
590
921
  "description": "API keys with environment badges, masked values, scopes, last use, and copy, roll, and revoke actions.",
591
922
  "emptyTitle": "No API keys",
592
- "emptyBody": "Create a key to start calling the API."
923
+ "emptyBody": "Create a key to start calling the API.",
924
+ "revealedTitle": "Key created",
925
+ "revealedBody": "Copy it now — it is never shown again.",
926
+ "copyLabel": "Copy",
927
+ "copiedLabel": "Copied",
928
+ "revealLabel": "Reveal key",
929
+ "hideLabel": "Hide key",
930
+ "rollLabel": "Roll key",
931
+ "revokeLabel": "Revoke key",
932
+ "neverUsedLabel": "Never used",
933
+ "lastUsedLabel": "Last used {since}"
593
934
  },
594
935
  "apiPlayground": {
595
936
  "description": "A request composer with parameters and a response pane. It composes only and never sends a real request.",
596
937
  "emptyTitle": "No endpoint selected",
597
- "emptyBody": "Pick an endpoint to compose a request against it."
938
+ "emptyBody": "Pick an endpoint to compose a request against it.",
939
+ "sendLabel": "Send",
940
+ "requestLabel": "Request",
941
+ "responseLabel": "Response",
942
+ "paramsLabel": "Parameters",
943
+ "responsePlaceholder": "Send the request to see the response."
598
944
  },
599
945
  "codeSnippetBlock": {
600
946
  "description": "A copyable code snippet with a language chip and optional per-language tabs.",
601
947
  "emptyTitle": "No snippet",
602
- "emptyBody": "Bind a code column or set a static snippet in config."
948
+ "emptyBody": "Bind a code column or set a static snippet in config.",
949
+ "copyLabel": "Copy",
950
+ "copiedLabel": "Copied"
603
951
  },
604
952
  "webhookEndpointsList": {
605
953
  "description": "Webhook endpoints with their event, target URL, last fired time, and an enable toggle.",
606
954
  "emptyTitle": "No endpoints",
607
- "emptyBody": "Add a webhook endpoint to receive table events."
955
+ "emptyBody": "Add a webhook endpoint to receive table events.",
956
+ "neverFiredLabel": "Never fired",
957
+ "lastFiredLabel": "Last fired {since}"
608
958
  },
609
959
  "resourceApiCard": {
610
960
  "description": "A table's generated API surface: row count, security badge, method chips, and request volume.",
611
961
  "emptyTitle": "No resource",
612
- "emptyBody": "Bind a table to show its generated API surface."
962
+ "emptyBody": "Bind a table to show its generated API surface.",
963
+ "rlsLabel": "RLS",
964
+ "publicLabel": "Public",
965
+ "rowsLabel": "rows",
966
+ "perDayLabel": "{count}/day"
613
967
  },
614
968
  "liveTimer": {
615
969
  "description": "A start/stop stopwatch for a task; stopping it records a time entry.",
616
970
  "emptyTitle": "No timer",
617
- "emptyBody": "Bind a time-entry row with a task and a duration column."
971
+ "emptyBody": "Bind a time-entry row with a task and a duration column.",
972
+ "startLabel": "Start",
973
+ "stopLabel": "Stop",
974
+ "taskPlaceholder": "Untitled task"
618
975
  },
619
976
  "syncStatusCard": {
620
977
  "description": "Connection identity, latency, rows synced, and the sync schedule, with a sync-now action.",
621
978
  "emptyTitle": "No connection",
622
- "emptyBody": "Bind a connection row to show its sync status."
979
+ "emptyBody": "Bind a connection row to show its sync status.",
980
+ "connectedLabel": "Connected",
981
+ "disconnectedLabel": "Disconnected",
982
+ "rowsSyncedLabel": "Rows synced",
983
+ "tablesLabel": "Tables",
984
+ "lastSyncLabel": "Last sync",
985
+ "nextSyncLabel": "Next sync",
986
+ "syncingLabel": "Syncing…",
987
+ "syncActionLabel": "Sync now"
623
988
  },
624
989
  "ipAllowlistCard": {
625
990
  "description": "Static egress IP addresses to allow through a firewall, each with a copy button.",
626
991
  "emptyTitle": "No egress IPs",
627
- "emptyBody": "Egress addresses appear here once the connection is provisioned."
992
+ "emptyBody": "Egress addresses appear here once the connection is provisioned.",
993
+ "copyLabel": "Copy",
994
+ "copiedLabel": "Copied"
628
995
  },
629
996
  "onboardingChecklist": {
630
997
  "description": "Setup steps with time estimates and actions, over a live progress ring and bar.",
631
998
  "emptyTitle": "Nothing to set up",
632
- "emptyBody": "Add onboarding steps in config or bind a steps table."
999
+ "emptyBody": "Add onboarding steps in config or bind a steps table.",
1000
+ "progressLabel": "{done} of {total} done",
1001
+ "celebrateTitle": "All done"
633
1002
  },
634
1003
  "testimonialCard": {
635
1004
  "description": "A customer quote with an avatar and attribution.",
@@ -672,7 +1041,8 @@ export default {
672
1041
  "imageBoard": {
673
1042
  "description": "A moodboard grid of image slots with captions, for tables with image URLs.",
674
1043
  "emptyTitle": "No images yet",
675
- "emptyBody": "Reference images will appear on this board."
1044
+ "emptyBody": "Reference images will appear on this board.",
1045
+ "placeholder": "Drop reference"
676
1046
  },
677
1047
  "linkList": {
678
1048
  "description": "Reference links with titles and URLs, opening in a new tab.",
@@ -710,15 +1080,19 @@ export default {
710
1080
  "submit": "Create",
711
1081
  "cancel": "Cancel",
712
1082
  "done": "Done",
713
- "successTitle": "Record created",
1083
+ "successTitle": "Created",
714
1084
  "successBody": "The record was saved.",
715
- "required": "This field is required."
1085
+ "required": "This field is required.",
1086
+ "titleLabel": "Create record",
1087
+ "closeLabel": "Close"
716
1088
  },
717
1089
  "drawerForm": {
718
1090
  "description": "A side-drawer create or edit form for records with more fields than a modal fits.",
719
1091
  "trigger": "New",
720
1092
  "submit": "Save",
721
- "cancel": "Cancel"
1093
+ "cancel": "Cancel",
1094
+ "titleLabel": "New record",
1095
+ "closeLabel": "Close"
722
1096
  },
723
1097
  "stepper": {
724
1098
  "description": "A progress stepper showing where a multi-step flow has got to.",
@@ -768,7 +1142,23 @@ export default {
768
1142
  "operator": "Operator",
769
1143
  "value": "Value",
770
1144
  "valuePlaceholder": "Value…",
771
- "emptyBody": "No conditions yet — add one to define this segment."
1145
+ "emptyBody": "No conditions yet — add one to define this segment.",
1146
+ "op": {
1147
+ "eq": "is",
1148
+ "neq": "is not",
1149
+ "gt": "is greater than",
1150
+ "gte": "is at least",
1151
+ "lt": "is less than",
1152
+ "lte": "is at most",
1153
+ "contains": "contains",
1154
+ "not-contains": "does not contain",
1155
+ "starts-with": "starts with",
1156
+ "in": "is one of",
1157
+ "before": "is before",
1158
+ "after": "is after",
1159
+ "is-null": "is empty",
1160
+ "is-not-null": "is not empty"
1161
+ }
772
1162
  },
773
1163
  "flowBuilder": {
774
1164
  "description": "A vertical workflow canvas of trigger, condition and action steps.",
@@ -833,14 +1223,27 @@ export default {
833
1223
  "required": "Required",
834
1224
  "questionPlaceholder": "Ask a question…",
835
1225
  "emptyTitle": "No questions yet",
836
- "emptyBody": "Pick a question type to start building your survey."
1226
+ "emptyBody": "Pick a question type to start building your survey.",
1227
+ "questionLabel": "Question",
1228
+ "dropdownPlaceholder": "Choose…",
1229
+ "kind": {
1230
+ "single-choice": "Single choice",
1231
+ "multi-choice": "Multiple choice",
1232
+ "dropdown": "Dropdown",
1233
+ "short-text": "Short text",
1234
+ "long-text": "Long text",
1235
+ "rating": "Star rating",
1236
+ "nps": "NPS 0–10",
1237
+ "date": "Date"
1238
+ }
837
1239
  },
838
1240
  "inlineEditableField": {
839
1241
  "description": "A click-to-edit value inside a document or canvas.",
840
1242
  "edit": "Edit",
841
1243
  "save": "Save",
842
1244
  "cancel": "Cancel",
843
- "empty": "Empty"
1245
+ "empty": "Empty",
1246
+ "valueLabel": "Value"
844
1247
  },
845
1248
  "passwordStrengthMeter": {
846
1249
  "description": "A four-segment meter showing how strong a password is.",
@@ -865,7 +1268,7 @@ export default {
865
1268
  "navigate": "Navigate",
866
1269
  "select": "Open",
867
1270
  "close": "Close",
868
- "emptyTitle": "No results",
1271
+ "emptyTitle": "No results for \"{query}\"",
869
1272
  "emptyBody": "Start typing to search.",
870
1273
  "groupActions": "Actions",
871
1274
  "groupNavigate": "Navigate",
@@ -879,9 +1282,11 @@ export default {
879
1282
  "description": "Search across every entity, with type facets and result snippets.",
880
1283
  "placeholder": "Search everything…",
881
1284
  "all": "All",
882
- "summary": "{count} results for {query}",
1285
+ "summary": "{count} results for \"{query}\"",
883
1286
  "emptyTitle": "No results",
884
- "emptyBody": "Try a different search term."
1287
+ "emptyBody": "Try a different search term.",
1288
+ "searchLabel": "Search",
1289
+ "facetRailLabel": "Filter by type"
885
1290
  },
886
1291
  "breadcrumb": {
887
1292
  "description": "The ancestor trail of the current record or folder.",
@@ -900,11 +1305,23 @@ export default {
900
1305
  "description": "The keyboard shortcuts cheat sheet.",
901
1306
  "footerHint": "Press ? anytime",
902
1307
  "then": "then",
903
- "emptyTitle": "No shortcuts registered."
1308
+ "emptyTitle": "No shortcuts registered.",
1309
+ "generalGroupLabel": "General",
1310
+ "navigationGroupLabel": "Navigation",
1311
+ "recordsGroupLabel": "Records",
1312
+ "openCommandPaletteLabel": "Open command palette",
1313
+ "searchLabel": "Search",
1314
+ "showShortcutsLabel": "Show shortcuts",
1315
+ "goToDashboardLabel": "Go to dashboard",
1316
+ "goToOrdersLabel": "Go to orders",
1317
+ "newRecordLabel": "New record",
1318
+ "saveLabel": "Save",
1319
+ "undoLabel": "Undo"
904
1320
  },
905
1321
  "avatarStack": {
906
1322
  "description": "Overlapping avatars with a “+N” overflow and optional presence.",
907
- "online": "{count} online"
1323
+ "online": "{count} online",
1324
+ "a11yLabel": "People"
908
1325
  }
909
1326
  },
910
1327
  "system": {
@@ -951,7 +1368,7 @@ export default {
951
1368
  "idle": "Not connected",
952
1369
  "connecting": "Connecting…",
953
1370
  "connected": "Connected",
954
- "failed": "Couldnt connect",
1371
+ "failed": "Couldn't connect",
955
1372
  "test": "Test"
956
1373
  },
957
1374
  "autosaveIndicator": {
@@ -959,7 +1376,7 @@ export default {
959
1376
  "dirty": "Unsaved changes",
960
1377
  "saving": "Saving…",
961
1378
  "saved": "All changes saved",
962
- "error": "Couldnt save"
1379
+ "error": "Couldn't save"
963
1380
  },
964
1381
  "progressLogConsole": {
965
1382
  "description": "A streaming log console with a progress bar, for long-running tasks.",
@@ -977,6 +1394,12 @@ export default {
977
1394
  "tls": "TLS",
978
1395
  "auth": "Auth",
979
1396
  "latency": "Latency"
1397
+ },
1398
+ "widgetMissing": {
1399
+ "description": "The fallback card shown when a stored page references a widget that is not installed.",
1400
+ "title": "Widget unavailable",
1401
+ "bodyLead": "No widget is registered as",
1402
+ "bodyTail": "It may belong to a newer version or an uninstalled extension."
980
1403
  }
981
1404
  }
982
1405
  },
@@ -989,6 +1412,351 @@ export default {
989
1412
  "resized": "{title} resized to {w} columns by {h} rows.",
990
1413
  "committed": "{title} placed at column {col}, row {row}.",
991
1414
  "reverted": "{title} returned to its original position."
1415
+ },
1416
+ "draggableRole": "draggable widget"
1417
+ },
1418
+ "templates": {
1419
+ "crud": {
1420
+ "newRow": "New row",
1421
+ "exportAction": "Export",
1422
+ "searchPlaceholder": "Search {table}…",
1423
+ "removeFilter": "Remove {column} filter",
1424
+ "queryFailed": "Query failed",
1425
+ "loadingRows": "Loading rows",
1426
+ "noMatchesTitle": "No matching rows",
1427
+ "emptyTitle": "{count, plural, one {No {entity} yet} other {No {entity}s yet}}",
1428
+ "createTitle": "Add {entity}",
1429
+ "createSubtitle": "Creates one row in {table}.",
1430
+ "createSubmit": "Add {entity}",
1431
+ "createSuccessTitle": "{name} added",
1432
+ "createSuccessBody": "You can undo this from the toast.",
1433
+ "editTitle": "Edit {entity}",
1434
+ "saveSubmit": "Save changes",
1435
+ "deleteTitle": "Delete {entity}",
1436
+ "deletePreflight": "Checking references…",
1437
+ "deleteNoReferences": "This row has no inbound references.",
1438
+ "deleteConsequencesIntro": "Deleting this row also affects:",
1439
+ "referenceRows": "{count, plural, one {{n} row} other {{n} rows}}",
1440
+ "confirmPrompt": "Type {value} to confirm",
1441
+ "bulkDeleteTitle": "{count, plural, one {Delete {n} row} other {Delete {n} rows}}",
1442
+ "bulkDeleteBody": "Referential consequences apply to every selected row.",
1443
+ "bulkDeleteConfirm": "Delete rows",
1444
+ "uniqueHelper": "Must be unique in {table}.",
1445
+ "uniqueHelperCounted": "{count, plural, one {Checked against {n} row.} other {Checked against {n} rows.}}",
1446
+ "toast": {
1447
+ "created": "{entity} created.",
1448
+ "createFailed": "Create failed.",
1449
+ "saved": "Changes saved.",
1450
+ "updateFailed": "Update failed.",
1451
+ "deleted": "{name} deleted.",
1452
+ "deleteFailed": "Delete failed.",
1453
+ "bulkDeleted": "{count, plural, one {{n} row deleted.} other {{n} rows deleted.}}",
1454
+ "bulkDeleteFailed": "Bulk delete failed.",
1455
+ "undone": "Change undone.",
1456
+ "undoFailed": "Undo failed."
1457
+ },
1458
+ "detail": {
1459
+ "fields": "Fields",
1460
+ "inboundReferences": "inbound references",
1461
+ "relatedCount": "{count, plural, one {{n} related record in {table}} other {{n} related records in {table}}}",
1462
+ "loadError": "Failed to load the record."
1463
+ }
1464
+ },
1465
+ "queue": {
1466
+ "allSegment": "All",
1467
+ "daysUnit": "{count, plural, one {{count} day} other {{count} days}}",
1468
+ "approvedToast": "{count} approved.",
1469
+ "rejectedToast": "{count} rejected.",
1470
+ "undoneToast": "Decision undone.",
1471
+ "undoFailedToast": "Could not undo this decision.",
1472
+ "failedToast": "Decision failed.",
1473
+ "invalidConfig": "This queue’s stored configuration is invalid. Regenerate the page to restore it.",
1474
+ "queueLabel": "Queue",
1475
+ "statusFilterLabel": "Status filter",
1476
+ "errorTitle": "This queue failed to load",
1477
+ "loading": "Loading queue",
1478
+ "emptyTitle": "Nothing in the queue",
1479
+ "emptyBody": "New requests appear here as they arrive.",
1480
+ "caughtUpTitle": "You're all caught up",
1481
+ "caughtUpBody": "No requests in this tab right now.",
1482
+ "selectItem": "Select {title}",
1483
+ "selectPrompt": "Select a request",
1484
+ "selectBody": "Choose an item to review its details.",
1485
+ "rejectTitle": "Reject requests",
1486
+ "rejectCount": "Selected · {count}",
1487
+ "rejectPlaceholder": "Add a note for the requester…",
1488
+ "rejectReasonLabel": "Rejection reason",
1489
+ "rejectNote": "The requester will be notified with your note."
1490
+ },
1491
+ "dashboard": {
1492
+ "invalidLayout": "This dashboard’s stored layout is invalid. Regenerate the page or reset its layout."
1493
+ },
1494
+ "builder": {
1495
+ "publish": "Publish",
1496
+ "paletteTitle": "Blocks",
1497
+ "inspectorTitle": "Inspector",
1498
+ "startFromTemplate": "Start from a template",
1499
+ "untitledDoc": "Untitled document",
1500
+ "invalidConfig": "This builder page’s stored config is invalid. Regenerate the page or reset it.",
1501
+ "starterPicker": {
1502
+ "subtitle": "Selection replaces the current draft."
1503
+ },
1504
+ "inspector": {
1505
+ "titleLabel": "Title",
1506
+ "numberLabel": "Number",
1507
+ "currencyLabel": "Currency",
1508
+ "taxRateLabel": "Tax rate %",
1509
+ "modulesLabel": "Modules"
1510
+ },
1511
+ "summary": {
1512
+ "questions": "Questions",
1513
+ "estLength": "Est. length",
1514
+ "estMinutes": "~{minutes} min",
1515
+ "steps": "Steps",
1516
+ "triggers": "Triggers",
1517
+ "conditions": "Conditions",
1518
+ "actions": "Actions",
1519
+ "triggerLocked": "The trigger step can’t be removed."
1520
+ },
1521
+ "publishModal": {
1522
+ "confirmTitle": "Publish survey?",
1523
+ "confirmSubtitle": "Review before it goes live.",
1524
+ "confirmCta": "Publish survey",
1525
+ "publishedTitle": "Survey published",
1526
+ "publishedSubtitle": "Your survey is live and collecting responses right now."
1527
+ },
1528
+ "blocks": {
1529
+ "block-totals-summary": "Totals summary",
1530
+ "block-line-items": "Line items",
1531
+ "block-kpi-row": "KPI row",
1532
+ "block-bar-chart": "Bar chart",
1533
+ "block-line-chart": "Line chart",
1534
+ "block-two-col-table": "Two-column table",
1535
+ "block-tax-breakdown": "Tax breakdown",
1536
+ "block-multi-currency": "Multi-currency",
1537
+ "block-payment-history": "Payment history",
1538
+ "block-discount-codes": "Discount codes",
1539
+ "block-loyalty-banner": "Loyalty points",
1540
+ "block-recurring-banner": "Recurring",
1541
+ "block-qr-pay": "Payment QR",
1542
+ "block-delivery-stepper": "Delivery timeline",
1543
+ "block-signature": "Signature",
1544
+ "block-terms-checkbox": "Terms",
1545
+ "block-approval": "Approval",
1546
+ "block-attachments": "Attachments",
1547
+ "block-late-fees": "Late fees",
1548
+ "block-image-placeholder": "Image",
1549
+ "block-contact": "Contact",
1550
+ "block-highlight-box": "Highlight box"
1551
+ },
1552
+ "starters": {
1553
+ "titles": {
1554
+ "st-standard": "Standard invoice",
1555
+ "st-recurring": "Recurring subscription",
1556
+ "st-deposit": "Deposit request",
1557
+ "st-credit-note": "Credit note",
1558
+ "st-late-reminder": "Late-payment reminder",
1559
+ "st-quote": "Quote / estimate",
1560
+ "st-proforma": "Pro forma",
1561
+ "st-receipt": "Payment receipt",
1562
+ "st-retainer": "Retainer",
1563
+ "st-usage": "Usage-based invoice",
1564
+ "st-milestone": "Project milestone",
1565
+ "st-donation": "Donation receipt (Tax ID)",
1566
+ "st-monthly": "Monthly summary",
1567
+ "st-quarterly": "Quarterly review",
1568
+ "st-usage-report": "Usage breakdown",
1569
+ "st-exec": "Executive one-pager",
1570
+ "st-welcome": "Welcome email",
1571
+ "st-receipt-email": "Invoice receipt",
1572
+ "st-digest": "Weekly digest",
1573
+ "st-dunning": "Payment reminder"
1574
+ },
1575
+ "categories": {
1576
+ "billing": "Billing",
1577
+ "sales": "Sales",
1578
+ "nonProfit": "Non-profit",
1579
+ "reports": "Reports",
1580
+ "lifecycle": "Lifecycle",
1581
+ "transactional": "Transactional",
1582
+ "marketing": "Marketing"
1583
+ }
1584
+ }
1585
+ },
1586
+ "common": {
1587
+ "clearFilters": "Clear filters",
1588
+ "noMatchesBody": "Try a different search or remove a filter.",
1589
+ "detailLabel": "Detail",
1590
+ "loadingRecord": "Loading record"
1591
+ },
1592
+ "directory": {
1593
+ "invalidConfig": "This directory’s stored configuration is invalid. Regenerate the page to restore it.",
1594
+ "searchPlaceholder": "Search people…",
1595
+ "memberCount": "{count, plural, one {{n} person} other {{n} people}}",
1596
+ "errorTitle": "This directory failed to load",
1597
+ "loading": "Loading people",
1598
+ "emptyTitle": "No people yet",
1599
+ "emptyBody": "People appear here as rows land in the table.",
1600
+ "noMatchesTitle": "No matching people",
1601
+ "detailTitle": "Person"
1602
+ },
1603
+ "masterDetail": {
1604
+ "invalidConfig": "This page’s stored configuration is invalid. Regenerate the page to restore it.",
1605
+ "railTitle": "Records",
1606
+ "errorTitle": "This list failed to load",
1607
+ "loading": "Loading records",
1608
+ "emptyBody": "Records appear here as rows land in the table.",
1609
+ "noMatchesTitle": "No matching records",
1610
+ "noMatchesBody": "Try removing a filter.",
1611
+ "selectPrompt": "Select a record",
1612
+ "selectBody": "Choose an item from the list to see its details."
1613
+ },
1614
+ "chat": {
1615
+ "invalidLayout": "This chat page’s stored layout is invalid. Regenerate the page or reset its layout.",
1616
+ "noInboxTitle": "No inbox on this page",
1617
+ "noInboxBody": "Regenerate the page.",
1618
+ "conversationsFailed": "The conversation query failed",
1619
+ "messagesFailed": "The messages query failed",
1620
+ "loadingConversations": "Loading conversations",
1621
+ "loadingMessages": "Loading messages",
1622
+ "selectTitle": "Select a conversation",
1623
+ "selectBody": "Pick a conversation from the inbox to read its messages."
1624
+ },
1625
+ "files": {
1626
+ "allFiles": "All files",
1627
+ "recent": "Recent",
1628
+ "starred": "Starred",
1629
+ "invalidLayout": "This files page’s stored layout is invalid. Regenerate the page or reset its layout.",
1630
+ "missingSlotTitle": "No file browser on this page",
1631
+ "missingSlotBody": "The stored layout has no browser slot. Regenerate the page.",
1632
+ "loadFailed": "The file query failed",
1633
+ "loading": "Loading files",
1634
+ "uploadsUnavailable": "Uploads are not available on this page yet.",
1635
+ "previewTitle": "File",
1636
+ "kindLabel": "Kind",
1637
+ "linkLabel": "Link"
1638
+ },
1639
+ "logViewer": {
1640
+ "invalidLayout": "This log page’s stored layout is invalid. Regenerate the page or reset its layout.",
1641
+ "levelFilterLabel": "Log level filter",
1642
+ "timeFilterLabel": "Time window filter",
1643
+ "window": {
1644
+ "1h": "1h",
1645
+ "24h": "24h",
1646
+ "7d": "7d"
1647
+ },
1648
+ "heldCount": "+{count}",
1649
+ "missingSlotTitle": "No log widget on this page",
1650
+ "missingSlotBody": "The stored layout has no log slot. Regenerate the page.",
1651
+ "loadFailed": "The log query failed",
1652
+ "loading": "Loading log entries",
1653
+ "traceTitle": "Trace",
1654
+ "latestTitle": "Latest activity",
1655
+ "backToLatest": "Back to latest",
1656
+ "eventFallback": "Event"
1657
+ },
1658
+ "calendar": {
1659
+ "eventCount": "{count, plural, one {{n} event} other {{n} events}}",
1660
+ "composePlaceholder": "Event title…",
1661
+ "addEvent": "Add event",
1662
+ "dateRange": "Date range",
1663
+ "agendaTitle": "Agenda",
1664
+ "categoriesTitle": "Categories",
1665
+ "upcomingTitle": "Upcoming",
1666
+ "invalidLayout": "This calendar’s stored layout is invalid. Regenerate the page or reset its layout."
1667
+ },
1668
+ "scheduler": {
1669
+ "previousWeek": "Previous week",
1670
+ "nextWeek": "Next week",
1671
+ "week": "Week",
1672
+ "month": "Month",
1673
+ "invalidLayout": "This schedule’s stored layout is invalid. Regenerate the page or reset its layout.",
1674
+ "shiftCount": "{count, plural, one {{n} shift} other {{n} shifts}}",
1675
+ "addShift": "Add shift"
1676
+ },
1677
+ "settings": {
1678
+ "title": "Notification settings",
1679
+ "subtitle": "Choose what you're notified about and how",
1680
+ "matrixLabel": "Notify me about",
1681
+ "rowHeader": "Event",
1682
+ "saved": "Saved",
1683
+ "unavailableTag": "Not available yet",
1684
+ "loading": "Loading preferences",
1685
+ "errorTitle": "These settings failed to load",
1686
+ "emptyTitle": "Nothing to configure yet",
1687
+ "emptyBody": "Notification events appear here as producers ship."
1688
+ },
1689
+ "pageCrud": {
1690
+ "description": "The canonical table page: searchable data grid, create/edit forms, safe deletes with reference checks, and undoable changes."
1691
+ },
1692
+ "pageDashboard": {
1693
+ "description": "A widget dashboard over your data: KPI cards, charts, and lists on an editable grid."
1694
+ },
1695
+ "pageBoard": {
1696
+ "description": "A kanban board grouped by a status field — drag cards between columns to update records."
1697
+ },
1698
+ "pageCalendar": {
1699
+ "description": "A month calendar with agenda, category filters, and quick event capture from a date field."
1700
+ },
1701
+ "pageScheduler": {
1702
+ "description": "A week-by-resource shift matrix with capacity tracking and coverage totals."
1703
+ },
1704
+ "pageDirectory": {
1705
+ "description": "A people directory with search, group filters, and a profile drawer."
1706
+ },
1707
+ "pageMasterDetail": {
1708
+ "description": "A list-beside-detail layout: pick a record on the left, work with it on the right."
1709
+ },
1710
+ "pageQueueInbox": {
1711
+ "description": "A review queue with approve/reject decisions, bulk actions, and undo."
1712
+ },
1713
+ "pageLogViewer": {
1714
+ "description": "A live-tailing log table with level and time filters and a trace side panel."
1715
+ },
1716
+ "pageFiles": {
1717
+ "description": "A file browser with smart folders, uploads, and a preview drawer."
1718
+ },
1719
+ "pageChat": {
1720
+ "description": "A conversation inbox beside a message thread, bound to your messages tables."
1721
+ },
1722
+ "pageBuilder": {
1723
+ "description": "A drag-and-drop document builder with block palette, inspector, and publish flow."
1724
+ },
1725
+ "pageWizard": {
1726
+ "description": "A multi-step guided flow that walks users through a structured process."
1727
+ },
1728
+ "pageSettings": {
1729
+ "description": "A notification-preferences matrix with per-channel toggles and autosave."
1730
+ }
1731
+ },
1732
+ "frame": {
1733
+ "noResult": "No result for widget",
1734
+ "emptyTitle": "No data for range",
1735
+ "loadError": "Something went wrong loading this widget.",
1736
+ "renderError": "This widget failed to render.",
1737
+ "refreshing": "Refreshing",
1738
+ "infoLabel": "Widget info",
1739
+ "menuLabel": "Widget menu"
1740
+ },
1741
+ "charts": {
1742
+ "livePillLabel": "Live",
1743
+ "forecast": {
1744
+ "nowLabel": "Now",
1745
+ "forecastLabel": "Forecast",
1746
+ "actualLabel": "Actual"
1747
+ },
1748
+ "otherLabel": "Other",
1749
+ "heat": {
1750
+ "lessLabel": "Less",
1751
+ "moreLabel": "More"
1752
+ },
1753
+ "choropleth": {
1754
+ "lowLabel": "Low",
1755
+ "highLabel": "High"
1756
+ },
1757
+ "funnel": {
1758
+ "stepConversion": "{pct}% continue",
1759
+ "overallConversion": "{pct}% overall"
992
1760
  }
993
1761
  }
994
1762
  };