Spaces:
Running
Running
<script lang="ts"> | |
import { cn, type WithElementRef } from "$lib/utils.js"; | |
import type { HTMLAttributes } from "svelte/elements"; | |
import { useSidebar } from "./context.svelte.js"; | |
let { | |
ref = $bindable(null), | |
class: className, | |
children, | |
...restProps | |
}: WithElementRef<HTMLAttributes<HTMLButtonElement>, HTMLButtonElement> = $props(); | |
const sidebar = useSidebar(); | |
</script> | |
<button | |
bind:this={ref} | |
data-sidebar="rail" | |
data-slot="sidebar-rail" | |
aria-label="Toggle Sidebar" | |
tabIndex={-1} | |
onclick={sidebar.toggle} | |
title="Toggle Sidebar" | |
class={cn( | |
"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", | |
"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", | |
"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", | |
"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", | |
"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", | |
"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", | |
className | |
)} | |
{...restProps} | |
> | |
{@render children?.()} | |
</button> | |