{"version":3,"file":"sidebar-trigger.cjs","sources":["../../../components/sidebar/sidebar-trigger.tsx"],"sourcesContent":["'use client';\n\nimport { MouseEvent, ReactNode, useCallback } from 'react';\nimport { PanelLeftIcon } from '~/icons';\nimport { IconButton, IconButtonProps } from '../icon-button/icon-button';\nimport { useSidebar } from './sidebar-root';\n\nexport interface SidebarTriggerProps extends Omit<IconButtonProps, 'children'> {\n  /** Icon rendered inside the trigger.\n   * @default <PanelLeftIcon />\n   */\n  children?: ReactNode;\n}\n\nexport function SidebarTrigger({\n  onClick,\n  children,\n  'aria-label': ariaLabel,\n  disabled,\n  ...props\n}: SidebarTriggerProps) {\n  const { open, setOpen, collapsible, sidebarId } = useSidebar();\n\n  const handleClick = useCallback(\n    (event: MouseEvent<HTMLButtonElement>) => {\n      onClick?.(event);\n      if (!event.defaultPrevented) {\n        setOpen(!open);\n      }\n    },\n    [onClick, open, setOpen]\n  );\n\n  return (\n    <IconButton\n      onClick={handleClick}\n      disabled={collapsible === 'none' || disabled}\n      aria-label={ariaLabel ?? (open ? 'Collapse sidebar' : 'Expand sidebar')}\n      aria-expanded={open}\n      aria-controls={sidebarId}\n      data-slot='sidebar-trigger'\n      {...props}\n    >\n      {children ?? <PanelLeftIcon />}\n    </IconButton>\n  );\n}\n\nSidebarTrigger.displayName = 'Sidebar.Trigger';\n"],"names":[],"mappings":";;;;;;;;;;;AAqBE;AAEA;AAEI;AACA;AACE;;;;AAmBR;AAEA;;"}