@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.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/bin/cds-mcp.mjs +9 -0
- package/package.json +48 -0
- package/snapshot/manifests/components.json +617 -0
- package/snapshot/manifests/docs.json +293 -0
- package/snapshot/services/addon-docs/mdx/beispielseiten-/303/274bersicht--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/grundlagen-barrierefreiheit--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/grundlagen-design-tokens--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/grundlagen-einrichtung--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/grundlagen-elevation--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/grundlagen-icons--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/grundlagen-responsive--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/grundlagen-spacing-grid--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-buchungsformular--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-buttons--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-call-to-action--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-cards-teaser--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-chips-badges-pills--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-code-block--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-dropdowns--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-feedback--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-footer--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-hero--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-inputs-forms--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-navigation--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-sektion--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-slider-carousel--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-tabelle--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-theme-umschalter--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/komponenten-zitate-testimonials--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/marke-bildsprache--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/marke-brand-areas--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/marke-logo--verwendung.json +18 -0
- package/snapshot/services/addon-docs/mdx/marke-markenrad--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/referenzen-quellen--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/seitenmuster-angebots-detailseite--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/seitenmuster-beitrags/303/274bersicht--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/seitenmuster-seminar-/302/267-training--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/seitenmuster-veranstaltung--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/seitenmuster-veranstaltungs/303/274bersicht--/303/274bersicht.json +18 -0
- package/snapshot/services/addon-docs/mdx/seitenmuster-wissensbeitrag--/303/274bersicht.json +18 -0
- package/snapshot/services/core/docgen/grundlagen-farben.json +3 -0
- package/snapshot/services/core/docgen/grundlagen-typografie.json +3 -0
- package/snapshot/services/core/docgen/komponenten-buttons-button.json +183 -0
- package/snapshot/services/core/docgen/komponenten-call-to-action-cta-band.json +131 -0
- package/snapshot/services/core/docgen/komponenten-call-to-action-downloadcta.json +182 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-card.json +146 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-feature-liste.json +128 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-featured-karte.json +158 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-icon-karte.json +111 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-klickbare-karte.json +161 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-statcard.json +115 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-statstrip.json +58 -0
- package/snapshot/services/core/docgen/komponenten-cards-teaser-tier-trenner.json +56 -0
- package/snapshot/services/core/docgen/komponenten-chips-badges-pills-bereichs-badge.json +63 -0
- package/snapshot/services/core/docgen/komponenten-chips-badges-pills-chip.json +95 -0
- package/snapshot/services/core/docgen/komponenten-chips-badges-pills-pill.json +78 -0
- package/snapshot/services/core/docgen/komponenten-chips-badges-pills-status-badge.json +63 -0
- package/snapshot/services/core/docgen/komponenten-code-block-code-block.json +91 -0
- package/snapshot/services/core/docgen/komponenten-dropdowns-combobox.json +224 -0
- package/snapshot/services/core/docgen/komponenten-dropdowns-custom-select.json +173 -0
- package/snapshot/services/core/docgen/komponenten-feedback-snackbar.json +97 -0
- package/snapshot/services/core/docgen/komponenten-footer-komplett.json +21 -0
- package/snapshot/services/core/docgen/komponenten-footer-oberer-teil.json +39 -0
- package/snapshot/services/core/docgen/komponenten-footer-unterer-teil.json +105 -0
- package/snapshot/services/core/docgen/komponenten-hero-hero-bild.json +162 -0
- package/snapshot/services/core/docgen/komponenten-hero-st/303/266rer.json +41 -0
- package/snapshot/services/core/docgen/komponenten-inputs-forms-auswahlfeld.json +192 -0
- package/snapshot/services/core/docgen/komponenten-inputs-forms-checkbox.json +182 -0
- package/snapshot/services/core/docgen/komponenten-inputs-forms-radio.json +181 -0
- package/snapshot/services/core/docgen/komponenten-inputs-forms-skala.json +179 -0
- package/snapshot/services/core/docgen/komponenten-inputs-forms-slider.json +259 -0
- package/snapshot/services/core/docgen/komponenten-inputs-forms-textbereich.json +190 -0
- package/snapshot/services/core/docgen/komponenten-inputs-forms-textfeld.json +207 -0
- package/snapshot/services/core/docgen/komponenten-navigation-topnav.json +186 -0
- package/snapshot/services/core/docgen/komponenten-sektion-sektion.json +113 -0
- package/snapshot/services/core/docgen/komponenten-slider-carousel-carousel.json +92 -0
- package/snapshot/services/core/docgen/komponenten-slider-carousel-logocarousel.json +92 -0
- package/snapshot/services/core/docgen/komponenten-tabelle-tabelle.json +74 -0
- package/snapshot/services/core/docgen/komponenten-tabelle-vergleichstabelle.json +142 -0
- package/snapshot/services/core/docgen/komponenten-theme-umschalter-cycle-button.json +41 -0
- package/snapshot/services/core/docgen/komponenten-theme-umschalter-dropdown.json +41 -0
- package/snapshot/services/core/docgen/komponenten-theme-umschalter-segment.json +41 -0
- package/snapshot/services/core/docgen/komponenten-zitate-testimonials-blockquote.json +96 -0
- package/snapshot/services/core/docgen/komponenten-zitate-testimonials-teamvoice.json +130 -0
- package/snapshot/services/core/docgen/komponenten-zitate-testimonials-testimonial.json +96 -0
- package/snapshot/services/core/docgen/marke-brand-areas-areatabs.json +75 -0
- package/snapshot/services/core/docgen/marke-logo-logo.json +71 -0
- package/snapshot/services/core/docgen/seitenmuster-seminar-/302/267-training-fakten-liste.json +79 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-article-header.json +196 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-author-card.json +91 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-avatar.json +100 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-callout.json +64 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-faq.json +41 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-figure.json +73 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-inhaltsverzeichnis.json +75 -0
- package/snapshot/services/core/docgen/seitenmuster-wissensbeitrag-pull-quote.json +63 -0
- package/snapshot/services/core/story-docs/grundlagen-farben.json +19 -0
- package/snapshot/services/core/story-docs/grundlagen-typografie.json +25 -0
- package/snapshot/services/core/story-docs/komponenten-buttons-button.json +48 -0
- package/snapshot/services/core/story-docs/komponenten-call-to-action-cta-band.json +27 -0
- package/snapshot/services/core/story-docs/komponenten-call-to-action-downloadcta.json +17 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-card.json +37 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-feature-liste.json +37 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-featured-karte.json +36 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-icon-karte.json +41 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-klickbare-karte.json +26 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-statcard.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-statstrip.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-cards-teaser-tier-trenner.json +22 -0
- package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-bereichs-badge.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-chip.json +27 -0
- package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-pill.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-chips-badges-pills-status-badge.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-code-block-code-block.json +26 -0
- package/snapshot/services/core/story-docs/komponenten-dropdowns-combobox.json +37 -0
- package/snapshot/services/core/story-docs/komponenten-dropdowns-custom-select.json +37 -0
- package/snapshot/services/core/story-docs/komponenten-feedback-snackbar.json +27 -0
- package/snapshot/services/core/story-docs/komponenten-footer-komplett.json +22 -0
- package/snapshot/services/core/story-docs/komponenten-footer-oberer-teil.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-footer-unterer-teil.json +32 -0
- package/snapshot/services/core/story-docs/komponenten-hero-hero-bild.json +37 -0
- package/snapshot/services/core/story-docs/komponenten-hero-st/303/266rer.json +26 -0
- package/snapshot/services/core/story-docs/komponenten-inputs-forms-auswahlfeld.json +32 -0
- package/snapshot/services/core/story-docs/komponenten-inputs-forms-checkbox.json +32 -0
- package/snapshot/services/core/story-docs/komponenten-inputs-forms-radio.json +32 -0
- package/snapshot/services/core/story-docs/komponenten-inputs-forms-skala.json +42 -0
- package/snapshot/services/core/story-docs/komponenten-inputs-forms-slider.json +37 -0
- package/snapshot/services/core/story-docs/komponenten-inputs-forms-textbereich.json +27 -0
- package/snapshot/services/core/story-docs/komponenten-inputs-forms-textfeld.json +32 -0
- package/snapshot/services/core/story-docs/komponenten-navigation-topnav.json +26 -0
- package/snapshot/services/core/story-docs/komponenten-sektion-sektion.json +41 -0
- package/snapshot/services/core/story-docs/komponenten-slider-carousel-carousel.json +31 -0
- package/snapshot/services/core/story-docs/komponenten-slider-carousel-logocarousel.json +27 -0
- package/snapshot/services/core/story-docs/komponenten-tabelle-tabelle.json +36 -0
- package/snapshot/services/core/story-docs/komponenten-tabelle-vergleichstabelle.json +32 -0
- package/snapshot/services/core/story-docs/komponenten-theme-umschalter-cycle-button.json +31 -0
- package/snapshot/services/core/story-docs/komponenten-theme-umschalter-dropdown.json +26 -0
- package/snapshot/services/core/story-docs/komponenten-theme-umschalter-segment.json +26 -0
- package/snapshot/services/core/story-docs/komponenten-zitate-testimonials-blockquote.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-zitate-testimonials-teamvoice.json +21 -0
- package/snapshot/services/core/story-docs/komponenten-zitate-testimonials-testimonial.json +21 -0
- package/snapshot/services/core/story-docs/marke-brand-areas-areatabs.json +26 -0
- package/snapshot/services/core/story-docs/marke-logo-logo.json +23 -0
- package/snapshot/services/core/story-docs/seitenmuster-seminar-/302/267-training-fakten-liste.json +21 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-article-header.json +37 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-author-card.json +31 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-avatar.json +32 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-callout.json +26 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-faq.json +27 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-figure.json +22 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-inhaltsverzeichnis.json +27 -0
- package/snapshot/services/core/story-docs/seitenmuster-wissensbeitrag-pull-quote.json +21 -0
- package/src/instructions.mjs +38 -0
- package/src/server.mjs +111 -0
- package/src/version-check.mjs +80 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"seitenmuster-wissensbeitrag-callout": {
|
|
4
|
+
"id": "seitenmuster-wissensbeitrag-callout",
|
|
5
|
+
"name": "ArticleCalloutComponent",
|
|
6
|
+
"path": "./src/lib/article-callout/article-callout.stories.ts",
|
|
7
|
+
"description": "ArticleCallout (`cds-article-callout`) — Wrapper um `.article-callout*` aus\ncss/components.css (css/components.css:1591–1600): der bereichsgetönte\nAside-Block für Praxis-Beispiele und „In der Realität“-Einschübe im Lauftext\neines Wissensbeitrags. Zwölftes Ticket der Seitenbausteine-Serie\n(„Artikel-Körper“). Ausgezählt: 5 reale Vorkommen, je eines pro Bereich in der\nDoku-Sektion (`docs/index.html:8086–8115`, co/ki/es/wo) plus eines in der realen\nBeispielseite Wissensbeitrag · KI (`docs/index.html:15110–15114`).\n\n**Element-Selektor, ADR-0008-Standardfall.** `.article-callout` sitzt in allen 5\nVorkommen als gewöhnlicher Block-Nachfahre — die 4 Doku-Boxen je in einem\nschlichten `<div>` innerhalb eines `display:flex;flex-direction:column`-Stapels\n(kein Stretch-Bedarf in Spaltenrichtung), die reale Instanz direkt in\n`.article-body`. Keines ist ein Grid-/Flex-Kind mit Streckungsbedarf, keines\nträgt eine `col-*`-Klasse, `.article-callout` kommt in keiner CSS-Regel mit\neinem Geschwister-Kombinator (`+`/`~`) vor, das Tag variiert nicht (immer\n`<aside>`). Keines der drei ADR-0008-Kriterien greift. Die einzige direkte\nKind-Regel von `.article-body` (`.article-body > p`, css/components.css:1566)\nzielt auf `p`, nicht auf `aside` — ein `<cds-article-callout>`-Host zwischen\n`.article-body` und dem `<aside>` bricht deshalb keine Selektorkette.\n\n**Projizierte Absätze bleiben direkte Kinder von `.article-callout`, kein\n`<div>` um `<ng-content>`** (Ticket-Vorgabe: `.article-callout > p` ist ein\nKindselektor, css/components.css:1600). `<ng-content>` selbst fügt kein\nDOM-Element ein — es verschiebt nur die vom Konsumenten geschriebenen\n`<p>`-Elemente an ihre Stelle direkt im `<aside>`, eine Ebene unter dem\n`<cds-article-callout>`-Host, aber ohne zusätzlichen Knoten dazwischen. Geprüft\nim laufenden Storybook (Story „Interaktiv“, Play-Funktion):\n`aside.article-callout > p` liefert sowohl die Eyebrow als auch jeden\nprojizierten Absatz, `:scope > *` zählt keine fremde Zwischenebene.\n\n**`eyebrow` ist Beiwerk (Default `''`), `area` ist Konfiguration mit\nverteidigbarer Vorgabe (`'co'`).** Die Basisregel `.article-callout` selbst\n(ohne `[data-area]`) rendert bereits exakt wie `[data-area=\"co\"]`\n(`background:var(--co-50)`, `border-left-color:var(--co-500)`, beide Werte\nidentisch an beiden Stellen, css/components.css:1591–1592) — `'co'` ist damit\nkeine erfundene Markenfarbe, sondern der reale CSS-Fallback ohne Attribut.\nAnders als bei `cds-pill` (dessen `.pill` ohne `data-area` gar keine Füllfarbe\nhat) gibt es hier keinen sinnvollen „kein Bereich“-Zustand.\n\n**Bekannter CSS-Befund, nicht im Wrapper geflickt (ADR-0001):**\n`.article-callout-eyebrow` (Spezifität 0,1,0) verliert gegen\n`.article-callout > p` (Spezifität 0,1,1, css/components.css:1600), weil die\nEyebrow selbst ein `<p>` UND ein direktes Kind von `.article-callout` ist.\nGemessen in rohem Markup ohne Angular (Playwright/Chromium,\n`getComputedStyle`): die Eyebrow rendert in JEDEM Bereich mit `font-size:16px`\nstatt `12px` und `margin-bottom:0` statt `4px`; die Akzentfarbe geht zusätzlich\nverloren, wenn kein bereichsspezifischer Override existiert (`co` und „kein\n`data-area`“ zeigen `--tx-primary` statt `--co-700`). Diese Komponente\nreproduziert exakt die Klassen und die Struktur des Mockups und zeigt deshalb\ndenselben, vorbestehenden Fehler wie rohes HTML — siehe\n`.scratch/angular-seitenbausteine/issues/22-css-luecke-callout-eyebrow-spezifitaet.md`.\n\n**`aria-labelledby` auf `<aside>`, sobald `eyebrow` gesetzt ist — Zusatz zum\nMockup, keine CSS-Änderung.** `<aside>` hat implizit die Landmark-Rolle\n`complementary`; ein Wissensbeitrag mit mehr als einem Callout hat damit\nmehrere gleichnamige Landmarks ohne zugänglichen Namen. Gemessen mit\naxe-core an rohem Markup ohne Angular (zwei `<aside class=\"article-callout\">`\nohne Auszeichnung): `landmark-unique` schlägt fehl, unabhängig von dieser\nKomponente — das Mockup selbst kennt diese Auszeichnung nicht (siehe\n`.scratch/angular-seitenbausteine/issues/23-doku-luecke-callout-landmark-label.md`).\nDie Eyebrow ist bereits ein prägnanter, vom Redakteur gepflegter Kurztext\ngenau für diesen Zweck (z. B. „In der Praxis“) — sie bekommt deshalb eine\ngenerierte `id`, auf die `aria-labelledby` zeigt, sobald sie existiert. Ohne\nEyebrow bleibt das `<aside>` unbenannt wie im Mockup: ein zugänglicher Name\nließe sich sonst nur aus dem projizierten Absatztext raten, und das wäre eine\nerfundene Bezeichnung, keine reale.",
|
|
8
|
+
"jsDocTags": {},
|
|
9
|
+
"argTypes": {
|
|
10
|
+
"area": {
|
|
11
|
+
"name": "area",
|
|
12
|
+
"description": "Markenbereich → `data-area` (Hintergrund + Akzentfarbe), siehe Klassendoku.",
|
|
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
|
+
"eyebrow": {
|
|
33
|
+
"name": "eyebrow",
|
|
34
|
+
"description": "Kicker über dem Absatztext (`.article-callout-eyebrow`), leer = keine Eyebrow.",
|
|
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
|
+
},
|
|
49
|
+
"apiDescription": "## Inputs\n\n```\nexport type ArticleCalloutComponentInputs = {\n /**\n * Markenbereich → `data-area` (Hintergrund + Akzentfarbe), siehe Klassendoku.\n *\n * @default co\n */\n area?: CdsArea;\n /**\n * Kicker über dem Absatztext (`.article-callout-eyebrow`), leer = keine Eyebrow.\n *\n * @default ''\n */\n eyebrow?: string;\n}\n```",
|
|
50
|
+
"renderer": "angular",
|
|
51
|
+
"angularComponentMeta": {
|
|
52
|
+
"name": "ArticleCalloutComponent",
|
|
53
|
+
"selector": "cds-article-callout",
|
|
54
|
+
"standalone": true,
|
|
55
|
+
"inputs": [
|
|
56
|
+
"area",
|
|
57
|
+
"eyebrow"
|
|
58
|
+
],
|
|
59
|
+
"outputs": [],
|
|
60
|
+
"enums": []
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"seitenmuster-wissensbeitrag-faq": {
|
|
4
|
+
"id": "seitenmuster-wissensbeitrag-faq",
|
|
5
|
+
"name": "FaqComponent",
|
|
6
|
+
"path": "./src/lib/faq/faq.stories.ts",
|
|
7
|
+
"description": "Faq — Wrapper um `.ep-faq` aus css/components.css → „FAQ-Accordion“.\n\nNutzt natives `<details>/<summary>` (kein JS nötig): Auf-/Zuklappen, Tastatur\nund Zugänglichkeit kommen vom Browser. Der Caret (.ep-faq-caret) dreht via\n`details[open]`. Antwort in `.ep-faq-a`.",
|
|
8
|
+
"jsDocTags": {},
|
|
9
|
+
"argTypes": {
|
|
10
|
+
"items": {
|
|
11
|
+
"name": "items",
|
|
12
|
+
"description": "Fragen-/Antworten-Liste des Akkordeons.",
|
|
13
|
+
"type": {
|
|
14
|
+
"name": "other",
|
|
15
|
+
"value": "empty-enum",
|
|
16
|
+
"required": true
|
|
17
|
+
},
|
|
18
|
+
"table": {
|
|
19
|
+
"category": "inputs",
|
|
20
|
+
"type": {
|
|
21
|
+
"summary": "CdsFaqItem[]"
|
|
22
|
+
},
|
|
23
|
+
"defaultValue": {}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"apiDescription": "## Inputs\n\n```\nexport type FaqComponentInputs = {\n /** Fragen-/Antworten-Liste des Akkordeons. */\n items: CdsFaqItem[];\n}\n```",
|
|
28
|
+
"renderer": "angular",
|
|
29
|
+
"angularComponentMeta": {
|
|
30
|
+
"name": "FaqComponent",
|
|
31
|
+
"selector": "cds-faq",
|
|
32
|
+
"standalone": true,
|
|
33
|
+
"inputs": [
|
|
34
|
+
"items"
|
|
35
|
+
],
|
|
36
|
+
"outputs": [],
|
|
37
|
+
"enums": []
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"seitenmuster-wissensbeitrag-figure": {
|
|
4
|
+
"id": "seitenmuster-wissensbeitrag-figure",
|
|
5
|
+
"name": "ArticleFigureComponent",
|
|
6
|
+
"path": "./src/lib/article-figure/article-figure.stories.ts",
|
|
7
|
+
"description": "ArticleFigure (`cds-article-figure`) — Wrapper um `.article-figure`/\n`.article-figcaption` aus css/components.css (css/components.css:1573–1575):\ndas redaktionelle Inline-Bild mit optionaler Bildunterschrift im Lauftext eines\nWissensbeitrags. Zwölftes Ticket der Seitenbausteine-Serie („Artikel-Körper“).\nAusgezählt: 3 reale Vorkommen — Doku-Demo mit Caption\n(`docs/index.html:8028–8031`), reales Body-Bild mit Caption in der Beispielseite\nWissensbeitrag · KI (`docs/index.html:15115–15118`, identischer Bild- und\nCaption-Text wie die Doku-Demo) und ein dritter, captionsloser Sonderfall direkt\nunter dem Article Header derselben Beispielseite (`docs/index.html:15040–15042`,\ndazu unten mehr).\n\n**Element-Selektor, ADR-0008-Standardfall.** In allen 3 Vorkommen sitzt\n`.article-figure` als gewöhnlicher Block-Nachfahre (zwei in `.article-body`,\neines direkt in einer eigenen `.ep-section`) — kein Grid-/Flex-Kind, keine\n`col-*`-Klasse vom Konsumenten, kein Tag-Wechsel (immer `<figure>`), kein\nVorkommen von `.article-figure` mit einem Geschwister-Kombinator in\ncss/components.css. Die einzige direkte Kind-Regel von `.article-body`\n(`.article-body > p`, css/components.css:1566) zielt auf `p`, nicht auf\n`figure` — ein `<cds-article-figure>`-Host zwischen `.article-body` und dem\n`<figure>` bricht deshalb keine Selektorkette.\n\n**`loading=\"lazy\"` ist fest verdrahtet, kein Input — bewusst NUR der\nIn-Article-Fall, nicht der dritte Mockup-Beleg.** Ausgezählt tragen 2 der 3\nVorkommen `loading=\"lazy\"` (die beiden Bilder MIT Caption, mittig im\nLauftext, „below the fold“ — genau der in `wissensbeitrag.mdx`, Abschnitt\n„In-Article Figure“, dokumentierte Dos-Punkt). Das dritte Vorkommen\n(`docs/index.html:15040–15042`) trägt stattdessen `loading=\"eager\"\nfetchpriority=\"high\"` UND hat keine Caption — es ist das erste Bild direkt\nunter dem Article Header (Kommentar im Mockup: „Hero-Bild auf Body-Breite …\nidentisches Bild wie Vorschaubild für Wiedererkennung“), sitzt außerhalb von\n`.article-body` und bekommt seine 720-px-Breite über ein\nInline-`style=\"max-width:720px;margin:0 auto\"` am Konsumenten, nicht über die\nKomponente (Randbedingung 6 der Spec: Mockup-Inline-Styles wandern nicht in\nden Wrapper). Die Ticket-API sieht dafür kein `loading`/`fetchpriority`-Input\nvor; dieses Bauteil deckt deshalb den (häufigeren, dokumentierten) In-Body-Fall\nab. Für den Lead-Bild-Sonderfall bleibt `<figure class=\"article-figure\">` roh\nschreibbar oder — sofern die Semantik passt — `cds-hero-image` (Ticket 02) zu\nprüfen.\n\n**`alt` und `caption` sind bewusst getrennte Pflicht-/Beiwerk-Inputs, keine\nPrüfung auf inhaltliche Überschneidung.** `wissensbeitrag.mdx` dokumentiert die\nbeiden Rollen ausdrücklich als unterschiedliche Jobs\n(Dont: „Alt-Text und Caption inhaltlich identisch, Screenreader liest\ndoppelt“) — Vorgabe an den Konsumenten, nicht etwas, das eine Wrapper-Komponente\nzur Laufzeit sinnvoll erzwingen könnte.",
|
|
8
|
+
"jsDocTags": {},
|
|
9
|
+
"argTypes": {
|
|
10
|
+
"alt": {
|
|
11
|
+
"name": "alt",
|
|
12
|
+
"description": "Faktische Bildbeschreibung für Screenreader, 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
|
+
"caption": {
|
|
26
|
+
"name": "caption",
|
|
27
|
+
"description": "Redaktionelle Bildunterschrift (`.article-figcaption`), leer = keine Caption.",
|
|
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
|
+
"src": {
|
|
42
|
+
"name": "src",
|
|
43
|
+
"description": "Bildquelle.",
|
|
44
|
+
"type": {
|
|
45
|
+
"name": "string",
|
|
46
|
+
"required": true
|
|
47
|
+
},
|
|
48
|
+
"table": {
|
|
49
|
+
"category": "inputs",
|
|
50
|
+
"type": {
|
|
51
|
+
"summary": "string"
|
|
52
|
+
},
|
|
53
|
+
"defaultValue": {}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"apiDescription": "## Inputs\n\n```\nexport type ArticleFigureComponentInputs = {\n /** Faktische Bildbeschreibung für Screenreader, siehe Klassendoku. */\n alt: string;\n /**\n * Redaktionelle Bildunterschrift (`.article-figcaption`), leer = keine Caption.\n *\n * @default ''\n */\n caption?: string;\n /** Bildquelle. */\n src: string;\n}\n```",
|
|
58
|
+
"renderer": "angular",
|
|
59
|
+
"angularComponentMeta": {
|
|
60
|
+
"name": "ArticleFigureComponent",
|
|
61
|
+
"selector": "cds-article-figure",
|
|
62
|
+
"standalone": true,
|
|
63
|
+
"inputs": [
|
|
64
|
+
"alt",
|
|
65
|
+
"caption",
|
|
66
|
+
"src"
|
|
67
|
+
],
|
|
68
|
+
"outputs": [],
|
|
69
|
+
"enums": []
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"seitenmuster-wissensbeitrag-inhaltsverzeichnis": {
|
|
4
|
+
"id": "seitenmuster-wissensbeitrag-inhaltsverzeichnis",
|
|
5
|
+
"name": "ArticleTocComponent",
|
|
6
|
+
"path": "./src/lib/article-toc/article-toc.stories.ts",
|
|
7
|
+
"description": "ArticleToc (`cds-article-toc`) — Wrapper um `.article-toc*` aus css/components.css\n(css/components.css:1577–1589): das aufklappbare Inhaltsverzeichnis am Anfang eines\nWissensbeitrags. Zwölftes Ticket der Seitenbausteine-Serie („Artikel-Körper“).\nAusgezählt: genau 2 reale Vorkommen, beide mit 5 Einträgen und identischem\nsichtbarem Text „Inhalt“ plus identischem `aria-label`\n(`docs/index.html:7948–7960`, Doku-Sektion mit Platzhalter-Hrefs `#gt-article-toc`;\n`docs/index.html:15049–15061`, reale Beispielseite Wissensbeitrag · KI mit echten\nAbschnittsankern wie `#wb-ki-demo`).\n\n**Element-Selektor, ADR-0008-Standardfall.** `.article-toc` sitzt in beiden\nVorkommen als gewöhnlicher Block-Nachfahre direkt in `.article-body`\n(`docs/index.html:7950`, `15051` je eine Ebene über dem `<details>`) — kein\nGrid-/Flex-Kind, keine Layout-Klasse (`col-*`) vom Konsumenten, kein\nGeschwister-Kombinator (`.article-toc` kommt in keiner CSS-Regel mit `+`/`~`\nvor), kein Tag-Wechsel (immer `<details>`). Keines der drei ADR-0008-Kriterien\ngreift; ein Attributselektor brächte hier nichts. Die einzige direkte\nKind-Regel von `.article-body` (`.article-body > p`, css/components.css:1566)\nzielt auf `p`, nicht auf `details` — ein `<cds-article-toc>`-Host zwischen\n`.article-body` und dem `<details>` bricht deshalb keine Selektorkette.\n\n**Natives `<details>`/`<summary>`, kein nachgebautes Disclosure** (Ticket-Vorgabe,\nAkzeptanzkriterium): Tastaturbedienung (Enter/Space auf `<summary>`) und\nToggle-Zustand kommen vollständig vom Browser, das CSS hängt direkt an `[open]`\n(`.article-toc[open] .article-toc-caret`, css/components.css:1583). `<details\nclass=\"article-toc\">` sitzt deshalb im TEMPLATE, nicht am Host — derselbe Grund\nwie bei `cds-compare`s `<details class=\"ep-compare\">` (`compare.component.ts`):\nein `<cds-article-toc>`-Host ist ein unbekanntes Custom Element und kann native\nDisclosure-Semantik nicht annehmen.\n\n**Zweites Vorkommen des `<details>`-mit-drehendem-Caret-Musters, nicht\nzusammengezogen mit `cds-compare` (ADR-0007 §5).** Beide Bauteile teilen die\nForm (natives `<details>`, SVG-Caret, `[open]`-Rotation über\n`transition:transform`), aber nicht die Aufgabe: `cds-compare` trägt eine\nVergleichstabelle mit `columns`/`rows`/`toggled`-Output, dieses Bauteil trägt\neine reine Link-Liste ohne Output (siehe API-Vorgabe des Tickets, die für dieses\nBauteil bewusst keinen `toggled` vorsieht). Zwei gleiche Stellen sind ein\nZufall, kein Muster — eine gemeinsame Basisklasse für zwei Vorkommen hätte nur\ndas `<details>`+Caret-Skelett gebündelt und dabei entweder Verhalten\nvereinheitlicht (ein erzwungener `toggled`-Output ohne Zweck hier) oder so viel\nparametrisiert, dass nichts gewonnen wäre.\n\n**`aria-label` am `<summary>` ist fest verdrahtet, kein Input.** Ausgezählt:\nbeide realen Vorkommen tragen wortgleich\n`aria-label=\"Inhaltsverzeichnis ein- und ausklappen\"` — der sichtbare Text\n„Inhalt“ (`summary`-Input) allein wäre außerhalb des Beitragskontexts nicht\neindeutig, das `aria-label` schreibt deshalb aus, was das Element tut. Genau\ndieser Wortlaut aus dem Mockup übernommen, kein erfundener zugänglicher Name.\n\n**Keine Nummerierung im Markup.** Die sichtbaren Ziffern vor jedem Eintrag\nkommen aus `counter(toc)` auf `.article-toc-list li::before`\n(css/components.css:1586), nicht aus dem `<ol>`-Default (`list-style:none` setzt\nihn zurück) — die Komponente muss dafür nichts weiter tun als `<ol\nclass=\"article-toc-list\">` zu rendern.",
|
|
8
|
+
"jsDocTags": {},
|
|
9
|
+
"argTypes": {
|
|
10
|
+
"items": {
|
|
11
|
+
"name": "items",
|
|
12
|
+
"description": "Abschnitte des Beitrags, in Anzeige-Reihenfolge.",
|
|
13
|
+
"type": {
|
|
14
|
+
"name": "other",
|
|
15
|
+
"value": "empty-enum",
|
|
16
|
+
"required": true
|
|
17
|
+
},
|
|
18
|
+
"table": {
|
|
19
|
+
"category": "inputs",
|
|
20
|
+
"type": {
|
|
21
|
+
"summary": "CdsArticleTocItem[]"
|
|
22
|
+
},
|
|
23
|
+
"defaultValue": {}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"open": {
|
|
27
|
+
"name": "open",
|
|
28
|
+
"description": "Anfangszustand des `<details>` — reine Vorbelegung, kein Zwei-Wege-Zustand.",
|
|
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
|
+
"summary": {
|
|
43
|
+
"name": "summary",
|
|
44
|
+
"description": "Sichtbarer Text im `<summary>`, z. B. „Inhalt“.",
|
|
45
|
+
"type": {
|
|
46
|
+
"name": "string"
|
|
47
|
+
},
|
|
48
|
+
"table": {
|
|
49
|
+
"category": "inputs",
|
|
50
|
+
"type": {
|
|
51
|
+
"summary": "string"
|
|
52
|
+
},
|
|
53
|
+
"defaultValue": {
|
|
54
|
+
"summary": "Inhalt"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"apiDescription": "## Inputs\n\n```\nexport type ArticleTocComponentInputs = {\n /** Abschnitte des Beitrags, in Anzeige-Reihenfolge. */\n items: CdsArticleTocItem[];\n /**\n * Anfangszustand des `<details>` — reine Vorbelegung, kein Zwei-Wege-Zustand.\n *\n * @default false\n */\n open?: boolean;\n /**\n * Sichtbarer Text im `<summary>`, z. B. „Inhalt“.\n *\n * @default Inhalt\n */\n summary?: string;\n}\n```",
|
|
60
|
+
"renderer": "angular",
|
|
61
|
+
"angularComponentMeta": {
|
|
62
|
+
"name": "ArticleTocComponent",
|
|
63
|
+
"selector": "cds-article-toc",
|
|
64
|
+
"standalone": true,
|
|
65
|
+
"inputs": [
|
|
66
|
+
"items",
|
|
67
|
+
"open",
|
|
68
|
+
"summary"
|
|
69
|
+
],
|
|
70
|
+
"outputs": [],
|
|
71
|
+
"enums": []
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"seitenmuster-wissensbeitrag-pull-quote": {
|
|
4
|
+
"id": "seitenmuster-wissensbeitrag-pull-quote",
|
|
5
|
+
"name": "ArticlePullquoteComponent",
|
|
6
|
+
"path": "./src/lib/article-pullquote/article-pullquote.stories.ts",
|
|
7
|
+
"description": "ArticlePullquote (`cds-article-pullquote`) — Wrapper um `.article-pullquote` aus\ncss/components.css (css/components.css:1608–1612): die typografische\nHervorhebung eines Satzes aus dem eigenen Lauftext eines Wissensbeitrags.\nZwölftes Ticket der Seitenbausteine-Serie („Artikel-Körper“). Ausgezählt: 2\nreale Vorkommen, wortgleich, beide `data-area=\"ki\"` — Doku-Demo\n(`docs/index.html:8136`) und reale Beispielseite Wissensbeitrag · KI\n(`docs/index.html:15075`).\n\n**Nicht `cds-blockquote` (`BlockquoteComponent`, `.bq`) — Ticket-Vorgabe, im\nJSDoc beider Bauteile wechselseitig abgegrenzt.** Pull-Quote und Blockquote\nteilen die typografische Familie (Serif, bereichsgefärbter Linksakzent in\n`{area}-500`), aber nicht den Zweck, dokumentiert in `wissensbeitrag.mdx`,\nAbschnitt „Pull-Quote gegen Blockquote“:\n\n| | Pull-Quote (dieses Bauteil) | Blockquote (`cds-blockquote`) |\n|---|---|---|\n| Wessen Stimme? | Der Beitrag zitiert sich selbst — ein Schlüsselsatz aus dem eigenen Lauftext | Eine dritte, benannte Person (Kund:in, Forschungsstimme, Branchen-Statement) |\n| Attribution | Keine (`quote` ist der einzige Input) | Pflicht (`name`, `roleLabel`) |\n| Hintergrund/Icon | Keiner — `quotes:none`, kein Quote-Icon, bewusst „offen“ statt umrahmt | Getönte Akzent-Box (`--bq-bg`) mit Quote-Icon (`.bq-icon`) |\n| Tag | `<blockquote class=\"article-pullquote\">` direkt, kein umschließendes `<figure>` | `<figure class=\"bq\">` außen, `<blockquote>` (ohne eigene Klasse) innen für den Zitattext |\n\nEin Self-Quote im eigenen Beitrag (Blockquote-Optik auf einem Satz des\nAutors) wirkt sonst absurd — der Autor zitiert die Person, die den Beitrag\nschreibt. Wer eine externe Stimme mit Namen und Rolle zeigen will, verwendet\n`cds-blockquote`.\n\n**`quote` enthält die deutschen Anführungszeichen bereits als Teil des Texts,\ndie Komponente ergänzt keine.** `.article-pullquote{quotes:none}`\n(css/components.css:1608) — es gibt keine `content:open-quote`/`close-quote`-Regel\nin der CSS-Schicht, weder hier noch bei `.bq blockquote` oder\n`.testimonial blockquote`. Ausgezählt stehen die Anführungszeichen in BEIDEN\nrealen Vorkommen als literale Zeichen im Text\n(„KI scheitert selten an der Technologie. …“), nicht CSS-generiert. Wie bei\n`cds-compare`/`cds-table` ist Copy-Text Sache des Konsumenten (ADR-0007 §2) —\ndie Story liefert deshalb `quote` bereits mit „…“ (CONTRIBUTING.md §6), die\nKomponente rendert den String unverändert, ohne eigene Anführungszeichen zu\nerfinden.\n\n**Element-Selektor, ADR-0008-Standardfall.** `.article-pullquote` sitzt in\nbeiden Vorkommen als gewöhnlicher Block-Nachfahre in `.article-body` — kein\nGrid-/Flex-Kind, keine `col-*`-Klasse vom Konsumenten, kein\nGeschwister-Kombinator in css/components.css, kein Tag-Wechsel (immer\n`<blockquote>`). Die einzige direkte Kind-Regel von `.article-body`\n(`.article-body > p`, css/components.css:1566) zielt auf `p`, nicht auf\n`blockquote` — ein `<cds-article-pullquote>`-Host zwischen `.article-body` und\ndem `<blockquote>` bricht deshalb keine Selektorkette.\n\n**`area` ist Konfiguration mit verteidigbarer Vorgabe (`'co'`), keine\nerfundene Bereichsfarbe.** Die Basisregel `.article-pullquote` selbst (ohne\n`[data-area]`) setzt bereits exakt denselben Wert wie `[data-area=\"co\"]`\n(`border-left-color:var(--co-500)`, css/components.css:1608–1609) — `'co'` ist\ndamit der reale CSS-Fallback ohne Attribut, nicht geraten.",
|
|
8
|
+
"jsDocTags": {},
|
|
9
|
+
"argTypes": {
|
|
10
|
+
"area": {
|
|
11
|
+
"name": "area",
|
|
12
|
+
"description": "Markenbereich → `data-area` (Linksakzent), siehe Klassendoku.",
|
|
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
|
+
"quote": {
|
|
33
|
+
"name": "quote",
|
|
34
|
+
"description": "Hervorgehobener Satz, inklusive deutscher Anführungszeichen, siehe Klassendoku.",
|
|
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
|
+
},
|
|
48
|
+
"apiDescription": "## Inputs\n\n```\nexport type ArticlePullquoteComponentInputs = {\n /**\n * Markenbereich → `data-area` (Linksakzent), siehe Klassendoku.\n *\n * @default co\n */\n area?: CdsArea;\n /** Hervorgehobener Satz, inklusive deutscher Anführungszeichen, siehe Klassendoku. */\n quote: string;\n}\n```",
|
|
49
|
+
"renderer": "angular",
|
|
50
|
+
"angularComponentMeta": {
|
|
51
|
+
"name": "ArticlePullquoteComponent",
|
|
52
|
+
"selector": "cds-article-pullquote",
|
|
53
|
+
"standalone": true,
|
|
54
|
+
"inputs": [
|
|
55
|
+
"area",
|
|
56
|
+
"quote"
|
|
57
|
+
],
|
|
58
|
+
"outputs": [],
|
|
59
|
+
"enums": []
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"grundlagen-farben": {
|
|
4
|
+
"id": "grundlagen-farben",
|
|
5
|
+
"name": "Farben",
|
|
6
|
+
"path": "./src/foundations/colors.stories.ts",
|
|
7
|
+
"stories": {
|
|
8
|
+
"grundlagen-farben--paletten": {
|
|
9
|
+
"id": "grundlagen-farben--paletten",
|
|
10
|
+
"name": "Paletten"
|
|
11
|
+
},
|
|
12
|
+
"grundlagen-farben--semantisch": {
|
|
13
|
+
"id": "grundlagen-farben--semantisch",
|
|
14
|
+
"name": "Semantisch"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"grundlagen-typografie": {
|
|
4
|
+
"id": "grundlagen-typografie",
|
|
5
|
+
"name": "Typografie",
|
|
6
|
+
"path": "./src/foundations/typography.stories.ts",
|
|
7
|
+
"stories": {
|
|
8
|
+
"grundlagen-typografie--skala": {
|
|
9
|
+
"id": "grundlagen-typografie--skala",
|
|
10
|
+
"name": "Skala"
|
|
11
|
+
},
|
|
12
|
+
"grundlagen-typografie--ligaturen": {
|
|
13
|
+
"id": "grundlagen-typografie--ligaturen",
|
|
14
|
+
"name": "Ligaturen",
|
|
15
|
+
"description": "1:1 aus docs/index.html übernommen (Zeilen 1535–1572, Abschnitt\n„Ligaturen: warum „ff“ verbunden aussieht“): erst der Vergleich mit/ohne\nOpenType-Ligatur über `font-feature-settings: 'liga' 0|1`, dann das\nMuster-Gitter der Standard-Ligaturen in Libre Baskerville."
|
|
16
|
+
},
|
|
17
|
+
"grundlagen-typografie--seitenhierarchie": {
|
|
18
|
+
"id": "grundlagen-typografie--seitenhierarchie",
|
|
19
|
+
"name": "Seitenhierarchie",
|
|
20
|
+
"description": "1:1 aus docs/index.html übernommen (col-7-Box aus dem layout-grid in\nZeilen 1605–1632, Abschnitt „Verwendung“, Block „Schematisches Beispiel,\nSeitenhierarchie“): verschachtelte Font-Tokens von Eyebrow über Display\nund Body bis zur Karte mit Title, Body und Label-Button."
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"komponenten-buttons-button": {
|
|
4
|
+
"id": "komponenten-buttons-button",
|
|
5
|
+
"name": "ButtonComponent",
|
|
6
|
+
"path": "./src/lib/button/button.stories.ts",
|
|
7
|
+
"stories": {
|
|
8
|
+
"komponenten-buttons-button--interaktiv": {
|
|
9
|
+
"id": "komponenten-buttons-button--interaktiv",
|
|
10
|
+
"name": "Interaktiv",
|
|
11
|
+
"snippet": "import { Component } from '@angular/core';\nimport { ButtonComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [ButtonComponent],\n template: `\n @if (variant === 'filled-on-band') {\n <div\n [style.background]=\"'var(--' + area + (area === 'ki' ? '-800' : '-700') + ')'\"\n style=\"padding:24px;border-radius:var(--r-md)\">\n <cds-button\n [label]=\"label\"\n [variant]=\"variant\"\n [area]=\"area\"\n [size]=\"size\"\n [full]=\"full\"\n [disabled]=\"disabled\" />\n </div>\n } @else {\n <cds-button\n [label]=\"label\"\n [variant]=\"variant\"\n [area]=\"area\"\n [size]=\"size\"\n [full]=\"full\"\n [disabled]=\"disabled\" />\n }`,\n})\nexport class DemoComponent {\n label = 'Kontakt aufnehmen';\n variant = 'filled';\n area = 'co';\n size = 'md';\n full = false;\n disabled = false;\n}"
|
|
12
|
+
},
|
|
13
|
+
"komponenten-buttons-button--varianten": {
|
|
14
|
+
"id": "komponenten-buttons-button--varianten",
|
|
15
|
+
"name": "Alle Varianten",
|
|
16
|
+
"snippet": "import { Component } from '@angular/core';\nimport { ButtonComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [ButtonComponent],\n template: `\n <div style=\"display:flex;gap:16px;flex-wrap:wrap;align-items:center\">\n <cds-button variant=\"filled\" label=\"Filled\"></cds-button>\n <cds-button variant=\"tonal\" label=\"Tonal\"></cds-button>\n <cds-button variant=\"elevated\" label=\"Elevated\"></cds-button>\n <cds-button variant=\"outlined\" label=\"Outlined\"></cds-button>\n <cds-button variant=\"text\" label=\"Text\"></cds-button>\n </div>`,\n})\nexport class DemoComponent {}"
|
|
17
|
+
},
|
|
18
|
+
"komponenten-buttons-button--bereichsfarben": {
|
|
19
|
+
"id": "komponenten-buttons-button--bereichsfarben",
|
|
20
|
+
"name": "Bereichsfarben",
|
|
21
|
+
"snippet": "import { Component } from '@angular/core';\nimport { ButtonComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [ButtonComponent],\n template: `\n <div style=\"display:flex;gap:16px;flex-wrap:wrap;align-items:center\">\n <cds-button area=\"co\" label=\"Corporate\"></cds-button>\n <cds-button area=\"ki\" label=\"AI.Applied\"></cds-button>\n <cds-button area=\"es\" label=\"Eff. Software\"></cds-button>\n <cds-button area=\"wo\" label=\"Wirks. Orga\"></cds-button>\n </div>`,\n})\nexport class DemoComponent {}"
|
|
22
|
+
},
|
|
23
|
+
"komponenten-buttons-button--groessen": {
|
|
24
|
+
"id": "komponenten-buttons-button--groessen",
|
|
25
|
+
"name": "Größen",
|
|
26
|
+
"snippet": "import { Component } from '@angular/core';\nimport { ButtonComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [ButtonComponent],\n template: `\n <div style=\"display:flex;gap:16px;flex-wrap:wrap;align-items:center\">\n <cds-button size=\"sm\" label=\"Small\"></cds-button>\n <cds-button size=\"md\" label=\"Medium\"></cds-button>\n <cds-button size=\"lg\" label=\"Large\"></cds-button>\n </div>`,\n})\nexport class DemoComponent {}"
|
|
27
|
+
},
|
|
28
|
+
"komponenten-buttons-button--auf-band": {
|
|
29
|
+
"id": "komponenten-buttons-button--auf-band",
|
|
30
|
+
"name": "Auf Bereichs-Band",
|
|
31
|
+
"snippet": "import { Component } from '@angular/core';\nimport { ButtonComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [ButtonComponent],\n template: `\n <div style=\"display:flex;flex-direction:column;gap:12px\">\n <div\n style=\"background:var(--co-700);padding:20px;border-radius:var(--r-md)\">\n <cds-button\n variant=\"filled-on-band\"\n area=\"co\"\n label=\"Termin buchen\">\n </cds-button>\n </div>\n <div\n style=\"background:var(--ki-800);padding:20px;border-radius:var(--r-md)\">\n <cds-button\n variant=\"filled-on-band\"\n area=\"ki\"\n label=\"KI-Potenzial analysieren\">\n </cds-button>\n </div>\n <div\n style=\"background:var(--es-700);padding:20px;border-radius:var(--r-md)\">\n <cds-button\n variant=\"filled-on-band\"\n area=\"es\"\n label=\"Assessment anfragen\">\n </cds-button>\n </div>\n <div\n style=\"background:var(--wo-700);padding:20px;border-radius:var(--r-md)\">\n <cds-button\n variant=\"filled-on-band\"\n area=\"wo\"\n label=\"Erstgespräch anfragen\">\n </cds-button>\n </div>\n </div>`,\n})\nexport class DemoComponent {}"
|
|
32
|
+
},
|
|
33
|
+
"komponenten-buttons-button--deaktiviert": {
|
|
34
|
+
"id": "komponenten-buttons-button--deaktiviert",
|
|
35
|
+
"name": "Deaktiviert",
|
|
36
|
+
"snippet": "import { Component } from '@angular/core';\nimport { ButtonComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [ButtonComponent],\n template: `\n <cds-button\n [label]=\"'Nicht verfügbar'\"\n [variant]=\"'filled'\"\n [area]=\"'co'\"\n [size]=\"'md'\"\n [full]=\"false\"\n [disabled]=\"true\"\n (clicked)=\"clicked($event)\"\n />`,\n})\nexport class DemoComponent {\n clicked(event: unknown) {}\n}",
|
|
37
|
+
"warning": "Incomplete snippet: `fn()` could not be resolved statically."
|
|
38
|
+
},
|
|
39
|
+
"komponenten-buttons-button--klick-verhalten": {
|
|
40
|
+
"id": "komponenten-buttons-button--klick-verhalten",
|
|
41
|
+
"name": "Klick-Verhalten",
|
|
42
|
+
"snippet": "import { Component } from '@angular/core';\nimport { ButtonComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [ButtonComponent],\n template: `\n <cds-button\n [label]=\"'Kontakt aufnehmen'\"\n [variant]=\"'filled'\"\n [area]=\"'co'\"\n [size]=\"'md'\"\n [full]=\"false\"\n [disabled]=\"false\"\n (clicked)=\"clicked($event)\"\n />`,\n})\nexport class DemoComponent {\n clicked(event: unknown) {}\n}",
|
|
43
|
+
"warning": "Incomplete snippet: `fn()` could not be resolved statically."
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"komponenten-call-to-action-cta-band": {
|
|
4
|
+
"id": "komponenten-call-to-action-cta-band",
|
|
5
|
+
"name": "CtaBandComponent",
|
|
6
|
+
"path": "./src/lib/cta-band/cta-band.stories.ts",
|
|
7
|
+
"stories": {
|
|
8
|
+
"komponenten-call-to-action-cta-band--interaktiv": {
|
|
9
|
+
"id": "komponenten-call-to-action-cta-band--interaktiv",
|
|
10
|
+
"name": "Interaktiv",
|
|
11
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CtaBandComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CtaBandComponent],\n template: `\n <div\n cdsCtaBand\n [heading]=\"heading\"\n [sub]=\"sub\"\n [area]=\"area\"\n [primaryLabel]=\"primaryLabel\"\n [primaryHref]=\"primaryHref\"\n (primaryClick)=\"primaryClick($event)\"\n [style.background]=\"'var(--' + area + (area === 'ki' ? '-800' : '-700') + ')'\"\n style=\"color:#fff;border-radius:var(--r-lg)\">\n </div>`,\n})\nexport class DemoComponent {\n heading = 'Erstgespräch, 30 Minuten, kostenfrei.';\n sub = 'Du schilderst Dein Vorhaben, wir geben eine erste Einschätzung. Wenn es passt, sprechen wir über konkrete Schritte. Wenn nicht, war es trotzdem nützlich.';\n area = 'co';\n primaryLabel = 'Termin buchen';\n primaryHref = '';\n primaryClick(event: unknown) {}\n}"
|
|
12
|
+
},
|
|
13
|
+
"komponenten-call-to-action-cta-band--pro-bereich": {
|
|
14
|
+
"id": "komponenten-call-to-action-cta-band--pro-bereich",
|
|
15
|
+
"name": "Pro Bereich",
|
|
16
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CtaBandComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CtaBandComponent],\n template: `\n <div style=\"display:flex;flex-direction:column;gap:var(--s6)\">\n <div\n cdsCtaBand\n heading=\"Erstgespräch, 30 Minuten, kostenfrei.\"\n primaryLabel=\"Termin buchen\"\n area=\"co\"\n style=\"background:var(--co-700);color:#fff;border-radius:var(--r-lg)\">\n </div>\n <div\n cdsCtaBand\n heading=\"Wo steht Ihr KI-Piloten-Portfolio wirklich?\"\n sub=\"Ein kurzes Gespräch zeigt, welche Anwendungsfälle sich lohnen und welche eher nicht.\"\n primaryLabel=\"Potenzial einschätzen lassen\"\n area=\"ki\"\n style=\"background:var(--ki-800);color:#fff;border-radius:var(--r-lg)\">\n </div>\n <div\n cdsCtaBand\n heading=\"Lernen wir uns kennen?\"\n sub=\"Erzähl uns, was Du vorhast.\"\n primaryLabel=\"Gespräch anfragen\"\n area=\"es\"\n style=\"background:var(--es-700);color:#fff;border-radius:var(--r-lg)\">\n </div>\n <div\n cdsCtaBand\n heading=\"Drei Muster, an denen Veränderung scheitert.\"\n sub=\"Wir zeigen in einem kurzen Termin, woran es in Ihrer Organisation konkret hakt, und was ein erster wirksamer Schritt wäre.\"\n primaryLabel=\"Termin vereinbaren\"\n area=\"wo\"\n style=\"background:var(--wo-700);color:#fff;border-radius:var(--r-lg)\">\n </div>\n </div>`,\n})\nexport class DemoComponent {}",
|
|
17
|
+
"warning": "Incomplete snippet: `primaryClick` could not be bound, since CtaBandComponent declares no such input."
|
|
18
|
+
},
|
|
19
|
+
"komponenten-call-to-action-cta-band--als-links": {
|
|
20
|
+
"id": "komponenten-call-to-action-cta-band--als-links",
|
|
21
|
+
"name": "Als Links",
|
|
22
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CtaBandComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CtaBandComponent],\n template: `\n <div\n cdsCtaBand\n [heading]=\"heading\"\n [sub]=\"sub\"\n [area]=\"area\"\n [primaryLabel]=\"primaryLabel\"\n [primaryHref]=\"primaryHref\"\n (primaryClick)=\"primaryClick($event)\"\n [style.background]=\"'var(--' + area + (area === 'ki' ? '-800' : '-700') + ')'\"\n style=\"color:#fff;border-radius:var(--r-lg)\">\n </div>`,\n})\nexport class DemoComponent {\n heading = 'Lernen wir uns kennen?';\n sub = 'Erzähl uns, was Du vorhast, oder komm in Dortmund auf einen Kaffee vorbei.';\n area = 'co';\n primaryLabel = 'Gespräch anfragen';\n primaryHref = '#sec-examples';\n primaryClick(event: unknown) {}\n}"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"komponenten-call-to-action-downloadcta": {
|
|
4
|
+
"id": "komponenten-call-to-action-downloadcta",
|
|
5
|
+
"name": "DownloadCtaComponent",
|
|
6
|
+
"path": "./src/lib/download-cta/download-cta.stories.ts",
|
|
7
|
+
"stories": {
|
|
8
|
+
"komponenten-call-to-action-downloadcta--interaktiv": {
|
|
9
|
+
"id": "komponenten-call-to-action-downloadcta--interaktiv",
|
|
10
|
+
"name": "Interaktiv",
|
|
11
|
+
"snippet": "import { Component } from '@angular/core';\nimport { DownloadCtaComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [DownloadCtaComponent],\n template: `\n <cds-download-cta\n [area]=\"'co'\"\n [eyebrow]=\"'Conciso Design System'\"\n [title]=\"'Figma-Bibliothek herunterladen'\"\n [desc]=\"'Alle Komponenten, Tokens, Icons und Brand Assets, direkt einsatzbereit als Figma-Bibliothek.'\"\n [meta]=\"'Figma · Version 1.0 · 48 MB'\"\n [primaryLabel]=\"'Herunterladen'\"\n [secondaryLabel]=\"'Vorschau ansehen'\"\n (primaryClick)=\"primaryClick($event)\"\n (secondaryClick)=\"secondaryClick($event)\"\n />`,\n})\nexport class DemoComponent {\n primaryClick(event: unknown) {}\n secondaryClick(event: unknown) {}\n}",
|
|
12
|
+
"warning": "Incomplete snippet: `fn()` could not be resolved statically."
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"komponenten-cards-teaser-card": {
|
|
4
|
+
"id": "komponenten-cards-teaser-card",
|
|
5
|
+
"name": "CardComponent",
|
|
6
|
+
"path": "./src/lib/card/card.stories.ts",
|
|
7
|
+
"stories": {
|
|
8
|
+
"komponenten-cards-teaser-card--interaktiv": {
|
|
9
|
+
"id": "komponenten-cards-teaser-card--interaktiv",
|
|
10
|
+
"name": "Interaktiv",
|
|
11
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CardComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CardComponent],\n template: `\n <cds-card\n [eyebrow]=\"'Insights'\"\n [title]=\"'Effektive Software für den Mittelstand'\"\n [text]=\"'Wie schlanke Architektur und klare Prozesse messbar Zeit und Kosten sparen.'\"\n [area]=\"'es'\"\n [showMedia]=\"true\"\n [actionLabel]=\"'Mehr erfahren'\"\n (actionClick)=\"actionClick($event)\"\n />`,\n})\nexport class DemoComponent {\n actionClick(event: unknown) {}\n}"
|
|
12
|
+
},
|
|
13
|
+
"komponenten-cards-teaser-card--footer-aktion": {
|
|
14
|
+
"id": "komponenten-cards-teaser-card--footer-aktion",
|
|
15
|
+
"name": "Footer-Aktion",
|
|
16
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CardComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CardComponent],\n template: `\n <cds-card\n [eyebrow]=\"'Insights'\"\n [title]=\"'Effektive Software für den Mittelstand'\"\n [text]=\"'Wie schlanke Architektur und klare Prozesse messbar Zeit und Kosten sparen.'\"\n [area]=\"'es'\"\n [showMedia]=\"true\"\n [actionLabel]=\"'Mehr erfahren'\"\n (actionClick)=\"actionClick($event)\"\n />`,\n})\nexport class DemoComponent {\n actionClick(event: unknown) {}\n}",
|
|
17
|
+
"warning": "Incomplete snippet: `fn()` could not be resolved statically."
|
|
18
|
+
},
|
|
19
|
+
"komponenten-cards-teaser-card--pro-bereich": {
|
|
20
|
+
"id": "komponenten-cards-teaser-card--pro-bereich",
|
|
21
|
+
"name": "Eine Karte je Bereich",
|
|
22
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CardComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CardComponent],\n template: `\n <div\n style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px\">\n <cds-card\n area=\"co\"\n eyebrow=\"Corporate\"\n title=\"Marke & Haltung\"\n text=\"Ein konsistenter Auftritt über alle Berührungspunkte hinweg.\">\n </cds-card>\n <cds-card\n area=\"ki\"\n eyebrow=\"AI.Applied\"\n title=\"KI, die wirkt\"\n text=\"Angewandte KI-Lösungen mit echtem Geschäftsnutzen.\">\n </cds-card>\n <cds-card\n area=\"es\"\n eyebrow=\"Eff. Software\"\n title=\"Schlanke Systeme\"\n text=\"Weniger Code, klarere Architektur, schnellere Lieferung.\">\n </cds-card>\n <cds-card\n area=\"wo\"\n eyebrow=\"Wirks. Orga\"\n title=\"Starke Teams\"\n text=\"Organisationen, die lernen und sich wirksam anpassen.\">\n </cds-card>\n </div>`,\n})\nexport class DemoComponent {}"
|
|
23
|
+
},
|
|
24
|
+
"komponenten-cards-teaser-card--ohne-medien": {
|
|
25
|
+
"id": "komponenten-cards-teaser-card--ohne-medien",
|
|
26
|
+
"name": "Ohne Medienfläche",
|
|
27
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CardComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CardComponent],\n template: `\n <cds-card\n [eyebrow]=\"'Hinweis'\"\n [title]=\"'Effektive Software für den Mittelstand'\"\n [text]=\"'Wie schlanke Architektur und klare Prozesse messbar Zeit und Kosten sparen.'\"\n [area]=\"'co'\"\n [showMedia]=\"false\"\n [actionLabel]=\"'Mehr erfahren'\"\n (actionClick)=\"actionClick($event)\"\n />`,\n})\nexport class DemoComponent {\n actionClick(event: unknown) {}\n}"
|
|
28
|
+
},
|
|
29
|
+
"komponenten-cards-teaser-card--freier-inhalt": {
|
|
30
|
+
"id": "komponenten-cards-teaser-card--freier-inhalt",
|
|
31
|
+
"name": "Freier Inhalt (ng-content)",
|
|
32
|
+
"snippet": "import { Component } from '@angular/core';\nimport { CardComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [CardComponent],\n template: `\n <cds-card\n area=\"ki\"\n title=\"Projektstatus\"\n [text]=\"''\"\n [actionLabel]=\"''\"\n [showMedia]=\"false\"\n style=\"max-width:320px\">\n <ul\n style=\"list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s2);font:var(--ty-body-md)\">\n <li style=\"display:flex;justify-content:space-between\">\n <span>Offen</span>\n <strong>12</strong>\n </li>\n <li style=\"display:flex;justify-content:space-between\">\n <span>In Arbeit</span>\n <strong>5</strong>\n </li>\n <li style=\"display:flex;justify-content:space-between\">\n <span>Erledigt</span>\n <strong>28</strong>\n </li>\n </ul>\n </cds-card>`,\n})\nexport class DemoComponent {}"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"components": {
|
|
3
|
+
"komponenten-cards-teaser-feature-liste": {
|
|
4
|
+
"id": "komponenten-cards-teaser-feature-liste",
|
|
5
|
+
"name": "FeatureComponent",
|
|
6
|
+
"path": "./src/lib/feature/feature.stories.ts",
|
|
7
|
+
"stories": {
|
|
8
|
+
"komponenten-cards-teaser-feature-liste--interaktiv": {
|
|
9
|
+
"id": "komponenten-cards-teaser-feature-liste--interaktiv",
|
|
10
|
+
"name": "Interaktiv",
|
|
11
|
+
"snippet": "import { Component } from '@angular/core';\nimport { FeatureComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [FeatureComponent],\n template: `\n <div\n cdsFeature\n [title]=\"title\"\n [text]=\"text\"\n [area]=\"area\"\n [ctaLabel]=\"ctaLabel\"\n [ctaHref]=\"ctaHref\"\n [ctaAriaLabel]=\"ctaAriaLabel\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\" />\n </svg>\n </div>`,\n})\nexport class DemoComponent {\n title = 'Höchste Sicherheit';\n text = 'Hosting im eigenen Rechenzentrum oder zertifiziert in Deutschland.';\n ctaLabel = '';\n ctaHref = '';\n ctaAriaLabel = '';\n}",
|
|
12
|
+
"warning": "Incomplete snippet: `area` could not be provided, since the story declares no such arg."
|
|
13
|
+
},
|
|
14
|
+
"komponenten-cards-teaser-feature-liste--dreispalter": {
|
|
15
|
+
"id": "komponenten-cards-teaser-feature-liste--dreispalter",
|
|
16
|
+
"name": "Dreispalter",
|
|
17
|
+
"snippet": "import { Component } from '@angular/core';\nimport { FeatureComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [FeatureComponent],\n template: `\n <div class=\"layout-grid\">\n <div\n cdsFeature\n class=\"col-4\"\n title=\"Sinnvolle Projekte\"\n text=\"Kurzer Text.\"\n area=\"co\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\" />\n </svg>\n </div>\n <div\n cdsFeature\n class=\"col-4\"\n title=\"Ein Team auf Augenhöhe\"\n text=\"Ein deutlich längerer Anreißertext, der über mehrere Zeilen umbricht und die Feature-Zeile dadurch von Natur aus höher macht als ihre Nachbarn.\"\n area=\"co\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z\" />\n </svg>\n </div>\n <div\n cdsFeature\n class=\"col-4\"\n title=\"Raum, um zu wachsen\"\n text=\"Mittellanger Text zur Kontrolle der dritten Spalte.\"\n area=\"co\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z\" />\n </svg>\n </div>\n </div>`,\n})\nexport class DemoComponent {}"
|
|
18
|
+
},
|
|
19
|
+
"komponenten-cards-teaser-feature-liste--mit-cta": {
|
|
20
|
+
"id": "komponenten-cards-teaser-feature-liste--mit-cta",
|
|
21
|
+
"name": "Mit CTA",
|
|
22
|
+
"snippet": "import { Component } from '@angular/core';\nimport { FeatureComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [FeatureComponent],\n template: `\n <div\n cdsFeature\n [title]=\"title\"\n [text]=\"text\"\n [area]=\"area\"\n [ctaLabel]=\"ctaLabel\"\n [ctaHref]=\"ctaHref\"\n [ctaAriaLabel]=\"ctaAriaLabel\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </div>`,\n})\nexport class DemoComponent {\n title = 'KI Kickstart Workshops';\n text = 'In kompakten Workshops von der ersten Idee zum konkreten KI-Anwendungsfall, mit einem klaren nächsten Schritt.';\n ctaLabel = 'Zur Landingpage';\n ctaHref = '#sec-examples';\n ctaAriaLabel = 'Zur Landingpage: KI Kickstart Workshops';\n area = 'ki';\n}"
|
|
23
|
+
},
|
|
24
|
+
"komponenten-cards-teaser-feature-liste--ohne-href": {
|
|
25
|
+
"id": "komponenten-cards-teaser-feature-liste--ohne-href",
|
|
26
|
+
"name": "Ohne Href",
|
|
27
|
+
"snippet": "import { Component } from '@angular/core';\nimport { FeatureComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [FeatureComponent],\n template: `\n <div\n cdsFeature\n [title]=\"title\"\n [text]=\"text\"\n [area]=\"area\"\n [ctaLabel]=\"ctaLabel\"\n [ctaHref]=\"ctaHref\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </div>`,\n})\nexport class DemoComponent {\n title = 'Neue Kooperationen';\n text = 'Weitere Partnerschaften sind in Vorbereitung.';\n ctaLabel = 'Landingpage folgt';\n ctaHref = '';\n area = 'wo';\n}"
|
|
28
|
+
},
|
|
29
|
+
"komponenten-cards-teaser-feature-liste--pro-bereich": {
|
|
30
|
+
"id": "komponenten-cards-teaser-feature-liste--pro-bereich",
|
|
31
|
+
"name": "Pro Bereich",
|
|
32
|
+
"snippet": "import { Component } from '@angular/core';\nimport { FeatureComponent } from '@conciso/design-system-angular';\n\n@Component({\n selector: 'app-demo',\n imports: [FeatureComponent],\n template: `\n <div class=\"layout-grid\">\n <div\n cdsFeature\n class=\"col-6\"\n title=\"Marke mit Haltung\"\n text=\"Klare Kommunikation, die vertraut und bewegt.\"\n area=\"co\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\" />\n </svg>\n </div>\n <div\n cdsFeature\n class=\"col-6\"\n title=\"KI mit Wirkung\"\n text=\"Liefert, wenn die Demo vorbei ist.\"\n area=\"ki\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456Z\" />\n </svg>\n </div>\n <div\n cdsFeature\n class=\"col-6\"\n title=\"Präzise Systeme\"\n text=\"Lebt, wenn der Hype vorbei ist.\"\n area=\"es\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\" />\n </svg>\n </div>\n <div\n cdsFeature\n class=\"col-6\"\n title=\"Wandel, der trägt\"\n text=\"Bleibt, wenn wir gehen.\"\n area=\"wo\">\n <svg\n cdsIcon\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z\" />\n </svg>\n </div>\n </div>`,\n})\nexport class DemoComponent {}"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|