From 41b91a37aad21b5f2c5adf93785d46d76aa9888f Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 12 May 2026 23:48:23 +0200 Subject: [PATCH] docs: brand landing page + bump @conduction/docusaurus-preset to 1.5.1 --- docs/package-lock.json | 8 +- docs/package.json | 2 +- docs/src/components/HomepageFeatures/index.js | 64 ---- .../HomepageFeatures/styles.module.css | 6 - docs/src/pages/index.js | 304 ++++++++++++++++-- docs/src/pages/index.module.css | 18 -- 6 files changed, 278 insertions(+), 124 deletions(-) delete mode 100644 docs/src/components/HomepageFeatures/index.js delete mode 100644 docs/src/components/HomepageFeatures/styles.module.css delete mode 100644 docs/src/pages/index.module.css diff --git a/docs/package-lock.json b/docs/package-lock.json index 2c8684ff1..7af36cc71 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -8,7 +8,7 @@ "name": "decidesk-docs", "version": "0.0.0", "dependencies": { - "@conduction/docusaurus-preset": "^1.4.3", + "@conduction/docusaurus-preset": "^1.5.1", "@docusaurus/core": "^3.7.0", "@docusaurus/preset-classic": "^3.7.0", "@docusaurus/theme-mermaid": "^3.7.0", @@ -2040,9 +2040,9 @@ } }, "node_modules/@conduction/docusaurus-preset": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@conduction/docusaurus-preset/-/docusaurus-preset-1.4.3.tgz", - "integrity": "sha512-64F8A0qal/EfNYJKqsXMGjsOV2X0WYi72plO6MTC/9h60Fz85cMwzEiRpi58e9lloHAc3UBVMuffrzmDimsfwA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@conduction/docusaurus-preset/-/docusaurus-preset-1.5.1.tgz", + "integrity": "sha512-xKcq6OHKvKMHopqP7PzOjviyLe5D91Za9qpY2teMiLN9jOOfbhM1lvv/dK+o7N+kK0ATolM7rOZOHNZwfIIaNQ==", "license": "EUPL-1.2", "peerDependencies": { "@docusaurus/core": "^3.0.0", diff --git a/docs/package.json b/docs/package.json index d2607e8b5..6de244a7f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -15,7 +15,7 @@ "ci": "npm ci --legacy-peer-deps && npm run build" }, "dependencies": { - "@conduction/docusaurus-preset": "^1.4.3", + "@conduction/docusaurus-preset": "^1.5.1", "@docusaurus/core": "^3.7.0", "@docusaurus/preset-classic": "^3.7.0", "@docusaurus/theme-mermaid": "^3.7.0", diff --git a/docs/src/components/HomepageFeatures/index.js b/docs/src/components/HomepageFeatures/index.js deleted file mode 100644 index 1d34d6027..000000000 --- a/docs/src/components/HomepageFeatures/index.js +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import clsx from 'clsx'; -import styles from './styles.module.css'; - -const FeatureList = [ - { - title: 'Meetings, agendas & minutes', - description: ( - <> - Schedule meetings, build agendas, capture decisions, and publish - minutes — all as typed OpenRegister objects with a per-record audit - trail. Configurable workflows per organisation type across five - governance domains. - - ), - }, - { - title: 'Motions, amendments & voting', - description: ( - <> - Submit motions, propose amendments, and run votes with chair - controls, configurable quorum and voting-rights rules, and a clear - trail from proposal to adopted decision. Co-authoring, delegation, - and engagement tracking included. - - ), - }, - { - title: 'Decision tracking & AI companion', - description: ( - <> - Follow decisions and action items through to completion, and ask - the built-in AI chat companion about a meeting, an action item, or - an open decision — it exposes meeting and action-item tools over - MCP so the assistant can answer with live data. - - ), - }, -]; - -function Feature({ title, description }) { - return ( -
-
-

{title}

-

{description}

-
-
- ); -} - -export default function HomepageFeatures() { - return ( -
-
-
- {FeatureList.map((props, idx) => ( - - ))} -
-
-
- ); -} diff --git a/docs/src/components/HomepageFeatures/styles.module.css b/docs/src/components/HomepageFeatures/styles.module.css deleted file mode 100644 index 5418f923e..000000000 --- a/docs/src/components/HomepageFeatures/styles.module.css +++ /dev/null @@ -1,6 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} \ No newline at end of file diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js index aff662fdc..56300389d 100644 --- a/docs/src/pages/index.js +++ b/docs/src/pages/index.js @@ -1,53 +1,295 @@ /** * Decidesk landing page. * - * Written as .js (not .mdx) because the docs plugin is pointed at - * `path: './'`, and an MDX file in src/pages/ trips the MDX-ESM - * parser even with the docs plugin's `src/**` exclude. Authoring the - * page in JSX keeps the same component composition. + * Composes the brand + from + * @conduction/docusaurus-preset/components, mirroring the OpenRegister + * landing page at openregister.conduction.nl (docs/src/pages/index.js). * - * Kept deliberately simple (Layout + hero header + HomepageFeatures) - * rather than the brand preset's / — this - * was scaffolded by /journeydoc-init (ADR-030); swap in the richer - * brand components when the marketing copy and app mock are ready. + * Written as .js (not .mdx) because the docs site has the docs plugin + * pointed at `path: './'`, and an MDX file in src/pages/ trips the + * MDX-ESM parser even with the docs plugin's `src/**` exclude — likely + * a quirk of how mdx-loader's micromark stack reuses parser state + * across files in this Docusaurus 3 + this preset combination. + * Authoring the page in JSX keeps the same component composition. */ import React from 'react'; -import clsx from 'clsx'; -import Link from '@docusaurus/Link'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; -import HomepageFeatures from '@site/src/components/HomepageFeatures'; +import { + DetailHero, + WidgetShelf, + AppMock, +} from '@conduction/docusaurus-preset/components'; -import styles from './index.module.css'; +/* Gavel glyph — same path as decidesk/img/app.svg (Material Design + Icons "gavel"). Read as the chair's gavel: the moment a decision + becomes the decision. */ +const DECIDESK_ICON = ( + + + +); -function HomepageHeader() { - const { siteConfig } = useDocusaurusContext(); +const TAGLINE = ( + <> + Decidesk runs the whole decision: meetings, agendas, motions, + amendments, voting, minutes, and the decision log — with + configurable workflows for governance bodies, associations, + corporate boards, and operational meetings. + +); + +function UpcomingMeetingsPanel() { + const rows = [ + { tone: 'var(--c-cobalt-300)', when: 'Mon 14:00' }, + { tone: 'var(--c-lavender-300)', when: 'Wed 10:30' }, + { tone: 'var(--c-mint-500)', when: 'Thu 16:00' }, + { tone: 'var(--c-forest-300)', when: 'Mon 09:00' }, + ]; return ( -
-
-

{siteConfig.title}

-

{siteConfig.tagline}

-
- - Read the docs - +
+ {rows.map((row, i) => ( +
+ +
+
+
+
+
+ {row.when} +
-
-
+ ))} + ); } +function MotionsPanel() { + const rows = [ + { tone: 'var(--c-mint-500)', label: 'ADOPTED', w: '80%' }, + { tone: 'var(--c-cobalt-300)', label: 'VOTING', w: '65%' }, + { tone: 'var(--c-lavender-300)', label: 'AMENDED', w: '55%' }, + { tone: 'var(--c-orange-knvb)', label: 'TABLED', w: '40%' }, + ]; + return ( +
+ {rows.map((row, i) => ( +
+ +
+ {row.label} +
+
+
+
+
+ ))} +
+ ); +} + +function ActionItemsPanel() { + const rows = [ + { tone: 'var(--c-orange-knvb)', due: 'overdue' }, + { tone: 'var(--c-mint-500)', due: 'today' }, + { tone: 'var(--c-lavender-300)', due: 'Fri' }, + { tone: 'var(--c-cobalt-300)', due: 'next wk' }, + { tone: 'var(--c-forest-300)', due: 'next wk' }, + ]; + return ( +
+ {rows.map((row, i) => ( +
+ +
+
+
+
+
+ {row.due} +
+
+ ))} +
+ ); +} + +const WIDGETS = [ + { + title: 'Upcoming meetings', + desc: 'Your next meetings across every body you sit on — agendas, papers, and the join link, all on the dashboard you already open.', + panel: , + }, + { + title: 'Motions in play', + desc: 'Motions and amendments by status: tabled, in debate, voting, adopted. Chair controls, configurable quorum, and a clear trail from proposal to decision.', + panel: , + }, + { + title: 'Open action items', + desc: 'Every action item assigned out of a meeting, sorted by due date. Follow each one through to completion, with the decision log as the source of truth.', + panel: , + }, +]; + export default function Home() { - const { siteConfig } = useDocusaurusContext(); return ( - -
- +
+ } + /> + +
); diff --git a/docs/src/pages/index.module.css b/docs/src/pages/index.module.css deleted file mode 100644 index 329e7493b..000000000 --- a/docs/src/pages/index.module.css +++ /dev/null @@ -1,18 +0,0 @@ -.heroBanner { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; -} - -@media screen and (max-width: 996px) { - .heroBanner { - padding: 2rem; - } -} - -.buttons { - display: flex; - align-items: center; - justify-content: center; -} \ No newline at end of file