@conciso/design-system-angular 0.0.0-bootstrap.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Conciso GmbH
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE ADDED
@@ -0,0 +1,15 @@
1
+ NOTICE
2
+
3
+ Dieses Repository steht unter der MIT-Lizenz (siehe LICENSE), mit folgenden
4
+ Ausnahmen:
5
+
6
+ - Logos und Wortmarken unter assets/brand/: Eigentum der Conciso GmbH, nicht
7
+ unter der MIT-Lizenz dieses Repositories. Siehe assets/brand/LICENSE.
8
+ - Schriften (Montserrat, Libre Baskerville) unter fonts/: SIL Open Font
9
+ License 1.1. Siehe fonts/Montserrat-OFL.txt und
10
+ fonts/LibreBaskerville-OFL.txt.
11
+ - Icons unter icons/source/ui-*.svg (generische UI-Icons, nicht die
12
+ Bereichs-Glyphen co-*/ki-*/es-*/wo-*): überwiegend aus Heroicons
13
+ (https://heroicons.com) übernommen oder abgeleitet, teils angepasst.
14
+ Copyright (c) Tailwind Labs, Inc., MIT-Lizenz, siehe
15
+ icons/LICENSE-heroicons.
package/README.md ADDED
@@ -0,0 +1,183 @@
1
+ # @conciso/design-system-angular
2
+
3
+ Angular-Wrapper-Komponenten für das [Conciso Design System](https://github.com/conciso/conciso-design-system).
4
+ Die Komponenten sind **dünne Hüllen** über der framework-agnostischen
5
+ [CSS-Schicht](../../../CONTEXT.md#css-schicht) (`@conciso/design-system`): Sie setzen
6
+ nur deren CSS-Klassen zusammen und liefern **kein eigenes CSS**.
7
+
8
+ > **Vollständig umgezogen.** Alle 37 Komponenten leben in dieser Lib und werden über
9
+ > `public-api.ts` exportiert — samt ihrer öffentlichen Typen (`CdsArea`,
10
+ > `CdsButtonVariant`, `CdsThemeMode`, …). `storybook-angular` enthält nur noch Stories
11
+ > und importiert ausschließlich von hier
12
+ > ([ADR-0002](../../../docs/adr/0002-topologie-und-quelle-der-wahrheit.md)).
13
+
14
+ ## Installation von npmjs.org
15
+
16
+ Der empfohlene Weg: Beide Pakete (`@conciso/design-system-angular` **und**
17
+ `@conciso/design-system`, [Lockstep](../../../CONTEXT.md#lockstep-versionierung))
18
+ liegen auf der öffentlichen npm-Registry (seit
19
+ [ADR-0011](../../../docs/adr/0011-veroeffentlichung-auf-npmjs.md)). Keine `.npmrc`,
20
+ kein Token nötig:
21
+
22
+ ```bash
23
+ npm install @conciso/design-system-angular @conciso/design-system
24
+ ```
25
+
26
+ Gilt ab dem ersten echten Release nach dem Merge dieser Änderung; bis dahin liegt auf
27
+ npmjs nur eine Bootstrap-Platzhalterversion (siehe ADR-0011).
28
+
29
+ ## Installation aus GitHub Packages (Alternative)
30
+
31
+ Beide Pakete liegen **zusätzlich** weiterhin privat, org-scoped in
32
+ [GitHub Packages](https://npm.pkg.github.com) (siehe
33
+ [ADR-0004](../../../docs/adr/0004-verteilung-und-versionierung.md)) — z. B. für
34
+ Consumer innerhalb der GitHub-Organisation `conciso`, die ohnehin schon so
35
+ eingerichtet sind. Ein einziger `.npmrc`-Mechanismus deckt beide ab, weil
36
+ beide unter dem `@conciso`-Scope veröffentlicht werden.
37
+
38
+ **1. `.npmrc`** im Konsumenten-Projekt (oder `~/.npmrc` für den eigenen Rechner)
39
+ anlegen — der `@conciso`-Scope wird auf GitHub Packages umgeleitet, alles andere
40
+ bleibt bei der öffentlichen npm-Registry:
41
+
42
+ ```ini
43
+ @conciso:registry=https://npm.pkg.github.com
44
+ //npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
45
+ ```
46
+
47
+ **2. Token bereitstellen.** GitHub Packages verlangt Auth auch für **lesenden**
48
+ Zugriff auf private Pakete. `${GITHUB_TOKEN}` in der `.npmrc` liest npm zur
49
+ Laufzeit aus der Umgebungsvariable — dafür, in dieser Reihenfolge:
50
+
51
+ - **CI in derselben Organisation → kein Token nötig.** Das von GitHub automatisch
52
+ bereitgestellte `secrets.GITHUB_TOKEN` genügt für den **Lese**-Zugriff, sofern
53
+ das Workflow-`permissions`-Feld `packages: read` erlaubt (Beispiel im
54
+ Publish-Workflow, [`.github/workflows/publish.yml`](../../../.github/workflows/publish.yml)).
55
+ Voraussetzung ist einmalig, dass das Paket dem konsumierenden Repo freigegeben
56
+ ist: auf der Paket-Seite unter *Manage Actions access* → **Add Repository**
57
+ (Personen und Teams bekommen dort ebenso eine Rolle). Das Token ist kurzlebig und
58
+ an den Lauf gebunden — nichts zu verwalten, nichts zu rotieren.
59
+ - **Lokale Rechner und CI außerhalb der Organisation → Token eines technischen
60
+ Users.** Nimm dafür **nicht** einen persönlichen Account: sonst hängt der Zugriff
61
+ aller Konsumenten daran, dass diese Person im Unternehmen bleibt und ihre Rechte
62
+ behält. Also einen Maschinen-Account anlegen (E-Mail-Verteiler statt
63
+ Personenpostfach, sonst verlagert sich das Problem nur), in die Organisation
64
+ einladen, Lesezugriff geben — und mit **diesem** Account das Token erzeugen:
65
+ *Settings → Developer settings → Personal access tokens → Tokens (classic)*,
66
+ Scope `read:packages` (nur `write:packages`, wenn von Hand publiziert werden
67
+ soll). In GitHub Actions als **Organisations-Secret** ablegen, dann teilen alle
68
+ konsumierenden Repos dasselbe Token und es wird an einer Stelle rotiert.
69
+
70
+ > **Es muss ein *classic* Token sein.** GitHub Packages unterstützt laut
71
+ > [Doku](https://docs.github.com/en/packages/learn-github-packages/about-permissions-for-github-packages)
72
+ > ausschließlich Personal Access Tokens (classic); fine-grained PATs und
73
+ > GitHub-App-Installation-Tokens sind dort nicht vorgesehen
74
+ > ([Roadmap-Issue #558](https://github.com/github/roadmap/issues/558)). Wer mit
75
+ > einem fine-grained Token startet, verliert Zeit an einem 401/404, der wie ein
76
+ > Rechteproblem aussieht.
77
+
78
+ > Drei Fallstricke beim technischen User: (1) Ein Maschinen-Account belegt einen
79
+ > **Lizenzplatz** — das ist der Preis für die Entkopplung von Personen. (2) Nutzt die
80
+ > Organisation **SAML SSO**, muss das Token nach dem Anlegen ausdrücklich für die
81
+ > Organisation autorisiert werden, sonst schlägt der Zugriff mit einem irreführenden
82
+ > 401/404 fehl. (3) Setz ein **Ablaufdatum** und notiere die Rotation — ein Token
83
+ > ohne Ablauf ist bequem, und sein Ausfall trifft später alle Konsumenten
84
+ > gleichzeitig ohne Vorwarnung.
85
+
86
+ **3. Installieren:**
87
+
88
+ ```bash
89
+ npm install @conciso/design-system-angular @conciso/design-system
90
+ ```
91
+
92
+ Committe niemals ein Token in die `.npmrc` selbst — nur die
93
+ `${GITHUB_TOKEN}`-Variablenreferenz landet im Repo, der tatsächliche Wert bleibt
94
+ in der Umgebung.
95
+
96
+ ## Wichtig: CSS wird nicht mitgeliefert
97
+
98
+ Die Lib injiziert zur Laufzeit **nichts** ins DOM. Der Konsument installiert **beide**
99
+ Pakete (`@conciso/design-system-angular` **und** `@conciso/design-system` im
100
+ [Lockstep](../../../CONTEXT.md#lockstep-versionierung), gleiche Version) und bindet die
101
+ CSS-Schicht + Fonts selbst global über die `angular.json` (`styles`/`assets`) ein.
102
+ Fehlt dieser Schritt, rendern die Komponenten unstyled — ein lautes, offensichtliches
103
+ Signal. Siehe [ADR-0001](../../../docs/adr/0001-angular-lib-als-css-wrapper.md).
104
+
105
+ ## CSS + Fonts einbinden
106
+
107
+ Copy-paste-fertiger Einbindungs-Schnipsel — lebendes Vorbild ist die committete
108
+ [Consumer-Fixture](../../../CONTEXT.md#consumer-fixture) unter
109
+ [`examples/consumer-fixture`](../../../examples/consumer-fixture), die genau damit
110
+ im [Consumer-Smoke-Test](../../../CONTEXT.md#consumer-smoke-test) baut.
111
+
112
+ `css` und `fonts` liegen unverändert (kein CSS-Bundling durch den Angular-Build) unter
113
+ `node_modules/@conciso/design-system/{css,fonts}` — deshalb die `assets`-Einträge statt
114
+ `styles`. `fonts.css` referenziert die Font-Dateien relativ als `../fonts/*`; die
115
+ Zielordner `conciso/css` und `conciso/fonts` müssen daher **Geschwister** sein.
116
+
117
+ **1. `angular.json` → `architect.build.options` (Standard-Konfiguration ergänzen):**
118
+
119
+ ```jsonc
120
+ {
121
+ "assets": [
122
+ // … bestehende Einträge (z. B. "public") …
123
+ {
124
+ "glob": "**/*",
125
+ "input": "node_modules/@conciso/design-system/css",
126
+ "output": "conciso/css"
127
+ },
128
+ {
129
+ "glob": "**/*",
130
+ "input": "node_modules/@conciso/design-system/fonts",
131
+ "output": "conciso/fonts"
132
+ }
133
+ ]
134
+ }
135
+ ```
136
+
137
+ **2. `src/index.html` → CSS in exakt dieser Reihenfolge laden** (fonts → tokens →
138
+ dark-mode → base → components; gleiches Muster wie Storybooks
139
+ [`preview-head.html`](../../../storybook-angular/.storybook/preview-head.html)):
140
+
141
+ ```html
142
+ <link rel="stylesheet" href="conciso/css/fonts.css" />
143
+ <link rel="stylesheet" href="conciso/css/tokens.css" />
144
+ <link rel="stylesheet" href="conciso/css/dark-mode.css" />
145
+ <link rel="stylesheet" href="conciso/css/base.css" />
146
+ <link rel="stylesheet" href="conciso/css/components.css" />
147
+ ```
148
+
149
+ **3. Kritische-CSS-Inlining deaktivieren:** Die `production`-Konfiguration des
150
+ `@angular/build:application`-Builders versucht standardmäßig, referenzierte
151
+ Stylesheets als kritisches CSS zu inlinen — das externe, hier über `assets` (nicht
152
+ `styles`) eingebundene CSS liegt zum Zeitpunkt dieses Optimierungsschritts noch nicht
153
+ im Ausgabe-Verzeichnis, was zu (harmlosen, aber vermeidbaren) Build-Warnungen führt.
154
+ In `architect.build.configurations.production` ergänzen:
155
+
156
+ ```jsonc
157
+ {
158
+ "optimization": {
159
+ "scripts": true,
160
+ "fonts": true,
161
+ "styles": { "minify": true, "inlineCritical": false }
162
+ }
163
+ }
164
+ ```
165
+
166
+ ## Bauen
167
+
168
+ Aus dem Workspace-Root (`angular-lib/`):
169
+
170
+ ```bash
171
+ ng build design-system-angular
172
+ ```
173
+
174
+ Das Artefakt (Angular Package Format, via ng-packagr) landet unter
175
+ `dist/design-system-angular/`. Einziger Einstiegspunkt ist `src/public-api.ts`.
176
+
177
+ ## Lizenz
178
+
179
+ MIT, siehe [LICENSE](../../../LICENSE) im Repository-Root (im gebauten Paket unter
180
+ `dist/design-system-angular/LICENSE`). Ausnahmen (Brand-Assets, Schriften, Icons)
181
+ siehe [NOTICE](../../../NOTICE). Das betrifft nur die Lizenz — an den beiden
182
+ Bezugswegen (npmjs.org als Standard, GitHub Packages als Alternative, siehe oben)
183
+ ändert sich dadurch nichts.