arxatec-ui 0.1.27 → 0.1.29
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/dist/fonts/BlinkMacSystemFont-Black.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-BlackItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Bold.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-BoldItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Heavy.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-HeavyItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Light.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-LightItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Medium.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-MediumItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Regular.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-RegularItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Semibold.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-SemiboldItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Thin.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-ThinItalic.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-Ultralight.woff2 +0 -0
- package/dist/fonts/BlinkMacSystemFont-UltralightItalic.woff2 +0 -0
- package/dist/index.js +1 -1
- package/dist/{sidebar-BFis4wS9.js → sidebar-u6Syt1IC.js} +2 -2
- package/dist/{sidebar-BFis4wS9.js.map → sidebar-u6Syt1IC.js.map} +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/styles.css +132 -5
- package/package.json +1 -2
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as e, B as t, C as n, D as r, E as i, F as a, H as o, I as s, L as c, M as l, N as u, O as d, P as f, R as p, S as m, T as h, U as g, V as _, _ as v, a as y, b, c as x, d as S, f as C, g as w, h as T, i as E, j as D, k as O, l as ee, m as te, n as ne, o as re, p as ie, r as ae, s as oe, t as k, u as se, v as ce, w as le, x as ue, y as de, z as fe } from "./sidebar-
|
|
1
|
+
import { A as e, B as t, C as n, D as r, E as i, F as a, H as o, I as s, L as c, M as l, N as u, O as d, P as f, R as p, S as m, T as h, U as g, V as _, _ as v, a as y, b, c as x, d as S, f as C, g as w, h as T, i as E, j as D, k as O, l as ee, m as te, n as ne, o as re, p as ie, r as ae, s as oe, t as k, u as se, v as ce, w as le, x as ue, y as de, z as fe } from "./sidebar-u6Syt1IC.js";
|
|
2
2
|
import * as A from "react";
|
|
3
3
|
import j, { createElement as pe, forwardRef as M, useCallback as N, useEffect as P, useImperativeHandle as F, useMemo as I, useReducer as me, useRef as L, useState as R } from "react";
|
|
4
4
|
import he, { centerCrop as ge, makeAspectCrop as _e } from "react-image-crop";
|
|
@@ -14,7 +14,7 @@ function m(...e) {
|
|
|
14
14
|
}
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region src/components/button/index.tsx
|
|
17
|
-
var h = d("inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-
|
|
17
|
+
var h = d("inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
|
|
18
18
|
variants: {
|
|
19
19
|
variant: {
|
|
20
20
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
@@ -557,4 +557,4 @@ function pe({ asChild: e = !1, size: t = "md", isActive: n = !1, className: i, .
|
|
|
557
557
|
//#endregion
|
|
558
558
|
export { A, _ as B, G as C, k as D, D as E, x as F, h as H, C as I, b as L, E as M, S as N, N as O, w as P, y as R, X as S, T, m as U, g as V, de as _, re as a, U as b, te as c, ae as d, ce as f, ue as g, oe as h, Q as i, M as j, j as k, J as l, se as m, Z as n, ie as o, le as p, Y as r, ne as s, W as t, q as u, pe as v, H as w, K as x, fe as y, v as z };
|
|
559
559
|
|
|
560
|
-
//# sourceMappingURL=sidebar-
|
|
560
|
+
//# sourceMappingURL=sidebar-u6Syt1IC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-BFis4wS9.js","names":[],"sources":["../src/utilities/class/index.ts","../src/components/button/index.tsx","../src/components/separator/index.tsx","../src/components/input/index.tsx","../src/components/skeleton/index.tsx","../src/components/tooltip/index.tsx","../src/components/sheet/index.tsx","../src/components/sidebar/index.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utilities/index\";\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/utilities/index\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utilities/index\";\nimport { EyeIcon, EyeOffIcon } from \"lucide-react\";\n\nconst inputVariants = cva(\n \"file:text-foreground placeholder:text-muted-foreground dark:bg-input/30 border-input flex w-full min-w-0 rounded-md border bg-card px-3 py-1 text-sm shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-card file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n size: {\n default: \"h-9\",\n sm: \"h-8\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nfunction Input({\n className,\n type,\n size,\n ref,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> &\n VariantProps<typeof inputVariants>) {\n const [showPassword, setShowPassword] = React.useState(false);\n\n if (type === \"password\") {\n return (\n <div className=\"relative\">\n <input\n type={showPassword ? \"text\" : \"password\"}\n className={cn(inputVariants({ size, className }))}\n ref={ref}\n {...props}\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center justify-center w-10 text-muted-foreground focus:outline-none\"\n onClick={() => setShowPassword(!showPassword)}\n >\n {showPassword ? (\n <EyeIcon className=\"w-4 h-4\" />\n ) : (\n <EyeOffIcon className=\"w-4 h-4\" />\n )}\n </button>\n </div>\n );\n }\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size, className }))}\n ref={ref}\n {...props}\n />\n );\n}\n\nexport { Input, inputVariants };\n","import { cn } from \"@/utilities/\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@/utilities/\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utilities/index\";\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 onContextMenu,\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 onContextMenu={(e) => {\n e.stopPropagation();\n onContextMenu?.(e);\n }}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n onContextMenu,\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 onContextMenu={(e) => {\n e.stopPropagation();\n onContextMenu?.(e);\n }}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-[13px] 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 z-50\">\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(\n \"flex border-b pb-2 flex-col gap-1.5 px-4 py-2 \",\n className\n )}\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 border-t\", 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-base font-normal text-foreground\", 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","/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utilities/index\";\nimport { Button } from \"@/components/button\";\nimport { Input } from \"@/components/input\";\nimport { Separator } from \"@/components/separator\";\nimport { Skeleton } from \"@/components/skeleton\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\nconst DESKTOP_BREAKPOINT = 1280;\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const [isMobile, setIsMobile] = React.useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return !window.matchMedia(`(min-width: ${DESKTOP_BREAKPOINT}px)`).matches;\n });\n React.useEffect(() => {\n const mql = window.matchMedia(`(min-width: ${DESKTOP_BREAKPOINT}px)`);\n const onChange = (e: MediaQueryListEvent) => {\n setIsMobile(!e.matches);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(!mql.matches);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden xl:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-md group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-md md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 px-2 pt-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebar-u6Syt1IC.js","names":[],"sources":["../src/utilities/class/index.ts","../src/components/button/index.tsx","../src/components/separator/index.tsx","../src/components/input/index.tsx","../src/components/skeleton/index.tsx","../src/components/tooltip/index.tsx","../src/components/sheet/index.tsx","../src/components/sidebar/index.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utilities/index\";\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/utilities/index\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/utilities/index\";\nimport { EyeIcon, EyeOffIcon } from \"lucide-react\";\n\nconst inputVariants = cva(\n \"file:text-foreground placeholder:text-muted-foreground dark:bg-input/30 border-input flex w-full min-w-0 rounded-md border bg-card px-3 py-1 text-sm shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-card file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n size: {\n default: \"h-9\",\n sm: \"h-8\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nfunction Input({\n className,\n type,\n size,\n ref,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> &\n VariantProps<typeof inputVariants>) {\n const [showPassword, setShowPassword] = React.useState(false);\n\n if (type === \"password\") {\n return (\n <div className=\"relative\">\n <input\n type={showPassword ? \"text\" : \"password\"}\n className={cn(inputVariants({ size, className }))}\n ref={ref}\n {...props}\n />\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 flex items-center justify-center w-10 text-muted-foreground focus:outline-none\"\n onClick={() => setShowPassword(!showPassword)}\n >\n {showPassword ? (\n <EyeIcon className=\"w-4 h-4\" />\n ) : (\n <EyeOffIcon className=\"w-4 h-4\" />\n )}\n </button>\n </div>\n );\n }\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size, className }))}\n ref={ref}\n {...props}\n />\n );\n}\n\nexport { Input, inputVariants };\n","import { cn } from \"@/utilities/\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@/utilities/\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utilities/index\";\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 onContextMenu,\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 onContextMenu={(e) => {\n e.stopPropagation();\n onContextMenu?.(e);\n }}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n onContextMenu,\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 onContextMenu={(e) => {\n e.stopPropagation();\n onContextMenu?.(e);\n }}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-[13px] 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 z-50\">\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(\n \"flex border-b pb-2 flex-col gap-1.5 px-4 py-2 \",\n className\n )}\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 border-t\", 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-base font-normal text-foreground\", 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","/* eslint-disable react-refresh/only-export-components */\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utilities/index\";\nimport { Button } from \"@/components/button\";\nimport { Input } from \"@/components/input\";\nimport { Separator } from \"@/components/separator\";\nimport { Skeleton } from \"@/components/skeleton\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\nconst DESKTOP_BREAKPOINT = 1280;\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const [isMobile, setIsMobile] = React.useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return !window.matchMedia(`(min-width: ${DESKTOP_BREAKPOINT}px)`).matches;\n });\n React.useEffect(() => {\n const mql = window.matchMedia(`(min-width: ${DESKTOP_BREAKPOINT}px)`);\n const onChange = (e: MediaQueryListEvent) => {\n setIsMobile(!e.matches);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(!mql.matches);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden xl:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-md group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-md md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 px-2 pt-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":"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"}
|
package/dist/sidebar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y, v as b, w as x, x as S, y as C } from "./sidebar-
|
|
1
|
+
import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y, v as b, w as x, x as S, y as C } from "./sidebar-u6Syt1IC.js";
|
|
2
2
|
export { v as Sidebar, p as SidebarContent, g as SidebarFooter, u as SidebarGroup, r as SidebarGroupAction, m as SidebarGroupContent, _ as SidebarGroupLabel, a as SidebarHeader, d as SidebarInput, y as SidebarInset, o as SidebarMenu, s as SidebarMenuAction, h as SidebarMenuBadge, f as SidebarMenuButton, l as SidebarMenuItem, c as SidebarMenuSkeleton, n as SidebarMenuSub, b as SidebarMenuSubButton, C as SidebarMenuSubItem, i as SidebarProvider, S as SidebarRail, t as SidebarSeparator, e as SidebarTrigger, x as useSidebar };
|
package/dist/styles.css
CHANGED
|
@@ -1,6 +1,133 @@
|
|
|
1
1
|
@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300..700;1,300..700&display=swap");
|
|
2
|
-
@import url("https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap");
|
|
3
2
|
@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap");
|
|
3
|
+
|
|
4
|
+
/* Sans: archivos en ./fonts/ (en el paquete publicado van junto a dist/styles.css) */
|
|
5
|
+
@font-face {
|
|
6
|
+
font-family: "ArxatecSans";
|
|
7
|
+
font-style: normal;
|
|
8
|
+
font-weight: 100;
|
|
9
|
+
font-display: swap;
|
|
10
|
+
src: url("./fonts/BlinkMacSystemFont-Ultralight.woff2") format("woff2");
|
|
11
|
+
}
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: "ArxatecSans";
|
|
14
|
+
font-style: italic;
|
|
15
|
+
font-weight: 100;
|
|
16
|
+
font-display: swap;
|
|
17
|
+
src: url("./fonts/BlinkMacSystemFont-UltralightItalic.woff2") format("woff2");
|
|
18
|
+
}
|
|
19
|
+
@font-face {
|
|
20
|
+
font-family: "ArxatecSans";
|
|
21
|
+
font-style: normal;
|
|
22
|
+
font-weight: 200;
|
|
23
|
+
font-display: swap;
|
|
24
|
+
src: url("./fonts/BlinkMacSystemFont-Thin.woff2") format("woff2");
|
|
25
|
+
}
|
|
26
|
+
@font-face {
|
|
27
|
+
font-family: "ArxatecSans";
|
|
28
|
+
font-style: italic;
|
|
29
|
+
font-weight: 200;
|
|
30
|
+
font-display: swap;
|
|
31
|
+
src: url("./fonts/BlinkMacSystemFont-ThinItalic.woff2") format("woff2");
|
|
32
|
+
}
|
|
33
|
+
@font-face {
|
|
34
|
+
font-family: "ArxatecSans";
|
|
35
|
+
font-style: normal;
|
|
36
|
+
font-weight: 300;
|
|
37
|
+
font-display: swap;
|
|
38
|
+
src: url("./fonts/BlinkMacSystemFont-Light.woff2") format("woff2");
|
|
39
|
+
}
|
|
40
|
+
@font-face {
|
|
41
|
+
font-family: "ArxatecSans";
|
|
42
|
+
font-style: italic;
|
|
43
|
+
font-weight: 300;
|
|
44
|
+
font-display: swap;
|
|
45
|
+
src: url("./fonts/BlinkMacSystemFont-LightItalic.woff2") format("woff2");
|
|
46
|
+
}
|
|
47
|
+
@font-face {
|
|
48
|
+
font-family: "ArxatecSans";
|
|
49
|
+
font-style: normal;
|
|
50
|
+
font-weight: 400;
|
|
51
|
+
font-display: swap;
|
|
52
|
+
src: url("./fonts/BlinkMacSystemFont-Regular.woff2") format("woff2");
|
|
53
|
+
}
|
|
54
|
+
@font-face {
|
|
55
|
+
font-family: "ArxatecSans";
|
|
56
|
+
font-style: italic;
|
|
57
|
+
font-weight: 400;
|
|
58
|
+
font-display: swap;
|
|
59
|
+
src: url("./fonts/BlinkMacSystemFont-RegularItalic.woff2") format("woff2");
|
|
60
|
+
}
|
|
61
|
+
@font-face {
|
|
62
|
+
font-family: "ArxatecSans";
|
|
63
|
+
font-style: normal;
|
|
64
|
+
font-weight: 500;
|
|
65
|
+
font-display: swap;
|
|
66
|
+
src: url("./fonts/BlinkMacSystemFont-Medium.woff2") format("woff2");
|
|
67
|
+
}
|
|
68
|
+
@font-face {
|
|
69
|
+
font-family: "ArxatecSans";
|
|
70
|
+
font-style: italic;
|
|
71
|
+
font-weight: 500;
|
|
72
|
+
font-display: swap;
|
|
73
|
+
src: url("./fonts/BlinkMacSystemFont-MediumItalic.woff2") format("woff2");
|
|
74
|
+
}
|
|
75
|
+
@font-face {
|
|
76
|
+
font-family: "ArxatecSans";
|
|
77
|
+
font-style: normal;
|
|
78
|
+
font-weight: 600;
|
|
79
|
+
font-display: swap;
|
|
80
|
+
src: url("./fonts/BlinkMacSystemFont-Semibold.woff2") format("woff2");
|
|
81
|
+
}
|
|
82
|
+
@font-face {
|
|
83
|
+
font-family: "ArxatecSans";
|
|
84
|
+
font-style: italic;
|
|
85
|
+
font-weight: 600;
|
|
86
|
+
font-display: swap;
|
|
87
|
+
src: url("./fonts/BlinkMacSystemFont-SemiboldItalic.woff2") format("woff2");
|
|
88
|
+
}
|
|
89
|
+
@font-face {
|
|
90
|
+
font-family: "ArxatecSans";
|
|
91
|
+
font-style: normal;
|
|
92
|
+
font-weight: 700;
|
|
93
|
+
font-display: swap;
|
|
94
|
+
src: url("./fonts/BlinkMacSystemFont-Bold.woff2") format("woff2");
|
|
95
|
+
}
|
|
96
|
+
@font-face {
|
|
97
|
+
font-family: "ArxatecSans";
|
|
98
|
+
font-style: italic;
|
|
99
|
+
font-weight: 700;
|
|
100
|
+
font-display: swap;
|
|
101
|
+
src: url("./fonts/BlinkMacSystemFont-BoldItalic.woff2") format("woff2");
|
|
102
|
+
}
|
|
103
|
+
@font-face {
|
|
104
|
+
font-family: "ArxatecSans";
|
|
105
|
+
font-style: normal;
|
|
106
|
+
font-weight: 800;
|
|
107
|
+
font-display: swap;
|
|
108
|
+
src: url("./fonts/BlinkMacSystemFont-Heavy.woff2") format("woff2");
|
|
109
|
+
}
|
|
110
|
+
@font-face {
|
|
111
|
+
font-family: "ArxatecSans";
|
|
112
|
+
font-style: italic;
|
|
113
|
+
font-weight: 800;
|
|
114
|
+
font-display: swap;
|
|
115
|
+
src: url("./fonts/BlinkMacSystemFont-HeavyItalic.woff2") format("woff2");
|
|
116
|
+
}
|
|
117
|
+
@font-face {
|
|
118
|
+
font-family: "ArxatecSans";
|
|
119
|
+
font-style: normal;
|
|
120
|
+
font-weight: 900;
|
|
121
|
+
font-display: swap;
|
|
122
|
+
src: url("./fonts/BlinkMacSystemFont-Black.woff2") format("woff2");
|
|
123
|
+
}
|
|
124
|
+
@font-face {
|
|
125
|
+
font-family: "ArxatecSans";
|
|
126
|
+
font-style: italic;
|
|
127
|
+
font-weight: 900;
|
|
128
|
+
font-display: swap;
|
|
129
|
+
src: url("./fonts/BlinkMacSystemFont-BlackItalic.woff2") format("woff2");
|
|
130
|
+
}
|
|
4
131
|
@import "tailwindcss";
|
|
5
132
|
@source ".";
|
|
6
133
|
@import "tw-animate-css";
|
|
@@ -10,7 +137,7 @@
|
|
|
10
137
|
|
|
11
138
|
@theme inline {
|
|
12
139
|
--font-serif: "Cormorant Garamond", serif;
|
|
13
|
-
--font-sans: "
|
|
140
|
+
--font-sans: "ArxatecSans", ui-sans-serif, system-ui, sans-serif;
|
|
14
141
|
--font-mono: "JetBrains Mono", monospace;
|
|
15
142
|
--radius-sm: calc(var(--radius) - 4px);
|
|
16
143
|
--radius-md: calc(var(--radius) - 2px);
|
|
@@ -361,8 +488,8 @@
|
|
|
361
488
|
--editor-spacing-8: 2rem;
|
|
362
489
|
--editor-spacing-12: 3rem;
|
|
363
490
|
--editor-spacing-16: 4rem;
|
|
364
|
-
--editor-font-sans: system-ui, -apple-system,
|
|
365
|
-
Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
491
|
+
--editor-font-sans: "ArxatecSans", ui-sans-serif, system-ui, -apple-system,
|
|
492
|
+
"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
366
493
|
--editor-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
367
494
|
monospace;
|
|
368
495
|
--editor-font-serif: Georgia, Cambria, "Times New Roman", Times, serif;
|
|
@@ -614,7 +741,7 @@
|
|
|
614
741
|
.EmojiPickerReact {
|
|
615
742
|
--epr-text-color: var(--muted-foreground) !important;
|
|
616
743
|
--epr-emoji-size: 24px !important;
|
|
617
|
-
font-family:
|
|
744
|
+
font-family: var(--font-sans) !important;
|
|
618
745
|
font-size: 14px !important;
|
|
619
746
|
font-weight: 400 !important;
|
|
620
747
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arxatec-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.29",
|
|
4
4
|
"description": "React component library for building Arxatec product UIs—built on established ecosystem libraries for a consistent, efficient workflow. More at https://arxatec.net.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -76,7 +76,6 @@
|
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"@base-ui/react": "^1.3.0",
|
|
78
78
|
"@floating-ui/react": "^0.27.17",
|
|
79
|
-
"@fontsource-variable/geist": "^5.2.8",
|
|
80
79
|
"@radix-ui/react-avatar": "^1.1.10",
|
|
81
80
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
82
81
|
"@radix-ui/react-collapsible": "^1.1.12",
|