@object-ui/i18n 17.3.0 → 17.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +1929 -1
  2. package/README.md +41 -12
  3. package/dist/i18n.d.ts +1 -1
  4. package/dist/i18n.js +1 -2
  5. package/dist/index.d.ts +23 -21
  6. package/dist/index.js +31 -21
  7. package/dist/locales/ar.d.ts +638 -369
  8. package/dist/locales/ar.js +744 -424
  9. package/dist/locales/de.d.ts +638 -369
  10. package/dist/locales/de.js +759 -446
  11. package/dist/locales/en.d.ts +673 -404
  12. package/dist/locales/en.js +899 -406
  13. package/dist/locales/es.d.ts +638 -369
  14. package/dist/locales/es.js +739 -427
  15. package/dist/locales/fr.d.ts +638 -369
  16. package/dist/locales/fr.js +738 -423
  17. package/dist/locales/index.d.ts +6476 -3786
  18. package/dist/locales/index.js +20 -20
  19. package/dist/locales/ja.d.ts +638 -369
  20. package/dist/locales/ja.js +732 -417
  21. package/dist/locales/ko.d.ts +638 -369
  22. package/dist/locales/ko.js +736 -424
  23. package/dist/locales/pt.d.ts +638 -369
  24. package/dist/locales/pt.js +737 -425
  25. package/dist/locales/ru.d.ts +638 -369
  26. package/dist/locales/ru.js +750 -424
  27. package/dist/locales/zh.d.ts +672 -403
  28. package/dist/locales/zh.js +720 -403
  29. package/dist/pickLocalized.d.ts +58 -0
  30. package/dist/pickLocalized.js +115 -7
  31. package/dist/provider.d.ts +84 -2
  32. package/dist/provider.js +305 -31
  33. package/dist/useDisplayLocale.d.ts +49 -0
  34. package/dist/useDisplayLocale.js +55 -0
  35. package/dist/useObjectLabel.d.ts +94 -14
  36. package/dist/useObjectLabel.js +134 -21
  37. package/dist/useSafeTranslation.js +51 -3
  38. package/dist/utils/index.d.ts +4 -3
  39. package/dist/utils/index.js +4 -3
  40. package/dist/utils/number-display.d.ts +32 -0
  41. package/dist/utils/number-display.js +32 -0
  42. package/dist/utils/spec-formatters.d.ts +39 -13
  43. package/dist/utils/spec-formatters.js +3 -3
  44. package/package.json +4 -3
@@ -2,6 +2,16 @@
2
2
  * English (en) - Default language pack for Object UI
3
3
  */
4
4
  declare const en: {
5
+ readonly impersonation: {
6
+ readonly banner: {
7
+ readonly message: "You are impersonating {{user}} — every action is recorded as them.";
8
+ readonly startedBy: "Started by administrator {{admin}}.";
9
+ readonly stop: "Stop impersonating";
10
+ readonly stopping: "Stopping…";
11
+ readonly stopFailed: "Could not stop impersonating: {{reason}}";
12
+ readonly notRestored: "The server accepted the request but did not restore your administrator session — you are still impersonating {{user}}. Sign out and sign in again to end it.";
13
+ };
14
+ };
5
15
  readonly capability: {
6
16
  readonly group: {
7
17
  readonly platform: "Platform";
@@ -18,6 +28,23 @@ declare const en: {
18
28
  readonly studio_access: "Studio Access";
19
29
  };
20
30
  };
31
+ readonly perm: {
32
+ readonly facet: {
33
+ readonly none: "None";
34
+ readonly more: "+{{count}} more";
35
+ readonly objects: "{{count}} objects";
36
+ readonly objects_one: "{{count}} object";
37
+ readonly fields: "{{count}} field rules";
38
+ readonly fields_one: "{{count}} field rule";
39
+ readonly rls: "{{count}} RLS policies";
40
+ readonly rls_one: "{{count}} RLS policy";
41
+ readonly tabs: "{{count}} tab rules";
42
+ readonly tabs_one: "{{count}} tab rule";
43
+ readonly adminScope: "Delegated admin configured";
44
+ readonly designInStudio: "Design in Studio →";
45
+ readonly designInStudioHint: "Design in Studio";
46
+ };
47
+ };
21
48
  readonly lookup: {
22
49
  readonly recentlyUsed: "Recently used";
23
50
  readonly allResults: "All results";
@@ -46,13 +73,13 @@ declare const en: {
46
73
  readonly retry: "Retry";
47
74
  };
48
75
  readonly common: {
49
- readonly loading: "Loading...";
76
+ readonly loading: "Loading…";
50
77
  readonly save: "Save";
78
+ readonly discard: "Discard";
51
79
  readonly cancel: "Cancel";
52
80
  readonly delete: "Delete";
53
81
  readonly edit: "Edit";
54
82
  readonly create: "Create";
55
- readonly search: "Search";
56
83
  readonly filter: "Filter";
57
84
  readonly reset: "Reset";
58
85
  readonly confirm: "Confirm";
@@ -78,7 +105,7 @@ declare const en: {
78
105
  readonly required: "Required";
79
106
  readonly optional: "Optional";
80
107
  readonly selectOption: "Select an option";
81
- readonly select: "Select...";
108
+ readonly select: "Select…";
82
109
  readonly openChat: "Open chat";
83
110
  readonly closeChat: "Close chat";
84
111
  readonly closePanel: "Close panel";
@@ -87,6 +114,11 @@ declare const en: {
87
114
  readonly itemCountOne: "{{count}} item";
88
115
  readonly toggleSidebar: "Toggle sidebar";
89
116
  readonly package: "Package";
117
+ readonly done: "Done";
118
+ readonly editInStudio: "Edit in studio";
119
+ readonly record: "Record";
120
+ readonly retry: "Retry";
121
+ readonly printDialogHint: "Opens your browser’s print dialog (not a PDF export)";
90
122
  };
91
123
  readonly actions: {
92
124
  readonly decisionOutput: {
@@ -125,6 +157,7 @@ declare const en: {
125
157
  readonly unsavedChanges: "You have unsaved changes. Are you sure you want to leave?";
126
158
  readonly discardTitle: "Discard changes?";
127
159
  readonly discardMessage: "You have unsaved changes. If you close this form now, your edits will be lost.";
160
+ readonly dialogDescriptionFallback: "Complete the form fields, then submit or cancel.";
128
161
  readonly keepEditing: "Keep editing";
129
162
  readonly discard: "Discard";
130
163
  readonly conflictTitle: "Save conflict";
@@ -186,7 +219,7 @@ declare const en: {
186
219
  readonly richText: {
187
220
  readonly format: "Format: {{format}}";
188
221
  readonly basicEditorHint: "Rich text editor (basic)";
189
- readonly placeholder: "Enter text...";
222
+ readonly placeholder: "Enter text…";
190
223
  };
191
224
  readonly options: {
192
225
  readonly empty: "No options available";
@@ -222,6 +255,13 @@ declare const en: {
222
255
  readonly tags: {
223
256
  readonly placeholder: "Type and press Enter to add…";
224
257
  };
258
+ readonly address: {
259
+ readonly street: "Street Address";
260
+ readonly city: "City";
261
+ readonly state: "State / Province";
262
+ readonly postalCode: "ZIP / Postal Code";
263
+ readonly country: "Country";
264
+ };
225
265
  readonly textarea: {
226
266
  readonly characterCount: "Character count: {{count}} of {{max}}";
227
267
  readonly charactersRemaining: "Characters remaining: {{count}}";
@@ -252,7 +292,7 @@ declare const en: {
252
292
  readonly saveAll: "Save All ({{count}})";
253
293
  readonly addRecord: "Add record";
254
294
  readonly open: "Open";
255
- readonly search: "Search...";
295
+ readonly search: "Search…";
256
296
  readonly modified: "{{count}} row modified";
257
297
  readonly saveFailed: "Save failed";
258
298
  readonly selected: "{{count}} selected";
@@ -265,7 +305,7 @@ declare const en: {
265
305
  readonly delete: "Delete";
266
306
  readonly export: "Export";
267
307
  readonly exportAs: "Export as {{format}}";
268
- readonly loading: "Loading grid...";
308
+ readonly loading: "Loading grid…";
269
309
  readonly errorLoading: "Error loading grid";
270
310
  readonly pullToRefresh: "Pull to refresh";
271
311
  readonly refreshing: "Refreshing…";
@@ -282,6 +322,19 @@ declare const en: {
282
322
  readonly yes: "Yes";
283
323
  readonly no: "No";
284
324
  readonly systemFields: "System";
325
+ readonly summary: {
326
+ readonly pattern: "{{label}}: {{value}}";
327
+ readonly count: "Count";
328
+ readonly countEmpty: "Empty";
329
+ readonly countFilled: "Filled";
330
+ readonly countUnique: "Unique";
331
+ readonly percentEmpty: "Empty";
332
+ readonly percentFilled: "Filled";
333
+ readonly sum: "Sum";
334
+ readonly avg: "Avg";
335
+ readonly min: "Min";
336
+ readonly max: "Max";
337
+ };
285
338
  readonly toolbar: {
286
339
  readonly densityMode: "Density";
287
340
  readonly densityCompact: "Compact";
@@ -485,7 +538,8 @@ declare const en: {
485
538
  readonly sort: "Sort";
486
539
  readonly sortRecords: "Sort Records";
487
540
  readonly sortByIdSuffix: "(by ID)";
488
- readonly sortRelationalHint: "Columns that link to another record are not listed: they can only be sorted by the stored ID, not by the name shown in the cell. To sort by that name, add a formula field holding it.";
541
+ readonly sortRelationalHint: "Columns that link to another record are not listed: they can only be sorted by the stored ID, not by the name shown in the cell. To sort by that name, denormalize it onto this object as a stored field, written when the source changes, and sort by that. Not a formula field: it is virtual, so no column is stored for it and the server refuses to sort by one.";
542
+ readonly resetSortToDefault: "Reset to view default";
489
543
  readonly group: "Group";
490
544
  readonly groupBy: "Group By";
491
545
  readonly export: "Export";
@@ -510,6 +564,8 @@ declare const en: {
510
564
  readonly loadErrorUnauthorizedMessage: "Your session has expired or you are signed out. Sign in again to view these records.";
511
565
  readonly loadErrorRejectedTitle: "This view’s query was rejected";
512
566
  readonly loadErrorRejectedMessage: "The server could not process this view’s filter or query options. Clearing the filters usually fixes it; if the view is saved this way, an administrator needs to correct it.";
567
+ readonly loadErrorApiDisabledTitle: "This object isn’t available through the API";
568
+ readonly loadErrorApiDisabledMessage: "This page can’t load its records because the object is not exposed through the API. That is a setting on the object itself, not a permission — an administrator has to enable API access for it before this page can work.";
513
569
  readonly retry: "Retry";
514
570
  readonly managedBy: {
515
571
  readonly system: {
@@ -584,8 +640,11 @@ declare const en: {
584
640
  readonly deleteCard: "Delete card";
585
641
  readonly deleteColumn: "Delete column";
586
642
  readonly noCards: "No cards";
587
- readonly cardTitlePlaceholder: "Enter card title...";
643
+ readonly cardTitlePlaceholder: "Enter card title…";
588
644
  readonly uncategorized: "Uncategorized";
645
+ readonly columns: "columns";
646
+ readonly requiredFieldsTitle: "Complete required fields";
647
+ readonly requiredFieldsDescription: "This move makes the fields below required. Fill them in to continue.";
589
648
  };
590
649
  readonly timeline: {
591
650
  readonly bucket: {
@@ -598,6 +657,13 @@ declare const en: {
598
657
  readonly noDate: "No date";
599
658
  readonly unassigned: "Unassigned";
600
659
  };
660
+ readonly scale: {
661
+ readonly week: "Week {{n}}";
662
+ readonly quarter: "Q{{quarter}} {{year}}";
663
+ };
664
+ readonly gantt: {
665
+ readonly rowLabel: "Items";
666
+ };
601
667
  };
602
668
  readonly gantt: {
603
669
  readonly column: {
@@ -624,6 +690,7 @@ declare const en: {
624
690
  readonly exportPng: "Export as PNG";
625
691
  readonly exportPdf: "Export PDF";
626
692
  readonly saveLayout: "Save layout";
693
+ readonly refresh: "Refresh";
627
694
  readonly undo: "Undo";
628
695
  readonly redo: "Redo";
629
696
  };
@@ -671,6 +738,18 @@ declare const en: {
671
738
  readonly ff: "Finish → Finish";
672
739
  readonly sf: "Start → Finish";
673
740
  };
741
+ readonly linkEnd: {
742
+ readonly start: "start";
743
+ readonly end: "end";
744
+ };
745
+ readonly link: {
746
+ readonly rejected: {
747
+ readonly self: "A task cannot depend on itself.";
748
+ readonly locked: "This row is locked and cannot take a new dependency.";
749
+ readonly group: "A summary row cannot take a dependency — link one of its tasks instead.";
750
+ readonly cycle: "That link would create a circular dependency.";
751
+ };
752
+ };
674
753
  readonly conflict: {
675
754
  readonly title: "Schedule conflict";
676
755
  readonly body: "This move conflicts with dependency constraints. Auto-reschedule {{count}} affected task(s)?";
@@ -679,8 +758,8 @@ declare const en: {
679
758
  };
680
759
  readonly autoScheduleDlg: {
681
760
  readonly title: "Auto-schedule";
682
- readonly body: "Shift {count} task(s) later to satisfy dependency links?";
683
- readonly skipped: "{count} locked task(s) also violate links and were skipped.";
761
+ readonly body: "Shift {{count}} task(s) later to satisfy dependency links?";
762
+ readonly skipped: "{{count}} locked task(s) also violate links and were skipped.";
684
763
  readonly confirm: "Apply";
685
764
  readonly cancel: "Cancel";
686
765
  readonly none: "All dependencies satisfied — nothing to reschedule.";
@@ -746,6 +825,8 @@ declare const en: {
746
825
  readonly writeStrippedTitle: "Saved — but some fields did not take effect";
747
826
  readonly writeStrippedReadonly: "Read-only, so it did not take effect: {{fields}}";
748
827
  readonly writeStrippedByState: "Not editable in this record's current state, so it did not take effect: {{fields}}";
828
+ readonly writeStrippedPrimaryKey: "The record's identifier cannot be changed by a save, so it did not take effect: {{fields}}";
829
+ readonly writeStrippedUnknownReason: "Not applied by the server: {{fields}}";
749
830
  readonly approvalPendingEditable: "In approval · editable";
750
831
  readonly approvalPendingTooltip: "This record has a pending approval request; this step still allows editing";
751
832
  readonly approvalProgress: "Approvals — {{got}} of {{need}}";
@@ -758,6 +839,13 @@ declare const en: {
758
839
  readonly cancelApprovalTooltipUnlocked: "Recall the pending approval request";
759
840
  readonly cancelApprovalFailed: "Failed to recall approval";
760
841
  readonly cancelApprovalUnavailable: "Recalling approvals is not supported on this data source";
842
+ readonly pathLabel: "Record path";
843
+ readonly pathStageCompleted: "{{stage}}, completed";
844
+ readonly pathStageCurrent: "{{stage}}, current stage";
845
+ readonly pathStageUpcoming: "{{stage}}, upcoming";
846
+ readonly pathStageLostCurrent: "{{stage}}, closed lost, current stage";
847
+ readonly pathStageLostUpcoming: "{{stage}}, closed lost, not reached";
848
+ readonly pathStageWonUpcoming: "{{stage}}, goal stage, not reached";
761
849
  readonly linkCopied: "Link copied to clipboard";
762
850
  readonly linkCopyFailed: "Failed to copy link";
763
851
  readonly cancel: "Cancel";
@@ -772,6 +860,7 @@ declare const en: {
772
860
  readonly concurrentUpdateReload: "Reload latest";
773
861
  readonly concurrentUpdateOverwrite: "Overwrite anyway";
774
862
  readonly concurrentUpdateCancel: "Cancel";
863
+ readonly concurrentUpdateRecordLabel: "this record";
775
864
  readonly openInNewTab: "Open in new tab";
776
865
  readonly share: "Share";
777
866
  readonly duplicate: "Duplicate";
@@ -801,16 +890,19 @@ declare const en: {
801
890
  readonly relatedRecords: "{{count}} records";
802
891
  readonly relatedRecordOne: "{{count}} record";
803
892
  readonly noRelatedRecords: "No related records found";
804
- readonly loading: "Loading...";
893
+ readonly loading: "Loading…";
805
894
  readonly copyToClipboard: "Copy to clipboard";
806
895
  readonly copied: "Copied!";
807
896
  readonly deleteConfirmation: "Are you sure you want to delete this record?";
897
+ readonly deleted: "Record deleted";
808
898
  readonly editRecord: "Edit record";
809
899
  readonly viewAll: "View All";
810
900
  readonly new: "New";
901
+ readonly add: "Add";
811
902
  readonly emptyValue: "—";
812
903
  readonly activity: "Activity";
813
904
  readonly history: "History";
905
+ readonly historyEmpty: "No history yet";
814
906
  readonly editRow: "Edit";
815
907
  readonly deleteRow: "Delete";
816
908
  readonly deleteRowConfirmation: "Are you sure you want to delete this record?";
@@ -820,7 +912,7 @@ declare const en: {
820
912
  readonly nextPage: "Next";
821
913
  readonly pageOf: "Page {{current}} of {{total}}";
822
914
  readonly sortBy: "Sort by";
823
- readonly filterPlaceholder: "Filter...";
915
+ readonly filterPlaceholder: "Filter…";
824
916
  readonly highlightFields: "Key Fields";
825
917
  readonly comments: "Comments";
826
918
  readonly searchComments: "Search comments…";
@@ -855,6 +947,10 @@ declare const en: {
855
947
  readonly attachmentDownloadDenied: "You don't have access to download this attachment.";
856
948
  readonly attachmentAuthRequired: "Please sign in to download this attachment.";
857
949
  readonly attachmentPermissionDenied: "You don't have permission to do that.";
950
+ readonly attachmentsAccessDenied: "You don't have access to these attachments.";
951
+ readonly attachmentsLoadFailed: "We couldn't load the attachments for this record.";
952
+ readonly attachmentsApiUnavailable: "The attachments list is not available on this object.";
953
+ readonly retryLoadAttachments: "Retry";
858
954
  readonly unifiedDiff: "Unified diff";
859
955
  readonly sideBySideDiff: "Side-by-side diff";
860
956
  readonly noChanges: "No changes";
@@ -879,6 +975,7 @@ declare const en: {
879
975
  readonly nextRecordKey: "Next record (→)";
880
976
  readonly lastRecord: "Last record (End)";
881
977
  readonly noRecords: "No records";
978
+ readonly showEmptyRelated: "+ {{count}} empty";
882
979
  readonly showEmptyRelated_one: "+ {{count}} empty";
883
980
  readonly showEmptyRelated_other: "+ {{count}} empty";
884
981
  readonly searchWhileNavigating: "Search while navigating";
@@ -892,6 +989,7 @@ declare const en: {
892
989
  readonly loadMore: "Load more";
893
990
  readonly edited: "(edited)";
894
991
  readonly via: "via {{source}}";
992
+ readonly viewSource: "View source";
895
993
  readonly replyCount: "{{count}} reply";
896
994
  readonly replyCountPlural: "{{count}} replies";
897
995
  readonly replyPlaceholder: "Reply…";
@@ -910,7 +1008,8 @@ declare const en: {
910
1008
  };
911
1009
  readonly chart: {
912
1010
  readonly noData: "No chart data available";
913
- readonly loading: "Loading chart...";
1011
+ readonly loading: "Loading chart…";
1012
+ readonly nullCategory: "(None)";
914
1013
  };
915
1014
  readonly report: {
916
1015
  readonly total: "Total";
@@ -935,111 +1034,7 @@ declare const en: {
935
1034
  readonly first: "First";
936
1035
  };
937
1036
  readonly editor: {
938
- readonly breadcrumb: "Configuration";
939
- readonly basic: "Basic";
940
- readonly title: "Title";
941
- readonly titlePlaceholder: "e.g. Pipeline by Quarter";
942
- readonly description: "Description";
943
- readonly descriptionPlaceholder: "What does this report show?";
944
- readonly type: "Report type";
945
- readonly typeTabular: "Tabular — flat list";
946
- readonly typeSummary: "Summary — grouped with totals";
947
- readonly typeMatrix: "Matrix — pivot rows × columns";
948
- readonly typeJoined: "Joined — multiple blocks";
949
- readonly typeHelp: "Pick the layout that matches what you want to see.";
950
- readonly data: "Data";
951
- readonly objectName: "Data source";
952
- readonly objectNamePlaceholder: "e.g. opportunity";
953
- readonly objectNameHelp: "Which object should this report query?";
954
- readonly limit: "Row limit";
955
- readonly limitPlaceholder: "e.g. 100";
956
- readonly columns: "Columns";
957
- readonly columnsHint: "Pick which fields appear as columns. Add an aggregate (Sum, Count…) on Summary or Matrix reports.";
958
- readonly filters: "Filters";
959
- readonly filtersHint: "Limit the rows that go into this report.";
960
- readonly filtersComplex: "This report uses an advanced filter that cannot be edited here. Save will keep it unchanged.";
961
- readonly groupBy: "Group by";
962
- readonly groupByHint: "Group the data and compute subtotals.";
963
- readonly rows: "Rows";
964
- readonly rowsHint: "Group rows by these fields.";
965
- readonly columnsAxis: "Columns";
966
- readonly columnsAxisHint: "Pivot these fields across the top.";
967
- readonly values: "Values";
968
- readonly valuesHint: "Numbers shown in each cell. Pick one or more fields and add an aggregate (Sum, Count…).";
969
- readonly grouping: "Grouping";
970
- readonly addGrouping: "Add grouping";
971
- readonly dateGranularity: "Date bucket";
972
- readonly dateGranularityNone: "(use raw value)";
973
- readonly day: "Day";
974
- readonly week: "Week";
975
- readonly month: "Month";
976
- readonly quarter: "Quarter";
977
- readonly year: "Year";
978
- readonly sortAsc: "Ascending";
979
- readonly sortDesc: "Descending";
980
- readonly chart: "Chart";
981
- readonly chartHint: "Optional visualization rendered alongside the table.";
982
- readonly chartType: "Chart type";
983
- readonly chartTitle: "Chart title";
984
- readonly chartTitlePlaceholder: "Defaults to the report title";
985
- readonly chartXAxis: "X-axis (category)";
986
- readonly chartYAxis: "Y-axis (value)";
987
- readonly chartShowLegend: "Show legend";
988
- readonly chartShowDataLabels: "Show data labels";
989
- readonly chartNone: "(no chart)";
990
- readonly chartBar: "Bar";
991
- readonly chartLine: "Line";
992
- readonly chartArea: "Area";
993
- readonly chartPie: "Pie";
994
- readonly chartDonut: "Donut";
995
- readonly chartFunnel: "Funnel";
996
- readonly validationNeedsObject: "Pick a data source before adding columns.";
997
- readonly validationMatrixNeedsRowsCols: "Matrix reports need at least one Row and one Column.";
998
- readonly validationSummaryNeedsRows: "Summary reports need at least one grouping field.";
999
- readonly blocks: "Blocks";
1000
- readonly blocksHint: "Each block is its own table or chart. Block-level filters are ANDed with the report filter.";
1001
- readonly addBlock: "Add block";
1002
- readonly removeBlock: "Remove block";
1003
- readonly blockName: "Block name";
1004
- readonly blockNamePlaceholder: "unique_block_name";
1005
- readonly blockLabel: "Display label";
1006
- readonly blockLabelPlaceholder: "Shown above the block";
1007
- readonly blockDescription: "Description";
1008
- readonly blockDescriptionPlaceholder: "Optional context for this block";
1009
- readonly validationJoinedNeedsBlocks: "Joined reports need at least one block.";
1010
- readonly validationBlockNameRequired: "Every block needs a non-empty name.";
1011
- readonly validationBlockNameDuplicate: "Block names must be unique within the report.";
1012
- readonly validationBlockNeedsColumns: "Every block needs at least one column.";
1013
- readonly noneOption: "(none)";
1014
- readonly addCondition: "Add condition";
1015
- readonly combineLogic: "Combine with";
1016
- readonly opContains: "contains";
1017
- readonly opIsEmpty: "is empty";
1018
- readonly opIsNotEmpty: "is not empty";
1019
- readonly formatAuto: "Auto";
1020
- readonly formatCurrency: "Currency";
1021
- readonly formatPercent: "Percent";
1022
- readonly formatInteger: "Integer";
1023
- readonly formatDate: "Date";
1024
- readonly formatDatetime: "Date & time";
1025
- readonly columnLabelPlaceholder: "Label override";
1026
- readonly aggregateColumn: "Aggregate";
1027
- readonly formatColumn: "Format";
1028
- readonly addColumns: "Add fields";
1029
- readonly searchFields: "Search fields…";
1030
- readonly noMatchingFields: "No fields match your search.";
1031
- readonly noFieldsAvailable: "No fields available.";
1032
- readonly columnsCount: "{n} column(s) selected";
1033
- readonly columnsEmpty: "No columns selected yet.";
1034
- readonly fieldPickerTitle: "Select fields";
1035
- readonly fieldPickerDescription: "Pick one or more fields to add. Use the search box to narrow the list.";
1036
- readonly fieldPickerChangeTitle: "Change field";
1037
- readonly fieldPickerAddGroupingTitle: "Add grouping";
1038
- readonly fieldPickerEmpty: "(pick field)";
1039
- readonly fieldPickerSelected: "{n} selected";
1040
- readonly fieldPickerClear: "Clear selection";
1041
- readonly fieldPickerAdd: "Add";
1042
- readonly fieldPickerAddN: "Add {n}";
1037
+ readonly panelTitle: "Edit report";
1043
1038
  };
1044
1039
  };
1045
1040
  readonly map: {
@@ -1049,66 +1044,6 @@ declare const en: {
1049
1044
  readonly invalidCoordinates: "{{count}} record with missing or invalid coordinates excluded from the map.";
1050
1045
  readonly invalidCoordinatesPlural: "{{count}} records with missing or invalid coordinates excluded from the map.";
1051
1046
  };
1052
- readonly workflow: {
1053
- readonly draft: "Draft";
1054
- readonly active: "Active";
1055
- readonly paused: "Paused";
1056
- readonly completed: "Completed";
1057
- readonly cancelled: "Cancelled";
1058
- readonly save: "Save";
1059
- readonly publish: "Publish";
1060
- readonly addNode: "Add Node";
1061
- readonly workflowFlow: "Workflow Flow";
1062
- readonly properties: "Properties";
1063
- readonly connections: "Connections";
1064
- readonly quickConnect: "Quick Connect";
1065
- readonly fromPlaceholder: "From...";
1066
- readonly toPlaceholder: "To...";
1067
- readonly connect: "Connect";
1068
- readonly label: "Label";
1069
- readonly type: "Type";
1070
- readonly description: "Description";
1071
- readonly assignee: "Assignee";
1072
- readonly assigneeType: "Assignee Type";
1073
- readonly user: "User";
1074
- readonly role: "Role";
1075
- readonly group: "Group";
1076
- readonly expression: "Expression";
1077
- readonly timeoutMinutes: "Timeout (minutes)";
1078
- readonly selectNodeToEdit: "Select a node to edit its properties";
1079
- readonly workflowTitle: "Workflow Title";
1080
- readonly newWorkflow: "New Workflow";
1081
- readonly outConnections: "{{count}} out";
1082
- readonly start: "Start";
1083
- readonly end: "End";
1084
- readonly task: "Task";
1085
- readonly userTask: "User Task";
1086
- readonly serviceTask: "Service Task";
1087
- readonly scriptTask: "Script Task";
1088
- readonly approval: "Approval";
1089
- readonly condition: "Condition";
1090
- readonly parallelGateway: "Parallel Gateway";
1091
- readonly joinGateway: "Join Gateway";
1092
- readonly boundaryEvent: "Boundary Event";
1093
- readonly delay: "Delay";
1094
- readonly notification: "Notification";
1095
- readonly webhook: "Webhook";
1096
- readonly allowConcurrency: "Allow (run concurrently)";
1097
- readonly forbidConcurrency: "Forbid (skip new)";
1098
- readonly replaceConcurrency: "Replace (cancel existing)";
1099
- readonly queueConcurrency: "Queue (run after current)";
1100
- readonly conditionEvent: "Condition";
1101
- readonly manualEvent: "Manual";
1102
- readonly webhookEvent: "Webhook";
1103
- readonly timerEvent: "Timer";
1104
- readonly signalEvent: "Signal";
1105
- readonly versionHistory: "Version History";
1106
- readonly importBpmn: "Import BPMN";
1107
- readonly exportBpmn: "Export BPMN";
1108
- readonly undo: "Undo";
1109
- readonly redo: "Redo";
1110
- readonly resetZoom: "Reset zoom";
1111
- };
1112
1047
  readonly designer: {
1113
1048
  readonly undo: "Undo";
1114
1049
  readonly redo: "Redo";
@@ -1123,11 +1058,111 @@ declare const en: {
1123
1058
  readonly noDataAvailable: "No data available";
1124
1059
  readonly noDataSourceFor: "No data source available for";
1125
1060
  readonly noRows: "No rows";
1061
+ readonly loading: "Loading…";
1126
1062
  readonly pickMeasures: "Pick measures (values) for this dataset widget.";
1127
1063
  readonly datasetUnsupported: "This data source does not support dataset queries.";
1128
1064
  readonly details: "Details";
1129
1065
  readonly exportCsv: "Export CSV";
1130
1066
  readonly openInList: "Open in list";
1067
+ readonly config: {
1068
+ readonly breadcrumb: {
1069
+ readonly dashboard: "Dashboard";
1070
+ readonly configuration: "Configuration";
1071
+ readonly widget: "Widget";
1072
+ readonly chart: "Chart";
1073
+ readonly table: "Table";
1074
+ readonly pivotTable: "Pivot table";
1075
+ };
1076
+ readonly section: {
1077
+ readonly general: "General";
1078
+ readonly layout: "Layout";
1079
+ readonly data: "Data";
1080
+ readonly dataBinding: "Data Binding";
1081
+ readonly appearance: "Appearance";
1082
+ };
1083
+ readonly field: {
1084
+ readonly title: "Title";
1085
+ readonly description: "Description";
1086
+ readonly columns: "Columns";
1087
+ readonly gap: "Gap";
1088
+ readonly rowHeight: "Row height (px)";
1089
+ readonly autoRefresh: "Auto refresh";
1090
+ readonly showDescription: "Show description";
1091
+ readonly theme: "Theme";
1092
+ readonly widgetType: "Widget type";
1093
+ readonly colorVariant: "Color variant";
1094
+ readonly dataset: "Dataset";
1095
+ readonly dimensions: "Dimensions";
1096
+ readonly values: "Values";
1097
+ readonly width: "Width (columns)";
1098
+ readonly height: "Height (rows)";
1099
+ };
1100
+ readonly placeholder: {
1101
+ readonly dashboardTitle: "Dashboard title";
1102
+ readonly dashboardDescription: "Short summary shown under the title";
1103
+ readonly widgetTitle: "Widget title";
1104
+ readonly widgetDescription: "Widget description";
1105
+ readonly datasetName: "Dataset name";
1106
+ readonly selectDataset: "Select dataset…";
1107
+ readonly searchDatasets: "Search datasets…";
1108
+ readonly addDimension: "Add dimension…";
1109
+ readonly addMeasure: "Add measure…";
1110
+ readonly searchMembers: "Search…";
1111
+ };
1112
+ readonly empty: {
1113
+ readonly datasets: "No datasets found.";
1114
+ readonly dimensions: "No dimensions selected.";
1115
+ readonly measures: "No measures selected.";
1116
+ readonly nothingToAdd: "Nothing left to add.";
1117
+ };
1118
+ readonly help: {
1119
+ readonly dataset: "The semantic-layer dataset this widget binds to (ADR-0021).";
1120
+ readonly dimensions: "Group/split the values by these dataset dimensions.";
1121
+ readonly dimensionsPivot: "Group/split fields. The last dimension spreads across as columns.";
1122
+ readonly values: "Measure(s) from the dataset to display (at least one).";
1123
+ };
1124
+ readonly action: {
1125
+ readonly add: "Add";
1126
+ readonly remove: "Remove {{name}}";
1127
+ };
1128
+ readonly refresh: {
1129
+ readonly off: "Off";
1130
+ readonly every30s: "Every 30s";
1131
+ readonly every1m: "Every 1 min";
1132
+ readonly every5m: "Every 5 min";
1133
+ readonly every15m: "Every 15 min";
1134
+ readonly every30m: "Every 30 min";
1135
+ readonly every1h: "Every 1 hour";
1136
+ };
1137
+ readonly themeOption: {
1138
+ readonly light: "Light";
1139
+ readonly dark: "Dark";
1140
+ readonly auto: "Auto";
1141
+ };
1142
+ readonly widgetType: {
1143
+ readonly metric: "Metric";
1144
+ readonly bar: "Bar Chart";
1145
+ readonly horizontalBar: "Horizontal Bar";
1146
+ readonly line: "Line Chart";
1147
+ readonly pie: "Pie Chart";
1148
+ readonly donut: "Donut Chart";
1149
+ readonly area: "Area Chart";
1150
+ readonly scatter: "Scatter Plot";
1151
+ readonly funnel: "Funnel";
1152
+ readonly table: "Table";
1153
+ readonly pivot: "Pivot Table";
1154
+ };
1155
+ readonly color: {
1156
+ readonly default: "Default";
1157
+ readonly blue: "Blue";
1158
+ readonly teal: "Teal";
1159
+ readonly orange: "Orange";
1160
+ readonly purple: "Purple";
1161
+ readonly success: "Success";
1162
+ readonly warning: "Warning";
1163
+ readonly danger: "Danger";
1164
+ };
1165
+ };
1131
1166
  readonly trend: {
1132
1167
  readonly vsLastQuarter: "vs last quarter";
1133
1168
  readonly vsLastMonth: "vs last month";
@@ -1160,24 +1195,6 @@ declare const en: {
1160
1195
  };
1161
1196
  };
1162
1197
  };
1163
- readonly configPanel: {
1164
- readonly save: "Save";
1165
- readonly discard: "Discard";
1166
- readonly close: "Close";
1167
- readonly layout: "Layout";
1168
- readonly columns: "Columns";
1169
- readonly gap: "Gap";
1170
- readonly rowHeight: "Row height";
1171
- readonly data: "Data";
1172
- readonly refreshInterval: "Refresh interval";
1173
- readonly appearance: "Appearance";
1174
- readonly title: "Title";
1175
- readonly showDescription: "Show description";
1176
- readonly theme: "Theme";
1177
- readonly configuration: "Configuration";
1178
- readonly general: "General";
1179
- readonly advanced: "Advanced";
1180
- };
1181
1198
  readonly appDesigner: {
1182
1199
  readonly createApp: "Create Application";
1183
1200
  readonly editApp: "Edit Application";
@@ -1228,8 +1245,6 @@ declare const en: {
1228
1245
  readonly showSort: "Show Sort";
1229
1246
  readonly appearance: "Appearance";
1230
1247
  readonly rowHeight: "Row Height";
1231
- readonly stripedRows: "Striped Rows";
1232
- readonly bordered: "Bordered";
1233
1248
  readonly livePreview: "Live Preview";
1234
1249
  readonly stepBasicDesc: "Name, title, and layout";
1235
1250
  readonly stepObjectsDesc: "Select business objects";
@@ -1343,7 +1358,6 @@ declare const en: {
1343
1358
  readonly unique: "Unique";
1344
1359
  readonly readOnly: "Read Only";
1345
1360
  readonly hidden: "Hidden";
1346
- readonly indexed: "Indexed";
1347
1361
  readonly externalId: "External ID";
1348
1362
  readonly trackHistory: "Track History";
1349
1363
  readonly defaultValue: "Default Value";
@@ -1372,8 +1386,9 @@ declare const en: {
1372
1386
  };
1373
1387
  };
1374
1388
  readonly console: {
1389
+ readonly saveAdvisoryTitle: "Saved — the authoring check raised {{count}} advisory finding(s)";
1375
1390
  readonly title: "ObjectOS";
1376
- readonly initializing: "Initializing application...";
1391
+ readonly initializing: "Initializing application…";
1377
1392
  readonly search: "Search…";
1378
1393
  readonly breadcrumb: {
1379
1394
  readonly dashboards: "Dashboards";
@@ -1403,6 +1418,28 @@ declare const en: {
1403
1418
  readonly Other: "Other";
1404
1419
  };
1405
1420
  };
1421
+ readonly settingsView: {
1422
+ readonly backToHub: "All settings";
1423
+ readonly back: "Back";
1424
+ readonly noNamespace: "No namespace selected.";
1425
+ readonly loadError: "Failed to load settings";
1426
+ readonly saved: "Settings saved";
1427
+ readonly saveFailed: "Save failed";
1428
+ readonly lockedByEnv: "Locked by environment: {{key}}";
1429
+ readonly lockedByEnvNoKey: "Locked by environment";
1430
+ readonly actionSucceeded: "Action succeeded";
1431
+ readonly actionFailed: "Action failed";
1432
+ readonly discard: "Discard";
1433
+ readonly saveChanges: "Save changes";
1434
+ readonly unsavedCount: "{{count}} unsaved changes";
1435
+ readonly unsavedCount_one: "{{count}} unsaved change";
1436
+ readonly unsavedCount_other: "{{count}} unsaved changes";
1437
+ readonly cryptoRefusalTitle: "This deployment cannot encrypt secrets";
1438
+ readonly cryptoRefusalSubjectSuffix: "is declared encrypted, so nothing was written.";
1439
+ readonly cryptoRefusalNoSubject: "The declared-encrypted value was refused, so nothing was written.";
1440
+ readonly cryptoRefusalToast: "Cannot encrypt secrets: {{subject}}";
1441
+ readonly cryptoRefusalToastNoSubject: "Cannot encrypt secrets";
1442
+ };
1406
1443
  readonly loadingSteps: {
1407
1444
  readonly connecting: "Connecting to data source";
1408
1445
  readonly loadingConfig: "Loading configuration";
@@ -1433,6 +1470,7 @@ declare const en: {
1433
1470
  readonly general: "General";
1434
1471
  readonly navigation: "Navigation";
1435
1472
  readonly dataViews: "Data Views";
1473
+ readonly aiChat: "AI assistant";
1436
1474
  readonly preferences: "Preferences";
1437
1475
  };
1438
1476
  readonly openCommandPalette: "Open command palette";
@@ -1443,11 +1481,13 @@ declare const en: {
1443
1481
  readonly createRecord: "Create new record";
1444
1482
  readonly refreshData: "Refresh data";
1445
1483
  readonly editRecord: "Edit selected record";
1484
+ readonly newChat: "New chat";
1485
+ readonly toggleChatsList: "Toggle conversations list";
1446
1486
  readonly toggleDarkMode: "Toggle dark mode";
1447
1487
  };
1448
1488
  readonly commandPalette: {
1449
1489
  readonly title: "Command palette";
1450
- readonly placeholder: "Type a command or search...";
1490
+ readonly placeholder: "Type a command or search…";
1451
1491
  readonly noResults: "No results found.";
1452
1492
  readonly searching: "Searching…";
1453
1493
  readonly records: "Records";
@@ -1467,6 +1507,13 @@ declare const en: {
1467
1507
  readonly createApp: "Create New App";
1468
1508
  };
1469
1509
  readonly ai: {
1510
+ readonly pendingDrafts: {
1511
+ readonly count: "{{count}} change(s) are not published yet — users cannot see them.";
1512
+ readonly publish: "Publish";
1513
+ readonly published: "All pending changes are live.";
1514
+ readonly failed: "Publish failed.";
1515
+ readonly publishedWithFindings: "Published, but the runtime probes reported problems: {{detail}}";
1516
+ };
1470
1517
  readonly usage: {
1471
1518
  readonly title: "AI usage";
1472
1519
  readonly meterBuild: "Build";
@@ -1489,7 +1536,7 @@ declare const en: {
1489
1536
  readonly shareTitle: "Share this conversation";
1490
1537
  readonly shareDisabledTitle: "Start chatting to enable sharing";
1491
1538
  readonly newChat: "New";
1492
- readonly searchChats: "Search chats...";
1539
+ readonly searchChats: "Search chats…";
1493
1540
  readonly noChatsYet: "No chats yet";
1494
1541
  readonly noChatsDescription: "Start a new conversation to see it here.";
1495
1542
  readonly noMatchingChats: "No matching chats.";
@@ -1498,18 +1545,18 @@ declare const en: {
1498
1545
  readonly deleteConversation: "Delete conversation";
1499
1546
  readonly saveRename: "Save rename";
1500
1547
  readonly cancelRename: "Cancel rename";
1501
- readonly loadingHistory: "Loading conversation history...";
1548
+ readonly loadingHistory: "Loading conversation history…";
1502
1549
  readonly conversationReady: "Conversation ready";
1503
1550
  readonly preparingConversation: "Preparing a new conversation";
1504
1551
  readonly offlineDemoMode: "Offline demo mode — agent list unavailable";
1505
1552
  readonly sendFailedRateLimited: "You're sending messages too quickly. Your message is kept below — wait a moment and try again.";
1506
1553
  readonly sendFailedGeneric: "Couldn't send your message. It's kept below — please try again.";
1507
- readonly askAgent: "Ask {{agent}}...";
1554
+ readonly askAgent: "Ask {{agent}}…";
1508
1555
  readonly assistant: "Assistant";
1509
1556
  readonly liveCanvas: "Live preview — {{app}} (draft)";
1510
1557
  readonly liveCanvasUnlisted: "Live app — {{app}} (unlisted until published)";
1511
- readonly loadingAgents: "Loading agents...";
1512
- readonly askAnything: "Ask anything...";
1558
+ readonly loadingAgents: "Loading agents…";
1559
+ readonly askAnything: "Ask anything…";
1513
1560
  readonly emptyTitle: "Start a conversation";
1514
1561
  readonly emptyDescription: "Ask anything — the assistant has access to your current app context.";
1515
1562
  readonly switchAssistant: "Switch assistant";
@@ -1570,6 +1617,11 @@ declare const en: {
1570
1617
  readonly changesConfirmed: "Confirmed";
1571
1618
  readonly changesConfirm: "Confirm";
1572
1619
  readonly changesConfirmHint: "Reply to confirm or adjust this change.";
1620
+ readonly changesApplying: "Applying…";
1621
+ readonly changesApplied: "Applied";
1622
+ readonly changesDrafted: "Saved as draft";
1623
+ readonly changesFailed: "Not applied";
1624
+ readonly discussing: "Discussing: {{target}}";
1573
1625
  readonly changesConfirmMessage: "Confirm — apply the change you just proposed.";
1574
1626
  readonly changeVerb: {
1575
1627
  readonly createObject: "Create object";
@@ -1616,6 +1668,52 @@ declare const en: {
1616
1668
  readonly addAutomation: "Add an automation — an approval, a status flow, or a notification.";
1617
1669
  };
1618
1670
  };
1671
+ readonly collapseToDock: "Collapse to side panel";
1672
+ readonly switchApp: "Switch app";
1673
+ readonly switchAppLabel: "Build conversations by app";
1674
+ readonly newApp: "New app";
1675
+ readonly connectionWaiting: "Waiting for server…";
1676
+ readonly connectionStalled: "Still working…";
1677
+ readonly connectionOffline: "Connection lost — reconnecting…";
1678
+ readonly designingPlan: "Designing your app…";
1679
+ readonly designingPlanHint: {
1680
+ readonly data: "Mapping out the data you’ll track…";
1681
+ readonly objects: "Shaping objects and their fields…";
1682
+ readonly relations: "Connecting related records…";
1683
+ readonly lookups: "Setting up relationships and lookups…";
1684
+ readonly views: "Planning the screens and views…";
1685
+ readonly forms: "Laying out forms and lists…";
1686
+ readonly defaults: "Adding sensible defaults and validations…";
1687
+ readonly dashboard: "Sketching a dashboard to track it…";
1688
+ readonly review: "Double-checking the structure hangs together…";
1689
+ readonly finalize: "Pulling the plan together…";
1690
+ };
1691
+ readonly planBuilding: "Building…";
1692
+ readonly planBuilt: "Built";
1693
+ readonly planDeferred: "Not yet built";
1694
+ readonly planReady: "The plan is ready. Build it now, or tell me what to adjust.";
1695
+ readonly published: "Published";
1696
+ readonly publishFailed: "Publish failed";
1697
+ readonly unavailableTitle: "AI assistant unavailable";
1698
+ readonly unavailableDescription: "This deployment doesn't have an AI assistant enabled. Everything else works as usual.";
1699
+ readonly unavailableError: "Couldn't reach the AI service. It may be temporarily offline — try again, or head back home.";
1700
+ readonly unavailableRetry: "Try again";
1701
+ readonly unavailableHome: "Back to home";
1702
+ readonly dock: {
1703
+ readonly title: "Assistant";
1704
+ readonly description: "AI assistant chat";
1705
+ readonly resize: "Resize chat";
1706
+ readonly collapse: "Collapse chat";
1707
+ readonly maximize: "Open full page";
1708
+ readonly open: "Open assistant";
1709
+ };
1710
+ readonly group: {
1711
+ readonly today: "Today";
1712
+ readonly yesterday: "Yesterday";
1713
+ readonly previous7Days: "Previous 7 days";
1714
+ readonly previous30Days: "Previous 30 days";
1715
+ readonly older: "Older";
1716
+ };
1619
1717
  };
1620
1718
  readonly errors: {
1621
1719
  readonly somethingWentWrong: "Something went wrong";
@@ -1624,6 +1722,11 @@ declare const en: {
1624
1722
  readonly goHome: "Go Home";
1625
1723
  readonly errorDetails: "Error Details (dev only)";
1626
1724
  };
1725
+ readonly notFound: {
1726
+ readonly title: "Page not found";
1727
+ readonly description: "The URL you followed does not match any view in this app.";
1728
+ readonly back: "Go back";
1729
+ };
1627
1730
  readonly theme: {
1628
1731
  readonly toggle: "Toggle theme";
1629
1732
  readonly light: "Light";
@@ -1664,66 +1767,22 @@ declare const en: {
1664
1767
  readonly filterOrNotSavable: "This filter uses OR between conditions, which a saved view cannot store yet. It still applies to this list — remove the OR grouping to save it to the view.";
1665
1768
  readonly filterNestedNotSavable: "This filter uses nested condition groups, which a saved view cannot store. Flatten it to a single list of conditions to save it to the view.";
1666
1769
  readonly systemViewReadonly: "System view defined in code — read-only.";
1770
+ readonly cannotEditMetaView: "This view is built in and defined in code — it cannot be changed.";
1771
+ readonly cannotDeleteMetaView: "This view is built in and defined in code — it cannot be deleted.";
1667
1772
  readonly expandToPage: "Open as full page";
1668
1773
  readonly allRecords: "All Records";
1669
- readonly exitDesignMode: "Exit Design Mode";
1670
- readonly enterDesignMode: "Enter Design Mode";
1671
- readonly metadataInspector: "Metadata Inspector";
1672
- readonly editView: "Edit View";
1673
- readonly addView: "Add View";
1674
- readonly designTools: "Design tools";
1675
1774
  readonly new: "New";
1676
1775
  readonly import: "Import";
1677
1776
  readonly importTitle: "Import from CSV";
1678
1777
  readonly importedToast: "Imported {{count}} row(s).";
1679
1778
  readonly importedWithSkipped: "Imported {{ok}} row(s); skipped {{skipped}}.";
1680
1779
  readonly configureView: "Configure View";
1681
- readonly closePanel: "Close panel";
1682
- readonly showAdvancedSettings: "Show advanced settings";
1683
- readonly showFewerSettings: "Show fewer settings";
1684
- readonly page: "Page";
1685
- readonly pageConfigHint: "Toolbar, navigation & view shell settings";
1686
- readonly listConfigHint: "Data rendering, columns & appearance for this list type";
1687
- readonly general: "General";
1688
- readonly generalHint: "View title, description, and type";
1689
1780
  readonly toolbar: "Toolbar";
1690
- readonly toolbarHint: "Search, filter, sort, group, and density toggles";
1691
1781
  readonly toolbarEnabledCount: "{{count}} of {{total}} enabled";
1692
- readonly navigationSection: "Navigation";
1693
- readonly navigationHint: "Row click behavior and detail view settings";
1694
- readonly records: "Records";
1695
- readonly recordsHint: "Selection mode, add record, and inline editing";
1696
- readonly exportPrint: "Export & Print";
1697
- readonly exportPrintHint: "Export formats, printing, and record count display";
1698
- readonly showAllFields: "Show All";
1699
- readonly hideAllFields: "Hide All";
1700
- readonly searchFields: "Search fields...";
1782
+ readonly searchFields: "Search fields…";
1701
1783
  readonly title: "Title";
1702
- readonly description: "Description";
1703
- readonly data: "Data";
1704
- readonly source: "Source";
1705
- readonly columns: "Columns";
1706
- readonly filterBy: "Filter by";
1707
- readonly sortBy: "Sort by";
1708
- readonly appearance: "Appearance";
1709
- readonly showDescription: "Show description";
1710
1784
  readonly viewType: "View type";
1711
- readonly userFilters: "User filters";
1712
- readonly enableSearch: "Enable search";
1713
- readonly enableFilter: "Enable filter";
1714
- readonly enableSort: "Enable sort";
1715
- readonly enableHideFields: "Enable hide fields";
1716
- readonly enableGroup: "Enable group";
1717
- readonly enableColor: "Enable color";
1718
- readonly enableDensity: "Enable density";
1719
- readonly userActions: "User actions";
1720
- readonly addRecordViaForm: "Add records through a form";
1721
- readonly advanced: "Advanced";
1722
- readonly allowExport: "Allow export";
1723
1785
  readonly recordCount: "{{count}} records";
1724
- readonly noDescription: "No description";
1725
- readonly none: "None";
1726
- readonly columnsConfigured: "{{count}} columns";
1727
1786
  readonly save: "Save";
1728
1787
  readonly discard: "Discard";
1729
1788
  readonly createView: "Create View";
@@ -1760,7 +1819,6 @@ declare const en: {
1760
1819
  readonly viewNameHelp: "Machine key (snake_case). Auto-filled from the title — edit if you like.";
1761
1820
  readonly viewNameRequired: "Enter a key (lowercase letters, numbers, underscore). Not auto-filled for non-Latin titles.";
1762
1821
  readonly viewNameInvalid: "Use lowercase letters, numbers and underscores; start with a letter or underscore.";
1763
- readonly typeOptions: "Type Options";
1764
1822
  readonly groupByField: "Group by field";
1765
1823
  readonly groupByFieldHelp: "The kanban groups records into columns by this field's values.";
1766
1824
  readonly startDateField: "Start date field";
@@ -1775,9 +1833,8 @@ declare const en: {
1775
1833
  readonly longitudeFieldHelp: "Field providing the longitude coordinate (geo fields only).";
1776
1834
  readonly imageField: "Image field";
1777
1835
  readonly imageFieldHelp: "The gallery cover comes from this image or attachment field.";
1778
- readonly dateField: "Date field";
1779
- readonly selectField: "Select field...";
1780
- readonly selectOption: "Select...";
1836
+ readonly selectField: "Select field…";
1837
+ readonly selectOption: "Select…";
1781
1838
  readonly noEligibleFieldForType: "No eligible field of this type. Add one to the object first.";
1782
1839
  readonly viewTypeUnavailable: "This object has no field that can serve as \"{{field}}\".";
1783
1840
  readonly viewTypeUnavailableShort: "Not supported by this object.";
@@ -1792,82 +1849,11 @@ declare const en: {
1792
1849
  readonly xAxisFieldHelp: "The categorical or time dimension.";
1793
1850
  readonly yAxisField: "Y-axis field";
1794
1851
  readonly yAxisFieldHelp: "The numeric field to aggregate.";
1795
- readonly gridOptionsHint: "Grid view uses the columns configured above.";
1796
1852
  readonly groupBy: "Group by";
1797
- readonly prefixField: "Prefix field";
1798
- readonly fields: "Fields";
1799
- readonly fieldsVisible: "{{count}} visible";
1800
- readonly sortsCount: "{{count}} sorts";
1801
- readonly filtersCount: "{{count}} filters";
1802
1853
  readonly endDateField: "End date field";
1803
- readonly color: "Color";
1804
- readonly fieldTextColor: "Field text color";
1805
- readonly rowHeight: "Row height";
1806
- readonly wrapHeaders: "Wrap headers";
1807
- readonly showFieldDescriptions: "Show field descriptions";
1808
- readonly collapseAllByDefault: "Collapse all by default";
1809
- readonly striped: "Striped rows";
1810
- readonly bordered: "Bordered cells";
1811
- readonly inlineEdit: "Edit records inline";
1812
- readonly addDeleteRecordsInline: "Add/delete records inline";
1813
- readonly clickIntoRecordDetails: "Click into record details";
1814
- readonly navigationMode: "Navigation mode";
1815
- readonly navigationWidth: "Navigation width";
1816
- readonly navigationWidthHint: "Available for drawer, modal, and split navigation modes";
1817
- readonly openNewTab: "Open in new tab";
1818
- readonly openNewTabHint: "Available for page and new window navigation modes";
1819
- readonly selectionMode: "Selection mode";
1820
- readonly selectionNone: "None";
1821
- readonly selectionSingle: "Single";
1822
- readonly selectionMultiple: "Multiple";
1823
- readonly pageSize: "Page size";
1824
- readonly pageSizeOptions: "Page size options";
1825
- readonly exportFormats: "Export formats";
1826
- readonly exportMaxRecords: "Max records";
1827
- readonly exportIncludeHeaders: "Include headers";
1828
- readonly exportFileNamePrefix: "File name prefix";
1829
- readonly searchableFields: "Searchable fields";
1830
- readonly filterableFields: "Filterable fields";
1831
- readonly resizableColumns: "Resizable columns";
1832
- readonly densityCompact: "Compact";
1833
- readonly densityComfortable: "Comfortable";
1834
- readonly densitySpacious: "Spacious";
1835
- readonly densityMode: "Density mode";
1836
- readonly hiddenFields: "Hidden fields";
1837
- readonly rowActions: "Row actions";
1838
- readonly bulkActions: "Bulk actions";
1839
- readonly sharing: "Sharing";
1840
- readonly sharingEnabled: "Enable sharing";
1841
- readonly sharingVisibility: "Visibility";
1842
- readonly addRecordEnabled: "Enable add record";
1843
- readonly addRecordPosition: "Position";
1844
- readonly addRecordMode: "Mode";
1845
- readonly addRecordFormView: "Form view";
1846
- readonly conditionalFormatting: "Conditional formatting";
1847
- readonly addRule: "Add rule";
1848
- readonly quickFilters: "Quick filters";
1849
- readonly addQuickFilter: "Add quick filter";
1850
- readonly ufElements: "Elements";
1851
- readonly ufDropdown: "Dropdown";
1852
1854
  readonly ufTabs: "Tabs";
1853
- readonly ufToggle: "Toggle";
1854
- readonly ufAddField: "+ Add filter field...";
1855
- readonly ufNoFields: "No fields available";
1856
- readonly ufAddTab: "+ Add tab";
1857
- readonly ufTabLabel: "Label";
1855
+ readonly ufAddField: "+ Add filter field…";
1858
1856
  readonly ufShowAllRecords: "Show \"All records\" tab";
1859
- readonly ufAllowAddTab: "Allow adding tabs";
1860
- readonly showRecordCount: "Show record count";
1861
- readonly allowPrinting: "Allow printing";
1862
- readonly virtualScroll: "Virtual scroll";
1863
- readonly emptyStateTitle: "Empty state title";
1864
- readonly emptyStateMessage: "Empty state message";
1865
- readonly emptyStateIcon: "Empty state icon";
1866
- readonly ariaLabel: "ARIA label";
1867
- readonly ariaDescribedBy: "ARIA described by";
1868
- readonly ariaLive: "ARIA live";
1869
- readonly accessibility: "Accessibility";
1870
- readonly viewTabs: "View Tabs";
1871
1857
  };
1872
1858
  readonly localeSwitcher: {
1873
1859
  readonly label: "Language";
@@ -1883,11 +1869,21 @@ declare const en: {
1883
1869
  readonly passwordPlaceholder: "Enter your password";
1884
1870
  readonly forgotPasswordText: "Forgot password?";
1885
1871
  readonly submitButton: "Sign In";
1886
- readonly submittingButton: "Signing in...";
1872
+ readonly submittingButton: "Signing in…";
1887
1873
  readonly noAccountText: "Don't have an account?";
1888
1874
  readonly signUpText: "Sign up";
1889
1875
  readonly signingIn: "Signing you in…";
1890
1876
  readonly ssoHandoff: "Continue to {{target}}";
1877
+ readonly emailOrPhoneLabel: "Email or phone number";
1878
+ readonly emailOrPhonePlaceholder: "name@example.com or +1 555 000 0000";
1879
+ readonly phoneLabel: "Phone number";
1880
+ readonly phonePlaceholder: "+1 555 000 0000";
1881
+ readonly otpCodeLabel: "Verification code";
1882
+ readonly otpCodePlaceholder: "6-digit code";
1883
+ readonly sendOtpButton: "Get code";
1884
+ readonly resendOtpCountdownText: "Resend in {seconds}s";
1885
+ readonly usePhoneOtpText: "Sign in with verification code";
1886
+ readonly usePasswordSignInText: "Sign in with password instead";
1891
1887
  readonly devAdminHint: {
1892
1888
  readonly title: "Development instance";
1893
1889
  readonly body: "Sign in with the seeded dev admin:";
@@ -1913,7 +1909,7 @@ declare const en: {
1913
1909
  readonly passwordMismatchError: "Passwords do not match";
1914
1910
  readonly passwordTooShortError: "Password must be at least 8 characters";
1915
1911
  readonly submitButton: "Create Account";
1916
- readonly submittingButton: "Creating account...";
1912
+ readonly submittingButton: "Creating account…";
1917
1913
  readonly hasAccountText: "Already have an account?";
1918
1914
  readonly signInText: "Sign in";
1919
1915
  readonly errors: {
@@ -1934,12 +1930,25 @@ declare const en: {
1934
1930
  readonly emailLabel: "Email";
1935
1931
  readonly emailPlaceholder: "name@example.com";
1936
1932
  readonly submitButton: "Send Reset Link";
1937
- readonly submittingButton: "Sending...";
1933
+ readonly submittingButton: "Sending…";
1938
1934
  readonly successTitle: "Check your email";
1939
- readonly successDescription: "We've sent a password reset link to {{email}}. Please check your inbox.";
1935
+ readonly successDescription: "We've sent a password reset link to {email}. Please check your inbox.";
1940
1936
  readonly backToSignInText: "Back to sign in";
1941
1937
  readonly rememberPasswordText: "Remember your password?";
1942
1938
  readonly signInText: "Sign in";
1939
+ readonly phoneLabel: "Phone number";
1940
+ readonly phonePlaceholder: "+1 555 000 0000";
1941
+ readonly otpCodeLabel: "Verification code";
1942
+ readonly otpCodePlaceholder: "6-digit code";
1943
+ readonly sendOtpButton: "Get code";
1944
+ readonly resendOtpCountdownText: "Resend in {seconds}s";
1945
+ readonly newPasswordLabel: "New password";
1946
+ readonly newPasswordPlaceholder: "Enter a new password";
1947
+ readonly resetButton: "Reset Password";
1948
+ readonly usePhoneResetText: "Reset via SMS code";
1949
+ readonly useEmailResetText: "Reset via email instead";
1950
+ readonly phoneSuccessTitle: "Password reset";
1951
+ readonly phoneSuccessDescription: "Your password has been reset. You can now sign in with your new password.";
1943
1952
  };
1944
1953
  readonly resetPassword: {
1945
1954
  readonly title: "Set a new password";
@@ -1973,6 +1982,7 @@ declare const en: {
1973
1982
  readonly resentSuccess: "Verification email sent!";
1974
1983
  readonly resentDescription: "Please check your inbox and click the verification link.";
1975
1984
  readonly resendFailed: "Cannot resend verification email";
1985
+ readonly resendUnavailable: "Email delivery may not be configured for this environment. Contact support if this persists.";
1976
1986
  readonly signInLink: "Go to sign in";
1977
1987
  readonly backToSignIn: "Back to sign in";
1978
1988
  readonly backToLogin: "Back to login";
@@ -2014,6 +2024,8 @@ declare const en: {
2014
2024
  readonly denyFailed: "Failed to deny request";
2015
2025
  readonly invalidTitle: "Invalid device link";
2016
2026
  readonly invalidDescription: "No device code was provided in the URL.";
2027
+ readonly disabledTitle: "Device authorization not enabled";
2028
+ readonly disabledDescription: "This deployment does not have device authorization enabled, so this device cannot be approved here.";
2017
2029
  readonly loading: "Loading…";
2018
2030
  readonly cancel: "Cancel";
2019
2031
  };
@@ -2069,6 +2081,28 @@ declare const en: {
2069
2081
  };
2070
2082
  };
2071
2083
  };
2084
+ readonly oauth: {
2085
+ readonly consent: {
2086
+ readonly title: "{{appName}} wants to access your account";
2087
+ readonly request: "{{appName}} is requesting permission{{suffix}}.";
2088
+ readonly unknownApp: "an application";
2089
+ readonly willAllow: "This app will be able to:";
2090
+ readonly scope: {
2091
+ readonly openid: "Confirm your identity";
2092
+ readonly profile: "Read your basic profile (name, picture)";
2093
+ readonly email: "Read your email address";
2094
+ readonly offlineAccess: "Stay signed in (refresh access)";
2095
+ };
2096
+ readonly deny: "Deny";
2097
+ readonly authorize: "Authorize";
2098
+ readonly submitting: "Authorizing…";
2099
+ readonly granted: "Access granted";
2100
+ readonly denied: "Access denied";
2101
+ readonly noRedirect: "No redirect URL returned by the server.";
2102
+ readonly failed: "Consent failed";
2103
+ readonly footer: "You can revoke access at any time from your account settings.";
2104
+ };
2105
+ };
2072
2106
  readonly profile: {
2073
2107
  readonly title: "Profile";
2074
2108
  readonly subtitle: "Manage your account settings";
@@ -2130,6 +2164,8 @@ declare const en: {
2130
2164
  readonly invite: "Invite member";
2131
2165
  readonly members: "Members";
2132
2166
  readonly settings: "Workspace settings";
2167
+ readonly multiOrgDisabled: "Creating new organizations is disabled on this instance.";
2168
+ readonly createFailed: "Failed to create workspace";
2133
2169
  };
2134
2170
  readonly help: {
2135
2171
  readonly onThisPage: "On this page";
@@ -2150,7 +2186,7 @@ declare const en: {
2150
2186
  readonly area: "Area";
2151
2187
  readonly scope: "Scope";
2152
2188
  readonly packageManagement: "Package management";
2153
- readonly searchNavigation: "Search navigation...";
2189
+ readonly searchNavigation: "Search navigation…";
2154
2190
  readonly recent: "Recent";
2155
2191
  readonly favorites: "Favorites";
2156
2192
  readonly starred: "Starred";
@@ -2166,8 +2202,8 @@ declare const en: {
2166
2202
  readonly switchObject: "Switch Object";
2167
2203
  readonly connection: {
2168
2204
  readonly connected: "Connected";
2169
- readonly connecting: "Connecting...";
2170
- readonly reconnecting: "Reconnecting...";
2205
+ readonly connecting: "Connecting…";
2206
+ readonly reconnecting: "Reconnecting…";
2171
2207
  readonly disconnected: "Disconnected";
2172
2208
  readonly error: "Connection Error";
2173
2209
  };
@@ -2198,10 +2234,12 @@ declare const en: {
2198
2234
  readonly build: {
2199
2235
  readonly title: "Build an app";
2200
2236
  readonly subtitle: "Start from scratch — design objects, forms, automations and interfaces.";
2237
+ readonly noCapability: "Building apps isn't available in this workspace — it requires the “Manage Metadata” permission, which your account doesn't have.";
2201
2238
  };
2202
2239
  readonly template: {
2203
2240
  readonly title: "Start with a template";
2204
2241
  readonly subtitle: "Install a template app from the marketplace and customize it.";
2242
+ readonly marketplaceDisabled: "This runtime has no app marketplace configured, so there are no templates to install here.";
2205
2243
  };
2206
2244
  readonly open: "Open";
2207
2245
  readonly stats: {
@@ -2209,7 +2247,7 @@ declare const en: {
2209
2247
  readonly starred: "Starred";
2210
2248
  readonly recent: "Recent items";
2211
2249
  };
2212
- readonly loading: "Loading workspace...";
2250
+ readonly loading: "Loading workspace…";
2213
2251
  readonly recent: "Recent";
2214
2252
  readonly starred: "Starred";
2215
2253
  readonly welcome: "Build your business system with AI";
@@ -2232,6 +2270,11 @@ declare const en: {
2232
2270
  readonly publishing: "Publishing…";
2233
2271
  readonly published: "Published! Your changes are live.";
2234
2272
  readonly publishFailed: "Publish failed";
2273
+ readonly nothing: "Nothing to publish.";
2274
+ readonly probeWarn: "Published, but verification found problems.";
2275
+ readonly seedWarn: "Published, but some sample data failed to load.";
2276
+ readonly publishedVerified: "Published & verified — {{count}} sample row(s) live.";
2277
+ readonly capabilityWarn: "Authoring check: {{count}} capability reference(s) resolve nowhere.";
2235
2278
  };
2236
2279
  readonly createFirstApp: "Create app manually";
2237
2280
  readonly systemSettings: "System Settings";
@@ -2289,6 +2332,9 @@ declare const en: {
2289
2332
  readonly roles: "Roles";
2290
2333
  readonly configuration: "Configuration";
2291
2334
  readonly createApp: "Create App";
2335
+ readonly administration: "Administration";
2336
+ readonly datasources: "Datasources";
2337
+ readonly documentation: "Documentation";
2292
2338
  };
2293
2339
  readonly activityFeed: {
2294
2340
  readonly title: "Recent Activity";
@@ -2317,7 +2363,7 @@ declare const en: {
2317
2363
  readonly search: {
2318
2364
  readonly title: "Search";
2319
2365
  readonly back: "Back";
2320
- readonly placeholder: "Search objects, dashboards, pages, reports...";
2366
+ readonly placeholder: "Search objects, dashboards, pages, reports…";
2321
2367
  readonly inputAriaLabel: "Search objects, dashboards, pages, reports";
2322
2368
  readonly resultsCount: "{{count}} result for \"{{query}}\"";
2323
2369
  readonly resultsCountPlural: "{{count}} results for \"{{query}}\"";
@@ -2336,6 +2382,7 @@ declare const en: {
2336
2382
  readonly empty: {
2337
2383
  readonly objectNotFound: "Object Not Found";
2338
2384
  readonly objectNotFoundDescription: "Object \"{{name}}\" definition missing. Check your configuration or navigate back to select a valid object.";
2385
+ readonly interfacePageSourceMissing: "This interface page references \"{{name}}\", which is not available.";
2339
2386
  readonly recordNotFound: "Record not found";
2340
2387
  readonly recordNotFoundDescription: "The record you are looking for does not exist or may have been deleted.";
2341
2388
  readonly pageNotFound: "Page Not Found";
@@ -2346,6 +2393,11 @@ declare const en: {
2346
2393
  readonly reportNotFoundDescription: "The report \"{{name}}\" could not be found. It may have been removed or renamed.";
2347
2394
  readonly noAppsConfigured: "No Apps Configured";
2348
2395
  readonly noAppsConfiguredDescription: "No applications have been registered. Create your first app or visit System Settings to configure your environment.";
2396
+ readonly appNotAvailable: "App not available";
2397
+ readonly appNotAvailableDescription: "This app is not available yet — it may still be publishing. Try again in a moment.";
2398
+ readonly appAccessDenied: "You don't have access to this app";
2399
+ readonly appAccessDeniedDescription: "This app exists, but your account is not authorized to open it. Ask an administrator to grant you access.";
2400
+ readonly appAccessDeniedHome: "Back to home";
2349
2401
  readonly createFirstApp: "Create Your First App";
2350
2402
  readonly systemSettings: "System Settings";
2351
2403
  readonly back: "Back";
@@ -2384,22 +2436,33 @@ declare const en: {
2384
2436
  readonly detailChangedKeys: "Also changed:";
2385
2437
  readonly confirmNote: "Publishing releases all {{count}} pending drafts of this package atomically.";
2386
2438
  readonly publishConfirm: "Publish all";
2439
+ readonly securityBlockTitle: "Publishing will be refused — {{count}} item(s) need a decision first";
2440
+ readonly securityBlockWhere: "Fix it on the object under Settings → Record sharing, then publish again.";
2441
+ };
2442
+ readonly unpublishedBar: {
2443
+ readonly message: "Unpublished app — fully functional, but only builders can see it. Publish to make it visible to your users.";
2444
+ readonly publish: "Publish";
2445
+ readonly publishing: "Publishing…";
2446
+ readonly published: "Published! The app is now visible to your users.";
2447
+ readonly publishFailed: "Publish failed";
2448
+ };
2449
+ readonly history: {
2450
+ readonly button: "History";
2451
+ readonly title: "Build history";
2452
+ readonly description: "Every change to this app, newest first. Revert any step to undo it — no publish confirmation needed.";
2453
+ readonly loadFailed: "Could not load history:";
2454
+ readonly loadFailedUnavailable: "Commit store temporarily unreachable — this read did not happen, so no history is shown. Retry in a moment.";
2455
+ readonly loading: "Loading history…";
2456
+ readonly empty: "No history yet for this app.";
2457
+ readonly revertLabel: "Reverted a change";
2458
+ readonly applyLabel: "Build change";
2459
+ readonly revert: "revert";
2460
+ readonly items: "item(s)";
2461
+ readonly revertAction: "Revert";
2462
+ readonly reverted: "Reverted — the change has been undone.";
2463
+ readonly revertFailed: "Revert failed";
2464
+ readonly revertUnavailable: "Commit store temporarily unreachable — the revert may not have been applied. Reopen this history to check before retrying.";
2387
2465
  };
2388
- };
2389
- readonly renderer: {
2390
- readonly noPageSchema: "No page schema provided";
2391
- readonly noFormSchema: "No form schema provided";
2392
- readonly noDashboardSchema: "No dashboard schema provided";
2393
- readonly pageRendering: "Page rendering: {{name}}";
2394
- readonly dashboardRendering: "Dashboard rendering: {{name}}";
2395
- readonly formRenderingMode: "Form rendering in {{mode}} mode";
2396
- readonly formRenderingFor: "for record {{id}}";
2397
- readonly createRecord: "Create Record";
2398
- readonly editRecord: "Edit Record";
2399
- readonly page: "Page";
2400
- readonly dashboard: "Dashboard";
2401
- readonly save: "Save";
2402
- readonly cancel: "Cancel";
2403
2466
  };
2404
2467
  readonly actionDialog: {
2405
2468
  readonly title: "Action Parameters";
@@ -2451,7 +2514,7 @@ declare const en: {
2451
2514
  readonly deleteFailed: "Failed to delete view";
2452
2515
  };
2453
2516
  readonly dashboardActions: {
2454
- readonly pdfPreparing: "Preparing PDF export…";
2517
+ readonly printDialogOpening: "Opening your browser’s print dialog (not a PDF export)";
2455
2518
  readonly exportFailed: "Export failed: {{message}}";
2456
2519
  readonly forecastSoon: "Forecast view coming soon";
2457
2520
  };
@@ -2486,6 +2549,143 @@ declare const en: {
2486
2549
  readonly emptyDescription: "Create your first workspace to get started.";
2487
2550
  readonly noMatches: "No workspaces match your search.";
2488
2551
  };
2552
+ readonly organization: {
2553
+ readonly roles: {
2554
+ readonly owner: "Owner";
2555
+ readonly admin: "Admin";
2556
+ readonly delegatedAdmin: "Delegated Admin";
2557
+ readonly member: "Member";
2558
+ };
2559
+ readonly errors: {
2560
+ readonly notAllowedToInvite: "You are not allowed to invite users to this organization";
2561
+ readonly notAllowedToInviteWithRole: "You are not allowed to invite a user with this role";
2562
+ readonly alreadyInvited: "This user has already been invited to this organization";
2563
+ readonly organizationExists: "Organization already exists";
2564
+ readonly slugTaken: "That URL slug is already taken";
2565
+ readonly notAllowedToCreate: "You are not allowed to create a new organization";
2566
+ readonly notTheRecipient: "You are not the recipient of the invitation";
2567
+ readonly invitationNotFound: "This invitation no longer exists or has expired";
2568
+ readonly unknown: "Something went wrong. Please try again.";
2569
+ };
2570
+ readonly backToList: "Back to organizations";
2571
+ readonly notFound: "Organization not found";
2572
+ readonly notFoundDescription: "This organization does not exist or you do not have access.";
2573
+ readonly tabs: {
2574
+ readonly members: "Members";
2575
+ readonly invitations: "Invitations";
2576
+ readonly settings: "Settings";
2577
+ };
2578
+ readonly members: {
2579
+ readonly title: "Members";
2580
+ readonly inviteMember: "Invite member";
2581
+ readonly inviteRestrictedNote: "Only organization admins can invite members.";
2582
+ readonly removeMember: "Remove member";
2583
+ readonly removeConfirmTitle: "Remove member?";
2584
+ readonly removeConfirmDescription: "This will remove {{name}} from the organization. They will lose access immediately.";
2585
+ readonly removeConfirmAction: "Remove";
2586
+ readonly memberRemoved: "Member removed";
2587
+ readonly removeFailed: "Failed to remove member";
2588
+ readonly roleUpdated: "Role updated";
2589
+ readonly roleUpdateFailed: "Failed to update role";
2590
+ readonly memberActions: "Member actions";
2591
+ readonly loadFailed: "Failed to load members";
2592
+ };
2593
+ readonly invitations: {
2594
+ readonly title: "Invitations";
2595
+ readonly empty: "No invitations found.";
2596
+ readonly expiresAt: "Expires";
2597
+ readonly linkCopied: "Invitation link copied";
2598
+ readonly copyFailed: "Failed to copy link";
2599
+ readonly canceled: "Invitation canceled";
2600
+ readonly cancelFailed: "Failed to cancel invitation";
2601
+ readonly cancelTitle: "Cancel invitation?";
2602
+ readonly cancelDescription: "The invitation for {{email}} will be revoked.";
2603
+ readonly cancelAction: "Cancel invitation";
2604
+ readonly inviteTitle: "Invite a member";
2605
+ readonly inviteDescription: "They will receive an invitation to join this organization.";
2606
+ readonly emailLabel: "Email";
2607
+ readonly roleLabel: "Role";
2608
+ readonly placementLabel: "Placement (optional)";
2609
+ readonly placementDescription: "Applied when the invitation is accepted. Only units and positions you may delegate are listed.";
2610
+ readonly businessUnitLabel: "Business unit";
2611
+ readonly businessUnitPlaceholder: "No placement";
2612
+ readonly positionsLabel: "Positions";
2613
+ readonly sendInvite: "Send invite";
2614
+ readonly sentTitle: "Invitation created";
2615
+ readonly sentDescription: "Share the link below with the invitee. They will need to sign in to accept.";
2616
+ readonly linkLabel: "Accept link";
2617
+ readonly invitedAs: "{{email}} invited as {{role}}";
2618
+ readonly copyLinkLabel: "Copy invitation link";
2619
+ readonly loadFailed: "Failed to load invitations";
2620
+ readonly inviteFailed: "Failed to invite member";
2621
+ readonly status: {
2622
+ readonly all: "All";
2623
+ readonly pending: "Pending";
2624
+ readonly accepted: "Accepted";
2625
+ readonly rejected: "Rejected";
2626
+ readonly canceled: "Canceled";
2627
+ };
2628
+ };
2629
+ readonly settings: {
2630
+ readonly generalTitle: "General";
2631
+ readonly generalDescription: "Update your organization information.";
2632
+ readonly readOnlyNote: "Only owners can change settings.";
2633
+ readonly nameLabel: "Organization name";
2634
+ readonly slugLabel: "Slug";
2635
+ readonly logoLabel: "Logo";
2636
+ readonly logoUpload: "Upload";
2637
+ readonly logoReplace: "Replace";
2638
+ readonly logoClear: "Remove";
2639
+ readonly logoUploaded: "Logo uploaded — save to apply";
2640
+ readonly logoUploadFailed: "Failed to upload logo";
2641
+ readonly save: "Save changes";
2642
+ readonly saved: "Settings saved";
2643
+ readonly saveFailed: "Failed to save settings";
2644
+ readonly leaveTitle: "Leave organization";
2645
+ readonly leaveDescription: "You will lose access to this organization.";
2646
+ readonly leaveAction: "Leave";
2647
+ readonly leaveConfirmTitle: "Leave organization?";
2648
+ readonly leaveConfirmDescription: "Are you sure you want to leave {{name}}? You will lose access immediately.";
2649
+ readonly leaveConfirmAction: "Leave";
2650
+ readonly leftOrg: "You have left the organization";
2651
+ readonly leaveFailed: "Failed to leave organization";
2652
+ readonly dangerZone: "Danger zone";
2653
+ readonly deleteTitle: "Delete organization";
2654
+ readonly deleteDescription: "Permanently delete this organization and all its data.";
2655
+ readonly deleteAction: "Delete";
2656
+ readonly deleteConfirmTitle: "Delete organization?";
2657
+ readonly deleteConfirmDescription: "This action is irreversible. All data will be permanently deleted. Type the organization slug to confirm.";
2658
+ readonly deleteConfirmSlugLabel: "Type \"{{slug}}\" to confirm";
2659
+ readonly deleteConfirmAction: "Delete organization";
2660
+ readonly deleted: "Organization deleted";
2661
+ readonly deleteFailed: "Failed to delete organization";
2662
+ };
2663
+ readonly accept: {
2664
+ readonly title: "You have been invited";
2665
+ readonly description: "You have been invited to join {{orgName}} as {{role}}.";
2666
+ readonly errorTitle: "Invitation unavailable";
2667
+ readonly goToOrgs: "Go to organizations";
2668
+ readonly loading: "Loading invitation…";
2669
+ readonly organization: "Organization";
2670
+ readonly role: "Role";
2671
+ readonly expiresAt: "Expires";
2672
+ readonly accept: "Accept invitation";
2673
+ readonly accepted: "Invitation accepted";
2674
+ readonly acceptFailed: "Failed to accept invitation";
2675
+ readonly decline: "Decline";
2676
+ readonly declined: "Invitation declined";
2677
+ readonly declineFailed: "Failed to decline invitation";
2678
+ };
2679
+ readonly current: {
2680
+ readonly label: "Current organization";
2681
+ };
2682
+ readonly switcher: {
2683
+ readonly label: "Switch organization";
2684
+ readonly groupLabel: "Working organization";
2685
+ readonly groupHint: "New records are created here. Views show data from all your organizations.";
2686
+ readonly manageMembers: "Manage members";
2687
+ };
2688
+ };
2489
2689
  readonly notifications: {
2490
2690
  readonly regionLabel: "Notifications";
2491
2691
  readonly empty: "No notifications";
@@ -2502,6 +2702,9 @@ declare const en: {
2502
2702
  readonly viewApprovals: "View approvals";
2503
2703
  readonly noPendingApprovals: "No pending approvals";
2504
2704
  readonly openApprovalsInbox: "Open Approvals Inbox";
2705
+ readonly badgeTotal: "{{total}} total";
2706
+ readonly badgeNotifications: "{{unread}} notifications";
2707
+ readonly badgeApprovals: "{{approvals}} pending approvals";
2505
2708
  };
2506
2709
  readonly publicForm: {
2507
2710
  readonly submit: "Submit";
@@ -2523,52 +2726,6 @@ declare const en: {
2523
2726
  readonly consentRequired: "Please accept the privacy policy to continue.";
2524
2727
  readonly rateLimited: "Please take a moment to review your answers before submitting.";
2525
2728
  readonly redirectBlocked: "Submission accepted, but the redirect URL was blocked for security.";
2526
- readonly demo: {
2527
- readonly contactTitle: "Contact us";
2528
- readonly contactDescription: "Tell us about your project and a sales representative will get back to you within one business day.";
2529
- readonly supportTitle: "Submit a support request";
2530
- readonly supportDescription: "Tell us what is going wrong — our team responds within one business day.";
2531
- readonly thankYouSalesTitle: "Thanks — we received your message!";
2532
- readonly thankYouSalesMessage: "A sales representative will be in touch within one business day.";
2533
- readonly thankYouSupportTitle: "Got it — your request is in the queue.";
2534
- readonly thankYouSupportMessage: "A support engineer will follow up shortly. Save this page if you have more screenshots to add.";
2535
- readonly field: {
2536
- readonly firstName: "First name";
2537
- readonly lastName: "Last name";
2538
- readonly email: "Work email";
2539
- readonly phone: "Phone";
2540
- readonly jobTitle: "Job title";
2541
- readonly company: "Company";
2542
- readonly website: "Website";
2543
- readonly industry: "Industry";
2544
- readonly companySize: "Company size";
2545
- readonly howCanWeHelp: "How can we help?";
2546
- readonly subject: "Subject";
2547
- readonly description: "Description";
2548
- readonly issueType: "Issue type";
2549
- readonly priority: "Priority";
2550
- };
2551
- readonly industry: {
2552
- readonly technology: "Technology";
2553
- readonly software: "Software / SaaS";
2554
- readonly finance: "Finance";
2555
- readonly healthcare: "Healthcare";
2556
- readonly retail: "Retail";
2557
- readonly other: "Other";
2558
- };
2559
- readonly issueType: {
2560
- readonly question: "Question";
2561
- readonly problem: "Problem";
2562
- readonly bug: "Bug";
2563
- readonly feature_request: "Feature request";
2564
- };
2565
- readonly priority: {
2566
- readonly low: "Low";
2567
- readonly medium: "Medium";
2568
- readonly high: "High";
2569
- readonly critical: "Critical";
2570
- };
2571
- };
2572
2729
  };
2573
2730
  readonly connectAgent: {
2574
2731
  readonly disabled: {
@@ -2680,6 +2837,7 @@ declare const en: {
2680
2837
  readonly retry: "Try again";
2681
2838
  readonly errors: {
2682
2839
  readonly expired: "The request expired before it was approved. Start again.";
2840
+ readonly accessDenied: "The connection request was denied. Start again.";
2683
2841
  readonly bindFailed: "Binding failed.";
2684
2842
  readonly deviceCodeFailed: "Device code request failed.";
2685
2843
  };
@@ -2736,10 +2894,16 @@ declare const en: {
2736
2894
  readonly installedBadge: "Installed v{{version}}";
2737
2895
  readonly load: {
2738
2896
  readonly failed: "Failed to load marketplace";
2739
- readonly failedHint: "By default this runtime points at the public ObjectStack cloud. Check the runtime is online, or override <code>OS_CLOUD_URL</code> to point at a self-hosted control plane.";
2897
+ readonly failedHintConfigured: "This runtime reaches the marketplace through the control plane at {{url}}. Check that it is online and reachable from here.";
2898
+ readonly failedHintSameOrigin: "This runtime serves the marketplace catalog itself. Check that the runtime is online.";
2740
2899
  readonly packageFailed: "Failed to load package";
2741
2900
  readonly notFound: "Not found.";
2742
2901
  };
2902
+ readonly disabled: {
2903
+ readonly title: "App Marketplace is turned off";
2904
+ readonly description: "This runtime has no marketplace configured, so there is nothing to browse or install from here.";
2905
+ readonly hint: "That is the expected state when the runtime is started with <code>OS_CLOUD_URL=off</code> (or <code>none</code>, <code>local</code>, <code>disabled</code>). To turn the marketplace on, point <code>OS_CLOUD_URL</code> at a control plane and restart the runtime.";
2906
+ };
2743
2907
  readonly detail: {
2744
2908
  readonly homepage: "Homepage";
2745
2909
  readonly installedV: "Installed · v{{version}}";
@@ -2775,6 +2939,7 @@ declare const en: {
2775
2939
  readonly dismiss: "Dismiss";
2776
2940
  readonly openOnCloud: "Open on cloud";
2777
2941
  readonly backHome: "Back to home";
2942
+ readonly updateTo: "Update";
2778
2943
  };
2779
2944
  readonly install: {
2780
2945
  readonly dialogTitle: "Install {{name}}";
@@ -2791,6 +2956,33 @@ declare const en: {
2791
2956
  readonly localManifestConflict: "{{message}}\nTip: a local app already owns this manifest_id. Remove it from objectstack.config.ts first.";
2792
2957
  readonly localUnauthorized: "Sign in to this runtime first, then try again.";
2793
2958
  readonly localMarketplaceUnavailable: "This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.";
2959
+ readonly updateTo: "Update → v{{version}}";
2960
+ readonly installedVersion: "Installed v{{version}}";
2961
+ };
2962
+ readonly org: {
2963
+ readonly heading: "Your organization";
2964
+ readonly install: "Install";
2965
+ readonly installed: "Installed {{name}}";
2966
+ readonly installedBadge: "Installed";
2967
+ readonly installing: "Installing…";
2968
+ };
2969
+ readonly disclosure: {
2970
+ readonly containsCode: "This package contains code";
2971
+ readonly reviewed: "Reviewed & approved";
2972
+ readonly unreviewed: "Not yet reviewed";
2973
+ readonly signed: "Signed";
2974
+ readonly grantsIntro: "On install, this package will be granted:";
2975
+ readonly services: "Platform services";
2976
+ readonly hooks: "Lifecycle hooks";
2977
+ readonly network: "Network access";
2978
+ readonly fs: "Filesystem access";
2979
+ readonly noPermissions: "Requests no special permissions.";
2980
+ readonly acknowledge: "I understand this package runs code and grants the permissions above.";
2981
+ readonly runtime: {
2982
+ readonly node: "In-process · full trust";
2983
+ readonly sandbox: "Sandboxed";
2984
+ readonly worker: "Out-of-process";
2985
+ };
2794
2986
  };
2795
2987
  readonly suggestedBindings: {
2796
2988
  readonly promptEveryone: "This app suggests granting \"{{set}}\" to all signed-in users (the Everyone position).";
@@ -2956,12 +3148,19 @@ declare const en: {
2956
3148
  readonly submittedAgo: "Submitted {{when}}";
2957
3149
  readonly completedAt: "Completed {{when}}";
2958
3150
  readonly waitingOn: "Waiting on";
3151
+ readonly approverNameSeparator: ", ";
3152
+ readonly approverUnstaffed: "{{seat}} (no current holder)";
2959
3153
  readonly history: "Activity";
2960
3154
  readonly noActions: "No actions yet.";
2961
3155
  readonly actSubmit: "Submitted";
2962
3156
  readonly actApprove: "Approved";
2963
3157
  readonly actReject: "Rejected";
2964
3158
  readonly actRecall: "Recalled";
3159
+ readonly overrideActionLabel: "Override {{action}}";
3160
+ readonly overrideNotice: "You hold no approver slot on this step. Continuing uses your admin override: it finalises the step immediately, bypassing any approver who has not acted. The decision is recorded as an admin override.";
3161
+ readonly overrideNoticeWho: "You hold no approver slot on this step. Continuing uses your admin override: it finalises the step immediately and bypasses the approvers who have not acted — {{who}}. The decision is recorded as an admin override.";
3162
+ readonly viaOverrideChip: "Admin override";
3163
+ readonly viaOverrideHint: "The actor held no approver slot on this step — admitted by the admin-override path.";
2965
3164
  readonly rawData: "Raw data (JSON)";
2966
3165
  readonly copy: "Copy";
2967
3166
  readonly copied: "Copied";
@@ -3030,10 +3229,15 @@ declare const en: {
3030
3229
  readonly noResults: "No results";
3031
3230
  readonly searchField: "Search {{label}}…";
3032
3231
  readonly enterId: "Enter {{label}} id";
3232
+ readonly addValue: "Type a value, press Enter";
3233
+ readonly removeValue: "Remove {{value}}";
3234
+ readonly rangeStart: "From";
3235
+ readonly rangeEnd: "To";
3033
3236
  readonly operators: {
3034
3237
  readonly equals: "Equals";
3035
3238
  readonly notEquals: "Does not equal";
3036
3239
  readonly contains: "Contains";
3240
+ readonly containsCaseInsensitive: "Contains (ignore case)";
3037
3241
  readonly notContains: "Does not contain";
3038
3242
  readonly isEmpty: "Is empty";
3039
3243
  readonly isNotEmpty: "Is not empty";
@@ -3046,6 +3250,12 @@ declare const en: {
3046
3250
  readonly between: "Between";
3047
3251
  readonly in: "In";
3048
3252
  readonly notIn: "Not in";
3253
+ readonly startsWith: "Starts with";
3254
+ readonly endsWith: "Ends with";
3255
+ readonly isNull: "Is null";
3256
+ readonly isNotNull: "Is not null";
3257
+ readonly exists: "Is set";
3258
+ readonly notExists: "Is not set";
3049
3259
  };
3050
3260
  };
3051
3261
  readonly sortBuilder: {
@@ -3078,9 +3288,9 @@ declare const en: {
3078
3288
  readonly reactThumbsUp: "React with thumbs up";
3079
3289
  readonly reactHeart: "React with heart";
3080
3290
  readonly cancelReply: "Cancel reply";
3081
- readonly replyingTo: "Replying to {{name}}...";
3082
- readonly replyingToComment: "Replying to comment...";
3083
- readonly commentPlaceholder: "Add a comment... (use @ to mention)";
3291
+ readonly replyingTo: "Replying to {{name}}…";
3292
+ readonly replyingToComment: "Replying to comment…";
3293
+ readonly commentPlaceholder: "Add a comment… (use @ to mention)";
3084
3294
  readonly send: "Send";
3085
3295
  readonly presentUserCount: "{{count}} users present";
3086
3296
  readonly presentUserCountOne: "{{count}} user present";
@@ -3091,6 +3301,65 @@ declare const en: {
3091
3301
  readonly statusIdle: "idle";
3092
3302
  readonly statusAway: "away";
3093
3303
  };
3304
+ readonly wizard: {
3305
+ readonly missingRequired: "Please complete the required fields: {{fields}}";
3306
+ };
3307
+ readonly flowRunner: {
3308
+ readonly title: "Input";
3309
+ readonly submitting: "Submitting…";
3310
+ readonly saveAndContinue: "Save & Continue";
3311
+ readonly nextStep: "Saved — next step";
3312
+ readonly completed: "Flow \"{{flow}}\" completed";
3313
+ };
3314
+ readonly appManagement: {
3315
+ readonly title: "Applications";
3316
+ readonly subtitle: "Manage all configured applications";
3317
+ readonly newApp: "New App";
3318
+ readonly searchLabel: "Search apps";
3319
+ readonly searchPlaceholder: "Search apps…";
3320
+ readonly selectedCount: "{{n}} selected";
3321
+ readonly bulkEnable: "Enable";
3322
+ readonly bulkDisable: "Disable";
3323
+ readonly selectAll: "Select all ({{n}})";
3324
+ readonly empty: "No apps found.";
3325
+ readonly defaultBadge: "Default";
3326
+ readonly active: "Active";
3327
+ readonly inactive: "Inactive";
3328
+ readonly selectApp: "Select {{name}}";
3329
+ readonly openApp: "Open app";
3330
+ readonly openAppNamed: "Open {{name}}";
3331
+ readonly editApp: "Edit app";
3332
+ readonly editAppNamed: "Edit {{name}}";
3333
+ readonly editWithAi: "Edit with AI";
3334
+ readonly editWithAiNamed: "Edit {{name}} with AI";
3335
+ readonly enableApp: "Enable app";
3336
+ readonly disableApp: "Disable app";
3337
+ readonly enableAppNamed: "Enable {{name}}";
3338
+ readonly disableAppNamed: "Disable {{name}}";
3339
+ readonly setDefault: "Set as default";
3340
+ readonly setDefaultNamed: "Set {{name}} as default";
3341
+ readonly deleteApp: "Delete app";
3342
+ readonly deleteAppNamed: "Delete {{name}}";
3343
+ readonly confirmDelete: "Click again to confirm delete";
3344
+ readonly confirmDeleteNamed: "Confirm delete {{name}}";
3345
+ readonly toast: {
3346
+ readonly noClient: "Cannot reach the metadata service";
3347
+ readonly unknownError: "unknown error";
3348
+ readonly appEnabled: "{{name}} enabled";
3349
+ readonly appDisabled: "{{name}} disabled";
3350
+ readonly toggleFailed: "Failed to toggle app status: {{reason}}";
3351
+ readonly setDefaultDone: "{{name}} set as default";
3352
+ readonly setDefaultFailed: "Failed to set default app: {{reason}}";
3353
+ readonly appDeleted: "{{name}} deleted";
3354
+ readonly deleteFailed: "Failed to delete app: {{reason}}";
3355
+ readonly bulkEnabled: "{{n}} apps enabled";
3356
+ readonly bulkDisabled: "{{n}} apps disabled";
3357
+ readonly bulkFailed: "Failed for {{n}}: {{details}}";
3358
+ readonly bulkFailureEntry: "{{name}} ({{reason}})";
3359
+ readonly bulkFailureJoiner: "; ";
3360
+ readonly bulkOperationFailed: "Bulk operation failed: {{reason}}";
3361
+ };
3362
+ };
3094
3363
  };
3095
3364
  export default en;
3096
3365
  export type TranslationKeys = typeof en;