@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,186 @@
1
+ {
2
+ "components": {
3
+ "komponenten-navigation-topnav": {
4
+ "id": "komponenten-navigation-topnav",
5
+ "name": "TopnavComponent",
6
+ "path": "./src/lib/topnav/topnav.stories.ts",
7
+ "description": "Topnav — Wrapper um `.ep-topnav` aus css/components.css → „Topnav“.\n\nCustomer-Navigation: Logo, Top-Level-Links mit optionalem Klapp-Submenü\n(.ep-nav-has-sub / .ep-nav-sub, aria-expanded), rechts gebündelte Aktionen\n(Such-Popover .ep-nav-search + Theme-Cycle-Button) und ein CTA-Button.\nDisclosure-Logik in Angular: nur ein Menü offen, Escape und Außenklick schließen.\n\nDer Theme-Umschalter ist fest der Cycle-Button (cds-theme-cycle); ob er auch\n„System“ anbietet, steuert `showSystemTheme` (durchgereicht an dessen showSystem).",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "activeHref": {
11
+ "name": "activeHref",
12
+ "description": "Href des aktuell aktiven Eintrags (Single Source of Truth). Nur der Eintrag\n — Top-Level ODER Sub — mit passendem href erhält aria-current=\"page\". Dadurch\n kann strukturell höchstens EINER aktiv sein (statt mehrerer current-Flags).",
13
+ "type": {
14
+ "name": "string"
15
+ },
16
+ "table": {
17
+ "category": "inputs",
18
+ "type": {
19
+ "summary": "string"
20
+ },
21
+ "defaultValue": {}
22
+ }
23
+ },
24
+ "ctaLabel": {
25
+ "name": "ctaLabel",
26
+ "type": {
27
+ "name": "string"
28
+ },
29
+ "table": {
30
+ "category": "inputs",
31
+ "type": {
32
+ "summary": "string"
33
+ },
34
+ "defaultValue": {
35
+ "summary": "Kontakt"
36
+ }
37
+ }
38
+ },
39
+ "links": {
40
+ "name": "links",
41
+ "type": {
42
+ "name": "other",
43
+ "value": "empty-enum"
44
+ },
45
+ "table": {
46
+ "category": "inputs",
47
+ "type": {
48
+ "summary": "CdsNavItem[]"
49
+ },
50
+ "defaultValue": {
51
+ "summary": "[\n {\n label: 'Leistungen',\n sub: [\n { label: 'Angewandte KI', href: '#ki' },\n { label: 'Effektive Software', href: '#software' },\n { label: 'Wirksame Organisationen', href: '#organisationen' },\n ],\n },\n {\n label: 'Unternehmen',\n sub: [\n { label: 'Über uns', href: '#ueber-uns' },\n { label: 'Team', href: '#team' },\n { label: 'Jobs', href: '#jobs' },\n ],\n },\n { label: 'Beiträge', href: '#beitraege' },\n { label: 'Kontakt', href: '#kontakt' },\n ]"
52
+ }
53
+ }
54
+ },
55
+ "logo": {
56
+ "name": "logo",
57
+ "type": {
58
+ "name": "string"
59
+ },
60
+ "table": {
61
+ "category": "inputs",
62
+ "type": {
63
+ "summary": "string"
64
+ },
65
+ "defaultValue": {
66
+ "summary": "conciso."
67
+ }
68
+ }
69
+ },
70
+ "logoAlt": {
71
+ "name": "logoAlt",
72
+ "description": "Alt-Text des Logo-Bilds (Fallback: der Text aus `logo`).",
73
+ "type": {
74
+ "name": "string"
75
+ },
76
+ "table": {
77
+ "category": "inputs",
78
+ "type": {
79
+ "summary": "string"
80
+ },
81
+ "defaultValue": {
82
+ "summary": ""
83
+ }
84
+ }
85
+ },
86
+ "logoDarkSrc": {
87
+ "name": "logoDarkSrc",
88
+ "description": "Optionale helle Logo-Variante für den Dark Mode (Doku: logo-conciso-light.svg).\n Gesetzt → Theme-Swap via .logo-themed-* (schaltet über [data-theme] um);\n sonst wird logoSrc in beiden Themes gezeigt.",
89
+ "type": {
90
+ "name": "string"
91
+ },
92
+ "table": {
93
+ "category": "inputs",
94
+ "type": {
95
+ "summary": "string"
96
+ },
97
+ "defaultValue": {}
98
+ }
99
+ },
100
+ "logoSrc": {
101
+ "name": "logoSrc",
102
+ "description": "Optionales Logo-Bild/-Icon (URL oder Data-URI). Gesetzt → statt des Text-Logos.\n Doku: immer SVG (logo-conciso.svg), Default-Variante für helle Hintergründe.",
103
+ "type": {
104
+ "name": "string"
105
+ },
106
+ "table": {
107
+ "category": "inputs",
108
+ "type": {
109
+ "summary": "string"
110
+ },
111
+ "defaultValue": {}
112
+ }
113
+ },
114
+ "showCta": {
115
+ "name": "showCta",
116
+ "description": "Kontakt-/CTA-Button anzeigen.",
117
+ "type": {
118
+ "name": "boolean"
119
+ },
120
+ "table": {
121
+ "category": "inputs",
122
+ "type": {
123
+ "summary": "boolean"
124
+ },
125
+ "defaultValue": {
126
+ "summary": true
127
+ }
128
+ }
129
+ },
130
+ "showSearch": {
131
+ "name": "showSearch",
132
+ "description": "Suche (Icon + Popover) rechts anzeigen.",
133
+ "type": {
134
+ "name": "boolean"
135
+ },
136
+ "table": {
137
+ "category": "inputs",
138
+ "type": {
139
+ "summary": "boolean"
140
+ },
141
+ "defaultValue": {
142
+ "summary": true
143
+ }
144
+ }
145
+ },
146
+ "showSystemTheme": {
147
+ "name": "showSystemTheme",
148
+ "description": "Bietet der Theme-Cycle-Button im Header auch „System“ an (tri) oder nur Hell/Dunkel?",
149
+ "type": {
150
+ "name": "boolean"
151
+ },
152
+ "table": {
153
+ "category": "inputs",
154
+ "type": {
155
+ "summary": "boolean"
156
+ },
157
+ "defaultValue": {
158
+ "summary": true
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "apiDescription": "## Inputs\n\n```\nexport type TopnavComponentInputs = {\n /**\n * Href des aktuell aktiven Eintrags (Single Source of Truth). Nur der Eintrag\n * — Top-Level ODER Sub — mit passendem href erhält aria-current=\"page\". Dadurch\n * kann strukturell höchstens EINER aktiv sein (statt mehrerer current-Flags).\n */\n activeHref?: string;\n /** @default Kontakt */\n ctaLabel?: string;\n /**\n * @default [\n * {\n * label: 'Leistungen',\n * sub: [\n * { label: 'Angewandte KI', href: '#ki' },\n * { label: 'Effektive Software', href: '#software' },\n * { label: 'Wirksame Organisationen', href: '#organisationen' },\n * ],\n * },\n * {\n * label: 'Unternehmen',\n * sub: [\n * { label: 'Über uns', href: '#ueber-uns' },\n * { label: 'Team', href: '#team' },\n * { label: 'Jobs', href: '#jobs' },\n * ],\n * },\n * { label: 'Beiträge', href: '#beitraege' },\n * { label: 'Kontakt', href: '#kontakt' },\n * ]\n */\n links?: CdsNavItem[];\n /** @default conciso. */\n logo?: string;\n /**\n * Alt-Text des Logo-Bilds (Fallback: der Text aus `logo`).\n *\n * @default ''\n */\n logoAlt?: string;\n /**\n * Optionale helle Logo-Variante für den Dark Mode (Doku: logo-conciso-light.svg).\n * Gesetzt → Theme-Swap via .logo-themed-* (schaltet über [data-theme] um);\n * sonst wird logoSrc in beiden Themes gezeigt.\n */\n logoDarkSrc?: string;\n /**\n * Optionales Logo-Bild/-Icon (URL oder Data-URI). Gesetzt → statt des Text-Logos.\n * Doku: immer SVG (logo-conciso.svg), Default-Variante für helle Hintergründe.\n */\n logoSrc?: string;\n /**\n * Kontakt-/CTA-Button anzeigen.\n *\n * @default true\n */\n showCta?: boolean;\n /**\n * Suche (Icon + Popover) rechts anzeigen.\n *\n * @default true\n */\n showSearch?: boolean;\n /**\n * Bietet der Theme-Cycle-Button im Header auch „System“ an (tri) oder nur Hell/Dunkel?\n *\n * @default true\n */\n showSystemTheme?: boolean;\n}\n```",
164
+ "renderer": "angular",
165
+ "angularComponentMeta": {
166
+ "name": "TopnavComponent",
167
+ "selector": "cds-topnav",
168
+ "standalone": true,
169
+ "inputs": [
170
+ "activeHref",
171
+ "ctaLabel",
172
+ "links",
173
+ "logo",
174
+ "logoAlt",
175
+ "logoDarkSrc",
176
+ "logoSrc",
177
+ "showCta",
178
+ "showSearch",
179
+ "showSystemTheme"
180
+ ],
181
+ "outputs": [],
182
+ "enums": []
183
+ }
184
+ }
185
+ }
186
+ }
@@ -0,0 +1,113 @@
1
+ {
2
+ "components": {
3
+ "komponenten-sektion-sektion": {
4
+ "id": "komponenten-sektion-sektion",
5
+ "name": "SectionComponent",
6
+ "path": "./src/lib/section/section.stories.ts",
7
+ "description": "Section (`[cdsSection]`) — Wrapper um `.ep-section` aus css/components.css\n(css/components.css:1223–1253, mobiler Innenabstand: Zeile 1228) mit dem optionalen\nKopf-Trio `.ep-section-label` (Kicker) / `.ep-section-h2` (Überschrift) /\n`.ep-section-sub` (Lead). Das strukturelle Grundgerüst, in dem auf den\nBeispielseiten praktisch jeder andere Baustein sitzt (133 Vorkommen, 85 davon mit\nKopfzeile).\n\nAlle drei Textteile sind Beiwerk (`input('')`): eine Sektion besteht auch ganz ohne\nKopf, nur aus ihrem projizierten Inhalt (docs/index.html:9378). Der Inhalt selbst\nkommt per `<ng-content>` und ist deshalb kein Input.\n\n**Entscheidung 1 — Attributselektor, der Konsument wählt `<section>` oder `<div>`.**\nErste Fassung war `cds-section` als eigenes Element, das intern selbst entschied:\n`<section aria-labelledby=\"…\">`, wenn ein zugänglicher Name verfügbar war, sonst ein\nnamenloses `<div>`. Das setzte voraus, dass ein `background` auf einem\nUMSCHLIESSENDEN Element sitzen musste (siehe Entscheidung 2) — gemessen im laufenden\nStorybook (siehe `docs/adr/0008-selektortyp-der-wrapper-komponenten.md`, „Fall 2“):\n`getComputedStyle(host).backgroundColor` und `host.getBoundingClientRect()`\nmeldeten beide „passt“, der Screenshot zeigte trotzdem keine gemalte Fläche — ein\nunbekanntes Custom Element ohne eigene Inline-Inhalte, dessen einziges Kind als Block\nherausgebrochen wird, hat keine eigene Box zum Malen.\n\nDie Komponente hängt sich deshalb als Attribut an ein vom Konsumenten geschriebenes\n`<section>` oder `<div>`, analog zu `cds-icon-card`\n(`icon-card/icon-card.component.ts`). Der Konsument entscheidet über das Tag, ob die\nSektion überhaupt eine `<section>`-Landmark werden KANN; die Komponente entscheidet\nnur noch, ob sie `aria-labelledby` setzt (die eigene, gerenderte `.ep-section-h2` hat\nVorrang, sonst — wenn `heading` leer bleibt — die per `labelledBy` übergebene id einer\nÜberschrift außerhalb der Komponente). Schreibt der Konsument `<section cdsSection>`\nohne Namen, bleibt es bei einer `<section>` ohne `aria-labelledby`: HTML-AAM gibt ihr\ndann keine Landmark-Rolle, aber das ist eine Entscheidung des Konsumenten, keine der\nKomponente — sie erzwingt kein Tag mehr.\n\n**Entscheidung 2 — kein `background`-Input, die Fläche darf jetzt aber am Host\nsitzen.** Das Mockup setzt Sektionsflächen inline (`style=\"background:var(--bg-surface)\"`\n/ `--co-50` / …). Das ist der Flächen-Rhythmus zwischen aufeinanderfolgenden\nSektionen einer SEITE (Begründung inkl. Messwerten in docs/index.html:1450, „Warum\nnicht die Sektion senken?“) — eine Entscheidung, die nur die Seite treffen kann, weil\nnur sie ihre Nachbar-Sektionen kennt. Ein Bauteil kennt seinen Kontext nicht\n(CONTRIBUTING.md §7) und bekäme mit einem `background`-Input eine Zuständigkeit, die\nihm nicht zusteht. Der Konsument setzt die Fläche deshalb weiterhin selbst — jetzt\naber direkt auf dem Element, das `cdsSection` trägt (`<section cdsSection\nstyle=\"background:…\">` bzw. `<div cdsSection style=\"…\">`), denn dieses Element IST\n`.ep-section`, kein Host mehr davor. Das umschließende Element aus der ersten Fassung\nist damit nicht mehr nötig (siehe Story „Fläche am Host“).",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "area": {
11
+ "name": "area",
12
+ "description": "Markenbereich → `.t-{area}` auf dem Label (Mockup: `class=\"ep-section-label t-co\"`).",
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
+ }
29
+ },
30
+ "heading": {
31
+ "name": "heading",
32
+ "description": "Sektions-Überschrift (`.ep-section-h2`, leer = keine Überschrift).",
33
+ "type": {
34
+ "name": "string"
35
+ },
36
+ "table": {
37
+ "category": "inputs",
38
+ "type": {
39
+ "summary": "string"
40
+ },
41
+ "defaultValue": {
42
+ "summary": ""
43
+ }
44
+ }
45
+ },
46
+ "label": {
47
+ "name": "label",
48
+ "description": "Kicker-Text über der Überschrift (`.ep-section-label`, leer = keine Kopfzeile).",
49
+ "type": {
50
+ "name": "string"
51
+ },
52
+ "table": {
53
+ "category": "inputs",
54
+ "type": {
55
+ "summary": "string"
56
+ },
57
+ "defaultValue": {
58
+ "summary": ""
59
+ }
60
+ }
61
+ },
62
+ "labelledBy": {
63
+ "name": "labelledBy",
64
+ "description": "Id einer Überschrift AUSSERHALB der Komponente, die als zugänglicher Name dient,\nwenn `heading` leer bleibt (siehe Entscheidung 1 in der Klassendoku).",
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
+ "sub": {
79
+ "name": "sub",
80
+ "description": "Lead-Text unter der Überschrift (`.ep-section-sub`, leer = kein Lead).",
81
+ "type": {
82
+ "name": "string"
83
+ },
84
+ "table": {
85
+ "category": "inputs",
86
+ "type": {
87
+ "summary": "string"
88
+ },
89
+ "defaultValue": {
90
+ "summary": ""
91
+ }
92
+ }
93
+ }
94
+ },
95
+ "apiDescription": "## Inputs\n\n```\nexport type SectionComponentInputs = {\n /** Markenbereich → `.t-{area}` auf dem Label (Mockup: `class=\"ep-section-label t-co\"`). */\n area?: CdsArea;\n /**\n * Sektions-Überschrift (`.ep-section-h2`, leer = keine Überschrift).\n *\n * @default ''\n */\n heading?: string;\n /**\n * Kicker-Text über der Überschrift (`.ep-section-label`, leer = keine Kopfzeile).\n *\n * @default ''\n */\n label?: string;\n /**\n * Id einer Überschrift AUSSERHALB der Komponente, die als zugänglicher Name dient,\n * wenn `heading` leer bleibt (siehe Entscheidung 1 in der Klassendoku).\n *\n * @default ''\n */\n labelledBy?: string;\n /**\n * Lead-Text unter der Überschrift (`.ep-section-sub`, leer = kein Lead).\n *\n * @default ''\n */\n sub?: string;\n}\n```",
96
+ "renderer": "angular",
97
+ "angularComponentMeta": {
98
+ "name": "SectionComponent",
99
+ "selector": "section[cdsSection], div[cdsSection]",
100
+ "standalone": true,
101
+ "inputs": [
102
+ "area",
103
+ "heading",
104
+ "label",
105
+ "labelledBy",
106
+ "sub"
107
+ ],
108
+ "outputs": [],
109
+ "enums": []
110
+ }
111
+ }
112
+ }
113
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "components": {
3
+ "komponenten-slider-carousel-carousel": {
4
+ "id": "komponenten-slider-carousel-carousel",
5
+ "name": "CarouselComponent",
6
+ "path": "./src/lib/carousel/carousel.stories.ts",
7
+ "description": "Carousel — Wrapper um `.img-slider` aus css/components.css → „Bild-Slider“.\n\nCrossfade-Carousel: alle Slides liegen gestapelt im Grid, die aktive trägt\n`.active` (opacity). Inaktive Slides bekommen zusätzlich `[aria-hidden]`, sonst\nläse ein Screenreader Titel und Text jeder Folie vor, obwohl visuell nur eine\nsichtbar ist (identisches Muster wie beim LogoCarousel). Prev/Next-Buttons\n(.img-slider-btn) und Dots (.img-dot) steuern den Index. Optionale Hero-Variante\n(.img-slider-hero). Ohne Bild-URL wird ein neutraler Platzhalter gezeigt. Der\naktive Index ist über `[(active)]` (model) beobacht-/steuerbar.",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "active": {
11
+ "name": "active",
12
+ "description": "Aktiver Slide-Index. Two-Way (`[(active)]`) via model().",
13
+ "type": {
14
+ "name": "number"
15
+ },
16
+ "table": {
17
+ "category": "inputs",
18
+ "type": {
19
+ "summary": "number"
20
+ },
21
+ "defaultValue": {
22
+ "summary": 0
23
+ }
24
+ }
25
+ },
26
+ "hero": {
27
+ "name": "hero",
28
+ "description": "Hero-Variante (vollflächig, 21:9, Caption als Overlay) → .img-slider-hero.",
29
+ "type": {
30
+ "name": "boolean"
31
+ },
32
+ "table": {
33
+ "category": "inputs",
34
+ "type": {
35
+ "summary": "boolean"
36
+ },
37
+ "defaultValue": {
38
+ "summary": false
39
+ }
40
+ }
41
+ },
42
+ "slides": {
43
+ "name": "slides",
44
+ "description": "Anzuzeigende Slides (Bild optional, Titel/Text je Slide Pflicht).",
45
+ "type": {
46
+ "name": "other",
47
+ "value": "empty-enum",
48
+ "required": true
49
+ },
50
+ "table": {
51
+ "category": "inputs",
52
+ "type": {
53
+ "summary": "CdsSlide[]"
54
+ },
55
+ "defaultValue": {}
56
+ }
57
+ },
58
+ "activeChange": {
59
+ "name": "activeChange",
60
+ "description": "Aktiver Slide-Index. Two-Way (`[(active)]`) via model().",
61
+ "type": {
62
+ "name": "other",
63
+ "value": "void"
64
+ },
65
+ "action": "activeChange",
66
+ "table": {
67
+ "category": "outputs",
68
+ "type": {
69
+ "summary": "(e: number) => void"
70
+ }
71
+ }
72
+ }
73
+ },
74
+ "apiDescription": "## Inputs\n\n```\nexport type CarouselComponentInputs = {\n /**\n * Aktiver Slide-Index. Two-Way (`[(active)]`) via model().\n *\n * @default 0\n */\n active?: number; // two-way: [(active)]\n /**\n * Hero-Variante (vollflächig, 21:9, Caption als Overlay) → .img-slider-hero.\n *\n * @default false\n */\n hero?: boolean;\n /** Anzuzeigende Slides (Bild optional, Titel/Text je Slide Pflicht). */\n slides: CdsSlide[];\n}\n```\n\n## Outputs\n\n```\nexport type CarouselComponentOutputs = {\n /** Aktiver Slide-Index. Two-Way (`[(active)]`) via model(). */\n activeChange: (e: number) => void;\n}\n```",
75
+ "renderer": "angular",
76
+ "angularComponentMeta": {
77
+ "name": "CarouselComponent",
78
+ "selector": "cds-carousel",
79
+ "standalone": true,
80
+ "inputs": [
81
+ "active",
82
+ "hero",
83
+ "slides"
84
+ ],
85
+ "outputs": [
86
+ "activeChange"
87
+ ],
88
+ "enums": []
89
+ }
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "components": {
3
+ "komponenten-slider-carousel-logocarousel": {
4
+ "id": "komponenten-slider-carousel-logocarousel",
5
+ "name": "LogoCarouselComponent",
6
+ "path": "./src/lib/logo-carousel/logo-carousel.stories.ts",
7
+ "description": "LogoCarousel — Wrapper um `.logo-carousel` aus css/components.css → „Logo-Carousel“.\n\nDiskrete Sets von je fünf Logos, die automatisch per Crossfade wechseln\n(`[aria-hidden]` je Slide). Das Autoplay pausiert bei Maus-Hover und Tastatur-Fokus\n(damit Nutzer in Ruhe lesen/bedienen können), zusätzlich dauerhaft über den\nPause-Button (.logo-carousel-pause, sichtbar bei Hover/Fokus bzw. im .paused-Zustand);\nDots wählen ein Set direkt. Autoplay respektiert prefers-reduced-motion.\n\nDer Timer wird zentral über ein `effect` gesteuert: er läuft nur, wenn NICHT\npausiert, NICHT gehovert, NICHT fokussiert und reduzierte Bewegung nicht gewünscht\nist. Eine Änderung des `interval` startet ihn automatisch neu.\n\nJede Kachel ist ein `cds-logo`: bevorzugt ein Bild (`src`), sonst der Text als\nPlatzhalter/Fallback. Standardmäßig sind reine Text-Platzhalter gesetzt – reale\nAnwendungen übergeben ihre Kundenlogos als Bilder.",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "active": {
11
+ "name": "active",
12
+ "description": "Aktives Set. Two-Way (`[(active)]`) via model().",
13
+ "type": {
14
+ "name": "number"
15
+ },
16
+ "table": {
17
+ "category": "inputs",
18
+ "type": {
19
+ "summary": "number"
20
+ },
21
+ "defaultValue": {
22
+ "summary": 0
23
+ }
24
+ }
25
+ },
26
+ "interval": {
27
+ "name": "interval",
28
+ "description": "Autoplay-Intervall in **Millisekunden** (Standard 6000 = 6 s).",
29
+ "type": {
30
+ "name": "number"
31
+ },
32
+ "table": {
33
+ "category": "inputs",
34
+ "type": {
35
+ "summary": "number"
36
+ },
37
+ "defaultValue": {
38
+ "summary": 6000
39
+ }
40
+ }
41
+ },
42
+ "sets": {
43
+ "name": "sets",
44
+ "description": "Logo-Sets, die im Wechsel angezeigt werden (mind. ein Eintrag je Set).",
45
+ "type": {
46
+ "name": "other",
47
+ "value": "empty-enum",
48
+ "required": true
49
+ },
50
+ "table": {
51
+ "category": "inputs",
52
+ "type": {
53
+ "summary": "CdsLogo[][]"
54
+ },
55
+ "defaultValue": {}
56
+ }
57
+ },
58
+ "activeChange": {
59
+ "name": "activeChange",
60
+ "description": "Aktives Set. Two-Way (`[(active)]`) via model().",
61
+ "type": {
62
+ "name": "other",
63
+ "value": "void"
64
+ },
65
+ "action": "activeChange",
66
+ "table": {
67
+ "category": "outputs",
68
+ "type": {
69
+ "summary": "(e: number) => void"
70
+ }
71
+ }
72
+ }
73
+ },
74
+ "apiDescription": "## Inputs\n\n```\nexport type LogoCarouselComponentInputs = {\n /**\n * Aktives Set. Two-Way (`[(active)]`) via model().\n *\n * @default 0\n */\n active?: number; // two-way: [(active)]\n /**\n * Autoplay-Intervall in **Millisekunden** (Standard 6000 = 6 s).\n *\n * @default 6000\n */\n interval?: number;\n /** Logo-Sets, die im Wechsel angezeigt werden (mind. ein Eintrag je Set). */\n sets: CdsLogo[][];\n}\n```\n\n## Outputs\n\n```\nexport type LogoCarouselComponentOutputs = {\n /** Aktives Set. Two-Way (`[(active)]`) via model(). */\n activeChange: (e: number) => void;\n}\n```",
75
+ "renderer": "angular",
76
+ "angularComponentMeta": {
77
+ "name": "LogoCarouselComponent",
78
+ "selector": "cds-logo-carousel",
79
+ "standalone": true,
80
+ "inputs": [
81
+ "active",
82
+ "interval",
83
+ "sets"
84
+ ],
85
+ "outputs": [
86
+ "activeChange"
87
+ ],
88
+ "enums": []
89
+ }
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "components": {
3
+ "komponenten-tabelle-tabelle": {
4
+ "id": "komponenten-tabelle-tabelle",
5
+ "name": "TableComponent",
6
+ "path": "./src/lib/table/table.stories.ts",
7
+ "description": "Table (`cds-table`) — Wrapper um `.tbl`/`.tbl-wrap` aus css/components.css\n(css/components.css:1462–1480): die Datentabelle der Doku-Site (`sec-table`,\nNav-Einträge „Standard“ und „Gestreift“). Ausgezählt: außerhalb von `sec-table`\nselbst kommt `.tbl-wrap` nur zweimal vor, beide auf Beitragsseiten\n(`docs/index.html:8622`, `15080`) — keine der 24 Beispielseiten außerhalb von\nWissensbeiträgen setzt aktuell eine Tabelle ein. Neuntes Ticket der\nSeitenbausteine-Serie.\n\n**Kein Daten-Input.** Eine `columns`/`rows`-API würde Zellinhalte auf Strings\nfestlegen; die Beispielseiten setzen darin Badges, Links und `data-num`\n(`docs/index.html:5076–5177`). Der Konsument projiziert `<thead>`/`<tbody>`/\n`<tfoot>` unverändert per `<ng-content>`, die Komponente liefert nur die\nHülle: `.tbl-wrap`, `.tbl`, `<caption>` und die Striped-Klasse.\n\n**`caption` ist Pflicht (`input.required<string>()`), abweichend von der\nTicket-Skizze (dort `caption? = ''`).** Die eigene Doku dieser Komponente\n(`storybook-angular/src/docs/komponenten/tabelle.mdx:137`) nennt `<caption>`\nausdrücklich „Pflicht, Screenreader lesen den Titel vor, bevor die Zellen\nvorgelesen werden“ und wiederholt das in den Dos (`tabelle.mdx:147`:\n„`<caption>` und `scope`-Attribute immer setzen, auch bei einfachen\nTabellen“). Ausgezählt: alle 5 realen `.tbl`-Vorkommen in `docs/index.html`\nhaben eine `<caption>`, ausnahmslos. Ein optionaler Input mit Default `''`\nhätte genau den Fall erlaubt, den die eigene Doku verbietet — nach\nADR-0007 §2 ist `caption` damit Inhalt, nicht Beiwerk: ohne sie ist eine\n`cds-table` eine Tabelle, die die eigenen Barrierefreiheitsregeln bricht,\nalso sinnlos. Ein vergessenes Binding wirft jetzt `NG0950`, statt eine\nunbeschriftete Tabelle still auszuliefern.\n\n**Element-Selektor, `.tbl-wrap`/`.tbl` sitzen im eigenen Template, nicht am\nHost (ADR-0008-Standardfall, analog zu `cds-facts`/`cds-faq`).** Ausgezählt:\nalle 5 `.tbl-wrap`-Vorkommen in `docs/index.html` (Zeilen 5061, 5116, 5236,\n8622, 15080). Keines ist selbst ein direktes Grid-/Flex-Kind — das einzige\nVorkommen in einem `.layout-grid` (Zeile 5236) sitzt eine Ebene tiefer in\neinem `.col-8`, das seinerseits der Grid-Child ist; `.tbl-wrap` ist dort ein\ngewöhnlicher Block-Nachfahre, dessen Breite vom umschließenden `.col-8`\nkommt, nicht von `align-items:stretch` auf einer bestimmten DOM-Tiefe (kein\n`.ep-card`-Fall). Keines trägt eine `col-*`-Klasse selbst, keines variiert\ndas Tag (immer `<div class=\"tbl-wrap\">`). Ein `<cds-table>`-Host ohne eigene\nKlasse und ohne eigenes `background` gerät deshalb nicht in den „Fläche am\nHost“-Fall aus ADR-0008 Fall 2: die Komponente setzt nichts auf dem Host,\ndas eine eigene Box bräuchte, `.tbl-wrap` bleibt ein normaler Block-Nachfahre\nunabhängig vom `display` des `<cds-table>`-Hosts (derselbe Grund, warum\n`cds-facts`/`cds-faq` als Element-Selektor funktionieren).\n\nEine Attributselektor-Variante direkt am `<table>` (`table[cdsTable]`, analog\nzu `cdsSection`) wurde erwogen und verworfen: `<table>` ist als Tag ohnehin\nfix (kein Tag-Wechsel wie bei `cdsIconCard`), aber `.tbl-wrap` bräuchte dann\nein ZWEITES Element, das der Konsument von Hand um die Tabelle schreiben\nmüsste (`<div class=\"tbl-wrap\" tabindex=\"0\" role=\"region\" aria-label=\"…\">\n<table cdsTable>…`) — genau die beiden Aufgaben, die laut Ticket am ehesten\nvergessen werden (fokussierbarer, benannter Scroll-Container), blieben dann\nbeim Konsumenten statt bei der Komponente. Der Element-Selektor hält Wrap und\nTabelle zusammen in einem Template.\n\n**Geprüft im laufenden Storybook (Story „Interaktiv“, Play-Funktion):**\n`<table class=\"tbl\">` liegt direkt unter `<div class=\"tbl-wrap\">`, `<caption>`\nist ihr erstes Kind, danach folgen ohne zusätzlichen Knoten dazwischen genau\ndie projizierten `<thead>`/`<tbody>`-Elemente — `<ng-content>` fügt selbst\nkein DOM-Element ein, es verschiebt nur die vom Konsumenten geschriebenen\nnativen Elemente an ihre Stelle. Damit bleibt die Tabellenstruktur (`<table>`\n→ `<caption>` + `<thead>` + `<tbody>` + optional `<tfoot>`, keine fremde\nEbene dazwischen) exakt so gültig wie im rohen Markup.\n\n**`.tbl-wrap` ist immer fokussierbar UND immer benannt.** Das CSS gibt dem\nScroll-Container einen eigenen `:focus-visible`-Ring\n(css/components.css:1463) — ein scrollbarer Bereich muss per Tastatur\nerreichbar sein (WCAG 2.1.1), `tabindex=\"0\"` steht deshalb fest im Template.\n`role=\"region\"` braucht laut HTML-AAM einen zugänglichen Namen, sonst bekäme\nder Bereich keine Landmark-Rolle — weil `caption` jetzt Pflicht ist, kann\n`accessibleName()` (`scrollLabel() || caption()`) nicht mehr leer werden,\n`role`/`aria-label` sind deshalb unbedingt gesetzt, kein Nullfall mehr zu\nbehandeln. `scrollLabel` bleibt eine optionale Überschreibung (Vorrang vor\n`caption`) für Fälle, in denen der sichtbare Tabellentitel für den\nScroll-Container zu lang oder zu unspezifisch wäre.\n\n**`.tbl-sort` bleibt außen vor.** Die Klasse existiert\n(css/components.css:1477–1482), die Sortierlogik nicht — kein zugehöriges\nJS in `docs/main.js` für die Beispielseiten. Ein Wrapper, der nur den\nButton-Look lieferte, täuschte Funktion vor, die es nicht gibt. Siehe\n`.scratch/angular-seitenbausteine/issues/19-fehlende-sortierlogik-tbl-sort.md`.",
8
+ "jsDocTags": {},
9
+ "argTypes": {
10
+ "caption": {
11
+ "name": "caption",
12
+ "description": "Überschrift der Tabelle (`<caption>`, erstes Kind) — 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
+ "scrollLabel": {
26
+ "name": "scrollLabel",
27
+ "description": "Zugänglicher Name des Scroll-Containers (`aria-label` auf `.tbl-wrap`), hat\nVorrang vor `caption`. Leer = `caption` wird zum Namen (siehe Klassendoku).",
28
+ "type": {
29
+ "name": "string"
30
+ },
31
+ "table": {
32
+ "category": "inputs",
33
+ "type": {
34
+ "summary": "string"
35
+ },
36
+ "defaultValue": {
37
+ "summary": ""
38
+ }
39
+ }
40
+ },
41
+ "striped": {
42
+ "name": "striped",
43
+ "description": "Alternierende Zeilenfarbe für Tabellen mit vielen Zeilen (`.tbl--striped`).",
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
+ },
58
+ "apiDescription": "## Inputs\n\n```\nexport type TableComponentInputs = {\n /** Überschrift der Tabelle (`<caption>`, erstes Kind) — Pflicht, siehe Klassendoku. */\n caption: string;\n /**\n * Zugänglicher Name des Scroll-Containers (`aria-label` auf `.tbl-wrap`), hat\n * Vorrang vor `caption`. Leer = `caption` wird zum Namen (siehe Klassendoku).\n *\n * @default ''\n */\n scrollLabel?: string;\n /**\n * Alternierende Zeilenfarbe für Tabellen mit vielen Zeilen (`.tbl--striped`).\n *\n * @default false\n */\n striped?: boolean;\n}\n```",
59
+ "renderer": "angular",
60
+ "angularComponentMeta": {
61
+ "name": "TableComponent",
62
+ "selector": "cds-table",
63
+ "standalone": true,
64
+ "inputs": [
65
+ "caption",
66
+ "scrollLabel",
67
+ "striped"
68
+ ],
69
+ "outputs": [],
70
+ "enums": []
71
+ }
72
+ }
73
+ }
74
+ }