refactor(storybook): simplify component and preview examples

Drop page / section descriptions, state notes and repeated captions from
the representative Stories of 44 components, the Patterns, Center
Graphic and OrgChart pages. Value readouts, spec lists and captions hide
only on the representative page; hidden verification Stories keep them.
Tabs Default API and the Filter Bar draft / applied counts move to the
hidden DefaultApi and DraftApplied Stories; Center Overview is hidden
with its direct URL kept. Story IDs are unchanged.

Align the component, pattern and OrgChart docs with the pages, point the
quality reference check at the DraftApplied Story, and make the P8
styles check expect no section header on the preview-only Expanded page.
This commit is contained in:
shkim4 committed 2026-10-23 00:28:05 +09:00
1 parent 48977e7823
commit 4c29894e56
81 files changed
+520 -671

No files matched your search

+10 -12
View File
@@ -29,7 +29,8 @@ function pageRange(page: number, total: number): (number | "start" | "end")[] {
return out
}
function Specimen({ total, initial }: { total: number; initial: number }) {
// `showValue={false}` hides the value readout on the representative page; the verification Stories keep it.
function Specimen({ total, initial, showValue = true }: { total: number; initial: number; showValue?: boolean }) {
const [page, setPage] = useState(initial)
const go = (p: number) => (event: React.MouseEvent) => {
event.preventDefault()
@@ -60,7 +61,7 @@ function Specimen({ total, initial }: { total: number; initial: number }) {
</PaginationItem>
</PaginationContent>
</Pagination>
<p className="text-center text-sm text-muted-foreground" data-testid="page-state">{`현재 ${page} / ${total}`}</p>
{showValue ? <p className="text-center text-sm text-muted-foreground" data-testid="page-state">{`현재 ${page} / ${total}`}</p> : null}
</div>
)
}
@@ -68,10 +69,10 @@ function Specimen({ total, initial }: { total: number; initial: number }) {
const wrap = (node: ReactNode) => <div className="w-full max-w-xl">{node}</div>
const sections = [
{ id: "first", label: "First page", note: "Previous가 aria-disabled", node: <Specimen total={5} initial={1} /> },
{ id: "middle", label: "Middle page", node: <Specimen total={5} initial={3} /> },
{ id: "last", label: "Last page", note: "Next가 aria-disabled", node: <Specimen total={5} initial={5} /> },
{ id: "ellipsis", label: "Long range with ellipsis", note: "클릭하면 실제로 현재 페이지가 바뀝니다", node: <Specimen total={20} initial={10} /> },
{ id: "first", label: "First page", node: <Specimen total={5} initial={1} showValue={false} /> },
{ id: "middle", label: "Middle page", node: <Specimen total={5} initial={3} showValue={false} /> },
{ id: "last", label: "Last page", node: <Specimen total={5} initial={5} showValue={false} /> },
{ id: "ellipsis", label: "Long range", node: <Specimen total={20} initial={10} showValue={false} /> },
]
const meta = { title: "Components/Navigation/Pagination", component: Pagination, parameters: { layout: "padded" } } satisfies Meta<typeof Pagination>
@@ -79,7 +80,7 @@ export default meta
type Story = StoryObj<typeof meta>
const board = (...ids: string[]) => (
<StateBoard min={420} states={sections.filter((s) => ids.includes(s.id)).map((s) => ({ id: s.id, label: s.label, note: s.note, children: wrap(s.node) }))} />
<StateBoard min={420} states={sections.filter((s) => ids.includes(s.id)).map((s) => ({ id: s.id, label: s.label, children: wrap(s.node) }))} />
)
// Representative Story: the common Story page; the sections group the same specimens.
@@ -88,12 +89,9 @@ export const All: Story = {
parameters: { layout: "fullscreen", controls: { disable: true } },
render: () => (
<StoryPage>
<StoryPageHeader
title="Pagination"
description="현재 페이지와 href는 소비 코드가 소유"
/>
<StoryPageHeader title="Pagination" />
<StorySection title="Overview">{board("middle")}</StorySection>
<StorySection title="States" description="처음·끝에서 이전·다음 aria-disabled">{board("first", "last")}</StorySection>
<StorySection title="States">{board("first", "last")}</StorySection>
<StorySection title="Usage">{board("ellipsis")}</StorySection>
</StoryPage>
),