From 1a11ef20d1d22774d0b21163ed800830b73977c0 Mon Sep 17 00:00:00 2001 From: ykulynych Date: Thu, 9 Jul 2026 17:07:51 +0200 Subject: [PATCH 1/3] [sc-14993] Reworked account navigation --- libs/common/common.babel | 314 ++++++++++++++++++ libs/common/src/assets/i18n/ca.json | 13 + libs/common/src/assets/i18n/en.json | 19 +- libs/common/src/assets/i18n/es.json | 13 + libs/common/src/assets/i18n/fr.json | 13 + .../account-administration.component.html | 38 +++ .../account-administration.component.scss | 1 + .../account-administration.component.ts | 16 + .../account-arag/account-arag.component.ts | 3 +- .../arag-list/arag-list.component.html | 48 ++- .../arag-list/arag-list.component.scss | 23 +- .../account-configuration.component.html | 28 ++ .../account-configuration.component.scss | 1 + .../account-configuration.component.ts | 15 + .../account-consumption.component.html | 59 ++++ .../account-consumption.component.scss | 87 +++++ .../account-consumption.component.ts | 84 +++++ .../account-settings.component.html | 54 +++ .../account-settings.component.scss | 12 + .../account-settings.component.ts | 38 +++ .../simple-account-home.component.html | 2 +- .../kb-list/kb-list.component.html | 35 +- .../kb-list/kb-list.component.scss | 19 +- .../account-manage.component.html | 260 +++++++-------- .../account-manage.component.scss | 5 +- .../account-manage.component.ts | 11 +- .../account-models.component.html | 240 +++++++------ .../account-models.component.scss | 32 +- .../account-models.component.ts | 4 +- .../account-nua/account-nua.component.html | 30 +- .../account-nua/account-nua.component.scss | 7 +- .../src/lib/account/account-page-base.ts | 55 +++ .../account-page-layout.component.html | 26 ++ .../account-page-layout.component.scss | 50 +++ .../account-page-layout.component.ts | 16 + .../account-users.component.html | 19 +- .../account-users.component.scss | 35 +- .../account-users/account-users.component.ts | 21 +- libs/common/src/lib/account/account.module.ts | 133 ++++---- libs/common/src/lib/account/account.scss | 10 + .../account/billing/billing.component.html | 7 +- .../lib/account/billing/billing.component.ts | 29 +- .../billing/checkout/checkout.component.html | 2 +- .../billing/checkout/checkout.component.scss | 9 +- .../billing/checkout/checkout.component.ts | 6 +- .../billing/history/history.component.html | 8 +- .../billing/history/history.component.scss | 5 + .../my-subscription.component.html | 30 +- .../my-subscription.component.scss | 3 +- .../unsubscribe.component.html | 4 +- .../unsubscribe.component.scss | 3 +- .../lib/account/billing/redirect.component.ts | 2 +- .../aws-subscription.component.html | 2 +- .../aws-subscription.component.scss | 3 +- .../manual-subscription.component.html | 2 +- .../manual-subscription.component.scss | 1 + .../subscriptions.component.html | 26 +- .../subscriptions.component.scss | 1 + .../subscriptions/subscriptions.component.ts | 2 +- .../billing/usage/usage-table.component.html | 2 +- .../billing/usage/usage-table.component.scss | 1 + .../dashboard-layout.component.ts | 11 +- .../kb-creation/kb-creation.component.html | 23 +- .../kb-creation/kb-creation.component.scss | 21 ++ .../lib/kb-creation/kb-creation.component.ts | 35 +- .../src/lib/navbar/navbar.component.html | 148 --------- .../common/src/lib/navbar/navbar.component.ts | 29 +- .../src/lib/profile/profile.component.html | 22 +- .../src/lib/profile/profile.component.scss | 28 +- .../src/lib/profile/profile.component.spec.ts | 2 + .../src/lib/profile/profile.component.ts | 5 +- .../common/src/lib/topbar/topbar.component.ts | 45 ++- .../topbar/user-menu/user-menu.component.html | 122 +++---- .../topbar/user-menu/user-menu.component.scss | 18 + .../topbar/user-menu/user-menu.component.ts | 287 +++++++++++----- .../src/lib/services/navigation.service.ts | 4 - 76 files changed, 1960 insertions(+), 877 deletions(-) create mode 100644 libs/common/src/lib/account/account-administration/account-administration.component.html create mode 100644 libs/common/src/lib/account/account-administration/account-administration.component.scss create mode 100644 libs/common/src/lib/account/account-administration/account-administration.component.ts create mode 100644 libs/common/src/lib/account/account-configuration/account-configuration.component.html create mode 100644 libs/common/src/lib/account/account-configuration/account-configuration.component.scss create mode 100644 libs/common/src/lib/account/account-configuration/account-configuration.component.ts create mode 100644 libs/common/src/lib/account/account-home/account-consumption.component.html create mode 100644 libs/common/src/lib/account/account-home/account-consumption.component.scss create mode 100644 libs/common/src/lib/account/account-home/account-consumption.component.ts create mode 100644 libs/common/src/lib/account/account-home/account-settings.component.html create mode 100644 libs/common/src/lib/account/account-home/account-settings.component.scss create mode 100644 libs/common/src/lib/account/account-home/account-settings.component.ts create mode 100644 libs/common/src/lib/account/account-page-base.ts create mode 100644 libs/common/src/lib/account/account-page-layout/account-page-layout.component.html create mode 100644 libs/common/src/lib/account/account-page-layout/account-page-layout.component.scss create mode 100644 libs/common/src/lib/account/account-page-layout/account-page-layout.component.ts create mode 100644 libs/common/src/lib/account/account.scss diff --git a/libs/common/common.babel b/libs/common/common.babel index 15bf139410..81802b057a 100644 --- a/libs/common/common.babel +++ b/libs/common/common.babel @@ -22,6 +22,29 @@ account + + account-title + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + account_name_invalid @@ -119,6 +142,52 @@ + + administration + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + administration-description + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + allow_kb_management @@ -658,6 +727,29 @@ + + configuration-description + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + consumption @@ -2471,6 +2563,57 @@ + + manage_users-kb-cta + + + action + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + prompt + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + models @@ -17884,6 +18027,29 @@ + + configuration + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + confirm_password @@ -70957,6 +71123,154 @@ + + user-menu + + + account-settings + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + section + + + account + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + administration + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + configuration + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + personal + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + support + + + + + ca-ES + false + + + en-US + false + + + es-ES + false + + + fr-FR + false + + + + + + + validation diff --git a/libs/common/src/assets/i18n/ca.json b/libs/common/src/assets/i18n/ca.json index b7eb37aa77..87ae86c86e 100644 --- a/libs/common/src/assets/i18n/ca.json +++ b/libs/common/src/assets/i18n/ca.json @@ -1,8 +1,11 @@ { + "account.account-title": "Compte", "account.account_name_invalid": "El nom del compte no és vàlid", "account.add_user": "Afegir usuari", "account.admin.make_admin": "Fer Administrador", "account.admin.warning": "Si converteixes aquest usuari en administrador podrà accedir i editar a totes les opcions.", + "account.administration": "Administració", + "account.administration-description": "Gestiona els quadres de coneixement i els usuaris a nivell de compte.", "account.allow_kb_management": "Permetre la gestió de Knowledge Boxes", "account.assume-role.account-id": "ID del compte", "account.assume-role.create-role": "Crea un nou rol", @@ -26,6 +29,7 @@ "account.assume-role.step-2-4": "Introdueix un policy name (per exemple, \"progress-agentic-rag\") i fes clic a Create policy", "account.assume-role.step-3-1": "Introdueix l'ARN del rol creat:", "account.billing": "Pagament i subscripció", + "account.configuration-description": "Gestiona les claus NUA, els agents de recuperació i les configuracions del model.", "account.consumption": "Consum", "account.consumption-description": "Consum basat en la teva activitat.", "account.create_nua_key": "Creeu una nova clau Agentic RAG Understanding API", @@ -102,6 +106,8 @@ "account.manage": "Gestió del compte", "account.manage_users": "Gestiona els usuaris", "account.manage_users-description": "Gestiona els col·laboradors i els permisos d'accés al compte.", + "account.manage_users-kb-cta.action": "Gestiona els usuaris de Knowledge Box", + "account.manage_users-kb-cta.prompt": "Cal gestionar l'accés per a la Knowledge Box actual?", "account.models.bedrock.delete-confirm.description": "Estàs segur que vols eliminar aquesta integració?", "account.models.bedrock.delete-confirm.title": "Eliminar integració AWS Bedrock", "account.models.bedrock.description": "Integra tu AWS Bedrock en Agentic RAG", @@ -748,6 +754,7 @@ "generic.clear_all": "Esborrar tot", "generic.close": "Tanca", "generic.color": "Color", + "generic.configuration": "Configuració", "generic.confirm_password": "Confirmar contrasenya", "generic.content": "Contingut", "generic.continue": "Continuar", @@ -2925,6 +2932,12 @@ "upload.warning-spreadsheet-title": "Estas a punt de pujar {{num}} fitxers de full de càlcul", "upload.warning-spreadsheets-description": "És possible que la indexació d’embeddings d’aquests fitxersno sigui òptima en funció del seu format i estructura. Consulteu la documentació per a més informació.", "user.logout": "Sortir", + "user-menu.account-settings": "Configuració del compte", + "user-menu.section.account": "Compte", + "user-menu.section.administration": "Administració", + "user-menu.section.configuration": "Configuració", + "user-menu.section.personal": "Personal", + "user-menu.section.support": "Suport", "validation.invalid-slug": "Slug no vàlid", "validation.name_required": "Introdueix el nom i cognoms", "validation.url_required": "Introdueix una URL vàlida (per exemple https://progress.com)", diff --git a/libs/common/src/assets/i18n/en.json b/libs/common/src/assets/i18n/en.json index 79eb5f7b7b..29e0d6730e 100644 --- a/libs/common/src/assets/i18n/en.json +++ b/libs/common/src/assets/i18n/en.json @@ -1,8 +1,11 @@ { + "account.account-title": "Account", "account.account_name_invalid": "Invalid account name", "account.add_user": "Add user", "account.admin.make_admin": "Make Administrator", "account.admin.warning": "If you give the administrator role to this user, they will be able to access and edit all options.", + "account.administration": "Administration", + "account.administration-description": "Manage Knowledge Boxes and account-level users.", "account.allow_kb_management": "Allow management of Knowledge Boxes", "account.assume-role.account-id": "Account ID", "account.assume-role.create-role": "Create new role", @@ -26,6 +29,7 @@ "account.assume-role.step-2-4": "Set a policy name (eg. \"progress-agentic-rag\") and click Create policy", "account.assume-role.step-3-1": "Enter the ARN of the created role:", "account.billing": "Payment & Subscription", + "account.configuration-description": "Manage NUA keys, retrieval agents, and model configurations.", "account.consumption": "Consumption", "account.consumption-description": "Consumption based on your activity.", "account.create_nua_key": "Create new Agentic RAG Understanding API key ", @@ -101,7 +105,9 @@ "account.knowledgeboxes": "Knowledge Boxes", "account.manage": "Manage account", "account.manage_users": "Manage users", - "account.manage_users-description": "Manage collaborators and account access permissions.", + "account.manage_users-description": "Manage account-level users and permissions. Users added here can later be invited to individual Knowledge Boxes.", + "account.manage_users-kb-cta.action": "Manage Knowledge Box Users", + "account.manage_users-kb-cta.prompt": "Need to manage access for the current Knowledge Box?", "account.models.bedrock.delete-confirm.description": "Are you sure you want to delete this integration?", "account.models.bedrock.delete-confirm.title": "Delete AWS Bedrock integration", "account.models.bedrock.description": "Integrate your AWS Bedrock into Agentic RAG", @@ -173,7 +179,7 @@ "account.nuclia-tokens.total": "Total", "account.preferences": "Preferences", "account.preferences-description": "Update your profile information and personal preferences.", - "account.related_kbs": "Account's Knowledge Boxes", + "account.related_kbs": "Knowledge Boxes", "account.retrieval-agents.confirm-deletion": "Are you sure you want to delete \"{{name}}\" agent?", "account.retrieval-agents.count-of-max": "{{count}} of {{max}}", "account.retrieval-agents.create": "Create retrieval agent", @@ -202,7 +208,7 @@ "account.saml.sso-url": "Single Sign-On URL", "account.saml.title": "Single Sign-On configuration", "account.saml.x509-cert": "X.509 certificate", - "account.settings-description": "Track consumption, manage subscriptions, users and preferences.", + "account.settings-description": "Manage consumption, subscriptions, user preferences, and account settings.", "account.slug-unavailable": "The chosen slug is unavailable", "account.subscriptions": "Subscriptions", "account.title": "Name", @@ -748,6 +754,7 @@ "generic.clear_all": "Clear All", "generic.close": "Close", "generic.color": "Color", + "generic.configuration": "Configuration", "generic.confirm_password": "Confirm password", "generic.content": "Content", "generic.continue": "Continue", @@ -2925,6 +2932,12 @@ "upload.warning-spreadsheet-title": "You are about to upload {{num}} spreadsheet files", "upload.warning-spreadsheets-description": "The embeddings indexing of these files might not be optimal depending on their format and structure. See the documentation for more information.", "user.logout": "Log out", + "user-menu.account-settings": "Account settings", + "user-menu.section.account": "Account", + "user-menu.section.administration": "Administration", + "user-menu.section.configuration": "Configuration", + "user-menu.section.personal": "Personal", + "user-menu.section.support": "Support", "validation.invalid-slug": "Invalid slug", "validation.name_required": "Add your name and surnames", "validation.url_required": "Enter a valid URL (e.g. https://progress.com)", diff --git a/libs/common/src/assets/i18n/es.json b/libs/common/src/assets/i18n/es.json index fbcf773fc0..edb78c865d 100644 --- a/libs/common/src/assets/i18n/es.json +++ b/libs/common/src/assets/i18n/es.json @@ -1,8 +1,11 @@ { + "account.account-title": "Cuenta", "account.account_name_invalid": "El nombre de la cuenta no es válido", "account.add_user": "Añadir usuario", "account.admin.make_admin": "Hacer administrador", "account.admin.warning": "Si le otorgas a este usuario un rol de administrador, el usuario podrá acceder y editar todas las opciones.", + "account.administration": "Administración", + "account.administration-description": "Gestionar los cuadros de conocimiento y los usuarios a nivel de cuenta.", "account.allow_kb_management": "Permitir la gestión de Knowledge Boxes", "account.assume-role.account-id": "ID de la cuenta", "account.assume-role.create-role": "Crea un nuevo rol", @@ -26,6 +29,7 @@ "account.assume-role.step-2-4": "Introduce un nombre de política (por ejemplo, \"progress-agentic-rag\") y haz clic en Crear política.", "account.assume-role.step-3-1": "Introduce el ARN del rol creado:", "account.billing": "Pago y suscripción", + "account.configuration-description": "Gestionar las claves NUA, los agentes de recuperación y las configuraciones de los modelos.", "account.consumption": "Consumo", "account.consumption-description": "Consumo en función de tu actividad.", "account.create_nua_key": "Crear una nueva clave Agentic RAG Understanding API", @@ -102,6 +106,8 @@ "account.manage": "Gestión de la cuenta", "account.manage_users": "Administrar usuarios", "account.manage_users-description": "Gestiona los colaboradores y los permisos de acceso a la cuenta.", + "account.manage_users-kb-cta.action": "Administrar usuarios de Knowledge Box", + "account.manage_users-kb-cta.prompt": "¿Necesita gestionar el acceso a la Caja de Conocimiento actual?", "account.models.bedrock.delete-confirm.description": "¿Está seguro de que quieres eliminar esta integración?", "account.models.bedrock.delete-confirm.title": "Eliminar integración AWS Bedrock", "account.models.bedrock.description": "Integra el teu AWS Bedrock a Agentic RAG", @@ -748,6 +754,7 @@ "generic.clear_all": "Borrar todo", "generic.close": "Cerca", "generic.color": "Color", + "generic.configuration": "Configuración", "generic.confirm_password": "Confirmar contraseña", "generic.content": "Contenido", "generic.continue": "Continuar", @@ -2925,6 +2932,12 @@ "upload.warning-spreadsheet-title": "Estás a punto de cargar {{num}} archivos de hoja de cálculo", "upload.warning-spreadsheets-description": "Es posible que la indexación de embeddings de estos archivos no sea óptima en funcion de su formato y estructura. Consulte la documentación para obtener más información.", "user.logout": "Salir", + "user-menu.account-settings": "Configuraciones de la Cuenta", + "user-menu.section.account": "Cuenta", + "user-menu.section.administration": "Administración", + "user-menu.section.configuration": "Configuración", + "user-menu.section.personal": "Personal", + "user-menu.section.support": "Apoyo", "validation.invalid-slug": "Slug no válido", "validation.name_required": "Añade tu nombre y apellidos", "validation.url_required": "Introduce una URL válida (por ejemplo https://progress.com)", diff --git a/libs/common/src/assets/i18n/fr.json b/libs/common/src/assets/i18n/fr.json index d737354592..518ff16a39 100644 --- a/libs/common/src/assets/i18n/fr.json +++ b/libs/common/src/assets/i18n/fr.json @@ -1,8 +1,11 @@ { + "account.account-title": "Compte", "account.account_name_invalid": "Nom de compte invalide", "account.add_user": "Ajouter un utilisateur", "account.admin.make_admin": "Faire administrateur", "account.admin.warning": "Si vous donnez le rôle d’administrateur à cet utilisateur, il pourra accéder à toutes les options et les modifier.", + "account.administration": "Administration", + "account.administration-description": "Gérer les boîtes à connaissances et les utilisateurs au niveau du compte.", "account.allow_kb_management": "Autoriser la gestion des Knowledge Boxes", "account.assume-role.account-id": "ID du compte", "account.assume-role.create-role": "Créer un nouveau rôle", @@ -26,6 +29,7 @@ "account.assume-role.step-2-4": "Définissez un nom de la politique (par exemple, « progress-agentic-rag ») et cliquez sur Créer une politique", "account.assume-role.step-3-1": "Saisissez l'ARN du rôle créé :", "account.billing": "Paiement et abonnement", + "account.configuration-description": "Gérer les clés NUA, les agents de récupération et les configurations de modèles.", "account.consumption": "Consommation", "account.consumption-description": "Consommation en fonction de votre activité.", "account.create_nua_key": "Créer une nouvelle clé Agentic RAG Understanding API", @@ -102,6 +106,8 @@ "account.manage": "Gérer le compte", "account.manage_users": "Gérer les utilisateurs", "account.manage_users-description": "Gérer les collaborateurs et les autorisations d'accès aux comptes.", + "account.manage_users-kb-cta.action": "Gérer les utilisateurs de la boîte à connaissances", + "account.manage_users-kb-cta.prompt": "Besoin de gérer l'accès à la Knowledge Box actuelle ?", "account.models.bedrock.delete-confirm.description": "Êtes-vous sûr de vouloir supprimer cette intégration ?", "account.models.bedrock.delete-confirm.title": "Supprimer intégration AWS Bedrock", "account.models.bedrock.description": "Intégrez votre AWS Bedrock à Agentic RAG", @@ -748,6 +754,7 @@ "generic.clear_all": "Effacer tout", "generic.close": "Fermer", "generic.color": "Couleur", + "generic.configuration": "Configuration", "generic.confirm_password": "Confirmer le mot de passe", "generic.content": "Contenu", "generic.continue": "Continuer", @@ -2925,6 +2932,12 @@ "upload.warning-spreadsheet-title": "Vous êtes sur le point d’importer {{num}} fichiers de feuille de calcul", "upload.warning-spreadsheets-description": "L’indexation d’embeddings de ces fichiers peut ne pas être optimale en fonction de leur format et de leur structure. Consultez la documentation pour plus d’informations.", "user.logout": "Déconnexion", + "user-menu.account-settings": "Paramètres du compte", + "user-menu.section.account": "Compte", + "user-menu.section.administration": "Administration", + "user-menu.section.configuration": "Configuration", + "user-menu.section.personal": "Personnel", + "user-menu.section.support": "Soutien", "validation.invalid-slug": "Slug invalide", "validation.name_required": "Ajoutez vos nom et prénom", "validation.url_required": "Saisir une URL valide (par exemple https://progress.com)", diff --git a/libs/common/src/lib/account/account-administration/account-administration.component.html b/libs/common/src/lib/account/account-administration/account-administration.component.html new file mode 100644 index 0000000000..a6027daf39 --- /dev/null +++ b/libs/common/src/lib/account/account-administration/account-administration.component.html @@ -0,0 +1,38 @@ + + + + {{ 'account.related_kbs' | translate }} + + @if (isRetrievalAgentsEnabled | async) { + + {{ 'navbar.account-retrieval-agents' | translate }} + + } + @if (isAccountManager | async) { + + {{ 'account.manage_users' | translate }} + + } + + diff --git a/libs/common/src/lib/account/account-administration/account-administration.component.scss b/libs/common/src/lib/account/account-administration/account-administration.component.scss new file mode 100644 index 0000000000..73e6cd373f --- /dev/null +++ b/libs/common/src/lib/account/account-administration/account-administration.component.scss @@ -0,0 +1 @@ +@use 'apps/dashboard/src/variables' as *; diff --git a/libs/common/src/lib/account/account-administration/account-administration.component.ts b/libs/common/src/lib/account/account-administration/account-administration.component.ts new file mode 100644 index 0000000000..777024e577 --- /dev/null +++ b/libs/common/src/lib/account/account-administration/account-administration.component.ts @@ -0,0 +1,16 @@ +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { FeaturesService } from '@flaps/core'; +import { AccountPageBase } from '../account-page-base'; + +@Component({ + selector: 'app-account-administration', + templateUrl: './account-administration.component.html', + styleUrl: './account-administration.component.scss', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: false, +}) +export class AccountAdministrationComponent extends AccountPageBase { + private features = inject(FeaturesService); + isAccountManager = this.features.isAccountManager; + isRetrievalAgentsEnabled = this.features.unstable.retrievalAgents; +} diff --git a/libs/common/src/lib/account/account-arag/account-arag.component.ts b/libs/common/src/lib/account/account-arag/account-arag.component.ts index f0bf31f9c8..173a0e08a5 100644 --- a/libs/common/src/lib/account/account-arag/account-arag.component.ts +++ b/libs/common/src/lib/account/account-arag/account-arag.component.ts @@ -1,11 +1,12 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-account-arag', template: ` `, + imports: [RouterOutlet], changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, }) export class AccountAragComponent {} diff --git a/libs/common/src/lib/account/account-arag/arag-list/arag-list.component.html b/libs/common/src/lib/account/account-arag/arag-list/arag-list.component.html index 7d5504426a..5a4d88527e 100644 --- a/libs/common/src/lib/account/account-arag/arag-list/arag-list.component.html +++ b/libs/common/src/lib/account/account-arag/arag-list/arag-list.component.html @@ -5,25 +5,14 @@ } @if (account && retrievalAgents) { -