Content Profile Review

v0.4.2

Full-page read-only block that displays an auto-generated structural content profile, organised into navigable sections with rich field rendering.

View as Markdown

Preview

Open full page ↗

Install & usage

npx shadcn@latest add @signalos/content-profile-01

Pulls the page source plus its widget dependencies (@signalos/tokens, @signalos/utils, @signalos/badge, @signalos/skeleton, @signalos/tooltip, @signalos/split-panel) into your app - you own the copy. Requires access.

usage
// after: npx shadcn@latest add @signalos/content-profile-01
// mount the pulled page in a route, e.g. src/app/semantics-details/page.tsx
import ContentProfileReview from "@/components/blocks/content-profile-01/ContentProfileReview"

export default function Page() {
  return <ContentProfileReview />
}

Props

ContentProfileSection

PropTypeDefaultDescription
key*string-Unique key for the section, used as React key and identifier.
title*string-Human-readable section title.
data*Record<string, unknown>-Key–value map of fields to render within the section.

ContentProfileReviewProps

PropTypeDefaultDescription
sections*ContentProfileSection[]-Sections to display in the sidebar and detail panel.
completedAtstring | null | undefined-ISO timestamp of when the stage was completed. Omit to hide the date.
isConfirmedboolean | undefinedfalseWhen true, renders the confirmed banner and locks the view read-only.
isLoadingboolean | undefinedfalseShows a full-page skeleton while profile data is loading.
selectedSectionIndexnumber | undefined0Index of the currently selected section. When omitted the component manages selection internally.
onSectionChange((index: number) => void) | undefined-Called with the new index when the user selects a section. Required to make selection fully controlled.
actionButtonsReactNode-Action buttons rendered in the page header (e.g. Rerun, Reset).
classNamestring | undefined-
data-testidstring | undefined-Test identifier rendered as `data-testid` on the root element.

More Semantics Stages variants

Changelog

0.4.2

  • Fix cross-item imports to use canonical @/components paths; add missing signalos.category to manifests.

0.4.1

  • Fix file casing: rename shipped type files to PascalCase to match import paths.

0.4.0

  • Add selectedSectionIndex and onSectionChange props to make section selection fully controlled. Callers that omit both props retain the previous uncontrolled behaviour (selection starts at index 0 and is managed internally). Update ContentProfileReview.preview.tsx scenarios to own selection state and pass it via these props.

0.3.0

  • Replace hand-rolled sidebar/detail layout with SplitPanel, SplitPanelListHeader, and SplitPanelListItem widgets. Add @signalos/split-panel to registry dependencies.
  • Derive data-testid values for the split panel and each section nav item from the root data-testid prop.

0.2.0

  • Breaking: extract ContentProfileSection and ContentProfileReviewProps into ContentProfileReview.types.ts; update any direct interface imports to use the types file.
  • Fix registry-item.json: correct title, description, dependency list (remove unused primitives), and point the types file entry at .types.ts (was .types.tsx).
  • Add ContentProfileReview.preview.tsx with four catalog scenarios: default, confirmed, loading, and empty.
  • Add ContentProfileReview.test.tsx covering default render, loading skeleton, empty state, section switching, confirmed banner, and actionButtons slot.

0.1.1

  • Initial block: read-only content profile display with collapsible section sidebar, rich recursive field rendering, confirmed banner, and loading skeleton.