feat(storybook): add layout & navigation primitive stories#18125
Merged
Conversation
Cover Default, ResponsiveFlex (`variant: responsiveFlex`), TabNavScrollMargin (`scrollMargin: tabNav`), and TagVariants (`pill|plain`). Includes SectionBanner, SectionTag, SectionHeader, and SectionContent sub-components. Title hierarchy `UI / Section` per #18121. Refs: #18121 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Cover Default, WithIcons, Controlled (state-driven via `onSelect`), WithMotion (animated highlight via Framer Motion `layoutId`), and Sticky (wrapped in `StickyContainer`). Title hierarchy `UI / TabNav` per #18121. Refs: #18121 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Cover FlexBase, CenterBase, StackBase, StackWithSeparator, HStackBase, VStackBase, HStackWithSeparator, and VStackWithSeparator. One story per primitive variant per the issue. Title hierarchy `UI / Flex` per #18121. Refs: #18121 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Cover Default (whole-card-clickable), WithNestedInteractive (z-index escape hatch for inner controls), and ExternalLink (`!static` override on `LinkOverlay` so the `before:absolute` overlay still anchors to `LinkBox`). Title hierarchy `UI / LinkBox` per #18121. Refs: #18121 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
Cover Default, VariantRow, VariantCol, VariantsCompared (side-by-side), VariousIcons (Lucide examples), LabelOnly, and ChildrenOnly. Title hierarchy `UI / SvgButtonLink` per #18121. Lucide icons are adapted via a small `asIcon` cast because the component's `Svg: FC<SVGProps<SVGElement>>` signature is narrower than Lucide's ref-typed components. A future cleanup could widen the prop type to accept Lucide directly. Refs: #18121 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
✅ Deploy Preview for ethereumorg ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
4 tasks
This was referenced May 6, 2026
Per team decision to keep the Chromatic snapshot budget controlled while these primitives get visual reference in Storybook. Snapshots can be re-enabled per-story once we assess which views need regression coverage. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
pettinarip
approved these changes
May 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Adds Storybook stories for the layout & navigation primitives in
src/components/ui/. This is PR 4 of 5 for #18121, scoped to layout and nav components. One commit per checkbox in the issue.SectionBanner,SectionTag(pill|plain),SectionHeader,SectionContentsub-components. TitleUI / Section.layoutId), Sticky (wrapped inStickyContainer). TitleUI / TabNav.UI / Flex.!staticoverride). TitleUI / LinkBox.Reverted
Notes for review
UI / [Name](noPrimitives /segment) since each is a custom app component, not a vanilla shadcn re-export.TabNavControlledstory uses an innerControlledTabscomponent to host React state --args.onSelectalone won't trigger re-renders without component-local state.LinkBoxWithNestedInteractiveusesBaseLinkfor the inner badge to satisfy@next/next/no-html-link-for-pages(raw<a href="/dapps">would fail lint).Test plan
TabNavWithMotionhighlight animates between tab clicksRefs: #18121