Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,13 @@ Le format suit [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/) et le pr
- **`--ui-sidebar-width`, `--ui-sidebar-rail-width`, `--ui-empty-state-media-size`, `--ui-empty-state-media-color`, `--ui-input-group-radius`, `--ui-input-group-overlap` et `--ui-skeleton-shine` sont désormais réellement surchargeables.** Ces sept custom properties étaient documentées comme des points de surcharge, mais le composant les **déclarait** sur son propre élément : une valeur posée par le consommateur sur `:root` était systématiquement écrasée (et, pour `--ui-skeleton-shine`, écrasée en mode sombre uniquement). Les déclarations passent sur un miroir privé, le nom public reste lu en amont. Mêmes valeurs par défaut.
- **`ui-tab-list` : `--ui-tabs-active-bar-color` / `--ui-tabs-active-bar-size` deviennent `--ui-tabs-indicator-color` / `--ui-tabs-indicator-thickness`** (le mot `active` se lisait comme un état alors que la convention met le modifieur en dernier). Les anciens noms restent honorés une version, en repli.
- **L'en-tête de traçabilité des fichiers copiés par `ng generate @4sh/ui-kit:add` porte la mention de licence** (`Apache-2.0 — Copyright 2026 4SH.`) en plus de son origine et de sa version. Une fois copié, le fichier vit dans le dépôt du consommateur, où plus rien n'indiquait sous quels termes il est fourni. Conséquence attendue : le premier `ng generate @4sh/ui-kit:update` suivant cette version affiche un diff d'une ligne en tête de chaque fichier installé.
- **L'en-tête de traçabilité des fichiers copiés tient sur une ligne et porte la mention de licence** :

```ts
// @4sh/ui-kit@0.2.0 — Apache-2.0 — Copyright 2026 4SH.
```

Il reprenait la catégorie, le nom du composant et le chemin du fichier — trois informations que le fichier copié porte déjà dans son emplacement. Ne reste que la version d'origine, et la licence : une fois copié, le fichier vit dans le dépôt du consommateur, où plus rien n'indiquait sous quels termes il est fourni. Conséquence attendue : le premier `ng generate @4sh/ui-kit-schematics:update` suivant cette version affiche un diff d'une ligne en tête de chaque fichier installé.

## [0.2.0] - 2026-08-14

Expand Down
32 changes: 15 additions & 17 deletions projects/ui-kit-schematics/src/utils/copy.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* copy — recopie une unité (`AssetUnit`) dans l'arbre du projet consommateur,
* aplatie (FSHSP-121), imports réadressés vers les copies voisines (FSHSP-119),
* avec en-tête de traçabilité (origine + version + licence) sur chaque fichier.
* avec en-tête de traçabilité (version + licence) sur chaque fichier.
*/
import type { Tree } from '@angular-devkit/schematics';
import { SchematicsException } from '@angular-devkit/schematics';
Expand All @@ -13,31 +13,29 @@ import { BARREL_FILENAME } from './export-map';
import { rewriteDocImports, rewriteKitImports } from './rewrite-imports';
import { stripFigmaDesign } from './strip-figma';

const HEADER_STYLE: Record<string, (lines: string[]) => string> = {
'.ts': (lines) => lines.map((l) => `// ${l}`).join('\n') + '\n',
'.scss': (lines) => lines.map((l) => `// ${l}`).join('\n') + '\n',
'.html': (lines) => `<!--\n${lines.map((l) => ` ${l}`).join('\n')}\n-->\n`,
const HEADER_STYLE: Record<string, (line: string) => string> = {
'.ts': (line) => `// ${line}\n`,
'.scss': (line) => `// ${line}\n`,
'.html': (line) => `<!-- ${line} -->\n`,
// Une constante exportée, et non le commentaire `{/* … */}` qu'on attendrait
// ici : c'est la seule forme de commentaire que le MDX accepte, et elle ne
// survit pas au passage de Prettier que le CLI Angular applique aux fichiers
// écrits par un schematic (`{/*` en ressort en `{/_`, et l'indexeur de
// Storybook ne parse plus la page). Un `export const` traverse ce formatage
// sans dommage, reste invisible au rendu, et porte la même mention.
'.mdx': (lines) => `export const uiKitOrigin = ${JSON.stringify(lines.join(' '))};\n\n`,
'.mdx': (line) => `export const uiKitOrigin = ${JSON.stringify(line)};\n\n`,
};

function traceabilityHeader(unit: AssetUnit, relPath: string, kitVersion: string, ext: string): string {
// Une ligne, et rien de déductible : ni l'origine ni le chemin, que le fichier
// copié porte déjà dans son emplacement (`ui/{catégorie}/{ui-nom}/`,
// `ui-core/{domaine}/`). Restent la version, et la mention de licence — le
// fichier quitte le package pour vivre dans le dépôt du consommateur, où plus
// rien d'autre n'y rattache les termes sous lesquels il est fourni
// (Apache-2.0 §4b — conserver les mentions dans les copies).
function traceabilityHeader(kitVersion: string, ext: string): string {
const make = HEADER_STYLE[ext];
if (!make) return '';
const origin = unit.kind === 'component' ? `${unit.category}/${unit.name}` : `base partagée ${unit.name}`;
return make([
`Copié depuis @4sh/ui-kit@${kitVersion} (${origin}, ${relPath}). ` +
`Géré par ui-kit.json — voir \`ng generate @4sh/ui-kit-schematics:update\`.`,
// Le fichier quitte le package pour vivre dans le dépôt du consommateur :
// sans cette ligne, plus rien n'y rattache les termes sous lesquels il est
// fourni (Apache-2.0 §4b — conserver les mentions dans les copies).
`Apache-2.0 — Copyright 2026 4SH.`,
]);
return make(`@4sh/ui-kit@${kitVersion} — Apache-2.0 — Copyright 2026 4SH.`);
}

export interface RenderedFile {
Expand Down Expand Up @@ -94,7 +92,7 @@ export function renderUnitFiles(unit: AssetUnit, kitVersion: string, options: Re
unresolved.push(...result.unresolved.map((item) => `${relPath} → ${item}`));
}

files.push({ targetPath, content: traceabilityHeader(unit, relPath, kitVersion, ext) + source });
files.push({ targetPath, content: traceabilityHeader(kitVersion, ext) + source });
}

if (unresolved.length) {
Expand Down
Loading