Skip to content

Commit 80ae753

Browse files
committed
Adds Sheet
1 parent 50a2064 commit 80ae753

File tree

5 files changed

+140
-0
lines changed

5 files changed

+140
-0
lines changed

dist/components/Sheet/Sheet.d.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { default as React } from 'react';
2+
import { Sheet } from '../ui/sheet';
3+
type SheetProps = React.ComponentProps<typeof Sheet> & {
4+
sheetTitle?: string;
5+
sheetTrigger?: string;
6+
sheetDescription?: string;
7+
sheetFooterButton?: string;
8+
buttonAction?: React.MouseEventHandler<HTMLButtonElement>;
9+
sheetFields: {
10+
id: string;
11+
label: string;
12+
inputDefault: string;
13+
}[];
14+
};
15+
export default function UISheet({ sheetTrigger, sheetTitle, sheetDescription, sheetFooterButton, buttonAction, sheetFields, ...rest }: SheetProps): import("react/jsx-dev-runtime").JSX.Element;
16+
export {};
17+
//# sourceMappingURL=Sheet.d.ts.map

dist/components/Sheet/index.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { default as Sheet } from './Sheet';
2+
export default Sheet;
3+
//# sourceMappingURL=index.d.ts.map

src/components/Sheet/Sheet.tsx

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import React from 'react';
2+
import { Label } from '../ui/label';
3+
import {
4+
Sheet,
5+
SheetContent,
6+
SheetDescription,
7+
SheetTrigger,
8+
SheetFooter,
9+
SheetTitle,
10+
SheetHeader,
11+
SheetClose,
12+
} from '../ui/sheet';
13+
import { Button } from '../ui/button';
14+
import { Input } from '../ui/input';
15+
16+
type SheetProps = React.ComponentProps<typeof Sheet> & {
17+
sheetTitle?: string;
18+
sheetTrigger?: string;
19+
sheetDescription?: string;
20+
sheetFooterButton?: string;
21+
buttonAction?: React.MouseEventHandler<HTMLButtonElement>;
22+
sheetFields: {
23+
id: string;
24+
label: string;
25+
inputDefault: string;
26+
}[];
27+
};
28+
29+
export default function UISheet({
30+
sheetTrigger = 'Open',
31+
sheetTitle = 'Edit profile',
32+
sheetDescription = "Make changes to your profile here. Click save when you're done.",
33+
sheetFooterButton = 'Save changes',
34+
buttonAction = () => {},
35+
sheetFields,
36+
...rest
37+
}: SheetProps) {
38+
return (
39+
<Sheet {...rest}>
40+
<SheetTrigger asChild>
41+
<Button variant="outline">{sheetTrigger}</Button>
42+
</SheetTrigger>
43+
<SheetContent>
44+
<SheetHeader>
45+
<SheetTitle>{sheetTitle}</SheetTitle>
46+
<SheetDescription>{sheetDescription}</SheetDescription>
47+
</SheetHeader>
48+
{sheetFields.map((field) => (
49+
<div className="grid auto-rows-min gap-6 px-4">
50+
<div className="grid gap-3">
51+
<Label htmlFor={field.id}>{field.label}</Label>
52+
<Input id={field.id} defaultValue={field.inputDefault} />
53+
</div>
54+
</div>
55+
))}
56+
<SheetFooter>
57+
<Button onClick={buttonAction} type="submit">
58+
{sheetFooterButton}
59+
</Button>
60+
<SheetClose asChild>
61+
<Button variant="outline">Close</Button>
62+
</SheetClose>
63+
</SheetFooter>
64+
</SheetContent>
65+
</Sheet>
66+
);
67+
}

src/components/Sheet/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { default as Sheet } from './Sheet';
2+
3+
export default Sheet;

src/stories/Sheet.stories.tsx

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { Meta, StoryObj } from '@storybook/react';
2+
import { Story } from '@storybook/addon-docs/blocks';
3+
import { default as Sheet } from '../components/Sheet';
4+
5+
const meta: Meta<typeof Sheet> = {
6+
component: Sheet,
7+
title: 'Components/Sheet',
8+
tags: ['autodocs'],
9+
};
10+
11+
type Story = StoryObj<typeof Sheet>;
12+
13+
export const Default: Story = {
14+
args: {
15+
sheetFields: [
16+
{
17+
id: 'sheet-demo',
18+
label: 'Name',
19+
inputDefault: 'Placeholder',
20+
},
21+
{
22+
id: 'sheet-demo-username',
23+
label: 'Username',
24+
inputDefault: 'Placeholder',
25+
},
26+
],
27+
},
28+
};
29+
30+
export const Custom: Story = {
31+
args: {
32+
sheetTitle: 'Edit',
33+
sheetTrigger: 'Edit Profile',
34+
sheetDescription: 'Test Description',
35+
sheetFooterButton: 'Save!!',
36+
sheetFields: [
37+
{
38+
id: 'sheet-demo',
39+
label: 'Name',
40+
inputDefault: 'Placeholder',
41+
},
42+
{
43+
id: 'sheet-demo-username',
44+
label: 'Username',
45+
inputDefault: 'Placeholder',
46+
},
47+
],
48+
},
49+
};
50+
export default meta;

0 commit comments

Comments
 (0)