{"version":3,"sources":["../src/components/Menu/Menu.tsx"],"sourcesContent":["import { create, StoreApi, useStore } from 'zustand';\nimport {\n  ReactNode,\n  useEffect,\n  useRef,\n  forwardRef,\n  HTMLAttributes,\n  KeyboardEvent,\n  MouseEvent,\n  ReactElement,\n  isValidElement,\n  Children,\n  cloneElement,\n  useState,\n} from 'react';\nimport { CaretLeftIcon } from '@phosphor-icons/react/dist/csr/CaretLeft';\nimport { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';\nimport { cn } from '../../utils/utils';\n\ntype MenuVariant =\n  | 'menu'\n  | 'menu2'\n  | 'menu-overflow'\n  | 'menu-overflow-col'\n  | 'breadcrumb';\n\ninterface MenuStore {\n  value: string;\n  /** User-initiated selection (e.g. a MenuItem click): fires `onValueChange`. */\n  setValue: (value: string) => void;\n  /**\n   * Syncs the controlled `value`/`defaultValue` prop into the store WITHOUT\n   * firing `onValueChange`. A prop change is not a user selection, so it must\n   * not dispatch a click — otherwise a route-driven `value` change would\n   * trigger navigation (e.g. bouncing `/atividades/detalhes/:id` back to\n   * `/atividades`).\n   */\n  syncValue: (value: string) => void;\n  onValueChange?: (value: string) => void;\n}\n\ntype MenuStoreApi = StoreApi<MenuStore>;\n\nconst createMenuStore = (\n  onValueChange?: (value: string) => void\n): MenuStoreApi =>\n  create<MenuStore>((set) => ({\n    value: '',\n    setValue: (value) => {\n      set({ value });\n      onValueChange?.(value);\n    },\n    syncValue: (value) =>\n      set((state) => (state.value === value ? state : { value })),\n    onValueChange,\n  }));\n\nexport const useMenuStore = (externalStore?: MenuStoreApi) => {\n  if (!externalStore) throw new Error('MenuItem must be inside Menu');\n  return externalStore;\n};\n\ninterface MenuProps extends HTMLAttributes<HTMLDivElement> {\n  children: ReactNode;\n  defaultValue: string;\n  value?: string;\n  variant?: MenuVariant;\n  onValueChange?: (value: string) => void;\n}\n\nconst VARIANT_CLASSES = {\n  menu: 'bg-background shadow-soft-shadow-1 px-6',\n  menu2: '',\n  'menu-overflow': '',\n  'menu-overflow-col': 'bg-background shadow-soft-shadow-1',\n  breadcrumb: 'bg-transparent shadow-none !px-0',\n};\n\nconst BASE_CLASSES_BY_VARIANT: Record<MenuVariant, string> = {\n  menu: 'w-full py-2 flex flex-row items-center justify-center',\n  menu2: 'w-full py-2 flex flex-row items-center justify-center',\n  'menu-overflow': 'w-fit py-2 flex flex-row items-center justify-center',\n  'menu-overflow-col': 'w-full py-2 flex flex-row items-center justify-start',\n  breadcrumb: 'w-full py-2 flex flex-row items-center justify-center',\n};\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n  (\n    {\n      className,\n      children,\n      defaultValue,\n      value: propValue,\n      variant = 'menu',\n      onValueChange,\n      ...props\n    },\n    ref\n  ) => {\n    const storeRef = useRef<MenuStoreApi>(null);\n    storeRef.current ??= createMenuStore(onValueChange);\n    const store = storeRef.current;\n    const { syncValue } = useStore(store, (s) => s);\n\n    // Sync the controlled/default value into the store WITHOUT firing\n    // onValueChange — a prop change is not a user click.\n    useEffect(() => {\n      syncValue(propValue ?? defaultValue);\n    }, [defaultValue, propValue, syncValue]);\n\n    const baseClasses = BASE_CLASSES_BY_VARIANT[variant];\n    const variantClasses = VARIANT_CLASSES[variant];\n\n    return (\n      <div\n        ref={ref}\n        className={`\n          ${baseClasses}\n          ${variantClasses}\n          ${className ?? ''}\n        `}\n        {...props}\n      >\n        {injectStore(children, store)}\n      </div>\n    );\n  }\n);\nMenu.displayName = 'Menu';\n\ninterface MenuContentProps extends HTMLAttributes<HTMLUListElement> {\n  children: ReactNode;\n  variant?: MenuVariant;\n}\n\nconst MenuContent = forwardRef<HTMLUListElement, MenuContentProps>(\n  ({ className, children, variant = 'menu', ...props }, ref) => {\n    const baseClasses = 'w-full flex flex-row items-center gap-2';\n\n    const isOverflowVariant =\n      variant === 'menu2' ||\n      variant === 'menu-overflow' ||\n      variant === 'menu-overflow-col';\n    const variantClasses = isOverflowVariant\n      ? 'overflow-x-auto scroll-smooth'\n      : '';\n\n    return (\n      <ul\n        ref={ref}\n        className={`\n          ${baseClasses}\n          ${variantClasses}\n          ${variant == 'breadcrumb' ? 'flex-wrap' : ''}\n          ${className ?? ''}\n        `}\n        style={\n          isOverflowVariant\n            ? { scrollbarWidth: 'none', msOverflowStyle: 'none' }\n            : undefined\n        }\n        {...props}\n      >\n        {children}\n      </ul>\n    );\n  }\n);\nMenuContent.displayName = 'MenuContent';\n\ninterface MenuItemProps extends HTMLAttributes<HTMLLIElement> {\n  value: string;\n  disabled?: boolean;\n  store?: MenuStoreApi;\n  variant?: MenuVariant;\n  separator?: boolean;\n}\n\nconst MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n  (\n    {\n      className,\n      children,\n      value,\n      disabled = false,\n      store: externalStore,\n      variant = 'menu',\n      separator = false,\n      ...props\n    },\n    ref\n  ) => {\n    const store = useMenuStore(externalStore);\n    const { value: selectedValue, setValue } = useStore(store, (s) => s);\n\n    const handleClick = (\n      e: MouseEvent<HTMLLIElement> | KeyboardEvent<HTMLLIElement>\n    ) => {\n      if (!disabled) {\n        setValue(value);\n      }\n      props.onClick?.(e as MouseEvent<HTMLLIElement>);\n    };\n\n    const commonProps = {\n      role: 'menuitem',\n      'aria-disabled': disabled,\n      ref,\n      onClick: handleClick,\n      onKeyDown: (e: KeyboardEvent<HTMLLIElement>) => {\n        if (['Enter', ' '].includes(e.key)) handleClick(e);\n      },\n      tabIndex: disabled ? -1 : 0,\n      onMouseDown: (e: MouseEvent<HTMLLIElement>) => {\n        e.preventDefault();\n      },\n      ...props,\n    };\n\n    const variants: Record<string, ReactNode> = {\n      menu: (\n        <li\n          data-variant=\"menu\"\n          className={`\n            w-full flex flex-col items-center justify-center gap-0.5 py-1 px-2 rounded-sm font-medium text-xs\n            [&>svg]:size-6 cursor-pointer hover:bg-primary-600 hover:text-text\n            focus:outline-none focus:border-indicator-info focus:border-2\n            ${selectedValue === value ? 'bg-primary-50 text-primary-950' : 'text-text-950'}\n            ${className ?? ''}\n          `}\n          {...commonProps}\n        >\n          {children}\n        </li>\n      ),\n      menu2: (\n        <li\n          data-variant=\"menu2\"\n          className={`\n            w-full flex flex-col items-center px-2 pt-4 gap-3 cursor-pointer focus:rounded-sm justify-center hover:bg-background-100 rounded-lg\n            focus:outline-none focus:border-indicator-info focus:border-2\n            ${selectedValue === value ? '' : 'pb-4'}\n          `}\n          {...commonProps}\n        >\n          <span\n            className={cn(\n              'flex flex-row items-center gap-2 px-4 text-text-950 text-xs font-bold',\n              className\n            )}\n          >\n            {children}\n          </span>\n          {selectedValue === value && (\n            <div className=\"h-1 w-full bg-primary-950 rounded-lg\" />\n          )}\n        </li>\n      ),\n      'menu-overflow': (\n        <li\n          data-variant=\"menu-overflow\"\n          className={`\n            w-fit flex flex-col items-center px-2 pt-4 gap-3 cursor-pointer focus:rounded-sm justify-center hover:bg-background-100 rounded-lg\n            focus:outline-none focus:border-indicator-info focus:border-2\n            ${selectedValue === value ? '' : 'pb-4'}\n          `}\n          {...commonProps}\n        >\n          <span\n            className={cn(\n              'flex flex-row items-center gap-2 px-4 text-text-950 text-xs font-bold',\n              className\n            )}\n          >\n            {children}\n          </span>\n          {selectedValue === value && (\n            <div className=\"h-1 w-full bg-primary-950 rounded-lg\" />\n          )}\n        </li>\n      ),\n      'menu-overflow-col': (\n        <li\n          data-variant=\"menu-overflow-col\"\n          className={cn(\n            'flex-1 min-w-fit flex flex-col items-center justify-center gap-0.5 py-1 px-2 rounded-sm font-medium text-xs whitespace-nowrap [&>svg]:size-6 cursor-pointer hover:bg-primary-600 hover:text-text focus:outline-none focus:border-indicator-info focus:border-2',\n            selectedValue === value\n              ? 'bg-primary-50 text-primary-950'\n              : 'text-text-950',\n            className\n          )}\n          {...commonProps}\n        >\n          {children}\n        </li>\n      ),\n      breadcrumb: (\n        <li\n          data-variant=\"breadcrumb\"\n          className={`\n            flex flex-row gap-2 items-center w-fit p-2 rounded-lg hover:text-primary-600 cursor-pointer font-bold text-xs\n            focus:outline-none focus:border-indicator-info focus:border-2\n            ${selectedValue === value ? 'text-text-950' : 'text-text-600'}\n            ${className ?? ''}\n          `}\n          {...commonProps}\n        >\n          <span\n            className={cn(\n              'border-b border-text-600 hover:border-primary-600 text-inherit text-xs',\n              selectedValue === value\n                ? 'border-b-0 font-bold'\n                : 'border-b-text-600'\n            )}\n          >\n            {children}\n          </span>\n\n          {separator && (\n            <CaretRightIcon\n              size={16}\n              className=\"text-text-600\"\n              data-testid=\"separator\"\n            />\n          )}\n        </li>\n      ),\n    };\n\n    return variants[variant] ?? variants['menu'];\n  }\n);\nMenuItem.displayName = 'MenuItem';\n\nconst MenuItemIcon = ({\n  className,\n  icon,\n  ...props\n}: HTMLAttributes<HTMLSpanElement> & { icon: ReactNode }) => (\n  <span\n    className={cn(\n      'bg-background-500 w-[21px] h-[21px] flex items-center justify-center [&>svg]:w-[17px] [&>svg]:h-[17px] rounded-sm',\n      className\n    )}\n    {...props}\n  >\n    {icon}\n  </span>\n);\n\nexport const internalScroll = (\n  container: HTMLUListElement | null,\n  direction: 'left' | 'right'\n) => {\n  if (!container) return;\n  container.scrollBy({\n    left: direction === 'left' ? -150 : 150,\n    behavior: 'smooth',\n  });\n};\n\nexport const internalCheckScroll = (\n  container: HTMLUListElement | null,\n  setShowLeftArrow: (v: boolean) => void,\n  setShowRightArrow: (v: boolean) => void\n) => {\n  if (!container) return;\n  const { scrollLeft, scrollWidth, clientWidth } = container;\n  setShowLeftArrow(scrollLeft > 0);\n  setShowRightArrow(scrollLeft + clientWidth < scrollWidth);\n};\n\ninterface MenuOverflowProps extends HTMLAttributes<HTMLDivElement> {\n  children: ReactNode;\n  defaultValue: string;\n  value?: string;\n  onValueChange?: (value: string) => void;\n}\n\nconst MenuOverflow = ({\n  children,\n  className,\n  defaultValue,\n  value,\n  onValueChange,\n  ...props\n}: MenuOverflowProps) => {\n  const containerRef = useRef<HTMLUListElement>(null);\n  const [showLeftArrow, setShowLeftArrow] = useState(false);\n  const [showRightArrow, setShowRightArrow] = useState(false);\n\n  useEffect(() => {\n    const checkScroll = () =>\n      internalCheckScroll(\n        containerRef.current,\n        setShowLeftArrow,\n        setShowRightArrow\n      );\n    checkScroll();\n    const container = containerRef.current;\n    container?.addEventListener('scroll', checkScroll);\n    window.addEventListener('resize', checkScroll);\n\n    // Use MutationObserver to detect when children are added/removed\n    let mutationObserver: MutationObserver | null = null;\n    if (container) {\n      mutationObserver = new MutationObserver(checkScroll);\n      mutationObserver.observe(container, { childList: true, subtree: true });\n    }\n\n    return () => {\n      container?.removeEventListener('scroll', checkScroll);\n      window.removeEventListener('resize', checkScroll);\n      mutationObserver?.disconnect();\n    };\n  }, []);\n\n  return (\n    <div\n      data-testid=\"menu-overflow-wrapper\"\n      className={cn('relative w-full overflow-hidden', className)}\n    >\n      {showLeftArrow && (\n        <button\n          onClick={() => internalScroll(containerRef.current, 'left')}\n          className=\"absolute left-0 top-1/2 -translate-y-1/2 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white shadow-md cursor-pointer\"\n          data-testid=\"scroll-left-button\"\n        >\n          <CaretLeftIcon size={16} />\n          <span className=\"sr-only\">Scroll left</span>\n        </button>\n      )}\n\n      <Menu\n        defaultValue={defaultValue}\n        onValueChange={onValueChange}\n        value={value}\n        variant=\"menu2\"\n        {...props}\n      >\n        <MenuContent ref={containerRef} variant=\"menu2\">\n          {children}\n        </MenuContent>\n      </Menu>\n\n      {showRightArrow && (\n        <button\n          onClick={() => internalScroll(containerRef.current, 'right')}\n          className=\"absolute right-0 top-1/2 -translate-y-1/2 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white shadow-md cursor-pointer\"\n          data-testid=\"scroll-right-button\"\n        >\n          <CaretRightIcon size={16} />\n          <span className=\"sr-only\">Scroll right</span>\n        </button>\n      )}\n    </div>\n  );\n};\n\nconst injectStore = (children: ReactNode, store: MenuStoreApi): ReactNode =>\n  Children.map(children, (child) => {\n    if (!isValidElement(child)) return child;\n    /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n    const typedChild = child as ReactElement<any>;\n    const shouldInject = typedChild.type === MenuItem;\n    return cloneElement(typedChild, {\n      ...(shouldInject ? { store } : {}),\n      ...(typedChild.props.children\n        ? { children: injectStore(typedChild.props.children, store) }\n        : {}),\n    });\n  });\n\nexport default Menu;\nexport { Menu, MenuContent, MenuItem, MenuOverflow, MenuItemIcon };\n"],"mappings":"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","names":[]}