import { playgroundParameters } from "@charcuterie/storybook-config/story-parameters" import type { Meta, StoryObj } from "@storybook/react" import { ContainerBoard, StoryCell, StoryGrid, StorySection, } from "../board.storyHelpers.tsx" import { Card } from "../Card/Card.tsx" import { Skeleton } from "./Skeleton.tsx" const meta = { title: "Components/Feedback/Skeleton", component: Skeleton, parameters: { layout: "padded" }, args: { lineCount: 1, shape: "block" }, } satisfies Meta export default meta type Story = StoryObj /** * The inverse of every other component's gate. A skeleton is * decoration standing in for content that does not exist yet, so it * is hidden from AT entirely — otherwise a screen reader reads three * empty bars. */ export const Playground: Story = { parameters: playgroundParameters, args: { blockSize: "1.5rem", inlineSize: "12rem" }, } export const AllVariants: Story = { args: {}, render: () => ( ), } /** * A skeleton has no interactive states — no hover, no focus, no * disabled. What it has instead is a *fidelity* obligation: the * placeholder has to occupy the same box the real content will, or * the grid reflows when the data lands and the user loses their * place. So this story is the comparison rather than a state grid. */ export const AllStates: Story = { args: {}, render: () => (

Ripping Blade Runner (1982) — title 4 of 9, AACS handshake complete, 38 minutes remaining on this title.

), } export const Responsive: Story = { args: {}, render: () => ( ), } /** * Nothing to drive, and that is the point: a skeleton contributes no * roles at all, so an agent sweeping the page never finds a control * it cannot act on. */ export const Interactive: Story = { args: { inlineSize: "12rem", lineCount: 3, shape: "text", }, }