diff --git a/src/components/ui/sheet/index.ts b/src/components/ui/sheet/index.ts new file mode 100644 index 0000000..ffa765d --- /dev/null +++ b/src/components/ui/sheet/index.ts @@ -0,0 +1,36 @@ +import { Dialog as SheetPrimitive } from "bits-ui"; +import Trigger from "./sheet-trigger.svelte"; +import Close from "./sheet-close.svelte"; +import Overlay from "./sheet-overlay.svelte"; +import Content from "./sheet-content.svelte"; +import Header from "./sheet-header.svelte"; +import Footer from "./sheet-footer.svelte"; +import Title from "./sheet-title.svelte"; +import Description from "./sheet-description.svelte"; + +const Root = SheetPrimitive.Root; +const Portal = SheetPrimitive.Portal; + +export { + Root, + Close, + Trigger, + Portal, + Overlay, + Content, + Header, + Footer, + Title, + Description, + // + Root as Sheet, + Close as SheetClose, + Trigger as SheetTrigger, + Portal as SheetPortal, + Overlay as SheetOverlay, + Content as SheetContent, + Header as SheetHeader, + Footer as SheetFooter, + Title as SheetTitle, + Description as SheetDescription, +}; diff --git a/src/components/ui/sheet/sheet-close.svelte b/src/components/ui/sheet/sheet-close.svelte new file mode 100644 index 0000000..3edf368 --- /dev/null +++ b/src/components/ui/sheet/sheet-close.svelte @@ -0,0 +1,8 @@ + + + diff --git a/src/components/ui/sheet/sheet-content.svelte b/src/components/ui/sheet/sheet-content.svelte new file mode 100644 index 0000000..918a5c7 --- /dev/null +++ b/src/components/ui/sheet/sheet-content.svelte @@ -0,0 +1,45 @@ + + + + + + {@render children?.()} + + + Close + + + diff --git a/src/components/ui/sheet/sheet-description.svelte b/src/components/ui/sheet/sheet-description.svelte new file mode 100644 index 0000000..92a785b --- /dev/null +++ b/src/components/ui/sheet/sheet-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/sheet/sheet-footer.svelte b/src/components/ui/sheet/sheet-footer.svelte new file mode 100644 index 0000000..294fb5e --- /dev/null +++ b/src/components/ui/sheet/sheet-footer.svelte @@ -0,0 +1,21 @@ + + +
+ {@render children?.()} +
diff --git a/src/components/ui/sheet/sheet-header.svelte b/src/components/ui/sheet/sheet-header.svelte new file mode 100644 index 0000000..570da79 --- /dev/null +++ b/src/components/ui/sheet/sheet-header.svelte @@ -0,0 +1,21 @@ + + +
+ {@render children?.()} +
diff --git a/src/components/ui/sheet/sheet-overlay.svelte b/src/components/ui/sheet/sheet-overlay.svelte new file mode 100644 index 0000000..45faf9d --- /dev/null +++ b/src/components/ui/sheet/sheet-overlay.svelte @@ -0,0 +1,20 @@ + + + diff --git a/src/components/ui/sheet/sheet-title.svelte b/src/components/ui/sheet/sheet-title.svelte new file mode 100644 index 0000000..174722e --- /dev/null +++ b/src/components/ui/sheet/sheet-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/sheet/sheet-trigger.svelte b/src/components/ui/sheet/sheet-trigger.svelte new file mode 100644 index 0000000..417d73f --- /dev/null +++ b/src/components/ui/sheet/sheet-trigger.svelte @@ -0,0 +1,8 @@ + + + diff --git a/src/components/ui/sheet/sheet.variants.ts b/src/components/ui/sheet/sheet.variants.ts new file mode 100644 index 0000000..a09f5d8 --- /dev/null +++ b/src/components/ui/sheet/sheet.variants.ts @@ -0,0 +1,22 @@ +import { tv, type VariantProps } from "tailwind-variants"; + +const sheetVariants = tv({ + base: "bg-white dark:bg-neutral-900 border-neutral-200 dark:border-neutral-800 data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", + variants: { + side: { + top: "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", + bottom: + "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", + left: "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", + right: + "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", + }, + }, + defaultVariants: { + side: "left", + }, +}); + +type Side = VariantProps["side"]; + +export { sheetVariants, type Side };