import type { Meta, StoryObj } from '@storybook/html'; import { Skeleton, type SkeletonOptions } from '@42/core/skeleton'; import '@42/styles/skeleton.css'; const snippet = `import { Skeleton } from '@42/core/skeleton'; const skeleton = new Skeleton(document.querySelector('[data-c42-skeleton-region]')!, { loading: true, }); // when data arrives: skeleton.setLoading(false);`; const meta: Meta = { title: 'Core/Feedback & Status/Skeleton', tags: ['autodocs'], parameters: { docs: { source: { code: snippet, language: 'ts' } }, }, argTypes: { loading: { control: 'boolean' }, }, args: { loading: true, }, render: (args) => { const wrap = document.createElement('div'); wrap.style.maxWidth = '20rem'; const region = document.createElement('div'); region.dataset.c42SkeletonRegion = ''; region.innerHTML = `
`; wrap.appendChild(region); const skeleton = new Skeleton(region, args); const toggle = document.createElement('button'); toggle.type = 'button'; toggle.textContent = 'Toggle loading'; toggle.style.marginTop = '1rem'; toggle.addEventListener('click', () => skeleton.setLoading(!skeleton.loading)); wrap.appendChild(toggle); return wrap; }, }; export default meta; type Story = StoryObj; export const Default: Story = {}; export const Loaded: Story = { args: { loading: false }, };