{"version":3,"sources":["../src/SideNavBar/SideNavBar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { SideNavButton, SideNavButtonIcon } from '../SideNavButton';\n\nexport type SideNavBarIcon = Exclude<SideNavButtonIcon, 'home'>;\n\nexport interface SideNavBarProps {\n  /**\n   * Whether the navigation panel is open (showing title and children)\n   * @default false\n   */\n  isOpen?: boolean;\n  /**\n   * Title displayed in the header when open (e.g., \"Attendance\")\n   */\n  title?: string;\n  /**\n   * Navigation items to display when open (typically SideNavItem components)\n   */\n  children?: React.ReactNode;\n  /**\n   * The currently selected/active icon (if any)\n   */\n  selectedIcon?: SideNavBarIcon;\n  /**\n   * Click handler for icon buttons - receives the icon type that was clicked\n   */\n  onIconClick?: (icon: SideNavBarIcon) => void;\n  /**\n   * Custom className for the container\n   */\n  className?: string;\n  /**\n   * Custom style for the container\n   */\n  style?: React.CSSProperties;\n}\n\n/**\n * SideNavBar component - Arbor Design System\n *\n * A vertical side navigation bar with fixed icon layout.\n * Icons are grouped with dividers:\n * - Top: Side menu\n * - Middle: Favourite, Notifications, Calendar\n * - Lower: Emergency alert\n * - Bottom (pushed down): Help\n *\n * When open, displays a content panel with a title header and navigation items.\n */\nexport const SideNavBar: React.FC<SideNavBarProps> = ({\n  isOpen = false,\n  title,\n  children,\n  selectedIcon,\n  onIconClick,\n  className,\n  style,\n}) => {\n  const wrapperStyles: React.CSSProperties = {\n    display: 'flex',\n    height: '100%',\n    ...style,\n  };\n\n  const iconBarStyles: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    justifyContent: 'space-between',\n    backgroundColor: '#ffffff',\n    padding: '8px',\n    borderTopLeftRadius: '8px',\n    borderBottomLeftRadius: '8px',\n    height: '100%',\n    width: '58px',\n    boxSizing: 'border-box',\n    flexShrink: 0,\n  };\n\n  const topSectionStyles: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    gap: '16px',\n  };\n\n  const dividerStyles: React.CSSProperties = {\n    width: '24.5px',\n    height: '1px',\n    backgroundColor: '#efefef',\n  };\n\n  const contentPanelStyles: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n    backgroundColor: '#ffffff',\n    borderLeft: '1px solid #f8f8f8',\n    height: '100%',\n    width: '232px',\n    boxSizing: 'border-box',\n    flexShrink: 0,\n    minWidth: 0,\n    minHeight: 0,\n  };\n\n  const headerStyles: React.CSSProperties = {\n    display: 'flex',\n    alignItems: 'center',\n    height: '62px',\n    paddingLeft: '20px',\n    paddingRight: '16px',\n    paddingTop: '4px',\n    paddingBottom: '4px',\n    borderBottom: '1px solid #f8f8f8',\n    boxSizing: 'border-box',\n    flexShrink: 0,\n  };\n\n  const titleStyles: React.CSSProperties = {\n    fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n    fontSize: '13px',\n    fontWeight: 600,\n    color: '#2f2f2f',\n    lineHeight: 1.5,\n  };\n\n  const navListStyles: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n    gap: '4px',\n    flex: 1,\n    minHeight: 0,\n    overflowX: 'hidden',\n    overflowY: 'auto',\n    padding: '8px',\n    boxSizing: 'border-box',\n  };\n\n  const handleClick = (icon: SideNavBarIcon) => {\n    onIconClick?.(icon);\n  };\n\n  return (\n    <div className={className} style={wrapperStyles}>\n      {/* Icon Bar */}\n      <div style={iconBarStyles}>\n        {/* Top section with icon groups */}\n        <div style={topSectionStyles}>\n          {/* Side menu */}\n          <SideNavButton\n            icon=\"side-menu\"\n            selected={selectedIcon === 'side-menu'}\n            onClick={() => handleClick('side-menu')}\n            aria-label=\"Side menu\"\n          />\n\n          {/* Divider */}\n          <div style={dividerStyles} />\n\n          {/* Main navigation group */}\n          <SideNavButton\n            icon=\"favourite\"\n            selected={selectedIcon === 'favourite'}\n            onClick={() => handleClick('favourite')}\n            aria-label=\"Favourites\"\n          />\n          <SideNavButton\n            icon=\"notifications\"\n            selected={selectedIcon === 'notifications'}\n            onClick={() => handleClick('notifications')}\n            aria-label=\"Notifications\"\n          />\n          <SideNavButton\n            icon=\"calendar\"\n            selected={selectedIcon === 'calendar'}\n            onClick={() => handleClick('calendar')}\n            aria-label=\"Calendar\"\n          />\n\n          {/* Divider */}\n          <div style={dividerStyles} />\n\n          {/* Emergency alert */}\n          <SideNavButton\n            icon=\"emergency-alert\"\n            selected={selectedIcon === 'emergency-alert'}\n            onClick={() => handleClick('emergency-alert')}\n            aria-label=\"Emergency alerts\"\n          />\n        </div>\n\n        {/* Bottom section - Help */}\n        <SideNavButton\n          icon=\"help\"\n          selected={selectedIcon === 'help'}\n          onClick={() => handleClick('help')}\n          aria-label=\"Help\"\n        />\n      </div>\n\n      {/* Content Panel (only shown when open) */}\n      {isOpen && (\n        <div style={contentPanelStyles}>\n          {/* Header with title */}\n          {title && (\n            <div style={headerStyles}>\n              <span style={titleStyles}>{title}</span>\n            </div>\n          )}\n\n          {/* Navigation list container */}\n          <div style={navListStyles}>\n            {children}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nSideNavBar.displayName = 'SideNavBar';\n"],"mappings":"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","names":[]}