This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / web / src / lib / components / repo / LanguageBar.stories.svelte
1.4 kB 40 lines
1<script module lang="ts"> 2 import { defineMeta, type StoryContext } from "@storybook/addon-svelte-csf"; 3 import { expect } from "storybook/test"; 4 import LanguageBar from "./LanguageBar.svelte"; 5 6 const languages = [ 7 { name: "TypeScript", percentage: 58, share: 58.2 }, 8 { name: "Svelte", percentage: 31, share: 30.7 }, 9 { name: "CSS", percentage: 10, share: 10.1 }, 10 { name: "Other", percentage: 0, share: 0.4 } 11 ]; 12 type PlayContext = Pick< 13 StoryContext<Record<string, unknown>>, 14 "canvas" | "canvasElement" | "userEvent" 15 >; 16 17 const expandBreakdown = async ({ canvas, canvasElement, userEvent }: PlayContext) => { 18 const details = canvasElement.querySelector("details"); 19 const summary = details?.querySelector("summary"); 20 if (!(summary instanceof HTMLElement)) throw new Error("language summary was not rendered"); 21 await userEvent.click(summary); 22 await expect(details).toHaveAttribute("open"); 23 await expect(canvas.getByText("TypeScript")).toBeVisible(); 24 }; 25 26 const { Story } = defineMeta({ 27 title: "Repo/LanguageBar", 28 component: LanguageBar, 29 tags: ["autodocs"], 30 args: { languages } 31 }); 32</script> 33 34<Story name="Collapsed language bar" /> 35<Story name="Expanded percentage breakdown" play={expandBreakdown} /> 36<Story 37 name="Sub-percent slice" 38 args={{ languages: [{ name: "Other", percentage: 0, share: 0.4 }] }} 39/> 40<Story name="No languages" args={{ languages: [] }} />