{"version":3,"sources":["../../../src/components/base/utils.ts","../../../src/components/dropdown/UnifiedDropdown.tsx"],"names":["UnifiedDropdown"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n  return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n  return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n  if (typeof node === 'string') return node.trim().length > 0;\n  return hasRenderableNode(node);\n}\n","import * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Check, ChevronDown, Circle, Search } from 'lucide-react';\nimport {\n  forwardRef,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type KeyboardEvent,\n} from 'react';\n\nimport { cn } from '../base/utils';\nimport type {\n  UnifiedDropdownMode,\n  UnifiedDropdownGroup,\n  UnifiedDropdownOption,\n  UnifiedDropdownPlacement,\n  UnifiedDropdownProps,\n  UnifiedDropdownValue,\n} from './types';\n\nconst placementMap: Record<\n  UnifiedDropdownPlacement,\n  { side: 'top' | 'bottom'; align: 'start' | 'end' }\n> = {\n  'bottom-start': { side: 'bottom', align: 'start' },\n  'bottom-end': { side: 'bottom', align: 'end' },\n  'top-start': { side: 'top', align: 'start' },\n  'top-end': { side: 'top', align: 'end' },\n};\n\nfunction flattenOptions(\n  options: readonly UnifiedDropdownOption[],\n  depth = 0,\n): Array<UnifiedDropdownOption & { depth: number }> {\n  return options.flatMap((option) => [\n    { ...option, depth },\n    ...(option.children ? flattenOptions(option.children, depth + 1) : []),\n  ]);\n}\n\nfunction validateOptions(options: readonly UnifiedDropdownOption[]) {\n  const values = new Set<string>();\n  flattenOptions(options).forEach((option) => {\n    if (!option || typeof option !== 'object') {\n      throw new TypeError('UnifiedDropdown options must contain objects.');\n    }\n    if (typeof option.value !== 'string' || !option.value.trim()) {\n      throw new TypeError('UnifiedDropdown option value must be a non-empty string.');\n    }\n    if (values.has(option.value)) {\n      throw new TypeError(`UnifiedDropdown option value \"${option.value}\" must be unique.`);\n    }\n    values.add(option.value);\n  });\n}\n\nfunction normalizeValues(value: UnifiedDropdownValue | undefined) {\n  const values = Array.isArray(value) ? value : value === undefined ? [] : [value];\n  return [...new Set(values.filter((item): item is string => typeof item === 'string'))];\n}\n\nfunction getOptionText(option: UnifiedDropdownOption) {\n  if (option.textValue) return option.textValue;\n  return typeof option.label === 'string' ? option.label : option.value;\n}\n\nfunction isMultiMode(mode: UnifiedDropdownMode) {\n  return mode === 'multi' || mode === 'checkbox';\n}\n\nfunction matchesSearch(option: UnifiedDropdownOption, query: string) {\n  return getOptionText(option).toLocaleLowerCase().includes(query.toLocaleLowerCase());\n}\n\nfunction validateValueShape(\n  mode: UnifiedDropdownMode,\n  value: UnifiedDropdownValue | undefined,\n  name: 'value' | 'defaultValue',\n) {\n  if (value === undefined) return;\n  if (isMultiMode(mode) ? !Array.isArray(value) : typeof value !== 'string') {\n    throw new TypeError(\n      `UnifiedDropdown ${name} must be ${isMultiMode(mode) ? 'a string array' : 'a string'} in ${mode} mode.`,\n    );\n  }\n}\n\nexport const UnifiedDropdown = forwardRef<HTMLDivElement, UnifiedDropdownProps>(\n  function UnifiedDropdown(\n    {\n      mode,\n      options = [],\n      groups = [],\n      value,\n      defaultValue,\n      placeholder = 'Select…',\n      trigger,\n      triggerLabel,\n      searchPlaceholder = 'Search…',\n      emptyLabel = 'No options',\n      loadingLabel = 'Loading…',\n      clearLabel = 'Clear selection',\n      retryLabel = 'Retry',\n      loading = false,\n      error,\n      searchable = mode === 'searchable',\n      clearable = false,\n      maxSelections,\n      disabled = false,\n      invalid = false,\n      open: controlledOpen,\n      defaultOpen = false,\n      placement = 'bottom-start',\n      closeOnSelect = mode !== 'multi' && mode !== 'checkbox',\n      portal = true,\n      size = 'default',\n      width = 'trigger',\n      appearance,\n      className,\n      classNames,\n      slots,\n      style,\n      onOpenChange,\n      onValueChange,\n      onSelect,\n      onAction,\n      onClear,\n      onRetry,\n      ...rootProps\n    },\n    ref,\n  ) {\n    if (!['single', 'multi', 'searchable', 'radio', 'checkbox', 'tree', 'action'].includes(mode)) {\n      throw new TypeError(`UnifiedDropdown mode \"${String(mode)}\" is not supported.`);\n    }\n    const groupedOptions = useMemo(\n      () => groups.reduce<UnifiedDropdownOption[]>((result, group: UnifiedDropdownGroup) => {\n        const groupName = typeof group.label === 'string' ? group.label : group.value;\n        result.push(...group.options.map((option) => ({ ...option, group: option.group ?? groupName })));\n        return result;\n      }, [...options]),\n      [groups, options],\n    );\n    validateOptions(groupedOptions);\n    if (maxSelections !== undefined && (!Number.isFinite(maxSelections) || maxSelections < 0)) {\n      throw new TypeError('UnifiedDropdown maxSelections must be a non-negative finite number.');\n    }\n    if (mode === 'action' && (value !== undefined || defaultValue !== undefined)) {\n      throw new TypeError('UnifiedDropdown action mode does not accept a value.');\n    }\n    if (mode !== 'action') {\n      validateValueShape(mode, value, 'value');\n      validateValueShape(mode, defaultValue, 'defaultValue');\n    }\n\n    const id = useId();\n    const triggerId = `${id}-trigger`;\n    const listId = `${id}-listbox`;\n    const searchId = `${id}-search`;\n    const triggerRef = useRef<HTMLButtonElement | null>(null);\n    const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n    const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n    const [uncontrolledValue, setUncontrolledValue] = useState<UnifiedDropdownValue>(\n      defaultValue ?? (isMultiMode(mode) ? [] : ''),\n    );\n    const [query, setQuery] = useState('');\n    const [activeIndex, setActiveIndex] = useState(0);\n    const isControlled = controlledOpen !== undefined;\n    const open = isControlled ? controlledOpen : uncontrolledOpen;\n    const selectedValues = normalizeValues(value ?? uncontrolledValue);\n    const flattened = useMemo(() => flattenOptions(groupedOptions), [groupedOptions]);\n    const visibleOptions = useMemo(\n      () => (searchable ? flattened.filter((option) => matchesSearch(option, query)) : flattened),\n      [flattened, query, searchable],\n    );\n    const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n    const selectedOptions = flattened.filter((option) => selectedSet.has(option.value));\n    const selectedLabel = selectedOptions.map(getOptionText).join(', ');\n    const resolvedTriggerLabel = triggerLabel ?? (selectedLabel || placeholder);\n    const isPlaceholder = selectedOptions.length === 0 && !triggerLabel;\n    const { side, align } = placementMap[placement];\n    const isMenu = mode === 'action';\n    const usesCheckedMenu = mode === 'radio' || mode === 'checkbox';\n    const contentRole = isMenu || usesCheckedMenu ? 'menu' : 'listbox';\n\n    useEffect(() => {\n      if (open) setActiveIndex(0);\n    }, [open, query]);\n\n    const setOpen = (nextOpen: boolean) => {\n      if (disabled) return;\n      if (!isControlled) setUncontrolledOpen(nextOpen);\n      onOpenChange?.(nextOpen);\n    };\n\n    const commitValue = (nextValue: UnifiedDropdownValue) => {\n      if (value === undefined) setUncontrolledValue(nextValue);\n      onValueChange?.(nextValue);\n    };\n\n    const selectOption = (option: UnifiedDropdownOption) => {\n      if (disabled || option.disabled) return;\n      onSelect?.(option);\n      if (mode === 'action') {\n        if (closeOnSelect) setOpen(false);\n        if (onAction) queueMicrotask(() => onAction(option));\n        return;\n      }\n      if (isMultiMode(mode)) {\n        const nextValues = selectedSet.has(option.value)\n          ? selectedValues.filter((item) => item !== option.value)\n          : maxSelections !== undefined && selectedValues.length >= maxSelections\n            ? selectedValues\n            : [...selectedValues, option.value];\n        commitValue(nextValues);\n      } else {\n        commitValue(option.value);\n      }\n      if (closeOnSelect && !isMultiMode(mode)) setOpen(false);\n    };\n\n    const handleTriggerKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n      if (disabled) return;\n      if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n        event.preventDefault();\n        if (!open) setOpen(true);\n        const direction = event.key === 'ArrowDown' ? 1 : -1;\n        setActiveIndex((index) => Math.max(0, Math.min(visibleOptions.length - 1, index + direction)));\n      }\n    };\n\n    const handleContentKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n        event.preventDefault();\n        const direction = event.key === 'ArrowDown' ? 1 : -1;\n        setActiveIndex((index) => {\n          const next = index + direction;\n          return Math.max(0, Math.min(visibleOptions.length - 1, next));\n        });\n      }\n      if (event.key === 'Enter' && visibleOptions[activeIndex]) {\n        event.preventDefault();\n        selectOption(visibleOptions[activeIndex]!);\n      }\n    };\n\n    useEffect(() => {\n      if (!open) return;\n      itemRefs.current[activeIndex]?.scrollIntoView({ block: 'nearest' });\n    }, [activeIndex, open]);\n\n    const clearSelection = () => {\n      commitValue(isMultiMode(mode) ? [] : '');\n      onClear?.();\n    };\n\n    return (\n      <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n        <div\n          {...rootProps}\n          ref={ref}\n          className={cn('relative inline-flex min-w-0', className)}\n          style={style}\n          data-monkeys-component=\"unified-dropdown\"\n          data-mode={mode}\n          data-state={open ? 'open' : 'closed'}\n          data-invalid={invalid || undefined}\n          data-disabled={disabled || undefined}\n          data-appearance-preset={appearance?.preset}\n          data-appearance-variant={appearance?.variant}\n          data-appearance-density={appearance?.density}\n          data-appearance-radius={appearance?.radius}\n        >\n          <PopoverPrimitive.Trigger asChild>\n            <button\n              ref={triggerRef}\n              id={triggerId}\n              type=\"button\"\n              disabled={disabled}\n              aria-expanded={open}\n              aria-haspopup={isMenu || usesCheckedMenu ? 'menu' : 'listbox'}\n              aria-controls={open ? listId : undefined}\n              aria-invalid={invalid || undefined}\n              onKeyDown={handleTriggerKeyDown}\n              className={cn(\n                'flex min-w-0 items-center justify-between gap-2 rounded-md border border-input bg-control-surface px-3 text-left text-sm text-foreground shadow-sm outline-none transition-colors',\n                'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-control-surface',\n                'disabled:cursor-not-allowed disabled:opacity-50',\n                size === 'sm' ? 'h-8 py-1 text-xs' : 'h-10 py-2',\n                invalid && 'border-destructive focus-visible:ring-destructive',\n                width === 'responsive' && 'w-full sm:w-auto',\n                classNames?.trigger,\n              )}\n            >\n              {trigger ? <span className=\"min-w-0 shrink-0\">{trigger}</span> : null}\n              <span className={cn('min-w-0 flex-1 truncate', isPlaceholder && 'text-muted-foreground')}>\n                {resolvedTriggerLabel}\n              </span>\n              <ChevronDown aria-hidden=\"true\" className=\"h-4 w-4 shrink-0 opacity-60\" />\n            </button>\n          </PopoverPrimitive.Trigger>\n          {(() => {\n            const content = (\n              <PopoverPrimitive.Content\n              id={listId}\n              side={side}\n              align={align}\n              sideOffset={6}\n              collisionPadding={8}\n              avoidCollisions\n              onKeyDown={handleContentKeyDown}\n              onOpenAutoFocus={(event) => {\n                event.preventDefault();\n                const target = searchable\n                  ? document.getElementById(searchId)\n                  : itemRefs.current[0];\n                target?.focus();\n              }}\n              tabIndex={-1}\n              className={cn(\n                'z-50 max-h-[min(24rem,calc(100vh-1rem))] max-w-[calc(100vw-1rem)] overflow-y-auto rounded-md border bg-menu-surface p-1 text-popover-foreground shadow-md outline-none',\n                width === 'trigger' && 'w-[var(--radix-popover-trigger-width)] min-w-[12rem]',\n                width === 'content' && 'min-w-[12rem] max-w-[min(32rem,calc(100vw-1rem))]',\n                width === 'responsive' && 'w-[min(var(--radix-popover-trigger-width),calc(100vw-1rem))] min-w-[12rem]',\n                classNames?.content,\n              )}\n              >\n              {searchable ? (\n                <div className=\"relative mb-1\">\n                  <Search aria-hidden=\"true\" className=\"pointer-events-none absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n                  <input\n                    id={searchId}\n                    value={query}\n                    onChange={(event) => setQuery(event.target.value)}\n                    placeholder={searchPlaceholder}\n                    aria-label={searchPlaceholder}\n                    className={cn('h-9 w-full rounded-sm border-0 bg-transparent pl-8 pr-2 text-sm outline-none ring-0 placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring', classNames?.search)}\n                  />\n                </div>\n              ) : null}\n              {clearable && selectedOptions.length > 0 ? (\n                <button type=\"button\" className=\"mb-1 w-full rounded-sm px-2 py-1 text-left text-xs text-muted-foreground hover:bg-accent\" onClick={clearSelection}>\n                  {clearLabel}\n                </button>\n              ) : null}\n              {loading && visibleOptions.length === 0 ? (\n                slots?.loading ? slots.loading() : <div role=\"status\" className={cn('px-2 py-6 text-center text-sm text-muted-foreground', classNames?.empty)}>{loadingLabel}</div>\n              ) : error && visibleOptions.length === 0 ? (\n                slots?.error ? slots.error() : <div role=\"alert\" className={cn('px-2 py-6 text-center text-sm text-destructive-text', classNames?.empty)}>{error}{onRetry ? <button type=\"button\" className=\"mt-2 block w-full text-center text-foreground underline\" onClick={onRetry}>{retryLabel}</button> : null}</div>\n              ) : visibleOptions.length === 0 ? (\n                slots?.empty ? slots.empty() : <div role=\"status\" className={cn('px-2 py-6 text-center text-sm text-muted-foreground', classNames?.empty)}>{emptyLabel}</div>\n              ) : (\n                <div role={mode === 'tree' ? 'tree' : contentRole} aria-multiselectable={mode === 'multi' || undefined}>\n                  {visibleOptions.map((option, index) => {\n                    const selected = selectedSet.has(option.value);\n                    const indicator = mode === 'radio' ? <Circle aria-hidden=\"true\" className={cn('h-3.5 w-3.5', selected && 'fill-current')} /> : <Check aria-hidden=\"true\" className=\"h-4 w-4\" />;\n                    return (\n                      <div key={option.value}>\n                        {option.group && (index === 0 || visibleOptions[index - 1]?.group !== option.group) ? (\n                          <div role=\"presentation\" className={cn('px-2 pb-1 pt-2 text-xs font-medium text-muted-foreground', classNames?.groupLabel)}>{option.group}</div>\n                        ) : null}\n                        <button\n                          ref={(node) => { itemRefs.current[index] = node; }}\n                          type=\"button\"\n                          role={mode === 'tree' ? 'treeitem' : mode === 'radio' ? 'menuitemradio' : mode === 'checkbox' ? 'menuitemcheckbox' : isMenu ? 'menuitem' : 'option'}\n                          aria-level={mode === 'tree' ? option.depth + 1 : undefined}\n                          aria-selected={!isMenu && !usesCheckedMenu ? selected : undefined}\n                          aria-checked={usesCheckedMenu ? selected : undefined}\n                          disabled={option.disabled}\n                          data-highlighted={index === activeIndex || undefined}\n                          data-state={selected ? 'checked' : 'unchecked'}\n                          onMouseEnter={() => setActiveIndex(index)}\n                          onClick={() => selectOption(option)}\n                          className={cn(\n                            'relative flex min-h-9 w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors',\n                            'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n                            'disabled:pointer-events-none disabled:opacity-50',\n                            index === activeIndex && 'bg-accent text-accent-foreground',\n                            selected && 'font-medium',\n                            option.danger && 'text-destructive-text',\n                            mode !== 'action' && 'pl-8',\n                            classNames?.item,\n                          )}\n                          style={mode === 'tree' ? { paddingInlineStart: `${8 + option.depth * 16}px` } : undefined}\n                        >\n                          {mode !== 'action' ? <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">{selected ? indicator : null}</span> : null}\n                          {slots?.option ? slots.option({ option, selected, highlighted: index === activeIndex }) : <>\n                            {option.icon ? <span className=\"shrink-0\">{option.icon}</span> : null}\n                            <span className={cn('min-w-0 flex-1 truncate', classNames?.itemLabel)}>{option.label}</span>\n                            {option.description ? <span className={cn('max-w-[45%] truncate text-xs text-muted-foreground', classNames?.itemDescription)}>{option.description}</span> : null}\n                          </>}\n                        </button>\n                      </div>\n                    );\n                  })}\n                </div>\n              )}\n              {error && visibleOptions.length > 0 ? <div role=\"status\" className=\"px-2 py-1 text-xs text-destructive-text\">{error}</div> : null}\n              {loading && visibleOptions.length > 0 ? <div role=\"status\" className=\"px-2 py-1 text-xs text-muted-foreground\">{loadingLabel}</div> : null}\n              {slots?.footer ? slots.footer() : null}\n              </PopoverPrimitive.Content>\n            );\n            return portal ? <PopoverPrimitive.Portal>{content}</PopoverPrimitive.Portal> : content;\n          })()}\n        </div>\n      </PopoverPrimitive.Root>\n    );\n  },\n);\n"]}