@posiwise/admin-module 0.0.266 → 0.0.267

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.
@@ -74,10 +74,10 @@ import * as i14 from "@angular/cdk/drag-drop";
74
74
  import { moveItemInArray } from "@angular/cdk/drag-drop";
75
75
  import groupBy from "lodash/groupBy";
76
76
  import { Subject, catchError, finalize, forkJoin, map, of, takeUntil } from "rxjs";
77
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
77
78
  import { debounceTime, finalize as finalize$1, switchMap } from "rxjs/operators";
78
79
  import * as i3$1 from "@angular/platform-browser";
79
80
  import * as i5 from "primeng/tabs";
80
- import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
81
81
  import uniqBy from "lodash/uniqBy";
82
82
  import moment from "moment";
83
83
  import { StatusCodes } from "http-status-codes";
@@ -1037,7 +1037,7 @@ var AmbassadorPayoutsTabsComponent = class AmbassadorPayoutsTabsComponent {
1037
1037
  constructor() {
1038
1038
  this.items = [{
1039
1039
  id: "ambassador-payouts",
1040
- label: "Ambassador Payouts",
1040
+ labelKey: "Admin.AmbassadorPayouts.Title",
1041
1041
  icon: "fa fa-handshake",
1042
1042
  routerLink: ["/admin/ambassador-payouts/list"]
1043
1043
  }];
@@ -1439,7 +1439,7 @@ var GlobalConfigListComponent = class GlobalConfigListComponent extends AppBaseC
1439
1439
  onDelete(id) {
1440
1440
  this.confirmDialog.confirmDelete({
1441
1441
  textKey: "Common.Confirm.Delete.TextSimple",
1442
- textParams: { entityType: "global config" }
1442
+ textParams: { entityType: this.translation.translate("Admin.Entity.GlobalConfig") }
1443
1443
  }).then((ok) => {
1444
1444
  if (!ok) return;
1445
1445
  this.adminService.deleteGlobalConfig(id).subscribe(() => {
@@ -1787,7 +1787,7 @@ var GlobalConfigTabsComponent = class GlobalConfigTabsComponent {
1787
1787
  constructor() {
1788
1788
  this.items = [{
1789
1789
  id: "global-config",
1790
- label: "Global Configs",
1790
+ labelKey: "Menu.Admin.GlobalConfigs",
1791
1791
  icon: "fa fa-fw fa-cog",
1792
1792
  routerLink: ["/admin/global-config/list"]
1793
1793
  }];
@@ -1877,8 +1877,8 @@ var ContactUsListComponent = class ContactUsListComponent extends AppBaseCompone
1877
1877
  }
1878
1878
  toggleRecord(id, action) {
1879
1879
  this.confirmDialog.open({
1880
- title: "Update",
1881
- text: `Are you sure want to ${action ? "Close" : "reOpen"} this record?`,
1880
+ titleKey: "Button.Update",
1881
+ textKey: action ? "Admin.ContactUs.Confirm.Close" : "Admin.ContactUs.Confirm.Reopen",
1882
1882
  destructive: true
1883
1883
  }).then((ok) => {
1884
1884
  if (!ok) return;
@@ -2285,7 +2285,7 @@ var ContactUsTabsComponent = class ContactUsTabsComponent {
2285
2285
  constructor() {
2286
2286
  this.items = [{
2287
2287
  id: "contact-us",
2288
- label: "Contact Us",
2288
+ labelKey: "Menu.Admin.ContactUs",
2289
2289
  icon: "far fa-fw fa-address-book",
2290
2290
  routerLink: ["/admin/contact-us/list"]
2291
2291
  }];
@@ -2970,12 +2970,12 @@ var CredentialsTabComponent = class CredentialsTabComponent {
2970
2970
  constructor() {
2971
2971
  this.items = [{
2972
2972
  id: "list",
2973
- label: "Credentials",
2973
+ labelKey: "Menu.Admin.Credentials",
2974
2974
  icon: "fas fa-file-signature",
2975
2975
  routerLink: ["/admin/credentials/list"]
2976
2976
  }, {
2977
2977
  id: "subscription-credentials",
2978
- label: "Subscription Credentials",
2978
+ labelKey: "Admin.Credentials.Subscription.Title",
2979
2979
  icon: "fa fa-fw fa-tag",
2980
2980
  routerLink: ["/admin/credentials/subscription"]
2981
2981
  }];
@@ -3098,7 +3098,7 @@ var SubscriptionCredentialsComponent = class SubscriptionCredentialsComponent ex
3098
3098
  onDelete(id) {
3099
3099
  this.confirmDialog.confirmDelete({
3100
3100
  textKey: "Common.Confirm.Delete.TextSimple",
3101
- textParams: { entityType: "subscription credential" }
3101
+ textParams: { entityType: this.translation.translate("Admin.Entity.SubscriptionCredential") }
3102
3102
  }).then((ok) => {
3103
3103
  if (!ok) return;
3104
3104
  this.adminService.deleteSubscriptionCredential(id, this.subscriptionId).subscribe(() => {
@@ -4100,10 +4100,10 @@ var DomainConfigBuildComponent = class DomainConfigBuildComponent extends AppBas
4100
4100
  }).subscribe((res) => {
4101
4101
  this.masterSubscriptionProductList = [{
4102
4102
  id: null,
4103
- name: "Select a master product"
4103
+ name: this.translation.translate("Admin.DomainConfig.Placeholder.MasterProduct")
4104
4104
  }, ...res?.options?.master_subscription?.products ?? []];
4105
4105
  this.masterSubscriptionsList = [{
4106
- label: "Select a master subscription",
4106
+ label: this.translation.translate("Admin.DomainConfig.Placeholder.MasterSubscription"),
4107
4107
  value: null
4108
4108
  }, ...(res?.options?.master_subscription?.subscriptions ?? []).map((sub) => ({
4109
4109
  label: sub.organisation ? `${sub.organisation} - ${sub.contact_name}` : sub.contact_name,
@@ -4111,20 +4111,20 @@ var DomainConfigBuildComponent = class DomainConfigBuildComponent extends AppBas
4111
4111
  }))];
4112
4112
  this.subscriptionTosList = [{
4113
4113
  id: null,
4114
- title: "Select a main TOS"
4114
+ title: this.translation.translate("Admin.DomainConfig.Placeholder.MainTos")
4115
4115
  }, ...res?.options?.master_subscription?.subscription_tos ?? []];
4116
4116
  this.crmSubscriptionsList = [{
4117
4117
  id: null,
4118
4118
  organisation: null,
4119
- contact_name: "Select a CRM subscription"
4119
+ contact_name: this.translation.translate("Admin.DomainConfig.Placeholder.CrmSubscription")
4120
4120
  }, ...res?.options?.master_crm?.subscriptions ?? []];
4121
4121
  this.crmSourcesList = [{
4122
4122
  id: null,
4123
- name: "Select a CRM source"
4123
+ name: this.translation.translate("Admin.DomainConfig.Placeholder.CrmSource")
4124
4124
  }, ...res?.options?.master_crm?.sources ?? []];
4125
4125
  this.crmProductList = [{
4126
4126
  id: null,
4127
- name: "Select a CRM product",
4127
+ name: this.translation.translate("Admin.DomainConfig.Placeholder.CrmProduct"),
4128
4128
  subscription_id: null
4129
4129
  }, ...res?.options?.master_crm?.products ?? []];
4130
4130
  this.productsList = this.groupProducts(res?.getProduct?.products);
@@ -4965,21 +4965,20 @@ var DomainConfigCoreComponent = class DomainConfigCoreComponent extends AppBaseC
4965
4965
  this.submitted = false;
4966
4966
  this.buttonBusy = false;
4967
4967
  this.routers = ROUTERS;
4968
- this.layoutOptions = [
4969
- {
4970
- label: "Layout 1 - Default",
4971
- value: "Layout-1"
4972
- },
4973
- {
4974
- label: "Layout 2 - Rounded",
4975
- value: "Layout-2"
4976
- },
4977
- {
4978
- label: "Layout 3 - Squared",
4979
- value: "Layout-3"
4980
- }
4981
- ];
4968
+ this.layoutOptions = [];
4969
+ this.destroyRef = inject(DestroyRef);
4982
4970
  this.form = AppAdmin.domainConfigCoreForm();
4971
+ this.translation.selectTranslation().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
4972
+ this.layoutOptions = [
4973
+ 1,
4974
+ 2,
4975
+ 3
4976
+ ].map((n) => ({
4977
+ label: this.translation.translate(`Admin.DomainConfig.Layout.Option${n}`),
4978
+ value: `Layout-${n}`
4979
+ }));
4980
+ this.cdr.markForCheck();
4981
+ });
4983
4982
  }
4984
4983
  ngOnInit() {
4985
4984
  this.route.queryParams.subscribe((params) => {
@@ -6875,7 +6874,7 @@ var DomainConfigListComponent = class DomainConfigListComponent extends AppBaseC
6875
6874
  onDelete(id) {
6876
6875
  this.confirmDialog.confirmDelete({
6877
6876
  textKey: "Common.Confirm.Delete.TextSimple",
6878
- textParams: { entityType: "domain config" }
6877
+ textParams: { entityType: this.translation.translate("Admin.Entity.DomainConfig") }
6879
6878
  }).then((ok) => {
6880
6879
  if (!ok) return;
6881
6880
  this.adminService.deleteDomainConfig(id, this.subscriptionId).subscribe((res) => {
@@ -7242,7 +7241,7 @@ var DomainConfigTabsComponent = class DomainConfigTabsComponent {
7242
7241
  constructor() {
7243
7242
  this.items = [{
7244
7243
  id: "domain-config",
7245
- label: "Domains",
7244
+ labelKey: "Menu.Admin.Domains",
7246
7245
  icon: "fa fa-fw fa-cog",
7247
7246
  routerLink: ["/admin/domain-config/list"]
7248
7247
  }];
@@ -7344,7 +7343,7 @@ var AddEditFaqComponent = class AddEditFaqComponent extends AppBaseComponent {
7344
7343
  ...data,
7345
7344
  id: this.id
7346
7345
  });
7347
- else this.toast.error("Something went wrong. Please contact support if the problem persists.");
7346
+ else this.toast.error(this.translation.translate("Admin.Shared.SomethingWentWrong"));
7348
7347
  this.cdr.markForCheck();
7349
7348
  }).add(() => {
7350
7349
  this.isLoading = false;
@@ -8422,7 +8421,7 @@ var FaqTabsComponent = class FaqTabsComponent {
8422
8421
  constructor() {
8423
8422
  this.items = [{
8424
8423
  id: "faq",
8425
- label: "FAQs",
8424
+ labelKey: "Menu.Admin.Faqs",
8426
8425
  icon: "far fa-fw fa-book",
8427
8426
  routerLink: ["/admin/faq/list"]
8428
8427
  }];
@@ -9072,14 +9071,15 @@ var FeatureFlagRulesComponent = class FeatureFlagRulesComponent extends AppBaseC
9072
9071
  }
9073
9072
  deleteRule(rule) {
9074
9073
  this.confirmDialog.open({
9075
- title: "Delete feature flag rule?",
9076
- text: `This will remove the rule with target type ${rule.target_type}.`,
9074
+ titleKey: "Admin.FeatureFlags.Rules.DeleteConfirm.Title",
9075
+ textKey: "Admin.FeatureFlags.Rules.DeleteConfirm.Text",
9076
+ textParams: { targetType: rule.target_type },
9077
9077
  destructive: true,
9078
- confirmLabel: "Delete"
9078
+ confirmLabelKey: "Button.Delete"
9079
9079
  }).then((ok) => {
9080
9080
  if (!ok) return;
9081
9081
  this.adminService.deleteFeatureFlagRule(this.featureFlagId, rule.id).subscribe(() => {
9082
- this.toast.success("Feature flag rule has been destroyed.");
9082
+ this.toast.success(this.translation.translate("Admin.FeatureFlags.Rules.DeletedMessage"));
9083
9083
  this.loadRules();
9084
9084
  if (this.editingRuleId === rule.id) this.resetRuleForm();
9085
9085
  });
@@ -9581,18 +9581,19 @@ var FeatureFlagsListComponent = class FeatureFlagsListComponent extends AppBaseC
9581
9581
  onDelete(item) {
9582
9582
  const name = item.name?.trim();
9583
9583
  const key = item.key?.trim();
9584
- const displayName = this.nonEmpty(name) ?? this.nonEmpty(key) ?? "this feature flag";
9584
+ const displayName = this.nonEmpty(name) ?? this.nonEmpty(key);
9585
9585
  this.confirmDialog.open({
9586
- title: "Delete feature flag?",
9587
- text: `This will remove ${displayName}.`,
9586
+ titleKey: "Admin.FeatureFlags.DeleteConfirm.Title",
9587
+ textKey: displayName ? "Admin.FeatureFlags.DeleteConfirm.Text" : "Admin.FeatureFlags.DeleteConfirm.TextUnnamed",
9588
+ textParams: { name: displayName },
9588
9589
  destructive: true,
9589
- confirmLabel: "Delete"
9590
+ confirmLabelKey: "Button.Delete"
9590
9591
  }).then((ok) => {
9591
9592
  if (!ok) return;
9592
9593
  this.buttonBusy = true;
9593
9594
  this.adminService.deleteFeatureFlag(item.id).subscribe({
9594
9595
  next: () => {
9595
- this.toast.success("Feature flag has been destroyed.");
9596
+ this.toast.success(this.translation.translate("Admin.FeatureFlags.DeletedMessage"));
9596
9597
  this.loadFeatureFlags({
9597
9598
  page: 1,
9598
9599
  page_size: PAGE_SIZE
@@ -9912,7 +9913,7 @@ var FeatureFlagsTabsComponent = class FeatureFlagsTabsComponent {
9912
9913
  constructor() {
9913
9914
  this.items = [{
9914
9915
  id: "feature-flags",
9915
- label: "Feature Flags",
9916
+ labelKey: "Menu.Admin.FeatureFlags",
9916
9917
  icon: "fa fa-fw fa-toggle-on",
9917
9918
  routerLink: ["/admin/feature-flags/list"]
9918
9919
  }];
@@ -10198,7 +10199,7 @@ var FeedbackQuestionsListComponent = class FeedbackQuestionsListComponent extend
10198
10199
  onDelete(id) {
10199
10200
  this.confirmDialog.confirmDelete({
10200
10201
  textKey: "Common.Confirm.Delete.TextSimple",
10201
- textParams: { entityType: "feedback question" }
10202
+ textParams: { entityType: this.translation.translate("Admin.Entity.FeedbackQuestion") }
10202
10203
  }).then((ok) => {
10203
10204
  if (!ok) return;
10204
10205
  this.adminService.deleteFeedbackQuestion(id, this.subscriptionId).subscribe((res) => {
@@ -10758,12 +10759,12 @@ var GeneralTabsComponent = class GeneralTabsComponent {
10758
10759
  constructor() {
10759
10760
  this.items = [{
10760
10761
  id: "misc",
10761
- label: "MISC",
10762
+ labelKey: "Admin.Generic.Tabs.Misc",
10762
10763
  icon: "far fa-fw fa-book",
10763
10764
  routerLink: ["/admin/generic/misc"]
10764
10765
  }, {
10765
10766
  id: "insight",
10766
- label: "INSIGHT",
10767
+ labelKey: "Admin.Tabs.Insight",
10767
10768
  icon: "far fa-fw fa-signature",
10768
10769
  routerLink: ["/admin/generic/insight"]
10769
10770
  }];
@@ -11249,7 +11250,7 @@ var IncidentListComponent = class IncidentListComponent extends AppBaseComponent
11249
11250
  onDelete(incident) {
11250
11251
  this.confirmDialog.confirmDelete({
11251
11252
  textKey: "Common.Confirm.Delete.TextSimple",
11252
- textParams: { entityType: "incident" }
11253
+ textParams: { entityType: this.translation.translate("Admin.Entity.Incident") }
11253
11254
  }).then((ok) => {
11254
11255
  if (!ok) return;
11255
11256
  this.commonService.deleteIncidentAdmin(incident.id, this.subscriptionId).subscribe(() => {
@@ -11601,7 +11602,7 @@ var IncidentTabsComponent = class IncidentTabsComponent {
11601
11602
  constructor() {
11602
11603
  this.items = [{
11603
11604
  id: "incident",
11604
- label: "Incidents",
11605
+ labelKey: "Menu.Admin.Incidents",
11605
11606
  icon: "far fa-fw fa-book",
11606
11607
  routerLink: ["/admin/incident/list"]
11607
11608
  }];
@@ -12167,7 +12168,7 @@ var LoginNotificationTabsComponent = class LoginNotificationTabsComponent {
12167
12168
  constructor() {
12168
12169
  this.items = [{
12169
12170
  id: "login-notification",
12170
- label: "Notifications",
12171
+ labelKey: "Menu.Admin.Notifications",
12171
12172
  icon: "fa fa-fw fa-bell",
12172
12173
  routerLink: ["/admin/login-notifications/list"]
12173
12174
  }];
@@ -12276,7 +12277,7 @@ var LoginNotificationsListComponent = class LoginNotificationsListComponent exte
12276
12277
  onDelete(id) {
12277
12278
  this.confirmDialog.confirmDelete({
12278
12279
  textKey: "Common.Confirm.Delete.TextSimple",
12279
- textParams: { entityType: "login notification" }
12280
+ textParams: { entityType: this.translation.translate("Admin.Entity.LoginNotification") }
12280
12281
  }).then((ok) => {
12281
12282
  if (!ok) return;
12282
12283
  this.adminService.deleteLoginNotification(id, this.subscriptionId).subscribe((res) => {
@@ -13384,7 +13385,7 @@ var MailerComponent = class MailerComponent extends AppBaseComponent {
13384
13385
  super(injector);
13385
13386
  this.items = [{
13386
13387
  id: "mailer",
13387
- label: "Mailers",
13388
+ labelKey: "Menu.Admin.Mailers",
13388
13389
  icon: "fa fa-fw fa-envelope",
13389
13390
  routerLink: ["/admin/mailers"]
13390
13391
  }];
@@ -15059,7 +15060,7 @@ var NewslettersItemsComponent = class NewslettersItemsComponent extends AppBaseC
15059
15060
  onDelete(item) {
15060
15061
  this.confirmDialog.open({
15061
15062
  titleKey: "Common.Confirm.Delete.Title",
15062
- titleParams: { entityType: "newsletter item" },
15063
+ titleParams: { entityType: this.translation.translate("Admin.Entity.NewsletterItem") },
15063
15064
  textKey: "Common.Confirm.Delete.Text",
15064
15065
  textParams: { name: item.title },
15065
15066
  destructive: true
@@ -15101,8 +15102,9 @@ var NewslettersItemsComponent = class NewslettersItemsComponent extends AppBaseC
15101
15102
  }
15102
15103
  sendTestEmail(item) {
15103
15104
  this.confirmDialog.open({
15104
- title: "Send Email",
15105
- text: `A test email will be sent to "${this.user.email}". Do you want to continue?`
15105
+ titleKey: "Admin.Newsletter.Items.SendEmailConfirm.Title",
15106
+ textKey: "Admin.Newsletter.Items.SendEmailConfirm.Text",
15107
+ textParams: { email: this.user.email }
15106
15108
  }).then((ok) => {
15107
15109
  if (!ok) return;
15108
15110
  this.adminService.sendTestMail(item.id, this.subscriptionId).subscribe((response) => {
@@ -15728,7 +15730,7 @@ var NewslettersListComponent = class NewslettersListComponent extends AppBaseCom
15728
15730
  onDelete(item) {
15729
15731
  this.confirmDialog.open({
15730
15732
  titleKey: "Common.Confirm.Delete.Title",
15731
- titleParams: { entityType: "newsletter" },
15733
+ titleParams: { entityType: this.translation.translate("Admin.Entity.Newsletter") },
15732
15734
  textKey: "Common.Confirm.Delete.Text",
15733
15735
  textParams: { name: item.name },
15734
15736
  destructive: true
@@ -16079,19 +16081,19 @@ var NewsletterComponent = class NewsletterComponent extends AppBaseComponent {
16079
16081
  this.items = [
16080
16082
  {
16081
16083
  id: "newsletter",
16082
- label: "Newsletter Categories",
16084
+ labelKey: "Admin.Newsletter.List.Title",
16083
16085
  icon: "fa fa-fw fa-book",
16084
16086
  routerLink: ["/admin/newsletter/list"]
16085
16087
  },
16086
16088
  {
16087
16089
  id: "items",
16088
- label: "Newsletter Items",
16090
+ labelKey: "Admin.Newsletter.Items.Title",
16089
16091
  icon: "fa fa-fw fa-calendar",
16090
16092
  routerLink: ["/admin/newsletter/items"]
16091
16093
  },
16092
16094
  {
16093
16095
  id: "insight",
16094
- label: "Insight",
16096
+ labelKey: "Admin.Tabs.Insight",
16095
16097
  icon: "fa fa-fw fa-signature",
16096
16098
  routerLink: ["/admin/newsletter/insight"],
16097
16099
  visible: this.permissionService.evaluatePermissions(PERMISSION_NAMES.SuperAdmin)
@@ -16693,7 +16695,7 @@ var OauthClientsTabsComponent = class OauthClientsTabsComponent {
16693
16695
  constructor() {
16694
16696
  this.items = [{
16695
16697
  id: "oauth-clients",
16696
- label: "MCP OAuth Clients",
16698
+ labelKey: "Admin.OauthClients.Title",
16697
16699
  icon: "fas fa-robot",
16698
16700
  routerLink: ["/admin/oauth-clients/list"]
16699
16701
  }];
@@ -16771,7 +16773,7 @@ var PermissionsDetailsComponent = class PermissionsDetailsComponent extends AppB
16771
16773
  this.isLoading = false;
16772
16774
  this.permissions = response.permissions.find((x) => x.id === this.id);
16773
16775
  if (this.permissions) this.form.patchValue(this.permissions);
16774
- else if (this.id) this.toast.error("Record Not Found");
16776
+ else if (this.id) this.toast.error(this.translation.translate("Admin.Shared.RecordNotFound"));
16775
16777
  }
16776
16778
  this.cdr.markForCheck();
16777
16779
  });
@@ -16796,7 +16798,7 @@ var PermissionsDetailsComponent = class PermissionsDetailsComponent extends AppB
16796
16798
  });
16797
16799
  else {
16798
16800
  this.buttonBusy = true;
16799
- this.toast.error("Something went wrong. Please contact support if the problem persists.");
16801
+ this.toast.error(this.translation.translate("Admin.Shared.SomethingWentWrong"));
16800
16802
  this.buttonBusy = false;
16801
16803
  }
16802
16804
  }
@@ -17416,12 +17418,12 @@ var PermissionsTabsComponent = class PermissionsTabsComponent {
17416
17418
  constructor() {
17417
17419
  this.items = [{
17418
17420
  id: "permissions",
17419
- label: "Permissions",
17421
+ labelKey: "Label.Permissions",
17420
17422
  icon: "fa fa-fw fa-list",
17421
17423
  routerLink: ["/admin/permissions/list"]
17422
17424
  }, {
17423
17425
  id: "role_management",
17424
- label: "Roles",
17426
+ labelKey: "Label.Roles",
17425
17427
  icon: "fa fa-fw fa-list",
17426
17428
  routerLink: ["/admin/permissions/roles-list"]
17427
17429
  }];
@@ -17479,11 +17481,11 @@ var RoleDetailsComponent = class RoleDetailsComponent extends AppBaseComponent {
17479
17481
  this.isLoading = true;
17480
17482
  this.items = [{
17481
17483
  id: "details",
17482
- label: "Role details",
17484
+ labelKey: "Admin.Roles.Tabs.Details",
17483
17485
  icon: "fa fa-fw fa-user-cog"
17484
17486
  }, {
17485
17487
  id: "permission",
17486
- label: "Role Permissions",
17488
+ labelKey: "Admin.Roles.Tabs.Permissions",
17487
17489
  icon: "fa fa-fw fa-signature"
17488
17490
  }];
17489
17491
  [this.activeItem] = this.items;
@@ -17603,7 +17605,7 @@ var RoleDetailsComponent = class RoleDetailsComponent extends AppBaseComponent {
17603
17605
  }],
17604
17606
  usesInheritance: true,
17605
17607
  ngImport: i0,
17606
- template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n @for (item of items; track item) {\n <p-tab [value]=\"item.id\">\n @if (item.icon) {\n <i [class]=\"item.icon\" aria-hidden=\"true\"></i>\n }\n <span>{{ item.label }}</span>\n </p-tab>\n }\n </p-tablist>\n </p-tabs>\n\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n @if (activeItem.id === 'details') {\n <div class=\"mb-4 mt-4\">\n <div class=\"d-flex align-items-center\">\n <div class=\"me-auto col-xs-6\">\n <a [attr.aria-label]=\"'Admin.Permissions.NavigateBack' | transloco\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">{{ 'Admin.Permissions.Role.Title' | transloco }}: {{ role?.name }}</h3>\n </div>\n </div>\n </div>\n @if (isLoading) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (!isLoading) {\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-md-8\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.RoleName' | transloco\"\n name=\"name\"\n controlId=\"role-name\">\n <input type=\"text\"\n id=\"role-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [placeholder]=\"'Admin.Roles.Placeholder.RoleName' | transloco\"\n [attr.aria-label]=\"'Admin.Roles.RoleName' | transloco\" />\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-12 col-md-4\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.IsActive' | transloco\"\n name=\"active\"\n controlId=\"role-active\"\n [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n formControlName=\"active\"\n name=\"active\"\n [attr.aria-labelledby]=\"'role-active-label'\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n </div>\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n *rbacAllow=\"'Pages.Admin.Roles.Create'\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n }\n }\n\n @if (activeItem.id === 'permission') {\n <div class=\"p-4\">\n @if (permissions) {\n <permission-tree [data]=\"permissions\"\n #permissionTree></permission-tree>\n <div class=\"row mt-5 text-end\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"savePermission()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n",
17608
+ template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n @for (item of items; track item) {\n <p-tab [value]=\"item.id\">\n @if (item.icon) {\n <i [class]=\"item.icon\" aria-hidden=\"true\"></i>\n }\n <span>{{ item.labelKey | transloco }}</span>\n </p-tab>\n }\n </p-tablist>\n </p-tabs>\n\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n @if (activeItem.id === 'details') {\n <div class=\"mb-4 mt-4\">\n <div class=\"d-flex align-items-center\">\n <div class=\"me-auto col-xs-6\">\n <a [attr.aria-label]=\"'Admin.Permissions.NavigateBack' | transloco\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">{{ 'Admin.Permissions.Role.Title' | transloco }}: {{ role?.name }}</h3>\n </div>\n </div>\n </div>\n @if (isLoading) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (!isLoading) {\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-md-8\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.RoleName' | transloco\"\n name=\"name\"\n controlId=\"role-name\">\n <input type=\"text\"\n id=\"role-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [placeholder]=\"'Admin.Roles.Placeholder.RoleName' | transloco\"\n [attr.aria-label]=\"'Admin.Roles.RoleName' | transloco\" />\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-12 col-md-4\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.IsActive' | transloco\"\n name=\"active\"\n controlId=\"role-active\"\n [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n formControlName=\"active\"\n name=\"active\"\n [attr.aria-labelledby]=\"'role-active-label'\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n </div>\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n *rbacAllow=\"'Pages.Admin.Roles.Create'\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n }\n }\n\n @if (activeItem.id === 'permission') {\n <div class=\"p-4\">\n @if (permissions) {\n <permission-tree [data]=\"permissions\"\n #permissionTree></permission-tree>\n <div class=\"row mt-5 text-end\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"savePermission()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n",
17607
17609
  dependencies: [
17608
17610
  {
17609
17611
  kind: "component",
@@ -17784,7 +17786,7 @@ i0.ɵɵngDeclareClassMetadata({
17784
17786
  args: [{
17785
17787
  selector: "pw-role-details",
17786
17788
  standalone: false,
17787
- template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n @for (item of items; track item) {\n <p-tab [value]=\"item.id\">\n @if (item.icon) {\n <i [class]=\"item.icon\" aria-hidden=\"true\"></i>\n }\n <span>{{ item.label }}</span>\n </p-tab>\n }\n </p-tablist>\n </p-tabs>\n\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n @if (activeItem.id === 'details') {\n <div class=\"mb-4 mt-4\">\n <div class=\"d-flex align-items-center\">\n <div class=\"me-auto col-xs-6\">\n <a [attr.aria-label]=\"'Admin.Permissions.NavigateBack' | transloco\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">{{ 'Admin.Permissions.Role.Title' | transloco }}: {{ role?.name }}</h3>\n </div>\n </div>\n </div>\n @if (isLoading) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (!isLoading) {\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-md-8\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.RoleName' | transloco\"\n name=\"name\"\n controlId=\"role-name\">\n <input type=\"text\"\n id=\"role-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [placeholder]=\"'Admin.Roles.Placeholder.RoleName' | transloco\"\n [attr.aria-label]=\"'Admin.Roles.RoleName' | transloco\" />\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-12 col-md-4\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.IsActive' | transloco\"\n name=\"active\"\n controlId=\"role-active\"\n [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n formControlName=\"active\"\n name=\"active\"\n [attr.aria-labelledby]=\"'role-active-label'\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n </div>\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n *rbacAllow=\"'Pages.Admin.Roles.Create'\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n }\n }\n\n @if (activeItem.id === 'permission') {\n <div class=\"p-4\">\n @if (permissions) {\n <permission-tree [data]=\"permissions\"\n #permissionTree></permission-tree>\n <div class=\"row mt-5 text-end\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"savePermission()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n"
17789
+ template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabs [value]=\"activeTabValue\" (valueChange)=\"onTabChange($event)\">\n <p-tablist>\n @for (item of items; track item) {\n <p-tab [value]=\"item.id\">\n @if (item.icon) {\n <i [class]=\"item.icon\" aria-hidden=\"true\"></i>\n }\n <span>{{ item.labelKey | transloco }}</span>\n </p-tab>\n }\n </p-tablist>\n </p-tabs>\n\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n @if (activeItem.id === 'details') {\n <div class=\"mb-4 mt-4\">\n <div class=\"d-flex align-items-center\">\n <div class=\"me-auto col-xs-6\">\n <a [attr.aria-label]=\"'Admin.Permissions.NavigateBack' | transloco\"\n (click)=\"previous()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">{{ 'Admin.Permissions.Role.Title' | transloco }}: {{ role?.name }}</h3>\n </div>\n </div>\n </div>\n @if (isLoading) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progress-spinner strokeWidth=\"2\"> </p-progress-spinner>\n </div>\n }\n @if (!isLoading) {\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-md-8\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.RoleName' | transloco\"\n name=\"name\"\n controlId=\"role-name\">\n <input type=\"text\"\n id=\"role-name\"\n class=\"form-control\"\n formControlName=\"name\"\n [placeholder]=\"'Admin.Roles.Placeholder.RoleName' | transloco\"\n [attr.aria-label]=\"'Admin.Roles.RoleName' | transloco\" />\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-12 col-md-4\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Admin.Roles.IsActive' | transloco\"\n name=\"active\"\n controlId=\"role-active\"\n [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n formControlName=\"active\"\n name=\"active\"\n [attr.aria-labelledby]=\"'role-active-label'\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n </div>\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n *rbacAllow=\"'Pages.Admin.Roles.Create'\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n }\n }\n\n @if (activeItem.id === 'permission') {\n <div class=\"p-4\">\n @if (permissions) {\n <permission-tree [data]=\"permissions\"\n #permissionTree></permission-tree>\n <div class=\"row mt-5 text-end\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"savePermission()\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n"
17788
17790
  }]
17789
17791
  }],
17790
17792
  ctorParameters: () => [
@@ -17843,7 +17845,7 @@ var RolesListComponent = class RolesListComponent extends AppBaseComponent {
17843
17845
  onDeleteRole(role) {
17844
17846
  this.confirmDialog.open({
17845
17847
  titleKey: "Common.Confirm.Delete.Title",
17846
- titleParams: { entityType: "role" },
17848
+ titleParams: { entityType: this.translation.translate("Admin.Entity.Role") },
17847
17849
  textKey: "Common.Confirm.Delete.Text",
17848
17850
  textParams: { name: role.name },
17849
17851
  destructive: true
@@ -19387,20 +19389,8 @@ var ProductDetailsComponent = class ProductDetailsComponent extends AppBaseCompo
19387
19389
  this.selectedPartnerProducts = [];
19388
19390
  this.unsubscribeBehaviors = [];
19389
19391
  this.prorationBehaviors = [];
19390
- this.frequency = [
19391
- {
19392
- label: "Select",
19393
- value: null
19394
- },
19395
- {
19396
- label: "Monthly",
19397
- value: "month"
19398
- },
19399
- {
19400
- label: "Yearly",
19401
- value: "year"
19402
- }
19403
- ];
19392
+ this.frequency = [];
19393
+ this.destroyRef = inject(DestroyRef);
19404
19394
  this.fullLogo = "";
19405
19395
  this.squaredLogo = "";
19406
19396
  this.fullLogoBroken = false;
@@ -19408,6 +19398,24 @@ var ProductDetailsComponent = class ProductDetailsComponent extends AppBaseCompo
19408
19398
  QuillHelper.init();
19409
19399
  this.editorConfig = QuillHelper.getEditorConfig();
19410
19400
  this.form = AppAdmin.getProductsForm();
19401
+ this.translation.selectTranslation().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
19402
+ const t = (key) => this.translation.translate(key);
19403
+ this.frequency = [
19404
+ {
19405
+ label: t("Admin.Products.Options.Select"),
19406
+ value: null
19407
+ },
19408
+ {
19409
+ label: t("Admin.Products.Options.Monthly"),
19410
+ value: "month"
19411
+ },
19412
+ {
19413
+ label: t("Admin.Products.Options.Yearly"),
19414
+ value: "year"
19415
+ }
19416
+ ];
19417
+ this.cdr.markForCheck();
19418
+ });
19411
19419
  }
19412
19420
  ngAfterViewInit() {
19413
19421
  HelperService.subscribeToEditorChanges(this.form, "description");
@@ -19493,7 +19501,7 @@ var ProductDetailsComponent = class ProductDetailsComponent extends AppBaseCompo
19493
19501
  getCategories() {
19494
19502
  this.productService.getProductCategories().subscribe((response) => {
19495
19503
  this.categories = [{
19496
- label: "Select",
19504
+ label: this.translation.translate("Admin.Products.Options.Select"),
19497
19505
  value: null
19498
19506
  }, ...(response?.categories ?? []).map((element) => ({
19499
19507
  label: element ?? "",
@@ -20881,27 +20889,23 @@ i0.ɵɵngDeclareClassMetadata({
20881
20889
  }] }
20882
20890
  });
20883
20891
  var ProductsTabComponent = class ProductsTabComponent {
20884
- constructor(transloco, destroyRef) {
20885
- this.items = this.tabs("Onboarding");
20886
- transloco.selectTranslate("Admin.Onboarding.Tab").pipe(takeUntilDestroyed(destroyRef)).subscribe((label) => this.items = this.tabs(label));
20887
- }
20888
- tabs(onboardingLabel) {
20889
- return [
20892
+ constructor() {
20893
+ this.items = [
20890
20894
  {
20891
20895
  id: "products",
20892
- label: "Products",
20896
+ labelKey: "Menu.Admin.Products",
20893
20897
  icon: "fa fa-fw fa-list",
20894
20898
  routerLink: ["/admin/products/list"]
20895
20899
  },
20896
20900
  {
20897
20901
  id: "insight",
20898
- label: "Insight",
20902
+ labelKey: "Admin.Tabs.Insight",
20899
20903
  icon: "fa fa-fw fa-tag",
20900
20904
  routerLink: ["/admin/products/insight"]
20901
20905
  },
20902
20906
  {
20903
20907
  id: "onboarding",
20904
- label: onboardingLabel,
20908
+ labelKey: "Admin.Onboarding.Tab",
20905
20909
  icon: "fa fa-fw fa-list-check",
20906
20910
  routerLink: ["/admin/products/onboarding"]
20907
20911
  }
@@ -20913,7 +20917,7 @@ var ProductsTabComponent = class ProductsTabComponent {
20913
20917
  version: "22.2.3",
20914
20918
  ngImport: i0,
20915
20919
  type: ProductsTabComponent,
20916
- deps: [{ token: i8$2.TranslocoService }, { token: i0.DestroyRef }],
20920
+ deps: [],
20917
20921
  target: i0.ɵɵFactoryTarget.Component
20918
20922
  });
20919
20923
  }
@@ -20950,8 +20954,7 @@ i0.ɵɵngDeclareClassMetadata({
20950
20954
  standalone: false,
20951
20955
  styles: ["@charset \"UTF-8\";:root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: color-mix(in srgb, var(--first, rgb(23 105 225)) 85%, #000000);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255);--dashboard_bg: rgb(255 255 255);--pw-hairline: #e2e5ea;--public-btn-radius: 24px}.table-title{border-bottom:4px solid rgb(23,105,225);padding:0}.table-title .m-subheader__title{background-color:#1769e1;padding:7px 25px}.table-title .m-subheader__title span{color:#fff;font-size:16px;text-transform:uppercase}\n"]
20952
20956
  }]
20953
- }],
20954
- ctorParameters: () => [{ type: i8$2.TranslocoService }, { type: i0.DestroyRef }]
20957
+ }]
20955
20958
  });
20956
20959
  var UsersListForProductComponent = class UsersListForProductComponent extends AppBaseComponent {
20957
20960
  constructor(productService, injector, cdr) {
@@ -22060,12 +22063,12 @@ var ResourcesAdminIndexComponent = class ResourcesAdminIndexComponent extends Ap
22060
22063
  super(injector);
22061
22064
  this.items = [{
22062
22065
  id: "resources_index",
22063
- label: "Resources",
22066
+ labelKey: "Resource.Posts.Title",
22064
22067
  icon: "fa fa-fw fa-list",
22065
22068
  routerLink: ["/admin/resources/list"]
22066
22069
  }, {
22067
22070
  id: "insight",
22068
- label: "Insight",
22071
+ labelKey: "Admin.Tabs.Insight",
22069
22072
  icon: "fa fa-fw fa-tag",
22070
22073
  routerLink: ["/admin/resources/insight"]
22071
22074
  }];
@@ -22213,7 +22216,7 @@ var ResourcesIndexComponent = class ResourcesIndexComponent extends AppBaseCompo
22213
22216
  onDeletePost(item) {
22214
22217
  this.confirmDialog.open({
22215
22218
  titleKey: "Common.Confirm.Delete.Title",
22216
- titleParams: { entityType: "resource" },
22219
+ titleParams: { entityType: this.translation.translate("Admin.Entity.Resource") },
22217
22220
  textKey: "Common.Confirm.Delete.Text",
22218
22221
  textParams: { name: item.title },
22219
22222
  destructive: true
@@ -24116,7 +24119,7 @@ var AddMembersComponent = class AddMembersComponent extends AppBaseComponent {
24116
24119
  if (output.file) {
24117
24120
  const ext = output.file.name.split(".").pop();
24118
24121
  if (["csv", "xlsx"].includes(ext)) this.files.push(output.file);
24119
- else this.toast.error("Only csv and xlsx formats are supported.");
24122
+ else this.toast.error(this.translation.translate("Admin.Subscriptions.Members.UnsupportedFormat"));
24120
24123
  }
24121
24124
  break;
24122
24125
  case "uploading":
@@ -24138,10 +24141,10 @@ var AddMembersComponent = class AddMembersComponent extends AppBaseComponent {
24138
24141
  }
24139
24142
  onSignUpMember() {
24140
24143
  this.confirmDialog.open({
24141
- title: this.translation.translate("Label.Confirm"),
24142
- text: this.translation.translate("Admin.Subscriptions.confirmEnterpriseMembersSubscriptionMessage"),
24144
+ titleKey: "Label.Confirm",
24145
+ textKey: "Admin.Subscriptions.confirmEnterpriseMembersSubscriptionMessage",
24143
24146
  destructive: true,
24144
- confirmLabel: "Yes"
24147
+ confirmLabelKey: "Label.Yes"
24145
24148
  }).then((rep) => {
24146
24149
  if (rep) {
24147
24150
  const emails = this.form.get("emailsFormArray")?.value?.map((item) => item.email).join(",");
@@ -24396,8 +24399,8 @@ var SubscriptionUsersComponent = class SubscriptionUsersComponent extends AppBas
24396
24399
  }
24397
24400
  onChangeOwner(user) {
24398
24401
  this.confirmDialog.open({
24399
- title: "Update",
24400
- text: "Are you sure want to make this user as owner?",
24402
+ titleKey: "Button.Update",
24403
+ textKey: "Admin.Subscriptions.Users.MakeOwnerConfirm",
24401
24404
  destructive: true
24402
24405
  }).then((ok) => {
24403
24406
  if (!ok) return;
@@ -24422,7 +24425,7 @@ var SubscriptionUsersComponent = class SubscriptionUsersComponent extends AppBas
24422
24425
  subscription_id: PermissionService.selectedSubscription.id,
24423
24426
  phonegap: platform !== "browser"
24424
24427
  }).subscribe((_) => {
24425
- this.toast.success(`You're now being logged in as another user...`);
24428
+ this.toast.success(this.translation.translate("Admin.Shared.ImpersonatingMessage"));
24426
24429
  setTimeout(() => {
24427
24430
  this.windowService.replaceUrl("/home");
24428
24431
  }, 2e3);
@@ -24440,8 +24443,8 @@ var SubscriptionUsersComponent = class SubscriptionUsersComponent extends AppBas
24440
24443
  }
24441
24444
  onDelete(user) {
24442
24445
  this.confirmDialog.open({
24443
- title: "Remove user from subscription",
24444
- text: "Are you sure you want to remove this user from this subscription?",
24446
+ titleKey: "Admin.Subscriptions.Users.RemoveConfirm.Title",
24447
+ textKey: "Admin.Subscriptions.Users.RemoveConfirm.Text",
24445
24448
  destructive: true
24446
24449
  }).then((ok) => {
24447
24450
  if (!ok) return;
@@ -25001,8 +25004,8 @@ var SubscriptionAgentsListComponent = class SubscriptionAgentsListComponent exte
25001
25004
  }
25002
25005
  onDelete(userId) {
25003
25006
  this.confirmDialog.open({
25004
- title: "Delete",
25005
- text: "Are you sure you want to delete this agent?",
25007
+ titleKey: "Button.Delete",
25008
+ textKey: "Admin.Subscriptions.Agents.DeleteConfirm",
25006
25009
  destructive: true
25007
25010
  }).then((ok) => {
25008
25011
  if (!ok) return;
@@ -29633,7 +29636,7 @@ var SubscriptionsListComponent = class SubscriptionsListComponent extends AppBas
29633
29636
  onRecoverConfirmed() {
29634
29637
  this.buttonBusy = true;
29635
29638
  this.adminService.recoverDeletedSubscription(this.recoveringItem.id, this.subscriptionId).subscribe(() => {
29636
- this.toast.success("Subscription recovered successfully");
29639
+ this.toast.success(this.translation.translate("Admin.Subscriptions.RecoveredMessage"));
29637
29640
  queueMicrotask(() => {
29638
29641
  if (!this.destroyed) this.getData({
29639
29642
  page: this.page,
@@ -30330,13 +30333,13 @@ var SubscriptionComponent = class SubscriptionComponent extends AppBaseComponent
30330
30333
  super(injector);
30331
30334
  this.items = [{
30332
30335
  id: "subscription",
30333
- label: "Subscriptions",
30336
+ labelKey: "Menu.Admin.Subscriptions",
30334
30337
  icon: "fa fa-fw fa-user-cog",
30335
30338
  routerLink: ["/admin/subscriptions/list"],
30336
30339
  visible: this.permissionService.evaluatePermissions("SubscriptionSuperAdmin")
30337
30340
  }, {
30338
30341
  id: "insight",
30339
- label: "Insight",
30342
+ labelKey: "Admin.Tabs.Insight",
30340
30343
  icon: "fa fa-fw fa-signature",
30341
30344
  routerLink: ["/admin/subscriptions/insight"],
30342
30345
  visible: this.permissionService.evaluatePermissions("SubscriptionSuperAdmin")
@@ -30459,7 +30462,7 @@ var TagsCategoryComponent = class TagsCategoryComponent extends AppBaseComponent
30459
30462
  onDelete(category) {
30460
30463
  this.confirmDialog.open({
30461
30464
  titleKey: "Common.Confirm.Delete.Title",
30462
- titleParams: { entityType: "category" },
30465
+ titleParams: { entityType: this.translation.translate("Admin.Entity.Category") },
30463
30466
  textKey: "Common.Confirm.Delete.Text",
30464
30467
  textParams: { name: category.name },
30465
30468
  destructive: true
@@ -30974,7 +30977,7 @@ var TagDetailsComponent = class TagDetailsComponent extends AppBaseComponent {
30974
30977
  selector: "pw-tag-details",
30975
30978
  usesInheritance: true,
30976
30979
  ngImport: i0,
30977
- template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a [attr.aria-label]=\"'Admin.Tags.Details.BackAria' | transloco\"\n (click)=\"back()\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n {{ (currentTag ? 'Admin.Tags.Details.EditTitle' : 'Admin.Tags.List.Create') | transloco }}\n </h3>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <!-- Tag Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagName' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"name\" controlId=\"tags-name\">\n <input type=\"text\" id=\"tags-name\" class=\"form-control\" formControlName=\"name\" [placeholder]=\"'Admin.Tags.Placeholder.TagName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.TagName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Tag Type -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagType' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_type\" controlId=\"tags-tag_type\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_type\"\n [options]=\"tagTypes\" formControlName=\"tag_type\"\n [attr.aria-labelledby]=\"'tags-tag_type-label'\" [placeholder]=\"'Admin.Tags.Placeholder.TagTypes' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Category -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Category' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_category_id\" controlId=\"tags-tag_category_id\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_category_id\"\n [options]=\"tagCategories\" formControlName=\"tag_category_id\"\n [attr.aria-labelledby]=\"'tags-tag_category_id-label'\" [placeholder]=\"'Admin.Tags.Category' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Icon Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.IconName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.IconName' | transloco\"\n name=\"icon_name\" controlId=\"tags-icon_name\">\n <input type=\"text\" id=\"tags-icon_name\" class=\"form-control\" formControlName=\"icon_name\" [placeholder]=\"'Admin.Tags.IconName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.IconName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Title and Meta Title on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Label.Title' | transloco\" name=\"title\" controlId=\"tags-title\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <input type=\"text\" id=\"tags-title\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"'Label.Title' | transloco\"\n [attr.aria-label]=\"'Label.Title' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Meta Title -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaTitle' | transloco\" name=\"meta_title\" controlId=\"tags-meta_title\">\n <input type=\"text\" id=\"tags-meta_title\" class=\"form-control\" formControlName=\"meta_title\" [placeholder]=\"'Admin.Tags.MetaTitle' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaTitle' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Description and Meta Description on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Description' | transloco\" name=\"description\" controlId=\"tags-description\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <textarea id=\"tags-description\" class=\"form-control\" rows=\"3\" formControlName=\"description\" [placeholder]=\"'Admin.Tags.Description' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.Description' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Meta Description -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaDescription' | transloco\" name=\"meta_description\" controlId=\"tags-meta_description\">\n <textarea id=\"tags-meta_description\" class=\"form-control\" rows=\"3\" formControlName=\"meta_description\" [placeholder]=\"'Admin.Tags.MetaDescription' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaDescription' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Visible In Resources toggle moved to bottom -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.VisibleInResources' | transloco\"\n [label]=\"'Admin.Tags.VisibleInResources' | transloco\"\n name=\"visible_in_resources\" controlId=\"tags-visible_in_resources\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\" [attr.aria-labelledby]=\"'tags-visible_in_resources-label'\" formControlName=\"visible_in_resources\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-4 display-grid mt-2 text-center\">\n <span class=\"pw-label-style d-block mb-1\">{{ 'Admin.Tags.Image' | transloco }}</span>\n <div class=\"text-center d-flex flex-column align-items-end\">\n <img [src]=\"image !== null ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openModal(imageModal)\"\n (keydown.enter)=\"openModal(imageModal)\"\n class=\"image cropped-img\"\n [ngClass]=\"{ 'w-100': image === null }\"\n [alt]=\"'Admin.Tags.Details.ImagePreviewAlt' | transloco\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a\n class=\"d-inline-block mt-2\"\n (click)=\"openModal(imageModal)\">\n {{ (currentTag ? 'Admin.Tags.Details.UpdateImage' : 'Admin.Tags.Details.AddImage') | transloco }}\n </a>\n @if (image && !image.includes('default-photo.jpg') && !image.includes('no_image_uploaded_squared.png')) {\n <i\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n [title]=\"'Admin.Tags.Details.RemoveImage' | transloco\"\n (click)=\"deleteTagImage()\"\n (keydown.enter)=\"deleteTagImage()\"\n >\n </i>\n }\n </div>\n </div>\n </div>\n\n <!-- Image Upload -->\n </div>\n\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"!form.valid\"\n class=\"btn btn-primary\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n </div>\n </div>\n </div>\n</div>\n\n\n<ng-template #imageModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ 'Admin.Tags.Details.UploadImage' | transloco }}</h5>\n <button type=\"button\" class=\"btn-close float-end\" [attr.aria-label]=\"'Common.Close' | transloco\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>{{ 'Admin.Tags.Details.ImageHint' | transloco }}</small>\n <pw-image-cropper\n #cropper\n aspectRatio=\"dynamic\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n",
30980
+ template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a [attr.aria-label]=\"'Admin.Tags.Details.BackAria' | transloco\"\n (click)=\"back()\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n {{ (currentTag ? 'Admin.Tags.Details.EditTitle' : 'Admin.Tags.List.Create') | transloco }}\n </h3>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <!-- Tag Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagName' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"name\" controlId=\"tags-name\">\n <input type=\"text\" id=\"tags-name\" class=\"form-control\" formControlName=\"name\" [placeholder]=\"'Admin.Tags.Placeholder.TagName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.TagName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Tag Type -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagType' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_type\" controlId=\"tags-tag_type\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_type\"\n [options]=\"tagTypes\" formControlName=\"tag_type\"\n [attr.aria-labelledby]=\"'tags-tag_type-label'\" [placeholder]=\"'Admin.Tags.Placeholder.TagTypes' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Category -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Category' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_category_id\" controlId=\"tags-tag_category_id\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_category_id\"\n [options]=\"tagCategories\" formControlName=\"tag_category_id\"\n [attr.aria-labelledby]=\"'tags-tag_category_id-label'\" [placeholder]=\"'Admin.Tags.Category' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Icon Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.IconName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.IconName' | transloco\"\n name=\"icon_name\" controlId=\"tags-icon_name\">\n <input type=\"text\" id=\"tags-icon_name\" class=\"form-control\" formControlName=\"icon_name\" [placeholder]=\"'Admin.Tags.IconName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.IconName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Title and Meta Title on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Label.Title' | transloco\" name=\"title\" controlId=\"tags-title\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <input type=\"text\" id=\"tags-title\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"'Label.Title' | transloco\"\n [attr.aria-label]=\"'Label.Title' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Meta Title -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaTitle' | transloco\" name=\"meta_title\" controlId=\"tags-meta_title\">\n <input type=\"text\" id=\"tags-meta_title\" class=\"form-control\" formControlName=\"meta_title\" [placeholder]=\"'Admin.Tags.MetaTitle' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaTitle' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Description and Meta Description on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Description' | transloco\" name=\"description\" controlId=\"tags-description\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <textarea id=\"tags-description\" class=\"form-control\" rows=\"3\" formControlName=\"description\" [placeholder]=\"'Admin.Tags.Description' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.Description' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Meta Description -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaDescription' | transloco\" name=\"meta_description\" controlId=\"tags-meta_description\">\n <textarea id=\"tags-meta_description\" class=\"form-control\" rows=\"3\" formControlName=\"meta_description\" [placeholder]=\"'Admin.Tags.MetaDescription' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaDescription' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Visible In Resources toggle moved to bottom -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.VisibleInResources' | transloco\"\n [label]=\"'Admin.Tags.VisibleInResources' | transloco\"\n name=\"visible_in_resources\" controlId=\"tags-visible_in_resources\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\" [attr.aria-labelledby]=\"'tags-visible_in_resources-label'\" formControlName=\"visible_in_resources\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-4 display-grid mt-2 text-center\">\n <span class=\"pw-label-style d-block mb-1\">{{ 'Admin.Tags.Image' | transloco }}</span>\n <div class=\"text-center d-flex flex-column align-items-end\">\n <img [src]=\"image !== null ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openModal(imageModal)\"\n (keydown.enter)=\"openModal(imageModal)\"\n class=\"image cropped-img\"\n [ngClass]=\"{ 'w-100': image === null }\"\n [alt]=\"'Admin.Tags.Details.PreviewAlt' | transloco\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a\n class=\"d-inline-block mt-2\"\n (click)=\"openModal(imageModal)\">\n {{ (currentTag ? 'Admin.Tags.Details.UpdateImage' : 'Admin.Tags.Details.AddImage') | transloco }}\n </a>\n @if (image && !image.includes('default-photo.jpg') && !image.includes('no_image_uploaded_squared.png')) {\n <i\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n [title]=\"'Admin.Tags.Details.RemoveImage' | transloco\"\n (click)=\"deleteTagImage()\"\n (keydown.enter)=\"deleteTagImage()\"\n >\n </i>\n }\n </div>\n </div>\n </div>\n\n <!-- Image Upload -->\n </div>\n\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"!form.valid\"\n class=\"btn btn-primary\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n </div>\n </div>\n </div>\n</div>\n\n\n<ng-template #imageModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ 'Admin.Tags.Details.UploadImage' | transloco }}</h5>\n <button type=\"button\" class=\"btn-close float-end\" [attr.aria-label]=\"'Common.Close' | transloco\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>{{ 'Admin.Tags.Details.ImageHint' | transloco }}</small>\n <pw-image-cropper\n #cropper\n aspectRatio=\"dynamic\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n",
30978
30981
  dependencies: [
30979
30982
  {
30980
30983
  kind: "component",
@@ -31195,7 +31198,7 @@ i0.ɵɵngDeclareClassMetadata({
31195
31198
  selector: "pw-tag-details",
31196
31199
  encapsulation: ViewEncapsulation.None,
31197
31200
  standalone: false,
31198
- template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a [attr.aria-label]=\"'Admin.Tags.Details.BackAria' | transloco\"\n (click)=\"back()\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n {{ (currentTag ? 'Admin.Tags.Details.EditTitle' : 'Admin.Tags.List.Create') | transloco }}\n </h3>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <!-- Tag Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagName' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"name\" controlId=\"tags-name\">\n <input type=\"text\" id=\"tags-name\" class=\"form-control\" formControlName=\"name\" [placeholder]=\"'Admin.Tags.Placeholder.TagName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.TagName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Tag Type -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagType' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_type\" controlId=\"tags-tag_type\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_type\"\n [options]=\"tagTypes\" formControlName=\"tag_type\"\n [attr.aria-labelledby]=\"'tags-tag_type-label'\" [placeholder]=\"'Admin.Tags.Placeholder.TagTypes' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Category -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Category' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_category_id\" controlId=\"tags-tag_category_id\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_category_id\"\n [options]=\"tagCategories\" formControlName=\"tag_category_id\"\n [attr.aria-labelledby]=\"'tags-tag_category_id-label'\" [placeholder]=\"'Admin.Tags.Category' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Icon Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.IconName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.IconName' | transloco\"\n name=\"icon_name\" controlId=\"tags-icon_name\">\n <input type=\"text\" id=\"tags-icon_name\" class=\"form-control\" formControlName=\"icon_name\" [placeholder]=\"'Admin.Tags.IconName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.IconName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Title and Meta Title on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Label.Title' | transloco\" name=\"title\" controlId=\"tags-title\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <input type=\"text\" id=\"tags-title\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"'Label.Title' | transloco\"\n [attr.aria-label]=\"'Label.Title' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Meta Title -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaTitle' | transloco\" name=\"meta_title\" controlId=\"tags-meta_title\">\n <input type=\"text\" id=\"tags-meta_title\" class=\"form-control\" formControlName=\"meta_title\" [placeholder]=\"'Admin.Tags.MetaTitle' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaTitle' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Description and Meta Description on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Description' | transloco\" name=\"description\" controlId=\"tags-description\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <textarea id=\"tags-description\" class=\"form-control\" rows=\"3\" formControlName=\"description\" [placeholder]=\"'Admin.Tags.Description' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.Description' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Meta Description -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaDescription' | transloco\" name=\"meta_description\" controlId=\"tags-meta_description\">\n <textarea id=\"tags-meta_description\" class=\"form-control\" rows=\"3\" formControlName=\"meta_description\" [placeholder]=\"'Admin.Tags.MetaDescription' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaDescription' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Visible In Resources toggle moved to bottom -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.VisibleInResources' | transloco\"\n [label]=\"'Admin.Tags.VisibleInResources' | transloco\"\n name=\"visible_in_resources\" controlId=\"tags-visible_in_resources\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\" [attr.aria-labelledby]=\"'tags-visible_in_resources-label'\" formControlName=\"visible_in_resources\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-4 display-grid mt-2 text-center\">\n <span class=\"pw-label-style d-block mb-1\">{{ 'Admin.Tags.Image' | transloco }}</span>\n <div class=\"text-center d-flex flex-column align-items-end\">\n <img [src]=\"image !== null ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openModal(imageModal)\"\n (keydown.enter)=\"openModal(imageModal)\"\n class=\"image cropped-img\"\n [ngClass]=\"{ 'w-100': image === null }\"\n [alt]=\"'Admin.Tags.Details.ImagePreviewAlt' | transloco\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a\n class=\"d-inline-block mt-2\"\n (click)=\"openModal(imageModal)\">\n {{ (currentTag ? 'Admin.Tags.Details.UpdateImage' : 'Admin.Tags.Details.AddImage') | transloco }}\n </a>\n @if (image && !image.includes('default-photo.jpg') && !image.includes('no_image_uploaded_squared.png')) {\n <i\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n [title]=\"'Admin.Tags.Details.RemoveImage' | transloco\"\n (click)=\"deleteTagImage()\"\n (keydown.enter)=\"deleteTagImage()\"\n >\n </i>\n }\n </div>\n </div>\n </div>\n\n <!-- Image Upload -->\n </div>\n\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"!form.valid\"\n class=\"btn btn-primary\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n </div>\n </div>\n </div>\n</div>\n\n\n<ng-template #imageModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ 'Admin.Tags.Details.UploadImage' | transloco }}</h5>\n <button type=\"button\" class=\"btn-close float-end\" [attr.aria-label]=\"'Common.Close' | transloco\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>{{ 'Admin.Tags.Details.ImageHint' | transloco }}</small>\n <pw-image-cropper\n #cropper\n aspectRatio=\"dynamic\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n"
31201
+ template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a [attr.aria-label]=\"'Admin.Tags.Details.BackAria' | transloco\"\n (click)=\"back()\"\n class=\"previous\">\n <i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n {{ (currentTag ? 'Admin.Tags.Details.EditTitle' : 'Admin.Tags.List.Create') | transloco }}\n </h3>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <!-- Tag Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagName' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"name\" controlId=\"tags-name\">\n <input type=\"text\" id=\"tags-name\" class=\"form-control\" formControlName=\"name\" [placeholder]=\"'Admin.Tags.Placeholder.TagName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.TagName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Tag Type -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.TagType' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_type\" controlId=\"tags-tag_type\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_type\"\n [options]=\"tagTypes\" formControlName=\"tag_type\"\n [attr.aria-labelledby]=\"'tags-tag_type-label'\" [placeholder]=\"'Admin.Tags.Placeholder.TagTypes' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Category -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Category' | transloco\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\" name=\"tag_category_id\" controlId=\"tags-tag_category_id\" [useAriaLabelledbyOnly]=\"true\">\n <p-select inputId=\"tags-tag_category_id\"\n [options]=\"tagCategories\" formControlName=\"tag_category_id\"\n [attr.aria-labelledby]=\"'tags-tag_category_id-label'\" [placeholder]=\"'Admin.Tags.Category' | transloco\">\n </p-select>\n </pw-input-container>\n </div>\n\n <!-- Icon Name -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.IconName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.IconName' | transloco\"\n name=\"icon_name\" controlId=\"tags-icon_name\">\n <input type=\"text\" id=\"tags-icon_name\" class=\"form-control\" formControlName=\"icon_name\" [placeholder]=\"'Admin.Tags.IconName' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.IconName' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Title and Meta Title on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Label.Title' | transloco\" name=\"title\" controlId=\"tags-title\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <input type=\"text\" id=\"tags-title\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"'Label.Title' | transloco\"\n [attr.aria-label]=\"'Label.Title' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Meta Title -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaTitle' | transloco\" name=\"meta_title\" controlId=\"tags-meta_title\">\n <input type=\"text\" id=\"tags-meta_title\" class=\"form-control\" formControlName=\"meta_title\" [placeholder]=\"'Admin.Tags.MetaTitle' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaTitle' | transloco\" />\n </pw-input-container>\n </div>\n\n <!-- Description and Meta Description on same line -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.Description' | transloco\" name=\"description\" controlId=\"tags-description\"\n errorMsg=\"Admin.Tags.Validation.FieldRequired\">\n <textarea id=\"tags-description\" class=\"form-control\" rows=\"3\" formControlName=\"description\" [placeholder]=\"'Admin.Tags.Description' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.Description' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Meta Description -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [label]=\"'Admin.Tags.MetaDescription' | transloco\" name=\"meta_description\" controlId=\"tags-meta_description\">\n <textarea id=\"tags-meta_description\" class=\"form-control\" rows=\"3\" formControlName=\"meta_description\" [placeholder]=\"'Admin.Tags.MetaDescription' | transloco\"\n [attr.aria-label]=\"'Admin.Tags.MetaDescription' | transloco\"></textarea>\n </pw-input-container>\n </div>\n\n <!-- Visible In Resources toggle moved to bottom -->\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Tags.Tooltip.VisibleInResources' | transloco\"\n [label]=\"'Admin.Tags.VisibleInResources' | transloco\"\n name=\"visible_in_resources\" controlId=\"tags-visible_in_resources\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\" [attr.aria-labelledby]=\"'tags-visible_in_resources-label'\" formControlName=\"visible_in_resources\"></ui-switch>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-md-4 display-grid mt-2 text-center\">\n <span class=\"pw-label-style d-block mb-1\">{{ 'Admin.Tags.Image' | transloco }}</span>\n <div class=\"text-center d-flex flex-column align-items-end\">\n <img [src]=\"image !== null ? image : 'assets/img/resource/blog.png'\"\n (click)=\"openModal(imageModal)\"\n (keydown.enter)=\"openModal(imageModal)\"\n class=\"image cropped-img\"\n [ngClass]=\"{ 'w-100': image === null }\"\n [alt]=\"'Admin.Tags.Details.PreviewAlt' | transloco\"\n (error)=\"handleImageError($event, 'assets/img/resource/blog.png')\" />\n <div class=\"d-flex justify-content-between align-items-center mt-2\">\n <a\n class=\"d-inline-block mt-2\"\n (click)=\"openModal(imageModal)\">\n {{ (currentTag ? 'Admin.Tags.Details.UpdateImage' : 'Admin.Tags.Details.AddImage') | transloco }}\n </a>\n @if (image && !image.includes('default-photo.jpg') && !image.includes('no_image_uploaded_squared.png')) {\n <i\n class=\"fa fa-trash delete-icon text-danger ms-2 cursor-pointer\"\n [title]=\"'Admin.Tags.Details.RemoveImage' | transloco\"\n (click)=\"deleteTagImage()\"\n (keydown.enter)=\"deleteTagImage()\"\n >\n </i>\n }\n </div>\n </div>\n </div>\n\n <!-- Image Upload -->\n </div>\n\n <pw-sticky-actions>\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"!form.valid\"\n class=\"btn btn-primary\">\n {{ 'Button.Save' | transloco }}\n </button>\n </pw-sticky-actions>\n </form>\n </div>\n </div>\n </div>\n</div>\n\n\n<ng-template #imageModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ 'Admin.Tags.Details.UploadImage' | transloco }}</h5>\n <button type=\"button\" class=\"btn-close float-end\" [attr.aria-label]=\"'Common.Close' | transloco\" (click)=\"modal.dismiss()\"></button>\n </div>\n <div class=\"modal-body\">\n <small>{{ 'Admin.Tags.Details.ImageHint' | transloco }}</small>\n <pw-image-cropper\n #cropper\n aspectRatio=\"dynamic\"\n (imageSelectionEvent)=\"onImageSelected($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n"
31199
31202
  }]
31200
31203
  }],
31201
31204
  ctorParameters: () => [
@@ -31282,7 +31285,7 @@ var TagsListComponent = class TagsListComponent extends AppBaseComponent {
31282
31285
  onDelete(tag) {
31283
31286
  this.confirmDialog.open({
31284
31287
  titleKey: "Common.Confirm.Delete.Title",
31285
- titleParams: { entityType: "tag" },
31288
+ titleParams: { entityType: this.translation.translate("Admin.Entity.Tag") },
31286
31289
  textKey: "Common.Confirm.Delete.Text",
31287
31290
  textParams: { name: tag.name },
31288
31291
  destructive: true
@@ -31646,12 +31649,12 @@ var TagsTabsComponent = class TagsTabsComponent {
31646
31649
  this.searchText = "";
31647
31650
  this.items = [{
31648
31651
  id: "tag_category",
31649
- label: "Categories",
31652
+ labelKey: "Admin.Tags.Categories.Title",
31650
31653
  icon: "fa fa-fw fa-list",
31651
31654
  routerLink: ["/admin/tags/categories"]
31652
31655
  }, {
31653
31656
  id: "tags",
31654
- label: "Tags",
31657
+ labelKey: "Menu.Admin.Tags",
31655
31658
  icon: "fa fa-fw fa-tag",
31656
31659
  routerLink: ["/admin/tags/list"]
31657
31660
  }];
@@ -31707,25 +31710,21 @@ var TipComponent = class TipComponent extends AppBaseComponent {
31707
31710
  this.cdr = cdr;
31708
31711
  this.buttonBusy = false;
31709
31712
  this.isLoading = true;
31710
- this.positions = [
31711
- {
31712
- label: "Left",
31713
- value: "left"
31714
- },
31715
- {
31716
- label: "Right",
31717
- value: "right"
31718
- },
31719
- {
31720
- label: "Top",
31721
- value: "top"
31722
- },
31723
- {
31724
- label: "Bottom",
31725
- value: "bottom"
31726
- }
31727
- ];
31713
+ this.positions = [];
31714
+ this.destroyRef = inject(DestroyRef);
31728
31715
  this.form = AppAdmin.getTipsForm();
31716
+ this.translation.selectTranslation().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
31717
+ this.positions = [
31718
+ "Left",
31719
+ "Right",
31720
+ "Top",
31721
+ "Bottom"
31722
+ ].map((position) => ({
31723
+ label: this.translation.translate(`Admin.Tips.Position.${position}`),
31724
+ value: position.toLowerCase()
31725
+ }));
31726
+ this.cdr.markForCheck();
31727
+ });
31729
31728
  }
31730
31729
  ngOnInit() {
31731
31730
  this.subscriptionId = PermissionService.selectedSubscription.id;
@@ -32244,7 +32243,7 @@ var TipsTabsComponent = class TipsTabsComponent {
32244
32243
  ngOnInit() {
32245
32244
  this.items = [{
32246
32245
  id: "tips",
32247
- label: "Tours",
32246
+ labelKey: "Menu.Admin.Tours",
32248
32247
  icon: "far fa-fw fa-code",
32249
32248
  routerLink: ["/admin/tips/list"]
32250
32249
  }];
@@ -32336,7 +32335,7 @@ var TermsOfServiceComponent = class TermsOfServiceComponent extends AppBaseCompo
32336
32335
  onDelete(id) {
32337
32336
  this.confirmDialog.confirmDelete({
32338
32337
  textKey: "Common.Confirm.Delete.TextSimple",
32339
- textParams: { entityType: "terms of service" }
32338
+ textParams: { entityType: this.translation.translate("Admin.Entity.TermsOfService") }
32340
32339
  }).then((ok) => {
32341
32340
  if (!ok) return;
32342
32341
  this.adminService.deleteTos(id, this.subscriptionId).subscribe(() => {
@@ -33009,7 +33008,7 @@ var TermsOfServiceTabsComponent = class TermsOfServiceTabsComponent {
33009
33008
  this.searchText = "";
33010
33009
  this.items = [{
33011
33010
  id: "Tos",
33012
- label: "Privacy & TOS",
33011
+ labelKey: "Menu.Admin.PrivacyTos",
33013
33012
  icon: "fas fa-sticky-note",
33014
33013
  routerLink: ["/admin/tos/list"]
33015
33014
  }];
@@ -35814,31 +35813,31 @@ var TrackingComponent = class TrackingComponent {
35814
35813
  this.items = [
35815
35814
  {
35816
35815
  id: "ahoy_events",
35817
- label: "Ahoy Events",
35816
+ labelKey: "Admin.Tracking.AhoyEvents.Title",
35818
35817
  icon: "fas fa-calendar-alt",
35819
35818
  routerLink: ["/admin/tracking/ahoy-events"]
35820
35819
  },
35821
35820
  {
35822
35821
  id: "ahoy_messages",
35823
- label: "Ahoy Messages",
35822
+ labelKey: "Admin.Tracking.AhoyMessages.Title",
35824
35823
  icon: "fa fa-envelope",
35825
35824
  routerLink: ["/admin/tracking/ahoy-messages"]
35826
35825
  },
35827
35826
  {
35828
35827
  id: "ahoy_visits",
35829
- label: "Ahoy Visits",
35828
+ labelKey: "Admin.Tracking.AhoyVisits.Title",
35830
35829
  icon: "fas fa-archway",
35831
35830
  routerLink: ["/admin/tracking/ahoy-visits"]
35832
35831
  },
35833
35832
  {
35834
35833
  id: "events",
35835
- label: "Events",
35834
+ labelKey: "Admin.Tracking.Events.Title",
35836
35835
  icon: "far fa-calendar-alt",
35837
35836
  routerLink: ["/admin/tracking/events"]
35838
35837
  },
35839
35838
  {
35840
35839
  id: "versions",
35841
- label: "Versions",
35840
+ labelKey: "Admin.Tracking.Versions.Title",
35842
35841
  icon: "fas fa-layer-group",
35843
35842
  routerLink: ["/admin/tracking/versions"]
35844
35843
  }
@@ -37345,31 +37344,40 @@ var UsersListBaseComponent = class extends AppBaseComponent {
37345
37344
  this.totalRecordsUnFiltered = 0;
37346
37345
  this.searchText = "";
37347
37346
  this.masterProductId = this.appConfig.master_subscription.product_id;
37347
+ this.searchOptions = [];
37348
+ this.alphaBetaOptions = [];
37349
+ this.destroyRef = inject(DestroyRef);
37350
+ this.translation.selectTranslation().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.buildFilterOptions());
37351
+ }
37352
+ buildFilterOptions() {
37353
+ const t = (key) => this.translation.translate(key);
37348
37354
  this.searchOptions = [
37349
37355
  {
37350
- label: "Role",
37356
+ label: t("Admin.Permissions.Role.Title"),
37351
37357
  value: "role"
37352
37358
  },
37353
37359
  {
37354
- label: "Product",
37360
+ label: t("Label.Product"),
37355
37361
  value: "product"
37356
37362
  },
37357
37363
  {
37358
- label: "Feature Key",
37364
+ label: t("Admin.Products.FeatureKey"),
37359
37365
  value: "feature_key"
37360
37366
  },
37361
37367
  {
37362
- label: "Alpha / Beta",
37368
+ label: t("Admin.Users.List.Filter.AlphaBeta"),
37363
37369
  value: "alpha_beta"
37364
37370
  }
37365
37371
  ];
37366
37372
  this.alphaBetaOptions = [{
37367
- label: "Alpha",
37373
+ label: t("Admin.Users.Alpha"),
37368
37374
  value: "alpha"
37369
37375
  }, {
37370
- label: "Beta",
37376
+ label: t("Admin.Users.Beta"),
37371
37377
  value: "beta"
37372
37378
  }];
37379
+ if (this.selectedOption?.value === "alpha_beta") this.searchDataSource = this.alphaBetaOptions;
37380
+ this.cdr.markForCheck();
37373
37381
  }
37374
37382
  onTableStateRestore(event) {
37375
37383
  const f = event?.filters ?? {};
@@ -37431,7 +37439,7 @@ var UsersListBaseComponent = class extends AppBaseComponent {
37431
37439
  label: e.feature_key ?? ""
37432
37440
  }));
37433
37441
  this.productList.unshift({
37434
- label: "None",
37442
+ label: this.translation.translate("Admin.Users.List.Filter.None"),
37435
37443
  value: null
37436
37444
  });
37437
37445
  }
@@ -37484,6 +37492,7 @@ var UserListComponent = class UserListComponent extends UsersListBaseComponent {
37484
37492
  this.sidebarService.registerContent({
37485
37493
  id: "users-info",
37486
37494
  title: "Users Information",
37495
+ titleKey: "Admin.Users.Sidebar.Title",
37487
37496
  component: UsersInformationSidebarComponent
37488
37497
  });
37489
37498
  }
@@ -37563,7 +37572,7 @@ var UserListComponent = class UserListComponent extends UsersListBaseComponent {
37563
37572
  subscription_id: PermissionService.selectedSubscription.id,
37564
37573
  phonegap: platform !== "browser"
37565
37574
  }).subscribe((_) => {
37566
- this.toast.success(`You're now being logged in as another user...`);
37575
+ this.toast.success(this.translation.translate("Admin.Shared.ImpersonatingMessage"));
37567
37576
  setTimeout(() => this.windowService.replaceUrl("/home"), 2e3);
37568
37577
  this.cdr.markForCheck();
37569
37578
  });
@@ -38100,13 +38109,13 @@ var UserTabComponent = class UserTabComponent {
38100
38109
  this.permission = permission;
38101
38110
  this.items = [{
38102
38111
  id: "users",
38103
- label: "Users",
38112
+ labelKey: "Menu.Admin.Users",
38104
38113
  icon: "fa fa-fw fa-user-cog",
38105
38114
  routerLink: ["/admin/users/list"],
38106
38115
  visible: this.permission.evaluatePermissions("Pages.Admin.Users.Edit || Pages.Admin.Users.Create")
38107
38116
  }, {
38108
38117
  id: "insight",
38109
- label: "Insight",
38118
+ labelKey: "Admin.Tabs.Insight",
38110
38119
  icon: "fa fa-fw fa-signature",
38111
38120
  routerLink: ["/admin/users/insight"]
38112
38121
  }];
@@ -38168,6 +38177,7 @@ const routes = [{
38168
38177
  component: GeneralTabsComponent,
38169
38178
  data: {
38170
38179
  title: "Generic",
38180
+ titleKey: "Menu.Admin.Generic",
38171
38181
  permission: "Pages.Admin"
38172
38182
  },
38173
38183
  children: [
@@ -38179,12 +38189,18 @@ const routes = [{
38179
38189
  {
38180
38190
  path: "misc",
38181
38191
  component: GenericMiscComponent,
38182
- data: { title: "Misc" }
38192
+ data: {
38193
+ title: "Misc",
38194
+ titleKey: "Admin.Routes.Misc"
38195
+ }
38183
38196
  },
38184
38197
  {
38185
38198
  path: "insight",
38186
38199
  component: GenericInsightComponent,
38187
- data: { title: "Generic Insights" }
38200
+ data: {
38201
+ title: "Generic Insights",
38202
+ titleKey: "Admin.Routes.GenericInsights"
38203
+ }
38188
38204
  }
38189
38205
  ]
38190
38206
  },
@@ -38192,6 +38208,7 @@ const routes = [{
38192
38208
  path: "tips",
38193
38209
  data: {
38194
38210
  title: "Tips",
38211
+ titleKey: "Admin.Routes.Tips",
38195
38212
  permission: "Pages.Admin"
38196
38213
  },
38197
38214
  children: [
@@ -38212,6 +38229,7 @@ const routes = [{
38212
38229
  component: TipComponent,
38213
38230
  data: {
38214
38231
  title: "Add or Edit Tip",
38232
+ titleKey: "Admin.Routes.AddOrEditTip",
38215
38233
  permission: "Pages.Admin"
38216
38234
  }
38217
38235
  },
@@ -38220,6 +38238,7 @@ const routes = [{
38220
38238
  component: TipComponent,
38221
38239
  data: {
38222
38240
  title: "Tip Details",
38241
+ titleKey: "Admin.Routes.TipDetails",
38223
38242
  permission: "Pages.Admin"
38224
38243
  }
38225
38244
  }
@@ -38229,6 +38248,7 @@ const routes = [{
38229
38248
  path: "feature-flags",
38230
38249
  data: {
38231
38250
  title: "Feature Flags",
38251
+ titleKey: "Menu.Admin.FeatureFlags",
38232
38252
  permission: "Pages.Admin.FeatureFlags"
38233
38253
  },
38234
38254
  children: [
@@ -38249,6 +38269,7 @@ const routes = [{
38249
38269
  component: FeatureFlagDetailsComponent,
38250
38270
  data: {
38251
38271
  title: "Add Feature Flag",
38272
+ titleKey: "Admin.Routes.AddFeatureFlag",
38252
38273
  permission: "Pages.Admin"
38253
38274
  }
38254
38275
  },
@@ -38257,6 +38278,7 @@ const routes = [{
38257
38278
  component: FeatureFlagDetailsComponent,
38258
38279
  data: {
38259
38280
  title: "Edit Feature Flag",
38281
+ titleKey: "Admin.FeatureFlags.Details.EditTitle",
38260
38282
  permission: "Pages.Admin"
38261
38283
  }
38262
38284
  },
@@ -38265,6 +38287,7 @@ const routes = [{
38265
38287
  component: FeatureFlagRulesComponent,
38266
38288
  data: {
38267
38289
  title: "Feature Flag Rules",
38290
+ titleKey: "Admin.Routes.FeatureFlagRules",
38268
38291
  permission: "Pages.Admin"
38269
38292
  }
38270
38293
  }
@@ -38274,6 +38297,7 @@ const routes = [{
38274
38297
  path: "faq",
38275
38298
  data: {
38276
38299
  title: "FAQ",
38300
+ titleKey: "Menu.Faq",
38277
38301
  permission: "Pages.Admin.FAQ || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38278
38302
  },
38279
38303
  children: [
@@ -38290,6 +38314,7 @@ const routes = [{
38290
38314
  component: AddEditFaqComponent,
38291
38315
  data: {
38292
38316
  title: "Add FAQ",
38317
+ titleKey: "Admin.Faq.AddTitle",
38293
38318
  permission: "Pages.Admin.FAQ || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38294
38319
  }
38295
38320
  },
@@ -38298,6 +38323,7 @@ const routes = [{
38298
38323
  component: AddEditFaqComponent,
38299
38324
  data: {
38300
38325
  title: "Edit FAQ",
38326
+ titleKey: "Admin.Faq.EditTitle",
38301
38327
  permission: "Pages.Admin.FAQ || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38302
38328
  }
38303
38329
  }
@@ -38307,6 +38333,7 @@ const routes = [{
38307
38333
  path: "incident",
38308
38334
  data: {
38309
38335
  title: "Incidents",
38336
+ titleKey: "Menu.Admin.Incidents",
38310
38337
  permission: "Pages.Admin.Incident"
38311
38338
  },
38312
38339
  children: [{
@@ -38321,6 +38348,7 @@ const routes = [{
38321
38348
  component: AddEditIncidentComponent,
38322
38349
  data: {
38323
38350
  title: "Incident",
38351
+ titleKey: "Admin.Routes.Incident",
38324
38352
  permission: "Pages.Admin.Incident"
38325
38353
  }
38326
38354
  }]
@@ -38330,6 +38358,7 @@ const routes = [{
38330
38358
  component: ContactUsTabsComponent,
38331
38359
  data: {
38332
38360
  title: "Contact US",
38361
+ titleKey: "Menu.Admin.ContactUs",
38333
38362
  permission: "Pages.Admin.ContactUs"
38334
38363
  },
38335
38364
  children: [{
@@ -38341,6 +38370,7 @@ const routes = [{
38341
38370
  path: "domain-config",
38342
38371
  data: {
38343
38372
  title: "DomainConfig",
38373
+ titleKey: "Admin.Routes.DomainConfig",
38344
38374
  permission: "Pages.Admin.DomainConfig || Pages.Role.MarketingManager"
38345
38375
  },
38346
38376
  children: [
@@ -38361,6 +38391,7 @@ const routes = [{
38361
38391
  component: DomainConfigDetailsComponent,
38362
38392
  data: {
38363
38393
  title: "DomainConfig Add",
38394
+ titleKey: "Admin.Routes.AddDomainConfig",
38364
38395
  permission: "Pages.Admin.DomainConfig || Pages.Role.MarketingManager"
38365
38396
  }
38366
38397
  },
@@ -38369,6 +38400,7 @@ const routes = [{
38369
38400
  component: DomainConfigDetailsComponent,
38370
38401
  data: {
38371
38402
  title: "DomainConfig",
38403
+ titleKey: "Admin.Routes.DomainConfig",
38372
38404
  permission: "Pages.Admin.DomainConfig || Pages.Role.MarketingManager"
38373
38405
  }
38374
38406
  }
@@ -38378,6 +38410,7 @@ const routes = [{
38378
38410
  path: "login-notifications",
38379
38411
  data: {
38380
38412
  title: "Dashboard Notifications",
38413
+ titleKey: "Admin.LoginNotification.List.Title",
38381
38414
  permission: "Pages.Admin.LoginNotification || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38382
38415
  },
38383
38416
  children: [
@@ -38398,6 +38431,7 @@ const routes = [{
38398
38431
  component: LoginNotificationDetailsComponent,
38399
38432
  data: {
38400
38433
  title: "Dashboard Notification Add",
38434
+ titleKey: "Admin.Routes.AddDashboardNotification",
38401
38435
  permission: "Pages.Admin.LoginNotification || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38402
38436
  }
38403
38437
  },
@@ -38406,6 +38440,7 @@ const routes = [{
38406
38440
  component: LoginNotificationDetailsComponent,
38407
38441
  data: {
38408
38442
  title: "Dashboard Notification Edit",
38443
+ titleKey: "Admin.Routes.EditDashboardNotification",
38409
38444
  permission: "Pages.Admin.LoginNotification || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38410
38445
  }
38411
38446
  }
@@ -38415,6 +38450,7 @@ const routes = [{
38415
38450
  path: "newsletter",
38416
38451
  data: {
38417
38452
  title: "Newsletter",
38453
+ titleKey: "Admin.Routes.Newsletter",
38418
38454
  permission: "Pages.Admin.Newsletter || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38419
38455
  },
38420
38456
  children: [
@@ -38434,22 +38470,34 @@ const routes = [{
38434
38470
  {
38435
38471
  path: "items",
38436
38472
  component: NewslettersItemsComponent,
38437
- data: { title: "Newsletter Items" }
38473
+ data: {
38474
+ title: "Newsletter Items",
38475
+ titleKey: "Admin.Newsletter.Items.Title"
38476
+ }
38438
38477
  },
38439
38478
  {
38440
38479
  path: "items/users-list/:id",
38441
38480
  component: NewsletterUsersListComponent,
38442
- data: { title: "Newsletter Recipients" }
38481
+ data: {
38482
+ title: "Newsletter Recipients",
38483
+ titleKey: "Admin.Newsletter.Recipients.Title"
38484
+ }
38443
38485
  },
38444
38486
  {
38445
38487
  path: "items/info/:id",
38446
38488
  component: NewsLetterItemViewComponent,
38447
- data: { title: "Newsletter Item" }
38489
+ data: {
38490
+ title: "Newsletter Item",
38491
+ titleKey: "Admin.Newsletter.Item.Title"
38492
+ }
38448
38493
  },
38449
38494
  {
38450
38495
  path: "insight",
38451
38496
  component: NewsletterInsightComponent,
38452
- data: { title: "Newsletter Insights" }
38497
+ data: {
38498
+ title: "Newsletter Insights",
38499
+ titleKey: "Admin.Routes.NewsletterInsights"
38500
+ }
38453
38501
  }
38454
38502
  ]
38455
38503
  },
@@ -38458,6 +38506,7 @@ const routes = [{
38458
38506
  component: NewsletterDetailsComponent,
38459
38507
  data: {
38460
38508
  title: "Newsletter",
38509
+ titleKey: "Admin.Routes.Newsletter",
38461
38510
  permission: "Pages.Admin.Newsletter || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38462
38511
  }
38463
38512
  },
@@ -38466,6 +38515,7 @@ const routes = [{
38466
38515
  component: NewsletterDetailsComponent,
38467
38516
  data: {
38468
38517
  title: "Newsletter",
38518
+ titleKey: "Admin.Routes.Newsletter",
38469
38519
  permission: "Pages.Admin.Newsletter || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38470
38520
  }
38471
38521
  },
@@ -38474,6 +38524,7 @@ const routes = [{
38474
38524
  component: NewsletterItemDetailsComponent,
38475
38525
  data: {
38476
38526
  title: "Newsletter Item",
38527
+ titleKey: "Admin.Newsletter.Item.Title",
38477
38528
  permission: "Pages.Admin.Newsletter || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38478
38529
  }
38479
38530
  },
@@ -38482,6 +38533,7 @@ const routes = [{
38482
38533
  component: NewsletterItemDetailsComponent,
38483
38534
  data: {
38484
38535
  title: "Newsletter Item",
38536
+ titleKey: "Admin.Newsletter.Item.Title",
38485
38537
  permission: "Pages.Admin.Newsletter || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38486
38538
  }
38487
38539
  }
@@ -38491,6 +38543,7 @@ const routes = [{
38491
38543
  path: "resources",
38492
38544
  data: {
38493
38545
  title: "Resource",
38546
+ titleKey: "Admin.Routes.Resource",
38494
38547
  permission: "Pages.Admin.Blog || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38495
38548
  },
38496
38549
  children: [{
@@ -38509,12 +38562,18 @@ const routes = [{
38509
38562
  {
38510
38563
  path: "list/:id/insight",
38511
38564
  component: ResourcesListsInsightComponent,
38512
- data: { title: "Resource Insights" }
38565
+ data: {
38566
+ title: "Resource Insights",
38567
+ titleKey: "Admin.Resources.Insight.Title"
38568
+ }
38513
38569
  },
38514
38570
  {
38515
38571
  path: "insight",
38516
38572
  component: ResourcesInsightComponent,
38517
- data: { title: "Resources Insights" }
38573
+ data: {
38574
+ title: "Resources Insights",
38575
+ titleKey: "Admin.Resources.Insight.Title"
38576
+ }
38518
38577
  }
38519
38578
  ]
38520
38579
  }, {
@@ -38522,6 +38581,7 @@ const routes = [{
38522
38581
  component: ResourceAdminDetailsComponent,
38523
38582
  data: {
38524
38583
  title: "Blog Posts Admin",
38584
+ titleKey: "Admin.Routes.BlogPostsAdmin",
38525
38585
  permission: "Pages.Admin.Blog || Pages.Role.MarketingManager || Pages.Role.CustomerSuccessManager"
38526
38586
  }
38527
38587
  }]
@@ -38530,6 +38590,7 @@ const routes = [{
38530
38590
  path: "mailers",
38531
38591
  data: {
38532
38592
  title: "Mailer",
38593
+ titleKey: "Admin.Mailer.Details.Title",
38533
38594
  permission: "Pages.Admin.Mailer"
38534
38595
  },
38535
38596
  children: [
@@ -38550,6 +38611,7 @@ const routes = [{
38550
38611
  component: MailerDetailsComponent,
38551
38612
  data: {
38552
38613
  title: "Mailer",
38614
+ titleKey: "Admin.Mailer.Details.Title",
38553
38615
  permission: "Pages.Admin.Mailer"
38554
38616
  }
38555
38617
  },
@@ -38558,6 +38620,7 @@ const routes = [{
38558
38620
  component: MailerDetailsComponent,
38559
38621
  data: {
38560
38622
  title: "Mailer",
38623
+ titleKey: "Admin.Mailer.Details.Title",
38561
38624
  permission: "Pages.Admin.Mailer"
38562
38625
  }
38563
38626
  }
@@ -38567,6 +38630,7 @@ const routes = [{
38567
38630
  path: "subscriptions",
38568
38631
  data: {
38569
38632
  title: "Subscription",
38633
+ titleKey: "Admin.Routes.Subscription",
38570
38634
  permission: "Pages.Admin.Subscription"
38571
38635
  },
38572
38636
  children: [
@@ -38586,7 +38650,10 @@ const routes = [{
38586
38650
  {
38587
38651
  path: "insight",
38588
38652
  component: SubscriptionInsightTabsComponent,
38589
- data: { title: "Subscription Insights" }
38653
+ data: {
38654
+ title: "Subscription Insights",
38655
+ titleKey: "Admin.Routes.SubscriptionInsights"
38656
+ }
38590
38657
  }
38591
38658
  ]
38592
38659
  },
@@ -38595,6 +38662,7 @@ const routes = [{
38595
38662
  component: InviteUsersComponent,
38596
38663
  data: {
38597
38664
  title: "Invite Users",
38665
+ titleKey: "Admin.Routes.InviteUsers",
38598
38666
  permission: "Pages.Admin.Product"
38599
38667
  }
38600
38668
  },
@@ -38603,6 +38671,7 @@ const routes = [{
38603
38671
  component: SubscriptionDetailsComponent,
38604
38672
  data: {
38605
38673
  title: "Subscription",
38674
+ titleKey: "Admin.Routes.Subscription",
38606
38675
  permission: "Pages.Admin.Subscription"
38607
38676
  }
38608
38677
  },
@@ -38611,6 +38680,7 @@ const routes = [{
38611
38680
  component: SubscriptionDetailsComponent,
38612
38681
  data: {
38613
38682
  title: "Subscription",
38683
+ titleKey: "Admin.Routes.Subscription",
38614
38684
  permission: "Pages.Admin.Subscription"
38615
38685
  }
38616
38686
  },
@@ -38619,6 +38689,7 @@ const routes = [{
38619
38689
  component: AgentDetailsComponent,
38620
38690
  data: {
38621
38691
  title: "Subscription",
38692
+ titleKey: "Admin.Routes.Subscription",
38622
38693
  permission: "Pages.Admin.Subscription"
38623
38694
  }
38624
38695
  }
@@ -38628,6 +38699,7 @@ const routes = [{
38628
38699
  path: "users",
38629
38700
  data: {
38630
38701
  title: "Users Management",
38702
+ titleKey: "Admin.Routes.UsersManagement",
38631
38703
  permission: "Pages.Admin.Users"
38632
38704
  },
38633
38705
  children: [
@@ -38647,7 +38719,10 @@ const routes = [{
38647
38719
  {
38648
38720
  path: "insight",
38649
38721
  component: UserInsightComponent,
38650
- data: { title: "User Insights" }
38722
+ data: {
38723
+ title: "User Insights",
38724
+ titleKey: "Admin.Routes.UserInsights"
38725
+ }
38651
38726
  }
38652
38727
  ]
38653
38728
  },
@@ -38656,6 +38731,7 @@ const routes = [{
38656
38731
  component: UserDetailsComponent,
38657
38732
  data: {
38658
38733
  title: "Add User",
38734
+ titleKey: "Admin.Users.List.AddUser",
38659
38735
  permission: "Pages.Admin.Users"
38660
38736
  }
38661
38737
  },
@@ -38664,6 +38740,7 @@ const routes = [{
38664
38740
  component: UserDetailsComponent,
38665
38741
  data: {
38666
38742
  title: "User Details",
38743
+ titleKey: "Admin.Routes.UserDetails",
38667
38744
  permission: "Pages.Admin.Users"
38668
38745
  }
38669
38746
  }
@@ -38673,6 +38750,7 @@ const routes = [{
38673
38750
  path: "products",
38674
38751
  data: {
38675
38752
  title: "Product Management",
38753
+ titleKey: "Admin.Routes.ProductManagement",
38676
38754
  permission: "Pages.Admin.Product"
38677
38755
  },
38678
38756
  children: [
@@ -38692,18 +38770,25 @@ const routes = [{
38692
38770
  {
38693
38771
  path: "insight",
38694
38772
  component: ProductInsightComponent,
38695
- data: { title: "Product Insights" }
38773
+ data: {
38774
+ title: "Product Insights",
38775
+ titleKey: "Admin.Routes.ProductInsights"
38776
+ }
38696
38777
  },
38697
38778
  {
38698
38779
  path: "onboarding",
38699
38780
  component: OnboardingStepsComponent,
38700
- data: { title: "Onboarding Steps" }
38781
+ data: {
38782
+ title: "Onboarding Steps",
38783
+ titleKey: "Admin.Onboarding.Title"
38784
+ }
38701
38785
  },
38702
38786
  {
38703
38787
  path: "list/users/:id",
38704
38788
  component: UsersListForProductComponent,
38705
38789
  data: {
38706
38790
  title: "Product Management",
38791
+ titleKey: "Admin.Routes.ProductManagement",
38707
38792
  permission: "Pages.Admin.Product"
38708
38793
  }
38709
38794
  },
@@ -38712,6 +38797,7 @@ const routes = [{
38712
38797
  component: FeedbackQuestionsListComponent,
38713
38798
  data: {
38714
38799
  title: "FeedbackQuestions",
38800
+ titleKey: "Admin.Routes.FeedbackQuestions",
38715
38801
  permission: "Pages.Admin.FeedbackQuestions"
38716
38802
  }
38717
38803
  },
@@ -38720,6 +38806,7 @@ const routes = [{
38720
38806
  component: FeedbackQuestionsDetailsComponent,
38721
38807
  data: {
38722
38808
  title: "FeedbackQuestions",
38809
+ titleKey: "Admin.Routes.FeedbackQuestions",
38723
38810
  permission: "Pages.Admin.FeedbackQuestions"
38724
38811
  }
38725
38812
  },
@@ -38728,6 +38815,7 @@ const routes = [{
38728
38815
  component: FeedbackQuestionsDetailsComponent,
38729
38816
  data: {
38730
38817
  title: "FeedbackQuestions",
38818
+ titleKey: "Admin.Routes.FeedbackQuestions",
38731
38819
  permission: "Pages.Admin.FeedbackQuestions"
38732
38820
  }
38733
38821
  }
@@ -38738,6 +38826,7 @@ const routes = [{
38738
38826
  component: ProductDetailsComponent,
38739
38827
  data: {
38740
38828
  title: "Setup a New Product",
38829
+ titleKey: "Admin.Routes.SetupNewProduct",
38741
38830
  permission: "Pages.Admin.Product"
38742
38831
  }
38743
38832
  },
@@ -38746,6 +38835,7 @@ const routes = [{
38746
38835
  component: ProductDetailsComponent,
38747
38836
  data: {
38748
38837
  title: "Product Details",
38838
+ titleKey: "Admin.Routes.ProductDetails",
38749
38839
  permission: "Pages.Admin.Product"
38750
38840
  }
38751
38841
  },
@@ -38754,6 +38844,7 @@ const routes = [{
38754
38844
  component: SubscriptionProductDetailsComponent,
38755
38845
  data: {
38756
38846
  title: "Subscription",
38847
+ titleKey: "Admin.Routes.Subscription",
38757
38848
  permission: "Pages.Admin.Subscription"
38758
38849
  }
38759
38850
  }
@@ -38763,6 +38854,7 @@ const routes = [{
38763
38854
  path: "tags",
38764
38855
  data: {
38765
38856
  title: "Tag Management",
38857
+ titleKey: "Admin.Routes.TagManagement",
38766
38858
  permission: "Pages.Admin.Tags"
38767
38859
  },
38768
38860
  children: [{
@@ -38777,7 +38869,10 @@ const routes = [{
38777
38869
  {
38778
38870
  path: "categories",
38779
38871
  component: TagsCategoryComponent,
38780
- data: { title: "Tag Categories" }
38872
+ data: {
38873
+ title: "Tag Categories",
38874
+ titleKey: "Admin.Routes.TagCategories"
38875
+ }
38781
38876
  },
38782
38877
  {
38783
38878
  path: "list",
@@ -38787,13 +38882,17 @@ const routes = [{
38787
38882
  }, {
38788
38883
  path: ":slug",
38789
38884
  component: TagDetailsComponent,
38790
- data: { title: "Tag Details" }
38885
+ data: {
38886
+ title: "Tag Details",
38887
+ titleKey: "Admin.Routes.TagDetails"
38888
+ }
38791
38889
  }]
38792
38890
  },
38793
38891
  {
38794
38892
  path: "permissions",
38795
38893
  data: {
38796
38894
  title: "Permissions",
38895
+ titleKey: "Label.Permissions",
38797
38896
  permission: "Pages.Admin.Roles"
38798
38897
  },
38799
38898
  children: [
@@ -38813,7 +38912,10 @@ const routes = [{
38813
38912
  {
38814
38913
  path: "roles-list",
38815
38914
  component: RolesListComponent,
38816
- data: { title: "Roles" }
38915
+ data: {
38916
+ title: "Roles",
38917
+ titleKey: "Label.Roles"
38918
+ }
38817
38919
  }
38818
38920
  ]
38819
38921
  },
@@ -38822,6 +38924,7 @@ const routes = [{
38822
38924
  component: PermissionsDetailsComponent,
38823
38925
  data: {
38824
38926
  title: "Add Permission",
38927
+ titleKey: "Admin.Routes.AddPermission",
38825
38928
  permission: "Pages.Admin.Roles"
38826
38929
  }
38827
38930
  },
@@ -38830,6 +38933,7 @@ const routes = [{
38830
38933
  component: PermissionsDetailsComponent,
38831
38934
  data: {
38832
38935
  title: "Permissions",
38936
+ titleKey: "Label.Permissions",
38833
38937
  permission: "Pages.Admin.Roles"
38834
38938
  }
38835
38939
  },
@@ -38838,6 +38942,7 @@ const routes = [{
38838
38942
  component: RoleDetailsComponent,
38839
38943
  data: {
38840
38944
  title: "Role Management",
38945
+ titleKey: "Admin.Routes.RoleManagement",
38841
38946
  permission: "Pages.Admin.Roles"
38842
38947
  }
38843
38948
  },
@@ -38846,6 +38951,7 @@ const routes = [{
38846
38951
  component: RoleDetailsComponent,
38847
38952
  data: {
38848
38953
  title: "Role Management",
38954
+ titleKey: "Admin.Routes.RoleManagement",
38849
38955
  permission: "Pages.Admin.Roles"
38850
38956
  }
38851
38957
  }
@@ -38855,6 +38961,7 @@ const routes = [{
38855
38961
  path: "tos",
38856
38962
  data: {
38857
38963
  title: "Tos",
38964
+ titleKey: "Menu.Admin.PrivacyTos",
38858
38965
  permission: "Pages.Admin.Tos"
38859
38966
  },
38860
38967
  children: [
@@ -38875,6 +38982,7 @@ const routes = [{
38875
38982
  component: TermsOfServiceDetailsComponent,
38876
38983
  data: {
38877
38984
  title: "Tos",
38985
+ titleKey: "Menu.Admin.PrivacyTos",
38878
38986
  permission: "Pages.Admin.Tos"
38879
38987
  }
38880
38988
  },
@@ -38883,6 +38991,7 @@ const routes = [{
38883
38991
  component: TermsOfServiceDetailsComponent,
38884
38992
  data: {
38885
38993
  title: "Tos",
38994
+ titleKey: "Menu.Admin.PrivacyTos",
38886
38995
  permission: "Pages.Admin.Tos"
38887
38996
  }
38888
38997
  }
@@ -38892,6 +39001,7 @@ const routes = [{
38892
39001
  path: "credentials",
38893
39002
  data: {
38894
39003
  title: "Credential Management",
39004
+ titleKey: "Admin.Routes.CredentialManagement",
38895
39005
  permission: "Pages.Admin.Credential"
38896
39006
  },
38897
39007
  children: [
@@ -38911,7 +39021,10 @@ const routes = [{
38911
39021
  {
38912
39022
  path: "subscription",
38913
39023
  component: SubscriptionCredentialsComponent,
38914
- data: { title: "Subscription Credentials" }
39024
+ data: {
39025
+ title: "Subscription Credentials",
39026
+ titleKey: "Admin.Credentials.Subscription.Title"
39027
+ }
38915
39028
  }
38916
39029
  ]
38917
39030
  },
@@ -38920,6 +39033,7 @@ const routes = [{
38920
39033
  component: CredentialsDetailsComponent,
38921
39034
  data: {
38922
39035
  title: "Credential Management Add",
39036
+ titleKey: "Admin.Routes.AddCredential",
38923
39037
  permission: "Pages.Admin.Credential"
38924
39038
  }
38925
39039
  },
@@ -38928,6 +39042,7 @@ const routes = [{
38928
39042
  component: CredentialsDetailsComponent,
38929
39043
  data: {
38930
39044
  title: "Credential Management",
39045
+ titleKey: "Admin.Routes.CredentialManagement",
38931
39046
  permission: "Pages.Admin.Credential"
38932
39047
  }
38933
39048
  },
@@ -38936,6 +39051,7 @@ const routes = [{
38936
39051
  component: SubscriptionCredentialsDetailsComponent,
38937
39052
  data: {
38938
39053
  title: "Credential Management Subscription Details",
39054
+ titleKey: "Admin.Routes.SubscriptionCredentialDetails",
38939
39055
  permission: "Pages.Admin.Credential"
38940
39056
  }
38941
39057
  },
@@ -38944,6 +39060,7 @@ const routes = [{
38944
39060
  component: SubscriptionCredentialsDetailsComponent,
38945
39061
  data: {
38946
39062
  title: "Credential Management",
39063
+ titleKey: "Admin.Routes.CredentialManagement",
38947
39064
  permission: "Pages.Admin.Credential"
38948
39065
  }
38949
39066
  }
@@ -38953,6 +39070,7 @@ const routes = [{
38953
39070
  path: "ambassador-payouts",
38954
39071
  data: {
38955
39072
  title: "Ambassador Payouts",
39073
+ titleKey: "Admin.AmbassadorPayouts.Title",
38956
39074
  permission: "Pages.Admin.AmbassadorPayouts"
38957
39075
  },
38958
39076
  children: [{
@@ -38971,6 +39089,7 @@ const routes = [{
38971
39089
  component: AmbassadorPayoutDetailsComponent,
38972
39090
  data: {
38973
39091
  title: "Ambassador Payout Details",
39092
+ titleKey: "Admin.AmbassadorPayouts.DetailsTitle",
38974
39093
  permission: "Pages.Admin.AmbassadorPayouts"
38975
39094
  }
38976
39095
  }]
@@ -38979,6 +39098,7 @@ const routes = [{
38979
39098
  path: "oauth-clients",
38980
39099
  data: {
38981
39100
  title: "MCP OAuth Clients",
39101
+ titleKey: "Admin.OauthClients.Title",
38982
39102
  permission: "Pages.Admin.Oauth"
38983
39103
  },
38984
39104
  children: [
@@ -38999,6 +39119,7 @@ const routes = [{
38999
39119
  component: OauthClientsDetailsComponent,
39000
39120
  data: {
39001
39121
  title: "Add MCP OAuth Client",
39122
+ titleKey: "Admin.Routes.AddOauthClient",
39002
39123
  permission: "Pages.Admin"
39003
39124
  }
39004
39125
  },
@@ -39007,6 +39128,7 @@ const routes = [{
39007
39128
  component: OauthClientsDetailsComponent,
39008
39129
  data: {
39009
39130
  title: "Edit MCP OAuth Client",
39131
+ titleKey: "Admin.OauthClients.EditTitle",
39010
39132
  permission: "Pages.Admin"
39011
39133
  }
39012
39134
  }
@@ -39017,6 +39139,7 @@ const routes = [{
39017
39139
  component: TrackingComponent,
39018
39140
  data: {
39019
39141
  title: "Tracking",
39142
+ titleKey: "Menu.Admin.Tracking",
39020
39143
  permission: "Pages.Admin.Tracking"
39021
39144
  },
39022
39145
  children: [
@@ -39028,27 +39151,42 @@ const routes = [{
39028
39151
  {
39029
39152
  path: "ahoy-events",
39030
39153
  component: AhoyEventsComponent,
39031
- data: { title: "Ahoy Events" }
39154
+ data: {
39155
+ title: "Ahoy Events",
39156
+ titleKey: "Admin.Tracking.AhoyEvents.Title"
39157
+ }
39032
39158
  },
39033
39159
  {
39034
39160
  path: "ahoy-messages",
39035
39161
  component: AhoyMessagesComponent,
39036
- data: { title: "Ahoy Messages" }
39162
+ data: {
39163
+ title: "Ahoy Messages",
39164
+ titleKey: "Admin.Tracking.AhoyMessages.Title"
39165
+ }
39037
39166
  },
39038
39167
  {
39039
39168
  path: "ahoy-visits",
39040
39169
  component: AhoyVisitsComponent,
39041
- data: { title: "Ahoy Visits" }
39170
+ data: {
39171
+ title: "Ahoy Visits",
39172
+ titleKey: "Admin.Tracking.AhoyVisits.Title"
39173
+ }
39042
39174
  },
39043
39175
  {
39044
39176
  path: "events",
39045
39177
  component: EventsComponent,
39046
- data: { title: "Events" }
39178
+ data: {
39179
+ title: "Events",
39180
+ titleKey: "Admin.Tracking.Events.Title"
39181
+ }
39047
39182
  },
39048
39183
  {
39049
39184
  path: "versions",
39050
39185
  component: VersionsComponent,
39051
- data: { title: "Versions" }
39186
+ data: {
39187
+ title: "Versions",
39188
+ titleKey: "Admin.Tracking.Versions.Title"
39189
+ }
39052
39190
  }
39053
39191
  ]
39054
39192
  },
@@ -39056,6 +39194,7 @@ const routes = [{
39056
39194
  path: "global-config",
39057
39195
  data: {
39058
39196
  title: "Global config",
39197
+ titleKey: "Menu.Admin.GlobalConfigs",
39059
39198
  permission: "Pages.Admin.Global-Config"
39060
39199
  },
39061
39200
  children: [
@@ -39074,12 +39213,18 @@ const routes = [{
39074
39213
  {
39075
39214
  path: "add",
39076
39215
  component: GlobalConfigDetailsComponent,
39077
- data: { title: "Add Global Config" }
39216
+ data: {
39217
+ title: "Add Global Config",
39218
+ titleKey: "Admin.GlobalConfigMessage.AddGlobalConfig"
39219
+ }
39078
39220
  },
39079
39221
  {
39080
39222
  path: ":id",
39081
39223
  component: GlobalConfigDetailsComponent,
39082
- data: { title: "Global Config Details" }
39224
+ data: {
39225
+ title: "Global Config Details",
39226
+ titleKey: "Admin.Routes.GlobalConfigDetails"
39227
+ }
39083
39228
  }
39084
39229
  ]
39085
39230
  }