foundation: project guide, tooling, design tokens, bilingual shell and routing contracts

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-25 17:06:51 +02:00
parent 1020ac4c68
commit 42e9f01253
89 changed files with 3615 additions and 297 deletions

View File

@@ -0,0 +1,3 @@
@if (page(); as copy) {
<app-page-placeholder [page]="copy" />
}

View File

@@ -0,0 +1,13 @@
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { ContentService } from '../../../core/content/content.service';
import { PagePlaceholder } from '../../../shared/page-placeholder/page-placeholder';
@Component({
selector: 'app-services-ai-page',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [PagePlaceholder],
templateUrl: './ai-integration.html',
})
export class ServicesAiPage {
protected readonly page = inject(ContentService).page('servicesAi');
}

View File

@@ -0,0 +1,3 @@
@if (page(); as copy) {
<app-page-placeholder [page]="copy" />
}

View File

@@ -0,0 +1,13 @@
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { ContentService } from '../../../core/content/content.service';
import { PagePlaceholder } from '../../../shared/page-placeholder/page-placeholder';
@Component({
selector: 'app-services-clusters-page',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [PagePlaceholder],
templateUrl: './clusters.html',
})
export class ServicesClustersPage {
protected readonly page = inject(ContentService).page('servicesClusters');
}

View File

@@ -0,0 +1,3 @@
@if (page(); as copy) {
<app-page-placeholder [page]="copy" />
}

View File

@@ -0,0 +1,13 @@
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { ContentService } from '../../../core/content/content.service';
import { PagePlaceholder } from '../../../shared/page-placeholder/page-placeholder';
@Component({
selector: 'app-services-hardware-network-page',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [PagePlaceholder],
templateUrl: './hardware-network.html',
})
export class ServicesHardwareNetworkPage {
protected readonly page = inject(ContentService).page('servicesHardwareNetwork');
}

View File

@@ -0,0 +1,3 @@
@if (page(); as copy) {
<app-page-placeholder [page]="copy" />
}

View File

@@ -0,0 +1,13 @@
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { ContentService } from '../../core/content/content.service';
import { PagePlaceholder } from '../../shared/page-placeholder/page-placeholder';
@Component({
selector: 'app-services-page',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [PagePlaceholder],
templateUrl: './services.html',
})
export class ServicesPage {
protected readonly page = inject(ContentService).page('services');
}

View File

@@ -0,0 +1,3 @@
@if (page(); as copy) {
<app-page-placeholder [page]="copy" />
}

View File

@@ -0,0 +1,13 @@
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { ContentService } from '../../../core/content/content.service';
import { PagePlaceholder } from '../../../shared/page-placeholder/page-placeholder';
@Component({
selector: 'app-services-software-page',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [PagePlaceholder],
templateUrl: './software.html',
})
export class ServicesSoftwarePage {
protected readonly page = inject(ContentService).page('servicesSoftware');
}