UNPKG

@jonmatum/react-cookie-devtool

Version:

[![npm version](https://img.shields.io/npm/v/@jonmatum/react-cookie-devtool.svg)](https://www.npmjs.com/package/@jonmatum/react-cookie-devtool) [![License](https://img.shields.io/npm/l/@jonmatum/react-cookie-devtool)](LICENSE) ![React](https://img.shields

1 lines 45.5 kB
{"version":3,"sources":["../src/index.ts","../src/components/ui/button.tsx","../src/lib/utils.ts","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/select.tsx","../src/components/CookieDevTool.tsx","../src/components/CookieDevToolSheet.tsx","../src/components/ui/sheet.tsx"],"sourcesContent":["export { CookieDevTool } from \"./components/CookieDevTool\";\nexport { CookieDevToolSheet } from \"./components/CookieDevToolSheet\";","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","import { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { useEffect, useState } from \"react\";\nimport {\n CheckCircle,\n AlertTriangle,\n Trash2,\n X,\n Cookie,\n} from \"lucide-react\";\n\n// Types\n\ntype Position = \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\ntype Feedback = { message: string; type: \"success\" | \"error\" };\n\nconst posClasses: Record<Position, string> = {\n \"top-left\": \"top-4 left-4\",\n \"top-right\": \"top-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n \"bottom-right\": \"bottom-4 right-4\",\n};\n\ninterface CookieDevToolProps {\n position?: Position;\n}\n\nexport const CookieDevTool = ({ position = \"bottom-right\" }: CookieDevToolProps) => {\n const [open, setOpen] = useState(false);\n const [key, setKey] = useState(\"\");\n const [value, setValue] = useState(\"\");\n const [cookies, setCookies] = useState<Record<string, string>>({});\n const [feedback, setFeedback] = useState<Feedback | null>(null);\n\n useEffect(() => {\n if (open) parseCookies();\n }, [open]);\n\n const isDemo = typeof window !== \"undefined\" && window?.location?.host.includes(\"github.io\");\n const isProd = process.env.NODE_ENV === \"production\";\n if (isProd && !isDemo) return null;\n\n const parseCookies = () => {\n const parsed: Record<string, string> = {};\n document.cookie.split(\";\").forEach((cookie) => {\n const [k, ...v] = cookie.trim().split(\"=\");\n if (k) parsed[k] = v.join(\"=\");\n });\n setCookies(parsed);\n };\n\n const handleSetCookie = () => {\n if (!key) {\n setFeedback({ message: \"Please provide a cookie key.\", type: \"error\" });\n return;\n }\n document.cookie = `${key}=${value}; path=/`;\n setFeedback({ message: `Cookie \"${key}\" set!`, type: \"success\" });\n parseCookies();\n setTimeout(() => setFeedback(null), 3000);\n };\n\n const handleClearCookie = () => {\n if (!key) {\n setFeedback({ message: \"Please provide a cookie key to clear.\", type: \"error\" });\n return;\n }\n document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n setFeedback({ message: `Cookie \"${key}\" cleared.`, type: \"success\" });\n setKey(\"\");\n setValue(\"\");\n parseCookies();\n setTimeout(() => setFeedback(null), 3000);\n };\n\n const handleSelectCookie = (selectedKey: string) => {\n if (selectedKey === \"__new__\") {\n setKey(\"\");\n setValue(\"\");\n } else {\n setKey(selectedKey);\n setValue(cookies[selectedKey] || \"\");\n }\n };\n\n const handleClearAllCookies = () => {\n if (Object.keys(cookies).length === 0) {\n setFeedback({ message: \"No cookies to clear.\", type: \"error\" });\n return;\n }\n Object.keys(cookies).forEach((cookieKey) => {\n document.cookie = `${cookieKey}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n });\n setCookies({});\n setKey(\"\");\n setValue(\"\");\n setFeedback({ message: \"All cookies cleared.\", type: \"success\" });\n setTimeout(() => setFeedback(null), 3000);\n };\n\n return (\n <div className={`fixed z-50 ${posClasses[position]} transition-all`}>\n {!open && (\n <Button\n variant=\"outline\"\n onClick={() => setOpen(true)}\n className=\"flex items-center gap-2\"\n >\n <Cookie size={16} /> Cookies\n </Button>\n )}\n\n {open && (\n <div className=\"relative mt-2 w-80 p-5 rounded-xl border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-900 shadow-2xl transition-all backdrop-blur-sm text-zinc-900 dark:text-zinc-100\">\n <h3 className=\"text-lg font-semibold\">Manage Cookies</h3>\n\n {/* Panel close button */}\n <button\n onClick={() => setOpen(false)}\n className=\"absolute top-3 right-3 text-zinc-600 hover:text-zinc-900 dark:text-zinc-300 dark:hover:text-white transition w-8 h-8 flex items-center justify-center rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500\"\n aria-label=\"Close panel\"\n >\n <X size={16} />\n </button>\n\n {/* Feedback */}\n {feedback && (\n <div\n className={`mt-2 relative flex items-start gap-2 text-sm px-4 py-3 rounded-md border transition-colors ${feedback.type === \"success\"\n ? \"bg-green-100 text-green-800 border-green-300 dark:bg-green-900 dark:text-green-200 dark:border-green-700\"\n : \"bg-red-100 text-red-800 border-red-300 dark:bg-red-900 dark:text-red-200 dark:border-red-700\"\n }`}\n >\n <div className=\"flex items-center gap-2\">\n {feedback.type === \"success\" ? <CheckCircle size={16} /> : <AlertTriangle size={16} />}\n <span>{feedback.message}</span>\n </div>\n <button\n onClick={() => setFeedback(null)}\n className=\"absolute right-2 top-2 text-inherit opacity-60 hover:opacity-100 transition w-6 h-6 flex items-center justify-center rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500\"\n aria-label=\"Dismiss feedback\"\n >\n <X size={16} />\n </button>\n </div>\n )}\n\n {/* Form */}\n <div className=\"space-y-3 mt-4\">\n {Object.keys(cookies).length > 0 && (\n <div className=\"space-y-1\">\n <Label>Select Cookie</Label>\n <Select onValueChange={handleSelectCookie} value={key || \"__new__\"}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select a cookie\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"__new__\">+ New Cookie</SelectItem>\n {Object.entries(cookies).map(([cookieKey]) => (\n <SelectItem key={cookieKey} value={cookieKey}>\n {cookieKey}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n <div className=\"space-y-1\">\n <Label htmlFor=\"cookie-key\">Key</Label>\n <Input\n id=\"cookie-key\"\n value={key}\n onChange={(e) => setKey(e.target.value)}\n placeholder=\"e.g. session_token\"\n />\n </div>\n\n <div className=\"space-y-1\">\n <Label htmlFor=\"cookie-value\">Value</Label>\n <Input\n id=\"cookie-value\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n placeholder=\"e.g. abc123\"\n />\n </div>\n\n <div className=\"flex flex-col gap-2 pt-2\">\n <Button className=\"w-full\" onClick={handleSetCookie}>\n Set Cookie\n </Button>\n <Button\n variant=\"outline\"\n className=\"w-full\"\n onClick={handleClearCookie}\n disabled={!key}\n >\n Clear Cookie\n </Button>\n <Button\n variant=\"destructive\"\n className=\"w-full flex items-center justify-center gap-2\"\n onClick={handleClearAllCookies}\n >\n <Trash2 size={16} />\n Clear All Cookies\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport {\n Sheet,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\";\nimport { CheckCircle, AlertTriangle, Trash2, X, Cookie } from \"lucide-react\";\n\nexport const CookieDevToolSheet = () => {\n const [open, setOpen] = useState(false);\n const [key, setKey] = useState(\"\");\n const [value, setValue] = useState(\"\");\n const [cookies, setCookies] = useState<Record<string, string>>({});\n const [feedback, setFeedback] = useState<null | { message: string; type: \"success\" | \"error\" }>(null);\n\n useEffect(() => {\n if (open) {\n parseCookies();\n }\n }, [open]);\n\n const isDemo = typeof window !== \"undefined\" && window.location.host.includes(\"github.io\");\n const isProd = process.env.NODE_ENV === \"production\";\n if (isProd && !isDemo) return null;\n\n const parseCookies = () => {\n const parsed: Record<string, string> = {};\n document.cookie.split(\";\").forEach((cookie) => {\n const [k, ...v] = cookie.trim().split(\"=\");\n if (k && k.trim() !== \"\") {\n parsed[k] = v.join(\"=\");\n }\n });\n setCookies(parsed);\n };\n\n const handleSetCookie = () => {\n if (!key) {\n setFeedback({ message: \"Please provide a cookie key.\", type: \"error\" });\n return;\n }\n\n document.cookie = `${key}=${value}; path=/`;\n setFeedback({ message: `Cookie \"${key}\" set!`, type: \"success\" });\n parseCookies();\n setTimeout(() => setFeedback(null), 3000);\n };\n\n const handleClearCookie = () => {\n if (!key) {\n setFeedback({ message: \"Please provide a cookie key to clear.\", type: \"error\" });\n return;\n }\n\n document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n setFeedback({ message: `Cookie \"${key}\" cleared.`, type: \"success\" });\n setKey(\"\");\n setValue(\"\");\n parseCookies();\n setTimeout(() => setFeedback(null), 3000);\n };\n\n const handleSelectCookie = (selectedKey: string) => {\n if (selectedKey === \"__new__\") {\n setKey(\"\");\n setValue(\"\");\n } else {\n setKey(selectedKey);\n setValue(cookies[selectedKey] || \"\");\n }\n };\n\n const handleClearAllCookies = () => {\n if (Object.keys(cookies).length === 0) {\n setFeedback({ message: \"No cookies to clear.\", type: \"error\" });\n return;\n }\n\n Object.keys(cookies).forEach((cookieKey) => {\n document.cookie = `${cookieKey}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n });\n\n setCookies({});\n setKey(\"\");\n setValue(\"\");\n setFeedback({ message: \"All cookies cleared.\", type: \"success\" });\n\n setTimeout(() => setFeedback(null), 3000);\n };\n\n return (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"flex items-center gap-2\">\n <Cookie size={16} /> Cookies\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-[400px] sm:w-[400px]\">\n <SheetHeader className=\"mb-2\">\n <SheetTitle>Manage Cookies</SheetTitle>\n </SheetHeader>\n\n {feedback && (\n <div\n className={`relative flex items-start gap-2 text-sm px-4 py-3 rounded-md border mb-4 transition-colors ${feedback.type === \"success\"\n ? \"bg-green-100 text-green-800 border-green-300 dark:bg-green-900 dark:text-green-200 dark:border-green-700\"\n : \"bg-red-100 text-red-800 border-red-300 dark:bg-red-900 dark:text-red-200 dark:border-red-700\"\n }`}\n >\n <div className=\"flex items-center gap-2\">\n {feedback.type === \"success\" ? <CheckCircle size={16} /> : <AlertTriangle size={16} />}\n <span>{feedback.message}</span>\n </div>\n <button\n onClick={() => setFeedback(null)}\n className=\"absolute right-2 top-2 text-inherit opacity-60 hover:opacity-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-zinc-400 dark:focus-visible:ring-zinc-600 rounded-sm transition\"\n aria-label=\"Dismiss feedback\"\n >\n <X size={16} />\n </button>\n </div>\n )}\n\n <div className=\"py-4 space-y-3\">\n {Object.keys(cookies).length > 0 && (\n <div className=\"space-y-1\">\n <Label>Select Cookie</Label>\n <Select onValueChange={handleSelectCookie} value={key || \"__new__\"}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select a cookie\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"__new__\">+ New Cookie</SelectItem>\n {Object.entries(cookies)\n .filter(([cookieKey]) => cookieKey.trim() !== \"\")\n .map(([cookieKey]) => (\n <SelectItem key={cookieKey} value={cookieKey}>\n {cookieKey}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n <div className=\"space-y-1\">\n <Label htmlFor=\"cookie-key\">Key</Label>\n <Input\n id=\"cookie-key\"\n value={key}\n onChange={(e) => setKey(e.target.value)}\n placeholder=\"e.g. session_token\"\n />\n </div>\n\n <div className=\"space-y-1\">\n <Label htmlFor=\"cookie-value\">Value</Label>\n <Input\n id=\"cookie-value\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n placeholder=\"e.g. abc123\"\n />\n </div>\n\n <div className=\"flex flex-col gap-2 pt-2\">\n <Button className=\"w-full\" onClick={handleSetCookie}>\n Set Cookie\n </Button>\n <Button\n variant=\"outline\"\n className=\"w-full\"\n onClick={handleClearCookie}\n disabled={!key}\n >\n Clear Cookie\n </Button>\n <Button\n variant=\"destructive\"\n className=\"w-full flex items-center justify-center gap-2\"\n onClick={handleClearAllCookies}\n >\n <Trash2 size={16} />\n Clear All Cookies\n </Button>\n </div>\n </div>\n </SheetContent>\n </Sheet>\n );\n};\n","import * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n <SheetPrimitive.Close className=\"absolute right-4 top-4 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 data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_react","React","import_class_variance_authority","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime"]}