ics-ui-kit 0.1.20 → 0.1.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","sources":["../../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/panel-left.js","../../src/components/sidebar/SidebarContext.tsx","../../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst PanelLeft = createLucideIcon(\"PanelLeft\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }]\n]);\n\nexport { PanelLeft as default };\n//# sourceMappingURL=panel-left.js.map\n","import React from \"react\";\n\nexport type SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\";\n\topen: boolean;\n\tsetOpen: (open: boolean) => void;\n\topenMobile: boolean;\n\tsetOpenMobile: (open: boolean) => void;\n\tisMobile: boolean;\n\ttoggleSidebar: () => void;\n\thasInset: boolean;\n\tsetHasInset: (hasInset: boolean) => void;\n};\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext);\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\");\n\t}\n\n\treturn context;\n}\n","import { useIsMobile } from \"@/hooks/useBreakpoints\";\nimport React from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\nimport { Button, IconButton } from \"../button\";\nimport { PanelLeft, Plus } from \"lucide-react\";\nimport { TextInput } from \"../input\";\nimport { Divider } from \"../divider\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { tv } from \"tailwind-variants\";\nimport { Skeleton } from \"../skeleton\";\nimport { SidebarContext, SidebarContextProps, useSidebar } from \"./SidebarContext\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\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\";\n\nconst sizebarProviderStyles = tv({\n\tbase: \"group/sidebar-wrapper flex min-h-svh w-full\",\n\tvariants: {\n\t\thasInset: {\n\t\t\ttrue: \"bg-primary-bg\"\n\t\t}\n\t}\n});\n\nconst SidebarProvider = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tdefaultOpen?: boolean;\n\t\topen?: boolean;\n\t\tonOpenChange?: (open: boolean) => void;\n\t}\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n\tconst isMobile = useIsMobile();\n\tconst [openMobile, setOpenMobile] = React.useState(false);\n\tconst [hasInset, setHasInset] = React.useState(false);\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen);\n\tconst open = openProp ?? _open;\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value;\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState);\n\t\t\t} else {\n\t\t\t\t_setOpen(openState);\n\t\t\t}\n\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\tdocument.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n\t\t},\n\t\t[setOpenProp, open]\n\t);\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n\t}, [isMobile, setOpen, setOpenMobile]);\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleSidebar();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown);\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown);\n\t}, [toggleSidebar]);\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\";\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t\thasInset,\n\t\t\tsetHasInset\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, hasInset]\n\t);\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<div\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t...style\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={sizebarProviderStyles({ hasInset, className })}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SidebarContext.Provider>\n\t);\n});\nSidebarProvider.displayName = \"SidebarProvider\";\n\nconst Sidebar = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\";\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\";\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\";\n\t}\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props }, ref) => {\n\tconst { state, openMobile, setOpenMobile, setHasInset } = useSidebar();\n\n\tReact.useLayoutEffect(() => {\n\t\tif (variant !== \"inset\") return;\n\t\tsetHasInset(true);\n\t\treturn () => setHasInset(false);\n\t}, [variant, setHasInset]);\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col bg-sidebar-bg\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"contents lg:hidden\">\n\t\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t\t<SheetContent\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar-bg p-0 text-secondary-fg [&>button]:hidden\"\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\n\t\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside={side}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t\t</SheetContent>\n\t\t\t\t</Sheet>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName=\"text-sidebar-foreground group peer hidden lg:block\"\n\t\t\t\tdata-state={state}\n\t\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-side={side}\n\t\t\t>\n\t\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear lg:flex\",\n\t\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l group-data-[side=left]:border-secondary-border group-data-[side=right]:border-secondary-border\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar-bg group-data-[variant=floating]:rounded-xl group-data-[variant=floating]:border-0.5 group-data-[variant=floating]:border-primary-border group-data-[variant=floating]:shadow-soft-xl\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n});\n\nSidebar.displayName = \"Sidebar\";\n\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\n\t({ onClick, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<IconButton\n\t\t\t\ticon={PanelLeft}\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"trigger\"\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\ttoggleSidebar();\n\t\t\t\t}}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t\t</IconButton>\n\t\t);\n\t}\n);\n\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\nconst sidebarRailStyles = tv({\n\tbase: [\n\t\t\"absolute inset-y-0 z-20 hidden w-[5px] -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-0 hover:after:-translate-x-1/2 hover:after:border-l hover:after:border-primary-border group-data-[side=left]:-right-[5px] group-data-[side=right]:left-0 sm:flex\",\n\t\t\"cursor-ew-resize\",\n\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-secondary-border\",\n\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-[2.5px]\",\n\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-[2.5px]\"\n\t]\n});\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(\n\t({ className, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"rail\"\n\t\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\tonClick={toggleSidebar}\n\t\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\t\tclassName={sidebarRailStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarRail.displayName = \"SidebarRail\";\n\nconst sidebarInsetStyles = tv({\n\tbase: [\n\t\t\"relative flex w-full flex-1 flex-col bg-secondary-bg\",\n\t\t\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\"\n\t]\n});\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\n\treturn <main ref={ref} className={sidebarInsetStyles({ className })} {...props} />;\n});\n\nSidebarInset.displayName = \"SidebarInset\";\n\nconst sidebarInputStyles = tv({\n\tbase: \"h-8 w-full shadow-none\"\n});\n\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof TextInput>, React.ComponentProps<typeof TextInput>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <TextInput ref={ref} data-sidebar=\"input\" className={sidebarInputStyles({ className })} {...props} />;\n\t}\n);\n\nSidebarInput.displayName = \"SidebarInput\";\n\nconst sidebarHeaderStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]\"\n});\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"header\" className={sidebarHeaderStyles({ className })} {...props} />;\n});\n\nSidebarHeader.displayName = \"SidebarHeader\";\n\nconst sidebarFooterStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]\"\n});\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"footer\" className={sidebarFooterStyles({ className })} {...props} />;\n});\n\nSidebarFooter.displayName = \"SidebarFooter\";\n\nconst sidebarSeparatorStyles = tv({\n\tbase: \"w-auto bg-secondary-border\"\n});\n\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Divider>, React.ComponentProps<typeof Divider>>(\n\t({ className, ...props }, ref) => {\n\t\treturn (\n\t\t\t<Divider\n\t\t\t\tref={ref}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tdata-sidebar=\"separator\"\n\t\t\t\tclassName={sidebarSeparatorStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarSeparator.displayName = \"SidebarSeparator\";\n\nconst sidebarContentStyles = tv({\n\tslots: {\n\t\tcontent: \"flex flex-1 flex-col gap-2 [scrollbar-gutter:stable] group-data-[collapsible=icon]:overflow-hidden\"\n\t}\n});\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, children, ...props }, ref) => {\n\t\tconst styles = sidebarContentStyles();\n\n\t\treturn (\n\t\t\t<ScrollShadowContainer\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"content\"\n\t\t\t\tclassName={styles.content({ className })}\n\t\t\t\tshadowSize={32}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</ScrollShadowContainer>\n\t\t);\n\t}\n);\n\nSidebarContent.displayName = \"SidebarContent\";\n\nconst sidebarGroupStyles = tv({\n\tbase: \"relative flex w-full min-w-0 flex-col p-2 group-data-[variant=floating]:px-2.5\"\n});\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"group\" className={sidebarGroupStyles({ className })} {...props} />;\n});\n\nSidebarGroup.displayName = \"SidebarGroup\";\n\nconst sidebarGroupLabelStyles = tv({\n\tbase: [\n\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-secondary-fg/70 outline-none transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\"\n\t]\n});\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"div\";\n\n\t\treturn (\n\t\t\t<Comp ref={ref} data-sidebar=\"group-label\" className={sidebarGroupLabelStyles({ className })} {...props} />\n\t\t);\n\t}\n);\n\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nconst sidebarGroupActionStyles = tv({\n\tbase: [\n\t\t\"focus-visible:ring-primary2 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:shadow-focus [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"group-action\"\n\t\t\t\tclassName={sidebarGroupActionStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\n\nconst sidebarGroupContentStyles = tv({\n\tbase: \"w-full text-sm\"\n});\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"group-content\" className={sidebarGroupContentStyles({ className })} {...props} />\n\t)\n);\n\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\n\nconst sidebarMenuStyles = tv({\n\tbase: \"flex w-full min-w-0 flex-col gap-1\"\n});\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\n\t<ul ref={ref} data-sidebar=\"menu\" className={sidebarMenuStyles({ className })} {...props} />\n));\n\nSidebarMenu.displayName = \"SidebarMenu\";\n\nconst sidebarMenuItemStyles = tv({\n\tbase: \"group/menu-item relative\"\n});\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\n\t<li ref={ref} data-sidebar=\"menu-item\" className={sidebarMenuItemStyles({ className })} {...props} />\n));\n\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nexport interface SidebarMenuButtonVariants {\n\tvariant?: \"default\" | \"outline\";\n\tsize?: \"default\" | \"sm\" | \"lg\";\n}\n\nconst sidebarMenuButtonStyles = tv({\n\tbase: [\n\t\t\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md bg-primary-bg p-2 text-left text-sm text-secondary-fg outline-none transition-[width,height,padding]\",\n\t\t\"hover:bg-primary-bg-hover hover:text-primary-fg focus-visible:shadow-focus\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:font-medium data-[active=true]:text-primary-accent\",\n\t\t\"data-[active=true]:hover:bg-primary-bg-hover data-[active=true]:hover:text-primary-accent\",\n\t\t\"data-[state=open]:hover:bg-primary-bg-hover data-[state=open]:hover:text-primary-fg\",\n\t\t\"data-[active=true]:data-[state=open]:hover:bg-primary-bg-hover data-[active=true]:data-[state=open]:hover:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate\",\n\t\t\"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted [&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:[&>svg]:text-secondary-fg group-data-[collapsible=icon]:[&>svg]:hover:text-primary-fg group-data-[collapsible=icon]:[&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-has-[[data-sidebar=menu-action]]/menu-item:pr-8\"\n\t],\n\tvariants: {\n\t\tvariant: {\n\t\t\tdefault: \"hover:bg-primary-bg-hover hover:text-primary-fg\",\n\t\t\toutline:\n\t\t\t\t\"border border-secondary-border bg-primary-bg shadow-soft-sm hover:bg-primary-bg-hover hover:text-primary-fg\"\n\t\t},\n\t\tsize: {\n\t\t\tdefault: \"h-8 text-sm\",\n\t\t\tsm: \"h-7 text-xs\",\n\t\t\tlg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\"\n\t\t}\n\t} satisfies VariantsConfig<SidebarMenuButtonVariants>,\n\tdefaultVariants: {\n\t\tvariant: \"default\",\n\t\tsize: \"default\"\n\t}\n});\n\nconst SidebarMenuButton = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tisActive?: boolean;\n\t\ttooltip?: string | React.ComponentProps<typeof TooltipContent>;\n\t} & SidebarMenuButtonVariants\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\tconst { isMobile, state } = useSidebar();\n\n\tconst button = (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(sidebarMenuButtonStyles({ variant, size }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n\n\tif (!tooltip) {\n\t\treturn button;\n\t}\n\n\tif (typeof tooltip === \"string\") {\n\t\ttooltip = {\n\t\t\tchildren: tooltip\n\t\t};\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\n\t\t</Tooltip>\n\t);\n});\n\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\n\nconst sidebarMenuActionStyles = tv({\n\tbase: [\n\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:ring-1 focus-visible:ring-primary peer-hover/menu-button:text-primary-fg [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tisHover: {\n\t\t\ttrue: \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-primary-accent md:opacity-0\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuAction = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tshowOnHover?: boolean;\n\t}\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={sidebarMenuActionStyles({ isHover: showOnHover, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\n\nconst sidebarMenuBadgeStyles = tv({\n\tbase: [\n\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-normal tabular-nums leading-none text-muted\",\n\t\t\"peer-hover/menu-button:text-muted peer-disabled/menu-button:opacity-50 peer-data-[active=true]/menu-button:text-muted\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"menu-badge\" className={sidebarMenuBadgeStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\n\nconst sidebarMenuSkeletonStyles = tv({\n\tslots: {\n\t\twrapper: \"flex h-8 items-center gap-2 rounded-md px-2\",\n\t\tskeleton: \"h-4 max-w-[--skeleton-width] flex-1\",\n\t\tskeletonIcon: \"size-4 rounded-md\"\n\t}\n});\n\nconst SidebarMenuSkeleton = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tshowIcon?: boolean;\n\t}\n>(({ className, showIcon = false, ...props }, ref) => {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`;\n\t}, []);\n\n\tconst styles = sidebarMenuSkeletonStyles();\n\n\treturn (\n\t\t<div ref={ref} data-sidebar=\"menu-skeleton\" className={styles.wrapper({ className })} {...props}>\n\t\t\t{showIcon && <Skeleton className={styles.skeletonIcon()} data-sidebar=\"menu-skeleton-icon\" />}\n\t\t\t<Skeleton\n\t\t\t\tclassName={styles.skeleton()}\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\n\nconst sidebarMenuSubStyles = tv({\n\tbase: [\n\t\t\"ml-3.5 flex min-w-0 flex-col gap-1 border-l border-secondary-border py-0.5 pl-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ul ref={ref} data-sidebar=\"menu-sub\" className={sidebarMenuSubStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\n\nconst sidebarMenuSubItemStyles = tv({\n\tbase: \"rounded-md focus-visible:shadow-focus focus-visible:outline-none\"\n});\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n\t({ className, ...props }, ref) => <li ref={ref} className={sidebarMenuSubItemStyles({ className })} {...props} />\n);\n\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\n\nconst sidebarMenuSubButtonStyles = tv({\n\tbase: [\n\t\t\"flex h-7 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2 text-secondary-fg outline-none hover:bg-secondary-bg-hover hover:text-primary-fg focus-visible:mr-0.5 focus-visible:shadow-focus 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 [&>svg]:text-primary-fg\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-xs\",\n\t\t\tmd: \"text-sm\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuSubButton = React.forwardRef<\n\tHTMLAnchorElement,\n\tReact.ComponentProps<\"a\"> & {\n\t\tasChild?: boolean;\n\t\tsize?: \"sm\" | \"md\";\n\t\tisActive?: boolean;\n\t}\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"a\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={sidebarMenuSubButtonStyles({ size, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\n\nconst sidebarInsertionLineStyles = tv({\n\tslots: {\n\t\twrapper: \"group/insertion flex cursor-pointer flex-row items-center border-none bg-transparent p-0\",\n\t\ticon: \"peer/icon h-4 w-4 p-0.5 text-muted opacity-0 group-hover/insertion:opacity-100\",\n\t\tline: \"h-px w-full bg-transparent group-hover/insertion:bg-muted peer-hover/icon:bg-primary-fg\"\n\t}\n});\n\nexport type SidebarInsertionLineProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst SidebarInsertionLine = React.forwardRef<HTMLDivElement, SidebarInsertionLineProps>(\n\t({ className, ...props }, ref) => {\n\t\tconst styles = sidebarInsertionLineStyles();\n\t\treturn (\n\t\t\t<div data-sidebar=\"sidebar-insertion-line\" className={styles.wrapper({ className })} ref={ref} {...props}>\n\t\t\t\t<IconButton icon={Plus} size=\"xs\" className={styles.icon()} variant=\"link\" />\n\t\t\t\t<div className={styles.line()} />\n\t\t\t</div>\n\t\t);\n\t}\n);\nSidebarInsertionLine.displayName = \"SidebarInsertionLine\";\n\nexport {\n\tSidebar,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarGroupAction,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarInset,\n\tSidebarMenu,\n\tSidebarMenuAction,\n\tSidebarMenuBadge,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSkeleton,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarProvider,\n\tSidebarRail,\n\tSidebarSeparator,\n\tSidebarInsertionLine,\n\tSidebarTrigger\n};\n"],"names":["PanelLeft","createLucideIcon","SidebarContext","React","useSidebar","context","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","sizebarProviderStyles","tv","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","openMobile","setOpenMobile","hasInset","setHasInset","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","Sidebar","side","variant","collapsible","cn","jsxs","Fragment","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","IconButton","sidebarRailStyles","SidebarRail","sidebarInsetStyles","SidebarInset","sidebarInputStyles","SidebarInput","TextInput","sidebarHeaderStyles","SidebarHeader","sidebarFooterStyles","SidebarFooter","sidebarSeparatorStyles","SidebarSeparator","Divider","sidebarContentStyles","SidebarContent","styles","ScrollShadowContainer","sidebarGroupStyles","SidebarGroup","sidebarGroupLabelStyles","SidebarGroupLabel","asChild","Slot","sidebarGroupActionStyles","SidebarGroupAction","sidebarGroupContentStyles","SidebarGroupContent","sidebarMenuStyles","SidebarMenu","sidebarMenuItemStyles","SidebarMenuItem","sidebarMenuButtonStyles","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","sidebarMenuActionStyles","SidebarMenuAction","showOnHover","sidebarMenuBadgeStyles","SidebarMenuBadge","sidebarMenuSkeletonStyles","SidebarMenuSkeleton","showIcon","width","Skeleton","sidebarMenuSubStyles","SidebarMenuSub","sidebarMenuSubItemStyles","SidebarMenuSubItem","sidebarMenuSubButtonStyles","SidebarMenuSubButton","sidebarInsertionLineStyles","SidebarInsertionLine","Plus"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"sidebar.js","sources":["../../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/panel-left.js","../../src/components/sidebar/SidebarContext.tsx","../../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst PanelLeft = createLucideIcon(\"PanelLeft\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }]\n]);\n\nexport { PanelLeft as default };\n//# sourceMappingURL=panel-left.js.map\n","import React from \"react\";\n\nexport type SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\";\n\topen: boolean;\n\tsetOpen: (open: boolean) => void;\n\topenMobile: boolean;\n\tsetOpenMobile: (open: boolean) => void;\n\tisMobile: boolean;\n\ttoggleSidebar: () => void;\n\thasInset: boolean;\n\tsetHasInset: (hasInset: boolean) => void;\n};\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext);\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\");\n\t}\n\n\treturn context;\n}\n","import { useIsMobile } from \"@/hooks/useBreakpoints\";\nimport { useIsomorphicLayoutEffect } from \"@siberiacancode/reactuse\";\nimport React from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\nimport { Button, IconButton } from \"../button\";\nimport { PanelLeft, Plus } from \"lucide-react\";\nimport { TextInput } from \"../input\";\nimport { Divider } from \"../divider\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { tv } from \"tailwind-variants\";\nimport { Skeleton } from \"../skeleton\";\nimport { SidebarContext, SidebarContextProps, useSidebar } from \"./SidebarContext\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\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\";\n\nconst sizebarProviderStyles = tv({\n\tbase: \"group/sidebar-wrapper flex min-h-svh w-full\",\n\tvariants: {\n\t\thasInset: {\n\t\t\ttrue: \"bg-primary-bg\"\n\t\t}\n\t}\n});\n\nconst SidebarProvider = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tdefaultOpen?: boolean;\n\t\topen?: boolean;\n\t\tonOpenChange?: (open: boolean) => void;\n\t}\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n\tconst isMobile = useIsMobile();\n\tconst [openMobile, setOpenMobile] = React.useState(false);\n\tconst [hasInset, setHasInset] = React.useState(false);\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen);\n\tconst open = openProp ?? _open;\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value;\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState);\n\t\t\t} else {\n\t\t\t\t_setOpen(openState);\n\t\t\t}\n\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\tdocument.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n\t\t},\n\t\t[setOpenProp, open]\n\t);\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n\t}, [isMobile, setOpen, setOpenMobile]);\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleSidebar();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown);\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown);\n\t}, [toggleSidebar]);\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\";\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t\thasInset,\n\t\t\tsetHasInset\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, hasInset]\n\t);\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<div\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t...style\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={sizebarProviderStyles({ hasInset, className })}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SidebarContext.Provider>\n\t);\n});\nSidebarProvider.displayName = \"SidebarProvider\";\n\nconst Sidebar = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\";\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\";\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\";\n\t}\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props }, ref) => {\n\tconst { state, openMobile, setOpenMobile, setHasInset } = useSidebar();\n\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (variant !== \"inset\") return;\n\t\tsetHasInset(true);\n\t\treturn () => setHasInset(false);\n\t}, [variant, setHasInset]);\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col bg-sidebar-bg\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"contents lg:hidden\">\n\t\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t\t<SheetContent\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar-bg p-0 text-secondary-fg [&>button]:hidden\"\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\n\t\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside={side}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t\t</SheetContent>\n\t\t\t\t</Sheet>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName=\"text-sidebar-foreground group peer hidden lg:block\"\n\t\t\t\tdata-state={state}\n\t\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-side={side}\n\t\t\t>\n\t\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear lg:flex\",\n\t\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l group-data-[side=left]:border-secondary-border group-data-[side=right]:border-secondary-border\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar-bg group-data-[variant=floating]:rounded-xl group-data-[variant=floating]:border-0.5 group-data-[variant=floating]:border-primary-border group-data-[variant=floating]:shadow-soft-xl\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n});\n\nSidebar.displayName = \"Sidebar\";\n\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\n\t({ onClick, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<IconButton\n\t\t\t\ticon={PanelLeft}\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"trigger\"\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\ttoggleSidebar();\n\t\t\t\t}}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t\t</IconButton>\n\t\t);\n\t}\n);\n\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\nconst sidebarRailStyles = tv({\n\tbase: [\n\t\t\"absolute inset-y-0 z-20 hidden w-[5px] -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-0 hover:after:-translate-x-1/2 hover:after:border-l hover:after:border-primary-border group-data-[side=left]:-right-[5px] group-data-[side=right]:left-0 sm:flex\",\n\t\t\"cursor-ew-resize\",\n\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-secondary-border\",\n\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-[2.5px]\",\n\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-[2.5px]\"\n\t]\n});\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(\n\t({ className, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"rail\"\n\t\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\tonClick={toggleSidebar}\n\t\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\t\tclassName={sidebarRailStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarRail.displayName = \"SidebarRail\";\n\nconst sidebarInsetStyles = tv({\n\tbase: [\n\t\t\"relative flex w-full flex-1 flex-col bg-secondary-bg\",\n\t\t\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\"\n\t]\n});\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\n\treturn <main ref={ref} className={sidebarInsetStyles({ className })} {...props} />;\n});\n\nSidebarInset.displayName = \"SidebarInset\";\n\nconst sidebarInputStyles = tv({\n\tbase: \"h-8 w-full shadow-none\"\n});\n\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof TextInput>, React.ComponentProps<typeof TextInput>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <TextInput ref={ref} data-sidebar=\"input\" className={sidebarInputStyles({ className })} {...props} />;\n\t}\n);\n\nSidebarInput.displayName = \"SidebarInput\";\n\nconst sidebarHeaderStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]\"\n});\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"header\" className={sidebarHeaderStyles({ className })} {...props} />;\n});\n\nSidebarHeader.displayName = \"SidebarHeader\";\n\nconst sidebarFooterStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]\"\n});\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"footer\" className={sidebarFooterStyles({ className })} {...props} />;\n});\n\nSidebarFooter.displayName = \"SidebarFooter\";\n\nconst sidebarSeparatorStyles = tv({\n\tbase: \"w-auto bg-secondary-border\"\n});\n\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Divider>, React.ComponentProps<typeof Divider>>(\n\t({ className, ...props }, ref) => {\n\t\treturn (\n\t\t\t<Divider\n\t\t\t\tref={ref}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tdata-sidebar=\"separator\"\n\t\t\t\tclassName={sidebarSeparatorStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarSeparator.displayName = \"SidebarSeparator\";\n\nconst sidebarContentStyles = tv({\n\tslots: {\n\t\tcontent: \"flex flex-1 flex-col gap-2 [scrollbar-gutter:stable] group-data-[collapsible=icon]:overflow-hidden\"\n\t}\n});\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, children, ...props }, ref) => {\n\t\tconst styles = sidebarContentStyles();\n\n\t\treturn (\n\t\t\t<ScrollShadowContainer\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"content\"\n\t\t\t\tclassName={styles.content({ className })}\n\t\t\t\tshadowSize={32}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</ScrollShadowContainer>\n\t\t);\n\t}\n);\n\nSidebarContent.displayName = \"SidebarContent\";\n\nconst sidebarGroupStyles = tv({\n\tbase: \"relative flex w-full min-w-0 flex-col p-2 group-data-[variant=floating]:px-2.5\"\n});\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"group\" className={sidebarGroupStyles({ className })} {...props} />;\n});\n\nSidebarGroup.displayName = \"SidebarGroup\";\n\nconst sidebarGroupLabelStyles = tv({\n\tbase: [\n\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-secondary-fg/70 outline-none transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\"\n\t]\n});\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"div\";\n\n\t\treturn (\n\t\t\t<Comp ref={ref} data-sidebar=\"group-label\" className={sidebarGroupLabelStyles({ className })} {...props} />\n\t\t);\n\t}\n);\n\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nconst sidebarGroupActionStyles = tv({\n\tbase: [\n\t\t\"focus-visible:ring-primary2 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:shadow-focus [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"group-action\"\n\t\t\t\tclassName={sidebarGroupActionStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\n\nconst sidebarGroupContentStyles = tv({\n\tbase: \"w-full text-sm\"\n});\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"group-content\" className={sidebarGroupContentStyles({ className })} {...props} />\n\t)\n);\n\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\n\nconst sidebarMenuStyles = tv({\n\tbase: \"flex w-full min-w-0 flex-col gap-1\"\n});\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\n\t<ul ref={ref} data-sidebar=\"menu\" className={sidebarMenuStyles({ className })} {...props} />\n));\n\nSidebarMenu.displayName = \"SidebarMenu\";\n\nconst sidebarMenuItemStyles = tv({\n\tbase: \"group/menu-item relative\"\n});\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\n\t<li ref={ref} data-sidebar=\"menu-item\" className={sidebarMenuItemStyles({ className })} {...props} />\n));\n\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nexport interface SidebarMenuButtonVariants {\n\tvariant?: \"default\" | \"outline\";\n\tsize?: \"default\" | \"sm\" | \"lg\";\n}\n\nconst sidebarMenuButtonStyles = tv({\n\tbase: [\n\t\t\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md bg-primary-bg p-2 text-left text-sm text-secondary-fg outline-none transition-[width,height,padding]\",\n\t\t\"hover:bg-primary-bg-hover hover:text-primary-fg focus-visible:shadow-focus\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:font-medium data-[active=true]:text-primary-accent\",\n\t\t\"data-[active=true]:hover:bg-primary-bg-hover data-[active=true]:hover:text-primary-accent\",\n\t\t\"data-[state=open]:hover:bg-primary-bg-hover data-[state=open]:hover:text-primary-fg\",\n\t\t\"data-[active=true]:data-[state=open]:hover:bg-primary-bg-hover data-[active=true]:data-[state=open]:hover:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate\",\n\t\t\"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted [&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:[&>svg]:text-secondary-fg group-data-[collapsible=icon]:[&>svg]:hover:text-primary-fg group-data-[collapsible=icon]:[&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-has-[[data-sidebar=menu-action]]/menu-item:pr-8\"\n\t],\n\tvariants: {\n\t\tvariant: {\n\t\t\tdefault: \"hover:bg-primary-bg-hover hover:text-primary-fg\",\n\t\t\toutline:\n\t\t\t\t\"border border-secondary-border bg-primary-bg shadow-soft-sm hover:bg-primary-bg-hover hover:text-primary-fg\"\n\t\t},\n\t\tsize: {\n\t\t\tdefault: \"h-8 text-sm\",\n\t\t\tsm: \"h-7 text-xs\",\n\t\t\tlg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\"\n\t\t}\n\t} satisfies VariantsConfig<SidebarMenuButtonVariants>,\n\tdefaultVariants: {\n\t\tvariant: \"default\",\n\t\tsize: \"default\"\n\t}\n});\n\nconst SidebarMenuButton = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tisActive?: boolean;\n\t\ttooltip?: string | React.ComponentProps<typeof TooltipContent>;\n\t} & SidebarMenuButtonVariants\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\tconst { isMobile, state } = useSidebar();\n\n\tconst button = (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(sidebarMenuButtonStyles({ variant, size }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n\n\tif (!tooltip) {\n\t\treturn button;\n\t}\n\n\tif (typeof tooltip === \"string\") {\n\t\ttooltip = {\n\t\t\tchildren: tooltip\n\t\t};\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\n\t\t</Tooltip>\n\t);\n});\n\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\n\nconst sidebarMenuActionStyles = tv({\n\tbase: [\n\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:ring-1 focus-visible:ring-primary peer-hover/menu-button:text-primary-fg [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tisHover: {\n\t\t\ttrue: \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-primary-accent md:opacity-0\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuAction = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tshowOnHover?: boolean;\n\t}\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={sidebarMenuActionStyles({ isHover: showOnHover, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\n\nconst sidebarMenuBadgeStyles = tv({\n\tbase: [\n\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-normal tabular-nums leading-none text-muted\",\n\t\t\"peer-hover/menu-button:text-muted peer-disabled/menu-button:opacity-50 peer-data-[active=true]/menu-button:text-muted\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"menu-badge\" className={sidebarMenuBadgeStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\n\nconst sidebarMenuSkeletonStyles = tv({\n\tslots: {\n\t\twrapper: \"flex h-8 items-center gap-2 rounded-md px-2\",\n\t\tskeleton: \"h-4 max-w-[--skeleton-width] flex-1\",\n\t\tskeletonIcon: \"size-4 rounded-md\"\n\t}\n});\n\nconst SidebarMenuSkeleton = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tshowIcon?: boolean;\n\t}\n>(({ className, showIcon = false, ...props }, ref) => {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`;\n\t}, []);\n\n\tconst styles = sidebarMenuSkeletonStyles();\n\n\treturn (\n\t\t<div ref={ref} data-sidebar=\"menu-skeleton\" className={styles.wrapper({ className })} {...props}>\n\t\t\t{showIcon && <Skeleton className={styles.skeletonIcon()} data-sidebar=\"menu-skeleton-icon\" />}\n\t\t\t<Skeleton\n\t\t\t\tclassName={styles.skeleton()}\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\n\nconst sidebarMenuSubStyles = tv({\n\tbase: [\n\t\t\"ml-3.5 flex min-w-0 flex-col gap-1 border-l border-secondary-border py-0.5 pl-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ul ref={ref} data-sidebar=\"menu-sub\" className={sidebarMenuSubStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\n\nconst sidebarMenuSubItemStyles = tv({\n\tbase: \"rounded-md focus-visible:shadow-focus focus-visible:outline-none\"\n});\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n\t({ className, ...props }, ref) => <li ref={ref} className={sidebarMenuSubItemStyles({ className })} {...props} />\n);\n\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\n\nconst sidebarMenuSubButtonStyles = tv({\n\tbase: [\n\t\t\"flex h-7 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2 text-secondary-fg outline-none hover:bg-secondary-bg-hover hover:text-primary-fg focus-visible:mr-0.5 focus-visible:shadow-focus 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 [&>svg]:text-primary-fg\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-xs\",\n\t\t\tmd: \"text-sm\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuSubButton = React.forwardRef<\n\tHTMLAnchorElement,\n\tReact.ComponentProps<\"a\"> & {\n\t\tasChild?: boolean;\n\t\tsize?: \"sm\" | \"md\";\n\t\tisActive?: boolean;\n\t}\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"a\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={sidebarMenuSubButtonStyles({ size, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\n\nconst sidebarInsertionLineStyles = tv({\n\tslots: {\n\t\twrapper: \"group/insertion flex cursor-pointer flex-row items-center border-none bg-transparent p-0\",\n\t\ticon: \"peer/icon h-4 w-4 p-0.5 text-muted opacity-0 group-hover/insertion:opacity-100\",\n\t\tline: \"h-px w-full bg-transparent group-hover/insertion:bg-muted peer-hover/icon:bg-primary-fg\"\n\t}\n});\n\nexport type SidebarInsertionLineProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst SidebarInsertionLine = React.forwardRef<HTMLDivElement, SidebarInsertionLineProps>(\n\t({ className, ...props }, ref) => {\n\t\tconst styles = sidebarInsertionLineStyles();\n\t\treturn (\n\t\t\t<div data-sidebar=\"sidebar-insertion-line\" className={styles.wrapper({ className })} ref={ref} {...props}>\n\t\t\t\t<IconButton icon={Plus} size=\"xs\" className={styles.icon()} variant=\"link\" />\n\t\t\t\t<div className={styles.line()} />\n\t\t\t</div>\n\t\t);\n\t}\n);\nSidebarInsertionLine.displayName = \"SidebarInsertionLine\";\n\nexport {\n\tSidebar,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarGroupAction,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarInset,\n\tSidebarMenu,\n\tSidebarMenuAction,\n\tSidebarMenuBadge,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSkeleton,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarProvider,\n\tSidebarRail,\n\tSidebarSeparator,\n\tSidebarInsertionLine,\n\tSidebarTrigger\n};\n"],"names":["PanelLeft","createLucideIcon","SidebarContext","React","useSidebar","context","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","sizebarProviderStyles","tv","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","openMobile","setOpenMobile","hasInset","setHasInset","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","Sidebar","side","variant","collapsible","useIsomorphicLayoutEffect","cn","jsxs","Fragment","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","IconButton","sidebarRailStyles","SidebarRail","sidebarInsetStyles","SidebarInset","sidebarInputStyles","SidebarInput","TextInput","sidebarHeaderStyles","SidebarHeader","sidebarFooterStyles","SidebarFooter","sidebarSeparatorStyles","SidebarSeparator","Divider","sidebarContentStyles","SidebarContent","styles","ScrollShadowContainer","sidebarGroupStyles","SidebarGroup","sidebarGroupLabelStyles","SidebarGroupLabel","asChild","Slot","sidebarGroupActionStyles","SidebarGroupAction","sidebarGroupContentStyles","SidebarGroupContent","sidebarMenuStyles","SidebarMenu","sidebarMenuItemStyles","SidebarMenuItem","sidebarMenuButtonStyles","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","sidebarMenuActionStyles","SidebarMenuAction","showOnHover","sidebarMenuBadgeStyles","SidebarMenuBadge","sidebarMenuSkeletonStyles","SidebarMenuSkeleton","showIcon","width","Skeleton","sidebarMenuSubStyles","SidebarMenuSub","sidebarMenuSubItemStyles","SidebarMenuSubItem","sidebarMenuSubButtonStyles","SidebarMenuSubButton","sidebarInsertionLineStyles","SidebarInsertionLine","Plus"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,11 +1,11 @@
1
- import { jsx as R } from "react/jsx-runtime";
2
- import * as c from "react";
3
- import m, { useRef as N, useLayoutEffect as P } from "react";
4
- import { T as k } from "../index-BVqs-uqP.js";
5
- import { u as O } from "../useMergeRefs-qoKniYqT.js";
6
- import { u as j, a as B } from "../inputBaseStyles-BfZIWuQ6.js";
7
- const _ = k({
8
- extend: B,
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import l, { useRef as m } from "react";
3
+ import { T as u } from "../index-BVqs-uqP.js";
4
+ import { u as d } from "../useMergeRefs-qoKniYqT.js";
5
+ import { u as x, a as c } from "../inputBaseStyles-BfZIWuQ6.js";
6
+ import p from "react-textarea-autosize";
7
+ const z = u({
8
+ extend: c,
9
9
  base: "min-h-14",
10
10
  variants: {
11
11
  resize: {
@@ -18,200 +18,41 @@ const _ = k({
18
18
  defaultVariants: {
19
19
  resize: "vertical"
20
20
  }
21
- }), $ = m.forwardRef(
22
- ({ className: n, error: e, resize: r, ...t }, i) => {
23
- const u = N(null), o = O(u, i);
24
- return j(u, e), /* @__PURE__ */ R(
21
+ }), y = l.forwardRef(
22
+ ({ className: r, error: e, resize: t, ...s }, o) => {
23
+ const a = m(null), i = d(a, o);
24
+ return x(a, e), /* @__PURE__ */ n(
25
25
  "textarea",
26
26
  {
27
- className: _({ resize: r, className: n }),
28
- ref: o,
27
+ className: z({ resize: t, className: r }),
28
+ ref: i,
29
29
  "aria-invalid": !!e,
30
- ...t
30
+ ...s
31
31
  }
32
32
  );
33
33
  }
34
34
  );
35
- $.displayName = "Textarea";
36
- function w() {
37
- return w = Object.assign ? Object.assign.bind() : function(n) {
38
- for (var e = 1; e < arguments.length; e++) {
39
- var r = arguments[e];
40
- for (var t in r) ({}).hasOwnProperty.call(r, t) && (n[t] = r[t]);
41
- }
42
- return n;
43
- }, w.apply(null, arguments);
44
- }
45
- function G(n, e) {
46
- if (n == null) return {};
47
- var r = {};
48
- for (var t in n) if ({}.hasOwnProperty.call(n, t)) {
49
- if (e.indexOf(t) !== -1) continue;
50
- r[t] = n[t];
51
- }
52
- return r;
53
- }
54
- var V = P, Y = function(e) {
55
- var r = m.useRef(e);
56
- return V(function() {
57
- r.current = e;
58
- }), r;
59
- }, T = function(e, r) {
60
- if (typeof e == "function") {
61
- e(r);
62
- return;
63
- }
64
- e.current = r;
65
- }, q = function(e, r) {
66
- var t = m.useRef();
67
- return m.useCallback(function(i) {
68
- e.current = i, t.current && T(t.current, null), t.current = r, r && T(r, i);
69
- }, [r]);
70
- }, E = {
71
- "min-height": "0",
72
- "max-height": "none",
73
- height: "0",
74
- visibility: "hidden",
75
- overflow: "hidden",
76
- position: "absolute",
77
- "z-index": "-1000",
78
- top: "0",
79
- right: "0",
80
- display: "block"
81
- }, U = function(e) {
82
- Object.keys(E).forEach(function(r) {
83
- e.style.setProperty(r, E[r], "important");
84
- });
85
- }, F = U, a = null, W = function(e, r) {
86
- var t = e.scrollHeight;
87
- return r.sizingStyle.boxSizing === "border-box" ? t + r.borderSize : t - r.paddingSize;
88
- };
89
- function X(n, e, r, t) {
90
- r === void 0 && (r = 1), t === void 0 && (t = 1 / 0), a || (a = document.createElement("textarea"), a.setAttribute("tabindex", "-1"), a.setAttribute("aria-hidden", "true"), F(a)), a.parentNode === null && document.body.appendChild(a);
91
- var i = n.paddingSize, u = n.borderSize, o = n.sizingStyle, f = o.boxSizing;
92
- Object.keys(o).forEach(function(l) {
93
- var x = l;
94
- a.style[x] = o[x];
95
- }), F(a), a.value = e;
96
- var d = W(a, n);
97
- a.value = e, d = W(a, n), a.value = "x";
98
- var v = a.scrollHeight - i, h = v * r;
99
- f === "border-box" && (h = h + i + u), d = Math.max(h, d);
100
- var g = v * t;
101
- return f === "border-box" && (g = g + i + u), d = Math.min(g, d), [d, v];
102
- }
103
- var A = function() {
104
- }, Z = function(e, r) {
105
- return e.reduce(function(t, i) {
106
- return t[i] = r[i], t;
107
- }, {});
108
- }, D = [
109
- "borderBottomWidth",
110
- "borderLeftWidth",
111
- "borderRightWidth",
112
- "borderTopWidth",
113
- "boxSizing",
114
- "fontFamily",
115
- "fontSize",
116
- "fontStyle",
117
- "fontWeight",
118
- "letterSpacing",
119
- "lineHeight",
120
- "paddingBottom",
121
- "paddingLeft",
122
- "paddingRight",
123
- "paddingTop",
124
- // non-standard
125
- "tabSize",
126
- "textIndent",
127
- // non-standard
128
- "textRendering",
129
- "textTransform",
130
- "width",
131
- "wordBreak",
132
- "wordSpacing",
133
- "scrollbarGutter"
134
- ], J = !!document.documentElement.currentStyle, K = function(e) {
135
- var r = window.getComputedStyle(e);
136
- if (r === null)
137
- return null;
138
- var t = Z(D, r), i = t.boxSizing;
139
- if (i === "")
140
- return null;
141
- J && i === "border-box" && (t.width = parseFloat(t.width) + parseFloat(t.borderRightWidth) + parseFloat(t.borderLeftWidth) + parseFloat(t.paddingRight) + parseFloat(t.paddingLeft) + "px");
142
- var u = parseFloat(t.paddingBottom) + parseFloat(t.paddingTop), o = parseFloat(t.borderBottomWidth) + parseFloat(t.borderTopWidth);
143
- return {
144
- sizingStyle: t,
145
- paddingSize: u,
146
- borderSize: o
147
- };
148
- }, Q = K;
149
- function L(n, e, r) {
150
- var t = Y(r);
151
- c.useLayoutEffect(function() {
152
- var i = function(o) {
153
- return t.current(o);
154
- };
155
- if (n)
156
- return n.addEventListener(e, i), function() {
157
- return n.removeEventListener(e, i);
158
- };
159
- }, []);
160
- }
161
- var ee = function(e, r) {
162
- L(document.body, "reset", function(t) {
163
- e.current.form === t.target && r(t);
164
- });
165
- }, te = function(e) {
166
- L(window, "resize", e);
167
- }, re = function(e) {
168
- L(document.fonts, "loadingdone", e);
169
- }, ne = ["cacheMeasurements", "maxRows", "minRows", "onChange", "onHeightChange"], ie = function(e, r) {
170
- var t = e.cacheMeasurements, i = e.maxRows, u = e.minRows, o = e.onChange, f = o === void 0 ? A : o, d = e.onHeightChange, v = d === void 0 ? A : d, h = G(e, ne), g = h.value !== void 0, l = c.useRef(null), x = q(l, r), C = c.useRef(0), S = c.useRef(), p = function() {
171
- var s = l.current, z = t && S.current ? S.current : Q(s);
172
- if (z) {
173
- S.current = z;
174
- var H = X(z, s.value || s.placeholder || "x", u, i), b = H[0], M = H[1];
175
- C.current !== b && (C.current = b, s.style.setProperty("height", b + "px", "important"), v(b, {
176
- rowHeight: M
177
- }));
178
- }
179
- }, I = function(s) {
180
- g || p(), f(s);
181
- };
182
- return c.useLayoutEffect(p), ee(l, function() {
183
- if (!g) {
184
- var y = l.current.value;
185
- requestAnimationFrame(function() {
186
- var s = l.current;
187
- s && y !== s.value && p();
188
- });
189
- }
190
- }), te(p), re(p), /* @__PURE__ */ c.createElement("textarea", w({}, h, {
191
- onChange: I,
192
- ref: x
193
- }));
194
- }, ae = /* @__PURE__ */ c.forwardRef(ie);
195
- const oe = k({
196
- extend: B,
35
+ y.displayName = "Textarea";
36
+ const R = u({
37
+ extend: c,
197
38
  base: "resize-none leading-[1.125rem]"
198
- }), ue = m.forwardRef(
199
- ({ className: n, minRows: e = 2, error: r, ...t }, i) => {
200
- const u = N(null), o = O(u, i);
201
- j(u, r);
39
+ }), g = l.forwardRef(
40
+ ({ className: r, minRows: e = 2, error: t, ...s }, o) => {
41
+ const a = m(null), i = d(a, o);
42
+ x(a, t);
202
43
  const f = {
203
- className: oe({ className: n }),
204
- ref: o,
205
- "aria-invalid": !!r,
44
+ className: R({ className: r }),
45
+ ref: i,
46
+ "aria-invalid": !!t,
206
47
  minRows: e,
207
- ...t
48
+ ...s
208
49
  };
209
- return typeof document > "u" ? /* @__PURE__ */ R("textarea", { ...f, rows: e }) : /* @__PURE__ */ R(ae, { ...f });
50
+ return typeof document > "u" ? /* @__PURE__ */ n("textarea", { ...f, rows: e }) : /* @__PURE__ */ n(p, { ...f });
210
51
  }
211
52
  );
212
- ue.displayName = "AutogrowTextarea";
53
+ g.displayName = "AutogrowTextarea";
213
54
  export {
214
- ue as AutogrowTextarea,
215
- $ as Textarea
55
+ g as AutogrowTextarea,
56
+ y as Textarea
216
57
  };
217
58
  //# sourceMappingURL=textarea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","sources":["../../src/components/textarea/textarea/Textarea.tsx","../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/.pnpm/use-isomorphic-layout-effect@1.2.1_@types+react@18.3.20_react@18.3.1/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../../node_modules/.pnpm/use-latest@1.3.0_@types+react@18.3.20_react@18.3.1/node_modules/use-latest/dist/use-latest.esm.js","../../node_modules/.pnpm/use-composed-ref@1.4.0_@types+react@18.3.20_react@18.3.1/node_modules/use-composed-ref/dist/use-composed-ref.esm.js","../../node_modules/.pnpm/react-textarea-autosize@8.5.9_@types+react@18.3.20_react@18.3.1/node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js","../../src/components/textarea/autogrow-textarea/AutogrowTextarea.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface TextareaVariants {\n\tresize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n}\n\nconst textareaStyles = tv({\n\textend: inputBaseControlStyles,\n\tbase: \"min-h-14\",\n\tvariants: {\n\t\tresize: {\n\t\t\tnone: \"resize-none\",\n\t\t\tvertical: \"resize-y\",\n\t\t\thorizontal: \"resize-x\",\n\t\t\tboth: \"resize\"\n\t\t}\n\t} satisfies VariantsConfig<TextareaVariants>,\n\tdefaultVariants: {\n\t\tresize: \"vertical\"\n\t}\n});\n\nexport type TextareaProps = React.ComponentProps<\"textarea\"> &\n\tTextareaVariants & {\n\t\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\n\t\terror?: string;\n\t};\n\n/**\n * Стилизованный компонент textarea для многострочного ввода текста.\n * Поддерживает все стандартные свойства textarea элемента.\n */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ className, error, resize, ...other }, ref) => {\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\n\n\t\tuseCustomValidity(textareaRef, error);\n\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={textareaStyles({ resize, className })}\n\t\t\t\tref={mergedRef}\n\t\t\t\taria-invalid={!!error}\n\t\t\t\t{...other}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nTextarea.displayName = \"Textarea\";\n\nexport default Textarea;\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport { index as default };\n","import React from 'react';\nimport useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar useLatest = function useLatest(value) {\n var ref = React.useRef(value);\n useIsomorphicLayoutEffect(function () {\n ref.current = value;\n });\n return ref;\n};\n\nexport { useLatest as default };\n","import React from 'react';\n\n// basically Exclude<React.ClassAttributes<T>[\"ref\"], string>\n\nvar updateRef = function updateRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n ref.current = value;\n};\nvar useComposedRef = function useComposedRef(libRef, userRef) {\n var prevUserRef = React.useRef();\n return React.useCallback(function (instance) {\n libRef.current = instance;\n if (prevUserRef.current) {\n updateRef(prevUserRef.current, null);\n }\n prevUserRef.current = userRef;\n if (!userRef) {\n return;\n }\n updateRef(userRef, instance);\n }, [userRef]);\n};\n\nexport { useComposedRef as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as React from 'react';\nimport useLatest from 'use-latest';\nimport useComposedRef from 'use-composed-ref';\n\nvar HIDDEN_TEXTAREA_STYLE = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0',\n display: 'block'\n};\nvar forceHiddenStyles = function forceHiddenStyles(node) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n};\nvar forceHiddenStyles$1 = forceHiddenStyles;\n\nvar hiddenTextarea = null;\nvar getHeight = function getHeight(node, sizingData) {\n var height = node.scrollHeight;\n if (sizingData.sizingStyle.boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n return height + sizingData.borderSize;\n }\n\n // remove padding, since height = content\n return height - sizingData.paddingSize;\n};\nfunction calculateNodeHeight(sizingData, value, minRows, maxRows) {\n if (minRows === void 0) {\n minRows = 1;\n }\n if (maxRows === void 0) {\n maxRows = Infinity;\n }\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tabindex', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n forceHiddenStyles$1(hiddenTextarea);\n }\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n }\n var paddingSize = sizingData.paddingSize,\n borderSize = sizingData.borderSize,\n sizingStyle = sizingData.sizingStyle;\n var boxSizing = sizingStyle.boxSizing;\n Object.keys(sizingStyle).forEach(function (_key) {\n var key = _key;\n hiddenTextarea.style[key] = sizingStyle[key];\n });\n forceHiddenStyles$1(hiddenTextarea);\n hiddenTextarea.value = value;\n var height = getHeight(hiddenTextarea, sizingData);\n // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n hiddenTextarea.value = value;\n height = getHeight(hiddenTextarea, sizingData);\n\n // measure height of a textarea with a single row\n hiddenTextarea.value = 'x';\n var rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n var minHeight = rowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n var maxHeight = rowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n return [height, rowHeight];\n}\n\nvar noop = function noop() {};\nvar pick = function pick(props, obj) {\n return props.reduce(function (acc, prop) {\n acc[prop] = obj[prop];\n return acc;\n }, {});\n};\n\nvar SIZING_STYLE = ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'boxSizing', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'letterSpacing', 'lineHeight', 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop',\n// non-standard\n'tabSize', 'textIndent',\n// non-standard\n'textRendering', 'textTransform', 'width', 'wordBreak', 'wordSpacing', 'scrollbarGutter'];\nvar isIE = !!document.documentElement.currentStyle ;\nvar getSizingData = function getSizingData(node) {\n var style = window.getComputedStyle(node);\n if (style === null) {\n return null;\n }\n var sizingStyle = pick(SIZING_STYLE, style);\n var boxSizing = sizingStyle.boxSizing;\n\n // probably node is detached from DOM, can't read computed dimensions\n if (boxSizing === '') {\n return null;\n }\n\n // IE (Edge has already correct behaviour) returns content width as computed width\n // so we need to add manually padding and border widths\n if (isIE && boxSizing === 'border-box') {\n sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(sizingStyle.borderRightWidth) + parseFloat(sizingStyle.borderLeftWidth) + parseFloat(sizingStyle.paddingRight) + parseFloat(sizingStyle.paddingLeft) + 'px';\n }\n var paddingSize = parseFloat(sizingStyle.paddingBottom) + parseFloat(sizingStyle.paddingTop);\n var borderSize = parseFloat(sizingStyle.borderBottomWidth) + parseFloat(sizingStyle.borderTopWidth);\n return {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize\n };\n};\nvar getSizingData$1 = getSizingData;\n\nfunction useListener(target, type, listener) {\n var latestListener = useLatest(listener);\n React.useLayoutEffect(function () {\n var handler = function handler(ev) {\n return latestListener.current(ev);\n };\n // might happen if document.fonts is not defined, for instance\n if (!target) {\n return;\n }\n target.addEventListener(type, handler);\n return function () {\n return target.removeEventListener(type, handler);\n };\n }, []);\n}\nvar useFormResetListener = function useFormResetListener(libRef, listener) {\n useListener(document.body, 'reset', function (ev) {\n if (libRef.current.form === ev.target) {\n listener(ev);\n }\n });\n};\nvar useWindowResizeListener = function useWindowResizeListener(listener) {\n useListener(window, 'resize', listener);\n};\nvar useFontsLoadedListener = function useFontsLoadedListener(listener) {\n useListener(document.fonts, 'loadingdone', listener);\n};\n\nvar _excluded = [\"cacheMeasurements\", \"maxRows\", \"minRows\", \"onChange\", \"onHeightChange\"];\nvar TextareaAutosize = function TextareaAutosize(_ref, userRef) {\n var cacheMeasurements = _ref.cacheMeasurements,\n maxRows = _ref.maxRows,\n minRows = _ref.minRows,\n _ref$onChange = _ref.onChange,\n onChange = _ref$onChange === void 0 ? noop : _ref$onChange,\n _ref$onHeightChange = _ref.onHeightChange,\n onHeightChange = _ref$onHeightChange === void 0 ? noop : _ref$onHeightChange,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n var isControlled = props.value !== undefined;\n var libRef = React.useRef(null);\n var ref = useComposedRef(libRef, userRef);\n var heightRef = React.useRef(0);\n var measurementsCacheRef = React.useRef();\n var resizeTextarea = function resizeTextarea() {\n var node = libRef.current;\n var nodeSizingData = cacheMeasurements && measurementsCacheRef.current ? measurementsCacheRef.current : getSizingData$1(node);\n if (!nodeSizingData) {\n return;\n }\n measurementsCacheRef.current = nodeSizingData;\n var _calculateNodeHeight = calculateNodeHeight(nodeSizingData, node.value || node.placeholder || 'x', minRows, maxRows),\n height = _calculateNodeHeight[0],\n rowHeight = _calculateNodeHeight[1];\n if (heightRef.current !== height) {\n heightRef.current = height;\n node.style.setProperty('height', height + \"px\", 'important');\n onHeightChange(height, {\n rowHeight: rowHeight\n });\n }\n };\n var handleChange = function handleChange(event) {\n if (!isControlled) {\n resizeTextarea();\n }\n onChange(event);\n };\n {\n React.useLayoutEffect(resizeTextarea);\n useFormResetListener(libRef, function () {\n if (!isControlled) {\n var currentValue = libRef.current.value;\n requestAnimationFrame(function () {\n var node = libRef.current;\n if (node && currentValue !== node.value) {\n resizeTextarea();\n }\n });\n }\n });\n useWindowResizeListener(resizeTextarea);\n useFontsLoadedListener(resizeTextarea);\n return /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n onChange: handleChange,\n ref: ref\n }));\n }\n};\nvar index = /* #__PURE__ */React.forwardRef(TextareaAutosize);\n\nexport { index as default };\n","import React, { useRef } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { tv } from \"tailwind-variants\";\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\n\nconst autogrowTextareaStyles = tv({\n\textend: inputBaseControlStyles,\n\tbase: \"resize-none leading-[1.125rem]\"\n});\n\nexport type AutogrowTextareaProps = React.ComponentProps<typeof TextareaAutosize> & {\n\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\n\terror?: string;\n};\n\n/**\n * Стилизованный компонент textarea с автоматическим увеличением высоты.\n * Использует библиотеку react-textarea-autosize для надежной работы с min-height и max-height.\n */\nexport const AutogrowTextarea = React.forwardRef<HTMLTextAreaElement, AutogrowTextareaProps>(\n\t({ className, minRows = 2, error, ...other }, ref) => {\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\n\n\t\tuseCustomValidity(textareaRef, error);\n\n\t\tconst sharedProps = {\n\t\t\tclassName: autogrowTextareaStyles({ className }),\n\t\t\tref: mergedRef,\n\t\t\t\"aria-invalid\": !!error as boolean,\n\t\t\tminRows,\n\t\t\t...other\n\t\t};\n\n\t\t// SSR: document недоступен — рендерим обычный textarea\n\t\tif (typeof document === \"undefined\") {\n\t\t\treturn <textarea {...sharedProps} rows={minRows} />;\n\t\t}\n\n\t\treturn <TextareaAutosize {...sharedProps} />;\n\t}\n);\n\nAutogrowTextarea.displayName = \"AutogrowTextarea\";\n\nexport default AutogrowTextarea;\n"],"names":["textareaStyles","tv","inputBaseControlStyles","Textarea","React","className","error","resize","other","ref","textareaRef","useRef","mergedRef","useMergeRefs","useCustomValidity","jsx","_extends","t","r","_objectWithoutPropertiesLoose","n","index","useLayoutEffect","useLatest","value","useIsomorphicLayoutEffect","updateRef","useComposedRef","libRef","userRef","prevUserRef","instance","HIDDEN_TEXTAREA_STYLE","forceHiddenStyles","node","key","forceHiddenStyles$1","hiddenTextarea","getHeight","sizingData","height","calculateNodeHeight","minRows","maxRows","paddingSize","borderSize","sizingStyle","boxSizing","_key","rowHeight","minHeight","maxHeight","noop","pick","props","obj","acc","prop","SIZING_STYLE","isIE","getSizingData","style","getSizingData$1","useListener","target","type","listener","latestListener","handler","ev","useFormResetListener","useWindowResizeListener","useFontsLoadedListener","_excluded","TextareaAutosize","_ref","cacheMeasurements","_ref$onChange","onChange","_ref$onHeightChange","onHeightChange","isControlled","heightRef","measurementsCacheRef","resizeTextarea","nodeSizingData","_calculateNodeHeight","handleChange","event","currentValue","autogrowTextareaStyles","AutogrowTextarea","sharedProps"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6]}
1
+ {"version":3,"file":"textarea.js","sources":["../../src/components/textarea/textarea/Textarea.tsx","../../src/components/textarea/autogrow-textarea/AutogrowTextarea.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface TextareaVariants {\n\tresize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n}\n\nconst textareaStyles = tv({\n\textend: inputBaseControlStyles,\n\tbase: \"min-h-14\",\n\tvariants: {\n\t\tresize: {\n\t\t\tnone: \"resize-none\",\n\t\t\tvertical: \"resize-y\",\n\t\t\thorizontal: \"resize-x\",\n\t\t\tboth: \"resize\"\n\t\t}\n\t} satisfies VariantsConfig<TextareaVariants>,\n\tdefaultVariants: {\n\t\tresize: \"vertical\"\n\t}\n});\n\nexport type TextareaProps = React.ComponentProps<\"textarea\"> &\n\tTextareaVariants & {\n\t\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\n\t\terror?: string;\n\t};\n\n/**\n * Стилизованный компонент textarea для многострочного ввода текста.\n * Поддерживает все стандартные свойства textarea элемента.\n */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ className, error, resize, ...other }, ref) => {\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\n\n\t\tuseCustomValidity(textareaRef, error);\n\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={textareaStyles({ resize, className })}\n\t\t\t\tref={mergedRef}\n\t\t\t\taria-invalid={!!error}\n\t\t\t\t{...other}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nTextarea.displayName = \"Textarea\";\n\nexport default Textarea;\n","import React, { useRef } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { tv } from \"tailwind-variants\";\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\n\nconst autogrowTextareaStyles = tv({\n\textend: inputBaseControlStyles,\n\tbase: \"resize-none leading-[1.125rem]\"\n});\n\nexport type AutogrowTextareaProps = React.ComponentProps<typeof TextareaAutosize> & {\n\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\n\terror?: string;\n};\n\n/**\n * Стилизованный компонент textarea с автоматическим увеличением высоты.\n * Использует библиотеку react-textarea-autosize для надежной работы с min-height и max-height.\n */\nexport const AutogrowTextarea = React.forwardRef<HTMLTextAreaElement, AutogrowTextareaProps>(\n\t({ className, minRows = 2, error, ...other }, ref) => {\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\n\n\t\tuseCustomValidity(textareaRef, error);\n\n\t\tconst sharedProps = {\n\t\t\tclassName: autogrowTextareaStyles({ className }),\n\t\t\tref: mergedRef,\n\t\t\t\"aria-invalid\": !!error as boolean,\n\t\t\tminRows,\n\t\t\t...other\n\t\t};\n\n\t\t// SSR: document недоступен — рендерим обычный textarea\n\t\tif (typeof document === \"undefined\") {\n\t\t\treturn <textarea {...sharedProps} rows={minRows} />;\n\t\t}\n\n\t\treturn <TextareaAutosize {...sharedProps} />;\n\t}\n);\n\nAutogrowTextarea.displayName = \"AutogrowTextarea\";\n\nexport default AutogrowTextarea;\n"],"names":["textareaStyles","tv","inputBaseControlStyles","Textarea","React","className","error","resize","other","ref","textareaRef","useRef","mergedRef","useMergeRefs","useCustomValidity","jsx","autogrowTextareaStyles","AutogrowTextarea","minRows","sharedProps","TextareaAutosize"],"mappings":";;;;;;AAWA,MAAMA,IAAiBC,EAAG;AAAA,EACzB,QAAQC;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,IACT,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,MAAM;AAAA,IAAA;AAAA,EAER;AAAA,EACA,iBAAiB;AAAA,IAChB,QAAQ;AAAA,EAAA;AAEV,CAAC,GAYYC,IAAWC,EAAM;AAAA,EAC7B,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,QAAAC,GAAQ,GAAGC,KAASC,MAAQ;AAC1C,UAAAC,IAAcC,EAA4B,IAAI,GAC9CC,IAAYC,EAAaH,GAAaD,CAAG;AAE/C,WAAAK,EAAkBJ,GAAaJ,CAAK,GAGnC,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWf,EAAe,EAAE,QAAAO,GAAQ,WAAAF,GAAW;AAAA,QAC/C,KAAKO;AAAA,QACL,gBAAc,CAAC,CAACN;AAAA,QACf,GAAGE;AAAA,MAAA;AAAA,IACL;AAAA,EAAA;AAGH;AAEAL,EAAS,cAAc;AChDvB,MAAMa,IAAyBf,EAAG;AAAA,EACjC,QAAQC;AAAA,EACR,MAAM;AACP,CAAC,GAWYe,IAAmBb,EAAM;AAAA,EACrC,CAAC,EAAE,WAAAC,GAAW,SAAAa,IAAU,GAAG,OAAAZ,GAAO,GAAGE,EAAM,GAAGC,MAAQ;AAC/C,UAAAC,IAAcC,EAA4B,IAAI,GAC9CC,IAAYC,EAAaH,GAAaD,CAAG;AAE/C,IAAAK,EAAkBJ,GAAaJ,CAAK;AAEpC,UAAMa,IAAc;AAAA,MACnB,WAAWH,EAAuB,EAAE,WAAAX,GAAW;AAAA,MAC/C,KAAKO;AAAA,MACL,gBAAgB,CAAC,CAACN;AAAA,MAClB,SAAAY;AAAA,MACA,GAAGV;AAAA,IACJ;AAGI,WAAA,OAAO,WAAa,MACf,gBAAAO,EAAA,YAAA,EAAU,GAAGI,GAAa,MAAMD,GAAS,IAG3C,gBAAAH,EAACK,GAAkB,EAAA,GAAGD,EAAa,CAAA;AAAA,EAAA;AAE5C;AAEAF,EAAiB,cAAc;"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { useLayoutEffect as e, useEffect as f } from "react";
2
+ var t = typeof window < "u" ? e : f;
3
+ export {
4
+ t as n
5
+ };
6
+ //# sourceMappingURL=useIsomorphicLayoutEffect-MNxJD61V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsomorphicLayoutEffect-MNxJD61V.js","sources":["../node_modules/.pnpm/@siberiacancode+reactuse@1.0.17_@types+react@18.3.20_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@siberiacancode/reactuse/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs"],"sourcesContent":["import { useEffect as e, useLayoutEffect as t } from \"react\";\n//#region src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.ts\nvar n = typeof window < \"u\" ? t : e;\n//#endregion\nexport { n as useIsomorphicLayoutEffect };\n\n//# sourceMappingURL=useIsomorphicLayoutEffect.mjs.map"],"names":["n","t","e"],"mappings":";AAEG,IAACA,IAAI,OAAO,SAAS,MAAMC,IAAIC;","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ics-ui-kit",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "packageManager": "pnpm@10.17.1",
5
5
  "repository": {
6
6
  "type": "git",