@conduction/docusaurus-preset 3.34.0 → 3.35.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/ANIMATION_ROADMAP.md +129 -0
- package/MISSING_COMPONENTS.md +11 -2
- package/package.json +3 -2
- package/src/components/AppMock/AppMock.module.css +1263 -0
- package/src/components/AppMock/__tests__/AppMock.render.test.js +148 -0
- package/src/components/AppMock/variants/DeciDeskMock.jsx +46 -5
- package/src/components/AppMock/variants/DocuDeskMock.jsx +39 -9
- package/src/components/AppMock/variants/DoriathMock.jsx +28 -13
- package/src/components/AppMock/variants/HermiqMock.jsx +35 -15
- package/src/components/AppMock/variants/HrmqMock.jsx +46 -28
- package/src/components/AppMock/variants/LarpingAppMock.jsx +13 -3
- package/src/components/AppMock/variants/OpenBuildMock.jsx +20 -5
- package/src/components/AppMock/variants/OpenCatalogiMock.jsx +23 -4
- package/src/components/AppMock/variants/OpenConnectorMock.jsx +25 -3
- package/src/components/AppMock/variants/OpenRegisterMock.jsx +13 -2
- package/src/components/AppMock/variants/ProcestMock.jsx +34 -7
- package/src/components/AppMock/variants/ShillinqMock.jsx +33 -17
- package/src/components/AppMock/variants/SoftwareCatalogMock.jsx +15 -5
- package/src/components/AppMock/variants/ZaakAfhandelAppMock.jsx +19 -4
- package/src/components/SidebarMock/SidebarMock.jsx +29 -2
- package/src/components/SidebarMock/__tests__/SidebarMock.render.test.js +115 -0
- package/src/components/WidgetMock/WidgetMock.jsx +35 -14
- package/src/components/WidgetMock/__tests__/WidgetMock.render.test.js +125 -0
- package/src/components/WidgetMock/variants/DocuDeskAnonymise.jsx +6 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Animation roadmap — wave 6 (planned, not yet implemented)
|
|
2
|
+
|
|
3
|
+
Waves 1–5 of the animated-atomics programme are shipped (see
|
|
4
|
+
`MISSING_COMPONENTS.md` for the per-component coverage). This file
|
|
5
|
+
holds the designs for the two remaining L-size items from the
|
|
6
|
+
animation audit, plus the small registry debts the audit surfaced.
|
|
7
|
+
Nothing in this file is implemented; it is the working spec for the
|
|
8
|
+
next animation PR.
|
|
9
|
+
|
|
10
|
+
Rules carried over from the shipped waves, binding for wave 6 too:
|
|
11
|
+
|
|
12
|
+
- Tokens only; no images, no hardcoded colours.
|
|
13
|
+
- One KNVB-orange accent per component, maximum.
|
|
14
|
+
- Every loop is seamless (opacity-swap resets, no visible rewind).
|
|
15
|
+
- `running={false}` and `prefers-reduced-motion` render the
|
|
16
|
+
meaningful end state, not a blank.
|
|
17
|
+
- Timelines ride the `--am-dur`-style custom-property convention so
|
|
18
|
+
a consumer can retune duration without touching keyframes.
|
|
19
|
+
|
|
20
|
+
## 1 · Pipeline — the document travels the flow (L)
|
|
21
|
+
|
|
22
|
+
**Component:** `src/components/Pipeline/Pipeline.jsx` +
|
|
23
|
+
`Pipeline.module.css` (React, in the preset).
|
|
24
|
+
|
|
25
|
+
**Audit finding on the claimed dotted-line animation — VERIFIED, it
|
|
26
|
+
exists.** `Pipeline.module.css` draws the full-width dotted flow line
|
|
27
|
+
as `.steps::before` (a `repeating-linear-gradient` dash pattern) and
|
|
28
|
+
animates it with `flow-shift` (0.9s linear infinite,
|
|
29
|
+
`background-position 0 → 10px`, lines 39–67). The stacked mobile
|
|
30
|
+
layout (`max-width: 1100px`) switches to a vertical line with its own
|
|
31
|
+
`flow-shift-vert` twin, and `prefers-reduced-motion: reduce` disables
|
|
32
|
+
both. So the base "the line flows" motion is real and shipping; what
|
|
33
|
+
wave 6 adds is the *payload* making the journey, not the line itself.
|
|
34
|
+
|
|
35
|
+
**Design — a document hex rides the line:**
|
|
36
|
+
|
|
37
|
+
- A small terracotta document hex (pointy-top, ~10×11, the same
|
|
38
|
+
vocabulary as the AppMock `.doc` atoms) spawns at the left end-box
|
|
39
|
+
(the `IconList` "Sources" column), travels the dotted line
|
|
40
|
+
left-to-right, and pauses ~400ms at each step hex's equator.
|
|
41
|
+
- At each pause the step hex answers: a 1.06 scale pulse plus a brief
|
|
42
|
+
ring in the step's own family colour (mint for the OpenConnector
|
|
43
|
+
step, workspace-blue for the platform hex, terracotta for
|
|
44
|
+
OpenCatalogi — never a new orange). The pill inside the hex, when
|
|
45
|
+
present, bumps with it.
|
|
46
|
+
- Past the last step the document fades into the right end-box
|
|
47
|
+
("Consumers"), whose list items tick top-to-bottom with a 120ms
|
|
48
|
+
stagger (each item's icon tile flashes its border cobalt→mint→rest)
|
|
49
|
+
— the "everyone downstream can see it now" beat.
|
|
50
|
+
- Loop length: `--pl-dur`, default 9s. The traveller is hidden at
|
|
51
|
+
0%/100% (opacity swap), so the loop is seamless; the dotted line's
|
|
52
|
+
independent 0.9s `flow-shift` keeps running underneath and needs no
|
|
53
|
+
synchronisation.
|
|
54
|
+
- The vertical (stacked) layout re-routes the traveller top-to-bottom
|
|
55
|
+
along the vertical line; same beats.
|
|
56
|
+
- Static / reduced-motion: the traveller is hidden, every step hex at
|
|
57
|
+
rest, the consumer list fully ticked — the delivered end state.
|
|
58
|
+
(`flow-shift` is already disabled by the existing media query.)
|
|
59
|
+
- Implementation note: the traveller must be a sibling of `.steps`
|
|
60
|
+
positioned against the same `top: 85px` midline calc the line uses;
|
|
61
|
+
the hexes' `z-index: 1` will occlude it while it passes "through"
|
|
62
|
+
a hex, which is exactly the right reading.
|
|
63
|
+
|
|
64
|
+
## 2 · PlatformDiagram — the platform assembles (L, cross-repo)
|
|
65
|
+
|
|
66
|
+
**Component:** the preset's `PlatformDiagram/PlatformDiagram.jsx` is
|
|
67
|
+
a typed wrapper around the bespoke `<platform-diagram>` web component
|
|
68
|
+
that lives **in the design-system repo, not the preset**:
|
|
69
|
+
`preview/components/_lib/platform-diagram.js` +
|
|
70
|
+
`platform-diagram.css`. The animation therefore lands cross-repo: the
|
|
71
|
+
keyframes and progress logic go into `_lib/platform-diagram.{js,css}`
|
|
72
|
+
(runtime CSS is injected by the web component), while the preset
|
|
73
|
+
wrapper only grows a `running` prop it forwards as an attribute.
|
|
74
|
+
|
|
75
|
+
**Today:** the component already reveals on scroll via the
|
|
76
|
+
`--pd-list-progress` / `--pd-hex-progress` custom properties — a
|
|
77
|
+
one-shot entrance, not a loop.
|
|
78
|
+
|
|
79
|
+
**Design — assembly loop:**
|
|
80
|
+
|
|
81
|
+
- Beat 1, the workspace: the centre workspace slab draws in (scaleY
|
|
82
|
+
from the baseline) and its topbar dots pop left-to-right.
|
|
83
|
+
- Beat 2, the corner hexes: the four app hexes fly in from their
|
|
84
|
+
compass corners (translate + fade, 90ms stagger), each with a
|
|
85
|
+
1.05 settle-bounce as it docks.
|
|
86
|
+
- Beat 3, the flows: the connecting flow lines draw (stroke-dash
|
|
87
|
+
reveal) from workspace to each hex in the same order the hexes
|
|
88
|
+
landed.
|
|
89
|
+
- Beat 4, the lists: each side list's rows land with the shipped
|
|
90
|
+
`.sbLive`-style stagger; the workspace pill flashes mint once when
|
|
91
|
+
the last row is in — "the platform is complete".
|
|
92
|
+
- Hold ~2.5s assembled, then a soft opacity-cascade reset (the shipped
|
|
93
|
+
waves' convention; no rewind).
|
|
94
|
+
- Loop length: `--pd-dur`, default 12s. When a `running="false"`
|
|
95
|
+
attribute (or `prefers-reduced-motion`) is set, the diagram renders
|
|
96
|
+
fully assembled — identical to today's post-scroll-reveal state, so
|
|
97
|
+
the existing scroll-progress path can stay as the reduced-motion
|
|
98
|
+
fallback.
|
|
99
|
+
- Cross-repo sequencing: land the web-component change in
|
|
100
|
+
`preview/components/_lib/` first (the kit page
|
|
101
|
+
`preview/components/platform-overview.html` is the specimen), then
|
|
102
|
+
bump the copy the preset consumes, then add the wrapper prop +
|
|
103
|
+
render test in the preset. Two PRs, one per repo.
|
|
104
|
+
|
|
105
|
+
## 3 · Pointer — flow-canvas run animation (spec lives elsewhere)
|
|
106
|
+
|
|
107
|
+
The FlowMock atomic (shipped, wave 3) is the marketing abstraction of
|
|
108
|
+
the flow editor. The *product* counterpart — the run-line animation on
|
|
109
|
+
the real flow canvas — is specified in the **nextcloud-vue** repo
|
|
110
|
+
(spec merged; `CnFlowCanvas` run-animation spec). Do not re-specify it
|
|
111
|
+
here: when that lands, FlowMock should stay visually consistent with
|
|
112
|
+
it (mint run-line, ~600ms approval hold, single orange halo at the
|
|
113
|
+
approval node), but the preset carries no implementation work for it.
|
|
114
|
+
|
|
115
|
+
## 4 · SidebarMock icon-registry stand-ins (S, debt)
|
|
116
|
+
|
|
117
|
+
The audit flagged two tab icons that ship as stand-ins because the
|
|
118
|
+
`IntegrationIcon` registry has no dedicated glyph:
|
|
119
|
+
|
|
120
|
+
- `docudesk-signatures` — the Signatures tab renders the **mail**
|
|
121
|
+
icon. Needs a signature glyph (pen-stroke over a baseline, in the
|
|
122
|
+
registry's stroke style).
|
|
123
|
+
- `docudesk-pii-map` — the PII-map tab renders the **keycloak** icon.
|
|
124
|
+
Needs a PII/redaction glyph (masked-text bar or eye-off).
|
|
125
|
+
|
|
126
|
+
Add both to `IntegrationIcon/registry.js`, switch the two tab
|
|
127
|
+
definitions in `SidebarMock.jsx`, and extend the SidebarMock render
|
|
128
|
+
test to pin the new names. Until then the stand-ins are acceptable at
|
|
129
|
+
mock abstraction level but must not leak into product UI.
|
package/MISSING_COMPONENTS.md
CHANGED
|
@@ -57,7 +57,9 @@ Most consume one or more primitives.
|
|
|
57
57
|
- **CookieCli** — `CookieCli/CookieCli.jsx`. Terminal-styled cookie consent banner with localStorage persistence.
|
|
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. Types itself out on a loop: lines reveal left-to-right on a 550ms stagger, status dots start after their line, ~2s hold, soft cascade restart; `running={false}` / `prefers-reduced-motion` show the full trace at rest. Specimen: `preview/components/agent-trace.html`.
|
|
60
|
-
- **AppMock** — `AppMock/AppMock.jsx`. Selector that renders one of 24 app-specific UI mockups (DeciDesk, DocuDesk, LarpingApp, LaunchPad + variants, NLDesign, PipelinQ, Portaliq, Procest, Scholiq, SoftwareCatalog, ZaakAfhandelApp, …; `openwoo` aliases to the OpenCatalogi mock). Each variant lives under `AppMock/variants/`.
|
|
60
|
+
- **AppMock** — `AppMock/AppMock.jsx`. Selector that renders one of 24 app-specific UI mockups (DeciDesk, DocuDesk, LarpingApp, LaunchPad + variants, NLDesign, PipelinQ, Portaliq, Procest, Scholiq, SoftwareCatalog, ZaakAfhandelApp, …; `openwoo` aliases to the OpenCatalogi mock). Each variant lives under `AppMock/variants/`. As of the wave-2/4 animation pass every product variant loops a one-scene story on the shared `--am-dur` timeline: portaliq form-submit, nldesign retheme, scholiq progress+credential, launchpad widgets/tiles/BI, pipelinq deal-close (wave 1+3); docudesk PII words blacking out + live dropzone, shillinq bank-line reconciliation, doriath unlock → countdown → relock, opencatalogi federated-search filter, openconnector record-travel + run insert, procest stage advance + row re-sort, openregister object landing + rail repaint (wave 2); decidesk vote tally + pending→adopted flip, hrmq timesheet submit→approve→payroll (content reworked from the earlier people-list, which misrepresented the app), larpingapp XP ripple, softwarecatalog CVE scan sweep, zaakafhandelapp submission travel, hermiq conversation + tool chips + approval tick (inline styles moved to the module), openbuild template→app ghost travel (wave 4). `running={false}` / `prefers-reduced-motion` freeze every loop to its meaningful end state. Specimen: `preview/components/app-mock.html`.
|
|
61
|
+
- **WidgetMock** — `WidgetMock/WidgetMock.jsx`. Standalone abstract of one Nextcloud dashboard widget (14 kinds: nine Conduction + five stock-Nextcloud framing widgets). The ten list-shaped kinds share a single wave-5 refresh primitive (`.wmLive` in AppMock.module.css): a fresh row slides in at the top, the bottom row clips out, and the frame's unread badge bumps — transform/opacity only, so tile height never jumps. `docudesk-anonymise` instead runs the `.zoneLive` dropzone loop (marching-ants dashes, a file hex drops, mint confirm flash). `running={false}` / `prefers-reduced-motion` freeze to the resting tile. Specimen: `preview/components/widget-mock.html`.
|
|
62
|
+
- **SidebarMock** — `SidebarMock/SidebarMock.jsx`. Token-painted Nextcloud right-side detail panel, one registered tab active (9 kinds across Procest, DocuDesk, OpenRegister, OpenCatalogi, OpenConnector, DeciDesk, stock activity). Standalone card or `embedded` into an AppMock's `.detail` slot. Wave-5 loop (`.sbLive`): the panel slides in from the right, the head wipes, the active-tab underline travels in from the neighbouring tab (positioned by `--sb-ix`/`--sb-n` custom properties set from the variant's active index), and the body rows land on a stagger. `running={false}` / `prefers-reduced-motion` freeze to the opened panel. Known stand-ins in the tab icon registry: Signatures tabs borrow the `mail` icon, PII-map tabs borrow `keycloak` (see `ANIMATION_ROADMAP.md`). Specimen: `preview/components/sidebar-mock.html`.
|
|
61
63
|
- **FlowMock** — `FlowMock/FlowMock.jsx`. Token-painted abstract of the flow editor: node cards on a dotted canvas with coloured left bars (mint trigger, lavender steps, vermillion end), curved grey edges with pill labels, and a mint run-line looping trigger → step → approval → end. The run holds ~600ms at the approval node while an orange halo flashes there (the component's one orange). Freezes to the full static route under `prefers-reduced-motion` or `running={false}`. Specimen: `preview/components/flow-mock.html`.
|
|
62
64
|
- **LeafMock** — `LeafMock/LeafMock.jsx`. Small integration-leaf panels for Showcase items: `leaf="contacts"` (hex-avatar rows + mint sync arrow to a phone), `"calendar"` (mini month grid + linked-event chip), `"mail"` (message list + mint create-from-email chip), `"files"` (folder/file rows + forest link-to-record chip). Each leaf animates on the shared 6s `--lm-dur` loop (sync pulse + phone rows; day pop + chip slide; row highlight + chip pop; row + link-icon draw); `running={false}` / `prefers-reduced-motion` freeze to the end state.
|
|
63
65
|
- **BuildMock** — `BuildMock/BuildMock.jsx`. Looping "make it yours" animation: the orange OpenBuild edit FAB is pressed, a component palette opens, and a widget is dragged into the page layout where it snaps in (~8s loop). `prefers-reduced-motion` / `running={false}` renders the static end state (component placed).
|
|
@@ -159,4 +161,11 @@ plus the new `IntegrationsBlock`); the locale-switcher integration on
|
|
|
159
161
|
the `PartnerDirectory solutions` field (consumed in the offering facet);
|
|
160
162
|
the `PartnerCard logoAlt` prop (accepted, with `name + ' logo'` fallback).
|
|
161
163
|
|
|
162
|
-
No open gaps as of 2026-05-19.
|
|
164
|
+
No open component gaps as of 2026-05-19.
|
|
165
|
+
|
|
166
|
+
Animation coverage (2026-08-19): waves 1–5 of the animated-atomics
|
|
167
|
+
programme shipped — every AppMock product variant, the WidgetMock
|
|
168
|
+
list-refresh + dropzone primitives, and the SidebarMock open loop.
|
|
169
|
+
The two remaining L-size items (Pipeline document-travels-the-flow,
|
|
170
|
+
PlatformDiagram assembly) and the SidebarMock icon-registry stand-ins
|
|
171
|
+
are specified in [`ANIMATION_ROADMAP.md`](ANIMATION_ROADMAP.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conduction/docusaurus-preset",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.35.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"prepack": "node scripts/prepack-bundle-css.js",
|
|
6
6
|
"test": "node --test"
|
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
"static/",
|
|
35
35
|
"bin/",
|
|
36
36
|
"README.md",
|
|
37
|
-
"MISSING_COMPONENTS.md"
|
|
37
|
+
"MISSING_COMPONENTS.md",
|
|
38
|
+
"ANIMATION_ROADMAP.md"
|
|
38
39
|
],
|
|
39
40
|
"keywords": [
|
|
40
41
|
"conduction",
|