@object-ui/i18n 17.3.0 → 17.5.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 (41) hide show
  1. package/CHANGELOG.md +1295 -1
  2. package/README.md +0 -13
  3. package/dist/index.d.ts +3 -1
  4. package/dist/index.js +11 -1
  5. package/dist/locales/ar.d.ts +466 -107
  6. package/dist/locales/ar.js +559 -153
  7. package/dist/locales/de.d.ts +466 -107
  8. package/dist/locales/de.js +574 -175
  9. package/dist/locales/en.d.ts +502 -143
  10. package/dist/locales/en.js +678 -145
  11. package/dist/locales/es.d.ts +466 -107
  12. package/dist/locales/es.js +553 -155
  13. package/dist/locales/fr.d.ts +466 -107
  14. package/dist/locales/fr.js +553 -152
  15. package/dist/locales/index.d.ts +4734 -1144
  16. package/dist/locales/ja.d.ts +466 -107
  17. package/dist/locales/ja.js +545 -146
  18. package/dist/locales/ko.d.ts +466 -107
  19. package/dist/locales/ko.js +551 -153
  20. package/dist/locales/pt.d.ts +466 -107
  21. package/dist/locales/pt.js +552 -154
  22. package/dist/locales/ru.d.ts +466 -107
  23. package/dist/locales/ru.js +563 -153
  24. package/dist/locales/zh.d.ts +501 -142
  25. package/dist/locales/zh.js +542 -142
  26. package/dist/pickLocalized.d.ts +21 -0
  27. package/dist/pickLocalized.js +40 -7
  28. package/dist/provider.d.ts +83 -1
  29. package/dist/provider.js +303 -29
  30. package/dist/useDisplayLocale.d.ts +49 -0
  31. package/dist/useDisplayLocale.js +55 -0
  32. package/dist/useObjectLabel.d.ts +8 -2
  33. package/dist/useObjectLabel.js +28 -8
  34. package/dist/useSafeTranslation.js +50 -2
  35. package/dist/utils/index.d.ts +1 -0
  36. package/dist/utils/index.js +1 -0
  37. package/dist/utils/number-display.d.ts +32 -0
  38. package/dist/utils/number-display.js +32 -0
  39. package/dist/utils/spec-formatters.d.ts +39 -13
  40. package/dist/utils/spec-formatters.js +3 -3
  41. 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,12 @@ 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";
51
78
  readonly cancel: "Cancel";
52
79
  readonly delete: "Delete";
53
80
  readonly edit: "Edit";
54
81
  readonly create: "Create";
55
- readonly search: "Search";
56
82
  readonly filter: "Filter";
57
83
  readonly reset: "Reset";
58
84
  readonly confirm: "Confirm";
@@ -78,7 +104,7 @@ declare const en: {
78
104
  readonly required: "Required";
79
105
  readonly optional: "Optional";
80
106
  readonly selectOption: "Select an option";
81
- readonly select: "Select...";
107
+ readonly select: "Select…";
82
108
  readonly openChat: "Open chat";
83
109
  readonly closeChat: "Close chat";
84
110
  readonly closePanel: "Close panel";
@@ -87,6 +113,11 @@ declare const en: {
87
113
  readonly itemCountOne: "{{count}} item";
88
114
  readonly toggleSidebar: "Toggle sidebar";
89
115
  readonly package: "Package";
116
+ readonly done: "Done";
117
+ readonly editInStudio: "Edit in studio";
118
+ readonly record: "Record";
119
+ readonly retry: "Retry";
120
+ readonly printDialogHint: "Opens your browser’s print dialog (not a PDF export)";
90
121
  };
91
122
  readonly actions: {
92
123
  readonly decisionOutput: {
@@ -125,6 +156,7 @@ declare const en: {
125
156
  readonly unsavedChanges: "You have unsaved changes. Are you sure you want to leave?";
126
157
  readonly discardTitle: "Discard changes?";
127
158
  readonly discardMessage: "You have unsaved changes. If you close this form now, your edits will be lost.";
159
+ readonly dialogDescriptionFallback: "Complete the form fields, then submit or cancel.";
128
160
  readonly keepEditing: "Keep editing";
129
161
  readonly discard: "Discard";
130
162
  readonly conflictTitle: "Save conflict";
@@ -186,7 +218,7 @@ declare const en: {
186
218
  readonly richText: {
187
219
  readonly format: "Format: {{format}}";
188
220
  readonly basicEditorHint: "Rich text editor (basic)";
189
- readonly placeholder: "Enter text...";
221
+ readonly placeholder: "Enter text…";
190
222
  };
191
223
  readonly options: {
192
224
  readonly empty: "No options available";
@@ -252,7 +284,7 @@ declare const en: {
252
284
  readonly saveAll: "Save All ({{count}})";
253
285
  readonly addRecord: "Add record";
254
286
  readonly open: "Open";
255
- readonly search: "Search...";
287
+ readonly search: "Search…";
256
288
  readonly modified: "{{count}} row modified";
257
289
  readonly saveFailed: "Save failed";
258
290
  readonly selected: "{{count}} selected";
@@ -265,7 +297,7 @@ declare const en: {
265
297
  readonly delete: "Delete";
266
298
  readonly export: "Export";
267
299
  readonly exportAs: "Export as {{format}}";
268
- readonly loading: "Loading grid...";
300
+ readonly loading: "Loading grid…";
269
301
  readonly errorLoading: "Error loading grid";
270
302
  readonly pullToRefresh: "Pull to refresh";
271
303
  readonly refreshing: "Refreshing…";
@@ -282,6 +314,19 @@ declare const en: {
282
314
  readonly yes: "Yes";
283
315
  readonly no: "No";
284
316
  readonly systemFields: "System";
317
+ readonly summary: {
318
+ readonly pattern: "{{label}}: {{value}}";
319
+ readonly count: "Count";
320
+ readonly countEmpty: "Empty";
321
+ readonly countFilled: "Filled";
322
+ readonly countUnique: "Unique";
323
+ readonly percentEmpty: "Empty";
324
+ readonly percentFilled: "Filled";
325
+ readonly sum: "Sum";
326
+ readonly avg: "Avg";
327
+ readonly min: "Min";
328
+ readonly max: "Max";
329
+ };
285
330
  readonly toolbar: {
286
331
  readonly densityMode: "Density";
287
332
  readonly densityCompact: "Compact";
@@ -485,7 +530,8 @@ declare const en: {
485
530
  readonly sort: "Sort";
486
531
  readonly sortRecords: "Sort Records";
487
532
  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.";
533
+ 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.";
534
+ readonly resetSortToDefault: "Reset to view default";
489
535
  readonly group: "Group";
490
536
  readonly groupBy: "Group By";
491
537
  readonly export: "Export";
@@ -510,6 +556,8 @@ declare const en: {
510
556
  readonly loadErrorUnauthorizedMessage: "Your session has expired or you are signed out. Sign in again to view these records.";
511
557
  readonly loadErrorRejectedTitle: "This view’s query was rejected";
512
558
  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.";
559
+ readonly loadErrorApiDisabledTitle: "This object isn’t available through the API";
560
+ 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
561
  readonly retry: "Retry";
514
562
  readonly managedBy: {
515
563
  readonly system: {
@@ -584,8 +632,11 @@ declare const en: {
584
632
  readonly deleteCard: "Delete card";
585
633
  readonly deleteColumn: "Delete column";
586
634
  readonly noCards: "No cards";
587
- readonly cardTitlePlaceholder: "Enter card title...";
635
+ readonly cardTitlePlaceholder: "Enter card title…";
588
636
  readonly uncategorized: "Uncategorized";
637
+ readonly columns: "columns";
638
+ readonly requiredFieldsTitle: "Complete required fields";
639
+ readonly requiredFieldsDescription: "This move makes the fields below required. Fill them in to continue.";
589
640
  };
590
641
  readonly timeline: {
591
642
  readonly bucket: {
@@ -598,6 +649,13 @@ declare const en: {
598
649
  readonly noDate: "No date";
599
650
  readonly unassigned: "Unassigned";
600
651
  };
652
+ readonly scale: {
653
+ readonly week: "Week {{n}}";
654
+ readonly quarter: "Q{{quarter}} {{year}}";
655
+ };
656
+ readonly gantt: {
657
+ readonly rowLabel: "Items";
658
+ };
601
659
  };
602
660
  readonly gantt: {
603
661
  readonly column: {
@@ -624,6 +682,7 @@ declare const en: {
624
682
  readonly exportPng: "Export as PNG";
625
683
  readonly exportPdf: "Export PDF";
626
684
  readonly saveLayout: "Save layout";
685
+ readonly refresh: "Refresh";
627
686
  readonly undo: "Undo";
628
687
  readonly redo: "Redo";
629
688
  };
@@ -671,6 +730,18 @@ declare const en: {
671
730
  readonly ff: "Finish → Finish";
672
731
  readonly sf: "Start → Finish";
673
732
  };
733
+ readonly linkEnd: {
734
+ readonly start: "start";
735
+ readonly end: "end";
736
+ };
737
+ readonly link: {
738
+ readonly rejected: {
739
+ readonly self: "A task cannot depend on itself.";
740
+ readonly locked: "This row is locked and cannot take a new dependency.";
741
+ readonly group: "A summary row cannot take a dependency — link one of its tasks instead.";
742
+ readonly cycle: "That link would create a circular dependency.";
743
+ };
744
+ };
674
745
  readonly conflict: {
675
746
  readonly title: "Schedule conflict";
676
747
  readonly body: "This move conflicts with dependency constraints. Auto-reschedule {{count}} affected task(s)?";
@@ -679,8 +750,8 @@ declare const en: {
679
750
  };
680
751
  readonly autoScheduleDlg: {
681
752
  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.";
753
+ readonly body: "Shift {{count}} task(s) later to satisfy dependency links?";
754
+ readonly skipped: "{{count}} locked task(s) also violate links and were skipped.";
684
755
  readonly confirm: "Apply";
685
756
  readonly cancel: "Cancel";
686
757
  readonly none: "All dependencies satisfied — nothing to reschedule.";
@@ -772,6 +843,7 @@ declare const en: {
772
843
  readonly concurrentUpdateReload: "Reload latest";
773
844
  readonly concurrentUpdateOverwrite: "Overwrite anyway";
774
845
  readonly concurrentUpdateCancel: "Cancel";
846
+ readonly concurrentUpdateRecordLabel: "this record";
775
847
  readonly openInNewTab: "Open in new tab";
776
848
  readonly share: "Share";
777
849
  readonly duplicate: "Duplicate";
@@ -801,16 +873,19 @@ declare const en: {
801
873
  readonly relatedRecords: "{{count}} records";
802
874
  readonly relatedRecordOne: "{{count}} record";
803
875
  readonly noRelatedRecords: "No related records found";
804
- readonly loading: "Loading...";
876
+ readonly loading: "Loading…";
805
877
  readonly copyToClipboard: "Copy to clipboard";
806
878
  readonly copied: "Copied!";
807
879
  readonly deleteConfirmation: "Are you sure you want to delete this record?";
880
+ readonly deleted: "Record deleted";
808
881
  readonly editRecord: "Edit record";
809
882
  readonly viewAll: "View All";
810
883
  readonly new: "New";
884
+ readonly add: "Add";
811
885
  readonly emptyValue: "—";
812
886
  readonly activity: "Activity";
813
887
  readonly history: "History";
888
+ readonly historyEmpty: "No history yet";
814
889
  readonly editRow: "Edit";
815
890
  readonly deleteRow: "Delete";
816
891
  readonly deleteRowConfirmation: "Are you sure you want to delete this record?";
@@ -820,7 +895,7 @@ declare const en: {
820
895
  readonly nextPage: "Next";
821
896
  readonly pageOf: "Page {{current}} of {{total}}";
822
897
  readonly sortBy: "Sort by";
823
- readonly filterPlaceholder: "Filter...";
898
+ readonly filterPlaceholder: "Filter…";
824
899
  readonly highlightFields: "Key Fields";
825
900
  readonly comments: "Comments";
826
901
  readonly searchComments: "Search comments…";
@@ -879,6 +954,7 @@ declare const en: {
879
954
  readonly nextRecordKey: "Next record (→)";
880
955
  readonly lastRecord: "Last record (End)";
881
956
  readonly noRecords: "No records";
957
+ readonly showEmptyRelated: "+ {{count}} empty";
882
958
  readonly showEmptyRelated_one: "+ {{count}} empty";
883
959
  readonly showEmptyRelated_other: "+ {{count}} empty";
884
960
  readonly searchWhileNavigating: "Search while navigating";
@@ -892,6 +968,7 @@ declare const en: {
892
968
  readonly loadMore: "Load more";
893
969
  readonly edited: "(edited)";
894
970
  readonly via: "via {{source}}";
971
+ readonly viewSource: "View source";
895
972
  readonly replyCount: "{{count}} reply";
896
973
  readonly replyCountPlural: "{{count}} replies";
897
974
  readonly replyPlaceholder: "Reply…";
@@ -910,7 +987,8 @@ declare const en: {
910
987
  };
911
988
  readonly chart: {
912
989
  readonly noData: "No chart data available";
913
- readonly loading: "Loading chart...";
990
+ readonly loading: "Loading chart…";
991
+ readonly nullCategory: "(None)";
914
992
  };
915
993
  readonly report: {
916
994
  readonly total: "Total";
@@ -935,111 +1013,7 @@ declare const en: {
935
1013
  readonly first: "First";
936
1014
  };
937
1015
  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}";
1016
+ readonly panelTitle: "Edit report";
1043
1017
  };
1044
1018
  };
1045
1019
  readonly map: {
@@ -1062,8 +1036,8 @@ declare const en: {
1062
1036
  readonly properties: "Properties";
1063
1037
  readonly connections: "Connections";
1064
1038
  readonly quickConnect: "Quick Connect";
1065
- readonly fromPlaceholder: "From...";
1066
- readonly toPlaceholder: "To...";
1039
+ readonly fromPlaceholder: "From…";
1040
+ readonly toPlaceholder: "To…";
1067
1041
  readonly connect: "Connect";
1068
1042
  readonly label: "Label";
1069
1043
  readonly type: "Type";
@@ -1123,6 +1097,7 @@ declare const en: {
1123
1097
  readonly noDataAvailable: "No data available";
1124
1098
  readonly noDataSourceFor: "No data source available for";
1125
1099
  readonly noRows: "No rows";
1100
+ readonly loading: "Loading…";
1126
1101
  readonly pickMeasures: "Pick measures (values) for this dataset widget.";
1127
1102
  readonly datasetUnsupported: "This data source does not support dataset queries.";
1128
1103
  readonly details: "Details";
@@ -1372,8 +1347,9 @@ declare const en: {
1372
1347
  };
1373
1348
  };
1374
1349
  readonly console: {
1350
+ readonly saveAdvisoryTitle: "Saved — the authoring check raised {{count}} advisory finding(s)";
1375
1351
  readonly title: "ObjectOS";
1376
- readonly initializing: "Initializing application...";
1352
+ readonly initializing: "Initializing application…";
1377
1353
  readonly search: "Search…";
1378
1354
  readonly breadcrumb: {
1379
1355
  readonly dashboards: "Dashboards";
@@ -1403,6 +1379,28 @@ declare const en: {
1403
1379
  readonly Other: "Other";
1404
1380
  };
1405
1381
  };
1382
+ readonly settingsView: {
1383
+ readonly backToHub: "All settings";
1384
+ readonly back: "Back";
1385
+ readonly noNamespace: "No namespace selected.";
1386
+ readonly loadError: "Failed to load settings";
1387
+ readonly saved: "Settings saved";
1388
+ readonly saveFailed: "Save failed";
1389
+ readonly lockedByEnv: "Locked by environment: {{key}}";
1390
+ readonly lockedByEnvNoKey: "Locked by environment";
1391
+ readonly actionSucceeded: "Action succeeded";
1392
+ readonly actionFailed: "Action failed";
1393
+ readonly discard: "Discard";
1394
+ readonly saveChanges: "Save changes";
1395
+ readonly unsavedCount: "{{count}} unsaved changes";
1396
+ readonly unsavedCount_one: "{{count}} unsaved change";
1397
+ readonly unsavedCount_other: "{{count}} unsaved changes";
1398
+ readonly cryptoRefusalTitle: "This deployment cannot encrypt secrets";
1399
+ readonly cryptoRefusalSubjectSuffix: "is declared encrypted, so nothing was written.";
1400
+ readonly cryptoRefusalNoSubject: "The declared-encrypted value was refused, so nothing was written.";
1401
+ readonly cryptoRefusalToast: "Cannot encrypt secrets: {{subject}}";
1402
+ readonly cryptoRefusalToastNoSubject: "Cannot encrypt secrets";
1403
+ };
1406
1404
  readonly loadingSteps: {
1407
1405
  readonly connecting: "Connecting to data source";
1408
1406
  readonly loadingConfig: "Loading configuration";
@@ -1433,6 +1431,7 @@ declare const en: {
1433
1431
  readonly general: "General";
1434
1432
  readonly navigation: "Navigation";
1435
1433
  readonly dataViews: "Data Views";
1434
+ readonly aiChat: "AI assistant";
1436
1435
  readonly preferences: "Preferences";
1437
1436
  };
1438
1437
  readonly openCommandPalette: "Open command palette";
@@ -1443,11 +1442,13 @@ declare const en: {
1443
1442
  readonly createRecord: "Create new record";
1444
1443
  readonly refreshData: "Refresh data";
1445
1444
  readonly editRecord: "Edit selected record";
1445
+ readonly newChat: "New chat";
1446
+ readonly toggleChatsList: "Toggle conversations list";
1446
1447
  readonly toggleDarkMode: "Toggle dark mode";
1447
1448
  };
1448
1449
  readonly commandPalette: {
1449
1450
  readonly title: "Command palette";
1450
- readonly placeholder: "Type a command or search...";
1451
+ readonly placeholder: "Type a command or search…";
1451
1452
  readonly noResults: "No results found.";
1452
1453
  readonly searching: "Searching…";
1453
1454
  readonly records: "Records";
@@ -1489,7 +1490,7 @@ declare const en: {
1489
1490
  readonly shareTitle: "Share this conversation";
1490
1491
  readonly shareDisabledTitle: "Start chatting to enable sharing";
1491
1492
  readonly newChat: "New";
1492
- readonly searchChats: "Search chats...";
1493
+ readonly searchChats: "Search chats…";
1493
1494
  readonly noChatsYet: "No chats yet";
1494
1495
  readonly noChatsDescription: "Start a new conversation to see it here.";
1495
1496
  readonly noMatchingChats: "No matching chats.";
@@ -1498,18 +1499,18 @@ declare const en: {
1498
1499
  readonly deleteConversation: "Delete conversation";
1499
1500
  readonly saveRename: "Save rename";
1500
1501
  readonly cancelRename: "Cancel rename";
1501
- readonly loadingHistory: "Loading conversation history...";
1502
+ readonly loadingHistory: "Loading conversation history…";
1502
1503
  readonly conversationReady: "Conversation ready";
1503
1504
  readonly preparingConversation: "Preparing a new conversation";
1504
1505
  readonly offlineDemoMode: "Offline demo mode — agent list unavailable";
1505
1506
  readonly sendFailedRateLimited: "You're sending messages too quickly. Your message is kept below — wait a moment and try again.";
1506
1507
  readonly sendFailedGeneric: "Couldn't send your message. It's kept below — please try again.";
1507
- readonly askAgent: "Ask {{agent}}...";
1508
+ readonly askAgent: "Ask {{agent}}…";
1508
1509
  readonly assistant: "Assistant";
1509
1510
  readonly liveCanvas: "Live preview — {{app}} (draft)";
1510
1511
  readonly liveCanvasUnlisted: "Live app — {{app}} (unlisted until published)";
1511
- readonly loadingAgents: "Loading agents...";
1512
- readonly askAnything: "Ask anything...";
1512
+ readonly loadingAgents: "Loading agents…";
1513
+ readonly askAnything: "Ask anything…";
1513
1514
  readonly emptyTitle: "Start a conversation";
1514
1515
  readonly emptyDescription: "Ask anything — the assistant has access to your current app context.";
1515
1516
  readonly switchAssistant: "Switch assistant";
@@ -1616,6 +1617,52 @@ declare const en: {
1616
1617
  readonly addAutomation: "Add an automation — an approval, a status flow, or a notification.";
1617
1618
  };
1618
1619
  };
1620
+ readonly collapseToDock: "Collapse to side panel";
1621
+ readonly switchApp: "Switch app";
1622
+ readonly switchAppLabel: "Build conversations by app";
1623
+ readonly newApp: "New app";
1624
+ readonly connectionWaiting: "Waiting for server…";
1625
+ readonly connectionStalled: "Still working…";
1626
+ readonly connectionOffline: "Connection lost — reconnecting…";
1627
+ readonly designingPlan: "Designing your app…";
1628
+ readonly designingPlanHint: {
1629
+ readonly data: "Mapping out the data you’ll track…";
1630
+ readonly objects: "Shaping objects and their fields…";
1631
+ readonly relations: "Connecting related records…";
1632
+ readonly lookups: "Setting up relationships and lookups…";
1633
+ readonly views: "Planning the screens and views…";
1634
+ readonly forms: "Laying out forms and lists…";
1635
+ readonly defaults: "Adding sensible defaults and validations…";
1636
+ readonly dashboard: "Sketching a dashboard to track it…";
1637
+ readonly review: "Double-checking the structure hangs together…";
1638
+ readonly finalize: "Pulling the plan together…";
1639
+ };
1640
+ readonly planBuilding: "Building…";
1641
+ readonly planBuilt: "Built";
1642
+ readonly planDeferred: "Not yet built";
1643
+ readonly planReady: "The plan is ready. Build it now, or tell me what to adjust.";
1644
+ readonly published: "Published";
1645
+ readonly publishFailed: "Publish failed";
1646
+ readonly unavailableTitle: "AI assistant unavailable";
1647
+ readonly unavailableDescription: "This deployment doesn't have an AI assistant enabled. Everything else works as usual.";
1648
+ readonly unavailableError: "Couldn't reach the AI service. It may be temporarily offline — try again, or head back home.";
1649
+ readonly unavailableRetry: "Try again";
1650
+ readonly unavailableHome: "Back to home";
1651
+ readonly dock: {
1652
+ readonly title: "Assistant";
1653
+ readonly description: "AI assistant chat";
1654
+ readonly resize: "Resize chat";
1655
+ readonly collapse: "Collapse chat";
1656
+ readonly maximize: "Open full page";
1657
+ readonly open: "Open assistant";
1658
+ };
1659
+ readonly group: {
1660
+ readonly today: "Today";
1661
+ readonly yesterday: "Yesterday";
1662
+ readonly previous7Days: "Previous 7 days";
1663
+ readonly previous30Days: "Previous 30 days";
1664
+ readonly older: "Older";
1665
+ };
1619
1666
  };
1620
1667
  readonly errors: {
1621
1668
  readonly somethingWentWrong: "Something went wrong";
@@ -1624,6 +1671,11 @@ declare const en: {
1624
1671
  readonly goHome: "Go Home";
1625
1672
  readonly errorDetails: "Error Details (dev only)";
1626
1673
  };
1674
+ readonly notFound: {
1675
+ readonly title: "Page not found";
1676
+ readonly description: "The URL you followed does not match any view in this app.";
1677
+ readonly back: "Go back";
1678
+ };
1627
1679
  readonly theme: {
1628
1680
  readonly toggle: "Toggle theme";
1629
1681
  readonly light: "Light";
@@ -1664,6 +1716,8 @@ declare const en: {
1664
1716
  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
1717
  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
1718
  readonly systemViewReadonly: "System view defined in code — read-only.";
1719
+ readonly cannotEditMetaView: "This view is built in and defined in code — it cannot be changed.";
1720
+ readonly cannotDeleteMetaView: "This view is built in and defined in code — it cannot be deleted.";
1667
1721
  readonly expandToPage: "Open as full page";
1668
1722
  readonly allRecords: "All Records";
1669
1723
  readonly exitDesignMode: "Exit Design Mode";
@@ -1697,7 +1751,7 @@ declare const en: {
1697
1751
  readonly exportPrintHint: "Export formats, printing, and record count display";
1698
1752
  readonly showAllFields: "Show All";
1699
1753
  readonly hideAllFields: "Hide All";
1700
- readonly searchFields: "Search fields...";
1754
+ readonly searchFields: "Search fields…";
1701
1755
  readonly title: "Title";
1702
1756
  readonly description: "Description";
1703
1757
  readonly data: "Data";
@@ -1776,8 +1830,8 @@ declare const en: {
1776
1830
  readonly imageField: "Image field";
1777
1831
  readonly imageFieldHelp: "The gallery cover comes from this image or attachment field.";
1778
1832
  readonly dateField: "Date field";
1779
- readonly selectField: "Select field...";
1780
- readonly selectOption: "Select...";
1833
+ readonly selectField: "Select field…";
1834
+ readonly selectOption: "Select…";
1781
1835
  readonly noEligibleFieldForType: "No eligible field of this type. Add one to the object first.";
1782
1836
  readonly viewTypeUnavailable: "This object has no field that can serve as \"{{field}}\".";
1783
1837
  readonly viewTypeUnavailableShort: "Not supported by this object.";
@@ -1851,7 +1905,7 @@ declare const en: {
1851
1905
  readonly ufDropdown: "Dropdown";
1852
1906
  readonly ufTabs: "Tabs";
1853
1907
  readonly ufToggle: "Toggle";
1854
- readonly ufAddField: "+ Add filter field...";
1908
+ readonly ufAddField: "+ Add filter field…";
1855
1909
  readonly ufNoFields: "No fields available";
1856
1910
  readonly ufAddTab: "+ Add tab";
1857
1911
  readonly ufTabLabel: "Label";
@@ -1883,11 +1937,21 @@ declare const en: {
1883
1937
  readonly passwordPlaceholder: "Enter your password";
1884
1938
  readonly forgotPasswordText: "Forgot password?";
1885
1939
  readonly submitButton: "Sign In";
1886
- readonly submittingButton: "Signing in...";
1940
+ readonly submittingButton: "Signing in…";
1887
1941
  readonly noAccountText: "Don't have an account?";
1888
1942
  readonly signUpText: "Sign up";
1889
1943
  readonly signingIn: "Signing you in…";
1890
1944
  readonly ssoHandoff: "Continue to {{target}}";
1945
+ readonly emailOrPhoneLabel: "Email or phone number";
1946
+ readonly emailOrPhonePlaceholder: "name@example.com or +1 555 000 0000";
1947
+ readonly phoneLabel: "Phone number";
1948
+ readonly phonePlaceholder: "+1 555 000 0000";
1949
+ readonly otpCodeLabel: "Verification code";
1950
+ readonly otpCodePlaceholder: "6-digit code";
1951
+ readonly sendOtpButton: "Get code";
1952
+ readonly resendOtpCountdownText: "Resend in {seconds}s";
1953
+ readonly usePhoneOtpText: "Sign in with verification code";
1954
+ readonly usePasswordSignInText: "Sign in with password instead";
1891
1955
  readonly devAdminHint: {
1892
1956
  readonly title: "Development instance";
1893
1957
  readonly body: "Sign in with the seeded dev admin:";
@@ -1913,7 +1977,7 @@ declare const en: {
1913
1977
  readonly passwordMismatchError: "Passwords do not match";
1914
1978
  readonly passwordTooShortError: "Password must be at least 8 characters";
1915
1979
  readonly submitButton: "Create Account";
1916
- readonly submittingButton: "Creating account...";
1980
+ readonly submittingButton: "Creating account…";
1917
1981
  readonly hasAccountText: "Already have an account?";
1918
1982
  readonly signInText: "Sign in";
1919
1983
  readonly errors: {
@@ -1934,12 +1998,25 @@ declare const en: {
1934
1998
  readonly emailLabel: "Email";
1935
1999
  readonly emailPlaceholder: "name@example.com";
1936
2000
  readonly submitButton: "Send Reset Link";
1937
- readonly submittingButton: "Sending...";
2001
+ readonly submittingButton: "Sending…";
1938
2002
  readonly successTitle: "Check your email";
1939
2003
  readonly successDescription: "We've sent a password reset link to {{email}}. Please check your inbox.";
1940
2004
  readonly backToSignInText: "Back to sign in";
1941
2005
  readonly rememberPasswordText: "Remember your password?";
1942
2006
  readonly signInText: "Sign in";
2007
+ readonly phoneLabel: "Phone number";
2008
+ readonly phonePlaceholder: "+1 555 000 0000";
2009
+ readonly otpCodeLabel: "Verification code";
2010
+ readonly otpCodePlaceholder: "6-digit code";
2011
+ readonly sendOtpButton: "Get code";
2012
+ readonly resendOtpCountdownText: "Resend in {seconds}s";
2013
+ readonly newPasswordLabel: "New password";
2014
+ readonly newPasswordPlaceholder: "Enter a new password";
2015
+ readonly resetButton: "Reset Password";
2016
+ readonly usePhoneResetText: "Reset via SMS code";
2017
+ readonly useEmailResetText: "Reset via email instead";
2018
+ readonly phoneSuccessTitle: "Password reset";
2019
+ readonly phoneSuccessDescription: "Your password has been reset. You can now sign in with your new password.";
1943
2020
  };
1944
2021
  readonly resetPassword: {
1945
2022
  readonly title: "Set a new password";
@@ -1973,6 +2050,7 @@ declare const en: {
1973
2050
  readonly resentSuccess: "Verification email sent!";
1974
2051
  readonly resentDescription: "Please check your inbox and click the verification link.";
1975
2052
  readonly resendFailed: "Cannot resend verification email";
2053
+ readonly resendUnavailable: "Email delivery may not be configured for this environment. Contact support if this persists.";
1976
2054
  readonly signInLink: "Go to sign in";
1977
2055
  readonly backToSignIn: "Back to sign in";
1978
2056
  readonly backToLogin: "Back to login";
@@ -2014,6 +2092,8 @@ declare const en: {
2014
2092
  readonly denyFailed: "Failed to deny request";
2015
2093
  readonly invalidTitle: "Invalid device link";
2016
2094
  readonly invalidDescription: "No device code was provided in the URL.";
2095
+ readonly disabledTitle: "Device authorization not enabled";
2096
+ readonly disabledDescription: "This deployment does not have device authorization enabled, so this device cannot be approved here.";
2017
2097
  readonly loading: "Loading…";
2018
2098
  readonly cancel: "Cancel";
2019
2099
  };
@@ -2069,6 +2149,28 @@ declare const en: {
2069
2149
  };
2070
2150
  };
2071
2151
  };
2152
+ readonly oauth: {
2153
+ readonly consent: {
2154
+ readonly title: "{{appName}} wants to access your account";
2155
+ readonly request: "{{appName}} is requesting permission{{suffix}}.";
2156
+ readonly unknownApp: "an application";
2157
+ readonly willAllow: "This app will be able to:";
2158
+ readonly scope: {
2159
+ readonly openid: "Confirm your identity";
2160
+ readonly profile: "Read your basic profile (name, picture)";
2161
+ readonly email: "Read your email address";
2162
+ readonly offlineAccess: "Stay signed in (refresh access)";
2163
+ };
2164
+ readonly deny: "Deny";
2165
+ readonly authorize: "Authorize";
2166
+ readonly submitting: "Authorizing…";
2167
+ readonly granted: "Access granted";
2168
+ readonly denied: "Access denied";
2169
+ readonly noRedirect: "No redirect URL returned by the server.";
2170
+ readonly failed: "Consent failed";
2171
+ readonly footer: "You can revoke access at any time from your account settings.";
2172
+ };
2173
+ };
2072
2174
  readonly profile: {
2073
2175
  readonly title: "Profile";
2074
2176
  readonly subtitle: "Manage your account settings";
@@ -2130,6 +2232,8 @@ declare const en: {
2130
2232
  readonly invite: "Invite member";
2131
2233
  readonly members: "Members";
2132
2234
  readonly settings: "Workspace settings";
2235
+ readonly multiOrgDisabled: "Creating new organizations is disabled on this instance.";
2236
+ readonly createFailed: "Failed to create workspace";
2133
2237
  };
2134
2238
  readonly help: {
2135
2239
  readonly onThisPage: "On this page";
@@ -2150,7 +2254,7 @@ declare const en: {
2150
2254
  readonly area: "Area";
2151
2255
  readonly scope: "Scope";
2152
2256
  readonly packageManagement: "Package management";
2153
- readonly searchNavigation: "Search navigation...";
2257
+ readonly searchNavigation: "Search navigation…";
2154
2258
  readonly recent: "Recent";
2155
2259
  readonly favorites: "Favorites";
2156
2260
  readonly starred: "Starred";
@@ -2166,8 +2270,8 @@ declare const en: {
2166
2270
  readonly switchObject: "Switch Object";
2167
2271
  readonly connection: {
2168
2272
  readonly connected: "Connected";
2169
- readonly connecting: "Connecting...";
2170
- readonly reconnecting: "Reconnecting...";
2273
+ readonly connecting: "Connecting…";
2274
+ readonly reconnecting: "Reconnecting…";
2171
2275
  readonly disconnected: "Disconnected";
2172
2276
  readonly error: "Connection Error";
2173
2277
  };
@@ -2209,7 +2313,7 @@ declare const en: {
2209
2313
  readonly starred: "Starred";
2210
2314
  readonly recent: "Recent items";
2211
2315
  };
2212
- readonly loading: "Loading workspace...";
2316
+ readonly loading: "Loading workspace…";
2213
2317
  readonly recent: "Recent";
2214
2318
  readonly starred: "Starred";
2215
2319
  readonly welcome: "Build your business system with AI";
@@ -2232,6 +2336,11 @@ declare const en: {
2232
2336
  readonly publishing: "Publishing…";
2233
2337
  readonly published: "Published! Your changes are live.";
2234
2338
  readonly publishFailed: "Publish failed";
2339
+ readonly nothing: "Nothing to publish.";
2340
+ readonly probeWarn: "Published, but verification found problems.";
2341
+ readonly seedWarn: "Published, but some sample data failed to load.";
2342
+ readonly publishedVerified: "Published & verified — {{count}} sample row(s) live.";
2343
+ readonly capabilityWarn: "Authoring check: {{count}} capability reference(s) resolve nowhere.";
2235
2344
  };
2236
2345
  readonly createFirstApp: "Create app manually";
2237
2346
  readonly systemSettings: "System Settings";
@@ -2289,6 +2398,9 @@ declare const en: {
2289
2398
  readonly roles: "Roles";
2290
2399
  readonly configuration: "Configuration";
2291
2400
  readonly createApp: "Create App";
2401
+ readonly administration: "Administration";
2402
+ readonly datasources: "Datasources";
2403
+ readonly documentation: "Documentation";
2292
2404
  };
2293
2405
  readonly activityFeed: {
2294
2406
  readonly title: "Recent Activity";
@@ -2317,7 +2429,7 @@ declare const en: {
2317
2429
  readonly search: {
2318
2430
  readonly title: "Search";
2319
2431
  readonly back: "Back";
2320
- readonly placeholder: "Search objects, dashboards, pages, reports...";
2432
+ readonly placeholder: "Search objects, dashboards, pages, reports…";
2321
2433
  readonly inputAriaLabel: "Search objects, dashboards, pages, reports";
2322
2434
  readonly resultsCount: "{{count}} result for \"{{query}}\"";
2323
2435
  readonly resultsCountPlural: "{{count}} results for \"{{query}}\"";
@@ -2336,6 +2448,7 @@ declare const en: {
2336
2448
  readonly empty: {
2337
2449
  readonly objectNotFound: "Object Not Found";
2338
2450
  readonly objectNotFoundDescription: "Object \"{{name}}\" definition missing. Check your configuration or navigate back to select a valid object.";
2451
+ readonly interfacePageSourceMissing: "This interface page references \"{{name}}\", which is not available.";
2339
2452
  readonly recordNotFound: "Record not found";
2340
2453
  readonly recordNotFoundDescription: "The record you are looking for does not exist or may have been deleted.";
2341
2454
  readonly pageNotFound: "Page Not Found";
@@ -2346,6 +2459,11 @@ declare const en: {
2346
2459
  readonly reportNotFoundDescription: "The report \"{{name}}\" could not be found. It may have been removed or renamed.";
2347
2460
  readonly noAppsConfigured: "No Apps Configured";
2348
2461
  readonly noAppsConfiguredDescription: "No applications have been registered. Create your first app or visit System Settings to configure your environment.";
2462
+ readonly appNotAvailable: "App not available";
2463
+ readonly appNotAvailableDescription: "This app is not available yet — it may still be publishing. Try again in a moment.";
2464
+ readonly appAccessDenied: "You don't have access to this app";
2465
+ readonly appAccessDeniedDescription: "This app exists, but your account is not authorized to open it. Ask an administrator to grant you access.";
2466
+ readonly appAccessDeniedHome: "Back to home";
2349
2467
  readonly createFirstApp: "Create Your First App";
2350
2468
  readonly systemSettings: "System Settings";
2351
2469
  readonly back: "Back";
@@ -2385,6 +2503,30 @@ declare const en: {
2385
2503
  readonly confirmNote: "Publishing releases all {{count}} pending drafts of this package atomically.";
2386
2504
  readonly publishConfirm: "Publish all";
2387
2505
  };
2506
+ readonly unpublishedBar: {
2507
+ readonly message: "Unpublished app — fully functional, but only builders can see it. Publish to make it visible to your users.";
2508
+ readonly publish: "Publish";
2509
+ readonly publishing: "Publishing…";
2510
+ readonly published: "Published! The app is now visible to your users.";
2511
+ readonly publishFailed: "Publish failed";
2512
+ };
2513
+ readonly history: {
2514
+ readonly button: "History";
2515
+ readonly title: "Build history";
2516
+ readonly description: "Every change to this app, newest first. Revert any step to undo it — no publish confirmation needed.";
2517
+ readonly loadFailed: "Could not load history:";
2518
+ readonly loadFailedUnavailable: "Commit store temporarily unreachable — this read did not happen, so no history is shown. Retry in a moment.";
2519
+ readonly loading: "Loading history…";
2520
+ readonly empty: "No history yet for this app.";
2521
+ readonly revertLabel: "Reverted a change";
2522
+ readonly applyLabel: "Build change";
2523
+ readonly revert: "revert";
2524
+ readonly items: "item(s)";
2525
+ readonly revertAction: "Revert";
2526
+ readonly reverted: "Reverted — the change has been undone.";
2527
+ readonly revertFailed: "Revert failed";
2528
+ readonly revertUnavailable: "Commit store temporarily unreachable — the revert may not have been applied. Reopen this history to check before retrying.";
2529
+ };
2388
2530
  };
2389
2531
  readonly renderer: {
2390
2532
  readonly noPageSchema: "No page schema provided";
@@ -2451,7 +2593,7 @@ declare const en: {
2451
2593
  readonly deleteFailed: "Failed to delete view";
2452
2594
  };
2453
2595
  readonly dashboardActions: {
2454
- readonly pdfPreparing: "Preparing PDF export…";
2596
+ readonly printDialogOpening: "Opening your browser’s print dialog (not a PDF export)";
2455
2597
  readonly exportFailed: "Export failed: {{message}}";
2456
2598
  readonly forecastSoon: "Forecast view coming soon";
2457
2599
  };
@@ -2486,6 +2628,140 @@ declare const en: {
2486
2628
  readonly emptyDescription: "Create your first workspace to get started.";
2487
2629
  readonly noMatches: "No workspaces match your search.";
2488
2630
  };
2631
+ readonly organization: {
2632
+ readonly roles: {
2633
+ readonly owner: "Owner";
2634
+ readonly admin: "Admin";
2635
+ readonly delegatedAdmin: "Delegated Admin";
2636
+ readonly member: "Member";
2637
+ };
2638
+ readonly errors: {
2639
+ readonly notAllowedToInvite: "You are not allowed to invite users to this organization";
2640
+ readonly notAllowedToInviteWithRole: "You are not allowed to invite a user with this role";
2641
+ readonly alreadyInvited: "This user has already been invited to this organization";
2642
+ readonly organizationExists: "Organization already exists";
2643
+ readonly slugTaken: "That URL slug is already taken";
2644
+ readonly notAllowedToCreate: "You are not allowed to create a new organization";
2645
+ readonly notTheRecipient: "You are not the recipient of the invitation";
2646
+ readonly invitationNotFound: "This invitation no longer exists or has expired";
2647
+ readonly unknown: "Something went wrong. Please try again.";
2648
+ };
2649
+ readonly backToList: "Back to organizations";
2650
+ readonly notFound: "Organization not found";
2651
+ readonly notFoundDescription: "This organization does not exist or you do not have access.";
2652
+ readonly tabs: {
2653
+ readonly members: "Members";
2654
+ readonly invitations: "Invitations";
2655
+ readonly settings: "Settings";
2656
+ };
2657
+ readonly members: {
2658
+ readonly title: "Members";
2659
+ readonly inviteMember: "Invite member";
2660
+ readonly inviteRestrictedNote: "Only organization admins can invite members.";
2661
+ readonly removeMember: "Remove member";
2662
+ readonly removeConfirmTitle: "Remove member?";
2663
+ readonly removeConfirmDescription: "This will remove {{name}} from the organization. They will lose access immediately.";
2664
+ readonly removeConfirmAction: "Remove";
2665
+ readonly memberRemoved: "Member removed";
2666
+ readonly removeFailed: "Failed to remove member";
2667
+ readonly roleUpdated: "Role updated";
2668
+ readonly roleUpdateFailed: "Failed to update role";
2669
+ readonly memberActions: "Member actions";
2670
+ readonly loadFailed: "Failed to load members";
2671
+ };
2672
+ readonly invitations: {
2673
+ readonly title: "Invitations";
2674
+ readonly empty: "No invitations found.";
2675
+ readonly expiresAt: "Expires";
2676
+ readonly linkCopied: "Invitation link copied";
2677
+ readonly copyFailed: "Failed to copy link";
2678
+ readonly canceled: "Invitation canceled";
2679
+ readonly cancelFailed: "Failed to cancel invitation";
2680
+ readonly cancelTitle: "Cancel invitation?";
2681
+ readonly cancelDescription: "The invitation for {{email}} will be revoked.";
2682
+ readonly cancelAction: "Cancel invitation";
2683
+ readonly inviteTitle: "Invite a member";
2684
+ readonly inviteDescription: "They will receive an invitation to join this organization.";
2685
+ readonly emailLabel: "Email";
2686
+ readonly roleLabel: "Role";
2687
+ readonly placementLabel: "Placement (optional)";
2688
+ readonly placementDescription: "Applied when the invitation is accepted. Only units and positions you may delegate are listed.";
2689
+ readonly businessUnitLabel: "Business unit";
2690
+ readonly businessUnitPlaceholder: "No placement";
2691
+ readonly positionsLabel: "Positions";
2692
+ readonly sendInvite: "Send invite";
2693
+ readonly sentTitle: "Invitation created";
2694
+ readonly sentDescription: "Share the link below with the invitee. They will need to sign in to accept.";
2695
+ readonly linkLabel: "Accept link";
2696
+ readonly invitedAs: "{{email}} invited as {{role}}";
2697
+ readonly copyLinkLabel: "Copy invitation link";
2698
+ readonly loadFailed: "Failed to load invitations";
2699
+ readonly inviteFailed: "Failed to invite member";
2700
+ readonly status: {
2701
+ readonly all: "All";
2702
+ readonly pending: "Pending";
2703
+ readonly accepted: "Accepted";
2704
+ readonly rejected: "Rejected";
2705
+ readonly canceled: "Canceled";
2706
+ };
2707
+ };
2708
+ readonly settings: {
2709
+ readonly generalTitle: "General";
2710
+ readonly generalDescription: "Update your organization information.";
2711
+ readonly readOnlyNote: "Only owners can change settings.";
2712
+ readonly nameLabel: "Organization name";
2713
+ readonly slugLabel: "Slug";
2714
+ readonly logoLabel: "Logo";
2715
+ readonly logoUpload: "Upload";
2716
+ readonly logoReplace: "Replace";
2717
+ readonly logoClear: "Remove";
2718
+ readonly logoUploaded: "Logo uploaded — save to apply";
2719
+ readonly logoUploadFailed: "Failed to upload logo";
2720
+ readonly save: "Save changes";
2721
+ readonly saved: "Settings saved";
2722
+ readonly saveFailed: "Failed to save settings";
2723
+ readonly leaveTitle: "Leave organization";
2724
+ readonly leaveDescription: "You will lose access to this organization.";
2725
+ readonly leaveAction: "Leave";
2726
+ readonly leaveConfirmTitle: "Leave organization?";
2727
+ readonly leaveConfirmDescription: "Are you sure you want to leave {{name}}? You will lose access immediately.";
2728
+ readonly leaveConfirmAction: "Leave";
2729
+ readonly leftOrg: "You have left the organization";
2730
+ readonly leaveFailed: "Failed to leave organization";
2731
+ readonly dangerZone: "Danger zone";
2732
+ readonly deleteTitle: "Delete organization";
2733
+ readonly deleteDescription: "Permanently delete this organization and all its data.";
2734
+ readonly deleteAction: "Delete";
2735
+ readonly deleteConfirmTitle: "Delete organization?";
2736
+ readonly deleteConfirmDescription: "This action is irreversible. All data will be permanently deleted. Type the organization slug to confirm.";
2737
+ readonly deleteConfirmSlugLabel: "Type \"{{slug}}\" to confirm";
2738
+ readonly deleteConfirmAction: "Delete organization";
2739
+ readonly deleted: "Organization deleted";
2740
+ readonly deleteFailed: "Failed to delete organization";
2741
+ };
2742
+ readonly accept: {
2743
+ readonly title: "You have been invited";
2744
+ readonly description: "You have been invited to join {{orgName}} as {{role}}.";
2745
+ readonly errorTitle: "Invitation unavailable";
2746
+ readonly goToOrgs: "Go to organizations";
2747
+ readonly loading: "Loading invitation…";
2748
+ readonly organization: "Organization";
2749
+ readonly role: "Role";
2750
+ readonly expiresAt: "Expires";
2751
+ readonly accept: "Accept invitation";
2752
+ readonly accepted: "Invitation accepted";
2753
+ readonly acceptFailed: "Failed to accept invitation";
2754
+ readonly decline: "Decline";
2755
+ readonly declined: "Invitation declined";
2756
+ readonly declineFailed: "Failed to decline invitation";
2757
+ };
2758
+ readonly switcher: {
2759
+ readonly label: "Switch organization";
2760
+ readonly groupLabel: "Working organization";
2761
+ readonly groupHint: "New records are created here. Views show data from all your organizations.";
2762
+ readonly manageMembers: "Manage members";
2763
+ };
2764
+ };
2489
2765
  readonly notifications: {
2490
2766
  readonly regionLabel: "Notifications";
2491
2767
  readonly empty: "No notifications";
@@ -2502,6 +2778,9 @@ declare const en: {
2502
2778
  readonly viewApprovals: "View approvals";
2503
2779
  readonly noPendingApprovals: "No pending approvals";
2504
2780
  readonly openApprovalsInbox: "Open Approvals Inbox";
2781
+ readonly badgeTotal: "{{total}} total";
2782
+ readonly badgeNotifications: "{{unread}} notifications";
2783
+ readonly badgeApprovals: "{{approvals}} pending approvals";
2505
2784
  };
2506
2785
  readonly publicForm: {
2507
2786
  readonly submit: "Submit";
@@ -2775,6 +3054,7 @@ declare const en: {
2775
3054
  readonly dismiss: "Dismiss";
2776
3055
  readonly openOnCloud: "Open on cloud";
2777
3056
  readonly backHome: "Back to home";
3057
+ readonly updateTo: "Update";
2778
3058
  };
2779
3059
  readonly install: {
2780
3060
  readonly dialogTitle: "Install {{name}}";
@@ -2791,6 +3071,33 @@ declare const en: {
2791
3071
  readonly localManifestConflict: "{{message}}\nTip: a local app already owns this manifest_id. Remove it from objectstack.config.ts first.";
2792
3072
  readonly localUnauthorized: "Sign in to this runtime first, then try again.";
2793
3073
  readonly localMarketplaceUnavailable: "This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.";
3074
+ readonly updateTo: "Update → v{{version}}";
3075
+ readonly installedVersion: "Installed v{{version}}";
3076
+ };
3077
+ readonly org: {
3078
+ readonly heading: "Your organization";
3079
+ readonly install: "Install";
3080
+ readonly installed: "Installed {{name}}";
3081
+ readonly installedBadge: "Installed";
3082
+ readonly installing: "Installing…";
3083
+ };
3084
+ readonly disclosure: {
3085
+ readonly containsCode: "This package contains code";
3086
+ readonly reviewed: "Reviewed & approved";
3087
+ readonly unreviewed: "Not yet reviewed";
3088
+ readonly signed: "Signed";
3089
+ readonly grantsIntro: "On install, this package will be granted:";
3090
+ readonly services: "Platform services";
3091
+ readonly hooks: "Lifecycle hooks";
3092
+ readonly network: "Network access";
3093
+ readonly fs: "Filesystem access";
3094
+ readonly noPermissions: "Requests no special permissions.";
3095
+ readonly acknowledge: "I understand this package runs code and grants the permissions above.";
3096
+ readonly runtime: {
3097
+ readonly node: "In-process · full trust";
3098
+ readonly sandbox: "Sandboxed";
3099
+ readonly worker: "Out-of-process";
3100
+ };
2794
3101
  };
2795
3102
  readonly suggestedBindings: {
2796
3103
  readonly promptEveryone: "This app suggests granting \"{{set}}\" to all signed-in users (the Everyone position).";
@@ -3078,9 +3385,9 @@ declare const en: {
3078
3385
  readonly reactThumbsUp: "React with thumbs up";
3079
3386
  readonly reactHeart: "React with heart";
3080
3387
  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)";
3388
+ readonly replyingTo: "Replying to {{name}}…";
3389
+ readonly replyingToComment: "Replying to comment…";
3390
+ readonly commentPlaceholder: "Add a comment… (use @ to mention)";
3084
3391
  readonly send: "Send";
3085
3392
  readonly presentUserCount: "{{count}} users present";
3086
3393
  readonly presentUserCountOne: "{{count}} user present";
@@ -3091,6 +3398,58 @@ declare const en: {
3091
3398
  readonly statusIdle: "idle";
3092
3399
  readonly statusAway: "away";
3093
3400
  };
3401
+ readonly wizard: {
3402
+ readonly missingRequired: "Please complete the required fields: {{fields}}";
3403
+ };
3404
+ readonly appManagement: {
3405
+ readonly title: "Applications";
3406
+ readonly subtitle: "Manage all configured applications";
3407
+ readonly newApp: "New App";
3408
+ readonly searchLabel: "Search apps";
3409
+ readonly searchPlaceholder: "Search apps…";
3410
+ readonly selectedCount: "{{n}} selected";
3411
+ readonly bulkEnable: "Enable";
3412
+ readonly bulkDisable: "Disable";
3413
+ readonly selectAll: "Select all ({{n}})";
3414
+ readonly empty: "No apps found.";
3415
+ readonly defaultBadge: "Default";
3416
+ readonly active: "Active";
3417
+ readonly inactive: "Inactive";
3418
+ readonly selectApp: "Select {{name}}";
3419
+ readonly openApp: "Open app";
3420
+ readonly openAppNamed: "Open {{name}}";
3421
+ readonly editApp: "Edit app";
3422
+ readonly editAppNamed: "Edit {{name}}";
3423
+ readonly editWithAi: "Edit with AI";
3424
+ readonly editWithAiNamed: "Edit {{name}} with AI";
3425
+ readonly enableApp: "Enable app";
3426
+ readonly disableApp: "Disable app";
3427
+ readonly enableAppNamed: "Enable {{name}}";
3428
+ readonly disableAppNamed: "Disable {{name}}";
3429
+ readonly setDefault: "Set as default";
3430
+ readonly setDefaultNamed: "Set {{name}} as default";
3431
+ readonly deleteApp: "Delete app";
3432
+ readonly deleteAppNamed: "Delete {{name}}";
3433
+ readonly confirmDelete: "Click again to confirm delete";
3434
+ readonly confirmDeleteNamed: "Confirm delete {{name}}";
3435
+ readonly toast: {
3436
+ readonly noClient: "Cannot reach the metadata service";
3437
+ readonly unknownError: "unknown error";
3438
+ readonly appEnabled: "{{name}} enabled";
3439
+ readonly appDisabled: "{{name}} disabled";
3440
+ readonly toggleFailed: "Failed to toggle app status: {{reason}}";
3441
+ readonly setDefaultDone: "{{name}} set as default";
3442
+ readonly setDefaultFailed: "Failed to set default app: {{reason}}";
3443
+ readonly appDeleted: "{{name}} deleted";
3444
+ readonly deleteFailed: "Failed to delete app: {{reason}}";
3445
+ readonly bulkEnabled: "{{n}} apps enabled";
3446
+ readonly bulkDisabled: "{{n}} apps disabled";
3447
+ readonly bulkFailed: "Failed for {{n}}: {{details}}";
3448
+ readonly bulkFailureEntry: "{{name}} ({{reason}})";
3449
+ readonly bulkFailureJoiner: "; ";
3450
+ readonly bulkOperationFailed: "Bulk operation failed: {{reason}}";
3451
+ };
3452
+ };
3094
3453
  };
3095
3454
  export default en;
3096
3455
  export type TranslationKeys = typeof en;