@adminiumjs/i18n 0.1.0-rc.1

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 (234) hide show
  1. package/LICENSE +661 -0
  2. package/dist/create-i18n.d.ts +48 -0
  3. package/dist/create-i18n.d.ts.map +1 -0
  4. package/dist/create-i18n.js +98 -0
  5. package/dist/create-i18n.js.map +1 -0
  6. package/dist/format/index.d.ts +70 -0
  7. package/dist/format/index.d.ts.map +1 -0
  8. package/dist/format/index.js +217 -0
  9. package/dist/format/index.js.map +1 -0
  10. package/dist/icu-format.d.ts +17 -0
  11. package/dist/icu-format.d.ts.map +1 -0
  12. package/dist/icu-format.js +52 -0
  13. package/dist/icu-format.js.map +1 -0
  14. package/dist/index.d.ts +16 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +12 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/locales.d.ts +99 -0
  19. package/dist/locales.d.ts.map +1 -0
  20. package/dist/locales.js +55 -0
  21. package/dist/locales.js.map +1 -0
  22. package/dist/react.d.ts +26 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +61 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/resources/ar-eg/common.d.ts +1964 -0
  27. package/dist/resources/ar-eg/common.d.ts.map +1 -0
  28. package/dist/resources/ar-eg/common.js +1963 -0
  29. package/dist/resources/ar-eg/common.js.map +1 -0
  30. package/dist/resources/ar-eg/errors.d.ts +45 -0
  31. package/dist/resources/ar-eg/errors.d.ts.map +1 -0
  32. package/dist/resources/ar-eg/errors.js +44 -0
  33. package/dist/resources/ar-eg/errors.js.map +1 -0
  34. package/dist/resources/ar-eg/generated.d.ts +20 -0
  35. package/dist/resources/ar-eg/generated.d.ts.map +1 -0
  36. package/dist/resources/ar-eg/generated.js +19 -0
  37. package/dist/resources/ar-eg/generated.js.map +1 -0
  38. package/dist/resources/ar-eg/studio.d.ts +18 -0
  39. package/dist/resources/ar-eg/studio.d.ts.map +1 -0
  40. package/dist/resources/ar-eg/studio.js +17 -0
  41. package/dist/resources/ar-eg/studio.js.map +1 -0
  42. package/dist/resources/ar-eg/ui.d.ts +996 -0
  43. package/dist/resources/ar-eg/ui.d.ts.map +1 -0
  44. package/dist/resources/ar-eg/ui.js +995 -0
  45. package/dist/resources/ar-eg/ui.js.map +1 -0
  46. package/dist/resources/cs-cz/common.d.ts +1964 -0
  47. package/dist/resources/cs-cz/common.d.ts.map +1 -0
  48. package/dist/resources/cs-cz/common.js +1963 -0
  49. package/dist/resources/cs-cz/common.js.map +1 -0
  50. package/dist/resources/cs-cz/errors.d.ts +45 -0
  51. package/dist/resources/cs-cz/errors.d.ts.map +1 -0
  52. package/dist/resources/cs-cz/errors.js +44 -0
  53. package/dist/resources/cs-cz/errors.js.map +1 -0
  54. package/dist/resources/cs-cz/generated.d.ts +20 -0
  55. package/dist/resources/cs-cz/generated.d.ts.map +1 -0
  56. package/dist/resources/cs-cz/generated.js +19 -0
  57. package/dist/resources/cs-cz/generated.js.map +1 -0
  58. package/dist/resources/cs-cz/studio.d.ts +18 -0
  59. package/dist/resources/cs-cz/studio.d.ts.map +1 -0
  60. package/dist/resources/cs-cz/studio.js +17 -0
  61. package/dist/resources/cs-cz/studio.js.map +1 -0
  62. package/dist/resources/cs-cz/ui.d.ts +996 -0
  63. package/dist/resources/cs-cz/ui.d.ts.map +1 -0
  64. package/dist/resources/cs-cz/ui.js +995 -0
  65. package/dist/resources/cs-cz/ui.js.map +1 -0
  66. package/dist/resources/da-dk/common.d.ts +1964 -0
  67. package/dist/resources/da-dk/common.d.ts.map +1 -0
  68. package/dist/resources/da-dk/common.js +1963 -0
  69. package/dist/resources/da-dk/common.js.map +1 -0
  70. package/dist/resources/da-dk/errors.d.ts +45 -0
  71. package/dist/resources/da-dk/errors.d.ts.map +1 -0
  72. package/dist/resources/da-dk/errors.js +44 -0
  73. package/dist/resources/da-dk/errors.js.map +1 -0
  74. package/dist/resources/da-dk/generated.d.ts +20 -0
  75. package/dist/resources/da-dk/generated.d.ts.map +1 -0
  76. package/dist/resources/da-dk/generated.js +19 -0
  77. package/dist/resources/da-dk/generated.js.map +1 -0
  78. package/dist/resources/da-dk/studio.d.ts +18 -0
  79. package/dist/resources/da-dk/studio.d.ts.map +1 -0
  80. package/dist/resources/da-dk/studio.js +17 -0
  81. package/dist/resources/da-dk/studio.js.map +1 -0
  82. package/dist/resources/da-dk/ui.d.ts +996 -0
  83. package/dist/resources/da-dk/ui.d.ts.map +1 -0
  84. package/dist/resources/da-dk/ui.js +995 -0
  85. package/dist/resources/da-dk/ui.js.map +1 -0
  86. package/dist/resources/de-de/common.d.ts +1964 -0
  87. package/dist/resources/de-de/common.d.ts.map +1 -0
  88. package/dist/resources/de-de/common.js +1963 -0
  89. package/dist/resources/de-de/common.js.map +1 -0
  90. package/dist/resources/de-de/errors.d.ts +45 -0
  91. package/dist/resources/de-de/errors.d.ts.map +1 -0
  92. package/dist/resources/de-de/errors.js +44 -0
  93. package/dist/resources/de-de/errors.js.map +1 -0
  94. package/dist/resources/de-de/generated.d.ts +20 -0
  95. package/dist/resources/de-de/generated.d.ts.map +1 -0
  96. package/dist/resources/de-de/generated.js +19 -0
  97. package/dist/resources/de-de/generated.js.map +1 -0
  98. package/dist/resources/de-de/studio.d.ts +18 -0
  99. package/dist/resources/de-de/studio.d.ts.map +1 -0
  100. package/dist/resources/de-de/studio.js +17 -0
  101. package/dist/resources/de-de/studio.js.map +1 -0
  102. package/dist/resources/de-de/ui.d.ts +996 -0
  103. package/dist/resources/de-de/ui.d.ts.map +1 -0
  104. package/dist/resources/de-de/ui.js +995 -0
  105. package/dist/resources/de-de/ui.js.map +1 -0
  106. package/dist/resources/en-us/common.d.ts +1964 -0
  107. package/dist/resources/en-us/common.d.ts.map +1 -0
  108. package/dist/resources/en-us/common.js +1963 -0
  109. package/dist/resources/en-us/common.js.map +1 -0
  110. package/dist/resources/en-us/errors.d.ts +45 -0
  111. package/dist/resources/en-us/errors.d.ts.map +1 -0
  112. package/dist/resources/en-us/errors.js +44 -0
  113. package/dist/resources/en-us/errors.js.map +1 -0
  114. package/dist/resources/en-us/generated.d.ts +20 -0
  115. package/dist/resources/en-us/generated.d.ts.map +1 -0
  116. package/dist/resources/en-us/generated.js +19 -0
  117. package/dist/resources/en-us/generated.js.map +1 -0
  118. package/dist/resources/en-us/studio.d.ts +18 -0
  119. package/dist/resources/en-us/studio.d.ts.map +1 -0
  120. package/dist/resources/en-us/studio.js +17 -0
  121. package/dist/resources/en-us/studio.js.map +1 -0
  122. package/dist/resources/en-us/ui.d.ts +996 -0
  123. package/dist/resources/en-us/ui.d.ts.map +1 -0
  124. package/dist/resources/en-us/ui.js +995 -0
  125. package/dist/resources/en-us/ui.js.map +1 -0
  126. package/dist/resources/fr-fr/common.d.ts +1964 -0
  127. package/dist/resources/fr-fr/common.d.ts.map +1 -0
  128. package/dist/resources/fr-fr/common.js +1963 -0
  129. package/dist/resources/fr-fr/common.js.map +1 -0
  130. package/dist/resources/fr-fr/errors.d.ts +45 -0
  131. package/dist/resources/fr-fr/errors.d.ts.map +1 -0
  132. package/dist/resources/fr-fr/errors.js +44 -0
  133. package/dist/resources/fr-fr/errors.js.map +1 -0
  134. package/dist/resources/fr-fr/generated.d.ts +20 -0
  135. package/dist/resources/fr-fr/generated.d.ts.map +1 -0
  136. package/dist/resources/fr-fr/generated.js +19 -0
  137. package/dist/resources/fr-fr/generated.js.map +1 -0
  138. package/dist/resources/fr-fr/studio.d.ts +18 -0
  139. package/dist/resources/fr-fr/studio.d.ts.map +1 -0
  140. package/dist/resources/fr-fr/studio.js +17 -0
  141. package/dist/resources/fr-fr/studio.js.map +1 -0
  142. package/dist/resources/fr-fr/ui.d.ts +996 -0
  143. package/dist/resources/fr-fr/ui.d.ts.map +1 -0
  144. package/dist/resources/fr-fr/ui.js +995 -0
  145. package/dist/resources/fr-fr/ui.js.map +1 -0
  146. package/dist/resources/index.d.ts +8 -0
  147. package/dist/resources/index.d.ts.map +1 -0
  148. package/dist/resources/index.js +21 -0
  149. package/dist/resources/index.js.map +1 -0
  150. package/dist/resources/lazy.d.ts +20 -0
  151. package/dist/resources/lazy.d.ts.map +1 -0
  152. package/dist/resources/lazy.js +49 -0
  153. package/dist/resources/lazy.js.map +1 -0
  154. package/dist/resources/zh-cn/common.d.ts +1964 -0
  155. package/dist/resources/zh-cn/common.d.ts.map +1 -0
  156. package/dist/resources/zh-cn/common.js +1963 -0
  157. package/dist/resources/zh-cn/common.js.map +1 -0
  158. package/dist/resources/zh-cn/errors.d.ts +45 -0
  159. package/dist/resources/zh-cn/errors.d.ts.map +1 -0
  160. package/dist/resources/zh-cn/errors.js +44 -0
  161. package/dist/resources/zh-cn/errors.js.map +1 -0
  162. package/dist/resources/zh-cn/generated.d.ts +20 -0
  163. package/dist/resources/zh-cn/generated.d.ts.map +1 -0
  164. package/dist/resources/zh-cn/generated.js +19 -0
  165. package/dist/resources/zh-cn/generated.js.map +1 -0
  166. package/dist/resources/zh-cn/studio.d.ts +18 -0
  167. package/dist/resources/zh-cn/studio.d.ts.map +1 -0
  168. package/dist/resources/zh-cn/studio.js +17 -0
  169. package/dist/resources/zh-cn/studio.js.map +1 -0
  170. package/dist/resources/zh-cn/ui.d.ts +996 -0
  171. package/dist/resources/zh-cn/ui.d.ts.map +1 -0
  172. package/dist/resources/zh-cn/ui.js +995 -0
  173. package/dist/resources/zh-cn/ui.js.map +1 -0
  174. package/dist/resources/zh-tw/common.d.ts +1964 -0
  175. package/dist/resources/zh-tw/common.d.ts.map +1 -0
  176. package/dist/resources/zh-tw/common.js +1963 -0
  177. package/dist/resources/zh-tw/common.js.map +1 -0
  178. package/dist/resources/zh-tw/errors.d.ts +45 -0
  179. package/dist/resources/zh-tw/errors.d.ts.map +1 -0
  180. package/dist/resources/zh-tw/errors.js +44 -0
  181. package/dist/resources/zh-tw/errors.js.map +1 -0
  182. package/dist/resources/zh-tw/generated.d.ts +20 -0
  183. package/dist/resources/zh-tw/generated.d.ts.map +1 -0
  184. package/dist/resources/zh-tw/generated.js +19 -0
  185. package/dist/resources/zh-tw/generated.js.map +1 -0
  186. package/dist/resources/zh-tw/studio.d.ts +18 -0
  187. package/dist/resources/zh-tw/studio.d.ts.map +1 -0
  188. package/dist/resources/zh-tw/studio.js +17 -0
  189. package/dist/resources/zh-tw/studio.js.map +1 -0
  190. package/dist/resources/zh-tw/ui.d.ts +996 -0
  191. package/dist/resources/zh-tw/ui.d.ts.map +1 -0
  192. package/dist/resources/zh-tw/ui.js +995 -0
  193. package/dist/resources/zh-tw/ui.js.map +1 -0
  194. package/locales/ar-EG/common.json +1954 -0
  195. package/locales/ar-EG/errors.json +35 -0
  196. package/locales/ar-EG/generated.json +10 -0
  197. package/locales/ar-EG/studio.json +8 -0
  198. package/locales/ar-EG/ui.json +986 -0
  199. package/locales/cs-CZ/common.json +1954 -0
  200. package/locales/cs-CZ/errors.json +35 -0
  201. package/locales/cs-CZ/generated.json +10 -0
  202. package/locales/cs-CZ/studio.json +8 -0
  203. package/locales/cs-CZ/ui.json +986 -0
  204. package/locales/da-DK/common.json +1954 -0
  205. package/locales/da-DK/errors.json +35 -0
  206. package/locales/da-DK/generated.json +10 -0
  207. package/locales/da-DK/studio.json +8 -0
  208. package/locales/da-DK/ui.json +986 -0
  209. package/locales/de-DE/common.json +1954 -0
  210. package/locales/de-DE/errors.json +35 -0
  211. package/locales/de-DE/generated.json +10 -0
  212. package/locales/de-DE/studio.json +8 -0
  213. package/locales/de-DE/ui.json +986 -0
  214. package/locales/en-US/common.json +1954 -0
  215. package/locales/en-US/errors.json +35 -0
  216. package/locales/en-US/generated.json +10 -0
  217. package/locales/en-US/studio.json +8 -0
  218. package/locales/en-US/ui.json +986 -0
  219. package/locales/fr-FR/common.json +1954 -0
  220. package/locales/fr-FR/errors.json +35 -0
  221. package/locales/fr-FR/generated.json +10 -0
  222. package/locales/fr-FR/studio.json +8 -0
  223. package/locales/fr-FR/ui.json +986 -0
  224. package/locales/zh-CN/common.json +1954 -0
  225. package/locales/zh-CN/errors.json +35 -0
  226. package/locales/zh-CN/generated.json +10 -0
  227. package/locales/zh-CN/studio.json +8 -0
  228. package/locales/zh-CN/ui.json +986 -0
  229. package/locales/zh-TW/common.json +1954 -0
  230. package/locales/zh-TW/errors.json +35 -0
  231. package/locales/zh-TW/generated.json +10 -0
  232. package/locales/zh-TW/studio.json +8 -0
  233. package/locales/zh-TW/ui.json +986 -0
  234. package/package.json +51 -0
@@ -0,0 +1,995 @@
1
+ /**
2
+ * GENERATED MIRROR of ../../../locales/en-US/ui.json — do not edit by hand.
3
+ * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);
4
+ * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits
5
+ * the other locales) without JSON import attributes (browser + NodeNext safe).
6
+ * Parity is enforced by src/resources/parity.test.ts. Regenerate with
7
+ * scripts/gen-resources.mjs.
8
+ */
9
+ export default {
10
+ "action": {
11
+ "close": "Close",
12
+ "cancel": "Cancel",
13
+ "confirm": "Confirm",
14
+ "save": "Save",
15
+ "apply": "Apply",
16
+ "delete": "Delete",
17
+ "edit": "Edit",
18
+ "copy": "Copy",
19
+ "copied": "Copied",
20
+ "undo": "Undo",
21
+ "retry": "Retry",
22
+ "clear": "Clear",
23
+ "selectAll": "Select all",
24
+ "clearSelection": "Clear selection",
25
+ "showPassword": "Show password",
26
+ "hidePassword": "Hide password",
27
+ "reveal": "Reveal",
28
+ "hide": "Hide"
29
+ },
30
+ "state": {
31
+ "loading": "Loading…",
32
+ "empty": "Nothing here yet",
33
+ "noResults": "No results",
34
+ "optional": "Optional",
35
+ "required": "Required",
36
+ "error": "Something went wrong"
37
+ },
38
+ "pagination": {
39
+ "previous": "Previous",
40
+ "next": "Next",
41
+ "pageOf": "Page {page, number} of {pages, number}",
42
+ "rowsPerPage": "Rows per page",
43
+ "range": "{from, number}–{to, number} of {total, number}"
44
+ },
45
+ "table": {
46
+ "sortAscending": "Sort ascending",
47
+ "sortDescending": "Sort descending",
48
+ "rowActions": "Row actions",
49
+ "selectRow": "Select row",
50
+ "selectAllRows": "Select all rows"
51
+ },
52
+ "dialog": {
53
+ "close": "Close dialog",
54
+ "confirmTitle": "Are you sure?"
55
+ },
56
+ "combobox": {
57
+ "placeholder": "Select…",
58
+ "search": "Search…",
59
+ "noMatches": "No matches"
60
+ },
61
+ "toast": {
62
+ "dismiss": "Dismiss notification"
63
+ },
64
+ "widgets": {
65
+ "kpi": {
66
+ "statCard": {
67
+ "description": "The workhorse metric card: a headline aggregate with an optional trend pill and mini sparkline."
68
+ },
69
+ "usageMeter": {
70
+ "description": "Quota consumption against a limit; the bar turns amber, then red, past your thresholds."
71
+ },
72
+ "statTileCompact": {
73
+ "description": "A slim metric tile with a micro-label, trend chip, and 6-bar spark — for dense rows of 4 to 6."
74
+ },
75
+ "metricHero": {
76
+ "description": "One oversized metric that counts up on load, with a trend pill, spark, and goal progress.",
77
+ "goalLabel": "Goal"
78
+ },
79
+ "statPairCard": {
80
+ "description": "Two metrics side by side; the second can be derived from the first."
81
+ },
82
+ "gaugeRing": {
83
+ "description": "A ring gauge for a score or percentage, tinted by the band the value falls in."
84
+ },
85
+ "gaugeArc": {
86
+ "description": "A speedometer arc with qualitative bands and a needle; also renders a grid of gauges."
87
+ },
88
+ "periodComparison": {
89
+ "description": "This period against last as two bars, with the difference computed underneath.",
90
+ "higherLabel": "higher",
91
+ "lowerLabel": "lower",
92
+ "flatLabel": "flat"
93
+ },
94
+ "microKpiSubtitle": {
95
+ "description": "A one-line header stat built from a template, recomputed from live state."
96
+ },
97
+ "autoInsights": {
98
+ "description": "Ranked insight bullets — a headline stat, a sentence, and a spark — with a refresh rotation.",
99
+ "emptyTitle": "No insights yet",
100
+ "emptyBody": "Insights appear once there is enough data to spot a pattern.",
101
+ "refreshLabel": "Refresh"
102
+ }
103
+ },
104
+ "charts": {
105
+ "boxplot": {
106
+ "description": "Whisker-and-box summary of a numeric column's spread per category — min, quartiles, median and max.",
107
+ "emptyTitle": "No distribution to plot",
108
+ "emptyBody": "No rows matched the filters to summarise as box plots."
109
+ },
110
+ "violin": {
111
+ "description": "Mirrored density curves comparing how a numeric column is distributed across groups.",
112
+ "emptyTitle": "No distribution to plot",
113
+ "emptyBody": "No rows matched the filters to build density profiles."
114
+ },
115
+ "ridgeline": {
116
+ "description": "Overlapping density ridges comparing a numeric column across ordered groups.",
117
+ "emptyTitle": "No ridges to plot",
118
+ "emptyBody": "No rows matched the filters to build density profiles."
119
+ },
120
+ "scatterBubble": {
121
+ "description": "Two numeric columns as points, with an optional bubble size and a trend line.",
122
+ "emptyTitle": "No points to plot",
123
+ "emptyBody": "No rows matched the filters for the selected columns."
124
+ },
125
+ "hexbin": {
126
+ "description": "Hex-binned density of two numeric columns, shaded by how many rows fall in each tile.",
127
+ "emptyTitle": "No density to plot",
128
+ "emptyBody": "No rows matched the filters to bin."
129
+ },
130
+ "correlationMatrix": {
131
+ "description": "Pearson correlation between selected numeric columns, from strong positive to strong negative.",
132
+ "emptyTitle": "Nothing to correlate",
133
+ "emptyBody": "Select at least two numeric columns with matching rows."
134
+ },
135
+ "parallelCoordinates": {
136
+ "description": "Each record as a line across several normalised numeric axes, coloured by a category.",
137
+ "emptyTitle": "No records to plot",
138
+ "emptyBody": "No rows matched the filters across the selected axes."
139
+ }
140
+ },
141
+ "feeds": {
142
+ "activityFeed": {
143
+ "description": "A running feed of who did what across your workspace, newest first.",
144
+ "emptyTitle": "No recent activity",
145
+ "emptyBody": "Actions across your workspace will show up here."
146
+ },
147
+ "notificationFeed": {
148
+ "description": "Grouped notifications with unread state, filters, and inline actions.",
149
+ "emptyTitle": "No notifications",
150
+ "emptyBody": "New notifications will appear here."
151
+ },
152
+ "realtimeFeed": {
153
+ "description": "A live event stream that prepends new items as they arrive.",
154
+ "emptyTitle": "Waiting for events",
155
+ "emptyBody": "Live events will stream in as they happen."
156
+ },
157
+ "timelineVertical": {
158
+ "description": "A vertical timeline of events, releases, incidents, or run steps.",
159
+ "emptyTitle": "Nothing here yet",
160
+ "emptyBody": "Events will appear on this timeline as they happen."
161
+ },
162
+ "unreadBadge": {
163
+ "description": "A count pill showing unread items, synced with feed state.",
164
+ "unitLabel": "unread"
165
+ },
166
+ "loadOlderPaginator": {
167
+ "description": "A footer button that loads older records in batches until the feed is exhausted.",
168
+ "label": "Load older",
169
+ "loadingLabel": "Loading…",
170
+ "exhaustedLabel": "Nothing older",
171
+ "ofLabel": "of"
172
+ },
173
+ "toastStack": {
174
+ "description": "The overlay toast host: brief confirmations with an optional Undo.",
175
+ "undoLabel": "Undo",
176
+ "dismissLabel": "Dismiss",
177
+ "regionLabel": "Notifications"
178
+ }
179
+ },
180
+ "calendar": {
181
+ "calendarMonth": {
182
+ "description": "A month grid of scheduled events with per-day chips and month navigation.",
183
+ "emptyTitle": "Nothing scheduled",
184
+ "emptyBody": "Scheduled events will appear on this calendar."
185
+ },
186
+ "dayAgenda": {
187
+ "description": "The selected day's events as a time-ordered agenda.",
188
+ "emptyTitle": "Nothing scheduled",
189
+ "emptyBody": "Events for the selected day will appear here."
190
+ },
191
+ "scheduleMatrix": {
192
+ "description": "A resource-by-day shift grid with per-day coverage and a shift legend.",
193
+ "emptyTitle": "No shifts scheduled",
194
+ "emptyBody": "Assigned shifts will appear on this schedule."
195
+ },
196
+ "capacityBoard": {
197
+ "description": "Per-member utilization bars with a project breakdown and load status.",
198
+ "emptyTitle": "No workload data",
199
+ "emptyBody": "Member utilization will appear here once assignments exist."
200
+ },
201
+ "calendarLegendFilter": {
202
+ "description": "Event categories with counts; toggling one filters the calendar beside it.",
203
+ "emptyTitle": "No categories yet",
204
+ "emptyBody": "Event categories will appear here once events exist.",
205
+ "uncategorizedLabel": "Uncategorized"
206
+ },
207
+ "upcomingEventsList": {
208
+ "description": "The next scheduled events, date-ascending, with owner and status.",
209
+ "emptyTitle": "Nothing upcoming",
210
+ "emptyBody": "Scheduled events will appear here as they are planned."
211
+ },
212
+ "dateRangePicker": {
213
+ "description": "A start/end date range with quick presets that filters the rest of the page.",
214
+ "previousLabel": "Previous month",
215
+ "nextLabel": "Next month",
216
+ "summaryLabel": "{n} days selected",
217
+ "presets": {
218
+ "7d": "Last 7 days",
219
+ "30d": "Last 30 days",
220
+ "90d": "Last 90 days",
221
+ "mtd": "Month to date",
222
+ "qtd": "Quarter to date",
223
+ "ytd": "Year to date"
224
+ }
225
+ },
226
+ "scheduledJobsList": {
227
+ "description": "Recurring reports and exports with their cadence, next run, and an on/off switch.",
228
+ "emptyTitle": "No scheduled jobs",
229
+ "emptyBody": "Recurring reports and exports will appear here once scheduled.",
230
+ "nextRunLabel": "Next run",
231
+ "toggleLabel": "Enable schedule",
232
+ "recipientsLabel": "Recipients"
233
+ }
234
+ },
235
+ "tables": {
236
+ "masterList": {
237
+ "description": "A selectable list of records that drives a detail pane.",
238
+ "emptyTitle": "No items",
239
+ "emptyBody": "Items will appear here once they exist."
240
+ },
241
+ "logTable": {
242
+ "description": "An append-only event log with search, an errors filter, and row actions.",
243
+ "emptyTitle": "No log entries",
244
+ "emptyBody": "Events will be recorded here as they happen."
245
+ },
246
+ "cardGallery": {
247
+ "description": "A responsive gallery of entity cards with status and quick actions.",
248
+ "emptyTitle": "Nothing to show",
249
+ "emptyBody": "Items will appear here as cards."
250
+ },
251
+ "groupedSummaryTable": {
252
+ "description": "Grouped rows with aggregate columns, expandable details, and totals.",
253
+ "emptyTitle": "No summary data",
254
+ "emptyBody": "Grouped totals will appear here once there is data."
255
+ },
256
+ "schemaTree": {
257
+ "description": "An explorer for schemas, tables, and columns with type and key badges.",
258
+ "emptyTitle": "No schema introspected",
259
+ "emptyBody": "Connect a database to explore its schema here."
260
+ },
261
+ "toggleMatrix": {
262
+ "description": "An interactive grid of boolean toggles for roles, policies, or channels.",
263
+ "emptyTitle": "No matrix configured",
264
+ "emptyBody": "Rows and columns will appear here once configured."
265
+ },
266
+ "sparklineTable": {
267
+ "description": "Metric rows with a micro sparkline, the current value, and a good/bad-aware change pill.",
268
+ "emptyTitle": "No metrics to show",
269
+ "emptyBody": "Metrics will appear here once there is data to summarize."
270
+ },
271
+ "topMoversList": {
272
+ "description": "The metrics that changed the most, with the direction judged good or bad per metric.",
273
+ "emptyTitle": "No movers",
274
+ "emptyBody": "Metrics that changed the most will appear here."
275
+ },
276
+ "rankedEntityList": {
277
+ "description": "Top entities by a metric, each with its rank and a proportional bar.",
278
+ "emptyTitle": "Nothing ranked yet",
279
+ "emptyBody": "Top entities will appear here once there is data to rank."
280
+ },
281
+ "accordionList": {
282
+ "description": "Expandable rows with a badge and a detail panel, single- or multi-open.",
283
+ "emptyTitle": "Nothing to expand",
284
+ "emptyBody": "Entries will appear here once there are any."
285
+ },
286
+ "comparisonMatrix": {
287
+ "description": "A feature grid comparing plans or tiers, with one column promoted.",
288
+ "includedLabel": "Included",
289
+ "notIncludedLabel": "Not included",
290
+ "promotedLabel": "Recommended"
291
+ },
292
+ "chipCloud": {
293
+ "description": "Wrapped chips for discovered tables, merge variables, or suggestions.",
294
+ "emptyTitle": "Nothing discovered yet",
295
+ "emptyBody": "Tables and variables will appear here as chips once they are found.",
296
+ "moreLabel": "+{n} more"
297
+ }
298
+ },
299
+ "boards": {
300
+ "kanbanBoard": {
301
+ "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."
304
+ },
305
+ "kanbanSwimlaneGrid": {
306
+ "description": "A lane × column grid where dragging a card reassigns both its lane and its status.",
307
+ "emptyTitle": "No swimlanes to show",
308
+ "emptyBody": "Group records by a lane field and a status field to build the grid."
309
+ },
310
+ "addCard": "Add card",
311
+ "grip": "Drag to move card",
312
+ "pointsUnit": "pts",
313
+ "laneSummary": "Σ{points} pts · {count}",
314
+ "a11y": {
315
+ "grabbed": "Grabbed {title}. Use the arrow keys to move, Enter to drop, Escape to cancel.",
316
+ "over": "{title} is over {cell}.",
317
+ "moved": "Moved {title} to {cell}.",
318
+ "returned": "{title} returned to its original position.",
319
+ "failed": "Could not move {title}; it was returned to its original position."
320
+ },
321
+ "boardCard": {
322
+ "description": "A single board card: tag, title, progress, owner, and due date.",
323
+ "emptyTitle": "No card",
324
+ "emptyBody": "This card has no record bound to it yet."
325
+ },
326
+ "inlineComposeCard": {
327
+ "description": "A quick-add card that inserts a new record with the column's defaults.",
328
+ "placeholder": "Card title…",
329
+ "addLabel": "Add",
330
+ "cancelLabel": "Cancel",
331
+ "openLabel": "Add card"
332
+ }
333
+ },
334
+ "communication": {
335
+ "conversationInbox": {
336
+ "description": "A selectable list of conversations with unread counts, presence, and last-message previews.",
337
+ "emptyTitle": "No conversations",
338
+ "emptyBody": "Conversations will appear here as messages arrive.",
339
+ "noMatchesTitle": "No conversations match",
340
+ "searchLabel": "Search conversations",
341
+ "searchPlaceholder": "Search conversations…"
342
+ },
343
+ "chatThread": {
344
+ "description": "Message bubbles grouped by author and day, with attachments and a composer.",
345
+ "emptyTitle": "No messages yet",
346
+ "emptyBody": "Messages in this conversation will appear here.",
347
+ "composerPlaceholder": "Write a message…",
348
+ "sendLabel": "Send",
349
+ "attachLabel": "Add attachment",
350
+ "typingLabel": "typing…"
351
+ },
352
+ "aiChatPanel": {
353
+ "description": "An assistant panel for asking questions about your schema and data.",
354
+ "emptyTitle": "Ask about your data",
355
+ "emptyBody": "Ask a question about your schema, tables, or metrics to get started.",
356
+ "composerPlaceholder": "Ask a question…",
357
+ "sendLabel": "Send",
358
+ "pendingLabel": "Thinking…",
359
+ "configureTitle": "No AI provider configured",
360
+ "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"
362
+ },
363
+ "typingIndicator": {
364
+ "description": "An avatar and an italic “typing…” row, bound to a live per-conversation boolean.",
365
+ "label": "typing…",
366
+ "emptyTitle": "No typing activity",
367
+ "emptyBody": "Typing state appears here once the conversation is live."
368
+ },
369
+ "callWidget": {
370
+ "description": "An incoming voice or video call: the caller’s avatar, the call state, and accept or decline actions.",
371
+ "voiceLabel": "Voice call",
372
+ "videoLabel": "Video call",
373
+ "ringingLabel": "Ringing…",
374
+ "connectingLabel": "Connecting…",
375
+ "activeLabel": "In call",
376
+ "endedLabel": "Call ended",
377
+ "acceptLabel": "Accept",
378
+ "declineLabel": "Decline",
379
+ "endLabel": "End call",
380
+ "emptyTitle": "No active call",
381
+ "emptyBody": "An incoming call will appear here."
382
+ }
383
+ },
384
+ "geo": {
385
+ "mapBubble": {
386
+ "description": "A map whose circle markers are sized by the metric you choose, alongside a ranked list of the top places.",
387
+ "emptyTitle": "No locations",
388
+ "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.",
390
+ "regionsLabel": "Top regions",
391
+ "metricLabel": "Metric"
392
+ },
393
+ "mapChoroplethGrid": {
394
+ "description": "Region tiles tinted by value — for tables that carry region codes but no coordinates.",
395
+ "emptyTitle": "No regions",
396
+ "emptyBody": "Rows with a region code and a numeric value appear here as tinted tiles.",
397
+ "legendLowLabel": "Low",
398
+ "legendHighLabel": "High"
399
+ }
400
+ },
401
+ "domain": {
402
+ "orgChart": {
403
+ "description": "The reporting tree built from a people table's manager reference, with collapsible branches.",
404
+ "emptyTitle": "No reporting structure",
405
+ "emptyBody": "The org chart appears once people rows reference a manager.",
406
+ "reportsLabel": "Reports · {count}",
407
+ "a11yLabel": "Organization chart"
408
+ },
409
+ "ganttChart": {
410
+ "description": "Task bars over a time axis, grouped by phase, with progress, milestones, and a today marker.",
411
+ "emptyTitle": "Nothing scheduled",
412
+ "emptyBody": "Tasks appear here once they have start and end dates.",
413
+ "ungroupedLabel": "Tasks"
414
+ },
415
+ "documentCanvas": {
416
+ "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.",
419
+ "addBlockLabel": "Add block",
420
+ "removeBlockLabel": "Remove block",
421
+ "moveUpLabel": "Move block up",
422
+ "moveDownLabel": "Move block down",
423
+ "blockListLabel": "Document blocks",
424
+ "billedToLabel": "Billed to",
425
+ "issuedLabel": "Issued",
426
+ "dueLabel": "Due"
427
+ },
428
+ "blockTotalsSummary": {
429
+ "description": "The document totals — subtotal, discount, tax and the total due, recomputed from the line items.",
430
+ "emptyTitle": "No totals yet",
431
+ "emptyBody": "Totals appear once the document has line items.",
432
+ "subtotalLabel": "Subtotal",
433
+ "discountLabel": "Discount",
434
+ "taxLabel": "Tax",
435
+ "totalLabel": "Total due"
436
+ },
437
+ "blockLineItems": {
438
+ "description": "Editable description, quantity and rate rows that feed the document totals.",
439
+ "emptyTitle": "No line items",
440
+ "emptyBody": "Add a line item to bill for work on this document.",
441
+ "descHeader": "Description",
442
+ "qtyHeader": "Qty",
443
+ "rateHeader": "Rate",
444
+ "amountHeader": "Amount"
445
+ },
446
+ "blockKpiRow": {
447
+ "description": "A row of stat tiles with sign-aware delta coloring.",
448
+ "emptyTitle": "No metrics",
449
+ "emptyBody": "Metrics appear here once the report has figures to show."
450
+ },
451
+ "blockBarChart": {
452
+ "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."
455
+ },
456
+ "blockLineChart": {
457
+ "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."
460
+ },
461
+ "blockTwoColTable": {
462
+ "description": "A two-column table with a styled header row and a mono value column.",
463
+ "emptyTitle": "No rows",
464
+ "emptyBody": "Rows appear here once the report has values to list."
465
+ },
466
+ "blockTaxBreakdown": {
467
+ "description": "Tax lines with label, rate and amount, applied to the document subtotal.",
468
+ "emptyTitle": "No tax lines",
469
+ "emptyBody": "Tax lines appear once the document has rates to apply."
470
+ },
471
+ "blockMultiCurrency": {
472
+ "description": "The document total converted per currency at the given rates.",
473
+ "emptyTitle": "No conversions",
474
+ "emptyBody": "Conversions appear once the document lists exchange rates.",
475
+ "footnote": "Rates are indicative and may differ at settlement."
476
+ },
477
+ "blockPaymentHistory": {
478
+ "description": "Past payments with date, masked method, amount and a status pill.",
479
+ "emptyTitle": "No payments yet",
480
+ "emptyBody": "Payments against this document appear here."
481
+ },
482
+ "blockDiscountCodes": {
483
+ "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."
486
+ },
487
+ "blockLoyaltyBanner": {
488
+ "description": "A loyalty banner with the points balance, tier and points earned on this order.",
489
+ "emptyTitle": "No loyalty balance",
490
+ "emptyBody": "The loyalty banner appears once the customer has a points balance.",
491
+ "balanceLabel": "{balance} pts · {tier}",
492
+ "earnedLabel": "+{earned} earned on this order"
493
+ },
494
+ "blockRecurringBanner": {
495
+ "description": "A banner announcing the billing frequency, the next charge date and the cycles remaining.",
496
+ "emptyTitle": "Not recurring",
497
+ "emptyBody": "This banner appears once the document is on a recurring schedule.",
498
+ "template": "Recurring — {freq} · Next on {next} · {count} cycles"
499
+ },
500
+ "blockQrPay": {
501
+ "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.",
504
+ "amountLabel": "Amount due"
505
+ },
506
+ "blockDeliveryStepper": {
507
+ "description": "Horizontal delivery steps marked done, current or upcoming.",
508
+ "emptyTitle": "No delivery steps",
509
+ "emptyBody": "Steps appear once the order has a delivery route."
510
+ },
511
+ "blockSignature": {
512
+ "description": "Signature lines for a name and title, with the date signed.",
513
+ "emptyTitle": "No signature",
514
+ "emptyBody": "The signature lines appear once the document names a signer.",
515
+ "namePlaceholder": "Full name",
516
+ "titlePlaceholder": "Title",
517
+ "dateLabel": "Date"
518
+ },
519
+ "blockTermsCheckbox": {
520
+ "description": "A terms toggle with an editable label.",
521
+ "defaultLabel": "I accept the terms and conditions"
522
+ },
523
+ "blockApproval": {
524
+ "description": "An approver card with a status-tinted pill and optional approve or reject actions.",
525
+ "emptyTitle": "No approver",
526
+ "emptyBody": "The approval card appears once the document names an approver.",
527
+ "approveLabel": "Approve",
528
+ "rejectLabel": "Reject",
529
+ "pendingLabel": "Pending",
530
+ "approvedLabel": "Approved",
531
+ "rejectedLabel": "Rejected"
532
+ },
533
+ "blockAttachments": {
534
+ "description": "Attached files with their names and sizes.",
535
+ "emptyTitle": "No attachments",
536
+ "emptyBody": "Files attached to this document appear here."
537
+ },
538
+ "blockLateFees": {
539
+ "description": "A warning callout stating the late fee and the grace period.",
540
+ "emptyTitle": "No late fee",
541
+ "emptyBody": "This callout appears once the document sets a late-fee policy.",
542
+ "template": "A {rate} late fee applies after {days} days."
543
+ },
544
+ "blockImagePlaceholder": {
545
+ "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."
548
+ },
549
+ "blockContact": {
550
+ "description": "Contact rows for a name, email address and phone number.",
551
+ "emptyTitle": "No contact",
552
+ "emptyBody": "Contact details appear once the document names a contact."
553
+ },
554
+ "blockHighlightBox": {
555
+ "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."
558
+ },
559
+ "starterTemplatePicker": {
560
+ "description": "A grid of predefined starters with generated thumbnails; picking one seeds a full document.",
561
+ "emptyTitle": "No starters",
562
+ "emptyBody": "Add starter definitions in config or bind a starters table."
563
+ },
564
+ "sloMonitorCard": {
565
+ "description": "Per-service SLA card with status, availability against target, a daily uptime strip, error budget, and p95 latency.",
566
+ "emptyTitle": "No monitor",
567
+ "emptyBody": "Bind a monitors table with a status and an availability column."
568
+ },
569
+ "uptimeSegmentBar": {
570
+ "description": "Statuspage-style day strips coloured by daily status, with a 30/90-day toggle.",
571
+ "emptyTitle": "No uptime history",
572
+ "emptyBody": "Daily status rows appear here as an uptime strip."
573
+ },
574
+ "experimentVariantCompare": {
575
+ "description": "Per-variant conversion bars with lift against the control and a significance meter.",
576
+ "emptyTitle": "No variants",
577
+ "emptyBody": "Bind an experiment variants table with conversion numbers."
578
+ },
579
+ "creditCardTile": {
580
+ "description": "A stored payment method as a branded card with a masked number, holder, and expiry.",
581
+ "emptyTitle": "No payment method",
582
+ "emptyBody": "Add a card to see it here."
583
+ },
584
+ "planPricingCards": {
585
+ "description": "Pricing tiers with a monthly/annual switch, feature lists, and a promoted plan.",
586
+ "emptyTitle": "No plans",
587
+ "emptyBody": "Bind a plans table with a name and a monthly price."
588
+ },
589
+ "apiKeysPanel": {
590
+ "description": "API keys with environment badges, masked values, scopes, last use, and copy, roll, and revoke actions.",
591
+ "emptyTitle": "No API keys",
592
+ "emptyBody": "Create a key to start calling the API."
593
+ },
594
+ "apiPlayground": {
595
+ "description": "A request composer with parameters and a response pane. It composes only and never sends a real request.",
596
+ "emptyTitle": "No endpoint selected",
597
+ "emptyBody": "Pick an endpoint to compose a request against it."
598
+ },
599
+ "codeSnippetBlock": {
600
+ "description": "A copyable code snippet with a language chip and optional per-language tabs.",
601
+ "emptyTitle": "No snippet",
602
+ "emptyBody": "Bind a code column or set a static snippet in config."
603
+ },
604
+ "webhookEndpointsList": {
605
+ "description": "Webhook endpoints with their event, target URL, last fired time, and an enable toggle.",
606
+ "emptyTitle": "No endpoints",
607
+ "emptyBody": "Add a webhook endpoint to receive table events."
608
+ },
609
+ "resourceApiCard": {
610
+ "description": "A table's generated API surface: row count, security badge, method chips, and request volume.",
611
+ "emptyTitle": "No resource",
612
+ "emptyBody": "Bind a table to show its generated API surface."
613
+ },
614
+ "liveTimer": {
615
+ "description": "A start/stop stopwatch for a task; stopping it records a time entry.",
616
+ "emptyTitle": "No timer",
617
+ "emptyBody": "Bind a time-entry row with a task and a duration column."
618
+ },
619
+ "syncStatusCard": {
620
+ "description": "Connection identity, latency, rows synced, and the sync schedule, with a sync-now action.",
621
+ "emptyTitle": "No connection",
622
+ "emptyBody": "Bind a connection row to show its sync status."
623
+ },
624
+ "ipAllowlistCard": {
625
+ "description": "Static egress IP addresses to allow through a firewall, each with a copy button.",
626
+ "emptyTitle": "No egress IPs",
627
+ "emptyBody": "Egress addresses appear here once the connection is provisioned."
628
+ },
629
+ "onboardingChecklist": {
630
+ "description": "Setup steps with time estimates and actions, over a live progress ring and bar.",
631
+ "emptyTitle": "Nothing to set up",
632
+ "emptyBody": "Add onboarding steps in config or bind a steps table."
633
+ },
634
+ "testimonialCard": {
635
+ "description": "A customer quote with an avatar and attribution.",
636
+ "emptyTitle": "No testimonial",
637
+ "emptyBody": "Bind a quote row to show a customer testimonial."
638
+ },
639
+ "trustBadges": {
640
+ "description": "A dot-separated row of compliance and trust claims.",
641
+ "emptyTitle": "No badges",
642
+ "emptyBody": "Add compliance claims in config or bind a badges table."
643
+ },
644
+ "policyList": {
645
+ "description": "Row-level security policies per table with their command, role, and an enable toggle.",
646
+ "emptyTitle": "No policies",
647
+ "emptyBody": "This table has no row-level security policies yet."
648
+ }
649
+ },
650
+ "media": {
651
+ "fileBrowser": {
652
+ "description": "Browse files and folders as a tile grid or a list, with a breadcrumb trail, type icons, and starring.",
653
+ "emptyTitle": "This folder is empty",
654
+ "emptyBody": "Upload files or create a folder to get started."
655
+ },
656
+ "uploadDropzone": {
657
+ "description": "A drag-and-drop target for uploading files, with format and size constraints.",
658
+ "dropTitle": "Drop files to upload",
659
+ "browsePrefix": "or",
660
+ "browseLabel": "browse"
661
+ },
662
+ "uploadProgressList": {
663
+ "description": "Per-file upload rows with a progress bar and status; also drives export-queue jobs.",
664
+ "emptyTitle": "No uploads in progress",
665
+ "emptyBody": "Files you upload will show their progress here."
666
+ },
667
+ "attachmentList": {
668
+ "description": "Files attached to a record, with type icons, sizes, and download or delete actions.",
669
+ "emptyTitle": "No attachments",
670
+ "emptyBody": "Files attached to this record will appear here."
671
+ },
672
+ "imageBoard": {
673
+ "description": "A moodboard grid of image slots with captions, for tables with image URLs.",
674
+ "emptyTitle": "No images yet",
675
+ "emptyBody": "Reference images will appear on this board."
676
+ },
677
+ "linkList": {
678
+ "description": "Reference links with titles and URLs, opening in a new tab.",
679
+ "emptyTitle": "No links yet",
680
+ "emptyBody": "Reference links will appear here."
681
+ },
682
+ "root": "Files",
683
+ "breadcrumb": "Breadcrumb",
684
+ "gridView": "Grid view",
685
+ "listView": "List view",
686
+ "nameHeader": "Name",
687
+ "sizeHeader": "Size",
688
+ "modifiedHeader": "Modified",
689
+ "star": "Star",
690
+ "items": "items",
691
+ "done": "Done",
692
+ "failed": "Failed",
693
+ "queued": "Queued",
694
+ "retry": "Retry",
695
+ "download": "Download",
696
+ "cancel": "Cancel",
697
+ "delete": "Delete",
698
+ "remove": "Remove",
699
+ "addImage": "Add image",
700
+ "caption": "Caption",
701
+ "addLink": "Add link",
702
+ "linkTitlePlaceholder": "Title",
703
+ "linkUrlPlaceholder": "https://…",
704
+ "add": "Add"
705
+ },
706
+ "forms": {
707
+ "modalWizard": {
708
+ "description": "A modal create form with a success confirmation — the standard “new record” flow.",
709
+ "trigger": "Create",
710
+ "submit": "Create",
711
+ "cancel": "Cancel",
712
+ "done": "Done",
713
+ "successTitle": "Record created",
714
+ "successBody": "The record was saved.",
715
+ "required": "This field is required."
716
+ },
717
+ "drawerForm": {
718
+ "description": "A side-drawer create or edit form for records with more fields than a modal fits.",
719
+ "trigger": "New",
720
+ "submit": "Save",
721
+ "cancel": "Cancel"
722
+ },
723
+ "stepper": {
724
+ "description": "A progress stepper showing where a multi-step flow has got to.",
725
+ "a11yLabel": "Progress"
726
+ },
727
+ "progressBar": {
728
+ "description": "A determinate progress track with a percent caption.",
729
+ "label": "Progress"
730
+ },
731
+ "otpInput": {
732
+ "description": "A one-time-code entry field.",
733
+ "label": "One-time code"
734
+ },
735
+ "chipInput": {
736
+ "description": "A tag input: removable chips plus free text that commits on Enter.",
737
+ "remove": "Remove",
738
+ "placeholder": "Type and press Enter…"
739
+ },
740
+ "segmentedControl": {
741
+ "description": "A single-select pill control for periods, environments and filters.",
742
+ "a11yLabel": "Select an option"
743
+ },
744
+ "filterChipBar": {
745
+ "description": "Filter chips with live counts computed from the list they filter.",
746
+ "all": "All",
747
+ "a11yLabel": "Filter",
748
+ "meta": "{shown} of {total}"
749
+ },
750
+ "toggleSwitchList": {
751
+ "description": "A list of settings rows, each with a switch.",
752
+ "save": "Save",
753
+ "dirty": "You have unsaved changes",
754
+ "emptyTitle": "No settings",
755
+ "emptyBody": "Settings appear here once they are configured."
756
+ },
757
+ "optionCards": {
758
+ "description": "A single-select card grid for sources, templates and plans.",
759
+ "a11yLabel": "Choose an option"
760
+ },
761
+ "ruleBuilder": {
762
+ "description": "A condition builder whose rules compile to a filter — the segment/audience editor.",
763
+ "add": "Add condition",
764
+ "remove": "Remove condition",
765
+ "all": "ALL",
766
+ "any": "ANY",
767
+ "field": "Field",
768
+ "operator": "Operator",
769
+ "value": "Value",
770
+ "valuePlaceholder": "Value…",
771
+ "emptyBody": "No conditions yet — add one to define this segment."
772
+ },
773
+ "flowBuilder": {
774
+ "description": "A vertical workflow canvas of trigger, condition and action steps.",
775
+ "add": "Add step",
776
+ "remove": "Remove step",
777
+ "paletteTitle": "Add a step",
778
+ "stats": "{runs} runs · {rate}% success",
779
+ "emptyBody": "No steps yet — add a trigger to start this workflow."
780
+ },
781
+ "connectionStringField": {
782
+ "description": "A connection-string field that detects the database engine as you type.",
783
+ "label": "Connection string",
784
+ "helper": "postgres://user:password@host:5432/database — mysql:// and sqlite: work too.",
785
+ "quickFill": "Quick fill:",
786
+ "host": "Host: {host}",
787
+ "invalidScheme": "Unrecognized connection-string scheme.",
788
+ "incomplete": "Add a host and database to the connection string."
789
+ },
790
+ "tableInclusionChecklist": {
791
+ "description": "The tables to include, with row counts and PII warnings.",
792
+ "pii": "PII",
793
+ "highVolume": "high volume",
794
+ "a11yLabel": "Tables to include",
795
+ "emptyTitle": "No tables found",
796
+ "emptyBody": "Connect a database and its tables will appear here."
797
+ },
798
+ "columnMappingTable": {
799
+ "description": "Maps the columns of an uploaded file onto the fields of a table.",
800
+ "skip": "Don't import",
801
+ "sourceHeader": "Source column",
802
+ "sampleHeader": "Sample",
803
+ "targetHeader": "Target field",
804
+ "emptyTitle": "No columns to map",
805
+ "emptyBody": "Upload a file and its columns will appear here."
806
+ },
807
+ "validationIssuesList": {
808
+ "description": "Import and validation issues, most severe first, with affected row counts.",
809
+ "emptyTitle": "No issues found",
810
+ "emptyBody": "Everything checks out — you are good to import."
811
+ },
812
+ "exportBuilder": {
813
+ "description": "Builds a data export: format, date range and what to include.",
814
+ "format": "Format",
815
+ "from": "From",
816
+ "to": "To",
817
+ "groupBy": "Group by",
818
+ "includeCharts": "Include charts",
819
+ "email": "Email me the export",
820
+ "submit": "Export",
821
+ "running": "Preparing your export…",
822
+ "done": "Export ready",
823
+ "failed": "The export failed. Try again.",
824
+ "download": "Download"
825
+ },
826
+ "questionBuilder": {
827
+ "description": "A survey editor: add question types and reorder the questions.",
828
+ "paletteTitle": "Add a question",
829
+ "add": "Add question",
830
+ "remove": "Remove question",
831
+ "moveUp": "Move up",
832
+ "moveDown": "Move down",
833
+ "required": "Required",
834
+ "questionPlaceholder": "Ask a question…",
835
+ "emptyTitle": "No questions yet",
836
+ "emptyBody": "Pick a question type to start building your survey."
837
+ },
838
+ "inlineEditableField": {
839
+ "description": "A click-to-edit value inside a document or canvas.",
840
+ "edit": "Edit",
841
+ "save": "Save",
842
+ "cancel": "Cancel",
843
+ "empty": "Empty"
844
+ },
845
+ "passwordStrengthMeter": {
846
+ "description": "A four-segment meter showing how strong a password is.",
847
+ "label": "Password strength",
848
+ "weak": "Weak",
849
+ "fair": "Fair",
850
+ "good": "Good",
851
+ "strong": "Strong"
852
+ }
853
+ },
854
+ "chrome": {
855
+ "sidebarNav": {
856
+ "description": "The grouped app navigation rail, with live count badges.",
857
+ "a11yLabel": "Main",
858
+ "emptyTitle": "No navigation yet",
859
+ "emptyBody": "Included tables appear here once a connection is generated."
860
+ },
861
+ "commandPalette": {
862
+ "description": "The ⌘K palette: search actions, pages and records from anywhere.",
863
+ "title": "Command palette",
864
+ "placeholder": "Search actions, pages and records…",
865
+ "navigate": "Navigate",
866
+ "select": "Open",
867
+ "close": "Close",
868
+ "emptyTitle": "No results",
869
+ "emptyBody": "Start typing to search.",
870
+ "groupActions": "Actions",
871
+ "groupNavigate": "Navigate",
872
+ "groupRecent": "Recent",
873
+ "groupPages": "Pages",
874
+ "groupMetrics": "Metrics",
875
+ "groupPeople": "People",
876
+ "groupRecords": "Records"
877
+ },
878
+ "globalSearch": {
879
+ "description": "Search across every entity, with type facets and result snippets.",
880
+ "placeholder": "Search everything…",
881
+ "all": "All",
882
+ "summary": "{count} results for “{query}”",
883
+ "emptyTitle": "No results",
884
+ "emptyBody": "Try a different search term."
885
+ },
886
+ "breadcrumb": {
887
+ "description": "The ancestor trail of the current record or folder.",
888
+ "a11yLabel": "Breadcrumb"
889
+ },
890
+ "tabBar": {
891
+ "description": "Tabs that switch panels or navigate, with optional counts.",
892
+ "a11yLabel": "Tabs"
893
+ },
894
+ "navCard": {
895
+ "description": "A grid of link cards for hub and landing pages.",
896
+ "emptyTitle": "Nothing to show",
897
+ "emptyBody": "Hub links appear here once pages are generated."
898
+ },
899
+ "shortcutsPanel": {
900
+ "description": "The keyboard shortcuts cheat sheet.",
901
+ "footerHint": "Press ? anytime",
902
+ "then": "then",
903
+ "emptyTitle": "No shortcuts registered."
904
+ },
905
+ "avatarStack": {
906
+ "description": "Overlapping avatars with a “+N” overflow and optional presence.",
907
+ "online": "{count} online"
908
+ }
909
+ },
910
+ "system": {
911
+ "stateHero": {
912
+ "description": "A full-page status screen for 404, 500, offline, forbidden and maintenance states.",
913
+ "notFoundTitle": "This page took a wrong turn",
914
+ "notFoundBody": "The page you are looking for was moved, renamed, or never existed.",
915
+ "serverErrorTitle": "Something broke on our side",
916
+ "serverErrorBody": "The error was logged and the team notified. Trying again often works.",
917
+ "offlineTitle": "You are offline",
918
+ "offlineBody": "Check your connection — the dashboard reconnects automatically.",
919
+ "forbiddenTitle": "You do not have access",
920
+ "forbiddenBody": "Ask a workspace admin to grant you permission for this page.",
921
+ "maintenanceTitle": "Down for maintenance",
922
+ "maintenanceBody": "We are making things better. This usually takes a few minutes.",
923
+ "connErrorTitle": "Cannot reach the database",
924
+ "connErrorBody": "The connection was refused or timed out. Check the connection settings.",
925
+ "backToDashboard": "Back to dashboard",
926
+ "tryAgain": "Try again",
927
+ "retry": "Retry",
928
+ "testConnection": "Test connection"
929
+ },
930
+ "emptyState": {
931
+ "description": "A centred “nothing here yet” panel with optional actions."
932
+ },
933
+ "statusPill": {
934
+ "description": "A tone-coded badge for an enum column — the universal status renderer."
935
+ },
936
+ "alertBanner": {
937
+ "description": "An inline callout for quota, freeze and schedule notices.",
938
+ "dismiss": "Dismiss"
939
+ },
940
+ "statusBannerHero": {
941
+ "description": "A service-health hero whose state derives from the worst service in the list.",
942
+ "upTitle": "All systems operational",
943
+ "upBody": "Every monitored service is responding normally.",
944
+ "degradedTitle": "Degraded performance",
945
+ "degradedBody": "Some services are slower than usual. We are investigating.",
946
+ "downTitle": "Major outage",
947
+ "downBody": "One or more services are unavailable. We are on it."
948
+ },
949
+ "connectionStatus": {
950
+ "description": "The connect/test result for a database connection.",
951
+ "idle": "Not connected",
952
+ "connecting": "Connecting…",
953
+ "connected": "Connected",
954
+ "failed": "Couldn’t connect",
955
+ "test": "Test"
956
+ },
957
+ "autosaveIndicator": {
958
+ "description": "The unsaved → saving → saved pill for autosaving documents.",
959
+ "dirty": "Unsaved changes",
960
+ "saving": "Saving…",
961
+ "saved": "All changes saved",
962
+ "error": "Couldn’t save"
963
+ },
964
+ "progressLogConsole": {
965
+ "description": "A streaming log console with a progress bar, for long-running tasks.",
966
+ "a11yLabel": "Progress log",
967
+ "progressLabel": "Progress",
968
+ "emptyTitle": "Nothing to report yet",
969
+ "emptyBody": "Log lines appear here once the task starts."
970
+ },
971
+ "diagnosticsReadout": {
972
+ "description": "Connection-check results as toned key/value rows with a freshness stamp.",
973
+ "checkedAt": "Last checked",
974
+ "host": "Host",
975
+ "dns": "DNS",
976
+ "tcp": "TCP",
977
+ "tls": "TLS",
978
+ "auth": "Auth",
979
+ "latency": "Latency"
980
+ }
981
+ }
982
+ },
983
+ "grid": {
984
+ "dragHandle": "Drag to move {title}",
985
+ "resizeHandle": "Resize {title}",
986
+ "a11y": {
987
+ "grabbed": "Grabbed {title}. Use the arrow keys to move, hold Shift to resize, Enter to save, Escape to cancel.",
988
+ "moved": "{title} moved to column {col}, row {row}.",
989
+ "resized": "{title} resized to {w} columns by {h} rows.",
990
+ "committed": "{title} placed at column {col}, row {row}.",
991
+ "reverted": "{title} returned to its original position."
992
+ }
993
+ }
994
+ };
995
+ //# sourceMappingURL=ui.js.map