@conduction/docusaurus-preset 3.11.0 → 3.12.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.
@@ -5,7 +5,7 @@ Tracks which `preview/components/*.html` patterns ship as React components in
5
5
  port; now reads as a coverage map. Anything still missing lives in **Open gaps**
6
6
  at the bottom.
7
7
 
8
- > Last refreshed 2026-05-06 against `src/components/index.js` and the static kit.
8
+ > Last refreshed 2026-05-19 against `src/components/index.js` and the static kit.
9
9
 
10
10
  ## Atomic primitives
11
11
 
@@ -35,10 +35,10 @@ Most consume one or more primitives.
35
35
  - **AppsPreview / AppCard** — `AppsPreview/AppsPreview.jsx`. Static 3-up apps grid. Composes SectionHead + HexBullet.
36
36
  - **AppsGrid** — `AppsGrid/AppsGrid.jsx`. Filterable apps catalogue with category chips. Reuses AppCard.
37
37
  - **SolutionCard / SolutionGrid** — `SolutionCard/SolutionCard.jsx`. Sector-tinted solution cards. Composes Pill.
38
- - **PartnerCard / PartnerGrid / BecomePartner** — `PartnerCard/PartnerCard.jsx`. Three tiers (partner, certified, strategic). Plus `variant="other"` for the compact mini-avatar card used on partner-detail pages.
39
- - **PartnerDirectory** — `PartnerDirectory/PartnerDirectory.jsx`. Self-contained faceted directory used on `/partners` and embedded on the homepage. Internally derives facets from the partner data; pair with a `becomePartner` object for the trailing CTA card. No dedicated static-kit specimen — composed from PartnerCard + FacetedFilters.
38
+ - **PartnerCard / PartnerGrid / BecomePartner** — `PartnerCard/PartnerCard.jsx`. Three tiers (partner, certified, strategic). Plus `variant="other"` for the compact mini-avatar card used on partner-detail pages. Optional `logoAlt` prop for explicit a11y; defaults to `name + ' logo'` when omitted.
39
+ - **PartnerDirectory** — `PartnerDirectory/PartnerDirectory.jsx`. Self-contained faceted directory used on `/partners` and embedded on the homepage. Internally derives facets from the partner data (including `solutions` merged into the offering facet); pair with a `becomePartner` object for the trailing CTA card. Specimen: `preview/components/partner-directory.html`.
40
40
  - **PartnerSidecard** — `PartnerSidecard/PartnerSidecard.jsx`. Sticky right rail used inside partner-detail pages. Holds the tier credential, "apps they ship", and "solutions they deliver". Bleeds into the Specialties section without wrapping the page.
41
- - **ManagedCommonGround** — `ManagedCommonGround/ManagedCommonGround.jsx`. Yellow-themed managed-stack panel used on `/commonground` and `/support`. Component-list + price line + dual CTA. No dedicated static-kit specimen.
41
+ - **ManagedCommonGround** — `ManagedCommonGround/ManagedCommonGround.jsx`. Yellow-themed managed-stack panel used on `/commonground` and `/support`. Component-list + price line + dual CTA. Specimen: `preview/components/managed-common-ground.html`.
42
42
  - **Clients** (+ `DEFAULT_CLIENTS`, `DEFAULT_PARTNERS`) — `Clients/Clients.jsx`. Three-row right-to-left honeycomb marquee with grayscale-to-colour hover, lane-pause-on-hover, and `prefers-reduced-motion` respect. Specimen: `preview/components/clients-marquee.html`.
43
43
  - **ReferenceCard / ReferenceGrid** — `ReferenceCard/ReferenceCard.jsx`. Customer-reference cards on partner-detail pages.
44
44
  - **PairCard / PairRow** — `PairCard/PairCard.jsx`. Compact "related item" cards on app- and solution-detail pages.
@@ -58,11 +58,11 @@ Most consume one or more primitives.
58
58
  - **ComposeBlock** — `ComposeBlock/ComposeBlock.jsx`. Branded code block (cobalt-900 + Plex Mono + filename pill + copy button). For docker-compose, bash recipes, and any verbatim copy-paste content. Used on `/demo`.
59
59
  - **AgentTrace** — `AgentTrace/AgentTrace.jsx`. Terminal-styled agent execution trace with cursor + mode chrome. Specimen: `preview/components/agent-trace.html`.
60
60
  - **AppMock** — `AppMock/AppMock.jsx`. Selector that renders one of 16 app-specific UI mockups (DeciDesk, DocuDesk, LarpingApp, MyDash + variants, NLDesign, OpenCatalogi, OpenConnector, OpenRegister, OpenWoo, PipelinQ, Procest, SoftwareCatalog, ZaakAfhandelApp). Each variant lives under `AppMock/variants/`. Specimen: `preview/components/app-mock.html`.
61
- - **ExternalAppShelf** — `ExternalAppShelf/ExternalAppShelf.jsx`. Third-party-app shelf (Outlook-style, Mattermost, Keycloak, etc.) used on `/connext`. No dedicated specimen.
62
- - **WidgetShelf** — `WidgetShelf/WidgetShelf.jsx`. Widget showcase grid with eyebrow + title + lede + N-column widget cards. No dedicated specimen.
61
+ - **ExternalAppShelf** — `ExternalAppShelf/ExternalAppShelf.jsx`. Third-party-app shelf (Outlook-style, Mattermost, Keycloak, etc.) used on `/connext`. Specimen: `preview/components/external-app-shelf.html`.
62
+ - **WidgetShelf** — `WidgetShelf/WidgetShelf.jsx`. Widget showcase grid with eyebrow + title + lede + N-column widget cards. Specimen: `preview/components/widget-shelf.html`.
63
63
  - **Showcase** — `Showcase/Showcase.jsx`. Multi-item collapsible showcase with screenshot + body. Used on `/commonground` for the "5-lagen model". Specimen: `preview/components/showcase.html`.
64
64
  - **RotatingCards** — `RotatingCards/RotatingCards.jsx`. Rotating card carousel. Specimen: `preview/components/rotating-cards.html`.
65
- - **FAQ / FAQItem** — `FAQ/FAQ.jsx`. Disclosure-pattern FAQ block. Used on `/support`. No dedicated specimen.
65
+ - **FAQ / FAQItem** — `FAQ/FAQ.jsx`. Disclosure-pattern FAQ block. Used on `/support`. Specimen: `preview/components/faq.html`.
66
66
 
67
67
  ## Academy components
68
68
 
@@ -98,13 +98,38 @@ slot-based children pass through. All exported from `Diagrams/Diagrams.jsx`.
98
98
  - **Footer canal scene** — `theme/Footer/index.jsx`. Full canal scene (Amsterdam trapgevel skyline, kade with bikes/cars, cobalt canal with orange boats, brand block + link grid riding on the water). Templates injected via `dangerouslySetInnerHTML` so the runtime can `.content`-clone them. Re-hydrates on SPA route changes.
99
99
  - **MDXPage** — `theme/MDXPage/index.jsx`. Drops the Docusaurus default `col col--8 col--offset-2` wrapper for pages with `hide_table_of_contents: true`, so marketing surfaces render full-width. Adds the `marketing-page` class on `<main>` so `brand.css` can zero-out stray top margins (no gap between navbar and hero).
100
100
 
101
+ ## Tutorial-body components
102
+
103
+ Drop-in replacements for the ad-hoc h2 + bullet patterns that academy
104
+ tutorials and per-app docs kept duplicating. Designed for use inside an MDX
105
+ body. All five have specimen pages.
106
+
107
+ - **HexCard** — `HexCard/HexCard.jsx`. Tinted academy panel with a top-left hex badge holding an icon. The shared shell behind ContactCta, Outcomes, and Prerequisites. Specimen: `preview/components/hex-card.html`.
108
+ - **Outcomes / Outcome** — `Outcomes/Outcomes.jsx`. "What you'll learn" card with lightbulb hex badge + orange checkmarks. Specimen: `preview/components/outcomes.html`.
109
+ - **Prerequisites / PrerequisiteItem** — `Prerequisites/Prerequisites.jsx`. "What you need" checklist with clipboard hex badge + orange hex bullets. Specimen: `preview/components/prerequisites.html`.
110
+ - **Troubleshooting / TroubleshootingItem** — `Troubleshooting/Troubleshooting.jsx`. Structured error-recovery list. Each item pairs a verbatim `symptom` (monospace) with a one-paragraph fix in a cobalt-50 panel with KNVB-orange left border. Specimen: `preview/components/troubleshooting.html`.
111
+ - **NextSteps / NextStep** — `NextSteps/NextSteps.jsx`. End-of-tutorial action-card row (2/3/4-column). Each card is a fully clickable link with title + body + CTA. Specimen: `preview/components/next-steps.html`.
112
+ - **ContactCta** — `ContactCta/ContactCta.jsx`. "Mail ons" prompt with mail hex badge + primary button. Specimen: `preview/components/contact-cta.html`.
113
+
114
+ ## OpenRegister leaf docs
115
+
116
+ - **LeafCard / LeafGrid** — `LeafCard/LeafCard.jsx`. Per-leaf metadata header for the openregister docs. Pointy-top hex + label + status pill + six-field meta grid (group, requiredApp, storage, icon). Four status tints: backend-ready, stub, external (OpenConnector-routed), built-in. `<LeafGrid>` lays cards out for the overview page; each card links to its docs route when `href` is set. Specimen: `preview/components/leaf-card.html`.
117
+
118
+ ## Marketing / explainer
119
+
120
+ - **IntegrationsBlock / IntegrationsItem** — Two-column explainer that pairs a left-rail FAQ accordion with a right-rail product-mock. Eyebrow + h2 + lede header above the split. Used on app detail pages (notably OpenRegister) to show how the apps fit into a single Nextcloud workspace. Specimen: `preview/components/integrations-block.html` (kit-only; React wrapper still pending).
121
+ - **AtomZones** — `AtomZones/AtomZones.jsx`. Five-zone reference for the canonical Conduction app chassis: Topbar, Left navigation, Main column, Page header, Sidebar. Each card focuses one atom in KNVB orange and fades the rest. Used on architecture pages in per-app docs sites. Specimen: `preview/components/atom-zones.html`.
122
+ - **PartnerSidecard** — `PartnerSidecard/PartnerSidecard.jsx`. Sticky right rail for partner-detail pages. Three tier treatments (Host plain, Service gold stripe, Certified cobalt fill + gold avatar) + Apps they ship + Solutions they deliver + optional bottom CTA. Specimen: `preview/components/partner-sidecard.html`.
123
+
101
124
  ## Open gaps
102
125
 
103
- Three earlier gaps (PartnerCard.OtherCard variant, diagram-set web component
104
- wrappers, brand-citation utilities) closed in April–May 2026 and are folded
105
- into the lists above.
126
+ Six earlier gaps closed in April–May 2026 and are folded into the lists above:
127
+ PartnerCard.OtherCard variant; diagram-set web-component wrappers;
128
+ brand-citation utilities; the five composed components that lacked specimens
129
+ (`Troubleshooting`, `NextSteps`, `PartnerSidecard`, `LeafCard`, `AtomZones`,
130
+ plus the new `IntegrationsBlock`); the locale-switcher integration on
131
+ `landing.html` (now complete, NL dictionary covers every `data-i18n` key);
132
+ the `PartnerDirectory solutions` field (consumed in the offering facet);
133
+ the `PartnerCard logoAlt` prop (accepted, with `name + ' logo'` fallback).
106
134
 
107
- - **Locale switcher integration on the kit's static `landing.html`** — the top-navbar.html ships an NL/EN switcher (querystring driven), but the kit's individual pages don't yet have a translation dictionary so the switch is cosmetic on those pages. The connext site already has full Docusaurus i18n; the kit is one round of NL copy away from full parity.
108
- - **Static specimen pages for composed components** — `ManagedCommonGround`, `PartnerDirectory`, `WidgetShelf`, `ExternalAppShelf`, `FAQ` ship as React but have no `preview/components/*.html` reference. They're composed from primitives that already have specimens, so the absence is reasonable, but a designer reviewing the kit can't see them outside the live site.
109
- - **PartnerCard `logoAlt` prop** — accepted but never passed by any current MDX usage. Either drop or document an a11y fallback expectation.
110
- - **PartnerDirectory `solutions` field** — included in `partners-catalog.js` per partner, never consumed by `<PartnerCard>` (harmless spread). Decide whether to surface (e.g. inside the card) or remove from the data.
135
+ No open gaps as of 2026-05-19.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conduction/docusaurus-preset",
3
- "version": "3.11.0",
3
+ "version": "3.12.0",
4
4
  "scripts": {
5
5
  "prepack": "node scripts/prepack-bundle-css.js"
6
6
  },
@@ -29,7 +29,9 @@
29
29
  .row { grid-template-columns: 1fr; }
30
30
  }
31
31
 
32
- /* App card, mirrors .app-card from preview/components/apps-grid.css */
32
+ /* App card, mirrors .app-card from preview/components/apps-grid.css.
33
+ Two-column grid: icon hex on the left, name + tagline on the right,
34
+ meta row spans the full width at the bottom. */
33
35
  .card {
34
36
  background: white;
35
37
  border: 1px solid var(--c-cobalt-100);
@@ -38,9 +40,12 @@
38
40
  text-decoration: none;
39
41
  color: inherit;
40
42
  transition: all 160ms ease;
41
- display: flex;
42
- flex-direction: column;
43
- gap: 16px;
43
+ display: grid;
44
+ grid-template-columns: auto 1fr;
45
+ column-gap: 20px;
46
+ row-gap: 6px;
47
+ align-items: start;
48
+ align-content: start;
44
49
  }
45
50
  .card:hover {
46
51
  border-color: var(--c-blue-cobalt);
@@ -60,6 +65,9 @@
60
65
  align-items: center;
61
66
  justify-content: center;
62
67
  flex-shrink: 0;
68
+ grid-column: 1;
69
+ grid-row: 1 / span 2;
70
+ align-self: start;
63
71
  }
64
72
  .iconWrap svg {
65
73
  width: 26px;
@@ -74,12 +82,14 @@
74
82
  font-weight: 700;
75
83
  letter-spacing: -0.01em;
76
84
  color: var(--c-cobalt-900);
85
+ grid-column: 2;
77
86
  }
78
87
 
79
88
  .tagline {
80
89
  font-size: 15px;
81
90
  color: var(--c-cobalt-700);
82
91
  line-height: 1.5;
92
+ grid-column: 2;
83
93
  }
84
94
  .tagline :global(.next-blue) { color: var(--c-nextcloud-blue); }
85
95
 
@@ -90,6 +100,7 @@
90
100
  margin-top: auto;
91
101
  padding-top: 20px;
92
102
  border-top: 1px solid var(--c-cobalt-100);
103
+ grid-column: 1 / -1;
93
104
  }
94
105
 
95
106
  .badge {