diff --git a/packages/cps-global-preview/src/App.tsx b/packages/cps-global-preview/src/App.tsx
index fc97a3aae..472a1937a 100644
--- a/packages/cps-global-preview/src/App.tsx
+++ b/packages/cps-global-preview/src/App.tsx
@@ -1,4 +1,4 @@
-import { useState, useEffect, useCallback } from "react";
+import { useState, useEffect, useCallback, useRef, type ReactNode } from "react";
import type { AuthHint, Notification, Preview } from "cps-global-configuration";
const STATE_ENDPOINT = "/global-components/state/preview";
@@ -161,6 +161,16 @@ const FEATURES: Feature[] = [
type FeatureKey = Feature["key"];
+// A section heading that is its own #anchor, so sections can be linked to directly.
+// Ids are prefixed "section-" to stay clear of the form inputs' ids.
+const SectionHeading = ({ id, className, children }: { id: string; className: string; children: ReactNode }) => (
+