@authdog/react-elements 0.0.12 → 0.0.13
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.
- package/.turbo/turbo-build.log +13 -13
- package/CHANGELOG.md +6 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +0 -6
- package/package.json +1 -1
- package/src/components/core/navbar.tsx +44 -39
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @authdog/react-elements@0.0.
|
|
2
|
+
> @authdog/react-elements@0.0.13 build /home/runner/work/web-sdk/web-sdk/packages/react-elements
|
|
3
3
|
> pnpm tsup && pnpm build:styles
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts, src/lib/utils.ts, src/components/ui/avatar.tsx, src/components/ui/button.tsx, src/components/ui/dropdown-menu.tsx, src/components/ui/sheet.tsx
|
|
@@ -10,37 +10,37 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[32mCJS[39m [1mdist/
|
|
14
|
-
[32mCJS[39m [1mdist/index.js [22m[32m8.84 KB[39m
|
|
13
|
+
[32mCJS[39m [1mdist/index.js [22m[32m9.17 KB[39m
|
|
15
14
|
[32mCJS[39m [1mdist/lib/utils.js [22m[32m620.00 B[39m
|
|
15
|
+
[32mCJS[39m [1mdist/components/ui/avatar.js [22m[32m1.34 KB[39m
|
|
16
16
|
[32mCJS[39m [1mdist/components/ui/button.js [22m[32m1.94 KB[39m
|
|
17
17
|
[32mCJS[39m [1mdist/components/ui/dropdown-menu.js [22m[32m6.10 KB[39m
|
|
18
18
|
[32mCJS[39m [1mdist/components/ui/sheet.js [22m[32m3.36 KB[39m
|
|
19
|
-
[32mCJS[39m [1mdist/
|
|
20
|
-
[32mCJS[39m [1mdist/index.js.map [22m[32m28.07 KB[39m
|
|
19
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m28.17 KB[39m
|
|
21
20
|
[32mCJS[39m [1mdist/lib/utils.js.map [22m[32m520.00 B[39m
|
|
21
|
+
[32mCJS[39m [1mdist/components/ui/avatar.js.map [22m[32m2.31 KB[39m
|
|
22
22
|
[32mCJS[39m [1mdist/components/ui/button.js.map [22m[32m3.17 KB[39m
|
|
23
|
-
[32mCJS[39m [1mdist/components/ui/sheet.js.map [22m[32m6.75 KB[39m
|
|
24
23
|
[32mCJS[39m [1mdist/components/ui/dropdown-menu.js.map [22m[32m12.51 KB[39m
|
|
25
|
-
[32mCJS[39m
|
|
26
|
-
[
|
|
24
|
+
[32mCJS[39m [1mdist/components/ui/sheet.js.map [22m[32m6.75 KB[39m
|
|
25
|
+
[32mCJS[39m ⚡️ Build success in 137ms
|
|
26
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m8.24 KB[39m
|
|
27
27
|
[32mESM[39m [1mdist/lib/utils.mjs [22m[32m166.00 B[39m
|
|
28
28
|
[32mESM[39m [1mdist/components/ui/avatar.mjs [22m[32m749.00 B[39m
|
|
29
29
|
[32mESM[39m [1mdist/components/ui/button.mjs [22m[32m1.36 KB[39m
|
|
30
30
|
[32mESM[39m [1mdist/components/ui/dropdown-menu.mjs [22m[32m5.37 KB[39m
|
|
31
31
|
[32mESM[39m [1mdist/components/ui/sheet.mjs [22m[32m2.68 KB[39m
|
|
32
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[32m28.
|
|
32
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m28.25 KB[39m
|
|
33
33
|
[32mESM[39m [1mdist/lib/utils.mjs.map [22m[32m415.00 B[39m
|
|
34
34
|
[32mESM[39m [1mdist/components/ui/avatar.mjs.map [22m[32m2.13 KB[39m
|
|
35
35
|
[32mESM[39m [1mdist/components/ui/button.mjs.map [22m[32m3.01 KB[39m
|
|
36
|
-
[32mESM[39m [1mdist/components/ui/sheet.mjs.map [22m[32m6.49 KB[39m
|
|
37
36
|
[32mESM[39m [1mdist/components/ui/dropdown-menu.mjs.map [22m[32m12.05 KB[39m
|
|
38
|
-
[32mESM[39m
|
|
37
|
+
[32mESM[39m [1mdist/components/ui/sheet.mjs.map [22m[32m6.49 KB[39m
|
|
38
|
+
[32mESM[39m ⚡️ Build success in 137ms
|
|
39
39
|
[34mDTS[39m Build start
|
|
40
|
-
[32mDTS[39m ⚡️ Build success in
|
|
40
|
+
[32mDTS[39m ⚡️ Build success in 8672ms
|
|
41
41
|
[32mDTS[39m [1mdist/index.d.mts [22m[32m1.29 KB[39m
|
|
42
42
|
[32mDTS[39m [1mdist/index.d.ts [22m[32m1.29 KB[39m
|
|
43
43
|
|
|
44
|
-
> @authdog/react-elements@0.0.
|
|
44
|
+
> @authdog/react-elements@0.0.13 build:styles /home/runner/work/web-sdk/web-sdk/packages/react-elements
|
|
45
45
|
> postcss src/global.css -o dist/styles.css
|
|
46
46
|
|
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var Y=Object.create;var
|
|
2
|
+
"use strict";var Y=Object.create;var h=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty;var oe=(e,o)=>{for(var n in o)h(e,n,{get:o[n],enumerable:!0})},R=(e,o,n,p)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of $(o))!te.call(e,s)&&s!==n&&h(e,s,{get:()=>o[s],enumerable:!(p=Z(o,s))||p.enumerable});return e};var b=(e,o,n)=>(n=e!=null?Y(ee(e)):{},R(o||!e||!e.__esModule?h(n,"default",{value:e,enumerable:!0}):n,e)),ne=e=>R(h({},"__esModule",{value:!0}),e);var se={};oe(se,{Button:()=>f,Navbar:()=>U,buttonVariants:()=>G});module.exports=ne(se);var k=b(require("react")),T=require("@radix-ui/react-slot"),z=require("class-variance-authority");var N=require("clsx"),I=require("tailwind-merge");function a(...e){return(0,I.twMerge)((0,N.clsx)(e))}var V=require("react/jsx-runtime"),G=(0,z.cva)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),f=k.forwardRef(({className:e,variant:o,size:n,asChild:p=!1,...s},x)=>(0,V.jsx)(p?T.Slot:"button",{className:a(G({variant:o,size:n,className:e})),ref:x,...s}));f.displayName="Button";var v=require("react"),u=require("lucide-react");var c=b(require("@radix-ui/react-avatar"));var P=require("react/jsx-runtime");function A({className:e,...o}){return(0,P.jsx)(c.Root,{"data-slot":"avatar",className:a("relative flex size-8 shrink-0 overflow-hidden rounded-full",e),...o})}function L({className:e,...o}){return(0,P.jsx)(c.Image,{"data-slot":"avatar-image",className:a("aspect-square size-full",e),...o})}function B({className:e,...o}){return(0,P.jsx)(c.Fallback,{"data-slot":"avatar-fallback",className:a("bg-muted flex size-full items-center justify-center rounded-full",e),...o})}var r=b(require("@radix-ui/react-dropdown-menu")),M=require("lucide-react");var m=require("react/jsx-runtime");function _({...e}){return(0,m.jsx)(r.Root,{"data-slot":"dropdown-menu",...e})}function O({...e}){return(0,m.jsx)(r.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function E({className:e,sideOffset:o=4,...n}){return(0,m.jsx)(r.Portal,{children:(0,m.jsx)(r.Content,{"data-slot":"dropdown-menu-content",sideOffset:o,className:a("bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",e),...n})})}function F({...e}){return(0,m.jsx)(r.Group,{"data-slot":"dropdown-menu-group",...e})}function w({className:e,inset:o,variant:n="default",...p}){return(0,m.jsx)(r.Item,{"data-slot":"dropdown-menu-item","data-inset":o,"data-variant":n,className:a("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...p})}function H({className:e,inset:o,...n}){return(0,m.jsx)(r.Label,{"data-slot":"dropdown-menu-label","data-inset":o,className:a("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",e),...n})}function C({className:e,...o}){return(0,m.jsx)(r.Separator,{"data-slot":"dropdown-menu-separator",className:a("bg-border -mx-1 my-1 h-px",e),...o})}var i=b(require("@radix-ui/react-dialog")),j=require("lucide-react");var d=require("react/jsx-runtime"),re=j.X;function X({...e}){return(0,d.jsx)(i.Root,{"data-slot":"sheet",...e})}function q({...e}){return(0,d.jsx)(i.Trigger,{"data-slot":"sheet-trigger",...e})}function ae({...e}){return(0,d.jsx)(i.Portal,{"data-slot":"sheet-portal",...e})}function ie({className:e,...o}){return(0,d.jsx)(i.Overlay,{"data-slot":"sheet-overlay",className:a("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",e),...o})}function J({className:e,children:o,side:n="right",...p}){return(0,d.jsxs)(ae,{children:[(0,d.jsx)(ie,{}),(0,d.jsxs)(i.Content,{"data-slot":"sheet-content",className:a("bg-background 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",n==="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",n==="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",n==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",n==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",e),...p,children:[o,(0,d.jsxs)(i.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,d.jsx)(re,{className:"size-4"}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}var t=require("react/jsx-runtime");function U({items:e=[{title:"Dashboard",href:"/dashboard"},{title:"Projects",href:"/projects"},{title:"Team",href:"/team"},{title:"Reports",href:"/reports"}],children:o,className:n,logoText:p="Company",user:s={name:"John Doe",email:"john@example.com",image:"/placeholder.svg?height=32&width=32"},onLogout:x=()=>console.log("Logout clicked")}){let[D,S]=(0,v.useState)(!1),[K,Q]=(0,v.useState)(!1);(0,v.useEffect)(()=>{Q(!0)},[]);let W={className:"mr-2 h-4 w-4","aria-hidden":"true"},g=l=>K?(0,t.jsx)(l,{...W}):null;return(0,t.jsx)("header",{className:a("border-b bg-background",n),children:(0,t.jsxs)("div",{className:"container flex h-16 items-center justify-between px-4 md:px-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("span",{className:"text-xl font-bold",children:p}),(0,t.jsx)("nav",{className:"hidden md:flex gap-6",children:e?.map((l,y)=>(0,t.jsx)("a",{href:l.href,className:a("text-sm font-medium transition-colors hover:text-primary",l.disabled&&"cursor-not-allowed opacity-80"),children:l.title},y))})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[o,(0,t.jsxs)(_,{children:[(0,t.jsx)(O,{asChild:!0,children:(0,t.jsx)(f,{variant:"ghost",className:"relative h-8 w-8 rounded-full",children:(0,t.jsxs)(A,{className:"h-8 w-8",children:[(0,t.jsx)(L,{src:s.image||"/placeholder.svg",alt:s.name}),(0,t.jsx)(B,{children:s.name?.charAt(0)})]})})}),(0,t.jsxs)(E,{className:"w-56",align:"end",forceMount:!0,children:[(0,t.jsx)(H,{className:"font-normal",children:(0,t.jsxs)("div",{className:"flex flex-col space-y-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium leading-none",children:s.name}),(0,t.jsx)("p",{className:"text-xs leading-none text-muted-foreground",children:s.email})]})}),(0,t.jsx)(C,{}),(0,t.jsxs)(F,{children:[(0,t.jsxs)(w,{children:[g(u.User),(0,t.jsx)("span",{children:"Profile"})]}),(0,t.jsxs)(w,{children:[g(u.Settings),(0,t.jsx)("span",{children:"Settings"})]})]}),(0,t.jsx)(C,{}),(0,t.jsxs)(w,{onClick:x,children:[g(u.LogOut),(0,t.jsx)("span",{children:"Log out"})]})]})]}),(0,t.jsxs)(X,{open:D,onOpenChange:S,children:[(0,t.jsx)(q,{asChild:!0,children:(0,t.jsx)(f,{variant:"ghost",size:"icon",className:"md:hidden","aria-label":"Open Menu",children:g(u.Menu)})}),(0,t.jsx)(J,{side:"left",className:"pr-0",children:(0,t.jsx)("nav",{className:"grid gap-2 py-6",children:e?.map((l,y)=>(0,t.jsx)("a",{href:l.href,className:a("flex w-full items-center rounded-md px-3 py-2 text-sm font-medium hover:bg-accent",l.disabled&&"cursor-not-allowed opacity-80"),onClick:()=>S(!1),children:l.title},y))})})]})]})]})})}
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/ui/button.tsx","../src/lib/utils.ts","../src/components/core/navbar.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/sheet.tsx"],"sourcesContent":["export * from \"./components/ui/button\";\nexport {Navbar} from \"./components/core/navbar\"","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 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground 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-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\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 { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport * as LucideIcons from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../components/ui/avatar\"\nimport { Button } from \"../../components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../components/ui/dropdown-menu\"\nimport { Sheet, SheetContent, SheetTrigger } from \"../../components/ui/sheet\"\n\ninterface NavItem {\n title: string\n href: string\n disabled?: boolean\n}\n\ninterface NavbarProps {\n items?: NavItem[]\n children?: React.ReactNode\n className?: string\n logoText?: string\n user?: {\n name?: string\n email?: string\n image?: string\n }\n onLogout?: () => void\n}\n\nexport function Navbar({\n items = [\n { title: \"Dashboard\", href: \"/dashboard\" },\n { title: \"Projects\", href: \"/projects\" },\n { title: \"Team\", href: \"/team\" },\n { title: \"Reports\", href: \"/reports\" },\n ],\n children,\n className,\n logoText = \"Company\",\n user = {\n name: \"John Doe\",\n email: \"john@example.com\",\n image: \"/placeholder.svg?height=32&width=32\",\n },\n onLogout = () => console.log(\"Logout clicked\"),\n}: NavbarProps) {\n const [open, setOpen] = useState(false)\n const UserIcon = LucideIcons.User as any\n const SettingsIcon = LucideIcons.Settings as any\n const LogOutIcon = LucideIcons.LogOut as any\n const MenuIcon = LucideIcons.Menu as any\n\n return (\n <header className={cn(\"border-b bg-background\", className)}>\n <div className=\"container flex h-16 items-center justify-between px-4 md:px-6\">\n <div className=\"flex items-center gap-4\">\n {/* <Link href=\"/\" className=\"flex items-center gap-2\">\n <span className=\"text-xl font-bold\">{logoText}</span>\n </Link> */}\n <nav className=\"hidden md:flex gap-6\">\n {items?.map((item, index) => (\n // <Link\n // key={index}\n // href={item.href}\n // className={cn(\n // \"text-sm font-medium transition-colors hover:text-primary\",\n // item.disabled && \"cursor-not-allowed opacity-80\",\n // )}\n // >\n // {item.title}\n // </Link>\n <a href={item?.href}>\n {item.title}\n </a>\n ))}\n </nav>\n </div>\n <div className=\"flex items-center gap-4\">\n {children}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"relative h-8 w-8 rounded-full\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={user.image || \"/placeholder.svg\"} alt={user.name} />\n <AvatarFallback>{user.name?.charAt(0)}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"end\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"flex flex-col space-y-1\">\n <p className=\"text-sm font-medium leading-none\">{user.name}</p>\n <p className=\"text-xs leading-none text-muted-foreground\">{user.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n <UserIcon className=\"mr-2 h-4 w-4\" />\n <span>Profile</span>\n </DropdownMenuItem>\n <DropdownMenuItem>\n <SettingsIcon className=\"mr-2 h-4 w-4\" />\n <span>Settings</span>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onLogout}>\n <LogOutIcon className=\"mr-2 h-4 w-4\" />\n <span>Log out</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"md:hidden\" aria-label=\"Open Menu\">\n <MenuIcon className=\"h-5 w-5\" />\n </Button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"pr-0\">\n <nav className=\"grid gap-2 py-6\">\n {items?.map((item, index) => (\n // <Link\n // key={index}\n // href={item.href}\n // className={cn(\n // \"flex w-full items-center rounded-md px-3 py-2 text-sm font-medium hover:bg-accent\",\n // item.disabled && \"cursor-not-allowed opacity-80\",\n // )}\n // onClick={() => setOpen(false)}\n // >\n // {item.title}\n // </Link>\n <a href=\"https://www.goo.bar\" />\n ))}\n </nav>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </header>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst CheckIcon = Check as ComponentType<React.SVGProps<SVGSVGElement>>\nconst CircleIcon = Circle as ComponentType<React.SVGProps<SVGSVGElement>>\nconst ChevronRightIcon = ChevronRight as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst XIcon = X as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background 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\",\n side === \"right\" &&\n \"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\",\n side === \"left\" &&\n \"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\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["index_exports","__export","Button","Navbar","buttonVariants","__toCommonJS","React","import_react_slot","import_class_variance_authority","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","props","ref","cn","import_react","LucideIcons","AvatarPrimitive","import_jsx_runtime","Avatar","className","props","cn","AvatarImage","AvatarFallback","DropdownMenuPrimitive","import_lucide_react","import_jsx_runtime","DropdownMenu","props","DropdownMenuTrigger","props","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuLabel","className","inset","props","cn","DropdownMenuSeparator","SheetPrimitive","import_lucide_react","import_jsx_runtime","XIcon","Sheet","props","SheetTrigger","SheetPortal","props","SheetOverlay","className","cn","SheetContent","children","side","XIcon","import_jsx_runtime","Navbar","items","children","className","logoText","user","onLogout","open","setOpen","UserIcon","SettingsIcon","LogOutIcon","MenuIcon","cn","item","index","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuGroup","DropdownMenuItem","Sheet","SheetTrigger","SheetContent"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/ui/button.tsx","../src/lib/utils.ts","../src/components/core/navbar.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/sheet.tsx"],"sourcesContent":["export * from \"./components/ui/button\";\nexport {Navbar} from \"./components/core/navbar\"","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 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground 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-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\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 { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\"\n\nimport type React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { User, Settings, LogOut, Menu } from \"lucide-react\"\nimport type { LucideProps } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../components/ui/avatar\"\nimport { Button } from \"../../components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../components/ui/dropdown-menu\"\nimport { Sheet, SheetContent, SheetTrigger } from \"../../components/ui/sheet\"\n\ninterface NavItem {\n title: string\n href: string\n disabled?: boolean\n}\n\ninterface NavbarProps {\n items?: NavItem[]\n children?: React.ReactNode\n className?: string\n logoText?: string\n user?: {\n name?: string\n email?: string\n image?: string\n }\n onLogout?: () => void\n}\n\nexport function Navbar({\n items = [\n { title: \"Dashboard\", href: \"/dashboard\" },\n { title: \"Projects\", href: \"/projects\" },\n { title: \"Team\", href: \"/team\" },\n { title: \"Reports\", href: \"/reports\" },\n ],\n children,\n className,\n logoText = \"Company\",\n user = {\n name: \"John Doe\",\n email: \"john@example.com\",\n image: \"/placeholder.svg?height=32&width=32\",\n },\n onLogout = () => console.log(\"Logout clicked\"),\n}: NavbarProps) {\n const [open, setOpen] = useState(false)\n const [isMounted, setIsMounted] = useState(false)\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n const iconProps: LucideProps = {\n className: \"mr-2 h-4 w-4\",\n \"aria-hidden\": \"true\"\n }\n\n const renderIcon = (Icon: any) => {\n if (!isMounted) return null\n return <Icon {...iconProps} />\n }\n\n return (\n <header className={cn(\"border-b bg-background\", className)}>\n <div className=\"container flex h-16 items-center justify-between px-4 md:px-6\">\n <div className=\"flex items-center gap-4\">\n <span className=\"text-xl font-bold\">{logoText}</span>\n <nav className=\"hidden md:flex gap-6\">\n {items?.map((item, index) => (\n <a\n key={index}\n href={item.href}\n className={cn(\n \"text-sm font-medium transition-colors hover:text-primary\",\n item.disabled && \"cursor-not-allowed opacity-80\"\n )}\n >\n {item.title}\n </a>\n ))}\n </nav>\n </div>\n <div className=\"flex items-center gap-4\">\n {children}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"relative h-8 w-8 rounded-full\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={user.image || \"/placeholder.svg\"} alt={user.name} />\n <AvatarFallback>{user.name?.charAt(0)}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"end\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"flex flex-col space-y-1\">\n <p className=\"text-sm font-medium leading-none\">{user.name}</p>\n <p className=\"text-xs leading-none text-muted-foreground\">{user.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n {renderIcon(User)}\n <span>Profile</span>\n </DropdownMenuItem>\n <DropdownMenuItem>\n {renderIcon(Settings)}\n <span>Settings</span>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onLogout}>\n {renderIcon(LogOut)}\n <span>Log out</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"md:hidden\" aria-label=\"Open Menu\">\n {renderIcon(Menu)}\n </Button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"pr-0\">\n <nav className=\"grid gap-2 py-6\">\n {items?.map((item, index) => (\n <a\n key={index}\n href={item.href}\n className={cn(\n \"flex w-full items-center rounded-md px-3 py-2 text-sm font-medium hover:bg-accent\",\n item.disabled && \"cursor-not-allowed opacity-80\"\n )}\n onClick={() => setOpen(false)}\n >\n {item.title}\n </a>\n ))}\n </nav>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </header>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst CheckIcon = Check as ComponentType<React.SVGProps<SVGSVGElement>>\nconst CircleIcon = Circle as ComponentType<React.SVGProps<SVGSVGElement>>\nconst ChevronRightIcon = ChevronRight as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst XIcon = X as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background 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\",\n side === \"right\" &&\n \"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\",\n side === \"left\" &&\n \"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\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["index_exports","__export","Button","Navbar","buttonVariants","__toCommonJS","React","import_react_slot","import_class_variance_authority","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","props","ref","cn","import_react","import_lucide_react","AvatarPrimitive","import_jsx_runtime","Avatar","className","props","cn","AvatarImage","AvatarFallback","DropdownMenuPrimitive","import_lucide_react","import_jsx_runtime","DropdownMenu","props","DropdownMenuTrigger","props","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuLabel","className","inset","props","cn","DropdownMenuSeparator","SheetPrimitive","import_lucide_react","import_jsx_runtime","XIcon","Sheet","props","SheetTrigger","SheetPortal","props","SheetOverlay","className","cn","SheetContent","children","side","XIcon","import_jsx_runtime","Navbar","items","children","className","logoText","user","onLogout","open","setOpen","isMounted","setIsMounted","iconProps","renderIcon","Icon","cn","item","index","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuGroup","DropdownMenuItem","Sheet","SheetTrigger","SheetContent"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import*as
|
|
2
|
+
import*as C from"react";import{Slot as H}from"@radix-ui/react-slot";import{cva as j}from"class-variance-authority";import{clsx as E}from"clsx";import{twMerge as F}from"tailwind-merge";function r(...e){return F(E(e))}import{jsx as q}from"react/jsx-runtime";var X=j("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),v=C.forwardRef(({className:e,variant:n,size:a,asChild:m=!1,...l},h)=>q(m?H:"button",{className:r(X({variant:n,size:a,className:e})),ref:h,...l}));v.displayName="Button";import{useState as L,useEffect as W}from"react";import{User as Y,Settings as Z,LogOut as $,Menu as ee}from"lucide-react";import*as c from"@radix-ui/react-avatar";import{jsx as P}from"react/jsx-runtime";function D({className:e,...n}){return P(c.Root,{"data-slot":"avatar",className:r("relative flex size-8 shrink-0 overflow-hidden rounded-full",e),...n})}function S({className:e,...n}){return P(c.Image,{"data-slot":"avatar-image",className:r("aspect-square size-full",e),...n})}function R({className:e,...n}){return P(c.Fallback,{"data-slot":"avatar-fallback",className:r("bg-muted flex size-full items-center justify-center rounded-full",e),...n})}import*as t from"@radix-ui/react-dropdown-menu";import{Check as fe,ChevronRight as ve,Circle as ge}from"lucide-react";import{jsx as p,jsxs as Pe}from"react/jsx-runtime";function N({...e}){return p(t.Root,{"data-slot":"dropdown-menu",...e})}function I({...e}){return p(t.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function k({className:e,sideOffset:n=4,...a}){return p(t.Portal,{children:p(t.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,className:r("bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",e),...a})})}function T({...e}){return p(t.Group,{"data-slot":"dropdown-menu-group",...e})}function g({className:e,inset:n,variant:a="default",...m}){return p(t.Item,{"data-slot":"dropdown-menu-item","data-inset":n,"data-variant":a,className:r("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...m})}function z({className:e,inset:n,...a}){return p(t.Label,{"data-slot":"dropdown-menu-label","data-inset":n,className:r("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",e),...a})}function w({className:e,...n}){return p(t.Separator,{"data-slot":"dropdown-menu-separator",className:r("bg-border -mx-1 my-1 h-px",e),...n})}import*as i from"@radix-ui/react-dialog";import{X as J}from"lucide-react";import{jsx as u,jsxs as x}from"react/jsx-runtime";var U=J;function G({...e}){return u(i.Root,{"data-slot":"sheet",...e})}function V({...e}){return u(i.Trigger,{"data-slot":"sheet-trigger",...e})}function K({...e}){return u(i.Portal,{"data-slot":"sheet-portal",...e})}function Q({className:e,...n}){return u(i.Overlay,{"data-slot":"sheet-overlay",className:r("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",e),...n})}function A({className:e,children:n,side:a="right",...m}){return x(K,{children:[u(Q,{}),x(i.Content,{"data-slot":"sheet-content",className:r("bg-background 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",a==="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",a==="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",a==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",a==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",e),...m,children:[n,x(i.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[u(U,{className:"size-4"}),u("span",{className:"sr-only",children:"Close"})]})]})]})}import{jsx as o,jsxs as s}from"react/jsx-runtime";function te({items:e=[{title:"Dashboard",href:"/dashboard"},{title:"Projects",href:"/projects"},{title:"Team",href:"/team"},{title:"Reports",href:"/reports"}],children:n,className:a,logoText:m="Company",user:l={name:"John Doe",email:"john@example.com",image:"/placeholder.svg?height=32&width=32"},onLogout:h=()=>console.log("Logout clicked")}){let[y,M]=L(!1),[B,_]=L(!1);W(()=>{_(!0)},[]);let O={className:"mr-2 h-4 w-4","aria-hidden":"true"},f=d=>B?o(d,{...O}):null;return o("header",{className:r("border-b bg-background",a),children:s("div",{className:"container flex h-16 items-center justify-between px-4 md:px-6",children:[s("div",{className:"flex items-center gap-4",children:[o("span",{className:"text-xl font-bold",children:m}),o("nav",{className:"hidden md:flex gap-6",children:e?.map((d,b)=>o("a",{href:d.href,className:r("text-sm font-medium transition-colors hover:text-primary",d.disabled&&"cursor-not-allowed opacity-80"),children:d.title},b))})]}),s("div",{className:"flex items-center gap-4",children:[n,s(N,{children:[o(I,{asChild:!0,children:o(v,{variant:"ghost",className:"relative h-8 w-8 rounded-full",children:s(D,{className:"h-8 w-8",children:[o(S,{src:l.image||"/placeholder.svg",alt:l.name}),o(R,{children:l.name?.charAt(0)})]})})}),s(k,{className:"w-56",align:"end",forceMount:!0,children:[o(z,{className:"font-normal",children:s("div",{className:"flex flex-col space-y-1",children:[o("p",{className:"text-sm font-medium leading-none",children:l.name}),o("p",{className:"text-xs leading-none text-muted-foreground",children:l.email})]})}),o(w,{}),s(T,{children:[s(g,{children:[f(Y),o("span",{children:"Profile"})]}),s(g,{children:[f(Z),o("span",{children:"Settings"})]})]}),o(w,{}),s(g,{onClick:h,children:[f($),o("span",{children:"Log out"})]})]})]}),s(G,{open:y,onOpenChange:M,children:[o(V,{asChild:!0,children:o(v,{variant:"ghost",size:"icon",className:"md:hidden","aria-label":"Open Menu",children:f(ee)})}),o(A,{side:"left",className:"pr-0",children:o("nav",{className:"grid gap-2 py-6",children:e?.map((d,b)=>o("a",{href:d.href,className:r("flex w-full items-center rounded-md px-3 py-2 text-sm font-medium hover:bg-accent",d.disabled&&"cursor-not-allowed opacity-80"),onClick:()=>M(!1),children:d.title},b))})})]})]})]})})}export{v as Button,te as Navbar,X as buttonVariants};
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/button.tsx","../src/lib/utils.ts","../src/components/core/navbar.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/sheet.tsx"],"sourcesContent":["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 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground 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-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\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 { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport * as LucideIcons from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../components/ui/avatar\"\nimport { Button } from \"../../components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../components/ui/dropdown-menu\"\nimport { Sheet, SheetContent, SheetTrigger } from \"../../components/ui/sheet\"\n\ninterface NavItem {\n title: string\n href: string\n disabled?: boolean\n}\n\ninterface NavbarProps {\n items?: NavItem[]\n children?: React.ReactNode\n className?: string\n logoText?: string\n user?: {\n name?: string\n email?: string\n image?: string\n }\n onLogout?: () => void\n}\n\nexport function Navbar({\n items = [\n { title: \"Dashboard\", href: \"/dashboard\" },\n { title: \"Projects\", href: \"/projects\" },\n { title: \"Team\", href: \"/team\" },\n { title: \"Reports\", href: \"/reports\" },\n ],\n children,\n className,\n logoText = \"Company\",\n user = {\n name: \"John Doe\",\n email: \"john@example.com\",\n image: \"/placeholder.svg?height=32&width=32\",\n },\n onLogout = () => console.log(\"Logout clicked\"),\n}: NavbarProps) {\n const [open, setOpen] = useState(false)\n const UserIcon = LucideIcons.User as any\n const SettingsIcon = LucideIcons.Settings as any\n const LogOutIcon = LucideIcons.LogOut as any\n const MenuIcon = LucideIcons.Menu as any\n\n return (\n <header className={cn(\"border-b bg-background\", className)}>\n <div className=\"container flex h-16 items-center justify-between px-4 md:px-6\">\n <div className=\"flex items-center gap-4\">\n {/* <Link href=\"/\" className=\"flex items-center gap-2\">\n <span className=\"text-xl font-bold\">{logoText}</span>\n </Link> */}\n <nav className=\"hidden md:flex gap-6\">\n {items?.map((item, index) => (\n // <Link\n // key={index}\n // href={item.href}\n // className={cn(\n // \"text-sm font-medium transition-colors hover:text-primary\",\n // item.disabled && \"cursor-not-allowed opacity-80\",\n // )}\n // >\n // {item.title}\n // </Link>\n <a href={item?.href}>\n {item.title}\n </a>\n ))}\n </nav>\n </div>\n <div className=\"flex items-center gap-4\">\n {children}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"relative h-8 w-8 rounded-full\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={user.image || \"/placeholder.svg\"} alt={user.name} />\n <AvatarFallback>{user.name?.charAt(0)}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"end\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"flex flex-col space-y-1\">\n <p className=\"text-sm font-medium leading-none\">{user.name}</p>\n <p className=\"text-xs leading-none text-muted-foreground\">{user.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n <UserIcon className=\"mr-2 h-4 w-4\" />\n <span>Profile</span>\n </DropdownMenuItem>\n <DropdownMenuItem>\n <SettingsIcon className=\"mr-2 h-4 w-4\" />\n <span>Settings</span>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onLogout}>\n <LogOutIcon className=\"mr-2 h-4 w-4\" />\n <span>Log out</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"md:hidden\" aria-label=\"Open Menu\">\n <MenuIcon className=\"h-5 w-5\" />\n </Button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"pr-0\">\n <nav className=\"grid gap-2 py-6\">\n {items?.map((item, index) => (\n // <Link\n // key={index}\n // href={item.href}\n // className={cn(\n // \"flex w-full items-center rounded-md px-3 py-2 text-sm font-medium hover:bg-accent\",\n // item.disabled && \"cursor-not-allowed opacity-80\",\n // )}\n // onClick={() => setOpen(false)}\n // >\n // {item.title}\n // </Link>\n <a href=\"https://www.goo.bar\" />\n ))}\n </nav>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </header>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst CheckIcon = Check as ComponentType<React.SVGProps<SVGSVGElement>>\nconst CircleIcon = Circle as ComponentType<React.SVGProps<SVGSVGElement>>\nconst ChevronRightIcon = ChevronRight as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst XIcon = X as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background 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\",\n side === \"right\" &&\n \"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\",\n side === \"left\" &&\n \"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\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["React","Slot","cva","clsx","twMerge","cn","inputs","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","ref","Slot","cn","useState","LucideIcons","AvatarPrimitive","jsx","Avatar","className","props","cn","AvatarImage","AvatarFallback","DropdownMenuPrimitive","Check","ChevronRight","Circle","jsx","jsxs","DropdownMenu","props","jsx","DropdownMenuTrigger","props","jsx","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuLabel","className","inset","props","jsx","cn","DropdownMenuSeparator","SheetPrimitive","X","jsx","jsxs","XIcon","X","Sheet","props","SheetTrigger","SheetPortal","props","jsx","SheetOverlay","className","cn","SheetContent","children","side","jsxs","XIcon","jsx","jsxs","Navbar","items","children","className","logoText","user","onLogout","open","setOpen","useState","UserIcon","SettingsIcon","LogOutIcon","MenuIcon","cn","item","index","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuGroup","DropdownMenuItem","Sheet","SheetTrigger","SheetContent"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/button.tsx","../src/lib/utils.ts","../src/components/core/navbar.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/sheet.tsx"],"sourcesContent":["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 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground 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-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\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 { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\"\n\nimport type React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { User, Settings, LogOut, Menu } from \"lucide-react\"\nimport type { LucideProps } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../components/ui/avatar\"\nimport { Button } from \"../../components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../components/ui/dropdown-menu\"\nimport { Sheet, SheetContent, SheetTrigger } from \"../../components/ui/sheet\"\n\ninterface NavItem {\n title: string\n href: string\n disabled?: boolean\n}\n\ninterface NavbarProps {\n items?: NavItem[]\n children?: React.ReactNode\n className?: string\n logoText?: string\n user?: {\n name?: string\n email?: string\n image?: string\n }\n onLogout?: () => void\n}\n\nexport function Navbar({\n items = [\n { title: \"Dashboard\", href: \"/dashboard\" },\n { title: \"Projects\", href: \"/projects\" },\n { title: \"Team\", href: \"/team\" },\n { title: \"Reports\", href: \"/reports\" },\n ],\n children,\n className,\n logoText = \"Company\",\n user = {\n name: \"John Doe\",\n email: \"john@example.com\",\n image: \"/placeholder.svg?height=32&width=32\",\n },\n onLogout = () => console.log(\"Logout clicked\"),\n}: NavbarProps) {\n const [open, setOpen] = useState(false)\n const [isMounted, setIsMounted] = useState(false)\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n const iconProps: LucideProps = {\n className: \"mr-2 h-4 w-4\",\n \"aria-hidden\": \"true\"\n }\n\n const renderIcon = (Icon: any) => {\n if (!isMounted) return null\n return <Icon {...iconProps} />\n }\n\n return (\n <header className={cn(\"border-b bg-background\", className)}>\n <div className=\"container flex h-16 items-center justify-between px-4 md:px-6\">\n <div className=\"flex items-center gap-4\">\n <span className=\"text-xl font-bold\">{logoText}</span>\n <nav className=\"hidden md:flex gap-6\">\n {items?.map((item, index) => (\n <a\n key={index}\n href={item.href}\n className={cn(\n \"text-sm font-medium transition-colors hover:text-primary\",\n item.disabled && \"cursor-not-allowed opacity-80\"\n )}\n >\n {item.title}\n </a>\n ))}\n </nav>\n </div>\n <div className=\"flex items-center gap-4\">\n {children}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" className=\"relative h-8 w-8 rounded-full\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={user.image || \"/placeholder.svg\"} alt={user.name} />\n <AvatarFallback>{user.name?.charAt(0)}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"end\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"flex flex-col space-y-1\">\n <p className=\"text-sm font-medium leading-none\">{user.name}</p>\n <p className=\"text-xs leading-none text-muted-foreground\">{user.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n {renderIcon(User)}\n <span>Profile</span>\n </DropdownMenuItem>\n <DropdownMenuItem>\n {renderIcon(Settings)}\n <span>Settings</span>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onLogout}>\n {renderIcon(LogOut)}\n <span>Log out</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"md:hidden\" aria-label=\"Open Menu\">\n {renderIcon(Menu)}\n </Button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"pr-0\">\n <nav className=\"grid gap-2 py-6\">\n {items?.map((item, index) => (\n <a\n key={index}\n href={item.href}\n className={cn(\n \"flex w-full items-center rounded-md px-3 py-2 text-sm font-medium hover:bg-accent\",\n item.disabled && \"cursor-not-allowed opacity-80\"\n )}\n onClick={() => setOpen(false)}\n >\n {item.title}\n </a>\n ))}\n </nav>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n </header>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst CheckIcon = Check as ComponentType<React.SVGProps<SVGSVGElement>>\nconst CircleIcon = Circle as ComponentType<React.SVGProps<SVGSVGElement>>\nconst ChevronRightIcon = ChevronRight as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport type { ComponentType } from \"react\"\n\nimport { cn } from \"@authdog/react-elements/lib/utils\"\n\nconst XIcon = X as ComponentType<React.SVGProps<SVGSVGElement>>\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background 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\",\n side === \"right\" &&\n \"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\",\n side === \"left\" &&\n \"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\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["React","Slot","cva","clsx","twMerge","cn","inputs","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","ref","Slot","cn","useState","useEffect","User","Settings","LogOut","Menu","AvatarPrimitive","jsx","Avatar","className","props","cn","AvatarImage","AvatarFallback","DropdownMenuPrimitive","Check","ChevronRight","Circle","jsx","jsxs","DropdownMenu","props","jsx","DropdownMenuTrigger","props","jsx","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuLabel","className","inset","props","jsx","cn","DropdownMenuSeparator","SheetPrimitive","X","jsx","jsxs","XIcon","X","Sheet","props","SheetTrigger","SheetPortal","props","jsx","SheetOverlay","className","cn","SheetContent","children","side","jsxs","XIcon","jsx","jsxs","Navbar","items","children","className","logoText","user","onLogout","open","setOpen","useState","isMounted","setIsMounted","useEffect","iconProps","renderIcon","Icon","cn","item","index","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuGroup","DropdownMenuItem","User","Settings","LogOut","Sheet","SheetTrigger","Menu","SheetContent"]}
|
package/dist/styles.css
CHANGED
|
@@ -674,9 +674,6 @@ video {
|
|
|
674
674
|
.h-4 {
|
|
675
675
|
height: 1rem;
|
|
676
676
|
}
|
|
677
|
-
.h-5 {
|
|
678
|
-
height: 1.25rem;
|
|
679
|
-
}
|
|
680
677
|
.h-8 {
|
|
681
678
|
height: 2rem;
|
|
682
679
|
}
|
|
@@ -701,9 +698,6 @@ video {
|
|
|
701
698
|
.w-4 {
|
|
702
699
|
width: 1rem;
|
|
703
700
|
}
|
|
704
|
-
.w-5 {
|
|
705
|
-
width: 1.25rem;
|
|
706
|
-
}
|
|
707
701
|
.w-56 {
|
|
708
702
|
width: 14rem;
|
|
709
703
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import type React from "react"
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
4
|
+
import { useState, useEffect } from "react"
|
|
5
|
+
import { User, Settings, LogOut, Menu } from "lucide-react"
|
|
6
|
+
import type { LucideProps } from "lucide-react"
|
|
7
7
|
|
|
8
8
|
import { cn } from "../../lib/utils"
|
|
9
9
|
import { Avatar, AvatarFallback, AvatarImage } from "../../components/ui/avatar"
|
|
@@ -56,33 +56,39 @@ export function Navbar({
|
|
|
56
56
|
onLogout = () => console.log("Logout clicked"),
|
|
57
57
|
}: NavbarProps) {
|
|
58
58
|
const [open, setOpen] = useState(false)
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
const [isMounted, setIsMounted] = useState(false)
|
|
60
|
+
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
setIsMounted(true)
|
|
63
|
+
}, [])
|
|
64
|
+
|
|
65
|
+
const iconProps: LucideProps = {
|
|
66
|
+
className: "mr-2 h-4 w-4",
|
|
67
|
+
"aria-hidden": "true"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const renderIcon = (Icon: any) => {
|
|
71
|
+
if (!isMounted) return null
|
|
72
|
+
return <Icon {...iconProps} />
|
|
73
|
+
}
|
|
63
74
|
|
|
64
75
|
return (
|
|
65
76
|
<header className={cn("border-b bg-background", className)}>
|
|
66
77
|
<div className="container flex h-16 items-center justify-between px-4 md:px-6">
|
|
67
78
|
<div className="flex items-center gap-4">
|
|
68
|
-
|
|
69
|
-
<span className="text-xl font-bold">{logoText}</span>
|
|
70
|
-
</Link> */}
|
|
79
|
+
<span className="text-xl font-bold">{logoText}</span>
|
|
71
80
|
<nav className="hidden md:flex gap-6">
|
|
72
81
|
{items?.map((item, index) => (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
<a href={item?.href}>
|
|
84
|
-
{item.title}
|
|
85
|
-
</a>
|
|
82
|
+
<a
|
|
83
|
+
key={index}
|
|
84
|
+
href={item.href}
|
|
85
|
+
className={cn(
|
|
86
|
+
"text-sm font-medium transition-colors hover:text-primary",
|
|
87
|
+
item.disabled && "cursor-not-allowed opacity-80"
|
|
88
|
+
)}
|
|
89
|
+
>
|
|
90
|
+
{item.title}
|
|
91
|
+
</a>
|
|
86
92
|
))}
|
|
87
93
|
</nav>
|
|
88
94
|
</div>
|
|
@@ -107,17 +113,17 @@ export function Navbar({
|
|
|
107
113
|
<DropdownMenuSeparator />
|
|
108
114
|
<DropdownMenuGroup>
|
|
109
115
|
<DropdownMenuItem>
|
|
110
|
-
|
|
116
|
+
{renderIcon(User)}
|
|
111
117
|
<span>Profile</span>
|
|
112
118
|
</DropdownMenuItem>
|
|
113
119
|
<DropdownMenuItem>
|
|
114
|
-
|
|
120
|
+
{renderIcon(Settings)}
|
|
115
121
|
<span>Settings</span>
|
|
116
122
|
</DropdownMenuItem>
|
|
117
123
|
</DropdownMenuGroup>
|
|
118
124
|
<DropdownMenuSeparator />
|
|
119
125
|
<DropdownMenuItem onClick={onLogout}>
|
|
120
|
-
|
|
126
|
+
{renderIcon(LogOut)}
|
|
121
127
|
<span>Log out</span>
|
|
122
128
|
</DropdownMenuItem>
|
|
123
129
|
</DropdownMenuContent>
|
|
@@ -125,24 +131,23 @@ export function Navbar({
|
|
|
125
131
|
<Sheet open={open} onOpenChange={setOpen}>
|
|
126
132
|
<SheetTrigger asChild>
|
|
127
133
|
<Button variant="ghost" size="icon" className="md:hidden" aria-label="Open Menu">
|
|
128
|
-
|
|
134
|
+
{renderIcon(Menu)}
|
|
129
135
|
</Button>
|
|
130
136
|
</SheetTrigger>
|
|
131
137
|
<SheetContent side="left" className="pr-0">
|
|
132
138
|
<nav className="grid gap-2 py-6">
|
|
133
139
|
{items?.map((item, index) => (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
<a href="https://www.goo.bar" />
|
|
140
|
+
<a
|
|
141
|
+
key={index}
|
|
142
|
+
href={item.href}
|
|
143
|
+
className={cn(
|
|
144
|
+
"flex w-full items-center rounded-md px-3 py-2 text-sm font-medium hover:bg-accent",
|
|
145
|
+
item.disabled && "cursor-not-allowed opacity-80"
|
|
146
|
+
)}
|
|
147
|
+
onClick={() => setOpen(false)}
|
|
148
|
+
>
|
|
149
|
+
{item.title}
|
|
150
|
+
</a>
|
|
146
151
|
))}
|
|
147
152
|
</nav>
|
|
148
153
|
</SheetContent>
|