up angular-basic with lib setup

This commit is contained in:
Tykayn 2025-10-17 12:13:39 +02:00 committed by tykayn
parent b9f3e4769e
commit 4d3a3d34b8
147 changed files with 15408 additions and 16030 deletions

View file

@ -40,3 +40,5 @@ testem.log
# System files
.DS_Store
Thumbs.db
sae-lib

53
angular-basic/Dockerfile Normal file
View file

@ -0,0 +1,53 @@
# --- Build stage --- ## Forcing rebuild 1
FROM node:24 AS build
WORKDIR /app
# Copier l'application Angular et la librairie locale
# On attend un contexte de build à la racine du repo pour inclure my-workspace
COPY angular-basic /app/angular-basic
COPY my-workspace /app/my-workspace
# Définir le répertoire de travail sur l'application
WORKDIR /app/angular-basic
RUN echo "============= run setup script "
RUN ./setup.sh
# Construire le projet Angular (production)
RUN npm run build
# --- Production stage ---
FROM nginx:1.27-alpine AS production
#RUN apk add --no-cache bash nano wget
# Nettoyer les fichiers nginx par défaut
RUN rm -rf /usr/share/nginx/html/*
# Copier la sortie du build (on testera le bon chemin ensuite)
#COPY --from=build /app/dist /usr/share/nginx/html
COPY --from=build /app/angular-basic/dist/angular-basic/browser/* /usr/share/nginx/html
RUN echo "============= liste des fichiers dans nginx html"
RUN ls -l "/usr/share/nginx/html"
RUN echo "============="
# 🔹 Exposer le port par défaut d'nginx (80)
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
CMD wget -qO- http://localhost:80/ || exit 1
RUN echo "servir le front static CSC: done."
CMD ["nginx", "-g", "daemon off;"]

View file

@ -0,0 +1,3 @@
# SAE Design system
Le design system Aero utilisé pour les chatbots de la maison.

View file

@ -0,0 +1,78 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"sae-lib": {
"projectType": "library",
"root": "projects/sae-lib",
"sourceRoot": "projects/sae-lib/src",
"prefix": "sae",
"architect": {
"build": {
"builder": "@angular/build:ng-packagr",
"configurations": {
"production": {
"tsConfig": "projects/sae-lib/tsconfig.lib.prod.json"
},
"development": {
"tsConfig": "projects/sae-lib/tsconfig.lib.json"
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular/build:karma",
"options": {
"tsConfig": "projects/sae-lib/tsconfig.spec.json"
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"projects/sae-lib/**/*.ts",
"projects/sae-lib/**/*.html"
],
"eslintConfig": "projects/sae-lib/eslint.config.js"
}
},
"storybook": {
"builder": "@storybook/angular:start-storybook",
"options": {
"configDir": "projects/sae-lib/.storybook",
"browserTarget": "sae-lib:build",
"compodoc": true,
"compodocArgs": [
"-e",
"json",
"-d",
"projects/sae-lib"
],
"port": 6006
}
},
"build-storybook": {
"builder": "@storybook/angular:build-storybook",
"options": {
"configDir": "projects/sae-lib/.storybook",
"browserTarget": "sae-lib:build",
"compodoc": true,
"compodocArgs": [
"-e",
"json",
"-d",
"projects/sae-lib"
],
"outputDir": "storybook-static"
}
}
}
}
},
"cli": {
"schematicCollections": [
"angular-eslint"
]
}
}

View file

@ -0,0 +1,2 @@
# Nested package.json's are only needed for development.
**/package.json

View file

@ -0,0 +1,64 @@
# SaeLib
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.1.0.
## Code scaffolding
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
```bash
ng generate component component-name
```
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
```bash
ng generate --help
```
## Building
To build the library, run:
```bash
ng build sae-lib
```
This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
### Publishing the Library
Once the project is built, you can publish your library by following these steps:
1. Navigate to the `dist` directory:
```bash
cd dist/sae-lib
```
2. Run the `npm publish` command to publish your library to the npm registry:
```bash
npm publish
```
## Running unit tests
To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
```bash
ng test
```
## Running end-to-end tests
For end-to-end (e2e) testing, run:
```bash
ng e2e
```
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
## Additional Resources
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.

View file

@ -0,0 +1,30 @@
import * as i0 from '@angular/core';
import { Component } from '@angular/core';
class SaeLib {
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SaeLib, deps: [], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SaeLib, isStandalone: true, selector: "lib-sae-lib", ngImport: i0, template: `
<p>
sae-lib works!
</p>
`, isInline: true, styles: [""] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SaeLib, decorators: [{
type: Component,
args: [{ selector: 'lib-sae-lib', imports: [], template: `
<p>
sae-lib works!
</p>
` }]
}] });
/*
* Public API Surface of sae-lib
*/
/**
* Generated bundle index. Do not edit.
*/
export { SaeLib };
//# sourceMappingURL=sae-lib.mjs.map

View file

@ -0,0 +1 @@
{"version":3,"file":"sae-lib.mjs","sources":["../../../projects/sae-lib/src/lib/sae-lib.ts","../../../projects/sae-lib/src/public-api.ts","../../../projects/sae-lib/src/sae-lib.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-sae-lib',\n imports: [],\n template: `\n <p>\n sae-lib works!\n </p>\n `,\n styles: ``\n})\nexport class SaeLib {\n\n}\n","/*\n * Public API Surface of sae-lib\n */\n\nexport * from './lib/sae-lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAYa,MAAM,CAAA;uGAAN,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPP;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGU,MAAM,EAAA,UAAA,EAAA,CAAA;kBAVlB,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,EAAE,EAAA,QAAA,EACD;;;;AAIT,EAAA,CAAA,EAAA;;;ACTH;;AAEG;;ACFH;;AAEG;;;;"}

View file

@ -0,0 +1,8 @@
import * as i0 from '@angular/core';
declare class SaeLib {
static ɵfac: i0.ɵɵFactoryDeclaration<SaeLib, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<SaeLib, "lib-sae-lib", never, {}, {}, never, never, true, never>;
}
export { SaeLib };

View file

@ -0,0 +1,30 @@
{
"name": "sae-lib",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^20.1.0",
"@angular/core": "^20.1.0",
"@angular/forms": "^20.1.0",
"@ngrx/store": "^20.0.0",
"@ngrx/store-devtools": "^20.0.0",
"bulma": "^1.0.4",
"remixicon": "^4.6.0",
"shepherd.js": "^14.5.1"
},
"dependencies": {
"tslib": "^2.3.0"
},
"sideEffects": false,
"exports": {
".": {
"sass": "./src/styles/index.scss",
"types": "./index.d.ts",
"default": "./fesm2022/sae-lib.mjs"
},
"./package.json": {
"default": "./package.json"
}
},
"module": "fesm2022/sae-lib.mjs",
"typings": "index.d.ts"
}

View file

@ -0,0 +1,46 @@
// For more info, see https://github.com/storybookjs/eslint-plugin-storybook#configuration-flat-config-format
import storybook from "eslint-plugin-storybook";
// @ts-check
const eslint = require("@eslint/js");
const tseslint = require("typescript-eslint");
const angular = require("angular-eslint");
module.exports = tseslint.config(
{
files: ["**/*.ts"],
extends: [
eslint.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.stylistic,
...angular.configs.tsRecommended,
],
processor: angular.processInlineTemplates,
rules: {
"@angular-eslint/directive-selector": [
"error",
{
type: "attribute",
prefix: "lib",
style: "camelCase",
},
],
"@angular-eslint/component-selector": [
"error",
{
type: "element",
prefix: "lib",
style: "kebab-case",
},
],
},
},
{
files: ["**/*.html"],
extends: [
...angular.configs.templateRecommended,
...angular.configs.templateAccessibility,
],
rules: {},
}
);

14671
angular-basic/my-workspace/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,52 @@
{
"name": "my-workspace",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"lint": "ng lint"
},
"prettier": {
"overrides": [
{
"files": "*.html",
"options": {
"parser": "angular"
}
}
]
},
"private": true,
"dependencies": {
"aws-amplify": "^6.15.7"
},
"devDependencies": {
"@angular/build": "^20.1.5",
"@angular/cli": "^20.1.4",
"@angular/common": "^20.1.0",
"@angular/compiler": "^20.1.0",
"@angular/compiler-cli": "^20.1.0",
"@angular/core": "^20.1.0",
"@angular/forms": "^20.1.0",
"@angular/platform-browser": "^20.1.0",
"@angular/router": "^20.1.0",
"@types/jasmine": "~5.1.0",
"angular-eslint": "20.1.1",
"eslint": "^9.29.0",
"jasmine-core": "~5.8.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"ng-packagr": "^20.1.0",
"rxjs": "~7.8.0",
"sae-lib": "file:../my-workspace/projects/sae-lib",
"tslib": "^2.3.0",
"typescript": "~5.8.2",
"typescript-eslint": "8.34.1"
}
}

View file

@ -0,0 +1,39 @@
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
{
"compileOnSave": false,
"compilerOptions": {
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"paths": {
"sae-lib": [
"./dist/sae-lib"
]
},
"noFallthroughCasesInSwitch": true,
"skipLibCheck": true,
"isolatedModules": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "ES2022",
"module": "preserve"
},
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"typeCheckHostBindings": true,
"strictTemplates": true
},
"files": [],
"references": [
{
"path": "./projects/sae-lib/tsconfig.lib.json"
},
{
"path": "./projects/sae-lib/tsconfig.spec.json"
}
]
}

View file

@ -14,7 +14,10 @@
"@angular/forms": "^20.3.0",
"@angular/platform-browser": "^20.3.0",
"@angular/router": "^20.3.0",
"bulma": "^1.0.4",
"remixicon": "^4.7.0",
"rxjs": "~7.8.0",
"shepherd.js": "^14.5.1",
"tslib": "^2.3.0",
"zone.js": "~0.15.0"
},
@ -256,13 +259,13 @@
}
},
"node_modules/@angular-devkit/architect": {
"version": "0.2003.5",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.5.tgz",
"integrity": "sha512-KtA//ucTIdnKp1+vTYnqBallEbiZHLx3Gs7XgYm+p4VJfVjbMZHWY2vrbJoyCUp05goiv2XnDy0bKQ9VYHePWg==",
"version": "0.2003.6",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.6.tgz",
"integrity": "sha512-VtXxfJzrBZ8MQN83shXNaTUaLSOIwa+4/3LD5drxSnHuYJrz+d3FIApWAxcA9QzucsTDZwXyFxaWZN/e5XVm6g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "20.3.5",
"@angular-devkit/core": "20.3.6",
"rxjs": "7.8.2"
},
"engines": {
@ -272,9 +275,9 @@
}
},
"node_modules/@angular-devkit/core": {
"version": "20.3.5",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.5.tgz",
"integrity": "sha512-NpAP5j3q/n+SC1s0yAWKDAbc7Y8xUxlmJ5iDRJBGu6qDKM7lMnYA1tn2UEy/JnXluJ2XZqqiymrtucw7yux2xQ==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.6.tgz",
"integrity": "sha512-uLRk3865Iz/EO9Zm/mrFfdyoZinJBihXE6HVDYRYjAqsgW14LsD8pkpWy9+LYlOwcH96Ndnev+msxaTJaNXtPg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -300,13 +303,13 @@
}
},
"node_modules/@angular-devkit/schematics": {
"version": "20.3.5",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.5.tgz",
"integrity": "sha512-BDizJp7QIoCyMZmuGKoryNUH3QgFPnkEIv0gRdpLhZum4+ZN/DYWaf/jSSGnSVGK88oMrgq7420VEjYPlgJ5MA==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.6.tgz",
"integrity": "sha512-QD7QS1oR0XcZ9ZI4D1c4JjKmSn2up/ocOU2FS1mMO7S5RtAZMsPv4J3r+6ywHA2ev2sRySOQ0D8OYBcEuYX9Jw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "20.3.5",
"@angular-devkit/core": "20.3.6",
"jsonc-parser": "3.3.1",
"magic-string": "0.30.17",
"ora": "8.2.0",
@ -319,14 +322,14 @@
}
},
"node_modules/@angular/build": {
"version": "20.3.5",
"resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.5.tgz",
"integrity": "sha512-Nwwwm8U7lolkdHt75PiPkW93689SBFUN9qEQeu02sPfq2Tqyn20PZGifXkV8A/6mlWbQUjfUnGpRTVk/WhW9Eg==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.6.tgz",
"integrity": "sha512-O5qyxCCe77tu1zy9XudKxqFqi5zih0ZI8J8Anra/ZZdtTKbLMprXMGFzMYzwCqvcIzzbmOumkSJKoXbFazHaaw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.2003.5",
"@angular-devkit/architect": "0.2003.6",
"@babel/core": "7.28.3",
"@babel/helper-annotate-as-pure": "7.27.3",
"@babel/helper-split-export-declaration": "7.24.7",
@ -368,7 +371,7 @@
"@angular/platform-browser": "^20.0.0",
"@angular/platform-server": "^20.0.0",
"@angular/service-worker": "^20.0.0",
"@angular/ssr": "^20.3.5",
"@angular/ssr": "^20.3.6",
"karma": "^6.4.0",
"less": "^4.2.0",
"ng-packagr": "^20.0.0",
@ -418,19 +421,19 @@
}
},
"node_modules/@angular/cli": {
"version": "20.3.5",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.5.tgz",
"integrity": "sha512-UA843Mh5uHIWnrzKUotGmhJmvefyEizFS7X8xJEUJsX5pa1EKUB/145rKHoLHxRRpHGxFcXtvciJCksFz1lSBA==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.6.tgz",
"integrity": "sha512-1RozAub7Gcl5ES3vBYatIgoMDgujlvySwHARoYT+1VhbYvM0RTt4sn2aDhHxqG0GcyiXR5zISkzJvldaY2nQCQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/architect": "0.2003.5",
"@angular-devkit/core": "20.3.5",
"@angular-devkit/schematics": "20.3.5",
"@angular-devkit/architect": "0.2003.6",
"@angular-devkit/core": "20.3.6",
"@angular-devkit/schematics": "20.3.6",
"@inquirer/prompts": "7.8.2",
"@listr2/prompt-adapter-inquirer": "3.0.1",
"@modelcontextprotocol/sdk": "1.17.3",
"@schematics/angular": "20.3.5",
"@schematics/angular": "20.3.6",
"@yarnpkg/lockfile": "1.1.0",
"algoliasearch": "5.35.0",
"ini": "5.0.0",
@ -453,9 +456,9 @@
}
},
"node_modules/@angular/common": {
"version": "20.3.4",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.4.tgz",
"integrity": "sha512-hBQahyiHEAtc30a8hPOuIWcUL7j8189DC0sX4RiBd/wtvzH4Sd3XhguxyZAL6gHgNZEQ0nKy0uAfvWB/79GChQ==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.6.tgz",
"integrity": "sha512-+gHMuFe0wz4f+vfGZ2q+fSQSYaY7KlN7QdDrFqLnA7H2sythzhXvRbXEtp4DkPjihh9gupXg2MeLh1ROy5AfSw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -464,14 +467,14 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/core": "20.3.4",
"@angular/core": "20.3.6",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/compiler": {
"version": "20.3.4",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.4.tgz",
"integrity": "sha512-ISfEyn5ppWOP2hyZy0/IFEcQOaq5x1mXVZ2CRCxTpWyXYzavj27Ahr3+LQHPVV0uTNovlENyPAUnrzW+gLxXEw==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.6.tgz",
"integrity": "sha512-OdjXBsAsnn7qiW6fSHClwn9XwjVxhtO9+RbDc6Mf+YPCnJq0s8T78H2fc8VdJFp/Rs+tMZcwwjd9VZPm8+2XWA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -481,9 +484,9 @@
}
},
"node_modules/@angular/compiler-cli": {
"version": "20.3.4",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.4.tgz",
"integrity": "sha512-FwEv+QM9tEMXDMd2V+j82VLOjJVUrI7ENz/LJa2p/YEGVJQkT3HVca5qJj+8I+7bfPEY/d46R/cmjjqMqUcYdg==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.6.tgz",
"integrity": "sha512-VOFRBx9fBt2jW9I8qD23fwGeKxBI8JssJBAMqnFPl3k59VJWHQi6LlXZCLCBNdfwflTJdKeRvdgT51Q0k6tnFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -504,7 +507,7 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/compiler": "20.3.4",
"@angular/compiler": "20.3.6",
"typescript": ">=5.8 <6.0"
},
"peerDependenciesMeta": {
@ -514,9 +517,9 @@
}
},
"node_modules/@angular/core": {
"version": "20.3.4",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.4.tgz",
"integrity": "sha512-qLYVXcpSBmsA/9fITB1cT2y37V1Yo3ybWEwvafnbAh8izabrMV0hh+J9Ajh9bPk092T7LS8Xt9eTu0OquBXkbw==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.6.tgz",
"integrity": "sha512-sDURQWnjwE4Y750u/5qwkZEYMoI4CrKghnx4aKulxCnohR3//C78wvz6p8MtCuqYfzGkdQZDYFg8tgAz17qgPw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -525,7 +528,7 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/compiler": "20.3.4",
"@angular/compiler": "20.3.6",
"rxjs": "^6.5.3 || ^7.4.0",
"zone.js": "~0.15.0"
},
@ -539,9 +542,9 @@
}
},
"node_modules/@angular/forms": {
"version": "20.3.4",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.4.tgz",
"integrity": "sha512-gPbI2iIvVA2jhwjTg7e3j/JqCFIpRSPgzW/wi5q7LrGBm7XKHNzY5xlEVDNvdq+gC4HTius9GOIx9I0i8mjrEw==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.6.tgz",
"integrity": "sha512-tBGo/LBtCtSrClMY4DTm/3UiSjqLLMEYXS/4E0nW1mFDv7ulKnaAQB+KbfBmmTHYxlKLs+SxjKv6GoydMPSurA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -550,16 +553,16 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/common": "20.3.4",
"@angular/core": "20.3.4",
"@angular/platform-browser": "20.3.4",
"@angular/common": "20.3.6",
"@angular/core": "20.3.6",
"@angular/platform-browser": "20.3.6",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/platform-browser": {
"version": "20.3.4",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.4.tgz",
"integrity": "sha512-8eoHC+vk7scb24qjlpsirkh1Q17uFyWdhl+u92XNjvimtZRY96oDZeFEDPoexPqtKUQcCOpEPbL8P/IbpBsqYQ==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.6.tgz",
"integrity": "sha512-gFp1yd+HtRN8XdpMatRLO5w6FLIzsnF31lD2Duo4BUTCoMAMdfaNT6FtcvNdKu7ANo27Ke26fxEEE2bh6FU98A==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -568,9 +571,9 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/animations": "20.3.4",
"@angular/common": "20.3.4",
"@angular/core": "20.3.4"
"@angular/animations": "20.3.6",
"@angular/common": "20.3.6",
"@angular/core": "20.3.6"
},
"peerDependenciesMeta": {
"@angular/animations": {
@ -579,9 +582,9 @@
}
},
"node_modules/@angular/router": {
"version": "20.3.4",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.4.tgz",
"integrity": "sha512-qMVurWXVplYeHBKOWtQFtD+MfwOc0i/VJaFPGdiM5mDlfhtsg3OHcZBbSTmQW02l/4YimF5Ee3+pac279p+g1A==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.6.tgz",
"integrity": "sha512-fSAYOR9nKpH5PoBYFNdII3nAFl2maUrYiISU33CnGwb7J7Q0s09k231c/P5tVN4URi+jdADVwiBI8cIYk8SVrg==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -590,9 +593,9 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/common": "20.3.4",
"@angular/core": "20.3.4",
"@angular/platform-browser": "20.3.4",
"@angular/common": "20.3.6",
"@angular/core": "20.3.6",
"@angular/platform-browser": "20.3.6",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
@ -1341,10 +1344,35 @@
"node": ">=18"
}
},
"node_modules/@floating-ui/core": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
"integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
"license": "MIT",
"dependencies": {
"@floating-ui/utils": "^0.2.10"
}
},
"node_modules/@floating-ui/dom": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
"integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
"license": "MIT",
"dependencies": {
"@floating-ui/core": "^1.7.3",
"@floating-ui/utils": "^0.2.10"
}
},
"node_modules/@floating-ui/utils": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
"integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
"license": "MIT"
},
"node_modules/@inquirer/ansi": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz",
"integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.1.tgz",
"integrity": "sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==",
"dev": true,
"license": "MIT",
"engines": {
@ -1352,16 +1380,16 @@
}
},
"node_modules/@inquirer/checkbox": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.4.tgz",
"integrity": "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.0.tgz",
"integrity": "sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^1.0.0",
"@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
"@inquirer/ansi": "^1.0.1",
"@inquirer/core": "^10.3.0",
"@inquirer/figures": "^1.0.14",
"@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@ -1399,15 +1427,15 @@
}
},
"node_modules/@inquirer/core": {
"version": "10.2.2",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz",
"integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==",
"version": "10.3.0",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.0.tgz",
"integrity": "sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^1.0.0",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
"@inquirer/ansi": "^1.0.1",
"@inquirer/figures": "^1.0.14",
"@inquirer/type": "^3.0.9",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
"signal-exit": "^4.1.0",
@ -1427,15 +1455,15 @@
}
},
"node_modules/@inquirer/editor": {
"version": "4.2.20",
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.20.tgz",
"integrity": "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==",
"version": "4.2.21",
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.21.tgz",
"integrity": "sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.2.2",
"@inquirer/core": "^10.3.0",
"@inquirer/external-editor": "^1.0.2",
"@inquirer/type": "^3.0.8"
"@inquirer/type": "^3.0.9"
},
"engines": {
"node": ">=18"
@ -1450,14 +1478,14 @@
}
},
"node_modules/@inquirer/expand": {
"version": "4.0.20",
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.20.tgz",
"integrity": "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==",
"version": "4.0.21",
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.21.tgz",
"integrity": "sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"@inquirer/core": "^10.3.0",
"@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@ -1495,9 +1523,9 @@
}
},
"node_modules/@inquirer/figures": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz",
"integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==",
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.14.tgz",
"integrity": "sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==",
"dev": true,
"license": "MIT",
"engines": {
@ -1505,14 +1533,14 @@
}
},
"node_modules/@inquirer/input": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.4.tgz",
"integrity": "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==",
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.5.tgz",
"integrity": "sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
"@inquirer/core": "^10.3.0",
"@inquirer/type": "^3.0.9"
},
"engines": {
"node": ">=18"
@ -1527,14 +1555,14 @@
}
},
"node_modules/@inquirer/number": {
"version": "3.0.20",
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.20.tgz",
"integrity": "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==",
"version": "3.0.21",
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.21.tgz",
"integrity": "sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
"@inquirer/core": "^10.3.0",
"@inquirer/type": "^3.0.9"
},
"engines": {
"node": ">=18"
@ -1549,15 +1577,15 @@
}
},
"node_modules/@inquirer/password": {
"version": "4.0.20",
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.20.tgz",
"integrity": "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==",
"version": "4.0.21",
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.21.tgz",
"integrity": "sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^1.0.0",
"@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
"@inquirer/ansi": "^1.0.1",
"@inquirer/core": "^10.3.0",
"@inquirer/type": "^3.0.9"
},
"engines": {
"node": ">=18"
@ -1602,14 +1630,14 @@
}
},
"node_modules/@inquirer/rawlist": {
"version": "4.1.8",
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.8.tgz",
"integrity": "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==",
"version": "4.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.9.tgz",
"integrity": "sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"@inquirer/core": "^10.3.0",
"@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@ -1625,15 +1653,15 @@
}
},
"node_modules/@inquirer/search": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.3.tgz",
"integrity": "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.0.tgz",
"integrity": "sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
"@inquirer/core": "^10.3.0",
"@inquirer/figures": "^1.0.14",
"@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@ -1649,16 +1677,16 @@
}
},
"node_modules/@inquirer/select": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.4.tgz",
"integrity": "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.0.tgz",
"integrity": "sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@inquirer/ansi": "^1.0.0",
"@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
"@inquirer/ansi": "^1.0.1",
"@inquirer/core": "^10.3.0",
"@inquirer/figures": "^1.0.14",
"@inquirer/type": "^3.0.9",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@ -1674,9 +1702,9 @@
}
},
"node_modules/@inquirer/type": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz",
"integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==",
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.9.tgz",
"integrity": "sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==",
"dev": true,
"license": "MIT",
"engines": {
@ -3354,15 +3382,22 @@
"win32"
]
},
"node_modules/@scarf/scarf": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz",
"integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==",
"hasInstallScript": true,
"license": "Apache-2.0"
},
"node_modules/@schematics/angular": {
"version": "20.3.5",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.5.tgz",
"integrity": "sha512-mrVWO64psqah8E8HgpF30NMizVZyX6aH3k6hqf2tDgU3+giKX7xvTG9UQCaXA4MLBsQbpcWAmwPLipwLnPm8wA==",
"version": "20.3.6",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.6.tgz",
"integrity": "sha512-YPIEyKPBOyJYlda5fA49kMThzZ4WidomEMDghshux8xidbjDaPWBZdyVPQj3IXyW0teGlUM/TH0TH2weumMZrg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "20.3.5",
"@angular-devkit/schematics": "20.3.5",
"@angular-devkit/core": "20.3.6",
"@angular-devkit/schematics": "20.3.6",
"jsonc-parser": "3.3.1"
},
"engines": {
@ -3526,16 +3561,16 @@
"license": "MIT"
},
"node_modules/@types/jasmine": {
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.9.tgz",
"integrity": "sha512-8t4HtkW4wxiPVedMpeZ63n3vlWxEIquo/zc1Tm8ElU+SqVV7+D3Na2PWaJUp179AzTragMWVwkMv7mvty0NfyQ==",
"version": "5.1.11",
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.11.tgz",
"integrity": "sha512-eAij9lMAsosuA8cvRcqw7p2vO+LUraktQDmOUFx2jAnya8NUchr3DryHksfhZbRzU83vzNUSZhlk1cFdoePxwA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/node": {
"version": "24.7.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.0.tgz",
"integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==",
"version": "24.8.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.8.1.tgz",
"integrity": "sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -3744,9 +3779,9 @@
}
},
"node_modules/baseline-browser-mapping": {
"version": "2.8.14",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.14.tgz",
"integrity": "sha512-GM9c0cWWR8Ga7//Ves/9KRgTS8nLausCkP3CGiFLrnwA2CDUluXgaQqvrULoR2Ujrd/mz/lkX87F5BHFsNr5sQ==",
"version": "2.8.17",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.17.tgz",
"integrity": "sha512-j5zJcx6golJYTG6c05LUZ3Z8Gi+M62zRT/ycz4Xq4iCOdpcxwg7ngEYD4KA0eWZC7U17qh/Smq8bYbACJ0ipBA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@ -3892,6 +3927,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/bulma": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/bulma/-/bulma-1.0.4.tgz",
"integrity": "sha512-Ffb6YGXDiZYX3cqvSbHWqQ8+LkX6tVoTcZuVB3lm93sbAVXlO0D6QlOTMnV6g18gILpAXqkG2z9hf9z4hCjz2g==",
"license": "MIT"
},
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@ -4049,9 +4090,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001749",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001749.tgz",
"integrity": "sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==",
"version": "1.0.30001751",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz",
"integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==",
"dev": true,
"funding": [
{
@ -4467,6 +4508,15 @@
}
}
},
"node_modules/deepmerge-ts": {
"version": "7.1.5",
"resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz",
"integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=16.0.0"
}
},
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@ -4608,16 +4658,16 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.233",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.233.tgz",
"integrity": "sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg==",
"version": "1.5.237",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz",
"integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==",
"dev": true,
"license": "ISC"
},
"node_modules/emoji-regex": {
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz",
"integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==",
"version": "10.6.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
"dev": true,
"license": "MIT"
},
@ -4944,9 +4994,9 @@
}
},
"node_modules/exponential-backoff": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz",
"integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==",
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
"integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
"dev": true,
"license": "Apache-2.0"
},
@ -5594,9 +5644,9 @@
}
},
"node_modules/immutable": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz",
"integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
"integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
"dev": true,
"license": "MIT"
},
@ -7108,9 +7158,9 @@
"optional": true
},
"node_modules/node-gyp": {
"version": "11.4.2",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.4.2.tgz",
"integrity": "sha512-3gD+6zsrLQH7DyYOUIutaauuXrcyxeTPyQuZQCQoNPZMHMMS5m4y0xclNpvYzoK3VNzuyxT6eF4mkIL4WSZ1eQ==",
"version": "11.5.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz",
"integrity": "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -7212,9 +7262,9 @@
}
},
"node_modules/node-releases": {
"version": "2.0.23",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz",
"integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==",
"version": "2.0.25",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.25.tgz",
"integrity": "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==",
"dev": true,
"license": "MIT"
},
@ -7949,6 +7999,12 @@
"dev": true,
"license": "Apache-2.0"
},
"node_modules/remixicon": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/remixicon/-/remixicon-4.7.0.tgz",
"integrity": "sha512-g2pHOofQWARWpxdbrQu5+K3C8ZbqguQFzE54HIMWFCpFa63pumaAltIgZmFMRQpKKBScRWQASQfWxS9asNCcHQ==",
"license": "Apache-2.0"
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@ -8265,6 +8321,20 @@
"node": ">=8"
}
},
"node_modules/shepherd.js": {
"version": "14.5.1",
"resolved": "https://registry.npmjs.org/shepherd.js/-/shepherd.js-14.5.1.tgz",
"integrity": "sha512-VuvPvLG1QjNOLP7AIm2HGyfmxEIz8QdskvWOHwUcxLDibYWjLRBmCWd8LSL5FlwhBW7D/GU+3gNVC/ASxAWdxg==",
"license": "AGPL-3.0",
"dependencies": {
"@floating-ui/dom": "^1.7.0",
"@scarf/scarf": "^1.4.0",
"deepmerge-ts": "^7.1.1"
},
"engines": {
"node": "18.* || >= 20"
}
},
"node_modules/side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",

View file

@ -28,7 +28,10 @@
"@angular/forms": "^20.3.0",
"@angular/platform-browser": "^20.3.0",
"@angular/router": "^20.3.0",
"bulma": "^1.0.4",
"remixicon": "^4.7.0",
"rxjs": "~7.8.0",
"shepherd.js": "^14.5.1",
"tslib": "^2.3.0",
"zone.js": "~0.15.0"
},
@ -45,4 +48,4 @@
"karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.9.2"
}
}
}

53
angular-basic/setup.sh Executable file
View file

@ -0,0 +1,53 @@
#!/bin/bash
set -euo pipefail
echo "============= setup script"
node --version
npm version
# Déterminer les chemins
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
APP_DIR="$SCRIPT_DIR"
# Supporter deux structures:
# 1) `angular-basic/my-workspace/projects/sae-lib` (quand le contexte de build est le dossier angular-basic)
# 2) `../my-workspace/projects/sae-lib` (quand on copie my-workspace à côté d'angular-basic dans /app)
LIB_DIR_CANDIDATES=(
"$APP_DIR/my-workspace/projects/sae-lib"
"$APP_DIR/../my-workspace/projects/sae-lib"
)
LIB_DIR=""
for d in "${LIB_DIR_CANDIDATES[@]}"; do
if [ -d "$d" ]; then
LIB_DIR="$d"
break
fi
done
if [ -z "$LIB_DIR" ]; then
echo "Erreur: impossible de localiser le dossier de la librairie sae-lib." >&2
echo "Cherché dans: ${LIB_DIR_CANDIDATES[*]}" >&2
exit 1
fi
echo "Préparation de sae-lib (pack) depuis: $LIB_DIR"
mkdir ./node_modules/sae-lib -p
cp -r $LIB_DIR ./node_modules/sae-lib
#cd "$LIB_DIR"
## Créer un paquet tarball local sans toucher au prefix global
#TARBALL_NAME=$(npm pack --silent)
#TARBALL_PATH="$LIB_DIR/$TARBALL_NAME"
#echo "Tarball créé: $TARBALL_PATH"
cd "$APP_DIR"
echo "Installation des dépendances de l'app..."
npm install --legacy-peer-deps
#echo "Installation de sae-lib depuis le tarball local..."
#npm install --legacy-peer-deps "$TARBALL_PATH"
# Installer les peerDependencies nécessaires à sae-lib (si absents)
#echo "Installation des peer deps de sae-lib (remixicon, bulma, shepherd.js) ..."
npm install --legacy-peer-deps remixicon bulma shepherd.js
echo "============= setup script done"

View file

@ -1,42 +1,41 @@
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * The content below * * * * * * * * * * * -->
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * Delete the template below * * * * * * * * * -->
<!-- * * * * * * * to get started with your project! * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<style>
<style>
input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
button {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
.left-side {
width: 50%;
margin: 0 auto;
}
.right-side {
width: 50%;
margin: 0 auto;
}
</style>
<main class="main">
</style>
<main [ngClass]="{ 'theming-system': true}" class="main">
<div class="content">
<div class="left-side">
<h1>Angular app</h1>
<h1>Angular app with Aero components and styles</h1>
<sae-color-display hexaCode="#96BEE4" name="primary 100"></sae-color-display>
<br>
<br>
<input [(ngModel)]="backend" type="text">
<sae-m-button [kind]="'primary'" [label]="'test call streamlit'">
</sae-m-button>
<br>
<input type="text" [(ngModel)]="backend">
<button>
test call streamlit
</button>
</div>
</div>
</main>
@ -50,4 +49,4 @@
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<router-outlet />
<router-outlet/>

View file

@ -0,0 +1,5 @@
body{
background: #c4e3de;
color: #0a1927;
font-family: 'Barlow', sans-serif;
}

View file

@ -1,10 +1,12 @@
import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { FormsModule } from '@angular/forms';
import {Component, signal} from '@angular/core';
import {RouterOutlet} from '@angular/router';
import {ColorDisplay, MainButton} from 'sae-lib';
import {CommonModule, NgClass} from '@angular/common';
import {FormsModule} from '@angular/forms';
@Component({
selector: 'app-root',
imports: [RouterOutlet, FormsModule],
imports: [NgClass, RouterOutlet, CommonModule, MainButton, ColorDisplay, FormsModule],
templateUrl: './app.html',
styleUrl: './app.scss'
})

View file

@ -1 +1,2 @@
/* You can add global styles to this file, and also import other style files */
@use 'sae-lib/styles/index.scss';

View file

@ -13,7 +13,19 @@
"experimentalDecorators": true,
"importHelpers": true,
"target": "ES2022",
"module": "preserve"
"module": "preserve",
"baseUrl": "./",
"paths": {
"@sae-lib/*": [
"./my-workspace/projects/sae-lib/src/*"
],
"sae-lib": [
"./my-workspace/projects/sae-lib/src/public-api"
],
"sae-lib/*": [
"./my-workspace/projects/sae-lib/src/*"
]
}
},
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,