@conciso/design-system-mcp 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.
Files changed (157) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/bin/cds-mcp.mjs +9 -0
  4. package/package.json +48 -0
  5. package/snapshot/manifests/components.json +617 -0
  6. package/snapshot/manifests/docs.json +293 -0
  7. package/snapshot/services/addon-docs/mdx/beispielseiten-/303/274bersicht--/303/274bersicht.json +18 -0
  8. package/snapshot/services/addon-docs/mdx/grundlagen-barrierefreiheit--/303/274bersicht.json +18 -0
  9. package/snapshot/services/addon-docs/mdx/grundlagen-design-tokens--/303/274bersicht.json +18 -0
  10. package/snapshot/services/addon-docs/mdx/grundlagen-einrichtung--/303/274bersicht.json +18 -0
  11. package/snapshot/services/addon-docs/mdx/grundlagen-elevation--/303/274bersicht.json +18 -0
  12. package/snapshot/services/addon-docs/mdx/grundlagen-icons--/303/274bersicht.json +18 -0
  13. package/snapshot/services/addon-docs/mdx/grundlagen-responsive--/303/274bersicht.json +18 -0
  14. package/snapshot/services/addon-docs/mdx/grundlagen-spacing-grid--/303/274bersicht.json +18 -0
  15. package/snapshot/services/addon-docs/mdx/komponenten-buchungsformular--/303/274bersicht.json +18 -0
  16. package/snapshot/services/addon-docs/mdx/komponenten-buttons--verwendung.json +18 -0
  17. package/snapshot/services/addon-docs/mdx/komponenten-call-to-action--verwendung.json +18 -0
  18. package/snapshot/services/addon-docs/mdx/komponenten-cards-teaser--verwendung.json +18 -0
  19. package/snapshot/services/addon-docs/mdx/komponenten-chips-badges-pills--verwendung.json +18 -0
  20. package/snapshot/services/addon-docs/mdx/komponenten-code-block--verwendung.json +18 -0
  21. package/snapshot/services/addon-docs/mdx/komponenten-dropdowns--verwendung.json +18 -0
  22. package/snapshot/services/addon-docs/mdx/komponenten-feedback--verwendung.json +18 -0
  23. package/snapshot/services/addon-docs/mdx/komponenten-footer--verwendung.json +18 -0
  24. package/snapshot/services/addon-docs/mdx/komponenten-hero--/303/274bersicht.json +18 -0
  25. package/snapshot/services/addon-docs/mdx/komponenten-inputs-forms--verwendung.json +18 -0
  26. package/snapshot/services/addon-docs/mdx/komponenten-navigation--verwendung.json +18 -0
  27. package/snapshot/services/addon-docs/mdx/komponenten-sektion--/303/274bersicht.json +18 -0
  28. package/snapshot/services/addon-docs/mdx/komponenten-slider-carousel--verwendung.json +18 -0
  29. package/snapshot/services/addon-docs/mdx/komponenten-tabelle--/303/274bersicht.json +18 -0
  30. package/snapshot/services/addon-docs/mdx/komponenten-theme-umschalter--verwendung.json +18 -0
  31. package/snapshot/services/addon-docs/mdx/komponenten-zitate-testimonials--verwendung.json +18 -0
  32. package/snapshot/services/addon-docs/mdx/marke-bildsprache--/303/274bersicht.json +18 -0
  33. package/snapshot/services/addon-docs/mdx/marke-brand-areas--/303/274bersicht.json +18 -0
  34. package/snapshot/services/addon-docs/mdx/marke-logo--verwendung.json +18 -0
  35. package/snapshot/services/addon-docs/mdx/marke-markenrad--/303/274bersicht.json +18 -0
  36. package/snapshot/services/addon-docs/mdx/referenzen-quellen--/303/274bersicht.json +18 -0
  37. package/snapshot/services/addon-docs/mdx/seitenmuster-angebots-detailseite--/303/274bersicht.json +18 -0
  38. package/snapshot/services/addon-docs/mdx/seitenmuster-beitrags/303/274bersicht--/303/274bersicht.json +18 -0
  39. package/snapshot/services/addon-docs/mdx/seitenmuster-seminar-/302/267-training--/303/274bersicht.json +18 -0
  40. package/snapshot/services/addon-docs/mdx/seitenmuster-veranstaltung--/303/274bersicht.json +18 -0
  41. package/snapshot/services/addon-docs/mdx/seitenmuster-veranstaltungs/303/274bersicht--/303/274bersicht.json +18 -0
  42. package/snapshot/services/addon-docs/mdx/seitenmuster-wissensbeitrag--/303/274bersicht.json +18 -0
  43. package/snapshot/services/core/docgen/grundlagen-farben.json +3 -0
  44. package/snapshot/services/core/docgen/grundlagen-typografie.json +3 -0
  45. package/snapshot/services/core/docgen/komponenten-buttons-button.json +183 -0
  46. package/snapshot/services/core/docgen/komponenten-call-to-action-cta-band.json +131 -0
  47. package/snapshot/services/core/docgen/komponenten-call-to-action-downloadcta.json +182 -0
  48. package/snapshot/services/core/docgen/komponenten-cards-teaser-card.json +146 -0
  49. package/snapshot/services/core/docgen/komponenten-cards-teaser-feature-liste.json +128 -0
  50. package/snapshot/services/core/docgen/komponenten-cards-teaser-featured-karte.json +158 -0
  51. package/snapshot/services/core/docgen/komponenten-cards-teaser-icon-karte.json +111 -0
  52. package/snapshot/services/core/docgen/komponenten-cards-teaser-klickbare-karte.json +161 -0
  53. package/snapshot/services/core/docgen/komponenten-cards-teaser-statcard.json +115 -0
  54. package/snapshot/services/core/docgen/komponenten-cards-teaser-statstrip.json +58 -0
  55. package/snapshot/services/core/docgen/komponenten-cards-teaser-tier-trenner.json +56 -0
  56. package/snapshot/services/core/docgen/komponenten-chips-badges-pills-bereichs-badge.json +63 -0
  57. package/snapshot/services/core/docgen/komponenten-chips-badges-pills-chip.json +95 -0
  58. package/snapshot/services/core/docgen/komponenten-chips-badges-pills-pill.json +78 -0
  59. package/snapshot/services/core/docgen/komponenten-chips-badges-pills-status-badge.json +63 -0
  60. package/snapshot/services/core/docgen/komponenten-code-block-code-block.json +91 -0
  61. package/snapshot/services/core/docgen/komponenten-dropdowns-combobox.json +224 -0
  62. package/snapshot/services/core/docgen/komponenten-dropdowns-custom-select.json +173 -0
  63. package/snapshot/services/core/docgen/komponenten-feedback-snackbar.json +97 -0
  64. package/snapshot/services/core/docgen/komponenten-footer-komplett.json +21 -0
  65. package/snapshot/services/core/docgen/komponenten-footer-oberer-teil.json +39 -0
  66. package/snapshot/services/core/docgen/komponenten-footer-unterer-teil.json +105 -0
  67. package/snapshot/services/core/docgen/komponenten-hero-hero-bild.json +162 -0
  68. package/snapshot/services/core/docgen/komponenten-hero-st/303/266rer.json +41 -0
  69. package/snapshot/services/core/docgen/komponenten-inputs-forms-auswahlfeld.json +192 -0
  70. package/snapshot/services/core/docgen/komponenten-inputs-forms-checkbox.json +182 -0
  71. package/snapshot/services/core/docgen/komponenten-inputs-forms-radio.json +181 -0
  72. package/snapshot/services/core/docgen/komponenten-inputs-forms-skala.json +179 -0
  73. package/snapshot/services/core/docgen/komponenten-inputs-forms-slider.json +259 -0
  74. package/snapshot/services/core/docgen/komponenten-inputs-forms-textbereich.json +190 -0
  75. package/snapshot/services/core/docgen/komponenten-inputs-forms-textfeld.json +207 -0
  76. package/snapshot/services/core/docgen/komponenten-navigation-topnav.json +186 -0
  77. package/snapshot/services/core/docgen/komponenten-sektion-sektion.json +113 -0
  78. package/snapshot/services/core/docgen/komponenten-slider-carousel-carousel.json +92 -0
  79. package/snapshot/services/core/docgen/komponenten-slider-carousel-logocarousel.json +92 -0
  80. package/snapshot/services/core/docgen/komponenten-tabelle-tabelle.json +74 -0
  81. package/snapshot/services/core/docgen/komponenten-tabelle-vergleichstabelle.json +142 -0
  82. package/snapshot/services/core/docgen/komponenten-theme-umschalter-cycle-button.json +41 -0
  83. package/snapshot/services/core/docgen/komponenten-theme-umschalter-dropdown.json +41 -0
  84. package/snapshot/services/core/docgen/komponenten-theme-umschalter-segment.json +41 -0
  85. package/snapshot/services/core/docgen/komponenten-zitate-testimonials-blockquote.json +96 -0
  86. package/snapshot/services/core/docgen/komponenten-zitate-testimonials-teamvoice.json +130 -0
  87. package/snapshot/services/core/docgen/komponenten-zitate-testimonials-testimonial.json +96 -0
  88. package/snapshot/services/core/docgen/marke-brand-areas-areatabs.json +75 -0
  89. package/snapshot/services/core/docgen/marke-logo-logo.json +71 -0
  90. package/snapshot/services/core/docgen/seitenmuster-seminar-/302/267-training-fakten-liste.json +79 -0
  91. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-article-header.json +196 -0
  92. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-author-card.json +91 -0
  93. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-avatar.json +100 -0
  94. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-callout.json +64 -0
  95. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-faq.json +41 -0
  96. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-figure.json +73 -0
  97. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-inhaltsverzeichnis.json +75 -0
  98. package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-pull-quote.json +63 -0
  99. package/snapshot/services/core/story-docs/grundlagen-farben.json +19 -0
  100. package/snapshot/services/core/story-docs/grundlagen-typografie.json +25 -0
  101. package/snapshot/services/core/story-docs/komponenten-buttons-button.json +48 -0
  102. package/snapshot/services/core/story-docs/komponenten-call-to-action-cta-band.json +27 -0
  103. package/snapshot/services/core/story-docs/komponenten-call-to-action-downloadcta.json +17 -0
  104. package/snapshot/services/core/story-docs/komponenten-cards-teaser-card.json +37 -0
  105. package/snapshot/services/core/story-docs/komponenten-cards-teaser-feature-liste.json +37 -0
  106. package/snapshot/services/core/story-docs/komponenten-cards-teaser-featured-karte.json +36 -0
  107. package/snapshot/services/core/story-docs/komponenten-cards-teaser-icon-karte.json +41 -0
  108. package/snapshot/services/core/story-docs/komponenten-cards-teaser-klickbare-karte.json +26 -0
  109. package/snapshot/services/core/story-docs/komponenten-cards-teaser-statcard.json +21 -0
  110. package/snapshot/services/core/story-docs/komponenten-cards-teaser-statstrip.json +21 -0
  111. package/snapshot/services/core/story-docs/komponenten-cards-teaser-tier-trenner.json +22 -0
  112. package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-bereichs-badge.json +21 -0
  113. package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-chip.json +27 -0
  114. package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-pill.json +21 -0
  115. package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-status-badge.json +21 -0
  116. package/snapshot/services/core/story-docs/komponenten-code-block-code-block.json +26 -0
  117. package/snapshot/services/core/story-docs/komponenten-dropdowns-combobox.json +37 -0
  118. package/snapshot/services/core/story-docs/komponenten-dropdowns-custom-select.json +37 -0
  119. package/snapshot/services/core/story-docs/komponenten-feedback-snackbar.json +27 -0
  120. package/snapshot/services/core/story-docs/komponenten-footer-komplett.json +22 -0
  121. package/snapshot/services/core/story-docs/komponenten-footer-oberer-teil.json +21 -0
  122. package/snapshot/services/core/story-docs/komponenten-footer-unterer-teil.json +32 -0
  123. package/snapshot/services/core/story-docs/komponenten-hero-hero-bild.json +37 -0
  124. package/snapshot/services/core/story-docs/komponenten-hero-st/303/266rer.json +26 -0
  125. package/snapshot/services/core/story-docs/komponenten-inputs-forms-auswahlfeld.json +32 -0
  126. package/snapshot/services/core/story-docs/komponenten-inputs-forms-checkbox.json +32 -0
  127. package/snapshot/services/core/story-docs/komponenten-inputs-forms-radio.json +32 -0
  128. package/snapshot/services/core/story-docs/komponenten-inputs-forms-skala.json +42 -0
  129. package/snapshot/services/core/story-docs/komponenten-inputs-forms-slider.json +37 -0
  130. package/snapshot/services/core/story-docs/komponenten-inputs-forms-textbereich.json +27 -0
  131. package/snapshot/services/core/story-docs/komponenten-inputs-forms-textfeld.json +32 -0
  132. package/snapshot/services/core/story-docs/komponenten-navigation-topnav.json +26 -0
  133. package/snapshot/services/core/story-docs/komponenten-sektion-sektion.json +41 -0
  134. package/snapshot/services/core/story-docs/komponenten-slider-carousel-carousel.json +31 -0
  135. package/snapshot/services/core/story-docs/komponenten-slider-carousel-logocarousel.json +27 -0
  136. package/snapshot/services/core/story-docs/komponenten-tabelle-tabelle.json +36 -0
  137. package/snapshot/services/core/story-docs/komponenten-tabelle-vergleichstabelle.json +32 -0
  138. package/snapshot/services/core/story-docs/komponenten-theme-umschalter-cycle-button.json +31 -0
  139. package/snapshot/services/core/story-docs/komponenten-theme-umschalter-dropdown.json +26 -0
  140. package/snapshot/services/core/story-docs/komponenten-theme-umschalter-segment.json +26 -0
  141. package/snapshot/services/core/story-docs/komponenten-zitate-testimonials-blockquote.json +21 -0
  142. package/snapshot/services/core/story-docs/komponenten-zitate-testimonials-teamvoice.json +21 -0
  143. package/snapshot/services/core/story-docs/komponenten-zitate-testimonials-testimonial.json +21 -0
  144. package/snapshot/services/core/story-docs/marke-brand-areas-areatabs.json +26 -0
  145. package/snapshot/services/core/story-docs/marke-logo-logo.json +23 -0
  146. package/snapshot/services/core/story-docs/seitenmuster-seminar-/302/267-training-fakten-liste.json +21 -0
  147. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-article-header.json +37 -0
  148. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-author-card.json +31 -0
  149. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-avatar.json +32 -0
  150. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-callout.json +26 -0
  151. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-faq.json +27 -0
  152. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-figure.json +22 -0
  153. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-inhaltsverzeichnis.json +27 -0
  154. package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-pull-quote.json +21 -0
  155. package/src/instructions.mjs +38 -0
  156. package/src/server.mjs +111 -0
  157. package/src/version-check.mjs +80 -0
@@ -0,0 +1,142 @@
1
+ {
2
+ "components": {
3
+ "komponenten-tabelle-vergleichstabelle": {
4
+ "id": "komponenten-tabelle-vergleichstabelle",
5
+ "name": "CompareComponent",
6
+ "path": "./src/lib/compare/compare.stories.ts",
7
+ "description": "Compare (`cds-compare`) — Wrapper um `.ep-compare*` aus css/components.css\n(css/components.css:1275–1294): die aufklappbare Vergleichstabelle für den zeilenweisen\nDirektvergleich mehrerer Pakete/Tarife (Doku-Site `sec-table`, Nav-Eintrag\n„Vergleichstabelle (aufklappbar)“, `docs/index.html:5182–5204`). Zehntes Ticket der\nSeitenbausteine-Serie, nach `cds-table` (Ticket 09).\n\n**Mit Daten-Input, anders als `cds-table`.** `cds-table` projiziert `<thead>`/`<tbody>`\nunverändert per `<ng-content>`, weil seine Zellen Badges, Links und `data-num` tragen können\n(siehe dessen Klassendoku). Hier ist der Zellinhalt strukturell auf Ja/Nein oder eine kurze\nAngabe begrenzt — ausgezählt: alle 22 Datenzellen des einzigen realen Vorkommens\n(`docs/index.html:11970–12038`, 11 Zeilen × 2 Spalten, ohne die Zeilenüberschriften) sind\nentweder ein `.ep-compare-yes`/`-no`-Marker (18×, davon 14× „Ja“, 4× „Nein“) oder ein kurzer\nText wie „bis 70 Mrd. Param.“ bzw. „30 Min.“ (4×) — nie ein Badge, Link oder anderes Markup.\nWeil Spaltenzahl, `pro`-Spalte und Zellinhalt damit vollständig aus zwei Arrays (`columns`,\n`rows`) hervorgehen, würde `<ng-content>` beim Konsumenten nur denselben `@for`-Code\nduplizieren, ohne eine Freiheit zu gewinnen, die die Zell-Typisierung (`boolean | string`)\nohnehin ausschließt.\n\n**Ja/Nein-Zellen tragen einen Screenreader-Text, übernommen statt erfunden.** Im einzigen\nrealen Vorkommen steht hinter jeder Glyphe ein `.sr-only`-Text, ausnahmslos:\n`<span class=\"ep-compare-yes\" aria-hidden=\"true\">✓</span><span class=\"sr-only\">Enthalten</span>`\n(14×) bzw. `<span class=\"ep-compare-no\" aria-hidden=\"true\">−</span><span class=\"sr-only\">Nicht\nenthalten</span>` (4×, „−“ ist U+2212 Minus, kein Bindestrich). Genau diese Zeichen und dieser\nWortlaut, keine eigene Formulierung — Farbe und Glyphe allein tragen keine Bedeutung\n(WCAG 1.4.1), der `.sr-only`-Text ist deshalb kein optionaler Zusatz, sondern fest verdrahtet,\nnicht per Input überschreibbar.\n\n**`caption` ist Pflicht (`input.required<string>()`), abweichend von der Ticket-Skizze (dort\nkein Input dafür vorgesehen) — dieselbe Begründung wie bei `cds-table`.** Die eigene Doku\n(`storybook-angular/src/docs/komponenten/tabelle.mdx:91`) nennt `<caption class=\"sr-only\">`\nausdrücklich als Teil des Bauteils, und das einzige reale Vorkommen hat eine. Anders als bei\n`cds-table` ist sie hier `.sr-only`, nicht sichtbar: der Klartext steht schon im `<summary>`\n(`summary`-Input), die `<caption>` wiederholt ihn nur für Screenreader, die nach dem Aufklappen\ndirekt in die Tabelle springen, ohne den Summary-Text erneut vorgelesen zu bekommen.\n\n**`rowsLabel` (erste Kopfzelle, `<th scope=\"col\">Funktion</th>` im Mockup) ist dagegen Beiwerk,\noptional mit Default `''`.** Auch dafür sieht die Ticket-Skizze keinen Input vor. Den Text fest\nim Template zu verdrahten hieße, AI.Box-Copy in einen wiederverwendbaren Wrapper zu backen\n(ADR-0007 §2); ihn ganz wegzulassen wich ohne CSS-Befund vom einzigen Beleg ab, ohne dass die\nDoku das verlangt. Anders als `caption` ist die Kopfzelle nicht barrierefreiheitsrelevant\nPflicht: ein leeres `<th scope=\"col\">` bleibt eine gültige, in Vergleichsmatrizen verbreitete\nEcke ohne eigenen Namen. Deshalb Beiwerk, kein Inhalt — das Beispielwort „Funktion“ steht in\nder Story, nicht in der Klasse.\n\n**Natives `<details>`/`<summary>` bleibt erhalten, kein nachgebautes Disclosure** (Ticket-\nVorgabe, analog `cds-faq`): Tastaturbedienung und Toggle-Verhalten kommen vom Browser, das CSS\nhängt direkt an `[open]` (`.ep-compare[open] .ep-compare-caret`). `<details class=\"ep-compare\">`\nsitzt deshalb im TEMPLATE, nicht am Host — derselbe Grund wie bei `cds-table`s\n`.tbl-wrap`/`.tbl`: ein `<cds-compare>`-Host ist ein unbekanntes Custom Element, kein echtes\n`<details>`, und kann dessen native Disclosure-Semantik nicht annehmen.\n\n**Element-Selektor (ADR-0008-Standardfall).** `.ep-compare` sitzt im einzigen realen Vorkommen\nals gewöhnlicher Block-Nachfahre in `.ep-section` (`docs/index.html:11969`) — kein Grid-/\nFlex-Kind, keine `col-*`-Klasse vom Konsumenten, kein Tag-Wechsel (immer `<details>`). Keines\nder drei ADR-0008-Kriterien greift, ein Attributselektor brächte hier nichts.\n\n**`open` ist ein reiner Anfangszustand, keine Zwei-Wege-Bindung.** Gebunden über\n`[attr.open]=\"open() ? '' : null\"`: Angular schreibt das Attribut nur, wenn sich der GEPRÜFTE\nAusdruckswert seit dem letzten Change-Detection-Lauf ändert. `open()` bleibt nach dem ersten\nRendern konstant (die Komponente schreibt nie in dieses Signal zurück), ein nachfolgender\nnativer Toggle wird deshalb nicht rückgängig gemacht — geprüft in der Story „Interaktiv“\n(Play-Funktion: Klick öffnet, `toggled` feuert `true`, ein zweiter, vom Toggle unabhängiger\nInteraktionsschritt lässt die Tabelle weiterhin offen).",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "caption": {
11
+ "name": "caption",
12
+ "description": "`<caption class=\"sr-only\">` der Tabelle — Pflicht, siehe Klassendoku.",
13
+ "type": {
14
+ "name": "string",
15
+ "required": true
16
+ },
17
+ "table": {
18
+ "category": "inputs",
19
+ "type": {
20
+ "summary": "string"
21
+ },
22
+ "defaultValue": {}
23
+ }
24
+ },
25
+ "columns": {
26
+ "name": "columns",
27
+ "description": "Vergleichsspalten (Pakete/Tarife), in Render-Reihenfolge.",
28
+ "type": {
29
+ "name": "other",
30
+ "value": "empty-enum",
31
+ "required": true
32
+ },
33
+ "table": {
34
+ "category": "inputs",
35
+ "type": {
36
+ "summary": "CdsCompareColumn[]"
37
+ },
38
+ "defaultValue": {}
39
+ }
40
+ },
41
+ "open": {
42
+ "name": "open",
43
+ "description": "Anfangszustand des `<details>` — reine Vorbelegung, siehe Klassendoku.",
44
+ "type": {
45
+ "name": "boolean"
46
+ },
47
+ "table": {
48
+ "category": "inputs",
49
+ "type": {
50
+ "summary": "boolean"
51
+ },
52
+ "defaultValue": {
53
+ "summary": false
54
+ }
55
+ }
56
+ },
57
+ "rows": {
58
+ "name": "rows",
59
+ "description": "Vergleichszeilen; `cells` hat je Zeile genau einen Eintrag pro Spalte in `columns`.",
60
+ "type": {
61
+ "name": "other",
62
+ "value": "empty-enum",
63
+ "required": true
64
+ },
65
+ "table": {
66
+ "category": "inputs",
67
+ "type": {
68
+ "summary": "CdsCompareRow[]"
69
+ },
70
+ "defaultValue": {}
71
+ }
72
+ },
73
+ "rowsLabel": {
74
+ "name": "rowsLabel",
75
+ "description": "Überschrift der ersten Spalte (Zeilentitel, z. B. „Funktion“) — Beiwerk, siehe Klassendoku.",
76
+ "type": {
77
+ "name": "string"
78
+ },
79
+ "table": {
80
+ "category": "inputs",
81
+ "type": {
82
+ "summary": "string"
83
+ },
84
+ "defaultValue": {
85
+ "summary": ""
86
+ }
87
+ }
88
+ },
89
+ "summary": {
90
+ "name": "summary",
91
+ "description": "Text im `<summary>`, z. B. „Alle Funktionen vergleichen“.",
92
+ "type": {
93
+ "name": "string",
94
+ "required": true
95
+ },
96
+ "table": {
97
+ "category": "inputs",
98
+ "type": {
99
+ "summary": "string"
100
+ },
101
+ "defaultValue": {}
102
+ }
103
+ },
104
+ "toggled": {
105
+ "name": "toggled",
106
+ "description": "Feuert bei jedem Auf- oder Zuklappen mit dem neuen Zustand.",
107
+ "type": {
108
+ "name": "other",
109
+ "value": "void"
110
+ },
111
+ "action": "toggled",
112
+ "table": {
113
+ "category": "outputs",
114
+ "type": {
115
+ "summary": "boolean"
116
+ },
117
+ "defaultValue": {}
118
+ }
119
+ }
120
+ },
121
+ "apiDescription": "## Inputs\n\n```\nexport type CompareComponentInputs = {\n /** `<caption class=\"sr-only\">` der Tabelle — Pflicht, siehe Klassendoku. */\n caption: string;\n /** Vergleichsspalten (Pakete/Tarife), in Render-Reihenfolge. */\n columns: CdsCompareColumn[];\n /**\n * Anfangszustand des `<details>` — reine Vorbelegung, siehe Klassendoku.\n *\n * @default false\n */\n open?: boolean;\n /** Vergleichszeilen; `cells` hat je Zeile genau einen Eintrag pro Spalte in `columns`. */\n rows: CdsCompareRow[];\n /**\n * Überschrift der ersten Spalte (Zeilentitel, z. B. „Funktion“) — Beiwerk, siehe Klassendoku.\n *\n * @default ''\n */\n rowsLabel?: string;\n /** Text im `<summary>`, z. B. „Alle Funktionen vergleichen“. */\n summary: string;\n}\n```\n\n## Outputs\n\n```\nexport type CompareComponentOutputs = {\n /** Feuert bei jedem Auf- oder Zuklappen mit dem neuen Zustand. */\n toggled: boolean;\n}\n```",
122
+ "renderer": "angular",
123
+ "angularComponentMeta": {
124
+ "name": "CompareComponent",
125
+ "selector": "cds-compare",
126
+ "standalone": true,
127
+ "inputs": [
128
+ "caption",
129
+ "columns",
130
+ "open",
131
+ "rows",
132
+ "rowsLabel",
133
+ "summary"
134
+ ],
135
+ "outputs": [
136
+ "toggled"
137
+ ],
138
+ "enums": []
139
+ }
140
+ }
141
+ }
142
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "components": {
3
+ "komponenten-theme-umschalter-cycle-button": {
4
+ "id": "komponenten-theme-umschalter-cycle-button",
5
+ "name": "ThemeCycleComponent",
6
+ "path": "./src/lib/theme-switch/cycle-button.stories.ts",
7
+ "description": "Theme-Cycle-Button — ein einzelner Icon-Button (Stil `.ep-nav-icon-btn` aus der\nTopnav), der bei Klick durch die Modi zyklt. Das Icon zeigt den aktuellen Modus.\nVorgesehener Einsatz: im Header. Icons über die zentrale Registry (lib/icons/cds-icons).\n\n`showSystem` schaltet zwischen tri (Hell→Dunkel→System) und binär (Hell→Dunkel).",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "showSystem": {
11
+ "name": "showSystem",
12
+ "description": "true → Hell/Dunkel/System, false → nur Hell/Dunkel.",
13
+ "type": {
14
+ "name": "boolean"
15
+ },
16
+ "table": {
17
+ "category": "inputs",
18
+ "type": {
19
+ "summary": "boolean"
20
+ },
21
+ "defaultValue": {
22
+ "summary": true
23
+ }
24
+ }
25
+ }
26
+ },
27
+ "apiDescription": "## Inputs\n\n```\nexport type ThemeCycleComponentInputs = {\n /**\n * true → Hell/Dunkel/System, false → nur Hell/Dunkel.\n *\n * @default true\n */\n showSystem?: boolean;\n}\n```",
28
+ "renderer": "angular",
29
+ "angularComponentMeta": {
30
+ "name": "ThemeCycleComponent",
31
+ "selector": "cds-theme-cycle",
32
+ "standalone": true,
33
+ "inputs": [
34
+ "showSystem"
35
+ ],
36
+ "outputs": [],
37
+ "enums": []
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "components": {
3
+ "komponenten-theme-umschalter-dropdown": {
4
+ "id": "komponenten-theme-umschalter-dropdown",
5
+ "name": "ThemeSelectComponent",
6
+ "path": "./src/lib/theme-switch/select.stories.ts",
7
+ "description": "Theme-Dropdown — Theme-Umschalter auf Basis unseres Custom Select (cds-select):\ngestylte Einzelauswahl mit Listbox-Popup und Häkchen. Vorgesehener Einsatz: nur in\nden Einstellungen (Settings), NICHT als persistentes Element auf allen Seiten.\n\n`showSystem` schaltet zwischen Hell/Dunkel/System und binär Hell/Dunkel.",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "showSystem": {
11
+ "name": "showSystem",
12
+ "description": "true → Hell/Dunkel/System, false → nur Hell/Dunkel.",
13
+ "type": {
14
+ "name": "boolean"
15
+ },
16
+ "table": {
17
+ "category": "inputs",
18
+ "type": {
19
+ "summary": "boolean"
20
+ },
21
+ "defaultValue": {
22
+ "summary": true
23
+ }
24
+ }
25
+ }
26
+ },
27
+ "apiDescription": "## Inputs\n\n```\nexport type ThemeSelectComponentInputs = {\n /**\n * true → Hell/Dunkel/System, false → nur Hell/Dunkel.\n *\n * @default true\n */\n showSystem?: boolean;\n}\n```",
28
+ "renderer": "angular",
29
+ "angularComponentMeta": {
30
+ "name": "ThemeSelectComponent",
31
+ "selector": "cds-theme-select",
32
+ "standalone": true,
33
+ "inputs": [
34
+ "showSystem"
35
+ ],
36
+ "outputs": [],
37
+ "enums": []
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "components": {
3
+ "komponenten-theme-umschalter-segment": {
4
+ "id": "komponenten-theme-umschalter-segment",
5
+ "name": "ThemeSegmentComponent",
6
+ "path": "./src/lib/theme-switch/segment-tri.stories.ts",
7
+ "description": "Theme-Segment — Segment-Switch für das Farbthema. Vorgesehener Einsatz: als\neigenständiges Element zum Hovern. Ist daher IMMER responsiv (unter 640px\nIcon-only) und IMMER animiert (Aktiv-Markierung gleitet als Thumb) — beides\nfest, nicht konfigurierbar. Icon + Textlabel stehen immer nebeneinander.\n\nEinzige Konfiguration: `showSystem` (tri Hell/Dunkel/System vs. binär Hell/Dunkel).\n\nBaut auf den CSS-Kern-Klassen `.theme-bar`/`.tbtn` auf. Jeder Button trägt ein\n`aria-label`, ist also auch im Icon-only-Modus benannt. Der Thumb wird per\ngetBoundingClientRect an die aktive Zelle gesetzt (ResizeObserver misst bei\nBreakpoint-/Font-Änderungen nach).",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "showSystem": {
11
+ "name": "showSystem",
12
+ "description": "true → Hell/Dunkel/System (tri), false → nur Hell/Dunkel (binär).",
13
+ "type": {
14
+ "name": "boolean"
15
+ },
16
+ "table": {
17
+ "category": "inputs",
18
+ "type": {
19
+ "summary": "boolean"
20
+ },
21
+ "defaultValue": {
22
+ "summary": true
23
+ }
24
+ }
25
+ }
26
+ },
27
+ "apiDescription": "## Inputs\n\n```\nexport type ThemeSegmentComponentInputs = {\n /**\n * true → Hell/Dunkel/System (tri), false → nur Hell/Dunkel (binär).\n *\n * @default true\n */\n showSystem?: boolean;\n}\n```",
28
+ "renderer": "angular",
29
+ "angularComponentMeta": {
30
+ "name": "ThemeSegmentComponent",
31
+ "selector": "cds-theme-segment",
32
+ "standalone": true,
33
+ "inputs": [
34
+ "showSystem"
35
+ ],
36
+ "outputs": [],
37
+ "enums": []
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "components": {
3
+ "komponenten-zitate-testimonials-blockquote": {
4
+ "id": "komponenten-zitate-testimonials-blockquote",
5
+ "name": "BlockquoteComponent",
6
+ "path": "./src/lib/blockquote/blockquote.stories.ts",
7
+ "description": "Blockquote — Wrapper um `.bq` aus css/components.css → „Blockquote“.\n\nBereichsgefärbtes Zitat mit linker Akzentleiste und getöntem Grund (data-area),\nQuote-Icon (ui-quote, dieselbe Glyphe wie docs/index.html), Zitat und\nCaption (Name/Rolle). Nur bestehende Klassen.\n\n**Nicht `cds-article-pullquote` (`.article-pullquote`).** Dieses Bauteil ist\nein eigenständiges Zitat: eine dritte, benannte Person (`name`/`roleLabel` sind\nPflicht), mit getönter Akzent-Box und Quote-Icon. `cds-article-pullquote` ist\ndagegen ein typografischer Akzent im eigenen Lauftext eines Wissensbeitrags,\nohne Attribution, ohne Box, ohne Icon — der Autor zitiert dort einen Satz aus\ndem eigenen Text, nicht eine dritte Stimme. Volle Abgrenzung samt Tabelle in\ndessen Klassendoku (`article-pullquote.component.ts`).",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "area": {
11
+ "name": "area",
12
+ "description": "Markenbereich → data-area (Akzentleiste + getönter Grund).",
13
+ "type": {
14
+ "name": "enum",
15
+ "value": [
16
+ "co",
17
+ "ki",
18
+ "es",
19
+ "wo"
20
+ ]
21
+ },
22
+ "table": {
23
+ "category": "inputs",
24
+ "type": {
25
+ "summary": "CdsArea"
26
+ },
27
+ "defaultValue": {
28
+ "summary": "co"
29
+ }
30
+ }
31
+ },
32
+ "name": {
33
+ "name": "name",
34
+ "description": "Name der zitierten Person.",
35
+ "type": {
36
+ "name": "string",
37
+ "required": true
38
+ },
39
+ "table": {
40
+ "category": "inputs",
41
+ "type": {
42
+ "summary": "string"
43
+ },
44
+ "defaultValue": {}
45
+ }
46
+ },
47
+ "quote": {
48
+ "name": "quote",
49
+ "description": "Zitattext.",
50
+ "type": {
51
+ "name": "string",
52
+ "required": true
53
+ },
54
+ "table": {
55
+ "category": "inputs",
56
+ "type": {
57
+ "summary": "string"
58
+ },
59
+ "defaultValue": {}
60
+ }
61
+ },
62
+ "roleLabel": {
63
+ "name": "roleLabel",
64
+ "description": "Rolle/Funktion der zitierten Person (leer = keine Caption-Zeile dafür).",
65
+ "type": {
66
+ "name": "string"
67
+ },
68
+ "table": {
69
+ "category": "inputs",
70
+ "type": {
71
+ "summary": "string"
72
+ },
73
+ "defaultValue": {
74
+ "summary": ""
75
+ }
76
+ }
77
+ }
78
+ },
79
+ "apiDescription": "## Inputs\n\n```\nexport type BlockquoteComponentInputs = {\n /**\n * Markenbereich → data-area (Akzentleiste + getönter Grund).\n *\n * @default co\n */\n area?: CdsArea;\n /** Name der zitierten Person. */\n name: string;\n /** Zitattext. */\n quote: string;\n /**\n * Rolle/Funktion der zitierten Person (leer = keine Caption-Zeile dafür).\n *\n * @default ''\n */\n roleLabel?: string;\n}\n```",
80
+ "renderer": "angular",
81
+ "angularComponentMeta": {
82
+ "name": "BlockquoteComponent",
83
+ "selector": "cds-blockquote",
84
+ "standalone": true,
85
+ "inputs": [
86
+ "area",
87
+ "name",
88
+ "quote",
89
+ "roleLabel"
90
+ ],
91
+ "outputs": [],
92
+ "enums": []
93
+ }
94
+ }
95
+ }
96
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "components": {
3
+ "komponenten-zitate-testimonials-teamvoice": {
4
+ "id": "komponenten-zitate-testimonials-teamvoice",
5
+ "name": "TeamVoiceComponent",
6
+ "path": "./src/lib/team-voice/team-voice.stories.ts",
7
+ "description": "TeamVoice — Wrapper um `.team-voice` aus css/components.css → „Team-Stimmen“.\n\nEditoriale Zitat-Reihe mit seitlichem Foto (im Grid abwechselnd links/rechts,\ngesteuert per :nth-child innerhalb von `.team-voices`), bereichsgefärbtem\nAkzent (data-area), Quote-Icon (ui-quote), Zitat und Name/Rolle. Mehrere\nKomponenten in einen `<div class=\"team-voices\">` legen, damit das alternierende\nLayout greift (siehe Story).",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "area": {
11
+ "name": "area",
12
+ "description": "Markenbereich → data-area (Akzentfarbe + Rahmen).",
13
+ "type": {
14
+ "name": "enum",
15
+ "value": [
16
+ "co",
17
+ "ki",
18
+ "es",
19
+ "wo"
20
+ ]
21
+ },
22
+ "table": {
23
+ "category": "inputs",
24
+ "type": {
25
+ "summary": "CdsArea"
26
+ },
27
+ "defaultValue": {
28
+ "summary": "co"
29
+ }
30
+ }
31
+ },
32
+ "image": {
33
+ "name": "image",
34
+ "description": "Bild-URL; leer = neutraler Platzhalter (Doku-Assets sind hier nicht eingebunden).",
35
+ "type": {
36
+ "name": "string"
37
+ },
38
+ "table": {
39
+ "category": "inputs",
40
+ "type": {
41
+ "summary": "string"
42
+ },
43
+ "defaultValue": {
44
+ "summary": ""
45
+ }
46
+ }
47
+ },
48
+ "imageAlt": {
49
+ "name": "imageAlt",
50
+ "description": "Alternativtext des Fotos.",
51
+ "type": {
52
+ "name": "string"
53
+ },
54
+ "table": {
55
+ "category": "inputs",
56
+ "type": {
57
+ "summary": "string"
58
+ },
59
+ "defaultValue": {
60
+ "summary": "Teamfoto"
61
+ }
62
+ }
63
+ },
64
+ "name": {
65
+ "name": "name",
66
+ "description": "Name der zitierten Person.",
67
+ "type": {
68
+ "name": "string",
69
+ "required": true
70
+ },
71
+ "table": {
72
+ "category": "inputs",
73
+ "type": {
74
+ "summary": "string"
75
+ },
76
+ "defaultValue": {}
77
+ }
78
+ },
79
+ "quote": {
80
+ "name": "quote",
81
+ "description": "Zitattext.",
82
+ "type": {
83
+ "name": "string",
84
+ "required": true
85
+ },
86
+ "table": {
87
+ "category": "inputs",
88
+ "type": {
89
+ "summary": "string"
90
+ },
91
+ "defaultValue": {}
92
+ }
93
+ },
94
+ "roleLabel": {
95
+ "name": "roleLabel",
96
+ "description": "Rolle/Funktion der zitierten Person (leer = keine Rollenzeile).",
97
+ "type": {
98
+ "name": "string"
99
+ },
100
+ "table": {
101
+ "category": "inputs",
102
+ "type": {
103
+ "summary": "string"
104
+ },
105
+ "defaultValue": {
106
+ "summary": ""
107
+ }
108
+ }
109
+ }
110
+ },
111
+ "apiDescription": "## Inputs\n\n```\nexport type TeamVoiceComponentInputs = {\n /**\n * Markenbereich → data-area (Akzentfarbe + Rahmen).\n *\n * @default co\n */\n area?: CdsArea;\n /**\n * Bild-URL; leer = neutraler Platzhalter (Doku-Assets sind hier nicht eingebunden).\n *\n * @default ''\n */\n image?: string;\n /**\n * Alternativtext des Fotos.\n *\n * @default Teamfoto\n */\n imageAlt?: string;\n /** Name der zitierten Person. */\n name: string;\n /** Zitattext. */\n quote: string;\n /**\n * Rolle/Funktion der zitierten Person (leer = keine Rollenzeile).\n *\n * @default ''\n */\n roleLabel?: string;\n}\n```",
112
+ "renderer": "angular",
113
+ "angularComponentMeta": {
114
+ "name": "TeamVoiceComponent",
115
+ "selector": "cds-team-voice",
116
+ "standalone": true,
117
+ "inputs": [
118
+ "area",
119
+ "image",
120
+ "imageAlt",
121
+ "name",
122
+ "quote",
123
+ "roleLabel"
124
+ ],
125
+ "outputs": [],
126
+ "enums": []
127
+ }
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "components": {
3
+ "komponenten-zitate-testimonials-testimonial": {
4
+ "id": "komponenten-zitate-testimonials-testimonial",
5
+ "name": "TestimonialComponent",
6
+ "path": "./src/lib/testimonial/testimonial.stories.ts",
7
+ "description": "Testimonial — Wrapper um `.testimonial` aus css/components.css → „Testimonial Card“.\n\nStatische Zitat-Karte mit bereichsgefärbtem Top-Akzent (data-area), Quote-Icon\n(.testimonial-icon, fill:currentColor), Zitat (blockquote) und Footer mit Name/Rolle.\nNur bestehende Klassen — kein eigenes CSS.",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "area": {
11
+ "name": "area",
12
+ "description": "Markenbereich → data-area (Top-Akzent + Icon-Farbe).",
13
+ "type": {
14
+ "name": "enum",
15
+ "value": [
16
+ "co",
17
+ "ki",
18
+ "es",
19
+ "wo"
20
+ ]
21
+ },
22
+ "table": {
23
+ "category": "inputs",
24
+ "type": {
25
+ "summary": "CdsArea"
26
+ },
27
+ "defaultValue": {
28
+ "summary": "co"
29
+ }
30
+ }
31
+ },
32
+ "name": {
33
+ "name": "name",
34
+ "description": "Name der zitierten Person.",
35
+ "type": {
36
+ "name": "string",
37
+ "required": true
38
+ },
39
+ "table": {
40
+ "category": "inputs",
41
+ "type": {
42
+ "summary": "string"
43
+ },
44
+ "defaultValue": {}
45
+ }
46
+ },
47
+ "quote": {
48
+ "name": "quote",
49
+ "description": "Zitattext.",
50
+ "type": {
51
+ "name": "string",
52
+ "required": true
53
+ },
54
+ "table": {
55
+ "category": "inputs",
56
+ "type": {
57
+ "summary": "string"
58
+ },
59
+ "defaultValue": {}
60
+ }
61
+ },
62
+ "roleLabel": {
63
+ "name": "roleLabel",
64
+ "description": "Rolle/Funktion der zitierten Person (leer = keine Rollenzeile im Footer).",
65
+ "type": {
66
+ "name": "string"
67
+ },
68
+ "table": {
69
+ "category": "inputs",
70
+ "type": {
71
+ "summary": "string"
72
+ },
73
+ "defaultValue": {
74
+ "summary": ""
75
+ }
76
+ }
77
+ }
78
+ },
79
+ "apiDescription": "## Inputs\n\n```\nexport type TestimonialComponentInputs = {\n /**\n * Markenbereich → data-area (Top-Akzent + Icon-Farbe).\n *\n * @default co\n */\n area?: CdsArea;\n /** Name der zitierten Person. */\n name: string;\n /** Zitattext. */\n quote: string;\n /**\n * Rolle/Funktion der zitierten Person (leer = keine Rollenzeile im Footer).\n *\n * @default ''\n */\n roleLabel?: string;\n}\n```",
80
+ "renderer": "angular",
81
+ "angularComponentMeta": {
82
+ "name": "TestimonialComponent",
83
+ "selector": "cds-testimonial",
84
+ "standalone": true,
85
+ "inputs": [
86
+ "area",
87
+ "name",
88
+ "quote",
89
+ "roleLabel"
90
+ ],
91
+ "outputs": [],
92
+ "enums": []
93
+ }
94
+ }
95
+ }
96
+ }