From 54eff795df01cf8904cd9c6bf43576781a75bac5 Mon Sep 17 00:00:00 2001 From: Luigi Borriello Date: Thu, 19 Feb 2026 12:02:25 +0100 Subject: [PATCH 01/11] Footer first implementation --- .vscode/settings.json | 78 + package-lock.json | 9 - src/app/app.component.html | 22 +- .../pages/dashboard/dashboard.component.css | 61 +- .../pages/dashboard/dashboard.component.html | 75 +- .../pages/dashboard/dashboard.component.ts | 28 +- .../pages/dome-blog/dome-blog.component.html | 2 +- src/app/shared/footer/footer.component.css | 43 + src/app/shared/footer/footer.component.html | 107 +- src/app/shared/footer/footer.component.ts | 139 +- src/app/themes/bae.theme.ts | 5 +- src/app/themes/dome.theme.ts | 79 +- src/app/themes/theme.interfaces.ts | 8 +- src/assets/i18n/en.json | 3102 +++++++++++------ src/assets/i18n/es.json | 3099 ++++++++++------ src/environments/environment.development.ts | 184 +- 16 files changed, 4672 insertions(+), 2369 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..5321e775 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,78 @@ +{ + "editor.defaultFormatter": "vscode.typescript-language-features", + "editor.formatOnSave": true, + "editor.formatOnPaste": false, + "editor.formatOnType": false, + "[typescript]": { + "editor.defaultFormatter": "vscode.typescript-language-features", + "editor.formatOnSave": true + }, + "[typescriptreact]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, + "[javascript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, + "[json]": { + "editor.defaultFormatter": "vscode.json-language-features", + "editor.formatOnSave": true + }, + "[jsonc]": { + "editor.defaultFormatter": "vscode.json-language-features", + "editor.formatOnSave": true + }, + "[html]": { + "editor.defaultFormatter": "vscode.html-language-features", + "editor.formatOnSave": true + }, + "[css]": { + "editor.defaultFormatter": "vscode.css-language-features", + "editor.formatOnSave": true + }, + "[scss]": { + "editor.defaultFormatter": "vscode.css-language-features", + "editor.formatOnSave": true + }, + "editor.codeActionsOnSave": { + "source.organizeImports": "explicit" + }, + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.validate.enable": true, + "typescript.updateImportsOnFileMove.enabled": "always", + "typescript.preferences.importModuleSpecifier": "relative", + "typescript.preferences.importModuleSpecifierEnding": "auto", + "typescript.preferences.quoteStyle": "single", + "typescript.suggest.autoImports": true, + "typescript.suggest.completeFunctionCalls": true, + "editor.inlineSuggest.enabled": true, + "editor.parameterHints.enabled": true, + "editor.suggestSelection": "first", + "editor.tabCompletion": "on", + "angular.enable-strict-mode-prompt": false, + "angular.trace.server": "off", + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.detectIndentation": false, + "files.eol": "\n", + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "editor.wordWrap": "on", + "editor.minimap.enabled": false, + "editor.renderWhitespace": "selection", + "editor.bracketPairColorization.enabled": true, + "editor.guides.bracketPairs": true, + "files.exclude": { + "**/.angular/**": true, + "**/.cache/**": true, + "**/dist/**": true, + "**/coverage/**": true, + "**/.DS_Store": true + }, + "git.autofetch": true, + "git.confirmSync": false, + "explorer.compactFolders": false, + "workbench.startupEditor": "none" +} diff --git a/package-lock.json b/package-lock.json index 4f2016fe..f7df387e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6998,15 +6998,6 @@ "node": ">=12" } }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "optional": true, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-shape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", diff --git a/src/app/app.component.html b/src/app/app.component.html index 16a1a252..25bdb714 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,17 +1,19 @@ - + -
+
-@if (providerThemeName == "DOME") { - +@if (providerThemeName === "DOME") { + } - + @if(isProduction){ - -} \ No newline at end of file + + + +} diff --git a/src/app/pages/dashboard/dashboard.component.css b/src/app/pages/dashboard/dashboard.component.css index 829b9c26..a47192e6 100644 --- a/src/app/pages/dashboard/dashboard.component.css +++ b/src/app/pages/dashboard/dashboard.component.css @@ -1,6 +1,6 @@ :host { display: block; - + --dome-dashboard-blue-900: #0a1a45; --dome-dashboard-blue-700: #153a8a; --dome-dashboard-blue-600: #1c4dd8; @@ -24,6 +24,7 @@ .page * { box-sizing: border-box; } + .page { margin: 0; font-family: @@ -35,12 +36,14 @@ color: var(--dome-dashboard-gray-900); line-height: 1.6; } + .page h1, .page h2, .page h3 { font-weight: 600; letter-spacing: -0.02em; } + .page img { display: block; max-width: 100%; @@ -49,34 +52,37 @@ .page section { padding: 5rem 0; } + .section-inner { max-width: var(--dome-dashboard-max-w); margin: 0 auto; padding: 0 1.5rem; } + .section-header { text-align: center; max-width: 760px; margin: 0 auto 3rem; } + .section-header h2 { margin-bottom: 0.8rem; font-size: 2rem; } + .section-header p { color: var(--dome-dashboard-gray-700); font-size: 1.05rem; } .hero { - background: linear-gradient( - 135deg, - var(--dome-dashboard-blue-900), - var(--dome-dashboard-blue-600) - ); + background: linear-gradient(135deg, + var(--dome-dashboard-blue-900), + var(--dome-dashboard-blue-600)); padding: 6rem 0; color: #fff; } + .hero-inner { max-width: var(--dome-dashboard-max-w); margin: 0 auto; @@ -86,6 +92,7 @@ gap: 3rem; align-items: center; } + .hero-eyebrow { text-transform: uppercase; font-size: 0.75rem; @@ -93,22 +100,26 @@ letter-spacing: 0.15em; margin-bottom: 1rem; } + .hero-title { font-size: clamp(2.4rem, 5vw, 3.2rem); margin: 0 0 1.2rem; line-height: 1.2; } + .hero-subtitle { font-size: 1.15rem; max-width: 560px; opacity: 0.95; margin-bottom: 1.8rem; } + .hero-ctas { display: flex; gap: 1rem; flex-wrap: wrap; } + .hero-aside { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(6px); @@ -116,10 +127,12 @@ border-radius: var(--dome-dashboard-radius-card); border: 1px solid rgba(255, 255, 255, 0.2); } + .hero-aside h3 { margin-top: 0; font-size: 1.15rem; } + .hero-aside ul { padding-left: 1.1rem; margin-bottom: 1rem; @@ -129,6 +142,7 @@ border-color: #fff; color: #fff; } + .dd-btn-outline-inverse:hover { background: rgba(255, 255, 255, 0.12); } @@ -136,9 +150,11 @@ .dd-mt-1r { margin-top: 1rem; } + .dd-mt-15r { margin-top: 1.5rem; } + .dd-mt-auto { margin-top: auto; } @@ -151,6 +167,7 @@ color: white; text-decoration: underline; } + .dd-hero-browse-link:hover { opacity: 0.9; } @@ -160,11 +177,13 @@ grid-template-columns: repeat(4, 1fr); gap: 1.7rem; } + .card-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.7rem; } + .card { background: #fff; border-radius: var(--dome-dashboard-radius-card); @@ -173,16 +192,19 @@ box-shadow: var(--dome-dashboard-shadow-soft); transition: 0.2s ease; } + .card:hover { transform: translateY(-4px); box-shadow: 0 6px 26px rgba(0, 0, 0, 0.06); } + .card h3 { margin-top: 0; font-size: 1.1rem; margin-bottom: 0.4rem; color: var(--dome-dashboard-blue-700); } + .card p { color: var(--dome-dashboard-gray-700); font-size: 0.95rem; @@ -196,12 +218,14 @@ border: 1px solid var(--dome-dashboard-gray-300); font-size: 1rem; } + .service-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 2rem; } + .service-card { border-radius: var(--dome-dashboard-radius-card); border: 1px solid var(--dome-dashboard-gray-200); @@ -213,10 +237,12 @@ box-shadow: var(--dome-dashboard-shadow-soft); transition: 0.2s; } + .service-card:hover { transform: translateY(-4px); box-shadow: 0 8px 26px rgba(0, 0, 0, 0.07); } + .badge { display: inline-block; background: var(--dome-dashboard-blue-100); @@ -226,11 +252,13 @@ font-size: 0.85rem; font-weight: 600; } + .tag-list { display: flex; gap: 0.4rem; flex-wrap: wrap; } + .tag { background: var(--dome-dashboard-gray-100); border: 1px solid var(--dome-dashboard-gray-200); @@ -239,10 +267,12 @@ font-size: 0.8rem; color: var(--dome-dashboard-gray-700); } + .dd-marketplace-catalog-link { color: var(--dome-dashboard-blue-700); text-decoration: underline; } + .dd-marketplace-catalog-link:hover { color: var(--dome-dashboard-blue-600); } @@ -252,6 +282,7 @@ grid-template-columns: 1fr 1fr; gap: 4rem; } + .column-title { font-size: 2.2rem; color: var(--dome-dashboard-blue-900); @@ -262,6 +293,7 @@ width: 100%; padding-bottom: 0.5rem; } + .sub-section-title { margin: 0 0 1rem; font-size: 1.25rem; @@ -270,15 +302,18 @@ .why-use { margin-bottom: 2.5rem; } + .how-works { display: flex; flex-direction: column; - min-height: 360px; + min-height: 360px; } + .how-works ol { margin: 0; padding-left: 1.2rem; } + .how-works li { margin-bottom: 0.9rem; color: var(--dome-dashboard-gray-700); @@ -290,6 +325,7 @@ grid-template-columns: repeat(3, 1fr); gap: 2rem; } + .roadmap-item { background: #fff; padding: 1.8rem; @@ -297,6 +333,7 @@ border: 1px solid var(--dome-dashboard-gray-200); box-shadow: var(--dome-dashboard-shadow-soft); } + .roadmap-label { font-size: 0.8rem; text-transform: uppercase; @@ -311,10 +348,12 @@ text-align: center; padding: 4rem 0; } + .final-cta h2 { font-size: 2rem; margin-bottom: 1.5rem; } + .dd-final-cta-actions { display: flex; gap: 1rem; @@ -326,24 +365,31 @@ .hero-inner { grid-template-columns: 1fr; } + .split-container { grid-template-columns: 1fr; gap: 3rem; } + .how-works { min-height: auto; } + .service-grid { grid-template-columns: 1fr 1fr; } + .roadmap { grid-template-columns: 1fr 1fr; } + .card-grid-4 { grid-template-columns: 1fr 1fr; } } + @media (max-width: 700px) { + .service-grid, .roadmap, .card-grid-4, @@ -467,6 +513,7 @@ grid-template-columns: 1fr 1fr; } } + @media (max-width: 700px) { .roadmap { grid-template-columns: 1fr; diff --git a/src/app/pages/dashboard/dashboard.component.html b/src/app/pages/dashboard/dashboard.component.html index ddbdbe2a..8de73ea2 100644 --- a/src/app/pages/dashboard/dashboard.component.html +++ b/src/app/pages/dashboard/dashboard.component.html @@ -316,7 +316,8 @@

{{ "dashboard.finalCta.title" | translate }}

{{ 'DASHBOARD._header' | translate }}

-

{{ 'DASHBOARD._subheader' | translate }}

+

{{ 'DASHBOARD._subheader' | + translate }}

-
+
+ +
+
+ +
- -
+ + + } diff --git a/src/app/pages/dashboard/dashboard.component.ts b/src/app/pages/dashboard/dashboard.component.ts index 26803c44..5212f580 100644 --- a/src/app/pages/dashboard/dashboard.component.ts +++ b/src/app/pages/dashboard/dashboard.component.ts @@ -1,14 +1,15 @@ import { NgClass, SlicePipe } from '@angular/common'; import { ChangeDetectorRef, Component, OnDestroy, OnInit, SecurityContext } from '@angular/core'; +import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { DomSanitizer } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; import { initFlowbite } from 'flowbite'; -import { FormControl, ReactiveFormsModule } from '@angular/forms'; import * as moment from 'moment'; -import { map, Subject, Subscription, takeUntil } from 'rxjs'; +import { map, Subject, takeUntil } from 'rxjs'; import { LoginInfo } from 'src/app/models/interfaces'; import { ProductOffering } from 'src/app/models/product.model'; +import { FeaturedComponent } from 'src/app/offerings/featured/featured.component'; import { EventMessageService } from 'src/app/services/event-message.service'; import { LocalStorageService } from 'src/app/services/local-storage.service'; import { LoginServiceService } from 'src/app/services/login-service.service'; @@ -18,7 +19,6 @@ import { ThemeService } from 'src/app/services/theme.service'; import { EuropeTrademarkComponent } from 'src/app/shared/europe-trademark/europe-trademark.component'; import { ThemeConfig } from 'src/app/themes'; import { environment } from 'src/environments/environment'; -import { FeaturedComponent } from 'src/app/offerings/featured/featured.component'; interface Stats { services: number; @@ -30,21 +30,22 @@ interface Stats { templateUrl: './dashboard.component.html', styleUrl: './dashboard.component.css', standalone: true, - imports: [TranslateModule, SlicePipe, NgClass, ReactiveFormsModule, EuropeTrademarkComponent, FeaturedComponent], + imports: [TranslateModule, SlicePipe, EuropeTrademarkComponent, ReactiveFormsModule, FeaturedComponent, NgClass], }) export class DashboardComponent implements OnInit, OnDestroy { private unSub = new Subject(); - private rotationIntervalId?: ReturnType; - private themeSubscription: Subscription = new Subscription(); - productOfferings?: ProductOffering[]; protected MAX_CATEGORIES_PER_PRODUCT_OFFERING = 3; + + providerThemeName = environment.providerThemeName; + currentTheme: ThemeConfig | null = null; + + private rotationIntervalId?: ReturnType; + isFilterPanelShown = false; searchField = new FormControl(); searchEnabled = environment.SEARCH_ENABLED; - providerThemeName = environment.providerThemeName; - currentTheme: ThemeConfig | null = null; domeRegister: string = environment.DOME_REGISTER_LINK; services: string[] = []; @@ -66,10 +67,10 @@ export class DashboardComponent implements OnInit, OnDestroy { private router: Router, private statsService: StatsServiceService, private themeService: ThemeService, - ) {} + ) { } ngOnInit() { - this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => { + this.themeService.currentTheme$.pipe(takeUntil(this.unSub)).subscribe((theme) => { this.currentTheme = theme; }); @@ -145,6 +146,7 @@ export class DashboardComponent implements OnInit, OnDestroy { } this.cdr.detectChanges(); + console.log('----') } private getFirstThreeRandomProductOfferings(): void { @@ -200,9 +202,7 @@ export class DashboardComponent implements OnInit, OnDestroy { if (this.rotationIntervalId) { clearInterval(this.rotationIntervalId); } - if (this.themeSubscription) { - this.themeSubscription.unsubscribe(); - } + this.unSub.next(); this.unSub.complete(); } diff --git a/src/app/pages/dome-blog/dome-blog.component.html b/src/app/pages/dome-blog/dome-blog.component.html index 195e9041..67b2c8ab 100644 --- a/src/app/pages/dome-blog/dome-blog.component.html +++ b/src/app/pages/dome-blog/dome-blog.component.html @@ -9,7 +9,7 @@

- DOME blog + Blog

- +
- -@if(feedback){ - + +
+ + + + + + + +@if(feedback) { + + } diff --git a/src/app/shared/footer/footer.component.ts b/src/app/shared/footer/footer.component.ts index 21a20add..4e219863 100644 --- a/src/app/shared/footer/footer.component.ts +++ b/src/app/shared/footer/footer.component.ts @@ -1,91 +1,108 @@ -import {OnDestroy, OnInit, Component, ViewEncapsulation} from '@angular/core'; -import { faLinkedin, faYoutube, faXTwitter } from '@fortawesome/free-brands-svg-icons'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { Router } from '@angular/router'; -import { Subscription } from "rxjs"; -import { ThemeService } from "../../services/theme.service"; -import { NavLink } from "../../themes"; -import {EventMessageService} from "../../services/event-message.service"; -import {LocalStorageService} from "../../services/local-storage.service"; -import { LoginInfo } from 'src/app/models/interfaces'; +import { + faLinkedin, + faXTwitter, + faYoutube, +} from '@fortawesome/free-brands-svg-icons'; import * as moment from 'moment'; -import {Subject} from "rxjs"; -import { takeUntil } from 'rxjs/operators'; +import { Subject, takeUntil } from 'rxjs'; +import { LoginInfo } from 'src/app/models/interfaces'; +import { LocalStorageService } from 'src/app/services/local-storage.service'; +import { ThemeService } from 'src/app/services/theme.service'; +import { EventMessageService } from '../../services/event-message.service'; +import { NavHeaderLink } from '../../themes'; + @Component({ selector: 'bae-footer', templateUrl: './footer.component.html', styleUrls: ['./footer.component.css'], - encapsulation: ViewEncapsulation.None }) export class FooterComponent implements OnInit, OnDestroy { protected readonly faLinkedin = faLinkedin; protected readonly faYoutube = faYoutube; protected readonly faXTwitter = faXTwitter; - private destroy$ = new Subject(); - - // Propiedades dinámicas del tema - public footerLinks: NavLink[] = []; - public socialLinks: { icon: any; url: string | undefined; }[] = []; - private themeSubscription: Subscription = new Subscription(); + private unSub = new Subject(); - feedback:boolean=false; - checkLogged:boolean=false; + checkLogged: boolean = false; + feedback: boolean = false; - constructor(private router: Router, - private eventMessage: EventMessageService, - private localStorage: LocalStorageService, - private themeService: ThemeService) { - this.eventMessage.messages$ - .pipe(takeUntil(this.destroy$)) - .subscribe(ev => { - if(ev.type === 'CloseFeedback') { - this.feedback = false; - } - const userInfo = this.localStorage.getObject('login_items') as LoginInfo; - if((JSON.stringify(userInfo) != '{}' && (((userInfo.expire - moment().unix())-4) > 0))) { - this.checkLogged=true - } - }) - } + socialLinks: { icon: any; url: string }[] = []; + footerLinks: NavHeaderLink[] = []; + columns: number; + constructor( + private themeService: ThemeService, + private localStorage: LocalStorageService, + private eventMessage: EventMessageService, + private router: Router) { } - ngOnInit(): void { - this.themeSubscription = this.themeService.currentTheme$.subscribe(theme => { - // Cargar enlaces del footer desde la configuración del tema - this.footerLinks = theme?.links?.footerLinks || []; + ngOnInit() { + this.getCurrentThemeData(); + this.checkEventMessages(); + this.checkIfLogged(); + } - // Cargar y mapear redes sociales - this.socialLinks = []; - if (theme?.links?.linkedin) { - this.socialLinks.push({ url: theme.links.linkedin, icon: this.faLinkedin }); - } - if (theme?.links?.twitter) { - this.socialLinks.push({ url: theme.links.twitter, icon: this.faXTwitter }); - } - if (theme?.links?.youtube) { - this.socialLinks.push({ url: theme.links.youtube, icon: this.faYoutube }); - } - }); + private checkIfLogged() { const userInfo = this.localStorage.getObject('login_items') as LoginInfo; - if((JSON.stringify(userInfo) != '{}' && (((userInfo.expire - moment().unix())-4) > 0))) { - this.checkLogged=true + if ((JSON.stringify(userInfo) != '{}' && (((userInfo.expire - moment().unix()) - 4) > 0))) { + this.checkLogged = true; } } - ngOnDestroy(): void { - if (this.themeSubscription) { - this.themeSubscription.unsubscribe(); - } - this.destroy$.next(); - this.destroy$.complete(); + private checkEventMessages() { + this.eventMessage.messages$ + .pipe(takeUntil(this.unSub)) + .subscribe(ev => { + if (ev.type === 'CloseFeedback') { + this.feedback = false; + } + + this.checkIfLogged(); + }) } + private getCurrentThemeData() { + this.themeService.currentTheme$ + .pipe(takeUntil(this.unSub)) + .subscribe((theme) => { + this.footerLinks = theme?.links?.footerLinks || []; + this.columns = theme?.links?.footerLinksColsNumber || 0; - goTo(path:string) { + this.socialLinks = []; + + if (theme?.links?.linkedin) { + this.socialLinks.push({ + url: theme.links.linkedin, + icon: this.faLinkedin, + }); + } + if (theme?.links?.twitter) { + this.socialLinks.push({ + url: theme.links.twitter, + icon: this.faXTwitter, + }); + } + if (theme?.links?.youtube) { + this.socialLinks.push({ + url: theme.links.youtube, + icon: this.faYoutube, + }); + } + }); + } + + goToRoute(path: string) { this.router.navigate([path]); } - open(path:string){ + openNewTab(path: string) { window.open(path, '_blank'); } + + ngOnDestroy() { + this.unSub.complete(); + this.unSub.unsubscribe(); + } } diff --git a/src/app/themes/bae.theme.ts b/src/app/themes/bae.theme.ts index d7993400..4f8d01a6 100644 --- a/src/app/themes/bae.theme.ts +++ b/src/app/themes/bae.theme.ts @@ -1,5 +1,4 @@ -import {NavLink, ThemeConfig} from './theme.interfaces'; -import {environment} from "../../environments/environment"; +import { NavLink, ThemeConfig } from './theme.interfaces'; const baeHeaderLinks: NavLink[] = [ { @@ -15,7 +14,7 @@ const baeHeaderLinks: NavLink[] = [ { label: 'HEADER._catalogs', url: '/catalogues', isRouterLink: true } ] } - ]; +]; export const BAE_THEME_CONFIG: ThemeConfig = { diff --git a/src/app/themes/dome.theme.ts b/src/app/themes/dome.theme.ts index 93494e96..0ad80f47 100644 --- a/src/app/themes/dome.theme.ts +++ b/src/app/themes/dome.theme.ts @@ -1,5 +1,5 @@ -import {NavLink, ThemeConfig} from './theme.interfaces'; import { environment } from '../../environments/environment'; +import { NavHeaderLink, NavLink, ThemeConfig } from './theme.interfaces'; const domeHeaderLinks: NavLink[] = [ { @@ -37,10 +37,78 @@ const domeHeaderLinks: NavLink[] = [ ]; -const domeFooterLinks: NavLink[] = [ - { label: 'FOOTER._privacy', url: 'assets/documents/privacy.pdf', isRouterLink: false }, - { label: 'FOOTER._cookies', url: 'assets/documents/cookies.pdf', isRouterLink: false }, - { label: 'FOOTER._licensing', url: 'assets/documents/terms.pdf', isRouterLink: false }, +const domeFooterLinks: NavHeaderLink[] = [ + { + label: 'FOOTER.aboutTitle', + navLinks: [ + { label: 'FOOTER._about', url: '/about', isRouterLink: true }, + { label: 'FOOTER.governance', url: '/governance', isRouterLink: true }, + { label: 'FOOTER.partners', url: 'https://dome-project.eu/about/#partners', isRouterLink: false }, + ] + }, + { + label: 'FOOTER.marketplaceTitle', + navLinks: [ + { + label: 'FOOTER.browse', + url: '/search', + isRouterLink: true + }, + { + label: 'FOOTER.forCustomers', + url: '#for-customers', + isRouterLink: true + }, + { + label: 'FOOTER.forProviders', + url: '#for-providers', + isRouterLink: true + }, + ], + + }, + { + label: 'FOOTER.resourcesTitle', + navLinks: [ + { + label: 'FOOTER._licensing', + url: '/assets/documents/terms.pdf', + isRouterLink: false + }, + { + label: 'FOOTER._privacy', + url: '/assets/documents/privacy.pdf', + isRouterLink: false + }, + { + label: 'FOOTER._cookies', + url: '/assets/documents/cookies.pdf', + isRouterLink: false + }, + ], + + }, + { + label: 'FOOTER.resourcesTitle', + navLinks: [ + { + label: 'FOOTER.documentation', + url: 'https://knowledgebase.dome-marketplace-prd.org/', + isRouterLink: false + }, + { + label: 'FOOTER.support', + url: 'https://dome-marketplace.eu/contact-us', + isRouterLink: false + } + , { + label: 'FOOTER.faqs', + url: '/faq', + isRouterLink: true + } + ] + } + ]; @@ -55,6 +123,7 @@ export const DOME_THEME_CONFIG: ThemeConfig = { links: { headerLinks: domeHeaderLinks, footerLinks: domeFooterLinks, + footerLinksColsNumber: domeFooterLinks.length, linkedin: environment.DOME_LINKEDIN, youtube: environment.DOME_YOUTUBE, diff --git a/src/app/themes/theme.interfaces.ts b/src/app/themes/theme.interfaces.ts index 771cce6a..cc25fc24 100644 --- a/src/app/themes/theme.interfaces.ts +++ b/src/app/themes/theme.interfaces.ts @@ -7,6 +7,11 @@ export interface ThemeAssetConfig { // other specific theme assets } +export interface NavHeaderLink { + label: string; + navLinks: NavLink[]; +} + export interface NavLink { label: string; // Text to be shown, ie. 'About Us', 'Contact' id?: string; // dropdown ID, ie: 'browseDropdown' @@ -24,7 +29,8 @@ export interface NavLink { export interface ThemeLinkConfig { headerLinks?: NavLink[]; - footerLinks?: NavLink[]; + footerLinks?: NavHeaderLink[]; + footerLinksColsNumber?: number; // Social networks linkedin?: string; diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 701fc776..0df85064 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1,9 +1,7 @@ { - "_yes": "Yes", - "_no": "No", - - - "dashboard": { + "_yes": "Yes", + "_no": "No", + "dashboard": { "nav": { "forCustomers": "For Customers", "forProviders": "For Providers", @@ -144,413 +142,383 @@ "discover": "Discover services", "publish": "Publish your service" } -}, -"europeTrademark": "Distributed Open Marketplace for Europe (DOME) Project has received funding from European Union’s Digital Europe Programme under the Grant Agreement No 101084071.", - "DASHBOARD": { - "_title": "DOME Marketplace is out! See what's new", - "_header": "Digital Trust to move forward", - "_subheader": "Join the first open distributed marketplace ecosystem for cloud, edge & AI services in Europe.", - "_new": "New", - "_learn_more": "Learn more", - "_video": "Watch video", - "_categories": "All categories", - "_cloud": "Cloud Services", - "_edge": "Edge Services", - "_smart_ports": "Smart ports", - "_smart_cities": "Smart cities", - "_search_ph": "Search Cloud Services, Edge Services, Providers...", - "_search": "Search", - "_not_found": "No offers found", - "_browse_serv": "Browse services", - "_view_serv": "View services", - "_close_menu": "Close menu", - "_all_catalogs": "All catalogues", - "_categories_single": "Categories" + }, + "hero": { + "eyebrow": "Distributed Open Marketplace for Europe", + "title": "The trusted European Ecosystem for cloud, edge & AI services", + "subtitle": "The DOME marketplace brings verified, EU-compliant cloud, edge and AI services into one transparent, interoperable platform, simplifying services discovery and procurement for organisations and expanding market reach for cloud providers.", + "ctaCustomers": "I’m looking for digital services", + "ctaProviders": "I offer digital services", + "browseAll": "Browse all services →", + "asideTitle": "Marketplace snapshot", + "stats": { + "servicesLabel": "verified services", + "providersLabel": "registered providers", + "euHosted": "EU-hosted & compliance-driven", + "transparency": "End-to-end transparency on data & pricing" }, - "FEATURED": { - "_title": "Featured offerings", - "CARD1": { - "_badge": "Design", - "_title": "Start with Flowbite Design System", - "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", - "_more": "Read more" - }, - "CARD2": { - "_badge": "Code", - "_title": "Best react libraries around the web", - "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", - "_more": "Read more" - } + "moreAbout": "More about DOME" + }, + "whatIs": { + "title": "What is DOME Marketplace?", + "subtitle": "DOME is the European marketplace that provides a unified environment where trust, compliance, and interoperability form the foundation of how digital services are published, compared, and used across Europe.", + "cards": { + "c1": { + "title": "Trusted, Sovereign Digital Ecosystem", + "text": "DOME ensures services operate under EU rules for security, data protection, and sovereignty, creating a reliable environment for digital operations across Europe." + }, + "c2": { + "title": "Transparency and Comparability", + "text": "Consistent documentation, pricing clarity, and shared trust indicators make it easy to understand, compare, and assess digital services." + }, + "c3": { + "title": "Interoperability and Federation", + "text": "DOME connects multiple marketplaces and providers through shared standards, enabling seamless discovery, integration, and cross-market collaboration." + }, + "c4": { + "title": "Fair and Open Market Access", + "text": "The ecosystem removes barriers to entry, supports SMEs, and prevents vendor lock-in, ensuring all participants can compete and grow on equal terms." + } + } + }, + "marketplace": { + "title": "Explore verified services", + "subtitle": "Search across cloud, edge, AI, data and other digital services from trusted European providers.", + "searchPlaceholder": "Search by keyword, category or provider…", + "browseFullCatalog": "Browse full catalog →", + "viewService": "View service" + }, + "customers": { + "title": "For Customers", + "whyTitle": "Why to use DOME", + "cards": { + "c1": { + "title": "Access to verified digital services", + "text": "Discover offerings validated against EU security and data-protection rules, guaranteeing trusted providers and full data sovereignty." + }, + "c2": { + "title": "Transparent, guided service discovery", + "text": "Quickly identify suitable offerings through consistent documentation, clear pricing, trust indicators, and intuitive filtering and comparison tools." + }, + "c3": { + "title": "Powerful procurement tools", + "text": "Access built-in capabilities such as tendering, tailored-offer requests, and structured comparisons that make sourcing from multiple providers fast, clear, and efficient." + }, + "c4": { + "title": "Unified access to a broad ecosystem", + "text": "Benefit from a growing network of European providers and federated marketplaces, giving you broader choice and easier access to specialised services." + } }, - "GALLERY": { - "_title": "Featured offerings", - "_explore": "Explore marketplace", - "_add_your_service": "Add your service", - "_no_products": "Sorry! There are no products available at this moment. Please check again later." + "howTitle": "How DOME works", + "how": { + "s1Title": "Register as a customer", + "s1Text": "Create your customer profile", + "s2Title": "Search & compare", + "s2Text": "Find digital services according to your needs, use standardised documentation and trust badges to assess suitability", + "s3Title": "Connect & procure", + "s3Text": "Contact providers and procure directly, or use the DOME marketplace procurement tools in order to get the services that suit your needs" }, - "PLATFORM": { - "_title": "Platform benefits", - "_subtitle": "Your Gateway to Europe's Premier Digital Ecosystem", - "_learn_more": "Learn more", - "OPEN": { - "_title": "Open", - "_desc": "Navigate with confidence through transparent practices in service provisioning, pricing and operations." - }, - "INTEROPERABLE": { - "_title": "Interoperable", - "_desc": "Unlock endless possibilities with our open ecosystem, designed for seamless collaboration and innovation." - }, - "TRUSTWORTHY": { - "_title": "Trustworthy", - "_desc": "Build on a foundation of trust with services vetted for security, reliability and compliance." - }, - "COMPLIANT": { - "_title": "Compliant", - "_desc": "Stay ahead of the curve with services that adhere strictly to EU regulations and standards, for legal compliance and data protection." - }, - "SUSTAINABLE": { - "_title": "Sustainable", - "_desc": "Embrace sustainability with services that prioritize enery efficiency and environmental responsability." - }, - "TRANSPARENT": { - "_title": "Transparent", - "_desc": "Navigate with confidence trough transparent practices in service provisioning, pricing and operations." - } + "startJourney": "Start your customer journey now" + }, + "providers": { + "title": "For Providers", + "whyTitle": "Why to use DOME", + "cards": { + "c1": { + "title": "Reach a pan-European market", + "text": "Expand your visibility across Europe and access new customer segments through a unified, trusted ecosystem." + }, + "c2": { + "title": "Strengthen trust with customers", + "text": "Showcase compliance, transparency, and service quality through DOME’s verified trust indicators and documentation standards." + }, + "c3": { + "title": "Leverage DOME’s provider tools", + "text": "Integrated tools for onboarding, service management, analytics, procurement and promotion to enhance your market presence and operational efficiency." + }, + "c4": { + "title": "Complement and extend portfolio", + "text": "Discover services and partners across the ecosystem to enrich your offering and unlock new business opportunities." + } }, - "HOWITWORKS":{ - "_title": "How It Works", - "_subtitle": "Discover how DOME Marketplace connects you to Europe's finest cloud and edge services", - "CUSTOMERS":{ - "_title": "For customers", - "_subtitle": "Discover", - "_search_title": "Search and Explore", - "_search_desc": "Use our intuitive search to find the services that match your digital transformation needs.", - "_compare_title": "Compare and Decide", - "_compare_desc": "Evaluate services based on features, EU compliance and reviews to make informed choices.", - "_seamless_title": "Seamless Integration", - "_seamless_desc": "Follow our easy process to integrate and deploy your chosen services swiftly.", - "_join": "Join as customer", - "_explore": "Explore the catalogue", - "_contact": "Contact us", - "_description": "The marketplace is actually free to browse. Take a look at the catalogue contents, search for the services you need, verify the different offerings, get in touch with the service providers to better understand the proposal and acquire the desired service." - }, - "PROVIDERS": { - "_title": "For providers", - "_subtitle": "Connect and Grow", - "_register_title": "Register Your Service", - "_register_desc": "Sign up and submit your european service for validation, ensuring compliance and quality.", - "_verified_title": "Get verified", - "_verified_desc": "Our team will quickly verify your offerings to ensure they meet Distributed Open Marketplace standards.", - "_reach_title": "Reach Europe", - "_reach_desc": "Once verified, your services will be accessible to a wide European audience, ready to grow your business.", - "_join": "Join as provider", - "_onboard": "Onboard the marketplace", - "_contact": "Contact us", - "_description_start": "Qualify you company through the reference", - "_link": "Company Onboarding process", - "_description_end": "and then start describing your offerings through the Offering qualification process and star being visible on the market inside this trustable catalogue." - } + "howTitle": "How DOME works", + "how": { + "s1Title": "Onboard your organisation", + "s1Text": "Complete the onboarding process and receive your verifiable credentials", + "s2Title": "Describe & verify your services", + "s2Text": "Use DOME Marketplace templates to detail features, data handling and compliance", + "s3Title": "Publish & reach customers", + "s3Text": "Ready to go! Your services are available in the DOME catalogues!" + }, + "startJourney": "Start your provider journey now" + }, + "roadmap": { + "title": "Growing the DOME ecosystem", + "subtitle": "DOME is at an early but active stage, expanding together with customers and providers.", + "now": { + "label": "Now", + "title": "Core marketplace live", + "text": "Initial catalog of verified services and providers." }, - "EXPLORE": { - "_title": "Explore the Distributed Open Marketplace Project", - "_subtitle": "Whether you're seeking in-depth reports, latest updates or upcoming events, everything ou need to know is just a click away", - "_events_title": "Events and Webinars", - "_events_desc": "Join us at our next event or webinar to connect with fellow innovators, learn from industry leaders and discover new opportunities within the 'DOME' Project's ecosystem.", - "_updates_title": "Latest Updates and News", - "_updates_desc": "Stay informed with the latest developments, service enhancements and industry insights directly from the 'DOME' Project's website.", - "_resources_title": "Resources & Reports", - "_resources_desc": "Access our library of resources, detailed reports and case studies to gain a deep understanding of the cloud and edge market landscape and 'DOME' Project's impact.", - "_go": "DOME Project" + "next": { + "label": "Next 6–12 months", + "title": "More services, better tools", + "text": "Expanded catalog, richer filtering, improved verification workflows." }, - "CARD": { - "_details": "View details", - "_quote": "Create quote", - "_add_cart": "Add to cart", - "_close": "Close modal", - "_categories": "Categories", - "_prod_details": "Product details", - "_comp_profile": "Compliance profile", - "_extra_info": "Extra information", - "_offer_version": "Offer version", - "_product_name": "Product name", - "_brand": "Brand", - "_last_update": "Last update", - "_product_version": "Product version", - "_id_number": "Identification number", - "_added_card": "Added to the cart", - "_undo": "Undo", - "_close_toast": "Close", - "_from": "From", - "_full_desc": "Full description", - "_price_plans": "Price plans", - "_select_price": "Select price plan", - "_chars": "Characteristics", - "_select_char": "Select characteristics", - "_terms": "Terms and conditions", - "_accept_terms": "I have read and I accept the terms and conditions.", - "_next": "Next", - "_back": "Back", - "_checkout": "Add to cart", - "_no_terms": "This product has no terms and conditions.", - "_no_chars": "This product has no characteristics.", - "_no_prices": "This product has no price plans.", - "_owner": "Owner", - "_price_plan": "Price Plan" + "beyond": { + "label": "Beyond", + "title": "Deep EU integration", + "text": "Alignment with European data spaces and advanced trust services." + } + }, + "finalCta": { + "title": "Ready to find out what DOME Marketplace can do for your business?", + "discover": "Discover services", + "publish": "Publish your service" + }, + "europeTrademark": "Distributed Open Marketplace for Europe (DOME) Project has received funding from European Union’s Digital Europe Programme under the Grant Agreement No 101084071.", + "DASHBOARD": { + "_title": "DOME Marketplace is out! See what's new", + "_header": "Digital Trust to move forward", + "_subheader": "Join the first open distributed marketplace ecosystem for cloud, edge & AI services in Europe.", + "_new": "New", + "_learn_more": "Learn more", + "_video": "Watch video", + "_categories": "All categories", + "_cloud": "Cloud Services", + "_edge": "Edge Services", + "_smart_ports": "Smart ports", + "_smart_cities": "Smart cities", + "_search_ph": "Search Cloud Services, Edge Services, Providers...", + "_search": "Search", + "_not_found": "No offers found", + "_browse_serv": "Browse services", + "_view_serv": "View services", + "_close_menu": "Close menu", + "_all_catalogs": "All catalogues", + "_categories_single": "Categories" + }, + "FEATURED": { + "_title": "Featured offerings", + "CARD1": { + "_badge": "Design", + "_title": "Start with Flowbite Design System", + "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", + "_more": "Read more" }, - "CATEGORIES_FILTER": { - "_remove_badge": "Remove badge", - "_applied_filters": "Applied filters:" + "CARD2": { + "_badge": "Code", + "_title": "Best react libraries around the web", + "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", + "_more": "Read more" + } + }, + "GALLERY": { + "_title": "Featured offerings", + "_explore": "Explore marketplace", + "_add_your_service": "Add your service", + "_no_products": "Sorry! There are no products available at this moment. Please check again later." + }, + "PLATFORM": { + "_title": "Platform benefits", + "_subtitle": "Your Gateway to Europe's Premier Digital Ecosystem", + "_learn_more": "Learn more", + "OPEN": { + "_title": "Open", + "_desc": "Navigate with confidence through transparent practices in service provisioning, pricing and operations." }, - "CART_DRAWER": { - "_title": "Shopping Cart", - "_close": "Close menu", - "_empty": "Empty cart", - "_purchase": "Proceed to purchase", - "_subtotal": "Subtotal" + "INTEROPERABLE": { + "_title": "Interoperable", + "_desc": "Unlock endless possibilities with our open ecosystem, designed for seamless collaboration and innovation." }, - "FOOTER": { - "_about": "About", - "_privacy": "Privacy Policy", - "_cookies": "Cookies Policy", - "_licensing": "Terms of Use", - "_contact": "Contact", - "_rights": "All Rights Reserved" + "TRUSTWORTHY": { + "_title": "Trustworthy", + "_desc": "Build on a foundation of trust with services vetted for security, reliability and compliance." }, - "HEADER": { - "_marketplace": "DOME MARKETPLACE", - "_open_menu": "Open main menu", - "_home": "Home", - "_catalogs": "Providers catalogues", - "_search": "Search", - "_browse": "Browse", - "_cloud": "Cloud Services", - "_smart_ports": "Smart ports", - "_smart_cities": "Smart cities", - "_see_all": "See all", - "_services": "Services", - "_contact": "Contact", - "_profile": "Profile", - "_offerings": "My Offerings", - "_cart": "My shopping cart", - "_sign_out": "Sign out", - "_inventory": "My inventory", - "_support": "Support", - "_knowledge": "Knowledge Base", - "_ticketing": "Ticketing System", - "_change_session": "Change session", - "_admin": "Administration", - "_publish": "Publish your offerings", - "_register_here": "Register here", - "_register": "Register", - "_guidelines": "Guidelines to register", - "_guideline_publish": "Guideline to publish", - "_onboarding": "Onboarding", - "_registration": "Registration form", - "_about": "About", - "_verify": "Publish your offering", - "_info": "Info", - "_orders": "Product Orders", - "_blog": "Dome blog" + "COMPLIANT": { + "_title": "Compliant", + "_desc": "Stay ahead of the curve with services that adhere strictly to EU regulations and standards, for legal compliance and data protection." }, - "PRODUCT_DETAILS": { - "_back": "Back", - "_details": "Details", - "_information": "Information", - "_chars": "Characteristics", - "_attach": "Attachments", - "_agreements": "Agreements", - "_relationships": "Relationships", - "_no_chars": "No characteristics included", - "_no_attach": "No attachments included", - "_license": "License", - "_no_license": "No license included", - "_sla": "SLA", - "_no_sla": "No SLA included", - "_no_relatioships": "No relationships included", - "_service_spec": "This offering includes the following service specifications", - "_resource_spec": "This offering includes the following resource specifications", - "_self_attestation": "You can find the self attestation document here.", - "_product_pricing": "Product pricing", - "_product_chars": "Product characteristics", - "_product_att": "Product attachments", - "_product_rels": "Product relationships" + "SUSTAINABLE": { + "_title": "Sustainable", + "_desc": "Embrace sustainability with services that prioritize enery efficiency and environmental responsability." }, "CATALOGS": { - "_all_catalogs": "All catalogues", - "_no_desc": "No description included", - "_no_cat": "No categories included", - "_view_details": "View details", - "_desc": "Description", - "_choose": "Choose between our Catalogues" + "_all_catalogs": "All catalogues", + "_no_desc": "No description included", + "_no_cat": "No categories included", + "_view_details": "View details", + "_desc": "Description", + "_choose": "Choose between our Catalogues" }, "SHOPPING_CART": { - "_buy": "Buy", - "_back": "Back", - "_billingAddress": "Billing Address", - "_confirm": "Confirm and pay", - "_checkout": "Checkout", - "_note": "Add notes", - "_choose_bill": "Choose a billing address", - "_cart": "Cart", - "_email": "Email", - "_postalAddress": "Postal address", - "_phone": "Phone number", - "_billing_check": "You should first create at least a billing address in order to checkout an order.", - "_click_here": "Click here", - "_free": "Free", - "_free_desc": "The offering is free", - "_loading_purchase": "Loading purchase", - "_contact": "Contact", - "_update": "Update", - "_contact_person": "Contact Person", - "_order_note": "Order Note", - "_your_order": "Your Order", - "_subtotal": "Sub Total", - "_tax": "Tax", - "_calculated": "Calculated at checkout", - "_fee": "Service fee*" + "_buy": "Buy", + "_back": "Back", + "_billingAddress": "Billing Address", + "_confirm": "Confirm and pay", + "_checkout": "Checkout", + "_note": "Add notes", + "_choose_bill": "Choose a billing address", + "_cart": "Cart", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_billing_check": "You should first create at least a billing address in order to checkout an order.", + "_click_here": "Click here", + "_free": "Free", + "_free_desc": "The offering is free", + "_loading_purchase": "Loading purchase", + "_contact": "Contact", + "_update": "Update", + "_contact_person": "Contact Person", + "_order_note": "Order Note", + "_your_order": "Your Order", + "_subtotal": "Sub Total", + "_tax": "Tax", + "_calculated": "Calculated at checkout", + "_fee": "Service fee*" }, - "PROFILE":{ - "_general": "General", - "_bill": "Billing addresses", - "_revenue": "Revenue sharing", - "_payment_dashboard": "Payment dashboard", - "_lear_link": "VC Issuer", - "_orders": "Orders", - "_order_list": "My order list", - "_update": "Update", - "_account": "Account", - "_username": "Username", - "_token": "Access token", - "_email": "Email", - "_profile": "Profile", - "_name": "Name", - "_lastname": "Lastname", - "_treatment": "Treatment", - "_marital_status": "Marital status", - "_gender": "Gender", - "_nacionality": "Nacionality", - "_birthdate": "Birthdate", - "_date": "Date", - "_country": "Country", - "_city": "City", - "_mybills": "My billing addresses", - "_user_id": "User id", - "_no_orders": "No orders found", - "_organization": "Organization", - "_medium_type": "Medium type", - "_preferred": "Preferred", - "_no_mediums": "There's no contact medium information.", - "_contact_info": "Contact information", - "_info": "Info", - "_actions": "Actions", - "_add_new_contact": "Add a new contact medium", - "_postalAddress": "Postal address", - "_phone": "Phone number", - "_phone_type": "Phone Type", - "_action": "Actions", - "_state": "State / Province", - "_post_code": "ZIP / Postal Code", - "_street": "Street Address", - "_edit": "Edit contact medium", - "_delete": "Yes, delete", - "_confirm_delete": "Are you sure about deleting the following billing address?", - "_cancel": "No, cancel", - "_invalid_phone": "Phone number is invalid!", - "_invalid_email": "Email is invalid!", - "_save": "Save", - "_success": "Updated successfully", - "_website": "Website", - "_add_logo": "Add organization logo", - "_add_logo_url": "Add organization logo using a URL", - "_acknowledged": "Acknowledged", - "_in_progress": "In Progress", - "_partial": "Partial", - "_completed": "Completed", - "_failed": "Failed", - "_pending": "Pending", - "_cancelled": "Cancelled", - "_order_details": "Order details:", - "_billing_address": "Billing address", - "_price": "Price", - "_img": "Img", - "_custom": "Custom", - "_free": "Free" + "PROFILE": { + "_general": "General", + "_bill": "Billing addresses", + "_revenue": "Revenue sharing", + "_payment_dashboard": "Payment dashboard", + "_lear_link": "VC Issuer", + "_orders": "Orders", + "_order_list": "My order list", + "_update": "Update", + "_account": "Account", + "_username": "Username", + "_token": "Access token", + "_email": "Email", + "_profile": "Profile", + "_name": "Name", + "_lastname": "Lastname", + "_treatment": "Treatment", + "_marital_status": "Marital status", + "_gender": "Gender", + "_nacionality": "Nacionality", + "_birthdate": "Birthdate", + "_date": "Date", + "_country": "Country", + "_city": "City", + "_mybills": "My billing addresses", + "_user_id": "User id", + "_no_orders": "No orders found", + "_organization": "Organization", + "_medium_type": "Medium type", + "_preferred": "Preferred", + "_no_mediums": "There's no contact medium information.", + "_contact_info": "Contact information", + "_info": "Info", + "_actions": "Actions", + "_add_new_contact": "Add a new contact medium", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_edit": "Edit contact medium", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_save": "Save", + "_success": "Updated successfully", + "_website": "Website", + "_add_logo": "Add organization logo", + "_add_logo_url": "Add organization logo using a URL", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_order_details": "Order details:", + "_billing_address": "Billing address", + "_price": "Price", + "_img": "Img", + "_custom": "Custom", + "_free": "Free" }, - "PRODUCT_INVENTORY":{ - "_loading": "Loading...", - "_products": "Products", - "_services": "Services", - "_resources": "Resources", - "_orders": "Orders", - "_not_found": "No products found.", - "_no_resources": "No resources found.", - "_no_services": "No services found.", - "_search_criteria": "Search criteria", - "_prod_details": "Product details", - "_description": "Description", - "_pricing": "Product pricing", - "_chars": "Product characteristics", - "_res_details": "Resource details", - "_res_chars": "Resource characteristics", - "_serv_details": "Service details", - "_serv_chars": "Service characteristics", - "_start_date": "Start operating date", - "_order_id": "Order Id", - "_state": "State", - "_status": "Status", - "_priority": "Priority", - "_desc": "Description", - "_price": "Price", - "_bill": "Billing address", - "_inventory": "Inventory", - "_feasibility": "Feasibility Checked", - "_designed": "Designed", - "_reserved": "Reserved", - "_inactive": "Inactive", - "_active": "Active", - "_terminated": "Terminated", - "_id": "Id", - "_standby": "Standby", - "_alarm": "Alarm", - "_available": "Available", - "_suspended": "Suspended", - "_unknown": "Unknown", - "_created": "Created", - "_unsubscribe": "Unsubscribe", - "_close_modal": "Close modal", - "_cancel_sub": "Are you sure you want to cancel this subscription?", - "_cancel": "No, cancel", - "_yes_sure": "Yes, I'm sure", - "_renew_sub": "Are you sure you want to renew this subscription?" + "PRODUCT_INVENTORY": { + "_loading": "Loading...", + "_products": "Products", + "_services": "Services", + "_resources": "Resources", + "_orders": "Orders", + "_not_found": "No products found.", + "_no_resources": "No resources found.", + "_no_services": "No services found.", + "_search_criteria": "Search criteria", + "_prod_details": "Product details", + "_description": "Description", + "_pricing": "Product pricing", + "_chars": "Product characteristics", + "_res_details": "Resource details", + "_res_chars": "Resource characteristics", + "_serv_details": "Service details", + "_serv_chars": "Service characteristics", + "_start_date": "Start operating date", + "_order_id": "Order Id", + "_state": "State", + "_status": "Status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_inventory": "Inventory", + "_feasibility": "Feasibility Checked", + "_designed": "Designed", + "_reserved": "Reserved", + "_inactive": "Inactive", + "_active": "Active", + "_terminated": "Terminated", + "_id": "Id", + "_standby": "Standby", + "_alarm": "Alarm", + "_available": "Available", + "_suspended": "Suspended", + "_unknown": "Unknown", + "_created": "Created", + "_unsubscribe": "Unsubscribe", + "_close_modal": "Close modal", + "_cancel_sub": "Are you sure you want to cancel this subscription?", + "_cancel": "No, cancel", + "_yes_sure": "Yes, I'm sure", + "_renew_sub": "Are you sure you want to renew this subscription?" }, "BILLING": { - "_title": "Title", - "_email": "Email", - "_postalAddress": "Postal address", - "_phone": "Phone number", - "_phone_type": "Phone Type", - "_action": "Actions", - "_country": "Country", - "_city": "City", - "_state": "State / Province", - "_post_code": "ZIP / Postal Code", - "_street": "Street Address", - "_add": "Add billing address", - "_edit": "Edit billing address", - "_update": "Update billing address", - "_delete": "Yes, delete", - "_confirm_delete": "Are you sure about deleting the following billing address?", - "_cancel": "No, cancel", - "_invalid_phone": "Phone number is invalid!", - "_invalid_email": "Email is invalid!", - "_no_billing": "There's no billing information.", - "_close_modal": "Close modal", - "_mandatory": "This field is mandatory.", - "_too_long": "This field is too long. Must be less than 250 characters.", - "_too_long_larger": "This field is too long. Must be less than 1000 characters.", - "_too_long_email": "Email is too long. Must be less than 320 characters.", - "_email_format": "Email must follow the following format: example@example.example" + "_title": "Title", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_country": "Country", + "_city": "City", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_add": "Add billing address", + "_edit": "Edit billing address", + "_update": "Update billing address", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_no_billing": "There's no billing information.", + "_close_modal": "Close modal", + "_mandatory": "This field is mandatory.", + "_too_long": "This field is too long. Must be less than 250 characters.", + "_too_long_larger": "This field is too long. Must be less than 1000 characters.", + "_too_long_email": "Email is too long. Must be less than 320 characters.", + "_email_format": "Email must follow the following format: example@example.example" }, "INVOICES": { "_invoice_id": "Invoice ID", @@ -577,691 +545,1723 @@ "_period_coverage": "Period Coverage" }, "CREATE_CATALOG": { - "_back": "Back", - "_create": "Create catalogue", - "_status": "Status", - "_new": "New catalogue", - "_steps": "Steps", - "_general": "General", - "_general_info": "Catalogue's general information", - "_actions": "Actions", - "_type": "Type", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_summary": "Catalogue's summary", - "_finish": "Finish" + "_back": "Back", + "_create": "Create catalogue", + "_status": "Status", + "_new": "New catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish" }, "UPDATE_CATALOG": { - "_back": "Back", - "_create": "Update catalogue", - "_status": "Status", - "_update": "Update catalogue", - "_steps": "Steps", - "_general": "General", - "_general_info": "Catalogue's general information", - "_actions": "Actions", - "_type": "Type", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_summary": "Catalogue's summary", - "_finish": "Finish", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete" + "_back": "Back", + "_create": "Update catalogue", + "_status": "Status", + "_update": "Update catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete" }, - "CREATE_PROD_SPEC":{ - "_back": "Back", - "_create": "Create product specification", - "_new": "New product", - "_steps": "Steps", - "_general": "General", - "_general_info": "Product's general information", - "_bundle": "Bundle", - "_bundle_info": "Product's blundle information", - "_comp_profile": "Compliance profile", - "_comp_profile_info": "Product's compliance profile", - "_no_comp_profile": "No compliance profile included.", - "_chars": "Characteristics", - "_chars_info": "Product's characteristics", - "_resource": "Resource Specs", - "_resource_info": "Product's resource specifications", - "_service": "Service Specs", - "_service_info": "Product's service specifications", - "_attachments": "Attachments", - "_attachments_info": "Product's attachments", - "_relationships": "Relationships", - "_relationships_info": "Product's relationships", - "_product_name": "Name", - "_product_version": "Version", - "_product_brand": "Brand", - "_id_number": "ID Number", - "_product_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled product?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_make_optional": "Make this characteristic optional", - "_default_value": "Default value", - "_default_false": "Disabled by default", - "_default_true": "Enabled by default", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Finish", - "_summary": "Product's summary", - "_create_prod": "Create product", - "_file_res": "File restrictions", - "_restrictions": "File size must be under 3MB. File names can only include alphabetical characters (A-Z, a-z), numbers (0-9) and a limited set of symbols, such as underscores (_), hyphens (-), and periods (.). ", - "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", - "_file_check": "You need to upload a file before proceeding.", - "_self_attestation": "Self Attestation:", - "_close_modal": "Close modal", - "_cancel": "Cancel", - "_upload": "Upload" + "CREATE_PROD_SPEC": { + "_back": "Back", + "_create": "Create product specification", + "_new": "New product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include alphabetical characters (A-Z, a-z), numbers (0-9) and a limited set of symbols, such as underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_file_check": "You need to upload a file before proceeding.", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" }, - "UPDATE_PROD_SPEC":{ - "_back": "Back", - "_update": "Update product specification", - "_new": "Update product", - "_steps": "Steps", - "_general": "General", - "_general_info": "Product's general information", - "_bundle": "Bundle", - "_bundle_info": "Product's blundle information", - "_comp_profile": "Compliance profile", - "_comp_profile_info": "Product's compliance profile", - "_no_comp_profile": "No compliance profile included.", - "_chars": "Characteristics", - "_chars_info": "Product's characteristics", - "_resource": "Resource Specs", - "_resource_info": "Product's resource specifications", - "_service": "Service Specs", - "_service_info": "Product's service specifications", - "_attachments": "Attachments", - "_attachments_info": "Product's attachments", - "_relationships": "Relationships", - "_relationships_info": "Product's relationships", - "_product_name": "Name", - "_product_version": "Version", - "_product_brand": "Brand", - "_id_number": "ID Number", - "_product_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled product?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_make_optional": "Make this characteristic optional", - "_default_value": "Default value", - "_default_false": "Disabled by default", - "_default_true": "Enabled by default", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Finish", - "_summary": "Product's summary", - "_update_prod": "Update product", - "_verify": "Verify Certificates", - "_how_to_verify": "How to get a valid VC of the certificate?", - "_verify_text": "To get a valid VC of the certificate you can access the ", - "_dome_trust": "DOME Trust Service Provider for Certification", - "_file_res": "File restrictions", - "_restrictions": "File size must be under 3MB. File names can only include characters (a-z), (A-Z), (0-9), and a limited set of symbols including underscores (_), hyphens (-), and periods (.). ", - "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete", - "_self_attestation": "Self Attestation:", - "_close_modal": "Close modal", - "_cancel": "Cancel", - "_upload": "Upload" + "UPDATE_PROD_SPEC": { + "_back": "Back", + "_update": "Update product specification", + "_new": "Update product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_update_prod": "Update product", + "_verify": "Verify Certificates", + "_how_to_verify": "How to get a valid VC of the certificate?", + "_verify_text": "To get a valid VC of the certificate you can access the ", + "_dome_trust": "DOME Trust Service Provider for Certification", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include characters (a-z), (A-Z), (0-9), and a limited set of symbols including underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" }, "CREATE_RES_SPEC": { - "_back": "Back", - "_create": "Create resource specification", - "_new": "New resource", - "_steps": "Steps", - "_general": "General", - "_general_info": "Resource's general information", - "_chars": "Characteristics", - "_chars_info": "Resource's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_create_res": "Create resource" + "_back": "Back", + "_create": "Create resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_res": "Create resource" }, "UPDATE_RES_SPEC": { - "_back": "Back", - "_status": "Status", - "_update": "Update resource specification", - "_new": "New resource", - "_steps": "Steps", - "_general": "General", - "_general_info": "Resource's general information", - "_chars": "Characteristics", - "_chars_info": "Resource's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_update_res": "Update resource" + "_back": "Back", + "_status": "Status", + "_update": "Update resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_res": "Update resource" }, "CREATE_SERV_SPEC": { - "_back": "Back", - "_create": "Create service specification", - "_new": "New service", - "_steps": "Steps", - "_general": "General", - "_general_info": "Service's general information", - "_chars": "Characteristics", - "_chars_info": "Service's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_create_serv": "Create service" + "_back": "Back", + "_create": "Create service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_serv": "Create service" }, "UPDATE_SERV_SPEC": { - "_back": "Back", - "_status": "Status", - "_update": "Update service specification", - "_new": "New service", - "_steps": "Steps", - "_general": "General", - "_general_info": "Service's general information", - "_chars": "Characteristics", - "_chars_info": "Service's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_update_serv": "Update service" + "_back": "Back", + "_status": "Status", + "_update": "Update service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_serv": "Update service" }, - "CREATE_OFFER":{ - "_back": "Back", - "_create": "Create product offer", - "_new": "New product offer", - "_steps": "Steps", - "_general": "General", - "_general_info": "Offer's general information", - "_bundle": "Bundle", - "_bundle_info": "Offer's bundle information", - "_prod_spec": "Product Spec", - "_prod_spec_info": "Offer's related product", - "_catalog": "Catalogue", - "_catalog_info": "Offer's related catalogue", - "_category": "Category", - "_category_info": "Category info", - "_license": "License", - "_license_info": "Offer's license", - "_sla": "SLA", - "_sla_info": "Offer's SLA", - "_price_plans": "Price plans", - "_price_plans_info": "Offer's pricing", - "_name": "Name", - "_description": "Description", - "_version": "Version", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled offer?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_make_optional": "Make this characteristic optional", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Finish", - "_summary": "Product's summary", - "_create_prod": "Create product", - "_choose_license": "Choose a license", - "_standard_license": "Standard open data licenses", - "_treatment": "Treatment", - "_exclusivity": "Exclusivity", - "_sector": "Sector", - "_region": "Region", - "_timeframe": "Timeframe", - "_purpose": "Purpose", - "_transferability": "Transferability", - "_no_sla": "No SLA included", - "_threshold": "Threshold", - "_new_metric": "Define new metric", - "_add_metric": "Add metric", - "_no_prices": "No price plans included.", - "_is_free_price": "Is this offer open?", - "_new_price": "New price plan", - "_create_price": "Create price plan", - "_choose_type": "Choose a type", - "_enter_value": "Enter a value", - "_add_condition": "Add a condition", - "_choose_period": "Choose a pricing period", - "_price_alter": "Price alteration", - "_create_license": "Create license", - "_price": "Price", - "_save_price":"Save price", - "_duplicated_price_name": "Price name already exists.", - "_save_license": "Save license", - "_no_prod_spec": "Bundled offers can't include product specifications.", - "_cancel": "Cancel", - "_no_prods": "There's no product specifications.", - "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", - "_no_cats": "There's no catalogues.", - "_no_categories": "There's no categories", - "_no_offer": "There's no offerings.", - "_previous": "Previous step", - "_next_step": "Next step", - "_no_subcats": "There's no subcategories" + "CREATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_new": "New product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings.", + "_previous": "Previous step", + "_next_step": "Next step", + "_no_subcats": "There's no subcategories" }, - "UPDATE_OFFER":{ - "_back": "Back", - "_create": "Create product offer", - "_update": "Update product offer", - "_steps": "Steps", - "_general": "General", - "_general_info": "Offer's general information", - "_bundle": "Bundle", - "_bundle_info": "Offer's bundle information", - "_prod_spec": "Product Spec", - "_prod_spec_info": "Offer's related product", - "_catalog": "Catalogue", - "_catalog_info": "Offer's related catalogue", - "_category": "Category", - "_category_info": "Category info", - "_license": "License", - "_license_info": "Offer's license", - "_sla": "SLA", - "_sla_info": "Offer's SLA", - "_price_plans": "Price plans", - "_price_plans_info": "Offer's pricing", - "_name": "Name", - "_description": "Description", - "_version": "Version", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled offer?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_make_optional": "Make this characteristic optional", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Update product", - "_summary": "Product's summary", - "_create_prod": "Create product", - "_choose_license": "Choose a license", - "_standard_license": "Standard open data licenses", - "_treatment": "Treatment", - "_exclusivity": "Exclusivity", - "_sector": "Sector", - "_region": "Region", - "_timeframe": "Timeframe", - "_purpose": "Purpose", - "_transferability": "Transferability", - "_no_sla": "No SLA included", - "_threshold": "Threshold", - "_new_metric": "Define new metric", - "_add_metric": "Add metric", - "_no_prices": "No price plans included.", - "_is_free_price": "Is this offer open?", - "_new_price": "New price plan", - "_create_price": "Create price plan", - "_choose_type": "Choose a type", - "_enter_value": "Enter a value", - "_add_condition": "Add a condition", - "_choose_period": "Choose a pricing period", - "_price_alter": "Price alteration", - "_create_license": "Create license", - "_price": "Price", - "_save_price":"Save price", - "_duplicated_price_name": "Price name already exists.", - "_save_license": "Save license", - "_no_prod_spec": "Bundled offers can't include product specifications.", - "_cancel": "Cancel", - "_no_prods": "There's no product specifications.", - "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", - "_no_cats": "There's no catalogues.", - "_no_categories": "There's no categories", - "_no_offer": "There's no offerings." + "UPDATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_update": "Update product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Update product", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings." }, "OFFERINGS": { - "_catalogs": "Catalogues", - "_offers": "Offer", - "_no_offer": "No offerings included.", - "_no_offerings": "There's no product offerings.", - "_no_prod": "There's no product specifications.", - "_no_prod_rel": "There's no product specifications, so you can't create relationships.", - "_no_cat": "There's no catalogues.", - "_no_categories": "There's no categories.", - "_no_res": "There's no resource specifications", - "_no_serv": "There's no service specifications", - "_prod_spec": "Product Specifications", - "_serv_spec": "Service Specifications", - "_res_spec": "Resource Specifications", - "_search": "Search", - "_add_new_serv": "Add new service", - "_filter_state": "Filter by status", - "_state": "State", - "_order_by": "Order by...", - "_last_update": "Last update", - "_name": "Name", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete", - "_status": "Status", - "_actions": "Actions", - "_load_more": "Load more", - "_add_new_res": "Add new resource", - "_add_new_prod": "Add new product specification", - "_add_new_prod_short": "Add new product spec", - "_filter_type": "Filter by type", - "_all": "All", - "_simple": "Simple", - "_bundle": "Bundle", - "_type": "Type", - "_prod_offer": "Product offer", - "_add_new_offer": "Add new product offer", - "_add_new_catalog": "Add new catalogue", - "_filter_role": "Filter by role", - "_seller": "Seller", - "_owner": "Owner", - "_customer": "Customer", - "_role": "Role", - "_choose": "Choose between our Catalogues", - "_offerings": "Offerings", - "_my_offerings": "My offerings" + "_catalogs": "Catalogues", + "_offers": "Offer", + "_no_offer": "No offerings included.", + "_no_offerings": "There's no product offerings.", + "_no_prod": "There's no product specifications.", + "_no_prod_rel": "There's no product specifications, so you can't create relationships.", + "_no_cat": "There's no catalogues.", + "_no_categories": "There's no categories.", + "_no_res": "There's no resource specifications", + "_no_serv": "There's no service specifications", + "_prod_spec": "Product Specifications", + "_serv_spec": "Service Specifications", + "_res_spec": "Resource Specifications", + "_search": "Search", + "_add_new_serv": "Add new service", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_add_new_res": "Add new resource", + "_add_new_prod": "Add new product specification", + "_add_new_prod_short": "Add new product spec", + "_filter_type": "Filter by type", + "_all": "All", + "_simple": "Simple", + "_bundle": "Bundle", + "_type": "Type", + "_prod_offer": "Product offer", + "_add_new_offer": "Add new product offer", + "_add_new_catalog": "Add new catalogue", + "_filter_role": "Filter by role", + "_seller": "Seller", + "_owner": "Owner", + "_customer": "Customer", + "_role": "Role", + "_choose": "Choose between our Catalogues", + "_offerings": "Offerings", + "_my_offerings": "My offerings" }, - "ADMIN":{ - "_admin": "Administration", - "_filter_state": "Filter by status", - "_state": "State", - "_order_by": "Order by...", - "_last_update": "Last update", - "_name": "Name", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete", - "_status": "Status", - "_actions": "Actions", - "_load_more": "Load more", - "_categories": "Categories", - "_verification": "Verification", - "_productId": "Product ID", - "_vc": "Verifiable Credential", - "_add": "Add", - "_revenue": "Revenue sharing", - "_email": "Email", - "_smtpServer": "SMTP Server", - "_smtpPort": "SMTP Port", - "_emailUser": "Email User", - "_emailPass": "Email Password" + "ADMIN": { + "_admin": "Administration", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_categories": "Categories", + "_verification": "Verification", + "_productId": "Product ID", + "_vc": "Verifiable Credential", + "_add": "Add", + "_revenue": "Revenue sharing", + "_email": "Email", + "_smtpServer": "SMTP Server", + "_smtpPort": "SMTP Port", + "_emailUser": "Email User", + "_emailPass": "Email Password" }, - "CATEGORIES":{ - "_categories": "Categories", - "_add_new_cat": "Add new category", - "_no_cat": "No categories included" + "CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included" }, - "CREATE_CATEGORIES":{ - "_categories": "Categories", - "_add_new_cat": "Add new category", - "_no_cat": "No categories included", - "_back": "Back", - "_create": "Create category", - "_new": "New category", - "_steps": "Steps", - "_general": "General", - "_general_info": "Category's general information", - "_finish": "Create category", - "_summary": "Category's summary", - "_name": "Name", - "_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_status": "Status", - "_next": "Next", - "_choose_parent": "Choose a parent category", - "_parent": "Parent category" + "CREATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_create": "Create category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Create category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" }, - "UPDATE_CATEGORIES":{ - "_categories": "Categories", - "_add_new_cat": "Add new category", - "_no_cat": "No categories included", - "_back": "Back", - "_update": "Update category", - "_new": "New category", - "_steps": "Steps", - "_general": "General", - "_general_info": "Category's general information", - "_finish": "Update category", - "_summary": "Category's summary", - "_name": "Name", - "_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_status": "Status", - "_next": "Next", - "_choose_parent": "Choose a parent category", - "_parent": "Parent category" + "UPDATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_update": "Update category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Update category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" }, "ORGANIZATION": { - "_details": "Organization details", - "_description": "Description" + "_details": "Organization details", + "_description": "Description" }, "PRODUCT_ORDERS": { - "_orders": "Product Orders", - "_invoices": "Invoices", - "_no_orders": "No orders found.", - "_search_criteria": "Search criteria", - "_order_id": "Order Id", - "_status": "Choose a status", - "_priority": "Priority", - "_desc": "Description", - "_price": "Price", - "_bill": "Billing address", - "_filter_state": "Filter by status", - "_acknowledged": "Acknowledged", - "_in_progress": "In Progress", - "_partial": "Partial", - "_completed": "Completed", - "_failed": "Failed", - "_pending": "Pending", - "_cancelled": "Cancelled", - "_unchecked": "Unchecked", - "_as_customer": "As Customer", - "_as_provider": "As Provider", - "_date": "Date", - "_actions": "Actions", - "_order_details": "Order details:", - "_customer_info": "Customer Info:", - "_name": "Name", - "_billing_address": "Billing address", - "_email": "Contact Email", - "_show_customer_details": "Show Customer Details", - "_img": "Img", - "_price_plan": "Price Plan", - "_state": "State" + "_orders": "Product Orders", + "_invoices": "Invoices", + "_no_orders": "No orders found.", + "_search_criteria": "Search criteria", + "_order_id": "Order Id", + "_status": "Choose a status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_filter_state": "Filter by status", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_unchecked": "Unchecked", + "_as_customer": "As Customer", + "_as_provider": "As Provider", + "_date": "Date", + "_actions": "Actions", + "_order_details": "Order details:", + "_customer_info": "Customer Info:", + "_name": "Name", + "_billing_address": "Billing address", + "_email": "Contact Email", + "_show_customer_details": "Show Customer Details", + "_img": "Img", + "_price_plan": "Price Plan", + "_state": "State" }, + "PROVIDERS": { + "_title": "For providers", + "_subtitle": "Connect and Grow", + "_register_title": "Register Your Service", + "_register_desc": "Sign up and submit your european service for validation, ensuring compliance and quality.", + "_verified_title": "Get verified", + "_verified_desc": "Our team will quickly verify your offerings to ensure they meet Distributed Open Marketplace standards.", + "_reach_title": "Reach Europe", + "_reach_desc": "Once verified, your services will be accessible to a wide European audience, ready to grow your business.", + "_join": "Join as provider", + "_onboard": "Onboard the marketplace", + "_contact": "Contact us", + "_description_start": "Qualify you company through the reference", + "_link": "Company Onboarding process", + "_description_end": "and then start describing your offerings through the Offering qualification process and star being visible on the market inside this trustable catalogue." + } + }, + "EXPLORE": { + "_title": "Explore the Distributed Open Marketplace Project", + "_subtitle": "Whether you're seeking in-depth reports, latest updates or upcoming events, everything ou need to know is just a click away", + "_events_title": "Events and Webinars", + "_events_desc": "Join us at our next event or webinar to connect with fellow innovators, learn from industry leaders and discover new opportunities within the 'DOME' Project's ecosystem.", + "_updates_title": "Latest Updates and News", + "_updates_desc": "Stay informed with the latest developments, service enhancements and industry insights directly from the 'DOME' Project's website.", + "_resources_title": "Resources & Reports", + "_resources_desc": "Access our library of resources, detailed reports and case studies to gain a deep understanding of the cloud and edge market landscape and 'DOME' Project's impact.", + "_go": "DOME Project" + }, + "CARD": { + "_details": "View details", + "_quote": "Create quote", + "_add_cart": "Add to cart", + "_close": "Close modal", + "_categories": "Categories", + "_prod_details": "Product details", + "_comp_profile": "Compliance profile", + "_extra_info": "Extra information", + "_offer_version": "Offer version", + "_product_name": "Product name", + "_brand": "Brand", + "_last_update": "Last update", + "_product_version": "Product version", + "_id_number": "Identification number", + "_added_card": "Added to the cart", + "_undo": "Undo", + "_close_toast": "Close", + "_from": "From", + "_full_desc": "Full description", + "_price_plans": "Price plans", + "_select_price": "Select price plan", + "_chars": "Characteristics", + "_select_char": "Select characteristics", + "_terms": "Terms and conditions", + "_accept_terms": "I have read and I accept the terms and conditions.", + "_next": "Next", + "_back": "Back", + "_checkout": "Add to cart", + "_no_terms": "This product has no terms and conditions.", + "_no_chars": "This product has no characteristics.", + "_no_prices": "This product has no price plans.", + "_owner": "Owner", + "_price_plan": "Price Plan" + }, + "CATEGORIES_FILTER": { + "_remove_badge": "Remove badge", + "_applied_filters": "Applied filters:" + }, + "CART_DRAWER": { + "_title": "Shopping Cart", + "_close": "Close menu", + "_empty": "Empty cart", + "_purchase": "Proceed to purchase", + "_subtotal": "Subtotal" + }, + "FOOTER": { + "_about": "About", + "_privacy": "Privacy Policy", + "_cookies": "Cookies Policy", + "_licensing": "Terms of Use", + "_contact": "Contact", + "_rights": "All Rights Reserved", + "aboutTitle": "About DOME", + "governance": "Governance", + "partners": "Partners", + "marketplaceTitle": "Marketplace", + "browse": "Browse", + "legalTitle": "Legal", + "resourcesTitle": "Resources", + "documentation": "Documentation", + "support": "Support", + "faqs": "FAQs", + "follow-us": "Follow us", + "forCustomers": "For Customers", + "forProviders": "For Providers" + }, + "HEADER": { + "_marketplace": "DOME MARKETPLACE", + "_open_menu": "Open main menu", + "_home": "Home", + "_catalogs": "Providers catalogues", + "_search": "Search", + "_browse": "Browse", + "_cloud": "Cloud Services", + "_smart_ports": "Smart ports", + "_smart_cities": "Smart cities", + "_see_all": "See all", + "_services": "Services", + "_contact": "Contact", + "_profile": "Profile", + "_offerings": "My Offerings", + "_cart": "My shopping cart", + "_sign_out": "Sign out", + "_inventory": "My inventory", + "_support": "Support", + "_knowledge": "Knowledge Base", + "_ticketing": "Ticketing System", + "_change_session": "Change session", + "_admin": "Administration", + "_publish": "Publish your offerings", + "_register_here": "Register here", + "_register": "Register", + "_guidelines": "Guidelines to register", + "_guideline_publish": "Guideline to publish", + "_onboarding": "Onboarding", + "_registration": "Registration form", + "_about": "About", + "_verify": "Publish your offering", + "_info": "Info", + "_orders": "Product Orders", + "_blog": "Blog" + }, + "PRODUCT_DETAILS": { + "_back": "Back", + "_details": "Details", + "_information": "Information", + "_chars": "Characteristics", + "_attach": "Attachments", + "_agreements": "Agreements", + "_relationships": "Relationships", + "_no_chars": "No characteristics included", + "_no_attach": "No attachments included", + "_license": "License", + "_no_license": "No license included", + "_sla": "SLA", + "_no_sla": "No SLA included", + "_no_relatioships": "No relationships included", + "_service_spec": "This offering includes the following service specifications", + "_resource_spec": "This offering includes the following resource specifications", + "_self_attestation": "You can find the self attestation document here.", + "_product_pricing": "Product pricing", + "_product_chars": "Product characteristics", + "_product_att": "Product attachments", + "_product_rels": "Product relationships" + }, + "CATALOGS": { + "_all_catalogs": "All catalogues", + "_no_desc": "No description included", + "_no_cat": "No categories included", + "_view_details": "View details", + "_desc": "Description", + "_choose": "Choose between our Catalogues" + }, + "SHOPPING_CART": { + "_buy": "Buy", + "_back": "Back", + "_billingAddress": "Billing Address", + "_confirm": "Confirm and pay", + "_checkout": "Checkout", + "_note": "Add notes", + "_choose_bill": "Choose a billing address", + "_cart": "Cart", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_billing_check": "You should first create at least a billing address in order to checkout an order.", + "_click_here": "Click here", + "_free": "Free", + "_free_desc": "The offering is free", + "_loading_purchase": "Loading purchase", + "_contact": "Contact", + "_update": "Update", + "_contact_person": "Contact Person", + "_order_note": "Order Note", + "_your_order": "Your Order", + "_subtotal": "Sub Total", + "_tax": "Tax", + "_calculated": "Calculated at checkout", + "_fee": "Service fee*" + }, + "PROFILE": { + "_general": "General", + "_bill": "Billing addresses", + "_revenue": "Revenue sharing", + "_payment_dashboard": "Payment dashboard", + "_orders": "Orders", + "_order_list": "My order list", + "_update": "Update", + "_account": "Account", + "_username": "Username", + "_token": "Access token", + "_email": "Email", + "_profile": "Profile", + "_name": "Name", + "_lastname": "Lastname", + "_treatment": "Treatment", + "_marital_status": "Marital status", + "_gender": "Gender", + "_nacionality": "Nacionality", + "_birthdate": "Birthdate", + "_date": "Date", + "_country": "Country", + "_city": "City", + "_mybills": "My billing addresses", + "_user_id": "User id", + "_no_orders": "No orders found", + "_organization": "Organization", + "_medium_type": "Medium type", + "_preferred": "Preferred", + "_no_mediums": "There's no contact medium information.", + "_contact_info": "Contact information", + "_info": "Info", + "_actions": "Actions", + "_add_new_contact": "Add a new contact medium", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_edit": "Edit contact medium", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_save": "Save", + "_success": "Updated successfully", + "_website": "Website", + "_add_logo": "Add organization logo", + "_add_logo_url": "Add organization logo using a URL", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_order_details": "Order details:", + "_billing_address": "Billing address", + "_price": "Price", + "_img": "Img", + "_custom": "Custom", + "_free": "Free" + }, + "PRODUCT_INVENTORY": { + "_loading": "Loading...", + "_products": "Products", + "_services": "Services", + "_resources": "Resources", + "_orders": "Orders", + "_not_found": "No products found.", + "_no_resources": "No resources found.", + "_no_services": "No services found.", + "_search_criteria": "Search criteria", + "_prod_details": "Product details", + "_description": "Description", + "_pricing": "Product pricing", + "_chars": "Product characteristics", + "_res_details": "Resource details", + "_res_chars": "Resource characteristics", + "_serv_details": "Service details", + "_serv_chars": "Service characteristics", + "_start_date": "Start operating date", + "_order_id": "Order Id", + "_state": "State", + "_status": "Status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_inventory": "Inventory", + "_feasibility": "Feasibility Checked", + "_designed": "Designed", + "_reserved": "Reserved", + "_inactive": "Inactive", + "_active": "Active", + "_terminated": "Terminated", + "_id": "Id", + "_standby": "Standby", + "_alarm": "Alarm", + "_available": "Available", + "_suspended": "Suspended", + "_unknown": "Unknown", + "_created": "Created", + "_unsubscribe": "Unsubscribe", + "_close_modal": "Close modal", + "_cancel_sub": "Are you sure you want to cancel this subscription?", + "_cancel": "No, cancel", + "_yes_sure": "Yes, I'm sure", + "_renew_sub": "Are you sure you want to renew this subscription?" + }, + "BILLING": { + "_title": "Title", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_country": "Country", + "_city": "City", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_add": "Add billing address", + "_edit": "Edit billing address", + "_update": "Update billing address", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_no_billing": "There's no billing information.", + "_close_modal": "Close modal", + "_mandatory": "This field is mandatory.", + "_too_long": "This field is too long. Must be less than 250 characters.", + "_too_long_larger": "This field is too long. Must be less than 1000 characters.", + "_too_long_email": "Email is too long. Must be less than 320 characters.", + "_email_format": "Email must follow the following format: example@example.example" + }, + "INVOICES": { + "_invoice_id": "Invoice ID", + "_date": "Date", + "_billno": "Invoice Num.", + "_not_found": "No invoices found.", + "_description": "Description", + "_tax_included_amount": "Amount (tax included)", + "_tax_excluded_amount": "Amount (without tax)", + "_tax": "Tax", + "_billed": "Billed", + "_pending": "Pending", + "_status": "Status", + "_name": "Name", + "_type": "Type", + "_product": "Product ID", + "_actions": "Actions", + "_as_customer": "As Customer", + "_as_provider": "As Provider", + "_invoice_details": "Invoice details:", + "_applied_billing_rates": "Applied Billing Rates", + "_no_billing_rates": "No billing rates found", + "_period_coverage": "Period Coverage" + }, + "CREATE_CATALOG": { + "_back": "Back", + "_create": "Create catalogue", + "_status": "Status", + "_new": "New catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish" + }, + "UPDATE_CATALOG": { + "_back": "Back", + "_create": "Update catalogue", + "_status": "Status", + "_update": "Update catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete" + }, + "CREATE_PROD_SPEC": { + "_back": "Back", + "_create": "Create product specification", + "_new": "New product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include alphabetical characters (A-Z, a-z), numbers (0-9) and a limited set of symbols, such as underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_file_check": "You need to upload a file before proceeding.", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" + }, + "UPDATE_PROD_SPEC": { + "_back": "Back", + "_update": "Update product specification", + "_new": "Update product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_update_prod": "Update product", + "_verify": "Verify Certificates", + "_how_to_verify": "How to get a valid VC of the certificate?", + "_verify_text": "To get a valid VC of the certificate you can access the ", + "_dome_trust": "DOME Trust Service Provider for Certification", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include characters (a-z), (A-Z), (0-9), and a limited set of symbols including underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" + }, + "CREATE_RES_SPEC": { + "_back": "Back", + "_create": "Create resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_res": "Create resource" + }, + "UPDATE_RES_SPEC": { + "_back": "Back", + "_status": "Status", + "_update": "Update resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_res": "Update resource" + }, + "CREATE_SERV_SPEC": { + "_back": "Back", + "_create": "Create service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_serv": "Create service" + }, + "UPDATE_SERV_SPEC": { + "_back": "Back", + "_status": "Status", + "_update": "Update service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_serv": "Update service" + }, + "CREATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_new": "New product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings.", + "_previous": "Previous step", + "_next_step": "Next step", + "_no_subcats": "There's no subcategories" + }, + "UPDATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_update": "Update product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Update product", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings." + }, + "OFFERINGS": { + "_catalogs": "Catalogues", + "_offers": "Offer", + "_no_offer": "No offerings included.", + "_no_offerings": "There's no product offerings.", + "_no_prod": "There's no product specifications.", + "_no_prod_rel": "There's no product specifications, so you can't create relationships.", + "_no_cat": "There's no catalogues.", + "_no_categories": "There's no categories.", + "_no_res": "There's no resource specifications", + "_no_serv": "There's no service specifications", + "_prod_spec": "Product Specifications", + "_serv_spec": "Service Specifications", + "_res_spec": "Resource Specifications", + "_search": "Search", + "_add_new_serv": "Add new service", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_add_new_res": "Add new resource", + "_add_new_prod": "Add new product specification", + "_add_new_prod_short": "Add new product spec", + "_filter_type": "Filter by type", + "_all": "All", + "_simple": "Simple", + "_bundle": "Bundle", + "_type": "Type", + "_prod_offer": "Product offer", + "_add_new_offer": "Add new product offer", + "_add_new_catalog": "Add new catalogue", + "_filter_role": "Filter by role", + "_seller": "Seller", + "_owner": "Owner", + "_customer": "Customer", + "_role": "Role", + "_choose": "Choose between our Catalogues", + "_offerings": "Offerings", + "_my_offerings": "My offerings" + }, + "ADMIN": { + "_admin": "Administration", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_categories": "Categories", + "_verification": "Verification", + "_productId": "Product ID", + "_vc": "Verifiable Credential", + "_add": "Add", + "_revenue": "Revenue sharing", + "_email": "Email", + "_smtpServer": "SMTP Server", + "_smtpPort": "SMTP Port", + "_emailUser": "Email User", + "_emailPass": "Email Password" + }, + "CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included" + }, + "CREATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_create": "Create category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Create category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" + }, + "UPDATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_update": "Update category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Update category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" + }, + "ORGANIZATION": { + "_details": "Organization details", + "_description": "Description" + }, + "PRODUCT_ORDERS": { + "_orders": "Product Orders", + "_invoices": "Invoices", + "_no_orders": "No orders found.", + "_search_criteria": "Search criteria", + "_order_id": "Order Id", + "_status": "Choose a status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_filter_state": "Filter by status", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_unchecked": "Unchecked", + "_as_customer": "As Customer", + "_as_provider": "As Provider", + "_date": "Date", + "_actions": "Actions", + "_order_details": "Order details:", + "_customer_info": "Customer Info:", + "_name": "Name", + "_billing_address": "Billing address", + "_email": "Contact Email", + "_show_customer_details": "Show Customer Details", + "_img": "Img", + "_price_plan": "Price Plan", + "_state": "State" + }, "FORMS": { "PROCUREMENT_MODE": { - "_title": "Select Procurement Mode", - "_manual": "Manual", - "_automatic": "Automatic", - "_payment_automatic": "Payment Automatic - Procurement Manual" - }, + "_title": "Select Procurement Mode", + "_manual": "Manual", + "_automatic": "Automatic", + "_payment_automatic": "Payment Automatic - Procurement Manual" + }, "PRICE_PLANS": { "_price_plans": "Price Plans", "_add": "Add new Price Plans", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 208cba69..0df85064 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -1,8 +1,7 @@ { - "_yes": "Yes", - "_no": "No", - - "dashboard": { + "_yes": "Yes", + "_no": "No", + "dashboard": { "nav": { "forCustomers": "For Customers", "forProviders": "For Providers", @@ -144,414 +143,382 @@ "publish": "Publish your service" } }, -"europeTrademark": "Distributed Open Marketplace for Europe (DOME) Project has received funding from European Union’s Digital Europe Programme under the Grant Agreement No 101084071.", - - - "DASHBOARD": { - "_title": "DOME Marketplace is out! See what's new", - "_header": "Digital Trust to move forward", - "_subheader": "Join the first open distributed marketplace ecosystem for cloud, edge & AI services in Europe.", - "_new": "New", - "_learn_more": "Learn more", - "_video": "Watch video", - "_categories": "All categories", - "_cloud": "Cloud Services", - "_edge": "Edge Services", - "_smart_ports": "Smart ports", - "_smart_cities": "Smart cities", - "_search_ph": "Search Cloud Services, Edge Services, Providers...", - "_search": "Search", - "_not_found": "No offers found", - "_browse_serv": "Browse services", - "_view_serv": "View services", - "_close_menu": "Close menu", - "_all_catalogs": "All catalogues", - "_categories_single": "Categories" + "hero": { + "eyebrow": "Distributed Open Marketplace for Europe", + "title": "The trusted European Ecosystem for cloud, edge & AI services", + "subtitle": "The DOME marketplace brings verified, EU-compliant cloud, edge and AI services into one transparent, interoperable platform, simplifying services discovery and procurement for organisations and expanding market reach for cloud providers.", + "ctaCustomers": "I’m looking for digital services", + "ctaProviders": "I offer digital services", + "browseAll": "Browse all services →", + "asideTitle": "Marketplace snapshot", + "stats": { + "servicesLabel": "verified services", + "providersLabel": "registered providers", + "euHosted": "EU-hosted & compliance-driven", + "transparency": "End-to-end transparency on data & pricing" }, - "FEATURED": { - "_title": "Featured offerings", - "CARD1": { - "_badge": "Design", - "_title": "Start with Flowbite Design System", - "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", - "_more": "Read more" - }, - "CARD2": { - "_badge": "Code", - "_title": "Best react libraries around the web", - "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", - "_more": "Read more" - } + "moreAbout": "More about DOME" + }, + "whatIs": { + "title": "What is DOME Marketplace?", + "subtitle": "DOME is the European marketplace that provides a unified environment where trust, compliance, and interoperability form the foundation of how digital services are published, compared, and used across Europe.", + "cards": { + "c1": { + "title": "Trusted, Sovereign Digital Ecosystem", + "text": "DOME ensures services operate under EU rules for security, data protection, and sovereignty, creating a reliable environment for digital operations across Europe." + }, + "c2": { + "title": "Transparency and Comparability", + "text": "Consistent documentation, pricing clarity, and shared trust indicators make it easy to understand, compare, and assess digital services." + }, + "c3": { + "title": "Interoperability and Federation", + "text": "DOME connects multiple marketplaces and providers through shared standards, enabling seamless discovery, integration, and cross-market collaboration." + }, + "c4": { + "title": "Fair and Open Market Access", + "text": "The ecosystem removes barriers to entry, supports SMEs, and prevents vendor lock-in, ensuring all participants can compete and grow on equal terms." + } + } + }, + "marketplace": { + "title": "Explore verified services", + "subtitle": "Search across cloud, edge, AI, data and other digital services from trusted European providers.", + "searchPlaceholder": "Search by keyword, category or provider…", + "browseFullCatalog": "Browse full catalog →", + "viewService": "View service" + }, + "customers": { + "title": "For Customers", + "whyTitle": "Why to use DOME", + "cards": { + "c1": { + "title": "Access to verified digital services", + "text": "Discover offerings validated against EU security and data-protection rules, guaranteeing trusted providers and full data sovereignty." + }, + "c2": { + "title": "Transparent, guided service discovery", + "text": "Quickly identify suitable offerings through consistent documentation, clear pricing, trust indicators, and intuitive filtering and comparison tools." + }, + "c3": { + "title": "Powerful procurement tools", + "text": "Access built-in capabilities such as tendering, tailored-offer requests, and structured comparisons that make sourcing from multiple providers fast, clear, and efficient." + }, + "c4": { + "title": "Unified access to a broad ecosystem", + "text": "Benefit from a growing network of European providers and federated marketplaces, giving you broader choice and easier access to specialised services." + } }, - "GALLERY": { - "_title": "Featured offerings", - "_explore": "Explore marketplace", - "_add_your_service": "Add your service", - "_no_products": "Sorry! There are no products available at this moment. Please check again later." + "howTitle": "How DOME works", + "how": { + "s1Title": "Register as a customer", + "s1Text": "Create your customer profile", + "s2Title": "Search & compare", + "s2Text": "Find digital services according to your needs, use standardised documentation and trust badges to assess suitability", + "s3Title": "Connect & procure", + "s3Text": "Contact providers and procure directly, or use the DOME marketplace procurement tools in order to get the services that suit your needs" }, - "PLATFORM": { - "_title": "Platform benefits", - "_subtitle": "Your Gateway to Europe's Premier Digital Ecosystem", - "_learn_more": "Learn more", - "OPEN": { - "_title": "Open", - "_desc": "Navigate with confidence through transparent practices in service provisioning, pricing and operations." - }, - "INTEROPERABLE": { - "_title": "Interoperable", - "_desc": "Unlock endless possibilities with our open ecosystem, designed for seamless collaboration and innovation." - }, - "TRUSTWORTHY": { - "_title": "Trustworthy", - "_desc": "Build on a foundation of trust with services vetted for security, reliability and compliance." - }, - "COMPLIANT": { - "_title": "Compliant", - "_desc": "Stay ahead of the curve with services that adhere strictly to EU regulations and standards, for legal compliance and data protection." - }, - "SUSTAINABLE": { - "_title": "Sustainable", - "_desc": "Embrace sustainability with services that prioritize enery efficiency and environmental responsability." - }, - "TRANSPARENT": { - "_title": "Transparent", - "_desc": "Navigate with confidence trough transparent practices in service provisioning, pricing and operations." - } + "startJourney": "Start your customer journey now" + }, + "providers": { + "title": "For Providers", + "whyTitle": "Why to use DOME", + "cards": { + "c1": { + "title": "Reach a pan-European market", + "text": "Expand your visibility across Europe and access new customer segments through a unified, trusted ecosystem." + }, + "c2": { + "title": "Strengthen trust with customers", + "text": "Showcase compliance, transparency, and service quality through DOME’s verified trust indicators and documentation standards." + }, + "c3": { + "title": "Leverage DOME’s provider tools", + "text": "Integrated tools for onboarding, service management, analytics, procurement and promotion to enhance your market presence and operational efficiency." + }, + "c4": { + "title": "Complement and extend portfolio", + "text": "Discover services and partners across the ecosystem to enrich your offering and unlock new business opportunities." + } }, - "HOWITWORKS":{ - "_title": "How It Works", - "_subtitle": "Discover how DOME Marketplace connects you to Europe's finest cloud and edge services", - "CUSTOMERS":{ - "_title": "For customers", - "_subtitle": "Discover", - "_search_title": "Search and Explore", - "_search_desc": "Use our intuitive search to find the services that match your digital transformation needs.", - "_compare_title": "Compare and Decide", - "_compare_desc": "Evaluate services based on features, EU compliance and reviews to make informed choices.", - "_seamless_title": "Seamless Integration", - "_seamless_desc": "Follow our easy process to integrate and deploy your chosen services swiftly.", - "_join": "Join as customer", - "_explore": "Explore the catalogue", - "_contact": "Contact us", - "_description": "The marketplace is actually free to browse. Take a look at the catalogue contents, search for the services you need, verify the different offerings, get in touch with the service providers to better understand the proposal and acquire the desired service." - }, - "PROVIDERS": { - "_title": "For providers", - "_subtitle": "Connect and Grow", - "_register_title": "Register Your Service", - "_register_desc": "Sign up and submit your european service for validation, ensuring compliance and quality.", - "_verified_title": "Get verified", - "_verified_desc": "Our team will quickly verify your offerings to ensure they meet Distributed Open Marketplace standards.", - "_reach_title": "Reach Europe", - "_reach_desc": "Once verified, your services will be accessible to a wide European audience, ready to grow your business.", - "_join": "Join as provider", - "_onboard": "Onboard the marketplace", - "_contact": "Contact us", - "_description_start": "Qualify you company through the reference", - "_link": "Company Onboarding process", - "_description_end": "and then start describing your offerings through the Offering qualification process and star being visible on the market inside this trustable catalogue." - } + "howTitle": "How DOME works", + "how": { + "s1Title": "Onboard your organisation", + "s1Text": "Complete the onboarding process and receive your verifiable credentials", + "s2Title": "Describe & verify your services", + "s2Text": "Use DOME Marketplace templates to detail features, data handling and compliance", + "s3Title": "Publish & reach customers", + "s3Text": "Ready to go! Your services are available in the DOME catalogues!" }, - "EXPLORE": { - "_title": "Explore the Distributed Open Marketplace Project", - "_subtitle": "Whether you're seeking in-depth reports, latest updates or upcoming events, everything ou need to know is just a click away", - "_events_title": "Events and Webinars", - "_events_desc": "Join us at our next event or webinar to connect with fellow innovators, learn from industry leaders and discover new opportunities within the 'DOME' Project's ecosystem.", - "_updates_title": "Latest Updates and News", - "_updates_desc": "Stay informed with the latest developments, service enhancements and industry insights directly from the 'DOME' Project's website.", - "_resources_title": "Resources & Reports", - "_resources_desc": "Access our library of resources, detailed reports and case studies to gain a deep understanding of the cloud and edge market landscape and 'DOME' Project's impact.", - "_go": "DOME Project" + "startJourney": "Start your provider journey now" + }, + "roadmap": { + "title": "Growing the DOME ecosystem", + "subtitle": "DOME is at an early but active stage, expanding together with customers and providers.", + "now": { + "label": "Now", + "title": "Core marketplace live", + "text": "Initial catalog of verified services and providers." }, - "CARD": { - "_details": "View details", - "_quote": "Create quote", - "_add_cart": "Add to cart", - "_close": "Close modal", - "_categories": "Categories", - "_prod_details": "Product details", - "_comp_profile": "Compliance profile", - "_extra_info": "Extra information", - "_offer_version": "Offer version", - "_product_name": "Product name", - "_brand": "Brand", - "_last_update": "Last update", - "_product_version": "Product version", - "_id_number": "Identification number", - "_added_card": "Added to the cart", - "_undo": "Undo", - "_close_toast": "Close", - "_from": "From", - "_full_desc": "Full description", - "_price_plans": "Price plans", - "_select_price": "Select price plan", - "_chars": "Characteristics", - "_select_char": "Select characteristics", - "_terms": "Terms and conditions", - "_accept_terms": "I have read and I accept the terms and conditions.", - "_next": "Next", - "_back": "Back", - "_checkout": "Add to cart", - "_no_terms": "This product has no terms and conditions.", - "_no_chars": "This product has no characteristics.", - "_no_prices": "This product has no price plans.", - "_owner": "Owner", - "_price_plan": "Price Plan" + "next": { + "label": "Next 6–12 months", + "title": "More services, better tools", + "text": "Expanded catalog, richer filtering, improved verification workflows." }, - "CATEGORIES_FILTER": { - "_remove_badge": "Remove badge", - "_applied_filters": "Applied filters:" + "beyond": { + "label": "Beyond", + "title": "Deep EU integration", + "text": "Alignment with European data spaces and advanced trust services." + } + }, + "finalCta": { + "title": "Ready to find out what DOME Marketplace can do for your business?", + "discover": "Discover services", + "publish": "Publish your service" + }, + "europeTrademark": "Distributed Open Marketplace for Europe (DOME) Project has received funding from European Union’s Digital Europe Programme under the Grant Agreement No 101084071.", + "DASHBOARD": { + "_title": "DOME Marketplace is out! See what's new", + "_header": "Digital Trust to move forward", + "_subheader": "Join the first open distributed marketplace ecosystem for cloud, edge & AI services in Europe.", + "_new": "New", + "_learn_more": "Learn more", + "_video": "Watch video", + "_categories": "All categories", + "_cloud": "Cloud Services", + "_edge": "Edge Services", + "_smart_ports": "Smart ports", + "_smart_cities": "Smart cities", + "_search_ph": "Search Cloud Services, Edge Services, Providers...", + "_search": "Search", + "_not_found": "No offers found", + "_browse_serv": "Browse services", + "_view_serv": "View services", + "_close_menu": "Close menu", + "_all_catalogs": "All catalogues", + "_categories_single": "Categories" + }, + "FEATURED": { + "_title": "Featured offerings", + "CARD1": { + "_badge": "Design", + "_title": "Start with Flowbite Design System", + "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", + "_more": "Read more" + }, + "CARD2": { + "_badge": "Code", + "_title": "Best react libraries around the web", + "_description": "Static websites are now used to bootstrap lots of websites and are becoming the basis for a variety of tools that even influence both web designers and developers.", + "_more": "Read more" + } + }, + "GALLERY": { + "_title": "Featured offerings", + "_explore": "Explore marketplace", + "_add_your_service": "Add your service", + "_no_products": "Sorry! There are no products available at this moment. Please check again later." + }, + "PLATFORM": { + "_title": "Platform benefits", + "_subtitle": "Your Gateway to Europe's Premier Digital Ecosystem", + "_learn_more": "Learn more", + "OPEN": { + "_title": "Open", + "_desc": "Navigate with confidence through transparent practices in service provisioning, pricing and operations." }, - "CART_DRAWER": { - "_title": "Shopping Cart", - "_close": "Close menu", - "_empty": "Empty cart", - "_purchase": "Proceed to purchase", - "_subtotal": "Subtotal" + "INTEROPERABLE": { + "_title": "Interoperable", + "_desc": "Unlock endless possibilities with our open ecosystem, designed for seamless collaboration and innovation." }, - "FOOTER": { - "_about": "About", - "_privacy": "Privacy Policy", - "_cookies": "Cookies Policy", - "_licensing": "Terms of Use", - "_contact": "Contact", - "_rights": "All Rights Reserved" + "TRUSTWORTHY": { + "_title": "Trustworthy", + "_desc": "Build on a foundation of trust with services vetted for security, reliability and compliance." }, - "HEADER": { - "_marketplace": "DOME MARKETPLACE", - "_open_menu": "Open main menu", - "_home": "Home", - "_catalogs": "Providers catalogues", - "_search": "Search", - "_browse": "Browse", - "_cloud": "Cloud Services", - "_smart_ports": "Smart ports", - "_smart_cities": "Smart cities", - "_see_all": "See all", - "_services": "Services", - "_contact": "Contact", - "_profile": "Profile", - "_offerings": "My Offerings", - "_cart": "My shopping cart", - "_sign_out": "Sign out", - "_inventory": "My inventory", - "_support": "Support", - "_knowledge": "Knowledge Base", - "_ticketing": "Ticketing System", - "_change_session": "Change session", - "_admin": "Administration", - "_publish": "Publish your offerings", - "_register_here": "Register here", - "_register": "Register", - "_guidelines": "Guidelines to register", - "_guideline_publish": "Guideline to publish", - "_onboarding": "Onboarding", - "_registration": "Registration form", - "_about": "About", - "_verify": "Publish your offering", - "_info": "Info", - "_orders": "Product Orders", - "_blog": "Dome blog" + "COMPLIANT": { + "_title": "Compliant", + "_desc": "Stay ahead of the curve with services that adhere strictly to EU regulations and standards, for legal compliance and data protection." }, - "PRODUCT_DETAILS": { - "_back": "Back", - "_details": "Details", - "_information": "Information", - "_chars": "Characteristics", - "_attach": "Attachments", - "_agreements": "Agreements", - "_relationships": "Relationships", - "_no_chars": "No characteristics included", - "_no_attach": "No attachments included", - "_license": "License", - "_no_license": "No license included", - "_sla": "SLA", - "_no_sla": "No SLA included", - "_no_relatioships": "No relationships included", - "_service_spec": "This offering includes the following service specifications", - "_resource_spec": "This offering includes the following resource specifications", - "_self_attestation": "You can find the self attestation document here.", - "_product_pricing": "Product pricing", - "_product_chars": "Product characteristics", - "_product_att": "Product attachments", - "_product_rels": "Product relationships" + "SUSTAINABLE": { + "_title": "Sustainable", + "_desc": "Embrace sustainability with services that prioritize enery efficiency and environmental responsability." }, "CATALOGS": { - "_all_catalogs": "All catalogues", - "_no_desc": "No description included", - "_no_cat": "No categories included", - "_view_details": "View details", - "_desc": "Description", - "_choose": "Choose between our Catalogues" + "_all_catalogs": "All catalogues", + "_no_desc": "No description included", + "_no_cat": "No categories included", + "_view_details": "View details", + "_desc": "Description", + "_choose": "Choose between our Catalogues" }, "SHOPPING_CART": { - "_buy": "Buy", - "_back": "Back", - "_billingAddress": "Billing Address", - "_confirm": "Confirm and pay", - "_checkout": "Checkout", - "_note": "Add notes", - "_choose_bill": "Choose a billing address", - "_cart": "Cart", - "_email": "Email", - "_postalAddress": "Postal address", - "_phone": "Phone number", - "_billing_check": "You should first create at least a billing address in order to checkout an order.", - "_click_here": "Click here", - "_free": "Free", - "_free_desc": "The offering is free", - "_loading_purchase": "Loading purchase", - "_contact": "Contact", - "_update": "Update", - "_contact_person": "Contact Person", - "_order_note": "Order Note", - "_your_order": "Your Order", - "_subtotal": "Sub Total", - "_tax": "Tax", - "_calculated": "Calculated at checkout", - "_fee": "Service fee*" + "_buy": "Buy", + "_back": "Back", + "_billingAddress": "Billing Address", + "_confirm": "Confirm and pay", + "_checkout": "Checkout", + "_note": "Add notes", + "_choose_bill": "Choose a billing address", + "_cart": "Cart", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_billing_check": "You should first create at least a billing address in order to checkout an order.", + "_click_here": "Click here", + "_free": "Free", + "_free_desc": "The offering is free", + "_loading_purchase": "Loading purchase", + "_contact": "Contact", + "_update": "Update", + "_contact_person": "Contact Person", + "_order_note": "Order Note", + "_your_order": "Your Order", + "_subtotal": "Sub Total", + "_tax": "Tax", + "_calculated": "Calculated at checkout", + "_fee": "Service fee*" }, - "PROFILE":{ - "_general": "General", - "_bill": "Billing addresses", - "_revenue": "Revenue sharing", - "_payment_dashboard": "Payment dashboard", - "_lear_link": "VC Issuer", - "_orders": "Orders", - "_order_list": "My order list", - "_update": "Update", - "_account": "Account", - "_username": "Username", - "_token": "Access token", - "_email": "Email", - "_profile": "Profile", - "_name": "Name", - "_lastname": "Lastname", - "_treatment": "Treatment", - "_marital_status": "Marital status", - "_gender": "Gender", - "_nacionality": "Nacionality", - "_birthdate": "Birthdate", - "_date": "Date", - "_country": "Country", - "_city": "City", - "_mybills": "My billing addresses", - "_user_id": "User id", - "_no_orders": "No orders found", - "_organization": "Organization", - "_medium_type": "Medium type", - "_preferred": "Preferred", - "_no_mediums": "There's no contact medium information.", - "_contact_info": "Contact information", - "_info": "Info", - "_actions": "Actions", - "_add_new_contact": "Add a new contact medium", - "_postalAddress": "Postal address", - "_phone": "Phone number", - "_phone_type": "Phone Type", - "_action": "Actions", - "_state": "State / Province", - "_post_code": "ZIP / Postal Code", - "_street": "Street Address", - "_edit": "Edit contact medium", - "_delete": "Yes, delete", - "_confirm_delete": "Are you sure about deleting the following billing address?", - "_cancel": "No, cancel", - "_invalid_phone": "Phone number is invalid!", - "_invalid_email": "Email is invalid!", - "_save": "Save", - "_success": "Updated successfully", - "_website": "Website", - "_add_logo": "Add organization logo", - "_add_logo_url": "Add organization logo using a URL", - "_acknowledged": "Acknowledged", - "_in_progress": "In Progress", - "_partial": "Partial", - "_completed": "Completed", - "_failed": "Failed", - "_pending": "Pending", - "_cancelled": "Cancelled", - "_order_details": "Order details:", - "_billing_address": "Billing address", - "_price": "Price", - "_img": "Img", - "_custom": "Custom", - "_free": "Free" + "PROFILE": { + "_general": "General", + "_bill": "Billing addresses", + "_revenue": "Revenue sharing", + "_payment_dashboard": "Payment dashboard", + "_lear_link": "VC Issuer", + "_orders": "Orders", + "_order_list": "My order list", + "_update": "Update", + "_account": "Account", + "_username": "Username", + "_token": "Access token", + "_email": "Email", + "_profile": "Profile", + "_name": "Name", + "_lastname": "Lastname", + "_treatment": "Treatment", + "_marital_status": "Marital status", + "_gender": "Gender", + "_nacionality": "Nacionality", + "_birthdate": "Birthdate", + "_date": "Date", + "_country": "Country", + "_city": "City", + "_mybills": "My billing addresses", + "_user_id": "User id", + "_no_orders": "No orders found", + "_organization": "Organization", + "_medium_type": "Medium type", + "_preferred": "Preferred", + "_no_mediums": "There's no contact medium information.", + "_contact_info": "Contact information", + "_info": "Info", + "_actions": "Actions", + "_add_new_contact": "Add a new contact medium", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_edit": "Edit contact medium", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_save": "Save", + "_success": "Updated successfully", + "_website": "Website", + "_add_logo": "Add organization logo", + "_add_logo_url": "Add organization logo using a URL", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_order_details": "Order details:", + "_billing_address": "Billing address", + "_price": "Price", + "_img": "Img", + "_custom": "Custom", + "_free": "Free" }, - "PRODUCT_INVENTORY":{ - "_loading": "Loading...", - "_products": "Products", - "_services": "Services", - "_resources": "Resources", - "_orders": "Orders", - "_not_found": "No products found.", - "_no_resources": "No resources found.", - "_no_services": "No services found.", - "_search_criteria": "Search criteria", - "_prod_details": "Product details", - "_description": "Description", - "_pricing": "Product pricing", - "_chars": "Product characteristics", - "_res_details": "Resource details", - "_res_chars": "Resource characteristics", - "_serv_details": "Service details", - "_serv_chars": "Service characteristics", - "_start_date": "Start operating date", - "_order_id": "Order Id", - "_state": "State", - "_status": "Status", - "_priority": "Priority", - "_desc": "Description", - "_price": "Price", - "_bill": "Billing address", - "_inventory": "Inventory", - "_feasibility": "Feasibility Checked", - "_designed": "Designed", - "_reserved": "Reserved", - "_inactive": "Inactive", - "_active": "Active", - "_terminated": "Terminated", - "_id": "Id", - "_standby": "Standby", - "_alarm": "Alarm", - "_available": "Available", - "_suspended": "Suspended", - "_unknown": "Unknown", - "_created": "Created", - "_unsubscribe": "Unsubscribe", - "_close_modal": "Close modal", - "_cancel_sub": "Are you sure you want to cancel this subscription?", - "_cancel": "No, cancel", - "_yes_sure": "Yes, I'm sure", - "_renew_sub": "Are you sure you want to renew this subscription?" + "PRODUCT_INVENTORY": { + "_loading": "Loading...", + "_products": "Products", + "_services": "Services", + "_resources": "Resources", + "_orders": "Orders", + "_not_found": "No products found.", + "_no_resources": "No resources found.", + "_no_services": "No services found.", + "_search_criteria": "Search criteria", + "_prod_details": "Product details", + "_description": "Description", + "_pricing": "Product pricing", + "_chars": "Product characteristics", + "_res_details": "Resource details", + "_res_chars": "Resource characteristics", + "_serv_details": "Service details", + "_serv_chars": "Service characteristics", + "_start_date": "Start operating date", + "_order_id": "Order Id", + "_state": "State", + "_status": "Status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_inventory": "Inventory", + "_feasibility": "Feasibility Checked", + "_designed": "Designed", + "_reserved": "Reserved", + "_inactive": "Inactive", + "_active": "Active", + "_terminated": "Terminated", + "_id": "Id", + "_standby": "Standby", + "_alarm": "Alarm", + "_available": "Available", + "_suspended": "Suspended", + "_unknown": "Unknown", + "_created": "Created", + "_unsubscribe": "Unsubscribe", + "_close_modal": "Close modal", + "_cancel_sub": "Are you sure you want to cancel this subscription?", + "_cancel": "No, cancel", + "_yes_sure": "Yes, I'm sure", + "_renew_sub": "Are you sure you want to renew this subscription?" }, "BILLING": { - "_title": "Title", - "_email": "Email", - "_postalAddress": "Postal address", - "_phone": "Phone number", - "_phone_type": "Phone Type", - "_action": "Actions", - "_country": "Country", - "_city": "City", - "_state": "State / Province", - "_post_code": "ZIP / Postal Code", - "_street": "Street Address", - "_add": "Add billing address", - "_edit": "Edit billing address", - "_update": "Update billing address", - "_delete": "Yes, delete", - "_confirm_delete": "Are you sure about deleting the following billing address?", - "_cancel": "No, cancel", - "_invalid_phone": "Phone number is invalid!", - "_invalid_email": "Email is invalid!", - "_no_billing": "There's no billing information.", - "_close_modal": "Close modal", - "_mandatory": "This field is mandatory.", - "_too_long": "This field is too long. Must be less than 250 characters.", - "_too_long_larger": "This field is too long. Must be less than 1000 characters.", - "_too_long_email": "Email is too long. Must be less than 320 characters.", - "_email_format": "Email must follow the following format: example@example.example" + "_title": "Title", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_country": "Country", + "_city": "City", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_add": "Add billing address", + "_edit": "Edit billing address", + "_update": "Update billing address", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_no_billing": "There's no billing information.", + "_close_modal": "Close modal", + "_mandatory": "This field is mandatory.", + "_too_long": "This field is too long. Must be less than 250 characters.", + "_too_long_larger": "This field is too long. Must be less than 1000 characters.", + "_too_long_email": "Email is too long. Must be less than 320 characters.", + "_email_format": "Email must follow the following format: example@example.example" }, "INVOICES": { "_invoice_id": "Invoice ID", @@ -578,689 +545,1723 @@ "_period_coverage": "Period Coverage" }, "CREATE_CATALOG": { - "_back": "Back", - "_create": "Create catalogue", - "_status": "Status", - "_new": "New catalogue", - "_steps": "Steps", - "_general": "General", - "_general_info": "Catalogue's general information", - "_actions": "Actions", - "_type": "Type", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_summary": "Catalogue's summary", - "_finish": "Finish" + "_back": "Back", + "_create": "Create catalogue", + "_status": "Status", + "_new": "New catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish" }, "UPDATE_CATALOG": { - "_back": "Back", - "_create": "Update catalogue", - "_status": "Status", - "_update": "Update catalogue", - "_steps": "Steps", - "_general": "General", - "_general_info": "Catalogue's general information", - "_actions": "Actions", - "_type": "Type", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_summary": "Catalogue's summary", - "_finish": "Finish", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete" + "_back": "Back", + "_create": "Update catalogue", + "_status": "Status", + "_update": "Update catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete" }, - "CREATE_PROD_SPEC":{ - "_back": "Back", - "_create": "Create product specification", - "_new": "New product", - "_steps": "Steps", - "_general": "General", - "_general_info": "Product's general information", - "_bundle": "Bundle", - "_bundle_info": "Product's blundle information", - "_comp_profile": "Compliance profile", - "_comp_profile_info": "Product's compliance profile", - "_no_comp_profile": "No compliance profile included.", - "_chars": "Characteristics", - "_chars_info": "Product's characteristics", - "_resource": "Resource Specs", - "_resource_info": "Product's resource specifications", - "_service": "Service Specs", - "_service_info": "Product's service specifications", - "_attachments": "Attachments", - "_attachments_info": "Product's attachments", - "_relationships": "Relationships", - "_relationships_info": "Product's relationships", - "_product_name": "Name", - "_product_version": "Version", - "_product_brand": "Brand", - "_id_number": "ID Number", - "_product_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled product?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_make_optional": "Make this characteristic optional", - "_default_value": "Default value", - "_default_false": "Disabled by default", - "_default_true": "Enabled by default", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Finish", - "_summary": "Product's summary", - "_create_prod": "Create product", - "_file_res": "File restrictions", - "_restrictions": "File size must be under 3MB. File names can only include alphabetical characters (A-Z, a-z), numbers (0-9) and a limited set of symbols, such as underscores (_), hyphens (-), and periods (.). ", - "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", - "_file_check": "You need to upload a file before proceeding.", - "_self_attestation": "Self Attestation:", - "_close_modal": "Close modal", - "_cancel": "Cancel", - "_upload": "Upload" + "CREATE_PROD_SPEC": { + "_back": "Back", + "_create": "Create product specification", + "_new": "New product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include alphabetical characters (A-Z, a-z), numbers (0-9) and a limited set of symbols, such as underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_file_check": "You need to upload a file before proceeding.", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" }, - "UPDATE_PROD_SPEC":{ - "_back": "Back", - "_update": "Update product specification", - "_new": "Update product", - "_steps": "Steps", - "_general": "General", - "_general_info": "Product's general information", - "_bundle": "Bundle", - "_bundle_info": "Product's blundle information", - "_comp_profile": "Compliance profile", - "_comp_profile_info": "Product's compliance profile", - "_no_comp_profile": "No compliance profile included.", - "_chars": "Characteristics", - "_chars_info": "Product's characteristics", - "_resource": "Resource Specs", - "_resource_info": "Product's resource specifications", - "_service": "Service Specs", - "_service_info": "Product's service specifications", - "_attachments": "Attachments", - "_attachments_info": "Product's attachments", - "_relationships": "Relationships", - "_relationships_info": "Product's relationships", - "_product_name": "Name", - "_product_version": "Version", - "_product_brand": "Brand", - "_id_number": "ID Number", - "_product_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled product?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_make_optional": "Make this characteristic optional", - "_default_value": "Default value", - "_default_false": "Disabled by default", - "_default_true": "Enabled by default", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Finish", - "_summary": "Product's summary", - "_update_prod": "Update product", - "_verify": "Verify Certificates", - "_how_to_verify": "How to get a valid VC of the certificate?", - "_verify_text": "To get a valid VC of the certificate you can access the ", - "_dome_trust": "DOME Trust Service Provider for Certification", - "_file_res": "File restrictions", - "_restrictions": "File size must be under 3MB. File names can only include characters (a-z), (A-Z), (0-9), and a limited set of symbols including underscores (_), hyphens (-), and periods (.). ", - "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete", - "_self_attestation": "Self Attestation:", - "_close_modal": "Close modal", - "_cancel": "Cancel", - "_upload": "Upload" + "UPDATE_PROD_SPEC": { + "_back": "Back", + "_update": "Update product specification", + "_new": "Update product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_update_prod": "Update product", + "_verify": "Verify Certificates", + "_how_to_verify": "How to get a valid VC of the certificate?", + "_verify_text": "To get a valid VC of the certificate you can access the ", + "_dome_trust": "DOME Trust Service Provider for Certification", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include characters (a-z), (A-Z), (0-9), and a limited set of symbols including underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" }, "CREATE_RES_SPEC": { - "_back": "Back", - "_create": "Create resource specification", - "_new": "New resource", - "_steps": "Steps", - "_general": "General", - "_general_info": "Resource's general information", - "_chars": "Characteristics", - "_chars_info": "Resource's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_create_res": "Create resource" + "_back": "Back", + "_create": "Create resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_res": "Create resource" }, "UPDATE_RES_SPEC": { - "_back": "Back", - "_status": "Status", - "_update": "Update resource specification", - "_new": "New resource", - "_steps": "Steps", - "_general": "General", - "_general_info": "Resource's general information", - "_chars": "Characteristics", - "_chars_info": "Resource's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_update_res": "Update resource" + "_back": "Back", + "_status": "Status", + "_update": "Update resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_res": "Update resource" }, "CREATE_SERV_SPEC": { - "_back": "Back", - "_create": "Create service specification", - "_new": "New service", - "_steps": "Steps", - "_general": "General", - "_general_info": "Service's general information", - "_chars": "Characteristics", - "_chars_info": "Service's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_create_serv": "Create service" + "_back": "Back", + "_create": "Create service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_serv": "Create service" }, "UPDATE_SERV_SPEC": { - "_back": "Back", - "_status": "Status", - "_update": "Update service specification", - "_new": "New service", - "_steps": "Steps", - "_general": "General", - "_general_info": "Service's general information", - "_chars": "Characteristics", - "_chars_info": "Service's characteristics", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_type": "Type", - "_save_char": "Save characteristic", - "_preview": "Preview", - "_show_preview": "Show preview", - "_name": "Name", - "_description": "Description", - "_next": "Next", - "_finish": "Finish", - "_update_serv": "Update service" + "_back": "Back", + "_status": "Status", + "_update": "Update service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_serv": "Update service" }, - "CREATE_OFFER":{ - "_back": "Back", - "_create": "Create product offer", - "_new": "New product offer", - "_steps": "Steps", - "_general": "General", - "_general_info": "Offer's general information", - "_bundle": "Bundle", - "_bundle_info": "Offer's bundle information", - "_prod_spec": "Product Spec", - "_prod_spec_info": "Offer's related product", - "_catalog": "Catalogue", - "_catalog_info": "Offer's related catalogue", - "_category": "Category", - "_category_info": "Category info", - "_license": "License", - "_license_info": "Offer's license", - "_sla": "SLA", - "_sla_info": "Offer's SLA", - "_price_plans": "Price plans", - "_price_plans_info": "Offer's pricing", - "_name": "Name", - "_description": "Description", - "_version": "Version", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled offer?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Finish", - "_summary": "Product's summary", - "_create_prod": "Create product", - "_choose_license": "Choose a license", - "_standard_license": "Standard open data licenses", - "_treatment": "Treatment", - "_exclusivity": "Exclusivity", - "_sector": "Sector", - "_region": "Region", - "_timeframe": "Timeframe", - "_purpose": "Purpose", - "_transferability": "Transferability", - "_no_sla": "No SLA included", - "_threshold": "Threshold", - "_new_metric": "Define new metric", - "_add_metric": "Add metric", - "_no_prices": "No price plans included.", - "_is_free_price": "Is this offer open?", - "_new_price": "New price plan", - "_create_price": "Create price plan", - "_choose_type": "Choose a type", - "_enter_value": "Enter a value", - "_add_condition": "Add a condition", - "_choose_period": "Choose a pricing period", - "_price_alter": "Price alteration", - "_create_license": "Create license", - "_price": "Price", - "_save_price":"Save price", - "_duplicated_price_name": "Price name already exists.", - "_save_license": "Save license", - "_no_prod_spec": "Bundled offers can't include product specifications.", - "_cancel": "Cancel", - "_no_prods": "There's no product specifications.", - "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", - "_no_cats": "There's no catalogues.", - "_no_categories": "There's no categories", - "_no_offer": "There's no offerings.", - "_previous": "Previous step", - "_next_step": "Next step", - "_no_subcats": "There's no subcategories" + "CREATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_new": "New product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings.", + "_previous": "Previous step", + "_next_step": "Next step", + "_no_subcats": "There's no subcategories" }, - "UPDATE_OFFER":{ - "_back": "Back", - "_create": "Create product offer", - "_update": "Update product offer", - "_steps": "Steps", - "_general": "General", - "_general_info": "Offer's general information", - "_bundle": "Bundle", - "_bundle_info": "Offer's bundle information", - "_prod_spec": "Product Spec", - "_prod_spec_info": "Offer's related product", - "_catalog": "Catalogue", - "_catalog_info": "Offer's related catalogue", - "_category": "Category", - "_category_info": "Category info", - "_license": "License", - "_license_info": "Offer's license", - "_sla": "SLA", - "_sla_info": "Offer's SLA", - "_price_plans": "Price plans", - "_price_plans_info": "Offer's pricing", - "_name": "Name", - "_description": "Description", - "_version": "Version", - "_preview": "Preview", - "_show_preview": "Show preview", - "_next": "Next", - "_is_bundled": "Bundled offer?", - "_status": "Status", - "_type": "Type", - "_last_update": "Last update", - "_select": "Select", - "_simple": "Simple", - "_load_more": "Load more", - "_add_comp": "3rd party certifications", - "_value": "Value", - "_actions": "Actions", - "_no_chars": "No characteristics included.", - "_values": "Values", - "_new_char": "Create new characteristic", - "_add_values": "Add values", - "_unit": "Unit", - "_from": "From", - "_to": "To", - "_save_char": "Save characteristic", - "_resource_specs": "Resource specifications", - "_service_specs": "Service specifications", - "_add_prod_img": "Add product image", - "_drop_files": "Drop one file to attatch or", - "_select_files": "select a file.", - "_add_prod_img_url": "Add product image using URL", - "_add_att": "Attachments", - "_no_att": "No attachments included.", - "_new_att": "Add new attachment", - "_save_att": "Save attachment", - "_no_relatioships": "No relationships included.", - "_relationship_type": "Relationship type", - "_add_relationship": "Add new relationship", - "_save_relationship": "Save relationship", - "_profile_pic": "Profile picture", - "_finish": "Update product", - "_summary": "Product's summary", - "_create_prod": "Create product", - "_choose_license": "Choose a license", - "_standard_license": "Standard open data licenses", - "_treatment": "Treatment", - "_exclusivity": "Exclusivity", - "_sector": "Sector", - "_region": "Region", - "_timeframe": "Timeframe", - "_purpose": "Purpose", - "_transferability": "Transferability", - "_no_sla": "No SLA included", - "_threshold": "Threshold", - "_new_metric": "Define new metric", - "_add_metric": "Add metric", - "_no_prices": "No price plans included.", - "_is_free_price": "Is this offer open?", - "_new_price": "New price plan", - "_create_price": "Create price plan", - "_choose_type": "Choose a type", - "_enter_value": "Enter a value", - "_add_condition": "Add a condition", - "_choose_period": "Choose a pricing period", - "_price_alter": "Price alteration", - "_create_license": "Create license", - "_price": "Price", - "_save_price":"Save price", - "_duplicated_price_name": "Price name already exists.", - "_save_license": "Save license", - "_no_prod_spec": "Bundled offers can't include product specifications.", - "_cancel": "Cancel", - "_no_prods": "There's no product specifications.", - "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", - "_no_cats": "There's no catalogues.", - "_no_categories": "There's no categories", - "_no_offer": "There's no offerings." + "UPDATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_update": "Update product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Update product", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings." }, "OFFERINGS": { - "_catalogs": "Catalogues", - "_offers": "Offer", - "_no_offer": "No offerings included.", - "_no_offerings": "There's no product offerings.", - "_no_prod": "There's no product specifications.", - "_no_prod_rel": "There's no product specifications, so you can't create relationships.", - "_no_cat": "There's no catalogues.", - "_no_categories": "There's no categories.", - "_no_res": "There's no resource specifications", - "_no_serv": "There's no service specifications", - "_prod_spec": "Product Specifications", - "_serv_spec": "Service Specifications", - "_res_spec": "Resource Specifications", - "_search": "Search", - "_add_new_serv": "Add new service", - "_filter_state": "Filter by status", - "_state": "State", - "_order_by": "Order by...", - "_last_update": "Last update", - "_name": "Name", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete", - "_status": "Status", - "_actions": "Actions", - "_load_more": "Load more", - "_add_new_res": "Add new resource", - "_add_new_prod": "Add new product specification", - "_add_new_prod_short": "Add new product spec", - "_filter_type": "Filter by type", - "_all": "All", - "_simple": "Simple", - "_bundle": "Bundle", - "_type": "Type", - "_prod_offer": "Product offer", - "_add_new_offer": "Add new product offer", - "_add_new_catalog": "Add new catalogue", - "_filter_role": "Filter by role", - "_seller": "Seller", - "_owner": "Owner", - "_customer": "Customer", - "_role": "Role", - "_choose": "Choose between our Catalogues", - "_offerings": "Offerings", - "_my_offerings": "My offerings" + "_catalogs": "Catalogues", + "_offers": "Offer", + "_no_offer": "No offerings included.", + "_no_offerings": "There's no product offerings.", + "_no_prod": "There's no product specifications.", + "_no_prod_rel": "There's no product specifications, so you can't create relationships.", + "_no_cat": "There's no catalogues.", + "_no_categories": "There's no categories.", + "_no_res": "There's no resource specifications", + "_no_serv": "There's no service specifications", + "_prod_spec": "Product Specifications", + "_serv_spec": "Service Specifications", + "_res_spec": "Resource Specifications", + "_search": "Search", + "_add_new_serv": "Add new service", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_add_new_res": "Add new resource", + "_add_new_prod": "Add new product specification", + "_add_new_prod_short": "Add new product spec", + "_filter_type": "Filter by type", + "_all": "All", + "_simple": "Simple", + "_bundle": "Bundle", + "_type": "Type", + "_prod_offer": "Product offer", + "_add_new_offer": "Add new product offer", + "_add_new_catalog": "Add new catalogue", + "_filter_role": "Filter by role", + "_seller": "Seller", + "_owner": "Owner", + "_customer": "Customer", + "_role": "Role", + "_choose": "Choose between our Catalogues", + "_offerings": "Offerings", + "_my_offerings": "My offerings" }, - "ADMIN":{ - "_admin": "Administration", - "_filter_state": "Filter by status", - "_state": "State", - "_order_by": "Order by...", - "_last_update": "Last update", - "_name": "Name", - "_active": "Active", - "_launched": "Launched", - "_retired": "Retired", - "_obsolete": "Obsolete", - "_status": "Status", - "_actions": "Actions", - "_load_more": "Load more", - "_categories": "Categories", - "_verification": "Verification", - "_productId": "Product ID", - "_vc": "Verifiable Credential", - "_add": "Add", - "_revenue": "Revenue sharing", - "_email": "Email", - "_smtpServer": "SMTP Server", - "_smtpPort": "SMTP Port", - "_emailUser": "Email User", - "_emailPass": "Email Password" + "ADMIN": { + "_admin": "Administration", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_categories": "Categories", + "_verification": "Verification", + "_productId": "Product ID", + "_vc": "Verifiable Credential", + "_add": "Add", + "_revenue": "Revenue sharing", + "_email": "Email", + "_smtpServer": "SMTP Server", + "_smtpPort": "SMTP Port", + "_emailUser": "Email User", + "_emailPass": "Email Password" }, - "CATEGORIES":{ - "_categories": "Categories", - "_add_new_cat": "Add new category", - "_no_cat": "No categories included" + "CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included" }, - "CREATE_CATEGORIES":{ - "_categories": "Categories", - "_add_new_cat": "Add new category", - "_no_cat": "No categories included", - "_back": "Back", - "_create": "Create category", - "_new": "New category", - "_steps": "Steps", - "_general": "General", - "_general_info": "Category's general information", - "_finish": "Create category", - "_summary": "Category's summary", - "_name": "Name", - "_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_status": "Status", - "_next": "Next", - "_choose_parent": "Choose a parent category", - "_parent": "Parent category" + "CREATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_create": "Create category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Create category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" }, - "UPDATE_CATEGORIES":{ - "_categories": "Categories", - "_add_new_cat": "Add new category", - "_no_cat": "No categories included", - "_back": "Back", - "_update": "Update category", - "_new": "New category", - "_steps": "Steps", - "_general": "General", - "_general_info": "Category's general information", - "_finish": "Update category", - "_summary": "Category's summary", - "_name": "Name", - "_description": "Description", - "_preview": "Preview", - "_show_preview": "Show preview", - "_status": "Status", - "_next": "Next", - "_choose_parent": "Choose a parent category", - "_parent": "Parent category" + "UPDATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_update": "Update category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Update category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" }, "ORGANIZATION": { - "_details": "Organization details", - "_description": "Description" + "_details": "Organization details", + "_description": "Description" }, "PRODUCT_ORDERS": { - "_orders": "Product Orders", - "_invoices": "Invoices", - "_no_orders": "No orders found.", - "_search_criteria": "Search criteria", - "_order_id": "Order Id", - "_status": "Choose a status", - "_priority": "Priority", - "_desc": "Description", - "_price": "Price", - "_bill": "Billing address", - "_filter_state": "Filter by status", - "_acknowledged": "Acknowledged", - "_in_progress": "In Progress", - "_partial": "Partial", - "_completed": "Completed", - "_failed": "Failed", - "_pending": "Pending", - "_cancelled": "Cancelled", - "_unchecked": "Unchecked", - "_as_customer": "As Customer", - "_as_provider": "As Provider", - "_date": "Date", - "_actions": "Actions", - "_order_details": "Order details:", - "_customer_info": "Customer Info:", - "_name": "Name", - "_billing_address": "Billing address", - "_email": "Contact Email", - "_show_customer_details": "Show Customer Details", - "_img": "Img", - "_price_plan": "Price Plan", - "_state": "State" + "_orders": "Product Orders", + "_invoices": "Invoices", + "_no_orders": "No orders found.", + "_search_criteria": "Search criteria", + "_order_id": "Order Id", + "_status": "Choose a status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_filter_state": "Filter by status", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_unchecked": "Unchecked", + "_as_customer": "As Customer", + "_as_provider": "As Provider", + "_date": "Date", + "_actions": "Actions", + "_order_details": "Order details:", + "_customer_info": "Customer Info:", + "_name": "Name", + "_billing_address": "Billing address", + "_email": "Contact Email", + "_show_customer_details": "Show Customer Details", + "_img": "Img", + "_price_plan": "Price Plan", + "_state": "State" }, + "PROVIDERS": { + "_title": "For providers", + "_subtitle": "Connect and Grow", + "_register_title": "Register Your Service", + "_register_desc": "Sign up and submit your european service for validation, ensuring compliance and quality.", + "_verified_title": "Get verified", + "_verified_desc": "Our team will quickly verify your offerings to ensure they meet Distributed Open Marketplace standards.", + "_reach_title": "Reach Europe", + "_reach_desc": "Once verified, your services will be accessible to a wide European audience, ready to grow your business.", + "_join": "Join as provider", + "_onboard": "Onboard the marketplace", + "_contact": "Contact us", + "_description_start": "Qualify you company through the reference", + "_link": "Company Onboarding process", + "_description_end": "and then start describing your offerings through the Offering qualification process and star being visible on the market inside this trustable catalogue." + } + }, + "EXPLORE": { + "_title": "Explore the Distributed Open Marketplace Project", + "_subtitle": "Whether you're seeking in-depth reports, latest updates or upcoming events, everything ou need to know is just a click away", + "_events_title": "Events and Webinars", + "_events_desc": "Join us at our next event or webinar to connect with fellow innovators, learn from industry leaders and discover new opportunities within the 'DOME' Project's ecosystem.", + "_updates_title": "Latest Updates and News", + "_updates_desc": "Stay informed with the latest developments, service enhancements and industry insights directly from the 'DOME' Project's website.", + "_resources_title": "Resources & Reports", + "_resources_desc": "Access our library of resources, detailed reports and case studies to gain a deep understanding of the cloud and edge market landscape and 'DOME' Project's impact.", + "_go": "DOME Project" + }, + "CARD": { + "_details": "View details", + "_quote": "Create quote", + "_add_cart": "Add to cart", + "_close": "Close modal", + "_categories": "Categories", + "_prod_details": "Product details", + "_comp_profile": "Compliance profile", + "_extra_info": "Extra information", + "_offer_version": "Offer version", + "_product_name": "Product name", + "_brand": "Brand", + "_last_update": "Last update", + "_product_version": "Product version", + "_id_number": "Identification number", + "_added_card": "Added to the cart", + "_undo": "Undo", + "_close_toast": "Close", + "_from": "From", + "_full_desc": "Full description", + "_price_plans": "Price plans", + "_select_price": "Select price plan", + "_chars": "Characteristics", + "_select_char": "Select characteristics", + "_terms": "Terms and conditions", + "_accept_terms": "I have read and I accept the terms and conditions.", + "_next": "Next", + "_back": "Back", + "_checkout": "Add to cart", + "_no_terms": "This product has no terms and conditions.", + "_no_chars": "This product has no characteristics.", + "_no_prices": "This product has no price plans.", + "_owner": "Owner", + "_price_plan": "Price Plan" + }, + "CATEGORIES_FILTER": { + "_remove_badge": "Remove badge", + "_applied_filters": "Applied filters:" + }, + "CART_DRAWER": { + "_title": "Shopping Cart", + "_close": "Close menu", + "_empty": "Empty cart", + "_purchase": "Proceed to purchase", + "_subtotal": "Subtotal" + }, + "FOOTER": { + "_about": "About", + "_privacy": "Privacy Policy", + "_cookies": "Cookies Policy", + "_licensing": "Terms of Use", + "_contact": "Contact", + "_rights": "All Rights Reserved", + "aboutTitle": "About DOME", + "governance": "Governance", + "partners": "Partners", + "marketplaceTitle": "Marketplace", + "browse": "Browse", + "legalTitle": "Legal", + "resourcesTitle": "Resources", + "documentation": "Documentation", + "support": "Support", + "faqs": "FAQs", + "follow-us": "Follow us", + "forCustomers": "For Customers", + "forProviders": "For Providers" + }, + "HEADER": { + "_marketplace": "DOME MARKETPLACE", + "_open_menu": "Open main menu", + "_home": "Home", + "_catalogs": "Providers catalogues", + "_search": "Search", + "_browse": "Browse", + "_cloud": "Cloud Services", + "_smart_ports": "Smart ports", + "_smart_cities": "Smart cities", + "_see_all": "See all", + "_services": "Services", + "_contact": "Contact", + "_profile": "Profile", + "_offerings": "My Offerings", + "_cart": "My shopping cart", + "_sign_out": "Sign out", + "_inventory": "My inventory", + "_support": "Support", + "_knowledge": "Knowledge Base", + "_ticketing": "Ticketing System", + "_change_session": "Change session", + "_admin": "Administration", + "_publish": "Publish your offerings", + "_register_here": "Register here", + "_register": "Register", + "_guidelines": "Guidelines to register", + "_guideline_publish": "Guideline to publish", + "_onboarding": "Onboarding", + "_registration": "Registration form", + "_about": "About", + "_verify": "Publish your offering", + "_info": "Info", + "_orders": "Product Orders", + "_blog": "Blog" + }, + "PRODUCT_DETAILS": { + "_back": "Back", + "_details": "Details", + "_information": "Information", + "_chars": "Characteristics", + "_attach": "Attachments", + "_agreements": "Agreements", + "_relationships": "Relationships", + "_no_chars": "No characteristics included", + "_no_attach": "No attachments included", + "_license": "License", + "_no_license": "No license included", + "_sla": "SLA", + "_no_sla": "No SLA included", + "_no_relatioships": "No relationships included", + "_service_spec": "This offering includes the following service specifications", + "_resource_spec": "This offering includes the following resource specifications", + "_self_attestation": "You can find the self attestation document here.", + "_product_pricing": "Product pricing", + "_product_chars": "Product characteristics", + "_product_att": "Product attachments", + "_product_rels": "Product relationships" + }, + "CATALOGS": { + "_all_catalogs": "All catalogues", + "_no_desc": "No description included", + "_no_cat": "No categories included", + "_view_details": "View details", + "_desc": "Description", + "_choose": "Choose between our Catalogues" + }, + "SHOPPING_CART": { + "_buy": "Buy", + "_back": "Back", + "_billingAddress": "Billing Address", + "_confirm": "Confirm and pay", + "_checkout": "Checkout", + "_note": "Add notes", + "_choose_bill": "Choose a billing address", + "_cart": "Cart", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_billing_check": "You should first create at least a billing address in order to checkout an order.", + "_click_here": "Click here", + "_free": "Free", + "_free_desc": "The offering is free", + "_loading_purchase": "Loading purchase", + "_contact": "Contact", + "_update": "Update", + "_contact_person": "Contact Person", + "_order_note": "Order Note", + "_your_order": "Your Order", + "_subtotal": "Sub Total", + "_tax": "Tax", + "_calculated": "Calculated at checkout", + "_fee": "Service fee*" + }, + "PROFILE": { + "_general": "General", + "_bill": "Billing addresses", + "_revenue": "Revenue sharing", + "_payment_dashboard": "Payment dashboard", + "_orders": "Orders", + "_order_list": "My order list", + "_update": "Update", + "_account": "Account", + "_username": "Username", + "_token": "Access token", + "_email": "Email", + "_profile": "Profile", + "_name": "Name", + "_lastname": "Lastname", + "_treatment": "Treatment", + "_marital_status": "Marital status", + "_gender": "Gender", + "_nacionality": "Nacionality", + "_birthdate": "Birthdate", + "_date": "Date", + "_country": "Country", + "_city": "City", + "_mybills": "My billing addresses", + "_user_id": "User id", + "_no_orders": "No orders found", + "_organization": "Organization", + "_medium_type": "Medium type", + "_preferred": "Preferred", + "_no_mediums": "There's no contact medium information.", + "_contact_info": "Contact information", + "_info": "Info", + "_actions": "Actions", + "_add_new_contact": "Add a new contact medium", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_edit": "Edit contact medium", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_save": "Save", + "_success": "Updated successfully", + "_website": "Website", + "_add_logo": "Add organization logo", + "_add_logo_url": "Add organization logo using a URL", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_order_details": "Order details:", + "_billing_address": "Billing address", + "_price": "Price", + "_img": "Img", + "_custom": "Custom", + "_free": "Free" + }, + "PRODUCT_INVENTORY": { + "_loading": "Loading...", + "_products": "Products", + "_services": "Services", + "_resources": "Resources", + "_orders": "Orders", + "_not_found": "No products found.", + "_no_resources": "No resources found.", + "_no_services": "No services found.", + "_search_criteria": "Search criteria", + "_prod_details": "Product details", + "_description": "Description", + "_pricing": "Product pricing", + "_chars": "Product characteristics", + "_res_details": "Resource details", + "_res_chars": "Resource characteristics", + "_serv_details": "Service details", + "_serv_chars": "Service characteristics", + "_start_date": "Start operating date", + "_order_id": "Order Id", + "_state": "State", + "_status": "Status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_inventory": "Inventory", + "_feasibility": "Feasibility Checked", + "_designed": "Designed", + "_reserved": "Reserved", + "_inactive": "Inactive", + "_active": "Active", + "_terminated": "Terminated", + "_id": "Id", + "_standby": "Standby", + "_alarm": "Alarm", + "_available": "Available", + "_suspended": "Suspended", + "_unknown": "Unknown", + "_created": "Created", + "_unsubscribe": "Unsubscribe", + "_close_modal": "Close modal", + "_cancel_sub": "Are you sure you want to cancel this subscription?", + "_cancel": "No, cancel", + "_yes_sure": "Yes, I'm sure", + "_renew_sub": "Are you sure you want to renew this subscription?" + }, + "BILLING": { + "_title": "Title", + "_email": "Email", + "_postalAddress": "Postal address", + "_phone": "Phone number", + "_phone_type": "Phone Type", + "_action": "Actions", + "_country": "Country", + "_city": "City", + "_state": "State / Province", + "_post_code": "ZIP / Postal Code", + "_street": "Street Address", + "_add": "Add billing address", + "_edit": "Edit billing address", + "_update": "Update billing address", + "_delete": "Yes, delete", + "_confirm_delete": "Are you sure about deleting the following billing address?", + "_cancel": "No, cancel", + "_invalid_phone": "Phone number is invalid!", + "_invalid_email": "Email is invalid!", + "_no_billing": "There's no billing information.", + "_close_modal": "Close modal", + "_mandatory": "This field is mandatory.", + "_too_long": "This field is too long. Must be less than 250 characters.", + "_too_long_larger": "This field is too long. Must be less than 1000 characters.", + "_too_long_email": "Email is too long. Must be less than 320 characters.", + "_email_format": "Email must follow the following format: example@example.example" + }, + "INVOICES": { + "_invoice_id": "Invoice ID", + "_date": "Date", + "_billno": "Invoice Num.", + "_not_found": "No invoices found.", + "_description": "Description", + "_tax_included_amount": "Amount (tax included)", + "_tax_excluded_amount": "Amount (without tax)", + "_tax": "Tax", + "_billed": "Billed", + "_pending": "Pending", + "_status": "Status", + "_name": "Name", + "_type": "Type", + "_product": "Product ID", + "_actions": "Actions", + "_as_customer": "As Customer", + "_as_provider": "As Provider", + "_invoice_details": "Invoice details:", + "_applied_billing_rates": "Applied Billing Rates", + "_no_billing_rates": "No billing rates found", + "_period_coverage": "Period Coverage" + }, + "CREATE_CATALOG": { + "_back": "Back", + "_create": "Create catalogue", + "_status": "Status", + "_new": "New catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish" + }, + "UPDATE_CATALOG": { + "_back": "Back", + "_create": "Update catalogue", + "_status": "Status", + "_update": "Update catalogue", + "_steps": "Steps", + "_general": "General", + "_general_info": "Catalogue's general information", + "_actions": "Actions", + "_type": "Type", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_summary": "Catalogue's summary", + "_finish": "Finish", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete" + }, + "CREATE_PROD_SPEC": { + "_back": "Back", + "_create": "Create product specification", + "_new": "New product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include alphabetical characters (A-Z, a-z), numbers (0-9) and a limited set of symbols, such as underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_file_check": "You need to upload a file before proceeding.", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" + }, + "UPDATE_PROD_SPEC": { + "_back": "Back", + "_update": "Update product specification", + "_new": "Update product", + "_steps": "Steps", + "_general": "General", + "_general_info": "Product's general information", + "_bundle": "Bundle", + "_bundle_info": "Product's blundle information", + "_comp_profile": "Compliance profile", + "_comp_profile_info": "Product's compliance profile", + "_no_comp_profile": "No compliance profile included.", + "_chars": "Characteristics", + "_chars_info": "Product's characteristics", + "_resource": "Resource Specs", + "_resource_info": "Product's resource specifications", + "_service": "Service Specs", + "_service_info": "Product's service specifications", + "_attachments": "Attachments", + "_attachments_info": "Product's attachments", + "_relationships": "Relationships", + "_relationships_info": "Product's relationships", + "_product_name": "Name", + "_product_version": "Version", + "_product_brand": "Brand", + "_id_number": "ID Number", + "_product_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled product?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_default_value": "Default value", + "_default_false": "Disabled by default", + "_default_true": "Enabled by default", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_update_prod": "Update product", + "_verify": "Verify Certificates", + "_how_to_verify": "How to get a valid VC of the certificate?", + "_verify_text": "To get a valid VC of the certificate you can access the ", + "_dome_trust": "DOME Trust Service Provider for Certification", + "_file_res": "File restrictions", + "_restrictions": "File size must be under 3MB. File names can only include characters (a-z), (A-Z), (0-9), and a limited set of symbols including underscores (_), hyphens (-), and periods (.). ", + "_file_name": "Image URL should end by png, jpg, jpeg, gif, bmp or webp format.", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_self_attestation": "Self Attestation:", + "_close_modal": "Close modal", + "_cancel": "Cancel", + "_upload": "Upload" + }, + "CREATE_RES_SPEC": { + "_back": "Back", + "_create": "Create resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_res": "Create resource" + }, + "UPDATE_RES_SPEC": { + "_back": "Back", + "_status": "Status", + "_update": "Update resource specification", + "_new": "New resource", + "_steps": "Steps", + "_general": "General", + "_general_info": "Resource's general information", + "_chars": "Characteristics", + "_chars_info": "Resource's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_res": "Update resource" + }, + "CREATE_SERV_SPEC": { + "_back": "Back", + "_create": "Create service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_create_serv": "Create service" + }, + "UPDATE_SERV_SPEC": { + "_back": "Back", + "_status": "Status", + "_update": "Update service specification", + "_new": "New service", + "_steps": "Steps", + "_general": "General", + "_general_info": "Service's general information", + "_chars": "Characteristics", + "_chars_info": "Service's characteristics", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_type": "Type", + "_save_char": "Save characteristic", + "_preview": "Preview", + "_show_preview": "Show preview", + "_name": "Name", + "_description": "Description", + "_next": "Next", + "_finish": "Finish", + "_update_serv": "Update service" + }, + "CREATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_new": "New product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Finish", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings.", + "_previous": "Previous step", + "_next_step": "Next step", + "_no_subcats": "There's no subcategories" + }, + "UPDATE_OFFER": { + "_back": "Back", + "_create": "Create product offer", + "_update": "Update product offer", + "_steps": "Steps", + "_general": "General", + "_general_info": "Offer's general information", + "_bundle": "Bundle", + "_bundle_info": "Offer's bundle information", + "_prod_spec": "Product Spec", + "_prod_spec_info": "Offer's related product", + "_catalog": "Catalogue", + "_catalog_info": "Offer's related catalogue", + "_category": "Category", + "_category_info": "Category info", + "_license": "License", + "_license_info": "Offer's license", + "_sla": "SLA", + "_sla_info": "Offer's SLA", + "_price_plans": "Price plans", + "_price_plans_info": "Offer's pricing", + "_name": "Name", + "_description": "Description", + "_version": "Version", + "_preview": "Preview", + "_show_preview": "Show preview", + "_next": "Next", + "_is_bundled": "Bundled offer?", + "_status": "Status", + "_type": "Type", + "_last_update": "Last update", + "_select": "Select", + "_simple": "Simple", + "_load_more": "Load more", + "_add_comp": "3rd party certifications", + "_value": "Value", + "_actions": "Actions", + "_no_chars": "No characteristics included.", + "_values": "Values", + "_new_char": "Create new characteristic", + "_add_values": "Add values", + "_unit": "Unit", + "_from": "From", + "_to": "To", + "_save_char": "Save characteristic", + "_make_optional": "Make this characteristic optional", + "_resource_specs": "Resource specifications", + "_service_specs": "Service specifications", + "_add_prod_img": "Add product image", + "_drop_files": "Drop one file to attatch or", + "_select_files": "select a file.", + "_add_prod_img_url": "Add product image using URL", + "_add_att": "Attachments", + "_no_att": "No attachments included.", + "_new_att": "Add new attachment", + "_save_att": "Save attachment", + "_no_relatioships": "No relationships included.", + "_relationship_type": "Relationship type", + "_add_relationship": "Add new relationship", + "_save_relationship": "Save relationship", + "_profile_pic": "Profile picture", + "_finish": "Update product", + "_summary": "Product's summary", + "_create_prod": "Create product", + "_choose_license": "Choose a license", + "_standard_license": "Standard open data licenses", + "_treatment": "Treatment", + "_exclusivity": "Exclusivity", + "_sector": "Sector", + "_region": "Region", + "_timeframe": "Timeframe", + "_purpose": "Purpose", + "_transferability": "Transferability", + "_no_sla": "No SLA included", + "_threshold": "Threshold", + "_new_metric": "Define new metric", + "_add_metric": "Add metric", + "_no_prices": "No price plans included.", + "_is_free_price": "Is this offer open?", + "_new_price": "New price plan", + "_create_price": "Create price plan", + "_choose_type": "Choose a type", + "_enter_value": "Enter a value", + "_add_condition": "Add a condition", + "_choose_period": "Choose a pricing period", + "_price_alter": "Price alteration", + "_create_license": "Create license", + "_price": "Price", + "_save_price": "Save price", + "_duplicated_price_name": "Price name already exists.", + "_save_license": "Save license", + "_no_prod_spec": "Bundled offers can't include product specifications.", + "_cancel": "Cancel", + "_no_prods": "There's no product specifications.", + "_no_prods_to_proceed": "Please add at least one product specification to proceed to the next step", + "_no_cats": "There's no catalogues.", + "_no_categories": "There's no categories", + "_no_offer": "There's no offerings." + }, + "OFFERINGS": { + "_catalogs": "Catalogues", + "_offers": "Offer", + "_no_offer": "No offerings included.", + "_no_offerings": "There's no product offerings.", + "_no_prod": "There's no product specifications.", + "_no_prod_rel": "There's no product specifications, so you can't create relationships.", + "_no_cat": "There's no catalogues.", + "_no_categories": "There's no categories.", + "_no_res": "There's no resource specifications", + "_no_serv": "There's no service specifications", + "_prod_spec": "Product Specifications", + "_serv_spec": "Service Specifications", + "_res_spec": "Resource Specifications", + "_search": "Search", + "_add_new_serv": "Add new service", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_add_new_res": "Add new resource", + "_add_new_prod": "Add new product specification", + "_add_new_prod_short": "Add new product spec", + "_filter_type": "Filter by type", + "_all": "All", + "_simple": "Simple", + "_bundle": "Bundle", + "_type": "Type", + "_prod_offer": "Product offer", + "_add_new_offer": "Add new product offer", + "_add_new_catalog": "Add new catalogue", + "_filter_role": "Filter by role", + "_seller": "Seller", + "_owner": "Owner", + "_customer": "Customer", + "_role": "Role", + "_choose": "Choose between our Catalogues", + "_offerings": "Offerings", + "_my_offerings": "My offerings" + }, + "ADMIN": { + "_admin": "Administration", + "_filter_state": "Filter by status", + "_state": "State", + "_order_by": "Order by...", + "_last_update": "Last update", + "_name": "Name", + "_active": "Active", + "_launched": "Launched", + "_retired": "Retired", + "_obsolete": "Obsolete", + "_status": "Status", + "_actions": "Actions", + "_load_more": "Load more", + "_categories": "Categories", + "_verification": "Verification", + "_productId": "Product ID", + "_vc": "Verifiable Credential", + "_add": "Add", + "_revenue": "Revenue sharing", + "_email": "Email", + "_smtpServer": "SMTP Server", + "_smtpPort": "SMTP Port", + "_emailUser": "Email User", + "_emailPass": "Email Password" + }, + "CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included" + }, + "CREATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_create": "Create category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Create category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" + }, + "UPDATE_CATEGORIES": { + "_categories": "Categories", + "_add_new_cat": "Add new category", + "_no_cat": "No categories included", + "_back": "Back", + "_update": "Update category", + "_new": "New category", + "_steps": "Steps", + "_general": "General", + "_general_info": "Category's general information", + "_finish": "Update category", + "_summary": "Category's summary", + "_name": "Name", + "_description": "Description", + "_preview": "Preview", + "_show_preview": "Show preview", + "_status": "Status", + "_next": "Next", + "_choose_parent": "Choose a parent category", + "_parent": "Parent category" + }, + "ORGANIZATION": { + "_details": "Organization details", + "_description": "Description" + }, + "PRODUCT_ORDERS": { + "_orders": "Product Orders", + "_invoices": "Invoices", + "_no_orders": "No orders found.", + "_search_criteria": "Search criteria", + "_order_id": "Order Id", + "_status": "Choose a status", + "_priority": "Priority", + "_desc": "Description", + "_price": "Price", + "_bill": "Billing address", + "_filter_state": "Filter by status", + "_acknowledged": "Acknowledged", + "_in_progress": "In Progress", + "_partial": "Partial", + "_completed": "Completed", + "_failed": "Failed", + "_pending": "Pending", + "_cancelled": "Cancelled", + "_unchecked": "Unchecked", + "_as_customer": "As Customer", + "_as_provider": "As Provider", + "_date": "Date", + "_actions": "Actions", + "_order_details": "Order details:", + "_customer_info": "Customer Info:", + "_name": "Name", + "_billing_address": "Billing address", + "_email": "Contact Email", + "_show_customer_details": "Show Customer Details", + "_img": "Img", + "_price_plan": "Price Plan", + "_state": "State" + }, "FORMS": { "PROCUREMENT_MODE": { - "_title": "Select Procurement Mode", - "_manual": "Manual", - "_automatic": "Automatic", - "_payment_automatic": "Payment Automatic - Procurement Manual" - }, + "_title": "Select Procurement Mode", + "_manual": "Manual", + "_automatic": "Automatic", + "_payment_automatic": "Payment Automatic - Procurement Manual" + }, "PRICE_PLANS": { "_price_plans": "Price Plans", "_add": "Add new Price Plans", diff --git a/src/environments/environment.development.ts b/src/environments/environment.development.ts index df980778..aff71d00 100644 --- a/src/environments/environment.development.ts +++ b/src/environments/environment.development.ts @@ -1,97 +1,97 @@ export const environment = { - //BASE_URL: 'https://dome-marketplace.org', - BASE_URL: 'http://proxy.docker:8004', - isProduction: false, - PAYMENT_URL: '/revenue', - //API_PORT: 8004, - //API_PORT: 443, - LEGACY_PREFIX: '', - PRODUCT_CATALOG: '/catalog', - SERVICE: '/service', - RESOURCE: '/resource', - PRODUCT_SPEC: '/productSpecification', - SERVICE_SPEC: '/serviceSpecification', - RESOURCE_SPEC: '/resourceSpecification', - ACCOUNT: '/account', - SHOPPING_CART: '/shoppingCart', - INVENTORY: '/inventory', - PRODUCT_ORDER: '/ordering', - BILLING: '/billing', - CHARGING: '/charging', + BASE_URL: 'https://dome-marketplace.org', + //BASE_URL: 'http://proxy.docker:8004', + isProduction: false, + PAYMENT_URL: '/revenue', + //API_PORT: 8004, + //API_PORT: 443, + LEGACY_PREFIX: '', + PRODUCT_CATALOG: '/catalog', + SERVICE: '/service', + RESOURCE: '/resource', + PRODUCT_SPEC: '/productSpecification', + SERVICE_SPEC: '/serviceSpecification', + RESOURCE_SPEC: '/resourceSpecification', + ACCOUNT: '/account', + SHOPPING_CART: '/shoppingCart', + INVENTORY: '/inventory', + PRODUCT_ORDER: '/ordering', + BILLING: '/billing', + CHARGING: '/charging', - searchOrganizationsEndpoint: '/search-bck/api/searchOrganizations', - //searchOrganizationsEndpoint: 'org-api/searchOrganizations', + searchOrganizationsEndpoint: '/search-bck/api/searchOrganizations', + //searchOrganizationsEndpoint: 'org-api/searchOrganizations', - CUSTOMER_BILLING: '/customerBill', - CONSUMER_BILLING_URL: 'http://localhost:8640', - INVOICE_LIMIT: 100, + CUSTOMER_BILLING: '/customerBill', + CONSUMER_BILLING_URL: 'http://localhost:8640', + INVOICE_LIMIT: 100, - //API PAGINATION - PRODUCT_LIMIT: 6, - CATALOG_LIMIT: 8, - INVENTORY_LIMIT: 6, - INVENTORY_RES_LIMIT: 6, - INVENTORY_SERV_LIMIT: 6, - PROD_SPEC_LIMIT: 6, - SERV_SPEC_LIMIT: 6, - RES_SPEC_LIMIT: 6, - USAGE_SPEC_LIMIT: 6, - ORDER_LIMIT: 1000, - CATEGORY_LIMIT: 100, - TAX_RATE: 20, - CHAT_API: 'https://eng-gpt.dome-marketplace-sbx.org/predict', - SIOP_INFO: { - enabled: false, - isRedirection: false, - pollPath: "", - pollCertPath: "", - clientID: "", - callbackURL: "", - verifierHost: "", - verifierQRCodePath: "", - requestUri: "" - }, - MATOMO_TRACKER_URL: "", - MATOMO_SITE_ID: "", - TICKETING_SYSTEM_URL: "", - KNOWLEDGE_BASE_URL: "https://knowledgebase.dome-marketplace.org/", - KB_ONBOARDING_GUIDELINES_URL: "https://knowledgebase.dome-marketplace-prd.org/books/company-onboarding-process-guide-for-cloud-service-providers-csp", - KB_GUIDELNES_URL: "https://knowledgebase.dome-marketplace-prd.org/books/managing-orders-products-and-subscriptions", - REGISTRATION_FORM_URL: "https://onboarding.dome-marketplace.eu/", - SEARCH_ENABLED: true, - PURCHASE_ENABLED: true, - DOME_TRUST_LINK: "", - DOME_ABOUT_LINK: '', - DOME_REGISTER_LINK: '', - DOME_PUBLISH_LINK: '', - DOME_LINKEDIN: 'https://www.linkedin.com/company/dome-marketplace/', - DOME_YOUTUBE: 'https://www.youtube.com/channel/UC8UiL59S0JiaYYr14w5eOzA', - DOME_X: 'https://x.com/DomeMarketplace', - BUNDLE_ENABLED: false, - DFT_CATALOG_ID: '', - MAX_FILE_SIZE: 3145728, - providerThemeName: 'default', - quoteApi: 'http://localhost:8080/quoteManagement', - quoteEndpoints: { - createQuote: '/createQuote', - listAllQuotes: '/listAllQuotes', - getQuoteById: '/quoteById', - getQuotesByUser: '/quoteByUser', - updateQuoteStatus: '/updateQuoteStatus', - updateQuoteDate: '/updateQuoteDate', - addNoteToQuote: '/addNoteToQuote', - addAttachmentToQuote: '/addAttachmentToQuote', - deleteQuote: '/quote' - }, - QUOTES_ENABLED: true, - TENDER_ENABLED: true, - analytics: '', - feedbackCampaign: false, - feedbackCampaignExpiration: 0, - SELLER_ROLE: 'Seller', - BUYER_ROLE: 'Buyer', - ADMIN_ROLE: 'Admin', - ORG_ADMIN_ROLE: 'orgAdmin', - CERTIFIER_ROLE: 'certifier', - LEAR_URL: '' + //API PAGINATION + PRODUCT_LIMIT: 6, + CATALOG_LIMIT: 8, + INVENTORY_LIMIT: 6, + INVENTORY_RES_LIMIT: 6, + INVENTORY_SERV_LIMIT: 6, + PROD_SPEC_LIMIT: 6, + SERV_SPEC_LIMIT: 6, + RES_SPEC_LIMIT: 6, + USAGE_SPEC_LIMIT: 6, + ORDER_LIMIT: 1000, + CATEGORY_LIMIT: 100, + TAX_RATE: 20, + CHAT_API: 'https://eng-gpt.dome-marketplace-sbx.org/predict', + SIOP_INFO: { + enabled: false, + isRedirection: false, + pollPath: "", + pollCertPath: "", + clientID: "", + callbackURL: "", + verifierHost: "", + verifierQRCodePath: "", + requestUri: "" + }, + MATOMO_TRACKER_URL: "", + MATOMO_SITE_ID: "", + TICKETING_SYSTEM_URL: "", + KNOWLEDGE_BASE_URL: "https://knowledgebase.dome-marketplace.org/", + KB_ONBOARDING_GUIDELINES_URL: "https://knowledgebase.dome-marketplace-prd.org/books/company-onboarding-process-guide-for-cloud-service-providers-csp", + KB_GUIDELNES_URL: "https://knowledgebase.dome-marketplace-prd.org/books/managing-orders-products-and-subscriptions", + REGISTRATION_FORM_URL: "https://onboarding.dome-marketplace.eu/", + SEARCH_ENABLED: true, + PURCHASE_ENABLED: true, + DOME_TRUST_LINK: "", + DOME_ABOUT_LINK: '', + DOME_REGISTER_LINK: '', + DOME_PUBLISH_LINK: '', + DOME_LINKEDIN: 'https://www.linkedin.com/company/dome-marketplace/', + DOME_YOUTUBE: 'https://www.youtube.com/channel/UC8UiL59S0JiaYYr14w5eOzA', + DOME_X: 'https://x.com/DomeMarketplace', + BUNDLE_ENABLED: false, + DFT_CATALOG_ID: '', + MAX_FILE_SIZE: 3145728, + providerThemeName: 'default', + quoteApi: 'http://localhost:8080/quoteManagement', + quoteEndpoints: { + createQuote: '/createQuote', + listAllQuotes: '/listAllQuotes', + getQuoteById: '/quoteById', + getQuotesByUser: '/quoteByUser', + updateQuoteStatus: '/updateQuoteStatus', + updateQuoteDate: '/updateQuoteDate', + addNoteToQuote: '/addNoteToQuote', + addAttachmentToQuote: '/addAttachmentToQuote', + deleteQuote: '/quote' + }, + QUOTES_ENABLED: true, + TENDER_ENABLED: true, + analytics: '', + feedbackCampaign: false, + feedbackCampaignExpiration: 0, + SELLER_ROLE: 'Seller', + BUYER_ROLE: 'Buyer', + ADMIN_ROLE: 'Admin', + ORG_ADMIN_ROLE: 'orgAdmin', + CERTIFIER_ROLE: 'certifier', + LEAR_URL: '' }; From 139f5e02c8875e07a0f68fd8f4ca3eb4fbc37705 Mon Sep 17 00:00:00 2001 From: Luigi Borriello Date: Mon, 23 Feb 2026 11:07:03 +0100 Subject: [PATCH 02/11] New footer --- src/app/shared/footer/footer.component.css | 42 ------ src/app/shared/footer/footer.component.html | 146 ++++++++++---------- 2 files changed, 76 insertions(+), 112 deletions(-) diff --git a/src/app/shared/footer/footer.component.css b/src/app/shared/footer/footer.component.css index 75aa325b..8b137891 100644 --- a/src/app/shared/footer/footer.component.css +++ b/src/app/shared/footer/footer.component.css @@ -1,43 +1 @@ -:host { - --dome-dashboard-max-w: 1240px; -} -footer { - background: #0c1129; - color: #d0d3e2; - padding: 3rem 0; - margin-top: 1rem; -} - -.footer-cols { - max-width: var(--dome-dashboard-max-w); - margin: 0 auto; - padding: 0 1.5rem; - display: grid; - gap: 2rem; -} - -footer h3 { - color: white; - font-size: 1rem; - margin-bottom: 0.7rem; -} - -footer a { - color: #d0d3e2; - text-decoration: none; - font-size: 0.9rem; - display: block; - margin-bottom: 0.3rem; -} - -footer a:hover, -footer fa-icon:hover { - color: #fff; -} - -@media (max-width: 700px) { - .footer-cols { - grid-template-columns: 1fr 1fr; - } -} diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index 7dc4816c..841bbd21 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -1,78 +1,84 @@ -
- - -
- -
@@ -295,13 +295,13 @@

{{ "dashboard.roadmap.beyond.title" | translate }}

{{ "dashboard.finalCta.title" | translate }}

diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html index 8209a8b4..ecbabfdd 100644 --- a/src/app/shared/header/header.component.html +++ b/src/app/shared/header/header.component.html @@ -2,33 +2,43 @@ @if (showCart) { -
- -
+
+ +
} diff --git a/src/app/shared/header/header.component.ts b/src/app/shared/header/header.component.ts index 56b1c9ab..140fdb2b 100644 --- a/src/app/shared/header/header.component.ts +++ b/src/app/shared/header/header.component.ts @@ -1,64 +1,62 @@ -import {AfterViewInit, Component, ElementRef, OnInit, ViewChild, ChangeDetectorRef, HostListener, DoCheck, OnDestroy} from '@angular/core'; +import { AfterViewInit, ChangeDetectorRef, Component, DoCheck, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; import { - faCartShopping, - faHandHoldingBox, faAddressCard, + faAnglesLeft, faArrowRightFromBracket, faBoxesStacked, - faClipboardCheck, faBrain, - faAnglesLeft, - faUser, - faUsers, + faCartShopping, + faClipboardCheck, faCogs, + faHandHoldingBox, + faPieChart, faReceipt, faRuler, - faPieChart + faUser, + faUsers } from "@fortawesome/sharp-solid-svg-icons"; -import {LocalStorageService} from "../../services/local-storage.service"; -import { ApiServiceService } from 'src/app/services/product-service.service'; -import { LoginServiceService } from 'src/app/services/login-service.service'; -import { Router } from '@angular/router'; -import {EventMessageService} from "../../services/event-message.service"; -import { environment } from 'src/environments/environment'; -import { LoginInfo } from 'src/app/models/interfaces'; -import { Subscription, timer} from 'rxjs'; +import { TranslateService } from '@ngx-translate/core'; +import { initFlowbite } from 'flowbite'; import * as moment from 'moment'; -import { ActivatedRoute } from '@angular/router'; -import { initFlowbite, Dropdown } from 'flowbite'; +import { Subject, Subscription } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { LoginInfo } from 'src/app/models/interfaces'; +import { LoginServiceService } from 'src/app/services/login-service.service'; +import { ApiServiceService } from 'src/app/services/product-service.service'; import { QrVerifierService } from 'src/app/services/qr-verifier.service'; +import { environment } from 'src/environments/environment'; import * as uuid from 'uuid'; -import { TranslateService } from '@ngx-translate/core'; -import {ShoppingCartServiceService} from "../../services/shopping-cart-service.service"; -import {ThemeService} from "../../services/theme.service"; -import {NavLink, ThemeAuthUrlsConfig, ThemeConfig, ThemeLinkConfig} from "../../themes"; -import {Subject} from "rxjs"; -import { takeUntil } from 'rxjs/operators'; +import { EventMessageService } from "../../services/event-message.service"; +import { LocalStorageService } from "../../services/local-storage.service"; +import { ShoppingCartServiceService } from "../../services/shopping-cart-service.service"; +import { ThemeService } from "../../services/theme.service"; +import { NavLink, ThemeAuthUrlsConfig, ThemeConfig } from "../../themes"; @Component({ selector: 'bae-header', templateUrl: './header.component.html', styleUrls: ['./header.component.css'] }) -export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestroy{ +export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestroy { @ViewChild('theme_toggle_dark_icon') themeToggleDarkIcon: ElementRef; @ViewChild('theme_toggle_light_icon') themeToggleLightIcon: ElementRef; @ViewChild('navbarbutton') navbarbutton: ElementRef; constructor(themeToggleDarkIcon: ElementRef, - themeToggleLightIcon: ElementRef, - private translate: TranslateService, - private localStorage: LocalStorageService, - private api: ApiServiceService, - private loginService: LoginServiceService, - private cdr: ChangeDetectorRef, - private route: ActivatedRoute, - private eventMessage: EventMessageService, - private router: Router, - private qrVerifier: QrVerifierService, - private themeService: ThemeService, - private sc: ShoppingCartServiceService) { + themeToggleLightIcon: ElementRef, + private translate: TranslateService, + private localStorage: LocalStorageService, + private api: ApiServiceService, + private loginService: LoginServiceService, + private cdr: ChangeDetectorRef, + private route: ActivatedRoute, + private eventMessage: EventMessageService, + private router: Router, + private qrVerifier: QrVerifierService, + private themeService: ThemeService, + private sc: ShoppingCartServiceService) { this.themeToggleDarkIcon = themeToggleDarkIcon; this.themeToggleLightIcon = themeToggleLightIcon; @@ -67,22 +65,22 @@ export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestro quotesEnabled = environment.QUOTES_ENABLED; tenderEnabled = environment.TENDER_ENABLED; qrWindow: Window | null = null; - statePair:string - catalogs: any[] | undefined = []; + statePair: string + catalogs: any[] | undefined = []; langs: any[] = []; - defaultLang:any; - showCart:boolean=false; - is_logged:boolean=false; - showLogin:boolean=false; - loggedAsOrg:boolean=false; - isAdmin:boolean; - loginInfo:any; - orgs:any[]=[]; - username:string=''; - email:string=''; - usercharacters:string=''; + defaultLang: any; + showCart: boolean = false; + is_logged: boolean = false; + showLogin: boolean = false; + loggedAsOrg: boolean = false; + isAdmin: boolean; + loginInfo: any; + orgs: any[] = []; + username: string = ''; + email: string = ''; + usercharacters: string = ''; loginSubscription: Subscription = new Subscription(); - roles:string[]=[]; + roles: string[] = []; knowledge: string = environment.KNOWLEDGE_BASE_URL knowledge_onboarding: string = environment.KB_ONBOARDING_GUIDELINES_URL knowledge_guidelines: string = environment.KB_GUIDELNES_URL @@ -90,11 +88,10 @@ export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestro ticketing: string = environment.TICKETING_SYSTEM_URL analytics: string = environment.analytics domeAbout: string = environment.DOME_ABOUT_LINK - domeRegister: string = environment.DOME_REGISTER_LINK domePublish: string = environment.DOME_PUBLISH_LINK public static BASE_URL: String = environment.BASE_URL; - isNavBarOpen:boolean = false; - flagDropdownOpen:boolean=false; + isNavBarOpen: boolean = false; + flagDropdownOpen: boolean = false; cartCount: number = 0; currentTheme: ThemeConfig | null = null; @@ -108,25 +105,25 @@ export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestro certifierRole: string = environment.CERTIFIER_ROLE; ngOnDestroy(): void { - this.qrWindow?.close() - this.qrWindow=null - if (this.themeSubscription) { - this.themeSubscription.unsubscribe(); - } - this.destroy$.next(); - this.destroy$.complete(); + this.qrWindow?.close() + this.qrWindow = null + if (this.themeSubscription) { + this.themeSubscription.unsubscribe(); + } + this.destroy$.next(); + this.destroy$.complete(); } ngDoCheck(): void { - if(this.qrWindow!=null && this.qrWindow.closed){ + if (this.qrWindow != null && this.qrWindow.closed) { this.qrVerifier.stopChecking(this.qrWindow) - this.qrWindow=null + this.qrWindow = null } } @HostListener('document:click') onClick() { - if(this.showCart==true){ - this.showCart=false; + if (this.showCart == true) { + this.showCart = false; this.cdr.detectChanges(); } if (this.isNavBarOpen) { @@ -142,11 +139,11 @@ export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestro } } - async ngOnInit(){ + async ngOnInit() { this.langs = this.translate.getLangs(); let currLang = this.localStorage.getItem('current_language') - if(!currLang || currLang == null) { + if (!currLang || currLang == null) { this.defaultLang = this.translate.getDefaultLang(); } else { this.defaultLang = currLang; @@ -157,8 +154,8 @@ export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestro this.headerLinks = theme?.links?.headerLinks || []; this.themeAuthUrls = theme?.authUrls; - if(theme?.links?.headerLinks){ - // Recorremos recursivamente todos los links y actualizamos URL si tiene environmentName + if (theme?.links?.headerLinks) { + // Recorremos recursivamente todos los links y actualizamos URL si tiene environmentName const updateLinks = (links: NavLink[]) => { return links.map(link => { const updatedLink = { ...link }; @@ -185,30 +182,30 @@ export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestro let aux = this.localStorage.getObject('login_items') as LoginInfo; - if(JSON.stringify(aux) != '{}' && (((aux.expire - moment().unix())-4) > 0)) { - this.loginInfo=aux; - this.is_logged=true; - this.orgs=aux.organizations; - for(let i=0; i < aux.roles.length; i++){ - if(aux.roles[i].name == environment.ADMIN_ROLE){ - this.isAdmin=true; + if (JSON.stringify(aux) != '{}' && (((aux.expire - moment().unix()) - 4) > 0)) { + this.loginInfo = aux; + this.is_logged = true; + this.orgs = aux.organizations; + for (let i = 0; i < aux.roles.length; i++) { + if (aux.roles[i].name == environment.ADMIN_ROLE) { + this.isAdmin = true; this.cdr.detectChanges(); } } - if(aux.logged_as == aux.id){ - this.username=aux.user; - this.usercharacters=(aux.user.slice(0, 2)).toUpperCase(); - this.email=aux.email; - for(let i=0;i element.id == aux.logged_as) - this.loggedAsOrg=true; - this.username=loggedOrg.name; - this.usercharacters=(loggedOrg.name.slice(0, 2)).toUpperCase(); - this.email=loggedOrg.description; - for(let i=0;i { - if(ev.type === 'ToggleCartDrawer') { - this.showCart=false; + if (ev.type === 'ToggleCartDrawer') { + this.showCart = false; this.cdr.detectChanges(); } }) this.eventMessage.messages$.pipe(takeUntil(this.destroy$)).subscribe(ev => { - if(ev.type === 'LoginProcess') { + if (ev.type === 'LoginProcess') { let aux = this.localStorage.getObject('login_items') as LoginInfo; - if(JSON.stringify(aux) != '{}' && (((aux.expire - moment().unix())-4) > 0)) { - this.loginInfo=aux; - this.is_logged=true; + if (JSON.stringify(aux) != '{}' && (((aux.expire - moment().unix()) - 4) > 0)) { + this.loginInfo = aux; + this.is_logged = true; this.cdr.detectChanges(); - this.orgs=aux.organizations; - for(let i=0; i < aux.roles.length; i++){ - if(aux.roles[i].name == environment.ADMIN_ROLE){ - this.isAdmin=true; + this.orgs = aux.organizations; + for (let i = 0; i < aux.roles.length; i++) { + if (aux.roles[i].name == environment.ADMIN_ROLE) { + this.isAdmin = true; this.cdr.detectChanges(); } } - if(aux.logged_as == aux.id){ - this.username=aux.user; - this.usercharacters=(aux.user.slice(0, 2)).toUpperCase(); - this.email=aux.email; - for(let i=0;i element.id == aux.logged_as) - this.loggedAsOrg=true; - this.username=loggedOrg.name; - this.usercharacters=(loggedOrg.name.slice(0, 2)).toUpperCase(); - this.email=loggedOrg.description; - for(let i=0;i Date: Fri, 27 Feb 2026 12:47:19 +0100 Subject: [PATCH 06/11] Complete --- .../dashboard-whatsdome.component.css | 92 ++++++++++++++++--- .../dashboard-whatsdome.component.html | 72 +++++++-------- .../dashboard-whatsdome.component.ts | 11 ++- src/app/shared/footer/footer.component.html | 4 +- src/assets/i18n/en.json | 22 +++++ src/assets/i18n/es.json | 22 +++++ 6 files changed, 168 insertions(+), 55 deletions(-) diff --git a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.css b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.css index 831e2a36..a0938f2b 100644 --- a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.css +++ b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.css @@ -4,8 +4,6 @@ --primary-100: #b6caec; } -/* ================= BACKGROUND SHAPES ================= */ - .ellipse { position: absolute; background: var(--primary-100); @@ -13,38 +11,34 @@ transform: rotate(180deg); } -/* convertite da frame 1440x848 → percentuali */ - -.e2541 { +.effect1 { left: -7.76%; top: -1.15%; width: 47.43%; height: 85.08%; } -.e2542 { +.effect2 { left: 84.37%; top: 13.53%; width: 31.25%; height: 57.66%; } -.e2540 { +.effect3 { left: 32.6%; top: 0%; width: 34.79%; height: 63.67%; } -.e2543 { +.effect4 { left: 13.33%; top: 48.02%; width: 24.68%; height: 46.51%; } -/* ================= BLUR LAYER ================= */ - .blur-overlay { position: absolute; inset: 0; @@ -56,15 +50,21 @@ transform: rotate(180deg); } -/* ================= CONTENT ================= */ - .icon-badge { - width: 56px; - height: 56px; + width: 70px; + height: 45px; border-radius: 9999px; background: white; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08); - flex: none; + + display: flex; + align-items: center; + justify-content: center; +} + +.icon-badge fa-icon { + font-size: 22px; + color: #1f5bb5; } .feature-title { @@ -79,3 +79,65 @@ line-height: 1.5; color: #111827; } + +.dome-watermark { + position: absolute; + left: -157px; + bottom: -138px; + width: 652px; + height: auto; + opacity: 0.3; + pointer-events: none; + user-select: none; + filter: blur(0.2px); + z-index: 1; + +} + +@media (max-width: 1024px) { + .dome-watermark { + width: 340px; + left: -95px; + bottom: -120px; + opacity: 0.8; + } +} + +@media (max-width: 640px) { + .dome-watermark { + width: 260px; + left: -80px; + bottom: -95px; + opacity: 0.8; + } +} + +.hover-card { + padding: 22px 26px; + border-radius: 28px; + + transition: + background 0.35s ease, + box-shadow 0.35s ease, + transform 0.35s ease; +} + + +.hover-card:hover { + background: rgba(255, 255, 255, 0.75); + + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); + + transform: translateY(-4px); + + box-shadow: + 0 20px 40px rgba(15, 23, 42, 0.08), + 0 4px 10px rgba(15, 23, 42, 0.05); +} + +.hover-card:hover .icon-badge { + background: var(--primary-100); + transform: scale(1.05); + transition: all 0.35s ease; +} diff --git a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html index 66a22d32..c2957d00 100644 --- a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html +++ b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html @@ -1,84 +1,82 @@ - -
- -
-
-
-
-
+
+
+
+
+
+
+ +
- -
- +
-

- What is DOME
- Marketplace? + {{ "dashboard.whatsdome-section._title" | translate }}

- DOME is the European marketplace that provides a unified environment - where trust, compliance, and interoperability form the foundation of - how digital services are published, compared, and used across Europe. + {{ "dashboard.whatsdome-section._desc" | translate }}

-
- -
-
+
+
+ +

- Trusted, Sovereign Digital Ecosystem + {{ "dashboard.whatsdome-section.features.trusted.title" | translate }}

- DOME ensures services operate under EU rules for security, - data protection, and sovereignty. + {{ "dashboard.whatsdome-section.features.trusted.desc" | translate }}

-
-
+
+
+ +

- Transparency and Comparability + {{ "dashboard.whatsdome-section.features.transparency.title" | translate }}

- Consistent documentation and pricing clarity enable easy - comparison of services. + {{ "dashboard.whatsdome-section.features.transparency.desc" | translate }}

-
-
+
+
+ +

- Interoperability and Federation + {{ "dashboard.whatsdome-section.features.interoperability.title" | translate }}

- Shared standards enable seamless discovery and collaboration. + {{ "dashboard.whatsdome-section.features.interoperability.desc" | translate }}

-
-
+
+
+ +

- Fair and Open Market Access + {{ "dashboard.whatsdome-section.features.fairAccess.title" | translate }}

- Removes barriers to entry and prevents vendor lock-in. + {{ "dashboard.whatsdome-section.features.fairAccess.desc" | translate }}

diff --git a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.ts b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.ts index 490a1628..bbc2e774 100644 --- a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.ts +++ b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.ts @@ -1,4 +1,7 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; +import { faEye, faMessages, faRotate, faShieldCheck } from '@fortawesome/pro-regular-svg-icons'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'app-dashboard-whatsdome', @@ -6,5 +9,11 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; changeDetection: ChangeDetectionStrategy.OnPush, templateUrl: './dashboard-whatsdome.component.html', styleUrls: ['./dashboard-whatsdome.component.css'], + imports: [FontAwesomeModule, TranslateModule], }) -export class DashboardWhatsDome { } +export class DashboardWhatsDome { + faShieldCheck = faShieldCheck; + faEye = faEye; + faRotate = faRotate; + faMessages = faMessages; +} diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index 841bbd21..7ca7242d 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -52,11 +52,11 @@

- @if (checkLogged) { + Feedback - } + diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 0df85064..6648b530 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -2,6 +2,28 @@ "_yes": "Yes", "_no": "No", "dashboard": { + "whatsdome-section": { + "_title": "What is DOME Marketplace?", + "_desc": "DOME is the European marketplace that provides a unified environment where trust, compliance, and interoperability form the foundation of how digital services are published, compared, and used across Europe.", + "features": { + "trusted": { + "title": "Trusted, Sovereign Digital Ecosystem", + "desc": "DOME ensures services operate under EU rules for security, data protection, and sovereignty, creating a reliable environment for digital operations across Europe." + }, + "transparency": { + "title": "Transparency and Comparability", + "desc": "Consistent documentation, pricing clarity, and shared trust indicators make it easy to understand, compare, and assess digital services." + }, + "interoperability": { + "title": "Interoperability and Federation", + "desc": "DOME connects multiple marketplaces and providers through shared standards, enabling seamless discovery, integration, and cross-market collaboration." + }, + "fairAccess": { + "title": "Fair and Open Market Access", + "desc": "The ecosystem removes barriers to entry, supports SMEs, and prevents vendor lock-in, ensuring all participants can compete and grow on equal terms." + } + } + }, "nav": { "forCustomers": "For Customers", "forProviders": "For Providers", diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 0df85064..6648b530 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -2,6 +2,28 @@ "_yes": "Yes", "_no": "No", "dashboard": { + "whatsdome-section": { + "_title": "What is DOME Marketplace?", + "_desc": "DOME is the European marketplace that provides a unified environment where trust, compliance, and interoperability form the foundation of how digital services are published, compared, and used across Europe.", + "features": { + "trusted": { + "title": "Trusted, Sovereign Digital Ecosystem", + "desc": "DOME ensures services operate under EU rules for security, data protection, and sovereignty, creating a reliable environment for digital operations across Europe." + }, + "transparency": { + "title": "Transparency and Comparability", + "desc": "Consistent documentation, pricing clarity, and shared trust indicators make it easy to understand, compare, and assess digital services." + }, + "interoperability": { + "title": "Interoperability and Federation", + "desc": "DOME connects multiple marketplaces and providers through shared standards, enabling seamless discovery, integration, and cross-market collaboration." + }, + "fairAccess": { + "title": "Fair and Open Market Access", + "desc": "The ecosystem removes barriers to entry, supports SMEs, and prevents vendor lock-in, ensuring all participants can compete and grow on equal terms." + } + } + }, "nav": { "forCustomers": "For Customers", "forProviders": "For Providers", From 3cc4871865497672e411cf58ee73ec2c3155d23c Mon Sep 17 00:00:00 2001 From: Luigi Borriello Date: Tue, 3 Mar 2026 14:55:12 +0100 Subject: [PATCH 07/11] header --- src/app/app.component.html | 4 +- src/app/shared/header/header.component.css | 120 ++++-- src/app/shared/header/header.component.html | 450 ++++++++++---------- src/app/shared/header/header.component.ts | 9 + src/app/themes/dome.theme.ts | 34 +- 5 files changed, 317 insertions(+), 300 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index 25bdb714..6655747f 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,6 +1,6 @@ - + -
+
@if (providerThemeName === "DOME") { diff --git a/src/app/shared/header/header.component.css b/src/app/shared/header/header.component.css index b6b7ceec..570f071e 100644 --- a/src/app/shared/header/header.component.css +++ b/src/app/shared/header/header.component.css @@ -1,42 +1,80 @@ -/* Dropdown Button */ -.dropbtn { - background-color: #04AA6D; - color: white; - padding: 16px; - font-size: 16px; - border: none; - } - - /* The container
- needed to position the dropdown content */ - .dropdown { - position: relative; - display: inline-block; - } - - /* Dropdown Content (Hidden by Default) */ - .dropdown-content { - display: none; - position: absolute; - background-color: #f1f1f1; - min-width: 160px; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - z-index: 50; - } - - /* Links inside the dropdown */ - .dropdown-content a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; - } - - /* Change color of dropdown links on hover */ - .dropdown-content a:hover {background-color: #ddd;} - - /* Show the dropdown menu on hover */ - .dropdown:hover .dropdown-content {display: block;} - - /* Change the background color of the dropdown button when the dropdown content is shown */ - .dropdown:hover .dropbtn {background-color: #3e8e41;} +.dropdown-glass { + background: rgba(255, 255, 255, 0.92); + backdrop-filter: blur(14px); + -webkit-backdrop-filter: blur(14px); + box-shadow: + 0 18px 40px rgba(15, 23, 42, 0.14), + 0 6px 14px rgba(15, 23, 42, 0.10); + border: 1px solid rgba(15, 23, 42, 0.06); +} +.dropdown-item { + width: 100%; + display: flex; + align-items: center; + gap: 0.5rem; + + padding: 10px 12px; + border-radius: 10px; + + font-size: 14px; + font-weight: 600; + + color: #0f172a; + text-decoration: none; + background: transparent; + border: 0; + cursor: pointer; +} + +.dropdown-item:hover { + background: rgba(15, 23, 42, 0.06); +} + +.mobile-nav-item { + display: block; + padding: 12px 12px; + border-radius: 12px; + font-size: 15px; + font-weight: 600; + color: rgba(255, 255, 255, 0.92); + cursor: pointer; + text-decoration: none; +} + +.mobile-nav-item:hover { + background: rgba(255, 255, 255, 0.10); + color: #fff; +} + +.header-glass { + background: rgba(7, 18, 40, 0.55); + + backdrop-filter: blur(14px) saturate(140%); + -webkit-backdrop-filter: blur(14px) saturate(140%); + + background-image: + linear-gradient(to bottom, + rgba(255, 255, 255, 0.05), + rgba(255, 255, 255, 0.02)); + + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25); +} + +.header-top { + background: #070f24; + backdrop-filter: none; + border-bottom: 1px solid transparent; + box-shadow: none; +} + +.border-color-c { + border: 2px solid #2D58A7; +} + +.border-color-c:hover { + background-color: white; + color: #2D58A7 +} diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html index ecbabfdd..21f20931 100644 --- a/src/app/shared/header/header.component.html +++ b/src/app/shared/header/header.component.html @@ -1,44 +1,42 @@ -
- - @if (showCart) { -
- + } +
+ + + + - } + + +@if (showCart) { +
+
+} diff --git a/src/app/shared/header/header.component.ts b/src/app/shared/header/header.component.ts index 140fdb2b..6be9a28f 100644 --- a/src/app/shared/header/header.component.ts +++ b/src/app/shared/header/header.component.ts @@ -33,6 +33,7 @@ import { ShoppingCartServiceService } from "../../services/shopping-cart-service import { ThemeService } from "../../services/theme.service"; import { NavLink, ThemeAuthUrlsConfig, ThemeConfig } from "../../themes"; + @Component({ selector: 'bae-header', templateUrl: './header.component.html', @@ -104,6 +105,14 @@ export class HeaderComponent implements OnInit, AfterViewInit, DoCheck, OnDestro orgAdminRole: string = environment.ORG_ADMIN_ROLE; certifierRole: string = environment.CERTIFIER_ROLE; + + scrolled = false; + + @HostListener('window:scroll') + onScroll() { + this.scrolled = window.scrollY > 10; + } + ngOnDestroy(): void { this.qrWindow?.close() this.qrWindow = null diff --git a/src/app/themes/dome.theme.ts b/src/app/themes/dome.theme.ts index 0ad80f47..ad0a020a 100644 --- a/src/app/themes/dome.theme.ts +++ b/src/app/themes/dome.theme.ts @@ -2,38 +2,30 @@ import { environment } from '../../environments/environment'; import { NavHeaderLink, NavLink, ThemeConfig } from './theme.interfaces'; const domeHeaderLinks: NavLink[] = [ + { - label: 'HEADER._verify', - id: 'verifyDropdown', // ID para el toggle de Flowbite - children: [ - { id: 'guidelines', label: 'HEADER._guidelines', url: environment.KB_ONBOARDING_GUIDELINES_URL, environmentName: 'KB_ONBOARDING_GUIDELINES_URL', isRouterLink: false }, - { id: 'registration', label: 'HEADER._registration', url: environment.REGISTRATION_FORM_URL, environmentName: 'REGISTRATION_FORM_URL', isRouterLink: false }, - { id: 'guidelinesPublish', label: 'HEADER._guideline_publish', url: environment.KB_GUIDELNES_URL, environmentName: 'KB_GUIDELNES_URL', isRouterLink: false } - ] + label: 'HEADER._forCustomers', + url: '' + }, { - label: 'HEADER._browse', - id: 'searchDropdown', // ID para el toggle de Flowbite - children: [ - { label: 'HEADER._services', url: '/search', isRouterLink: true }, - { label: 'HEADER._catalogs', url: '/catalogues', isRouterLink: true } - ] + label: 'HEADER._forProviders', + url: '' }, { - label: 'HEADER._about', - url: '/about', - isRouterLink: true + label: 'HEADER._marketplaceH', + url: '' }, + { + label: 'HEADER._resources', + url: '' + }, + { label: 'HEADER._blog', url: '/blog', isRouterLink: true }, - { - label: 'FOOTER._contact', - url: '/contact-us', - isRouterLink: true - } ]; From 1cae0aafcf4ce3015ef4555fec8b82231743d7ca Mon Sep 17 00:00:00 2001 From: Luigi Borriello Date: Sat, 7 Mar 2026 01:33:52 +0100 Subject: [PATCH 08/11] Dashboard --- .../dashboard-customers.component.css | 109 ++++ .../dashboard-customers.component.html | 69 +++ .../dashboard-customers.component.ts | 37 ++ .../dashboard-ecosystem.component.css | 101 ++++ .../dashboard-ecosystem.component.html | 90 +++ .../dashboard-ecosystem.component.ts | 32 + .../dashboard-hero.component.css | 101 ++++ .../dashboard-hero.component.html | 43 ++ .../dashboard-hero.component.ts | 10 + .../dashboard-providers.component.css | 51 ++ .../dashboard-providers.component.html | 67 +++ .../dashboard-providers.component.ts | 40 ++ .../dashboard-services.component.css | 1 + .../dashboard-services.component.html | 50 ++ .../dashboard-services.component.ts | 32 + .../dashboard-stats.component.css | 11 + .../dashboard-stats.component.html | 46 ++ .../dashboard-stats.component.ts | 18 + .../dashboard-whatsdome.component.html | 2 +- .../pages/dashboard/dashboard.component.css | 4 + .../pages/dashboard/dashboard.component.html | 283 +-------- .../pages/dashboard/dashboard.component.ts | 20 +- src/app/services/product-service.service.ts | 179 +++--- .../shared/carousel/carousel.component.html | 26 + src/app/shared/carousel/carousel.component.ts | 135 +++++ src/app/shared/header/header.component.html | 207 +++---- src/app/shared/header/header.component.ts | 565 ++++++++---------- src/app/themes/dome.theme.ts | 19 +- src/assets/i18n/en.json | 11 +- src/assets/i18n/es.json | 15 +- src/assets/images/dashboard/hero.png | Bin 0 -> 83554 bytes src/styles.css | 38 +- 32 files changed, 1593 insertions(+), 819 deletions(-) create mode 100644 src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.css create mode 100644 src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.html create mode 100644 src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.ts create mode 100644 src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.css create mode 100644 src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.html create mode 100644 src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.ts create mode 100644 src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.css create mode 100644 src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.html create mode 100644 src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.ts create mode 100644 src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.css create mode 100644 src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.html create mode 100644 src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.ts create mode 100644 src/app/pages/dashboard/dashboard-services/dashboard-services.component.css create mode 100644 src/app/pages/dashboard/dashboard-services/dashboard-services.component.html create mode 100644 src/app/pages/dashboard/dashboard-services/dashboard-services.component.ts create mode 100644 src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.css create mode 100644 src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.html create mode 100644 src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.ts create mode 100644 src/app/shared/carousel/carousel.component.html create mode 100644 src/app/shared/carousel/carousel.component.ts create mode 100644 src/assets/images/dashboard/hero.png diff --git a/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.css b/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.css new file mode 100644 index 00000000..1d95d248 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.css @@ -0,0 +1,109 @@ +.dc-wrap { + position: relative; + width: 100%; + isolation: isolate; +} + +.dc-bg { + position: absolute; + inset: 0; + z-index: 0; + overflow: hidden; + pointer-events: none; + background: #f3f6ff; +} + +.dc-content { + position: relative; + z-index: 1; +} + +/* ellissi visibili (radial gradient), blur leggero */ +.dc-ellipse { + position: absolute; + width: 720px; + height: 720px; + border-radius: 9999px; + transform: rotate(180deg); + opacity: 1; + + background: radial-gradient(circle at 35% 35%, + rgba(182, 202, 236, 0.95) 0%, + rgba(182, 202, 236, 0.65) 38%, + rgba(182, 202, 236, 0) 72%); + + filter: blur(10px); +} + +/* posizioni (più simili al render figma) */ +.dc-e1 { + left: -220px; + top: -190px; +} + +.dc-e2 { + right: -260px; + top: 60px; +} + +.dc-e3 { + left: 50%; + top: -240px; + transform: translateX(-50%) rotate(180deg); +} + +.dc-e4 { + left: 140px; + bottom: -360px; +} + +/* overlay figma: gradiente + blur, ma NON esagerato */ +.dc-blur { + position: absolute; + inset: 0; + + background: linear-gradient(226.59deg, + rgba(255, 242, 242, 0.18) 25.7%, + rgba(255, 250, 250, 0.28) 94.73%); + + backdrop-filter: blur(90px); + -webkit-backdrop-filter: blur(90px); + + transform: rotate(180deg); +} + +/* responsive */ +@media (max-width: 1024px) { + .dc-ellipse { + width: 620px; + height: 620px; + filter: blur(9px); + } + + .dc-e2 { + right: -300px; + } +} + +@media (max-width: 640px) { + .dc-ellipse { + width: 520px; + height: 520px; + filter: blur(8px); + } + + .dc-e1 { + left: -280px; + top: -230px; + } + + .dc-e2 { + right: -320px; + top: 10px; + } + + .dc-e4 { + left: 40px; + bottom: -380px; + } +} diff --git a/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.html b/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.html new file mode 100644 index 00000000..696f3c9b --- /dev/null +++ b/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.html @@ -0,0 +1,69 @@ +
+ + +
+

+ For customers +

+ +
+
+ @if (featureCards.length) { +
+ @for (card of featureCards; track $index) { +
+
+
+
+ + +
+ } +
+ } +
+ +
+
+

+ How DOME works +

+ + @if (steps.length) { +
+ @for (step of steps; track $index) { +
+
{{ step.num }}
+ +
+
{{ step.title }}
+
+ {{ step.desc }} +
+
+
+ } +
+ } + +
+ +
+
+
+
+
+
diff --git a/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.ts b/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.ts new file mode 100644 index 00000000..26152e8d --- /dev/null +++ b/src/app/pages/dashboard/dashboard-customers/dashboard-customers.component.ts @@ -0,0 +1,37 @@ +import { Component } from "@angular/core"; +import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; +import { faCircleCheck, faEye } from "@fortawesome/free-regular-svg-icons"; +import { faBoltLightning, faDiagramProject } from "@fortawesome/free-solid-svg-icons"; + +type FeatureCard = { html: string; icon: any }; +type Step = { num: string; title: string; desc: string }; + +@Component({ + selector: "app-dashboard-customers", + standalone: true, + imports: [FontAwesomeModule], + templateUrl: "./dashboard-customers.component.html", + styleUrl: './dashboard-customers.component.css' +}) +export class DashboardCustomersComponent { + featureCards: FeatureCard[] = [ + { html: "Access to
verified digital
services", icon: faCircleCheck }, + { html: "Transparent,
guided service
discovery", icon: faEye }, + { html: "Powerful
procurement
tools", icon: faBoltLightning }, + { html: "Unified access to
a broad
ecosystem", icon: faDiagramProject }, + ]; + + steps: Step[] = [ + { num: "01", title: "Register as a customer", desc: "Create your customer profile" }, + { + num: "02", + title: "Search & compare", + desc: "Find services that fit your needs and assess sustainability with standardized documentation and trust badges.", + }, + { + num: "03", + title: "Connect & procure", + desc: "Procure directly with providers - or use DOME's tools to manage the process end-to-end.", + }, + ]; +} diff --git a/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.css b/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.css new file mode 100644 index 00000000..1eb4facf --- /dev/null +++ b/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.css @@ -0,0 +1,101 @@ +.hero-shell { + background: #070f24; + font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans"; +} + +.hero-bg { + background: + radial-gradient(900px 520px at 50% 44%, rgba(20, 140, 255, 0.14), rgba(7, 15, 36, 0) 62%), + radial-gradient(1200px 700px at 50% 40%, rgba(0, 210, 255, 0.10), rgba(7, 15, 36, 0) 68%), + linear-gradient(180deg, #070f24 0%, #07102a 40%, #060d22 100%); +} + +.hero-title { + font-weight: 800; + letter-spacing: -0.02em; + line-height: 1.05; + font-size: clamp(40px, 4.2vw, 64px); +} + +.hero-accent { + color: #23b9d8; +} + +.hero-sub { + color: rgba(255, 255, 255, 0.55); + font-size: 16px; + line-height: 1.7; +} + +.hero-btn { + height: 52px; + padding: 0 22px; + border-radius: 10px; + font-weight: 700; + font-size: 14px; + letter-spacing: 0.01em; + transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease, border-color 160ms ease; + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 260px; +} + +.hero-btn:active { + transform: translateY(1px); +} + +.hero-btn--primary { + background: #2D58A7; + color: #fff; + box-shadow: 0 18px 40px rgba(0, 0, 0, 0.28); +} + +.hero-btn--primary:hover { + background: #00ADD3; + box-shadow: 0 22px 55px rgba(0, 0, 0, 0.32); +} + +.hero-btn--ghost { + background: transparent; + border: 1px solid rgba(90, 140, 255, 0.45); + color: rgba(255, 255, 255, 0.92); + box-shadow: 0 12px 34px rgba(0, 0, 0, 0.20); + backdrop-filter: blur(6px); +} + +.hero-btn--ghost:hover { + border-color: #2D58A7; + color: #2D58A7; + background: white; +} + +.logo-ph { + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 999px; + border: 1px solid rgba(255, 255, 255, 0.14); + color: rgba(255, 255, 255, 0.60); + font-weight: 700; + letter-spacing: 0.12em; + font-size: 12px; +} + +.earth-wrapper { + position: absolute; + bottom: -2%; + left: 50%; + transform: translateX(-50%); + width: min(1600px, 140vw); + pointer-events: none; + opacity: 0.95; +} + +.earth-wrapper img { + width: 100%; + height: auto; + display: block; + filter: drop-shadow(0 0 40px rgba(120, 220, 255, 0.35)); +} diff --git a/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.html b/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.html new file mode 100644 index 00000000..0374f5d4 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.html @@ -0,0 +1,90 @@ +
+
+

+ Growing the DOME Ecosystem +

+ +

+ DOME is at an early but active stage, expanding together with customers and providers. +

+ +
+
+
Now
+
Next 6–12 Months
+
Beyond
+
+ +
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ + @if (milestones.length) { +
+ @for (milestone of milestones; track $index) { +
+
+ {{ milestone.title }} +
+ +
+ {{ milestone.desc }} +
+
+ } +
+ } +
+ +
+
+

+ Ready to find out what DOME Marketplace can + do for your business? +

+ +
+ + + +
+
+
+
+
diff --git a/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.ts b/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.ts new file mode 100644 index 00000000..f7f688fc --- /dev/null +++ b/src/app/pages/dashboard/dashboard-ecosystem/dashboard-ecosystem.component.ts @@ -0,0 +1,32 @@ +import { Component } from "@angular/core"; + +type Milestone = { + title: string; + desc: string; + active: boolean; +}; + +@Component({ + selector: "app-dashboard-ecosystem", + standalone: true, + templateUrl: "./dashboard-ecosystem.component.html", +}) +export class DashboardEcosystemComponent { + milestones: Milestone[] = [ + { + title: "DOME IS LIVE", + desc: "Initial catalogue of verified providers and services, built-in procurement tools", + active: true, + }, + { + title: "MORE SERVICES, BETTER TOOLS", + desc: "Expanded catalogue, better tools, improved verification workflows", + active: false, + }, + { + title: "FEDERATION AT SCALE", + desc: "A connected network of marketplaces, providers and customers, driving cross-border transactions through trust, sovereignty and fair access", + active: false, + }, + ]; +} diff --git a/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.css b/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.css new file mode 100644 index 00000000..1eb4facf --- /dev/null +++ b/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.css @@ -0,0 +1,101 @@ +.hero-shell { + background: #070f24; + font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans"; +} + +.hero-bg { + background: + radial-gradient(900px 520px at 50% 44%, rgba(20, 140, 255, 0.14), rgba(7, 15, 36, 0) 62%), + radial-gradient(1200px 700px at 50% 40%, rgba(0, 210, 255, 0.10), rgba(7, 15, 36, 0) 68%), + linear-gradient(180deg, #070f24 0%, #07102a 40%, #060d22 100%); +} + +.hero-title { + font-weight: 800; + letter-spacing: -0.02em; + line-height: 1.05; + font-size: clamp(40px, 4.2vw, 64px); +} + +.hero-accent { + color: #23b9d8; +} + +.hero-sub { + color: rgba(255, 255, 255, 0.55); + font-size: 16px; + line-height: 1.7; +} + +.hero-btn { + height: 52px; + padding: 0 22px; + border-radius: 10px; + font-weight: 700; + font-size: 14px; + letter-spacing: 0.01em; + transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease, border-color 160ms ease; + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 260px; +} + +.hero-btn:active { + transform: translateY(1px); +} + +.hero-btn--primary { + background: #2D58A7; + color: #fff; + box-shadow: 0 18px 40px rgba(0, 0, 0, 0.28); +} + +.hero-btn--primary:hover { + background: #00ADD3; + box-shadow: 0 22px 55px rgba(0, 0, 0, 0.32); +} + +.hero-btn--ghost { + background: transparent; + border: 1px solid rgba(90, 140, 255, 0.45); + color: rgba(255, 255, 255, 0.92); + box-shadow: 0 12px 34px rgba(0, 0, 0, 0.20); + backdrop-filter: blur(6px); +} + +.hero-btn--ghost:hover { + border-color: #2D58A7; + color: #2D58A7; + background: white; +} + +.logo-ph { + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 999px; + border: 1px solid rgba(255, 255, 255, 0.14); + color: rgba(255, 255, 255, 0.60); + font-weight: 700; + letter-spacing: 0.12em; + font-size: 12px; +} + +.earth-wrapper { + position: absolute; + bottom: -2%; + left: 50%; + transform: translateX(-50%); + width: min(1600px, 140vw); + pointer-events: none; + opacity: 0.95; +} + +.earth-wrapper img { + width: 100%; + height: auto; + display: block; + filter: drop-shadow(0 0 40px rgba(120, 220, 255, 0.35)); +} diff --git a/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.html b/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.html new file mode 100644 index 00000000..214ae9d8 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.html @@ -0,0 +1,43 @@ +
+
+ +
+

+ + The Trusted European + + Ecosystem for Cloud, + Edge & AI Services. +

+ +

+ Connecting providers and customers to discover, deliver and scale sovereign digital + + services across Europe. +

+ +
+ + + +
+ + +
+ +
+ +
+
diff --git a/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.ts b/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.ts new file mode 100644 index 00000000..b2f8f257 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-hero/dashboard-hero.component.ts @@ -0,0 +1,10 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +@Component({ + selector: 'app-dashboard-hero', + standalone: true, + templateUrl: './dashboard-hero.component.html', + styleUrl: './dashboard-hero.component.css', + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DashboardHeroComponent { } diff --git a/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.css b/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.css new file mode 100644 index 00000000..e0a6a8d6 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.css @@ -0,0 +1,51 @@ +.dp-wrap { + position: relative; + width: 100%; + overflow: hidden; + isolation: isolate; + background: #071226; +} + +.dp-wrap::before { + content: ""; + position: absolute; + inset: -220px; + z-index: 0; + background: + radial-gradient(circle at 18% 28%, rgba(90, 140, 255, 0.55) 0%, rgba(90, 140, 255, 0) 56%), + radial-gradient(circle at 78% 22%, rgba(80, 130, 255, 0.42) 0%, rgba(80, 130, 255, 0) 60%), + radial-gradient(circle at 55% 95%, rgba(30, 220, 255, 0.20) 0%, rgba(30, 220, 255, 0) 62%); + filter: blur(120px); + opacity: 0.9; +} + +.dp-wrap::after { + content: ""; + position: absolute; + inset: 0; + z-index: 1; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.06) 0%, rgba(255, 255, 255, 0.02) 42%, rgba(0, 0, 0, 0.22) 100%); +} + +.dp-wrap>div { + position: relative; + z-index: 2; +} + +.dp-card { + background: rgba(6, 14, 32, 0.82); + border: 1px solid rgba(255, 255, 255, 0.07); + box-shadow: 0 22px 60px rgba(0, 0, 0, 0.45); +} + +.dp-big { + background: rgba(8, 18, 38, 0.62); + border: 1px solid rgba(255, 255, 255, 0.10); + box-shadow: 0 26px 70px rgba(0, 0, 0, 0.45); + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); +} + +.dp-icon { + color: rgba(255, 255, 255, 0.10); +} diff --git a/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.html b/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.html new file mode 100644 index 00000000..db8706d0 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.html @@ -0,0 +1,67 @@ +
+
+

+ For providers +

+ +
+
+ @if (featureCards.length) { +
+ @for (card of featureCards; track $index) { +
+
+
+
+
+ + +
+ } +
+ } +
+ +
+
+
+

+ How DOME works +

+ + @if (steps.length) { +
+ @for (step of steps; track $index) { +
+
+ {{ step.num }} +
+ +
+
+ {{ step.title }} +
+
+ {{ step.desc }} +
+
+
+ } +
+ } + +
+ +
+
+
+
+
+ +
+
diff --git a/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.ts b/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.ts new file mode 100644 index 00000000..feb97787 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-providers/dashboard-providers.component.ts @@ -0,0 +1,40 @@ +import { Component } from "@angular/core"; +import { FontAwesomeModule } from "@fortawesome/angular-fontawesome"; +import { faEarthEurope, faHandshake, faLayerGroup, faScrewdriverWrench } from "@fortawesome/free-solid-svg-icons"; + +type FeatureCard = { html: string; icon: any }; +type Step = { num: string; title: string; desc: string }; + +@Component({ + selector: "app-dashboard-providers", + standalone: true, + imports: [FontAwesomeModule], + templateUrl: "./dashboard-providers.component.html", + styleUrl: "./dashboard-providers.component.css", +}) +export class DashboardProvidersComponent { + featureCards: FeatureCard[] = [ + { html: "Reach a pan-
European
market", icon: faEarthEurope }, + { html: "Strengthen trust
with customers", icon: faHandshake }, + { html: "Leverage DOME's
provider tools", icon: faScrewdriverWrench }, + { html: "Complement and
extend portfolio", icon: faLayerGroup }, + ]; + + steps: Step[] = [ + { + num: "01", + title: "Onboard your organisation", + desc: "Complete the onboarding and receive your credentials.", + }, + { + num: "02", + title: "Describe & verify your services", + desc: "Use DOME Marketplace templates to detail features, data handling and compliance", + }, + { + num: "03", + title: "Publish & reach customers", + desc: "Ready to go – Your services are available in the DOME catalogues", + }, + ]; +} diff --git a/src/app/pages/dashboard/dashboard-services/dashboard-services.component.css b/src/app/pages/dashboard/dashboard-services/dashboard-services.component.css new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-services/dashboard-services.component.css @@ -0,0 +1 @@ + diff --git a/src/app/pages/dashboard/dashboard-services/dashboard-services.component.html b/src/app/pages/dashboard/dashboard-services/dashboard-services.component.html new file mode 100644 index 00000000..d846a407 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-services/dashboard-services.component.html @@ -0,0 +1,50 @@ +
+
+ +
+
+

+ {{ "dashboard.marketplace.title" | translate }} +

+ +

+ {{ "dashboard.marketplace.subtitle" | translate }} +

+
+ + + {{ "dashboard.marketplace.browseFullCatalog" | translate }} + + +
+ + + @for (productOffering of productOfferings(); track productOffering.id) { +
+
+ +
+ +
+ +
+ +

+ {{ productOffering.name }} +

+ +

+ + + {{ "dashboard.marketplace.viewService" | translate }} + +
+
+
+ } + +
+ +
+
diff --git a/src/app/pages/dashboard/dashboard-services/dashboard-services.component.ts b/src/app/pages/dashboard/dashboard-services/dashboard-services.component.ts new file mode 100644 index 00000000..cc05b45c --- /dev/null +++ b/src/app/pages/dashboard/dashboard-services/dashboard-services.component.ts @@ -0,0 +1,32 @@ +import { ChangeDetectionStrategy, Component, input } from '@angular/core'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; +import { faArrowRight } from '@fortawesome/pro-regular-svg-icons'; +import { TranslateModule } from '@ngx-translate/core'; +import { ProductOffering } from '../../../models/product.model'; +import { CarouselComponent } from '../../../shared/carousel/carousel.component'; + +@Component({ + selector: 'app-dashboard-services', + standalone: true, + templateUrl: './dashboard-services.component.html', + styleUrl: './dashboard-services.component.css', + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [FontAwesomeModule, TranslateModule, CarouselComponent] +}) +export class DashboardServicesComponent { + faArrowRight = faArrowRight; + productOfferings = input.required(); + + getProductImage(prod: ProductOffering) { + let images: any[] = [] + if (prod?.attachment) { + let profile = prod?.attachment?.filter(item => item.name === 'Profile Picture') ?? []; + images = prod.attachment?.filter(item => item.attachmentType === 'Picture') ?? []; + if (profile.length != 0) { + images = profile; + } + } + return images.length > 0 ? images?.at(0)?.url : 'https://placehold.co/600x400/svg'; + } + +} diff --git a/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.css b/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.css new file mode 100644 index 00000000..e888c2e9 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.css @@ -0,0 +1,11 @@ +.wrapper:hover .text-custom { + font-size: 20px; + line-height: 1; + font-weight: 700; +} + +.wrapper:hover .num-custom { + font-size: 45px; + font-weight: 700; + +} diff --git a/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.html b/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.html new file mode 100644 index 00000000..3ef74aa7 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.html @@ -0,0 +1,46 @@ +
+
+ +

+ {{ 'DASHBOARD.stats.title' | translate }} +

+ +

+ {{ 'DASHBOARD.stats.subtitle' | translate }} +

+ +
+ +
+ +
+ {{stats().services}} +
+ +

+ {{ 'DASHBOARD.stats.services' | translate }} +

+
+ +
+ +
+ {{stats().providers}} +
+ +

+ {{ 'DASHBOARD.stats.providers' | translate }} +

+
+ +
+
+
diff --git a/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.ts b/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.ts new file mode 100644 index 00000000..0af60622 --- /dev/null +++ b/src/app/pages/dashboard/dashboard-stats/dashboard-stats.component.ts @@ -0,0 +1,18 @@ +import { ChangeDetectionStrategy, Component, input } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; +import { IDashboardStats } from '../dashboard.component'; + +@Component({ + selector: 'app-dashboard-stats', + standalone: true, + templateUrl: './dashboard-stats.component.html', + styleUrl: './dashboard-stats.component.css', + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [TranslateModule] +}) +export class DashboardStatsComponent { + stats = input.required(); + + constructor() { } + +} diff --git a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html index c2957d00..6623a855 100644 --- a/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html +++ b/src/app/pages/dashboard/dashboard-whatsdome/dashboard-whatsdome.component.html @@ -1,4 +1,4 @@ -
+
diff --git a/src/app/pages/dashboard/dashboard.component.css b/src/app/pages/dashboard/dashboard.component.css index a47192e6..2927dc0a 100644 --- a/src/app/pages/dashboard/dashboard.component.css +++ b/src/app/pages/dashboard/dashboard.component.css @@ -535,3 +535,7 @@ .description-wrapper { height: 10rem; } + +.c-color { + color: #324153 !important; +} diff --git a/src/app/pages/dashboard/dashboard.component.html b/src/app/pages/dashboard/dashboard.component.html index bde71d19..8b643339 100644 --- a/src/app/pages/dashboard/dashboard.component.html +++ b/src/app/pages/dashboard/dashboard.component.html @@ -1,286 +1,23 @@ @if (providerThemeName === 'DOME') {
-
-
-
-
{{ "dashboard.hero.eyebrow" | translate }}
+ -

- {{ "dashboard.hero.title" | translate }} -

- -

- {{ "dashboard.hero.subtitle" | translate }} -

- - - -

- - {{ "dashboard.hero.browseAll" | translate }} - -

-
- - -
-
+ @if(stats) { + + } -
-
-
-

{{ "dashboard.marketplace.title" | translate }}

-

{{ "dashboard.marketplace.subtitle" | translate }}

-
- -
- -
- -
- @for (productOffering of productOfferings; track productOffering.id) { -
-

{{ productOffering.name }}

-
-

-
- -
- @for ( - category of productOffering.category - | slice: 0 : MAX_CATEGORIES_PER_PRODUCT_OFFERING; - track category.id - ) { - {{ category.name }} - } -
- - - {{ "dashboard.marketplace.viewService" | translate }} - -
- } -
- -

- - {{ "dashboard.marketplace.browseFullCatalog" | translate }} - -

-
-
- -
-
-
-
-

{{ "dashboard.customers.title" | translate }}

- -
-

- {{ "dashboard.customers.whyTitle" | translate }} -

- -
-
-

{{ "dashboard.customers.cards.c1.title" | translate }}

-

{{ "dashboard.customers.cards.c1.text" | translate }}

-
- -
-

{{ "dashboard.customers.cards.c2.title" | translate }}

-

{{ "dashboard.customers.cards.c2.text" | translate }}

-
- -
-

{{ "dashboard.customers.cards.c3.title" | translate }}

-

{{ "dashboard.customers.cards.c3.text" | translate }}

-
- -
-

{{ "dashboard.customers.cards.c4.title" | translate }}

-

{{ "dashboard.customers.cards.c4.text" | translate }}

-
-
-
- -
-

- {{ "dashboard.customers.howTitle" | translate }} -

- -
    -
  • - {{ "dashboard.customers.how.s1Title" | translate }}
    - {{ "dashboard.customers.how.s1Text" | translate }} -
  • -
  • - {{ "dashboard.customers.how.s2Title" | translate }}
    - {{ "dashboard.customers.how.s2Text" | translate }} -
  • -
  • - {{ "dashboard.customers.how.s3Title" | translate }}
    - {{ "dashboard.customers.how.s3Text" | translate }} -
  • -
- -

- - {{ "dashboard.customers.startJourney" | translate }} - -

-
-
- -
-

{{ "dashboard.providers.title" | translate }}

- -
-

- {{ "dashboard.providers.whyTitle" | translate }} -

- -
-
-

{{ "dashboard.providers.cards.c1.title" | translate }}

-

{{ "dashboard.providers.cards.c1.text" | translate }}

-
- -
-

{{ "dashboard.providers.cards.c2.title" | translate }}

-

{{ "dashboard.providers.cards.c2.text" | translate }}

-
- -
-

{{ "dashboard.providers.cards.c3.title" | translate }}

-

{{ "dashboard.providers.cards.c3.text" | translate }}

-
- -
-

{{ "dashboard.providers.cards.c4.title" | translate }}

-

{{ "dashboard.providers.cards.c4.text" | translate }}

-
-
-
- -
-

- {{ "dashboard.providers.howTitle" | translate }} -

- -
    -
  • - {{ "dashboard.providers.how.s1Title" | translate }}
    - {{ "dashboard.providers.how.s1Text" | translate }} -
  • -
  • - {{ "dashboard.providers.how.s2Title" | translate }}
    - {{ "dashboard.providers.how.s2Text" | translate }} -
  • -
  • - {{ "dashboard.providers.how.s3Title" | translate }}
    - {{ "dashboard.providers.how.s3Text" | translate }} -
  • -
- -

- - {{ "dashboard.providers.startJourney" | translate }} - -

-
-
-
-
-
- -
-
-
-

{{ "dashboard.roadmap.title" | translate }}

-

{{ "dashboard.roadmap.subtitle" | translate }}

-
- -
-
-
- {{ "dashboard.roadmap.now.label" | translate }} -
-

{{ "dashboard.roadmap.now.title" | translate }}

-

{{ "dashboard.roadmap.now.text" | translate }}

-
- -
-
- {{ "dashboard.roadmap.next.label" | translate }} -
-

{{ "dashboard.roadmap.next.title" | translate }}

-

{{ "dashboard.roadmap.next.text" | translate }}

-
- -
-
- {{ "dashboard.roadmap.beyond.label" | translate }} -
-

{{ "dashboard.roadmap.beyond.title" | translate }}

-

{{ "dashboard.roadmap.beyond.text" | translate }}

-
-
-
-
- -
-

{{ "dashboard.finalCta.title" | translate }}

+ @if(productOfferings) { + + } - -
+ - +
} @else {
diff --git a/src/app/pages/dashboard/dashboard.component.ts b/src/app/pages/dashboard/dashboard.component.ts index f2202095..b1462c9e 100644 --- a/src/app/pages/dashboard/dashboard.component.ts +++ b/src/app/pages/dashboard/dashboard.component.ts @@ -1,4 +1,4 @@ -import { NgClass, SlicePipe } from '@angular/common'; +import { NgClass } from '@angular/common'; import { ChangeDetectorRef, Component, OnDestroy, OnInit, SecurityContext } from '@angular/core'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { DomSanitizer } from '@angular/platform-browser'; @@ -19,9 +19,15 @@ import { ThemeService } from 'src/app/services/theme.service'; import { EuropeTrademarkComponent } from 'src/app/shared/europe-trademark/europe-trademark.component'; import { ThemeConfig } from 'src/app/themes'; import { environment } from 'src/environments/environment'; +import { DashboardCustomersComponent } from './dashboard-customers/dashboard-customers.component'; +import { DashboardEcosystemComponent } from './dashboard-ecosystem/dashboard-ecosystem.component'; +import { DashboardHeroComponent } from './dashboard-hero/dashboard-hero.component'; +import { DashboardProvidersComponent } from './dashboard-providers/dashboard-providers.component'; +import { DashboardServicesComponent } from './dashboard-services/dashboard-services.component'; +import { DashboardStatsComponent } from './dashboard-stats/dashboard-stats.component'; import { DashboardWhatsDome } from './dashboard-whatsdome/dashboard-whatsdome.component'; -interface Stats { +export interface IDashboardStats { services: number; providers: number; } @@ -31,7 +37,7 @@ interface Stats { templateUrl: './dashboard.component.html', styleUrl: './dashboard.component.css', standalone: true, - imports: [TranslateModule, SlicePipe, EuropeTrademarkComponent, ReactiveFormsModule, FeaturedComponent, NgClass, DashboardWhatsDome], + imports: [TranslateModule, EuropeTrademarkComponent, ReactiveFormsModule, FeaturedComponent, NgClass, DashboardWhatsDome, DashboardHeroComponent, DashboardStatsComponent, DashboardServicesComponent, DashboardCustomersComponent, DashboardProvidersComponent, DashboardEcosystemComponent], }) export class DashboardComponent implements OnInit, OnDestroy { private unSub = new Subject(); @@ -55,7 +61,7 @@ export class DashboardComponent implements OnInit, OnDestroy { currentIndexPub = 0; delay = 2000; - stats?: Stats; + stats?: IDashboardStats; constructor( private productService: ApiServiceService, @@ -164,7 +170,7 @@ export class DashboardComponent implements OnInit, OnDestroy { ), map((items) => { const result = new Set(); - const max = Math.min(3, items.length); + const max = Math.min(15, items.length); while (result.size < max) { result.add(Math.floor(Math.random() * items.length)); @@ -175,7 +181,9 @@ export class DashboardComponent implements OnInit, OnDestroy { takeUntil(this.unSub), ) .subscribe((picked) => { - this.productOfferings = picked; + this.productService.getProductsDetails(picked).then((data) => { + this.productOfferings = data as ProductOffering[]; + }) }); } diff --git a/src/app/services/product-service.service.ts b/src/app/services/product-service.service.ts index 96f3b8a9..185d9d0e 100644 --- a/src/app/services/product-service.service.ts +++ b/src/app/services/product-service.service.ts @@ -1,14 +1,13 @@ -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import {catchError, lastValueFrom, map, Observable, of} from 'rxjs'; -import { Category, LoginInfo } from '../models/interfaces'; +import { jwtDecode } from "jwt-decode"; +import { catchError, lastValueFrom, Observable, of } from 'rxjs'; import { environment } from 'src/environments/environment'; -import {components} from "../models/product-catalog"; -type ProductOffering = components["schemas"]["ProductOffering"]; -import {LocalStorageService} from "./local-storage.service"; -import * as moment from 'moment'; +import { Category } from '../models/interfaces'; +import { components } from "../models/product-catalog"; import { ProductOffering as ProductOfferingModel } from '../models/product.model'; -import { jwtDecode } from "jwt-decode"; +import { LocalStorageService } from "./local-storage.service"; +type ProductOffering = components["schemas"]["ProductOffering"]; @Injectable({ providedIn: 'root' @@ -17,27 +16,27 @@ export class ApiServiceService { public static BASE_URL: String = environment.BASE_URL; public static API_PRODUCT: String = environment.PRODUCT_CATALOG; public static PRODUCT_LIMIT: number = environment.PRODUCT_LIMIT; - public static CATALOG_LIMIT: number= environment.CATALOG_LIMIT; + public static CATALOG_LIMIT: number = environment.CATALOG_LIMIT; public static CATEGORY_LIMIT: number = environment.CATEGORY_LIMIT; - constructor(private http: HttpClient,private localStorage: LocalStorageService) { } + constructor(private http: HttpClient, private localStorage: LocalStorageService) { } getAllProducts(): Observable { - const fakeLimit = 999; - let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOffering?lifecycleStatus=Launched&limit=${fakeLimit}`; + const productsLimit = 100; + let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOffering?lifecycleStatus=Launched&limit=${productsLimit}`; return this.http.get(url); } - getProducts(page:any,keywords:any) { + getProducts(page: any, keywords: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOffering?limit=${ApiServiceService.PRODUCT_LIMIT}&offset=${page}&lifecycleStatus=Launched`; - if(keywords!=undefined){ - url=url+'&keyword='+keywords; + if (keywords != undefined) { + url = url + '&keyword=' + keywords; } return lastValueFrom(this.http.get(url)); } - async getProductsDetails(offers:any[]){ + async getProductsDetails(offers: any[]) { let normalized: any[] = []; if (Array.isArray(offers)) { @@ -45,7 +44,7 @@ export class ApiServiceService { } else if (offers && typeof offers === 'object') { normalized = [offers]; // wrap single object into array } - return await Promise.all(normalized.map(async (offer:any): Promise => { + return await Promise.all(normalized.map(async (offer: any): Promise => { try { // Getting specs and prices in parallel const [spec, prodPrices] = await Promise.all([ @@ -96,10 +95,10 @@ export class ApiServiceService { })); } - getProductsByCategory(ids:Category[],page:any,keywords:any) { - let id_str=''; - for(let i = 0; i < ids.length; i++){ - if(i == 0){ + getProductsByCategory(ids: Category[], page: any, keywords: any) { + let id_str = ''; + for (let i = 0; i < ids.length; i++) { + if (i == 0) { id_str = 'category.id=' + ids[i].id } else { id_str = id_str + ',' + ids[i].id @@ -116,25 +115,25 @@ export class ApiServiceService { } else { url = `${baseUrl}?${query}` } - if(keywords!=undefined){ - url=url+'&keyword='+keywords; + if (keywords != undefined) { + url = url + '&keyword=' + keywords; } return lastValueFrom(this.http.get(url)); } - getProductsByCatalog(catalogId:any,page:any){ + getProductsByCatalog(catalogId: any, page: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog/${catalogId}/productOffering?lifecycleStatus=Launched&limit=${ApiServiceService.PRODUCT_LIMIT}&offset=${page}` return lastValueFrom(this.http.get(url)); } - getProductsByCategoryAndCatalog(ids:Category[],catalogId:any,page:any) { - let id_str=''; - for(let i=0; i(url)); } - getProductById(id:any) { + getProductById(id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOffering/${id}`; return lastValueFrom(this.http.get(url)); } - getProductOfferByOwner(page:any, status:any[], partyId:any, sort:any, isBundle:any) { + getProductOfferByOwner(page: any, status: any[], partyId: any, sort: any, isBundle: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOffering?limit=${ApiServiceService.PRODUCT_LIMIT}&offset=${page}&relatedParty.id=${partyId}`; - if(sort!=undefined){ - url=url+'&sort='+sort + if (sort != undefined) { + url = url + '&sort=' + sort } - if(isBundle!=undefined){ - url=url+'&isBundle='+isBundle + if (isBundle != undefined) { + url = url + '&isBundle=' + isBundle } - let lifeStatus='' - if(status.length>0){ - for(let i=0; i < status.length; i++){ - if(i==status.length-1){ - lifeStatus=lifeStatus+status[i] + let lifeStatus = '' + if (status.length > 0) { + for (let i = 0; i < status.length; i++) { + if (i == status.length - 1) { + lifeStatus = lifeStatus + status[i] } else { - lifeStatus=lifeStatus+status[i]+',' + lifeStatus = lifeStatus + status[i] + ',' } } - url=url+'&lifecycleStatus='+lifeStatus; + url = url + '&lifecycleStatus=' + lifeStatus; } return lastValueFrom(this.http.get(url)); } - getProductSpecification(id:any) { + getProductSpecification(id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productSpecification/${id}`; return lastValueFrom(this.http.get(url)); } - getProductPrice(id:any) { + getProductPrice(id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOfferingPrice/${id}` return lastValueFrom(this.http.get(url)); @@ -197,18 +196,18 @@ export class ApiServiceService { ); } - getCategories(status:any[]){ + getCategories(status: any[]) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/category?limit=${ApiServiceService.CATEGORY_LIMIT}`; - let lifeStatus='' - if(status.length>0){ - for(let i=0; i < status.length; i++){ - if(i==status.length-1){ - lifeStatus=lifeStatus+status[i] + let lifeStatus = '' + if (status.length > 0) { + for (let i = 0; i < status.length; i++) { + if (i == status.length - 1) { + lifeStatus = lifeStatus + status[i] } else { - lifeStatus=lifeStatus+status[i]+',' + lifeStatus = lifeStatus + status[i] + ',' } } - url=url+'&lifecycleStatus='+lifeStatus; + url = url + '&lifecycleStatus=' + lifeStatus; } return lastValueFrom( @@ -226,7 +225,7 @@ export class ApiServiceService { if (environment.DFT_CATALOG_ID && environment.DFT_CATALOG_ID !== '') { // Return the default catalog categories const catalog = await this.getCatalog(environment.DFT_CATALOG_ID); - if(catalog.category) { + if (catalog.category) { categories = await Promise.all(catalog.category.map(async (category: any) => { return this.getCategoryById(category.id) })); @@ -239,33 +238,33 @@ export class ApiServiceService { return categories; } - getCategoryById(id:any) { + getCategoryById(id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/category/${id}`; return lastValueFrom(this.http.get(url)); } - getCategoriesByParentId(id:any){ + getCategoriesByParentId(id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/category?parentId=${id}`; return lastValueFrom(this.http.get(url)); } - postCategory(category:any){ + postCategory(category: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/category`; return this.http.post(url, category); } - updateCategory(category:any,id:any){ + updateCategory(category: any, id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/category/${id}`; return this.http.patch(url, category); } - getCatalogs(page:any,filter:any): Promise { + getCatalogs(page: any, filter: any): Promise { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog?limit=${ApiServiceService.CATALOG_LIMIT}&offset=${page}&lifecycleStatus=Launched`; - if(filter!=undefined){ + if (filter != undefined) { url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog?limit=${ApiServiceService.CATALOG_LIMIT}&offset=${page}&lifecycleStatus=Launched&body=${filter}`; } console.log('getcatalogs') @@ -274,98 +273,98 @@ export class ApiServiceService { return lastValueFrom(this.http.get(url)); } - getCatalogsByUser(page:any,filter:any,status:any[],partyId:any) { + getCatalogsByUser(page: any, filter: any, status: any[], partyId: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog?limit=${ApiServiceService.CATALOG_LIMIT}&offset=${page}&relatedParty.id=${partyId}`; - let lifeStatus='' - if(status) - if(status.length>0){ - for(let i=0; i < status.length; i++){ - if(i==status.length-1){ - lifeStatus=lifeStatus+status[i] - } else { - lifeStatus=lifeStatus+status[i]+',' + let lifeStatus = '' + if (status) + if (status.length > 0) { + for (let i = 0; i < status.length; i++) { + if (i == status.length - 1) { + lifeStatus = lifeStatus + status[i] + } else { + lifeStatus = lifeStatus + status[i] + ',' + } } + url = url + '&lifecycleStatus=' + lifeStatus; } - url=url+'&lifecycleStatus='+lifeStatus; - } - if(filter!=undefined){ - url = url+`&body=${filter}`; + if (filter != undefined) { + url = url + `&body=${filter}`; } return lastValueFrom(this.http.get(url)); } - getCatalog(id:any){ + getCatalog(id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog/${id}`; return lastValueFrom(this.http.get(url)); } - postCatalog(catalog:any){ + postCatalog(catalog: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog`; return this.http.post(url, catalog); } - updateCatalog(catalog:any,id:any){ + updateCatalog(catalog: any, id: any) { let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog/${id}`; return this.http.patch(url, catalog); } - getServiceSpec(id:any){ + getServiceSpec(id: any) { let url = `${ApiServiceService.BASE_URL}/service/serviceSpecification/${id}`; return lastValueFrom(this.http.get(url)); } - getResourceSpec(id:any){ + getResourceSpec(id: any) { let url = `${ApiServiceService.BASE_URL}/resource/resourceSpecification/${id}`; return lastValueFrom(this.http.get(url)); } - postOfferingPrice(price:any){ + postOfferingPrice(price: any) { //POST - El item va en el body de la petición let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOfferingPrice`; return this.http.post(url, price); } - updateOfferingPrice(price:any,id:any){ + updateOfferingPrice(price: any, id: any) { //POST - El item va en el body de la petición let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOfferingPrice/${id}`; return this.http.patch(url, price); } - getOfferingPrice(id:any){ + getOfferingPrice(id: any) { //POST - El item va en el body de la petición let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOfferingPrice/${id}`; return lastValueFrom(this.http.get(url)); } - postProductOffering(prod:any,catalogId:any){ + postProductOffering(prod: any, catalogId: any) { //POST - El item va en el body de la petición let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/catalog/${catalogId}/productOffering`; - if(!catalogId){ + if (!catalogId) { url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOffering`; - } + } return this.http.post(url, prod); } - updateProductOffering(prod:any,id:any){ + updateProductOffering(prod: any, id: any) { //POST - El item va en el body de la petición let url = `${ApiServiceService.BASE_URL}${ApiServiceService.API_PRODUCT}/productOffering/${id}`; return this.http.patch(url, prod); } - postSLA(sla:any){ + postSLA(sla: any) { //POST - El item va en el body de la petición let url = `${ApiServiceService.BASE_URL}/SLAManagement/sla`; return this.http.post(url, sla); } - getSLA(id:any){ + getSLA(id: any) { //POST - El item va en el body de la petición let url = `${ApiServiceService.BASE_URL}/SLAManagement/sla/${id}`; return lastValueFrom(this.http.get(url)); @@ -374,8 +373,8 @@ export class ApiServiceService { getComplianceLevel(prodSpec: any) { let level = 'NL'; - if(prodSpec.productSpecCharacteristic != undefined) { - let vcProf = prodSpec.productSpecCharacteristic.find(((p:any) => { + if (prodSpec.productSpecCharacteristic != undefined) { + let vcProf = prodSpec.productSpecCharacteristic.find(((p: any) => { return p.name === `Compliance:VC` })); @@ -386,7 +385,7 @@ export class ApiServiceService { if ('verifiableCredential' in decoded) { credential = decoded.verifiableCredential; - } else if('vc' in decoded) { + } else if ('vc' in decoded) { credential = decoded.vc; } diff --git a/src/app/shared/carousel/carousel.component.html b/src/app/shared/carousel/carousel.component.html new file mode 100644 index 00000000..dbfdbbbe --- /dev/null +++ b/src/app/shared/carousel/carousel.component.html @@ -0,0 +1,26 @@ +
+ + + +
+
+ +
+
+ + + +
+ +
+ @for (i of [].constructor(pages); track $index) { + + } +
diff --git a/src/app/shared/carousel/carousel.component.ts b/src/app/shared/carousel/carousel.component.ts new file mode 100644 index 00000000..26f55109 --- /dev/null +++ b/src/app/shared/carousel/carousel.component.ts @@ -0,0 +1,135 @@ +import { Component, Input } from '@angular/core'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; +import { faChevronLeft, faChevronRight } from '@fortawesome/pro-solid-svg-icons'; + +/** + * Generic carousel component. + * + * This component provides the structural and behavioral logic for a horizontal carousel. + * It does NOT define the content of the slides. Instead, the slide content is provided + * by the parent component using Angular content projection (`ng-content`). + * + * The carousel works by: + * 1. Rendering a horizontal flex container (the "track"). + * 2. Moving the track using `translateX` when the index changes. + * 3. Showing a fixed number of visible items (`visible`). + * 4. Allowing navigation through arrows or dots. + * + * The parent component is responsible for: + * - Passing the `items` array (used only to calculate the carousel bounds). + * - Rendering each slide via `@for` inside the `` tag. + * - Setting the width of each slide (usually `100 / visible`). + * + * Example usage: + * + * + * + * @for (product of products; track product.id) { + *
+ * + *
+ * } + * + *
+ * + * Important: + * The carousel itself does not know anything about the structure of the items. + * It only controls scrolling and pagination. + */ + +@Component({ + selector: 'app-carousel', + standalone: true, + templateUrl: './carousel.component.html', + imports: [FontAwesomeModule] +}) +export class CarouselComponent { + /** + * Array of items rendered inside the carousel. + * + * The carousel does not directly render these items. + * The array is used only to calculate: + * - how many slides exist + * - the maximum scroll index + * - the number of pagination dots + */ + @Input({ required: true }) items!: T[]; + + /** + * Number of elements visible at the same time. + * + * Example: + * visible = 3 → three cards visible in the viewport + */ + @Input({ required: true }) visible: number; + + /** + * Current scroll index. + * + * This represents the first visible element in the viewport. + * Example: + * index = 0 → show items 0,1,2 + * index = 1 → show items 1,2,3 + */ + index = 0; + + faChevronRight = faChevronRight; + faChevronLeft = faChevronLeft + + /** + * Maximum scroll position. + * + * Example: + * items = 10 + * visible = 3 + * + * maxIndex = 7 + * + * This prevents the carousel from scrolling past the last element. + */ + get maxIndex(): number { + return Math.max(0, this.items.length - this.visible); + } + + /** + * Number of pagination dots. + * + * Each dot represents a possible starting position. + */ + get pages(): number { + return this.maxIndex + 1; + } + + /** + * CSS transform applied to the carousel track. + * + * The track is moved horizontally using translateX. + * The movement step corresponds to the width of a single item. + */ + get trackTransform(): string { + return `translateX(-${this.index * (100 / this.visible)}%)`; + } + + /** + * Move carousel forward by one element. + */ + next() { + this.index = Math.min(this.index + 1, this.maxIndex); + } + + /** + * Move carousel backward by one element. + */ + prev() { + this.index = Math.max(this.index - 1, 0); + } + + /** + * Jump directly to a specific index. + * Used by pagination dots. + */ + goTo(i: number) { + this.index = Math.max(0, Math.min(i, this.maxIndex)); + } + +} diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html index 21f20931..f99f7a22 100644 --- a/src/app/shared/header/header.component.html +++ b/src/app/shared/header/header.component.html @@ -3,69 +3,65 @@
- {{ currentTheme?.displayName }} Logo + }
- @if(is_logged){ - - } -
- @if(isNavBarOpen){ + @if (isNavBarOpen) {