Skip to content

Commit fbcb4b9

Browse files
authored
✨ (ui) [LBD-276]: Add ledger-skeleton component (#267)
2 parents 1c9f41d + 171e641 commit fbcb4b9

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import "./ledger-skeleton";
2+
3+
import type { Meta, StoryObj } from "@storybook/web-components-vite";
4+
import { html } from "lit";
5+
6+
import type { LedgerSkeleton } from "./ledger-skeleton";
7+
8+
const meta: Meta<LedgerSkeleton> = {
9+
title: "Component/Atom/Skeleton",
10+
tags: ["autodocs"],
11+
render: () => html`<ledger-skeleton class="lb-h-16 lb-w-256"></ledger-skeleton>`,
12+
decorators: [
13+
(story) => html`
14+
<div class="lb-rounded-md lb-bg-canvas-sheet lb-p-16">${story()}</div>
15+
`,
16+
],
17+
};
18+
19+
export default meta;
20+
type Story = StoryObj<LedgerSkeleton>;
21+
22+
export const Base: Story = {};
23+
24+
export const SizeShowcase: Story = {
25+
render: () => html`
26+
<div class="lb-flex lb-flex-col lb-gap-4">
27+
<ledger-skeleton class="lb-h-40 lb-w-56"></ledger-skeleton>
28+
<ledger-skeleton class="lb-h-12 lb-w-112"></ledger-skeleton>
29+
<ledger-skeleton class="lb-h-128 lb-w-256"></ledger-skeleton>
30+
</div>
31+
`,
32+
};
33+
34+
export const ShapeShowcase: Story = {
35+
render: () => html`
36+
<div class="lb-flex lb-flex-col lb-gap-4">
37+
<ledger-skeleton class="lb-h-40 lb-w-256 lb-rounded-none"></ledger-skeleton>
38+
<ledger-skeleton class="lb-h-40 lb-w-256 lb-rounded-lg"></ledger-skeleton>
39+
<ledger-skeleton class="lb-h-48 lb-w-48 lb-rounded-full"></ledger-skeleton>
40+
</div>
41+
`,
42+
};
43+
44+
export const TextLinesShowcase: Story = {
45+
render: () => html`
46+
<div class="lb-flex lb-flex-col lb-gap-8">
47+
<ledger-skeleton class="lb-h-16 lb-w-full"></ledger-skeleton>
48+
<ledger-skeleton class="lb-h-16 lb-w-3/4"></ledger-skeleton>
49+
<ledger-skeleton class="lb-h-16 lb-w-1/2"></ledger-skeleton>
50+
</div>
51+
`,
52+
};
53+
54+
export const AccountItemExample: Story = {
55+
render: () => html`
56+
<div
57+
class="lb-flex lb-max-w-[400px] lb-items-center lb-gap-12 lb-rounded-lg lb-bg-muted lb-p-16"
58+
>
59+
<ledger-skeleton class="lb-h-40 lb-w-40 lb-rounded-full"></ledger-skeleton>
60+
<div class="lb-flex lb-flex-1 lb-flex-col lb-gap-8">
61+
<ledger-skeleton class="lb-h-16 lb-w-112"></ledger-skeleton>
62+
<ledger-skeleton class="lb-h-12 lb-w-80"></ledger-skeleton>
63+
</div>
64+
<ledger-skeleton class="lb-h-16 lb-w-56"></ledger-skeleton>
65+
</div>
66+
`,
67+
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { css, html, LitElement } from "lit";
2+
import { customElement } from "lit/decorators.js";
3+
4+
import { tailwindElement } from "../../../tailwind-element.js";
5+
6+
const styles = css`
7+
:host {
8+
display: block;
9+
}
10+
`;
11+
12+
@customElement("ledger-skeleton")
13+
@tailwindElement(styles)
14+
export class LedgerSkeleton extends LitElement {
15+
override render() {
16+
return html`
17+
<div
18+
data-slot="skeleton"
19+
class="lb-h-full lb-w-full lb-animate-pulse lb-rounded-[inherit] lb-bg-muted"
20+
role="presentation"
21+
aria-hidden="true"
22+
></div>
23+
`;
24+
}
25+
}
26+
27+
declare global {
28+
interface HTMLElementTagNameMap {
29+
"ledger-skeleton": LedgerSkeleton;
30+
}
31+
}

packages/ledger-button/src/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export * from "./atom/icon/ledger-icon.js";
99
export * from "./atom/lottie/ledger-lottie.js";
1010
export * from "./atom/modal/ledger-modal.js";
1111
export * from "./atom/modal/ledger-modal-story-wrapper.js";
12+
export * from "./atom/skeleton/ledger-skeleton.js";
1213
export * from "./atom/tabs/ledger-tabs.js";
1314
export * from "./atom/toggle/ledger-toggle.js";
1415
export * from "./molecule/account-item/ledger-account-item.js";

0 commit comments

Comments
 (0)