@signozhq/drawer 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,33 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Drawer as Drawer$1 } from 'vaul';
4
+
5
+ declare function Drawer({ ...props }: React.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function DrawerTrigger({ ...props }: React.ComponentProps<typeof Drawer$1.Trigger>): react_jsx_runtime.JSX.Element;
7
+ declare function DrawerPortal({ ...props }: React.ComponentProps<typeof Drawer$1.Portal>): react_jsx_runtime.JSX.Element;
8
+ declare function DrawerClose({ ...props }: React.ComponentProps<typeof Drawer$1.Close>): react_jsx_runtime.JSX.Element;
9
+ declare function DrawerOverlay({ className, ...props }: React.ComponentProps<typeof Drawer$1.Overlay>): react_jsx_runtime.JSX.Element;
10
+ declare function DrawerContent({ className, children, showOverlay, ...props }: React.ComponentProps<typeof Drawer$1.Content> & {
11
+ showOverlay?: boolean;
12
+ }): react_jsx_runtime.JSX.Element;
13
+ declare function DrawerHeader({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
14
+ declare function DrawerFooter({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
15
+ declare function DrawerTitle({ className, ...props }: React.ComponentProps<typeof Drawer$1.Title>): react_jsx_runtime.JSX.Element;
16
+ declare function DrawerDescription({ className, ...props }: React.ComponentProps<typeof Drawer$1.Description>): react_jsx_runtime.JSX.Element;
17
+ interface DrawerWrapperProps {
18
+ trigger: React.ReactNode;
19
+ header?: {
20
+ title: string;
21
+ description?: string;
22
+ };
23
+ content: React.ReactNode;
24
+ footer?: React.ReactNode;
25
+ direction?: 'top' | 'right' | 'bottom' | 'left';
26
+ showCloseButton?: boolean;
27
+ allowOutsideClick?: boolean;
28
+ showOverlay?: boolean;
29
+ className?: string;
30
+ }
31
+ declare function DrawerWrapper({ trigger, header, content, footer, direction, showCloseButton, allowOutsideClick, showOverlay, className, }: DrawerWrapperProps): react_jsx_runtime.JSX.Element;
32
+
33
+ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DrawerWrapper };
package/dist/drawer.js ADDED
@@ -0,0 +1,209 @@
1
+ import { Drawer as Drawer$1 } from 'vaul';
2
+ import { X } from 'lucide-react';
3
+ import { clsx } from 'clsx';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __defProps = Object.defineProperties;
9
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __objRest = (source, exclude) => {
27
+ var target = {};
28
+ for (var prop in source)
29
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
+ target[prop] = source[prop];
31
+ if (source != null && __getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
+ target[prop] = source[prop];
35
+ }
36
+ return target;
37
+ };
38
+
39
+ // #style-inject:#style-inject
40
+ function styleInject(css, { insertAt } = {}) {
41
+ if (typeof document === "undefined") return;
42
+ const head = document.head || document.getElementsByTagName("head")[0];
43
+ const style = document.createElement("style");
44
+ style.type = "text/css";
45
+ if (insertAt === "top") {
46
+ if (head.firstChild) {
47
+ head.insertBefore(style, head.firstChild);
48
+ } else {
49
+ head.appendChild(style);
50
+ }
51
+ } else {
52
+ head.appendChild(style);
53
+ }
54
+ if (style.styleSheet) {
55
+ style.styleSheet.cssText = css;
56
+ } else {
57
+ style.appendChild(document.createTextNode(css));
58
+ }
59
+ }
60
+
61
+ // src/index.css
62
+ styleInject('/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root,\n :host {\n --font-sans: var(--font-sans);\n --font-serif: var(--font-serif);\n --font-mono: var(--font-mono);\n --color-slate-500: var(--bg-slate-500);\n --color-black: #000;\n --spacing: 0.25rem;\n --container-sm: 24rem;\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --font-weight-normal: 400;\n --font-weight-semibold: 600;\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-border: var(--border);\n --color-ring: var(--ring);\n --color-vanilla-300: var(--bg-vanilla-300);\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html,\n :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b,\n strong {\n font-weight: bolder;\n }\n code,\n kbd,\n samp,\n pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol,\n ul,\n menu {\n list-style: none;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n vertical-align: middle;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n button,\n input,\n select,\n optgroup,\n textarea,\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field,\n ::-webkit-datetime-edit-second-field,\n ::-webkit-datetime-edit-millisecond-field,\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button,\n input:where([type=button], [type=reset], [type=submit]),\n ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button,\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=until-found])) {\n display: none !important;\n }\n}\n@layer utilities {\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .fixed {\n position: fixed;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .z-50 {\n z-index: 50;\n }\n .mx-auto {\n margin-inline: auto;\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-auto {\n margin-top: auto;\n }\n .flex {\n display: flex;\n }\n .hidden {\n display: none;\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-auto {\n height: auto;\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-\\[100px\\] {\n width: 100px;\n }\n .w-full {\n width: 100%;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-vanilla-300 {\n border-color: var(--color-vanilla-300);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-card {\n background-color: var(--color-card);\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .text-foreground {\n color: var(--color-foreground);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .opacity-70 {\n opacity: 70%;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--color-background);\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:block {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=bottom] *) {\n display: block;\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--color-ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=bottom] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:bottom-0 {\n &[data-vaul-drawer-direction=bottom] {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:mt-24 {\n &[data-vaul-drawer-direction=bottom] {\n margin-top: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=bottom] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:rounded-t-lg {\n &[data-vaul-drawer-direction=bottom] {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:border-t {\n &[data-vaul-drawer-direction=bottom] {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=left] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:left-0 {\n &[data-vaul-drawer-direction=left] {\n left: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=left] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:border-r {\n &[data-vaul-drawer-direction=left] {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=right] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:right-0 {\n &[data-vaul-drawer-direction=right] {\n right: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=right] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:border-l {\n &[data-vaul-drawer-direction=right] {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=top] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:top-0 {\n &[data-vaul-drawer-direction=top] {\n top: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:mb-24 {\n &[data-vaul-drawer-direction=top] {\n margin-bottom: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=top] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:rounded-b-lg {\n &[data-vaul-drawer-direction=top] {\n border-bottom-right-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:border-b {\n &[data-vaul-drawer-direction=top] {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=left] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=right] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .dark\\:border-slate-500 {\n &:is(.dark *) {\n border-color: var(--color-slate-500);\n }\n }\n}\n:root {\n --bg-robin-100: #cad5fd;\n --bg-robin-200: #b8c7fc;\n --bg-robin-300: #95acfb;\n --bg-robin-400: #7190f9;\n --bg-robin-500: #4e74f8;\n --bg-robin-600: #3f5ecc;\n --bg-sienna-100: #e6d9cd;\n --bg-sienna-200: #deccbc;\n --bg-sienna-300: #ceb29b;\n --bg-sienna-400: #bd9979;\n --bg-sienna-500: #ad7f58;\n --bg-sienna-600: #8a6646;\n --bg-cherry-100: #fadadb;\n --bg-cherry-200: #f7c8ca;\n --bg-cherry-300: #f5b6b8;\n --bg-cherry-400: #ea6d71;\n --bg-cherry-500: #e5484d;\n --bg-cherry-600: #b83a3e;\n --bg-aqua-100: #c1eefd;\n --bg-aqua-200: #9ae4fc;\n --bg-aqua-300: #72d9fb;\n --bg-aqua-400: #4bcff9;\n --bg-aqua-500: #23c4f8;\n --bg-aqua-600: #07afe6;\n --bg-sakura-100: #fbc8d2;\n --bg-sakura-200: #fab5c3;\n --bg-sakura-300: #f791a5;\n --bg-sakura-400: #f56c87;\n --bg-sakura-500: #f24769;\n --bg-sakura-600: #c53955;\n --bg-amber-100: #fff0cc;\n --bg-amber-200: #ffebbb;\n --bg-amber-300: #ffe19a;\n --bg-amber-400: #ffd778;\n --bg-amber-500: #ffcd56;\n --bg-amber-600: #d5aa45;\n --bg-ink-100: #2a2e37;\n --bg-ink-200: #23262e;\n --bg-ink-300: #16181d;\n --bg-ink-400: #121317;\n --bg-ink-500: #0b0c0e;\n --bg-vanilla-100: #fff;\n --bg-vanilla-200: #f5f5f5;\n --bg-vanilla-300: #e9e9e9;\n --bg-vanilla-400: #c0c1c3;\n --bg-slate-50: #62687c;\n --bg-slate-100: #3c4152;\n --bg-slate-200: #2c3140;\n --bg-slate-300: #242834;\n --bg-slate-400: #1d212d;\n --bg-slate-500: #161922;\n --bg-gradient-coral:\n linear-gradient(\n 114deg,#ed6d68 14.99%,#fca083 77.27%);\n --bg-gradient-dark-shadow:\n linear-gradient(\n 139deg,rgba(18,19,23,.8),rgba(18,19,23,.9) 98.68%);\n --bg-gradient-dawn:\n linear-gradient(\n 99deg,#7a97fa 4.42%,#f977ff 96.6%);\n --bg-gradient-ocean:\n linear-gradient(\n 99deg,#48f8cf 4.42%,#28cbf3 96.6%);\n --bg-gradient-splash:\n linear-gradient(\n 99deg,#4568dc 4.42%,#324daa 96.6%);\n --bg-gradient-flamingo:\n linear-gradient(\n 92deg,#ca9cd0 1.36%,#d38972 68.48%,#a1b1e7 98.99%);\n --bg-forest-200: #a8f3d3;\n --bg-forest-300: #7cedbe;\n --bg-forest-400: #51e7a8;\n --bg-forest-500: #25e192;\n --bg-forest-600: #1eb475;\n --text-robin-100: #cad5fd;\n --text-robin-200: #b8c7fc;\n --text-robin-300: #95acfb;\n --text-robin-400: #7190f9;\n --text-robin-500: #4e74f8;\n --text-robin-600: #3f5ecc;\n --text-sienna-100: #e6d9cd;\n --text-sienna-200: #deccbc;\n --text-sienna-300: #ceb29b;\n --text-sienna-400: #bd9979;\n --text-sienna-500: #ad7f58;\n --text-sienna-600: #8a6646;\n --text-cherry-100: #fadadb;\n --text-cherry-200: #f7c8ca;\n --text-cherry-300: #f5b6b8;\n --text-cherry-400: #ea6d71;\n --text-cherry-500: #e5484d;\n --text-cherry-600: #b83a3e;\n --text-aqua-100: #c1eefd;\n --text-aqua-200: #9ae4fc;\n --text-aqua-300: #72d9fb;\n --text-aqua-400: #4bcff9;\n --text-aqua-500: #23c4f8;\n --text-aqua-600: #07afe6;\n --text-sakura-100: #fbc8d2;\n --text-sakura-200: #fab5c3;\n --text-sakura-300: #f791a5;\n --text-sakura-400: #f56c87;\n --text-sakura-500: #f24769;\n --text-sakura-600: #c53955;\n --text-amber-100: #fff0cc;\n --text-amber-200: #ffebbb;\n --text-amber-300: #ffe19a;\n --text-amber-400: #ffd778;\n --text-amber-500: #ffcd56;\n --text-amber-600: #d5aa45;\n --text-ink-100: #2a2e37;\n --text-ink-200: #23262e;\n --text-ink-300: #16181d;\n --text-ink-400: #121317;\n --text-ink-500: #0b0c0e;\n --text-vanilla-100: #fff;\n --text-vanilla-200: #f5f5f5;\n --text-vanilla-300: #e9e9e9;\n --text-vanilla-400: #c0c1c3;\n --text-slate-200: #2c3140;\n --text-slate-300: #242834;\n --text-slate-400: #1d212d;\n --text-slate-500: #161922;\n --text-gradient-coral:\n linear-gradient(\n 114deg,#ed6d68 14.99%,#fca083 77.27%);\n --text-gradient-dark-shadow:\n linear-gradient(\n 139deg,rgba(18,19,23,.8),rgba(18,19,23,.9) 98.68%);\n --text-gradient-dawn:\n linear-gradient(\n 99deg,#7a97fa 4.42%,#f977ff 96.6%);\n --text-gradient-ocean:\n linear-gradient(\n 99deg,#48f8cf 4.42%,#28cbf3 96.6%);\n --text-gradient-splash:\n linear-gradient(\n 99deg,#4568dc 4.42%,#324daa 96.6%);\n --text-gradient-flamingo:\n linear-gradient(\n 92deg,#ca9cd0 1.36%,#d38972 68.48%,#a1b1e7 98.99%);\n --text-forest-200: #a8f3d3;\n --text-forest-300: #7cedbe;\n --text-forest-400: #51e7a8;\n --text-forest-500: #25e192;\n --text-forest-600: #1eb475;\n --padding-1: 0.25rem;\n --padding-2: 0.5rem;\n --padding-3: 0.75rem;\n --padding-4: 1rem;\n --padding-5: 1.25rem;\n --padding-6: 1.5rem;\n --padding-7: 1.75rem;\n --padding-8: 2rem;\n --padding-10: 2.5rem;\n --padding-12: 3rem;\n --padding-16: 4rem;\n --padding-20: 5rem;\n --padding-24: 6rem;\n --padding-32: 8rem;\n --padding-40: 10rem;\n --padding-48: 12rem;\n --padding-56: 14rem;\n --padding-64: 16rem;\n --margin-1: 0.25rem;\n --margin-2: 0.5rem;\n --margin-3: 0.75rem;\n --margin-4: 1rem;\n --margin-5: 1.25rem;\n --margin-6: 1.5rem;\n --margin-7: 1.75rem;\n --margin-8: 2rem;\n --margin-10: 2.5rem;\n --margin-12: 3rem;\n --margin-16: 4rem;\n --margin-20: 5rem;\n --margin-24: 6rem;\n --margin-32: 8rem;\n --margin-40: 10rem;\n --margin-48: 12rem;\n --margin-56: 14rem;\n --margin-64: 16rem;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-lg: 1.125rem;\n --font-size-xl: 1.25rem;\n --font-size-2xl: 1.5rem;\n --font-size-3xl: 1.875rem;\n --font-size-4xl: 2.25rem;\n --font-size-5xl: 3rem;\n --font-size-6xl: 3.75rem;\n --font-size-7xl: 4.5rem;\n --font-size-8xl: 6rem;\n --font-size-9xl: 8rem;\n --font-weight-thin: 100;\n --font-weight-extralight: 200;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n}\n:root {\n --background: var(--bg-vanilla-200);\n --foreground: var(--text-ink-400);\n --card: var(--bg-vanilla-100);\n --card-foreground: var(--text-ink-400);\n --popover: var(--bg-vanilla-100);\n --popover-foreground: var(--text-ink-400);\n --primary: var(--bg-robin-500);\n --primary-foreground: var(--text-vanilla-100);\n --secondary: var(--bg-vanilla-300);\n --secondary-foreground: var(--text-slate-400);\n --muted: var(--bg-vanilla-300);\n --muted-foreground: var(--text-slate-50);\n --accent: var(--bg-aqua-100);\n --accent-foreground: var(--text-slate-400);\n --destructive: var(--bg-cherry-500);\n --destructive-foreground: var(--text-vanilla-100);\n --border: var(--bg-slate-400);\n --input: var(--bg-slate-400);\n --ring: var(--bg-robin-500);\n --chart-1: var(--bg-robin-500);\n --chart-2: var(--bg-robin-600);\n --chart-3: var(--bg-slate-300);\n --chart-4: var(--bg-slate-400);\n --chart-5: var(--bg-slate-500);\n --radius: 0.25rem;\n --sidebar: var(--bg-vanilla-300);\n --sidebar-foreground: var(--text-ink-400);\n --sidebar-primary: var(--bg-robin-500);\n --sidebar-primary-foreground: var(--text-vanilla-100);\n --sidebar-accent: var(--bg-aqua-100);\n --sidebar-accent-foreground: var(--text-slate-400);\n --sidebar-border: var(--bg-slate-400);\n --sidebar-ring: var(--bg-robin-500);\n --font-sans: "Inter";\n --font-serif: "Open Sans";\n --font-mono: "Geist Mono";\n}\n.dark {\n --background: var(--bg-ink-500);\n --foreground: var(--text-vanilla-400);\n --card: var(--bg-ink-400);\n --card-foreground: var(--text-vanilla-100);\n --popover: var(--bg-ink-400);\n --popover-foreground: var(--text-vanilla-100);\n --primary: var(--bg-robin-500);\n --primary-foreground: var(--text-ink-500);\n --secondary: var(--bg-slate-500);\n --secondary-foreground: var(--text-vanilla-400);\n --muted: var(--bg-slate-500);\n --muted-foreground: var(--text-vanilla-400);\n --accent: var(--bg-slate-300);\n --accent-foreground: var(--text-vanilla-100);\n --destructive: var(--bg-cherry-500);\n --destructive-foreground: var(--text-ink-500);\n --border: var(--bg-slate-400);\n --input: var(--bg-slate-300);\n --ring: var(--bg-robin-500);\n --chart-1: var(--bg-robin-400);\n --chart-2: var(--bg-robin-500);\n --chart-3: var(--bg-robin-600);\n --chart-4: var(--bg-slate-200);\n --chart-5: var(--bg-slate-300);\n --sidebar: var(--bg-slate-500);\n --sidebar-foreground: var(--text-vanilla-400);\n --sidebar-primary: var(--bg-robin-500);\n --sidebar-primary-foreground: var(--text-ink-500);\n --sidebar-accent: var(--bg-slate-400);\n --sidebar-accent-foreground: var(--text-vanilla-400);\n --sidebar-border: var(--bg-slate-500);\n --sidebar-ring: var(--bg-robin-500);\n}\n@layer base {\n * {\n border-color: var(--color-border);\n outline-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n body {\n background-color: var(--color-background);\n color: var(--color-foreground);\n }\n}\n[data-theme-color=blue] {\n --primary: var(--bg-robin-500);\n --primary-foreground: var(--text-vanilla-100);\n --ring: var(--bg-robin-500);\n --sidebar-primary: var(--bg-robin-500);\n --sidebar-ring: var(--bg-robin-500);\n}\n.dark[data-theme-color=blue] {\n --primary: var(--bg-robin-400);\n --primary-foreground: var(--text-ink-500);\n --ring: var(--bg-robin-400);\n --sidebar-primary: var(--bg-robin-400);\n --sidebar-ring: var(--bg-robin-400);\n}\n[data-theme-color=green] {\n --primary: var(--bg-forest-500);\n --primary-foreground: var(--text-vanilla-100);\n --ring: var(--bg-forest-500);\n --sidebar-primary: var(--bg-forest-500);\n --sidebar-ring: var(--bg-forest-500);\n}\n.dark[data-theme-color=green] {\n --primary: var(--bg-forest-400);\n --primary-foreground: var(--text-ink-500);\n --ring: var(--bg-forest-400);\n --sidebar-primary: var(--bg-forest-400);\n --sidebar-ring: var(--bg-forest-400);\n}\n[data-theme-color=amber] {\n --primary: var(--bg-amber-500);\n --primary-foreground: var(--text-vanilla-100);\n --ring: var(--bg-amber-500);\n --sidebar-primary: var(--bg-amber-500);\n --sidebar-ring: var(--bg-amber-500);\n}\n.dark[data-theme-color=amber] {\n --primary: var(--bg-amber-400);\n --primary-foreground: var(--text-ink-500);\n --ring: var(--bg-amber-400);\n --sidebar-primary: var(--bg-amber-400);\n --sidebar-ring: var(--bg-amber-400);\n}\n[data-theme-color=cherry] {\n --primary: var(--bg-cherry-500);\n --primary-foreground: var(--text-vanilla-100);\n --ring: var(--bg-cherry-500);\n --sidebar-primary: var(--bg-cherry-500);\n --sidebar-ring: var(--bg-cherry-500);\n}\n.dark[data-theme-color=cherry] {\n --primary: var(--bg-cherry-400);\n --primary-foreground: var(--text-ink-500);\n --ring: var(--bg-cherry-400);\n --sidebar-primary: var(--bg-cherry-400);\n --sidebar-ring: var(--bg-cherry-400);\n}\n[data-theme-color=aqua] {\n --primary: var(--bg-aqua-500);\n --primary-foreground: var(--text-vanilla-100);\n --ring: var(--bg-aqua-500);\n --sidebar-primary: var(--bg-aqua-500);\n --sidebar-ring: var(--bg-aqua-500);\n}\n.dark[data-theme-color=aqua] {\n --primary: var(--bg-aqua-400);\n --primary-foreground: var(--text-ink-500);\n --ring: var(--bg-aqua-400);\n --sidebar-primary: var(--bg-aqua-400);\n --sidebar-ring: var(--bg-aqua-400);\n}\n@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\n@property --tw-font-weight { syntax: "*"; inherits: false; }\n@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-ring-color { syntax: "*"; inherits: false; }\n@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-ring-color { syntax: "*"; inherits: false; }\n@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-ring-inset { syntax: "*"; inherits: false; }\n@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }\n@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }\n@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *,\n ::before,\n ::after,\n ::backdrop {\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n }\n }\n}\n');
63
+ function cn(...inputs) {
64
+ return twMerge(clsx(inputs));
65
+ }
66
+ function Drawer(_a) {
67
+ var props = __objRest(_a, []);
68
+ return /* @__PURE__ */ jsx(Drawer$1.Root, __spreadValues({ "data-slot": "drawer" }, props));
69
+ }
70
+ function DrawerTrigger(_a) {
71
+ var props = __objRest(_a, []);
72
+ return /* @__PURE__ */ jsx(Drawer$1.Trigger, __spreadValues({ "data-slot": "drawer-trigger" }, props));
73
+ }
74
+ function DrawerPortal(_a) {
75
+ var props = __objRest(_a, []);
76
+ return /* @__PURE__ */ jsx(Drawer$1.Portal, __spreadValues({ "data-slot": "drawer-portal" }, props));
77
+ }
78
+ function DrawerClose(_a) {
79
+ var props = __objRest(_a, []);
80
+ return /* @__PURE__ */ jsx(Drawer$1.Close, __spreadValues({ "data-slot": "drawer-close" }, props));
81
+ }
82
+ function DrawerOverlay(_a) {
83
+ var _b = _a, {
84
+ className
85
+ } = _b, props = __objRest(_b, [
86
+ "className"
87
+ ]);
88
+ return /* @__PURE__ */ jsx(
89
+ Drawer$1.Overlay,
90
+ __spreadValues({
91
+ "data-slot": "drawer-overlay",
92
+ className: cn(
93
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
94
+ className
95
+ )
96
+ }, props)
97
+ );
98
+ }
99
+ function DrawerContent(_a) {
100
+ var _b = _a, {
101
+ className,
102
+ children,
103
+ showOverlay = true
104
+ } = _b, props = __objRest(_b, [
105
+ "className",
106
+ "children",
107
+ "showOverlay"
108
+ ]);
109
+ return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
110
+ showOverlay && /* @__PURE__ */ jsx(DrawerOverlay, {}),
111
+ /* @__PURE__ */ jsxs(
112
+ Drawer$1.Content,
113
+ __spreadProps(__spreadValues({
114
+ "data-slot": "drawer-content",
115
+ className: cn(
116
+ "group/drawer-content bg-card fixed z-50 flex h-auto flex-col shadow-lg",
117
+ "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
118
+ "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
119
+ "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
120
+ "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm",
121
+ "border border-vanilla-300 dark:border-slate-500 rounded-md",
122
+ className
123
+ )
124
+ }, props), {
125
+ children: [
126
+ /* @__PURE__ */ jsx("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
127
+ children
128
+ ]
129
+ })
130
+ )
131
+ ] });
132
+ }
133
+ function DrawerHeader(_a) {
134
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
135
+ return /* @__PURE__ */ jsx(
136
+ "div",
137
+ __spreadValues({
138
+ "data-slot": "drawer-header",
139
+ className: cn("flex flex-col gap-1.5 p-4", className)
140
+ }, props)
141
+ );
142
+ }
143
+ function DrawerFooter(_a) {
144
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
145
+ return /* @__PURE__ */ jsx(
146
+ "div",
147
+ __spreadValues({
148
+ "data-slot": "drawer-footer",
149
+ className: cn("mt-auto flex flex-col gap-2 p-4", className)
150
+ }, props)
151
+ );
152
+ }
153
+ function DrawerTitle(_a) {
154
+ var _b = _a, {
155
+ className
156
+ } = _b, props = __objRest(_b, [
157
+ "className"
158
+ ]);
159
+ return /* @__PURE__ */ jsx(
160
+ Drawer$1.Title,
161
+ __spreadValues({
162
+ "data-slot": "drawer-title",
163
+ className: cn("text-foreground font-semibold", className)
164
+ }, props)
165
+ );
166
+ }
167
+ function DrawerDescription(_a) {
168
+ var _b = _a, {
169
+ className
170
+ } = _b, props = __objRest(_b, [
171
+ "className"
172
+ ]);
173
+ return /* @__PURE__ */ jsx(
174
+ Drawer$1.Description,
175
+ __spreadValues({
176
+ "data-slot": "drawer-description",
177
+ className: cn("text-muted-foreground text-sm", className)
178
+ }, props)
179
+ );
180
+ }
181
+ function DrawerWrapper({
182
+ trigger,
183
+ header,
184
+ content,
185
+ footer,
186
+ direction = "right",
187
+ showCloseButton = true,
188
+ allowOutsideClick = true,
189
+ showOverlay = true,
190
+ className
191
+ }) {
192
+ return /* @__PURE__ */ jsxs(Drawer, { direction, modal: allowOutsideClick, children: [
193
+ /* @__PURE__ */ jsx(DrawerTrigger, { asChild: true, children: trigger }),
194
+ /* @__PURE__ */ jsx(DrawerContent, { className, showOverlay, children: /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-sm", children: [
195
+ header && /* @__PURE__ */ jsxs("div", { className: "flex h-12 items-center justify-between border-b border-vanilla-300 dark:border-slate-500 px-6", children: [
196
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx(DrawerTitle, { className: "font-inter text-sm font-normal", children: header.title }) }),
197
+ showCloseButton && /* @__PURE__ */ jsx(DrawerClose, { asChild: true, children: /* @__PURE__ */ jsxs("button", { className: "rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none", children: [
198
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
199
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
200
+ ] }) })
201
+ ] }),
202
+ /* @__PURE__ */ jsx(DrawerHeader, { children: (header == null ? void 0 : header.description) && /* @__PURE__ */ jsx(DrawerDescription, { children: header.description }) }),
203
+ content,
204
+ footer && /* @__PURE__ */ jsx(DrawerFooter, { children: footer })
205
+ ] }) })
206
+ ] });
207
+ }
208
+
209
+ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DrawerWrapper };
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@signozhq/drawer",
3
+ "version": "0.0.0",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/drawer.d.ts",
9
+ "import": "./dist/drawer.js"
10
+ }
11
+ },
12
+ "main": "./dist/drawer.js",
13
+ "module": "./dist/drawer.js",
14
+ "types": "./dist/drawer.d.ts",
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "devDependencies": {
19
+ "@tailwindcss/postcss": "^4.1.3",
20
+ "@types/node": "^22.5.5",
21
+ "@types/react": "^18.2.61",
22
+ "@types/react-dom": "^18.2.19",
23
+ "@vitejs/plugin-react": "^4.2.1",
24
+ "eslint": "^9.11.0",
25
+ "postcss": "^8.4.47",
26
+ "react-dom": "^18.2.0",
27
+ "tailwindcss": "^4.1.3",
28
+ "tsup": "^8.0.0",
29
+ "typescript": "^5.3.3",
30
+ "@repo/eslint-config": "0.0.0",
31
+ "@signozhq/tailwind-config": "0.0.0",
32
+ "@repo/typescript-config": "0.0.0"
33
+ },
34
+ "dependencies": {
35
+ "@radix-ui/react-dialog": "^1.1.11",
36
+ "@radix-ui/react-icons": "^1.3.0",
37
+ "@radix-ui/react-slot": "^1.1.0",
38
+ "class-variance-authority": "^0.7.0",
39
+ "clsx": "^2.1.1",
40
+ "lucide-react": "^0.445.0",
41
+ "react": "^18.2.0",
42
+ "tailwind-merge": "^2.5.2",
43
+ "tailwindcss-animate": "^1.0.7",
44
+ "vaul": "^1.1.2"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "description": "side drawer component",
50
+ "scripts": {
51
+ "build": "tsup",
52
+ "dev": "tsup --watch",
53
+ "lint": "eslint . --max-warnings 0",
54
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
55
+ }
56
+ }