Skip to content

feat(docs): consolidate component tabs into a single page - #2730

Draft
Jan-Eimertenbrink wants to merge 51 commits into
mainfrom
claude/komponenten-tabs-consolidate-9dd639
Draft

feat(docs): consolidate component tabs into a single page#2730
Jan-Eimertenbrink wants to merge 51 commits into
mainfrom
claude/komponenten-tabs-consolidate-9dd639

Conversation

@Jan-Eimertenbrink

@Jan-Eimertenbrink Jan-Eimertenbrink commented Jul 28, 2026

Copy link
Copy Markdown
Member

What

Component pages in the docs no longer use tabs (Overview/Develop/Guidelines). All content is now stacked on a single page inside one big LayoutCard, in the order Guidelines → Overview → Develop. The component name, description and the GitHub/Markdown links are the first entry.

The content itself is unchanged — that will be done in a later step.

Changes in detail

  • Frontmatter merged: component/description/gitHubComponentPath now live in index.mdx, which stays the single primary file per component (its body is the former Overview content). The former overview.mdx is gone, and the standalone code preview is removed.
  • Routing: The base route renders the consolidated page; the former tab routes (/overview, /develop, /guidelines) redirect to it — URL fragments are preserved, since all anchors now live on the base page.
  • Updated: navigation (links point to the base page), sitemap.ts, the search index, and the llms/raw-markdown output.
  • Removed: the old TabContent component; added: ComponentContent.

Verification

  • Page rendered (Button + a component without Guidelines): one card, correct order, combined "On this page" navigation, sidebar highlight, tab URLs redirect correctly.
  • Search finds components including the Overview body; sitemap.xml, llms.txt and /raw/.../*.md are correct.
  • tsc = 0 errors, ESLint/Prettier clean.

Out of scope (intentionally not part of this PR)

  • The section order in the machine-readable output (## Overview/## Develop/## Guidelines) is not yet aligned to guidelines-first.

🤖 Generated with Claude Code

Component pages no longer use Overview/Develop/Guidelines tabs. All
content is now rendered stacked on one page in a single LayoutCard, in
the order Guidelines → Overview → Develop, with the component name,
description and GitHub/Markdown links as the first entry.

- Move component name/description frontmatter from index.mdx into the
  page and keep index.mdx as the single primary file (its body is the
  former Overview content); the standalone code preview is removed.
- The base component route renders the consolidated page; the former
  tab routes redirect to it (URL fragments are preserved), and nav,
  sitemap, search index and llms/raw-markdown output are updated
  accordingly.

Content itself is left unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for ./packages/components/

Status Category Percentage Covered / Total
🔵 Lines 75.59% 601 / 795
🔵 Statements 75.46% 615 / 815
🔵 Functions 77.97% 131 / 168
🔵 Branches 65.85% 272 / 413
File CoverageNo changed files found.
Generated in workflow #6149 for commit 520faca by the Vitest Coverage Report Action

@Jan-Eimertenbrink
Jan-Eimertenbrink marked this pull request as draft July 28, 2026 08:59
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Preview Deployment

Preview environments are ready:

Type URL
docs pr-2730.docs.review.flow-components.de
storybook pr-2730.storybook.review.flow-components.de

Images:

  • docs: ghcr.io/mittwald/flow/docs:pr-2730
  • storybook: ghcr.io/mittwald/flow/storybook:pr-2730

@Jan-Eimertenbrink Jan-Eimertenbrink self-assigned this Jul 28, 2026
Jan-Eimertenbrink and others added 2 commits July 28, 2026 11:42
Each component is now one index.mdx containing the whole page in the
order Guidelines → Overview → Develop (frontmatter unchanged). The
separate guidelines.mdx and develop.mdx files are deleted.

- ComponentContent renders the single index.mdx.
- Search, raw-markdown (docPages) and sitemap now treat a component as
  one page instead of per-tab entries; the llms.txt example URL is
  updated accordingly.

Content itself is unchanged (only concatenated in order).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Restructures the Button page into the new section order (Code-Beispiel,
Verwendung, Variants, Color, Sizes, States, Content, Kombiniere mit,
Properties) and fixes spelling/grammar throughout, so the reordered
Button can serve as a discussion basis with the team.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jan-Eimertenbrink and others added 2 commits July 29, 2026 10:11
- Add a separator between the header and the first section.
- Verwendung: add a best-practice bullet about visual feedback after an
  action.
- Move the descriptive copy above the code examples in Variants, Color,
  States, Icon and Text + Icon.
- Light und Dark: link "Color" to the colors foundations page and
  re-add the light/dark code examples.
- Kombiniere mit: add ActionGroup and Action sections (with examples),
  modelled on Align.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Sizes: stack the example vertically (drop `row`).
- Icon / Text + Icon: show a single medium button per example.
- Kombiniere mit ActionGroup: fix the example colors to match the
  ActionGroup convention (accent primary + secondary soft), and reword
  the section to describe grouping into a consistent hierarchy rather
  than mere side-by-side layout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mfal mfal added 1.0 Must be done before releasing 1.0 post-1.0 Does not block the 1.0.0 cut — lands after 1.0.0 labels Jul 31, 2026
- Verwendung: add a "Best Practices" subheading above the guidance list.
- Sizes: bold Medium and Small.
- Content: restate that text and icon must clearly describe the action.
- Text + Icon: reword to stress that the combination is not decorative
  but extends context (chevron indicating a ContextMenu), with a link to
  ContextMenu.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Jan-Eimertenbrink
Jan-Eimertenbrink marked this pull request as ready for review August 6, 2026 14:05
@Jan-Eimertenbrink
Jan-Eimertenbrink marked this pull request as draft August 6, 2026 14:06
Jan-Eimertenbrink and others added 5 commits August 7, 2026 08:31
Resolves conflicts from main's 103 commits vs the tab-consolidation
refactor. Strategy:

- Content: took main's latest tab content and re-applied the mechanical
  consolidation (guidelines + overview + develop -> single index.mdx),
  so main's content edits and the navigation/tabs -> structure/tabs move
  are preserved. The hand-crafted Button page (POC) is kept as-is.
- Groups.tsx: took main's version (already drops the /overview suffix).
- MainNavigation.tsx: auto-merged — combines the base-path routing with
  main's ComponentStatusBadge and deprecated-sorting.
- TabContent: stays deleted (replaced by ComponentContent).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rebuild the TextField page as a single flow matching the Button POC:
Code-Beispiel, Verwendung (+ Best Practices), Value, Input Properties
(+ Passwort), Character Count, Validierung, Disabled, Kombiniere mit,
Properties.

- Rewrite Verwendung + Best Practices to be styleguide-oriented: state
  when to use a TextField and keep only TextField-specific practices;
  link Forms, TextArea and the Forms pattern.
- Drop sections no longer in the outline (Anwendung, Inhalt,
  Accessibility).
- Remove the obsolete `stretch` prop from all LiveCodeEditor examples.
- Fix two typos in reused copy ("textField", "einem Button").

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Anwendung, Inhalt and Placeholder sections were dropped, so their
examples are no longer referenced: required, columnLayout, placeholder,
default, withoutLabel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Code-Beispiel: drop the redundant "Verwende <TextField />" sentence; the
  code sample already shows it.
- Best Practices: fold the TextArea hint into the single-line-input bullet
  instead of a separate point.
- Disabled: replace the mechanical description with guidance to make the
  reason for the disabled state clear from context.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…itor

The bare <LiveCodeEditor /> in the Code-Beispiel section implicitly loads
the example named "default"; it was wrongly removed as orphaned in
4bcedf9, which broke the static export ("Could not find example
default").

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Jan-Eimertenbrink Jan-Eimertenbrink removed a link to an issue Aug 10, 2026
Jan-Eimertenbrink and others added 3 commits August 10, 2026 08:39
Resolve the one modify/delete conflict on
apps/docs/src/content/04-components/overlays/modal/overview.mdx: this
branch consolidated the modal tab files into a single index.mdx, while
main updated the confirmOnClose explanation (#2779). Keep the deletion of
overview.mdx and fold main's revised wording — the reset-only phrasing
plus the new submit-closes vs. modal-stays-open paragraph — into
modal/index.mdx.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Verwendung: trim the intro to a single "when to use" sentence and link
  the Form (React Hook Form) component as the usual way to embed a field.
- Validierung: lead with React Hook Form as the recommended approach; keep
  the native properties as the alternative.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Restructure the Modal docs into a single index.mdx following the Button-style layout: Code-Beispiel first (bare editor), Verwendung with a nested Best Practices, Modals vs. OffCanvas, Variants, Sizes, Ungespeicherte Änderungen, Show CloseButton, Kombiniere mit …, Properties.

- Reorder and trim to the agreed outline; drop the old Inhalt, Writing Guidelines and Verhalten sections.
- Add a Show CloseButton section documenting the showCloseButton prop, with a new showCloseButton example (Modal with ActionGroup where the close button stays visible).
- Condense the Ungespeicherte Änderungen copy to the essentials.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jan-Eimertenbrink and others added 30 commits August 11, 2026 15:40
Apply the single-page pattern; FieldDescription is a feature section (no own page), ContextualHelp and React Hook Form stay under Kombiniere mit ….

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Apply the single-page pattern. Drop the standalone Anwendung/Position, Hierarchie, Inhalt, Writing Guidelines and Accessibility sections; fold their actionable essence into Best Practices and the relevant feature sections. Split States into Disabled and Error, keep the RadioGroup vs. SegmentedControl comparison, move FieldDescription to a feature section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Apply the single-page pattern. Drop the standalone Hierarchie, Feedback, Writing Guidelines, Verhalten and Accessibility sections; fold their essence into Best Practices and Container Breakpoint Size. Keep the SegmentedControl vs. RadioGroup comparison, move FieldDescription to a feature section, fix the Disabled heading typo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Apply the single-page pattern: Code-Beispiel, Verwendung with Best Practices, Label-Position and a trailing Disabled, Properties. No React Hook Form section (no form example yet).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A helper Component without its own page and not usable standalone (FieldDescription) is documented as a feature section, never under Kombiniere mit ….

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ttern

Apply the single-page component pattern to TextArea, SearchField, NumberField, PasswordCreationField and FileField: dissolve the Grundlagen wrapper, promote Verwendung with nested Best Practices, turn Playground into a leading Code-Beispiel, and order feature sections common-to-niche with Disabled last.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ge pattern

Apply the single-page component pattern to Select, ComboBox and Autocomplete: dissolve the Grundlagen wrapper, promote Verwendung with nested Best Practices, turn Playground into a leading Code-Beispiel, keep the vs-comparisons as DoAndDont under Verwendung, and move FieldDescription and CountryOptions out of Kombiniere into feature sections (no own page).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…age pattern

Apply the single-page component pattern to DatePicker, DateRangePicker and TimeField: dissolve the Grundlagen wrapper, promote Verwendung with nested Best Practices, turn Playground into a leading Code-Beispiel (keeping the @internationalized/date note), order feature sections common-to-niche and move Disabled last.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ngle-page pattern

Apply the single-page component pattern to CodeEditor, MarkdownEditor, Rating and Slider: dissolve the Grundlagen wrapper, promote Verwendung with nested Best Practices, turn Playground into a leading Code-Beispiel, and order feature sections common-to-niche with Disabled last. Completes the form-controls category (22/22).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Convert action-group, action, context-menu and copy-button onto the single-page component pattern. Document the dev-edge-case rule (rare dev-only sections sit directly above # Properties) in the styleguide README.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Convert contextual-help, light-box and tooltip onto the single-page component pattern.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Convert breadcrumb, header-navigation, navigation and tab-navigation onto the single-page component pattern.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Roll the single-page component-doc pattern across the chat category (Chat, Message, MessageThread): dissolve # Grundlagen, lead with # Code-Beispiel, promote # Verwendung with nested ## Best Practices, and gather composition under # Kombiniere mit. Fix a prop-name bug on Message (color, not customColor).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ttern

Roll the single-page component-doc pattern across data-visualisation (BigNumber, CartesianChart, DonutChart): dissolve # Grundlagen, lead with # Code-Beispiel, promote # Verwendung with nested ## Best Practices. Prune BigNumber Verwendung/Best-Practice bullets that only point at Kombiniere-mit components. Promote CartesianChart's mis-leveled ## Mit EmptyView to #. Fix an absolute link and casing on DonutChart.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Roll the single-page component-doc pattern across upload (FileCardList, FileCard, FileDropZone, ImageCropper): dissolve # Grundlagen, lead with # Code-Beispiel, promote # Verwendung with nested ## Best Practices. Split FileCard's flat 'Mit …' sections into own-feature sections vs. # Kombiniere mit (Button, ContextMenu, ProgressBar). Add # Kombiniere mit to FileCardList (FileDropZone, FileField) and FileDropZone (FileCardList), reusing an existing composition example. Add a # Verwendung to ImageCropper.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Roll the single-page component-doc pattern across status (Alert, AlertBadge, AlertText, Badge, CounterBadge, LoadingSpinner, Notification, NotificationProvider, ProgressBar): dissolve # Grundlagen, lead with # Code-Beispiel, promote # Verwendung with nested ## Best Practices, move Status explanations above their example. Alert: dissolve # Anwendung/# Writing Guidelines into # Position and # Mit Inhalt. LoadingSpinner/Badge: apply the Foundations Light/Dark color pointer. AlertBadge: link the Informationskonzept. Fix an absolute link on DonutChart-style casing where present.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…e pattern

First structure sub-batch (layout & container primitives): AccentBox, Align, ColumnLayout, Flex, LayoutCard, Separator. Dissolve # Grundlagen, lead with # Code-Beispiel, promote # Verwendung with nested ## Best Practices. Align: group the supported pairings under # Kombinationen and fix a stale 'Overview' reference. ColumnLayout: merge the duplicated breakpoint explanation into # Responsive Layout. Flex: fold usage examples into # Kombiniere mit. Fix a LayoutCard typo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…veloper docs

List carried two overlapping documentations (designer-written overview + developer-written develop), which concatenation had left as duplicates. Merge by topic: Filter, Sortierung, and Loading/Empty View each appeared 2-3x and are now single sections combining design intent, naming rules, API and props tables. Dissolve the # Anwendung/# Inhalt/# Writing Guidelines/# Verhalten/# Accessibility wrappers into the matching topic sections and Best Practices. Drop stale 'siehe Develop-Tab/Overview' cross-tab references. 753 -> 458 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ge pattern

Second structure sub-batch (content structuring & data display): Accordion, Section, Tabs, Table. Dissolve # Grundlagen, lead with # Code-Beispiel, promote # Verwendung with nested ## Best Practices. Section: merge the designer # Anwendung/# Inhalt/# Verhalten wrappers into topic sections + Best Practices, drop the empty # Responsive Layout, fix the wrong two-button cap. Tabs: move the Suspense ordering note to a dev-edge-case section above Properties, drop the redundant playground Alert. Table: merge the two alignment sections into # Ausrichtung.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Convert heading, text, truncate and label to the single-page pattern: dissolve the Grundlagen wrapper, promote Verwendung with nested Best Practices, make Code-Beispiel the first section, and apply the shared separator and feature-section rules.

Drop the HSL-lightness bullets from the Color sections in favor of a pointer to the Color foundation, merge the Label writing guidance into Best Practices, and reorder Text's feature sections (Color before Size).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Convert inline-code, code-block, kbd and labeled-value to the single-page pattern: dissolve the Grundlagen/Anwendung/Writing-Guidelines wrappers, promote Verwendung with nested Best Practices, and make Code-Beispiel the first section.

Build a Verwendung section for labeled-value (previously missing) and merge its duplicated layout/label guidance into Best Practices, order kbd's Varianten before Children, and point the inline-code Color section to the Color foundation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Convert avatar, avatar-stack, image and icon to the single-page pattern: dissolve the Grundlagen wrapper, promote Verwendung with nested Best Practices, and make Code-Beispiel the first section.

Fold the image Responsive-Images section (no example) into a Best-Practice bullet, order the shared axes first (avatar-stack Sizes, icon Colors/Sizes), fix icon's stale Overview reference to link the on-page Icon-Bibliothek, and move that library out of the dev-edge slot to follow the SVG section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Convert illustrated-message, color, markdown and skeleton to the single-page pattern: dissolve the Grundlagen wrapper, promote Verwendung with nested Best Practices, and make Code-Beispiel the first section.

Drop the Light/Dark HSL bullets in favor of a Color-foundation pointer, and fold skeleton's standalone Accessibility section into a Best-Practice bullet (aria-busy on the container, not the skeleton).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… pattern

Convert field, form, form-root-error and submit-button: rename Playground to Code-Beispiel as the first section, add the leading and inter-section separators, and open each with the integration-critical detail (form-root-error now names form.setError("root", …)).

These React Hook Form glue components stay lean — no invented Verwendung/Best Practices where they would only restate the description. Tag the form submit-callback snippet as tsx and fix a grammar slip.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Delete the 52 example files left unreferenced by the single-page consolidation across PR #2730. Dropping the Do/Dont blocks and merged sections orphaned these; each was verified to be neither examples/default.tsx nor referenced by any LiveCodeEditor/Do/Dont example= attribute, and not imported by another example.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…bs-consolidate-9dd639

# Conflicts:
#	apps/docs/src/content/04-components/form-controls/markdown-editor/guidelines.mdx
#	apps/docs/src/content/04-components/form-controls/markdown-editor/overview.mdx
#	apps/docs/src/content/04-components/navigation/link/guidelines.mdx
#	apps/docs/src/content/04-components/navigation/link/overview.mdx
#	apps/docs/src/content/04-components/structure/list/develop.mdx
#	apps/docs/src/content/04-components/structure/list/overview.mdx
Bring the component doc pages in line with apps/docs/README.md after the
single-page rollout, and refine the ruleset where the pages exposed real gaps.

Component fixes: add missing `# Properties` (Kbd) and `## Best Practices`
(ImageCropper); fix a broken Icon link (Rating); reorder feature sections
(Heading Color→Sizes, RadioGroup States, MarkdownEditor RHF); add the opening
integration sentence to 14 `# Code-Beispiel` sections; collapse bold-term option
paragraphs into bullet lists (status, ContextMenu, Tooltip, Label,
CartesianChart); move compositions under `# Kombiniere mit …` (LightBox); link
component names instead of bold/code (Heading, LabeledValue); objective tone
(AvatarStack, Tooltip, CodeBlock); `<Info>`→`<Plain>` tiles (Tabs,
TabNavigation); English axis headings (`# Sizes`/`# Variants`); `# No Ligatures`
casing.

Ruleset (README): allow an `<Alert>` in `# Code-Beispiel`; optional opening
sentence for prop-less containers; a shared `##` for a sibling pair
(AlertBadge/Badge); optional `## React Hook Form` for simple toggles;
example-less reference sections.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.0 Must be done before releasing 1.0 post-1.0 Does not block the 1.0.0 cut — lands after 1.0.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: Simplify and Restructure Styleguide Content Update Button Guidelines

2 participants