@mattermost/compass-ui 0.1.0-alpha.21 → 0.1.0-alpha.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/components/combobox/Combobox.cjs +1 -1
  2. package/dist/components/combobox/Combobox.cjs.map +1 -1
  3. package/dist/components/combobox/Combobox.css +1 -1
  4. package/dist/components/combobox/Combobox.d.ts +43 -3
  5. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  6. package/dist/components/combobox/Combobox.js +298 -283
  7. package/dist/components/combobox/Combobox.js.map +1 -1
  8. package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
  9. package/dist/components/combobox/Combobox.module.scss.js +25 -25
  10. package/dist/components/combobox/index.d.ts +1 -1
  11. package/dist/components/combobox/index.d.ts.map +1 -1
  12. package/dist/components/dropdown/Dropdown.css +1 -1
  13. package/dist/components/dropdown/Dropdown.module.scss.cjs +1 -1
  14. package/dist/components/dropdown/Dropdown.module.scss.js +14 -14
  15. package/dist/components/global-banner/GlobalBanner.css +1 -1
  16. package/dist/components/global-banner/GlobalBanner.module.scss.cjs +1 -1
  17. package/dist/components/global-banner/GlobalBanner.module.scss.js +10 -10
  18. package/dist/components/modal/Modal.cjs +1 -1
  19. package/dist/components/modal/Modal.cjs.map +1 -1
  20. package/dist/components/modal/Modal.d.ts.map +1 -1
  21. package/dist/components/modal/Modal.js +91 -93
  22. package/dist/components/modal/Modal.js.map +1 -1
  23. package/dist/components/modal/ModalOverlay.cjs +2 -0
  24. package/dist/components/modal/ModalOverlay.cjs.map +1 -0
  25. package/dist/components/modal/ModalOverlay.css +1 -1
  26. package/dist/components/modal/ModalOverlay.d.ts +43 -0
  27. package/dist/components/modal/ModalOverlay.d.ts.map +1 -0
  28. package/dist/components/modal/ModalOverlay.js +59 -0
  29. package/dist/components/modal/ModalOverlay.js.map +1 -0
  30. package/dist/components/modal/ModalOverlay.module.scss.cjs +1 -1
  31. package/dist/components/modal/ModalOverlay.module.scss.js +3 -3
  32. package/dist/components/modal/index.cjs +1 -1
  33. package/dist/components/modal/index.d.ts +2 -0
  34. package/dist/components/modal/index.d.ts.map +1 -1
  35. package/dist/components/modal/index.js +4 -2
  36. package/dist/components/modal/index.js.map +1 -1
  37. package/dist/components/password-input/PasswordInput.css +1 -1
  38. package/dist/components/password-input/PasswordInput.module.scss.cjs +1 -1
  39. package/dist/components/password-input/PasswordInput.module.scss.js +12 -12
  40. package/dist/components/progress-bar/ProgressBar.cjs +1 -1
  41. package/dist/components/progress-bar/ProgressBar.cjs.map +1 -1
  42. package/dist/components/progress-bar/ProgressBar.d.ts +10 -2
  43. package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -1
  44. package/dist/components/progress-bar/ProgressBar.js +31 -21
  45. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  46. package/dist/components/search-input/SearchInput.css +1 -1
  47. package/dist/components/search-input/SearchInput.module.scss.cjs +1 -1
  48. package/dist/components/search-input/SearchInput.module.scss.js +15 -15
  49. package/dist/components/text-area/TextArea.css +1 -1
  50. package/dist/components/text-area/TextArea.module.scss.cjs +1 -1
  51. package/dist/components/text-area/TextArea.module.scss.js +12 -12
  52. package/dist/components/text-input/TextInput.css +1 -1
  53. package/dist/components/text-input/TextInput.module.scss.cjs +1 -1
  54. package/dist/components/text-input/TextInput.module.scss.js +19 -19
  55. package/dist/components/thread-footer/ThreadFooter.css +1 -1
  56. package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
  57. package/dist/components/thread-footer/ThreadFooter.module.scss.js +18 -18
  58. package/dist/components/toast/Toast.css +1 -1
  59. package/dist/components/toast/Toast.module.scss.cjs +1 -1
  60. package/dist/components/toast/Toast.module.scss.js +10 -10
  61. package/dist/components/tour-point/TourPoint.css +1 -1
  62. package/dist/components/tour-point/TourPoint.module.scss.cjs +1 -1
  63. package/dist/components/tour-point/TourPoint.module.scss.js +28 -28
  64. package/dist/index.cjs +1 -1
  65. package/dist/index.js +97 -95
  66. package/dist/index.js.map +1 -1
  67. package/dist/utils/scrollLock.cjs +2 -0
  68. package/dist/utils/scrollLock.cjs.map +1 -0
  69. package/dist/utils/scrollLock.d.ts +9 -0
  70. package/dist/utils/scrollLock.d.ts.map +1 -0
  71. package/dist/utils/scrollLock.js +38 -0
  72. package/dist/utils/scrollLock.js.map +1 -0
  73. package/dist/utils/useOnExited.cjs +2 -0
  74. package/dist/utils/useOnExited.cjs.map +1 -0
  75. package/dist/utils/useOnExited.d.ts +7 -0
  76. package/dist/utils/useOnExited.d.ts.map +1 -0
  77. package/dist/utils/useOnExited.js +14 -0
  78. package/dist/utils/useOnExited.js.map +1 -0
  79. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sources":["../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from 'react';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport CloseCircleIcon from '@mattermost/compass-icons/components/close-circle';\nimport PlusIcon from '@mattermost/compass-icons/components/plus';\nimport Chip from '@/components/chip/Chip';\nimport ChipGroup from '@/components/chip/ChipGroup';\nimport type { ChipSize } from '@/components/chip/Chip';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport MenuItem from '@/components/menu-item/MenuItem';\nimport type {\n MenuItemOwnedProps,\n MenuItemPassthroughProps,\n} from '@/components/menu-item/MenuItem';\nimport PopoverMenu, {\n PopoverMenuScroll,\n} from '@/components/popover-menu/PopoverMenu';\nimport Spinner from '@/components/spinner/Spinner';\nimport TeamAvatar from '@/components/team-avatar/TeamAvatar';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport { useAnchoredPopupPortal } from '@/hooks/use-anchored-popup-portal';\nimport { useOutsideClose } from '@/hooks/use-outside-close';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport { mergeMenuItemProps } from '@/utils/menuItemProps';\nimport type { BuiltInButtonProps } from '@/utils/props';\nimport { mergeClassNames } from '@/utils/props';\nimport { toKebab } from '@/utils/string';\nimport styles from './Combobox.module.scss';\n\nexport type ComboboxSize = 'small' | 'medium' | 'large';\n\n// Combobox rows use `onClick`, so `onPointerUp` is left for callers.\ntype ComboboxMenuItemProps = MenuItemPassthroughProps<\n Exclude<MenuItemOwnedProps, 'onPointerUp'>\n>;\n\nexport type ComboboxOption = {\n value: string;\n /** Kept as `string`: the default filter, create-row matching, and the single-select input text all read it. */\n label: string;\n disabled?: boolean;\n /** Leading content for the list row (icon or avatar node). */\n leadingVisual?: ReactNode;\n /** Avatar for chips / list when a photo is preferred over `leadingVisual`. */\n leadingAvatar?: { src: string; alt: string };\n /**\n * Team avatar for the list row — a non-interactive `TeamAvatar` (`variant=\"menu\"`, 24px) with an\n * image or an initials fallback. The row's `label` names the team and `MenuItem` hides the\n * leading visual from assistive tech, so `alt` is optional. List rows only; chips don't render\n * it. With neither `src` nor `initials`, the fallback shows the first two letters of `label`.\n * `leadingVisual` and `leadingAvatar` take precedence.\n */\n leadingTeamAvatar?: { src?: string; initials?: string; alt?: string };\n /** Accepts translated nodes. */\n secondaryLabel?: ReactNode;\n /**\n * Extra `MenuItem` props for this row (e.g. `secondaryLabelPosition`, `tag`,\n * `trailingVisual`, `className`). Overrides the `menuItemProps` set on the\n * Combobox; the props Combobox owns (ARIA, selection, handlers) can't be set.\n */\n menuItemProps?: ComboboxMenuItemProps;\n};\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n /**\n * `MenuItem` props applied to every option row, e.g.\n * `menuItemProps={{ secondaryLabelPosition: 'inline' }}`. A row's own\n * `menuItemProps` wins. Not applied to the create row.\n */\n menuItemProps?: ComboboxMenuItemProps;\n /** When true, selected values render as removable chips. Default: false. */\n multiple?: boolean;\n value?: string | string[] | null;\n defaultValue?: string | string[] | null;\n onChange?: (value: string | string[] | null) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (value: string) => void;\n label?: ReactNode;\n placeholder?: string;\n leadingIcon?: ReactNode;\n size?: ComboboxSize;\n invalid?: boolean;\n disabled?: boolean;\n /**\n * Client-side filter. `true` (default) matches labels case-insensitively.\n * `false` shows all options (caller filters via `inputValue` / `onInputChange`).\n */\n filter?: boolean | ((option: ComboboxOption, query: string) => boolean);\n /** Shown when there are no rows to pick from. Default: \"No results\". */\n emptyMessage?: ReactNode;\n /**\n * When true, the menu shows a loading row (with Spinner) in place of the\n * empty message. Set while async results are in flight.\n */\n loading?: boolean;\n /** Loading row text. Default: \"Loading…\". */\n loadingMessage?: ReactNode;\n /**\n * Option objects for the current value(s), used for chips and the\n * single-select label when a value is missing from `options` (e.g. an async\n * search that no longer returns it, or values preselected on load). Values\n * found in `options` resolve from there first.\n */\n selectedOptions?: ComboboxOption[];\n /**\n * When true, typed text that matches no option offers a create row. Created\n * values not found in `options` or `selectedOptions` display their raw value\n * as the label.\n */\n creatable?: boolean;\n /**\n * Called with the trimmed input when the create row is chosen. When set, the\n * host owns adding the value (`onChange` is not called). When omitted, the\n * input is committed as the value through `onChange`.\n */\n onCreateOption?: (inputValue: string) => void;\n /** Create row label. Default: `Create \"{inputValue}\"`. */\n formatCreateLabel?: (inputValue: string) => ReactNode;\n /**\n * Single mode: when a value is set, shows a clear button inside the control\n * that calls `onChange(null)`. Ignored with `multiple` (chips have their own\n * remove control). Default: false.\n */\n clearable?: boolean;\n /** Accessible name for the clear button. Default: \"Clear\". */\n clearLabel?: string;\n /** Extra attributes for the clear button (e.g. `data-testid`). */\n clearButtonProps?: BuiltInButtonProps;\n /**\n * Accessible name for the chip group in `multiple` mode. Default:\n * `{label} selections` when `label` is a string, otherwise \"Selected\".\n */\n selectionsLabel?: string;\n /**\n * Accessible name for the options list when `label` isn't a string and no\n * `aria-label` is set. Default: \"Options\".\n */\n listboxLabel?: string;\n className?: string;\n id?: string;\n 'aria-label'?: string;\n /** Portal mount node for the menu; defaults to `document.body`. */\n portalContainer?: HTMLElement | null;\n /** Stacking order for the portaled menu. */\n zIndex?: number;\n}\n\nconst POPUP_MAX_HEIGHT = 280;\n\nconst CHIP_SIZE_BY_COMBOBOX: Record<ComboboxSize, ChipSize> = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n};\n\nconst CLEAR_ICON_SIZE: Record<ComboboxSize, IconSize> = {\n small: '12',\n medium: '16',\n large: '16',\n};\n\nfunction defaultSelectionsLabel(label: ReactNode): string {\n return typeof label === 'string' ? `${label} selections` : 'Selected';\n}\n\ntype ComboboxRow =\n | { kind: 'option'; option: ComboboxOption }\n | { kind: 'create'; inputValue: string };\n\nfunction defaultFormatCreateLabel(inputValue: string): ReactNode {\n return `Create \"${inputValue}\"`;\n}\n\nfunction isRowDisabled(row: ComboboxRow): boolean {\n return row.kind === 'option' && row.option.disabled === true;\n}\n\nfunction defaultFilter(option: ComboboxOption, query: string): boolean {\n if (!query) return true;\n return option.label.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction toSingleValue(\n value: string | string[] | null | undefined,\n): string | null {\n if (value == null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value === '' ? null : value;\n}\n\nfunction toMultiValue(value: string | string[] | null | undefined): string[] {\n if (value == null) return [];\n if (Array.isArray(value)) return value;\n return value === '' ? [] : [value];\n}\n\nfunction optionLeadingVisual(option: ComboboxOption): ReactNode | undefined {\n if (option.leadingVisual != null) return option.leadingVisual;\n if (option.leadingAvatar != null) {\n return (\n <UserAvatar\n src={option.leadingAvatar.src}\n alt={option.leadingAvatar.alt}\n size=\"24\"\n />\n );\n }\n if (option.leadingTeamAvatar != null) {\n return (\n <TeamAvatar\n src={option.leadingTeamAvatar.src}\n initials={\n option.leadingTeamAvatar.initials ??\n (option.leadingTeamAvatar.src\n ? undefined\n : Array.from(option.label).slice(0, 2).join(''))\n }\n alt={option.leadingTeamAvatar.alt}\n size=\"24\"\n variant=\"menu\"\n />\n );\n }\n return undefined;\n}\n\n/**\n * { value: 'town-square', label: 'Town Square' }, { value: 'off-topic', label: 'Off-Topic'\n * }, { value: 'design', label: 'Design' }, { value: 'engineering', label: 'Engineering' }, {\n * value: 'releases', label: 'Releases' }, ];\n */\nconst Combobox = forwardRef<HTMLInputElement, ComboboxProps>(function Combobox(\n {\n options,\n menuItemProps,\n multiple = false,\n value: valueProp,\n defaultValue,\n onChange,\n inputValue: inputValueProp,\n defaultInputValue = '',\n onInputChange,\n label,\n placeholder,\n leadingIcon,\n size = 'medium',\n invalid = false,\n disabled = false,\n filter = true,\n emptyMessage = 'No results',\n loading = false,\n loadingMessage = 'Loading…',\n selectedOptions,\n creatable = false,\n onCreateOption,\n formatCreateLabel = defaultFormatCreateLabel,\n clearable = false,\n clearLabel = 'Clear',\n clearButtonProps,\n selectionsLabel,\n listboxLabel = 'Options',\n className = '',\n id: idProp,\n 'aria-label': ariaLabel,\n portalContainer = null,\n zIndex,\n },\n ref,\n) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const listboxId = `${id}-listbox`;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const isValueControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<\n string | string[] | null\n >(() => {\n if (defaultValue !== undefined) return defaultValue;\n return multiple ? [] : null;\n });\n\n const rawValue = isValueControlled ? valueProp! : uncontrolledValue;\n const singleValue = multiple ? null : toSingleValue(rawValue);\n const multiValue = useMemo(\n () => (multiple ? toMultiValue(rawValue) : []),\n [multiple, rawValue],\n );\n\n const isInputControlled = inputValueProp !== undefined;\n const [uncontrolledInput, setUncontrolledInput] = useState(defaultInputValue);\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n // Hover moves the highlight without scrolling; only keyboard changes scroll the row into view.\n const activatedByPointer = useRef(false);\n const hoverRow = useCallback(\n (index: number) => {\n if (index === activeIndex) return;\n activatedByPointer.current = true;\n setActiveIndex(index);\n },\n [activeIndex],\n );\n const [queryOverride, setQueryOverride] = useState<string | null>(null);\n\n const resolveOption = useCallback(\n (optionValue: string): ComboboxOption | undefined =>\n options.find((o) => o.value === optionValue) ??\n selectedOptions?.find((o) => o.value === optionValue) ??\n (creatable ? { value: optionValue, label: optionValue } : undefined),\n [options, selectedOptions, creatable],\n );\n\n const selectedOption = useMemo(\n () => (singleValue == null ? undefined : resolveOption(singleValue)),\n [resolveOption, singleValue],\n );\n\n // Single-select: show the selected label until the user starts typing a filter.\n // `queryOverride !== null` means the field is in filter-edit mode.\n const displayInput = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return selectedOption?.label ?? uncontrolledInput;\n })();\n\n const filterQuery = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return '';\n })();\n\n const setInputDisplay = useCallback(\n (next: string) => {\n if (!isInputControlled) {\n setUncontrolledInput(next);\n if (!multiple) setQueryOverride(next);\n }\n onInputChange?.(next);\n },\n [isInputControlled, multiple, onInputChange],\n );\n\n const commitValue = useCallback(\n (next: string | string[] | null) => {\n if (!isValueControlled) setUncontrolledValue(next);\n onChange?.(next);\n },\n [isValueControlled, onChange],\n );\n\n const filteredOptions = useMemo(() => {\n if (filter === false) return options;\n const fn = typeof filter === 'function' ? filter : defaultFilter;\n return options.filter((o) => fn(o, filterQuery));\n }, [options, filter, filterQuery]);\n\n const createInput = creatable ? filterQuery.trim() : '';\n const showCreateRow = useMemo(() => {\n if (createInput === '') return false;\n const needle = createInput.toLowerCase();\n const matches = (text: string) => text.toLowerCase() === needle;\n const knownOptions = [...options, ...(selectedOptions ?? [])];\n if (knownOptions.some((o) => matches(o.label) || matches(o.value))) {\n return false;\n }\n const current = multiple\n ? multiValue\n : singleValue != null\n ? [singleValue]\n : [];\n return !current.some(matches);\n }, [\n createInput,\n options,\n selectedOptions,\n multiple,\n multiValue,\n singleValue,\n ]);\n\n const rows = useMemo<ComboboxRow[]>(\n () => [\n ...filteredOptions.map((option) => ({ kind: 'option' as const, option })),\n ...(showCreateRow\n ? [{ kind: 'create' as const, inputValue: createInput }]\n : []),\n ],\n [filteredOptions, showCreateRow, createInput],\n );\n\n const rowId = useCallback(\n (row: ComboboxRow) =>\n row.kind === 'option'\n ? `${listboxId}-option-${row.option.value}`\n : `${listboxId}-create`,\n [listboxId],\n );\n\n const { mounted: popupMounted, visible: popupVisible } =\n usePopoverTransition(isOpen);\n\n const {\n placement,\n maxHeight,\n style: popupStyle,\n portalRef,\n renderPortal,\n } = useAnchoredPopupPortal(anchorRef, popupMounted, {\n preferredHeight: POPUP_MAX_HEIGHT,\n maxHeightCap: POPUP_MAX_HEIGHT,\n portalContainer,\n zIndex,\n });\n\n const close = useCallback(() => {\n setIsOpen(false);\n setActiveIndex(-1);\n if (!multiple && !isInputControlled) {\n setQueryOverride(null);\n setUncontrolledInput('');\n }\n }, [multiple, isInputControlled]);\n\n const open = useCallback(() => {\n if (disabled) return;\n setIsOpen(true);\n }, [disabled]);\n\n useOutsideClose(rootRef, isOpen, close, portalRef);\n\n useEffect(() => {\n if (!isOpen) return;\n setActiveIndex((prev) => {\n if (rows.length === 0) return -1;\n if (prev >= 0 && prev < rows.length) return prev;\n const selectedIdx = rows.findIndex(\n (row) =>\n row.kind === 'option' &&\n (multiple\n ? multiValue.includes(row.option.value)\n : row.option.value === singleValue),\n );\n return selectedIdx >= 0 ? selectedIdx : 0;\n });\n }, [isOpen, rows, multiple, multiValue, singleValue]);\n\n const isSelected = useCallback(\n (optionValue: string) =>\n multiple ? multiValue.includes(optionValue) : singleValue === optionValue,\n [multiple, multiValue, singleValue],\n );\n\n const selectOption = useCallback(\n (option: ComboboxOption) => {\n if (option.disabled) return;\n\n if (multiple) {\n const next = multiValue.includes(option.value)\n ? multiValue.filter((v) => v !== option.value)\n : [...multiValue, option.value];\n commitValue(next);\n setInputDisplay('');\n close();\n inputRef.current?.focus();\n return;\n }\n\n commitValue(option.value);\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.(option.label);\n }\n close();\n },\n [\n multiple,\n multiValue,\n commitValue,\n setInputDisplay,\n isInputControlled,\n onInputChange,\n close,\n ],\n );\n\n const createValue = useCallback(\n (inputValue: string) => {\n if (onCreateOption) {\n onCreateOption(inputValue);\n } else if (multiple) {\n commitValue([...multiValue, inputValue]);\n } else {\n commitValue(inputValue);\n }\n\n if (multiple) {\n setInputDisplay('');\n close();\n inputRef.current?.focus();\n return;\n }\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.(inputValue);\n }\n close();\n },\n [\n onCreateOption,\n multiple,\n multiValue,\n commitValue,\n setInputDisplay,\n isInputControlled,\n onInputChange,\n close,\n ],\n );\n\n const selectRow = useCallback(\n (row: ComboboxRow) => {\n if (row.kind === 'create') createValue(row.inputValue);\n else selectOption(row.option);\n },\n [createValue, selectOption],\n );\n\n const clearValue = useCallback(() => {\n commitValue(null);\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.('');\n }\n inputRef.current?.focus();\n }, [commitValue, isInputControlled, onInputChange]);\n\n const removeValue = useCallback(\n (optionValue: string) => {\n if (!multiple) return;\n commitValue(multiValue.filter((v) => v !== optionValue));\n },\n [multiple, multiValue, commitValue],\n );\n\n const moveActive = useCallback(\n (delta: number) => {\n activatedByPointer.current = false;\n const enabled = rows\n .map((row, i) => ({ row, i }))\n .filter(({ row }) => !isRowDisabled(row));\n if (enabled.length === 0) {\n setActiveIndex(-1);\n return;\n }\n setActiveIndex((prev) => {\n const currentPos = enabled.findIndex(({ i }) => i === prev);\n const nextPos =\n currentPos < 0\n ? delta > 0\n ? 0\n : enabled.length - 1\n : (currentPos + delta + enabled.length) % enabled.length;\n return enabled[nextPos].i;\n });\n },\n [rows],\n );\n\n useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n if (activatedByPointer.current) {\n activatedByPointer.current = false;\n return;\n }\n const row = rows[activeIndex];\n if (!row) return;\n document.getElementById(rowId(row))?.scrollIntoView?.({ block: 'nearest' });\n }, [isOpen, activeIndex, rows, rowId]);\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n const next = e.target.value;\n setInputDisplay(next);\n if (!isOpen) open();\n setActiveIndex(0);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n open();\n // Select-all so the next keystroke replaces the selected label (filter mode).\n if (!multiple && !isInputControlled && selectedOption) {\n requestAnimationFrame(() => {\n inputRef.current?.select();\n });\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLElement>) => {\n // Delay so option mousedown can run first\n const related = e.relatedTarget as Node | null;\n if (related && rootRef.current?.contains(related)) return;\n setIsFocused(false);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(-1);\n break;\n case 'Home':\n if (isOpen && rows.length > 0) {\n e.preventDefault();\n setActiveIndex(\n Math.max(\n 0,\n rows.findIndex((row) => !isRowDisabled(row)),\n ),\n );\n }\n break;\n case 'End':\n if (isOpen && rows.length > 0) {\n e.preventDefault();\n for (let i = rows.length - 1; i >= 0; i--) {\n if (!isRowDisabled(rows[i])) {\n setActiveIndex(i);\n break;\n }\n }\n }\n break;\n case 'Enter':\n if (isOpen && activeIndex >= 0 && rows[activeIndex]) {\n e.preventDefault();\n selectRow(rows[activeIndex]);\n }\n break;\n case 'Escape':\n if (isOpen) {\n e.preventDefault();\n close();\n }\n break;\n case 'Backspace':\n if (multiple && displayInput === '' && multiValue.length > 0) {\n e.preventDefault();\n removeValue(multiValue[multiValue.length - 1]);\n }\n break;\n case 'Tab':\n close();\n break;\n default:\n break;\n }\n };\n\n const handleWrapperMouseDown = (e: MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n // Don't steal focus from chips, their remove buttons, or the clear button\n if ((e.target as HTMLElement).closest('[data-chip], [data-combobox-clear]'))\n return;\n if (e.target !== inputRef.current) {\n e.preventDefault();\n inputRef.current?.focus();\n }\n if (!isOpen) open();\n };\n\n const hasSelection = multiple\n ? multiValue.length > 0\n : singleValue != null && singleValue !== '';\n const hasInputText = displayInput.length > 0;\n const showClearButton = clearable && !multiple && hasSelection && !disabled;\n const labelFloated = isFocused || isOpen || hasSelection || hasInputText;\n\n const activeRow = activeIndex >= 0 ? rows[activeIndex] : undefined;\n const activeDescendant = activeRow != null ? rowId(activeRow) : undefined;\n\n // Without `selectedOptions`, values in `options` keep their list order (the\n // original behavior); with it, chips follow value order so they don't jump\n // around as async results change.\n const chipOptions = useMemo<ComboboxOption[]>(() => {\n if (!multiple) return [];\n if (selectedOptions == null) {\n const fromOptions = options.filter((o) => multiValue.includes(o.value));\n if (!creatable) return fromOptions;\n const listed = new Set(fromOptions.map((o) => o.value));\n return [\n ...fromOptions,\n ...multiValue\n .filter((v) => !listed.has(v))\n .map((v) => ({ value: v, label: v })),\n ];\n }\n return multiValue\n .map(resolveOption)\n .filter((o): o is ComboboxOption => o != null);\n }, [\n multiple,\n selectedOptions,\n options,\n multiValue,\n creatable,\n resolveOption,\n ]);\n\n const sizeClass = styles[`combobox--size-${toKebab(size)}`];\n const hasChips = multiple && chipOptions.length > 0;\n const rootClass = [\n styles.combobox,\n sizeClass,\n invalid ? styles['combobox--invalid'] : '',\n label != null && labelFloated ? styles['combobox--label-floated'] : '',\n leadingIcon != null ? styles['combobox--has-leading-icon'] : '',\n hasChips ? styles['combobox--has-chips'] : '',\n isOpen ? styles['combobox--open'] : '',\n disabled ? styles['combobox--disabled'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} ref={rootRef}>\n <div className={styles.combobox__wrapper} ref={anchorRef}>\n {label != null && (\n <label className={styles.combobox__label} htmlFor={id}>\n {label}\n </label>\n )}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- pointer convenience; the input owns keyboard interaction */}\n <div\n className={styles.combobox__inner}\n onMouseDown={handleWrapperMouseDown}\n >\n {leadingIcon != null && (\n <span className={styles['combobox__leading-icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n </span>\n )}\n <div className={styles.combobox__value}>\n {multiple && chipOptions.length > 0 && (\n <ChipGroup\n aria-label={selectionsLabel ?? defaultSelectionsLabel(label)}\n disabled={disabled}\n >\n {chipOptions.map((option) => (\n <Chip\n key={option.value}\n size={CHIP_SIZE_BY_COMBOBOX[size]}\n leadingAvatar={option.leadingAvatar}\n leadingIcon={\n option.leadingAvatar == null\n ? option.leadingVisual\n : undefined\n }\n onRemove={\n disabled\n ? undefined\n : (ev) => {\n ev.stopPropagation();\n removeValue(option.value);\n }\n }\n >\n {option.label}\n </Chip>\n ))}\n </ChipGroup>\n )}\n <input\n ref={setInputRef}\n id={id}\n className={styles.combobox__control}\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n placeholder={\n multiple && chipOptions.length > 0 ? undefined : placeholder\n }\n value={displayInput}\n aria-label={ariaLabel}\n aria-invalid={invalid ? true : undefined}\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-busy={loading || undefined}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n </div>\n {showClearButton && (\n <button\n {...clearButtonProps}\n type=\"button\"\n className={mergeClassNames(\n styles.combobox__clear,\n clearButtonProps?.className,\n )}\n aria-label={clearLabel}\n data-combobox-clear=\"\"\n onClick={clearValue}\n onBlur={(e) => {\n clearButtonProps?.onBlur?.(e);\n handleBlur(e);\n }}\n >\n <Icon size={CLEAR_ICON_SIZE[size]} glyph={<CloseCircleIcon />} />\n </button>\n )}\n <span className={styles['combobox__trailing-icon']} aria-hidden>\n <Icon size=\"12\" glyph={<ChevronDownIcon />} />\n </span>\n </div>\n </div>\n\n {popupMounted &&\n renderPortal(\n <div\n ref={portalRef}\n className={[\n styles.combobox__popup,\n placement === 'above' ? styles['combobox__popup--above'] : '',\n popupVisible ? styles['combobox__popup--visible'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={popupStyle}\n >\n <PopoverMenu className={styles.combobox__menu}>\n <PopoverMenuScroll maxHeight={maxHeight}>\n {rows.length > 0 && (\n <ul\n id={listboxId}\n className={styles.combobox__list}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n aria-label={\n typeof label === 'string'\n ? label\n : (ariaLabel ?? listboxLabel)\n }\n >\n {rows.map((row, index) => {\n const active = index === activeIndex;\n const preventBlur = (ev: MouseEvent) => {\n // Prevent input blur before click handler\n ev.preventDefault();\n };\n if (row.kind === 'create') {\n return (\n <li\n key={rowId(row)}\n className={styles.combobox__option}\n role=\"presentation\"\n >\n <MenuItem\n id={rowId(row)}\n role=\"option\"\n label={formatCreateLabel(row.inputValue)}\n leadingVisual={<Icon glyph={<PlusIcon />} />}\n active={active}\n aria-selected={false}\n onMouseDown={preventBlur}\n onMouseEnter={() => hoverRow(index)}\n onClick={() => createValue(row.inputValue)}\n />\n </li>\n );\n }\n const { option } = row;\n const selected = isSelected(option.value);\n const leading = optionLeadingVisual(option);\n return (\n <li\n key={option.value}\n className={styles.combobox__option}\n role=\"presentation\"\n >\n <MenuItem\n {...mergeMenuItemProps(\n menuItemProps,\n option.menuItemProps,\n )}\n id={rowId(row)}\n role=\"option\"\n label={option.label}\n secondaryLabel={option.secondaryLabel}\n leadingElement={leading != null}\n leadingVisual={leading}\n trailingElement={selected}\n active={active}\n disabled={option.disabled}\n aria-selected={selected}\n onMouseDown={preventBlur}\n onMouseEnter={() => hoverRow(index)}\n onClick={() => selectOption(option)}\n />\n </li>\n );\n })}\n </ul>\n )}\n {loading ? (\n <div className={styles.combobox__loading} role=\"status\">\n <Spinner size=\"16\" aria-hidden />\n <span>{loadingMessage}</span>\n </div>\n ) : (\n rows.length === 0 && (\n <p className={styles.combobox__empty}>{emptyMessage}</p>\n )\n )}\n </PopoverMenuScroll>\n </PopoverMenu>\n </div>,\n )}\n </div>\n );\n});\n\nexport default Combobox;\n"],"names":["POPUP_MAX_HEIGHT","CHIP_SIZE_BY_COMBOBOX","CLEAR_ICON_SIZE","defaultSelectionsLabel","label","defaultFormatCreateLabel","inputValue","isRowDisabled","row","defaultFilter","option","query","toSingleValue","value","toMultiValue","optionLeadingVisual","jsx","UserAvatar","TeamAvatar","Combobox","forwardRef","options","menuItemProps","multiple","valueProp","defaultValue","onChange","inputValueProp","defaultInputValue","onInputChange","placeholder","leadingIcon","size","invalid","disabled","filter","emptyMessage","loading","loadingMessage","selectedOptions","creatable","onCreateOption","formatCreateLabel","clearable","clearLabel","clearButtonProps","selectionsLabel","listboxLabel","className","idProp","ariaLabel","portalContainer","zIndex","ref","generatedId","useId","id","listboxId","rootRef","useRef","anchorRef","inputRef","setInputRef","useCallback","node","isValueControlled","uncontrolledValue","setUncontrolledValue","useState","rawValue","singleValue","multiValue","useMemo","isInputControlled","uncontrolledInput","setUncontrolledInput","isOpen","setIsOpen","isFocused","setIsFocused","activeIndex","setActiveIndex","activatedByPointer","hoverRow","index","queryOverride","setQueryOverride","resolveOption","optionValue","o","selectedOption","displayInput","filterQuery","setInputDisplay","next","commitValue","filteredOptions","fn","createInput","showCreateRow","needle","matches","text","rows","rowId","popupMounted","popupVisible","usePopoverTransition","placement","maxHeight","popupStyle","portalRef","renderPortal","useAnchoredPopupPortal","close","open","useOutsideClose","useEffect","prev","selectedIdx","isSelected","selectOption","v","_a","createValue","selectRow","clearValue","removeValue","moveActive","delta","enabled","i","currentPos","nextPos","_b","handleInputChange","handleFocus","handleBlur","related","handleKeyDown","handleWrapperMouseDown","hasSelection","hasInputText","showClearButton","labelFloated","activeRow","activeDescendant","chipOptions","fromOptions","listed","sizeClass","styles","toKebab","hasChips","rootClass","jsxs","IconSlotContext","ChipGroup","Chip","ev","mergeClassNames","Icon","CloseCircleIcon","ChevronDownIcon","PopoverMenu","PopoverMenuScroll","active","preventBlur","MenuItem","PlusIcon","selected","leading","mergeMenuItemProps","Spinner"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.js","sources":["../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import type {\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEvent,\n ReactNode,\n} from 'react';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport CloseCircleIcon from '@mattermost/compass-icons/components/close-circle';\nimport PlusIcon from '@mattermost/compass-icons/components/plus';\nimport Chip from '@/components/chip/Chip';\nimport ChipGroup from '@/components/chip/ChipGroup';\nimport type { ChipSize } from '@/components/chip/Chip';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport MenuItem from '@/components/menu-item/MenuItem';\nimport type {\n MenuItemOwnedProps,\n MenuItemPassthroughProps,\n} from '@/components/menu-item/MenuItem';\nimport PopoverMenu, {\n PopoverMenuScroll,\n} from '@/components/popover-menu/PopoverMenu';\nimport Spinner from '@/components/spinner/Spinner';\nimport TeamAvatar from '@/components/team-avatar/TeamAvatar';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport { useAnchoredPopupPortal } from '@/hooks/use-anchored-popup-portal';\nimport { useOutsideClose } from '@/hooks/use-outside-close';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport { mergeMenuItemProps } from '@/utils/menuItemProps';\nimport type { BuiltInButtonProps, DataAttributes } from '@/utils/props';\nimport { mergeClassNames } from '@/utils/props';\nimport { toKebab } from '@/utils/string';\nimport styles from './Combobox.module.scss';\n\nexport type ComboboxSize = 'small' | 'medium' | 'large';\n\n// Combobox rows use `onClick`, so `onPointerUp` is left for callers.\ntype ComboboxMenuItemProps = MenuItemPassthroughProps<\n Exclude<MenuItemOwnedProps, 'onPointerUp'>\n>;\n\nexport type ComboboxOption = {\n value: string;\n /** Kept as `string`: the default filter, create-row matching, and the single-select input text all read it. */\n label: string;\n disabled?: boolean;\n /** Leading content for the list row (icon or avatar node). */\n leadingVisual?: ReactNode;\n /** Avatar for chips / list when a photo is preferred over `leadingVisual`. */\n leadingAvatar?: { src: string; alt: string };\n /**\n * Team avatar for the list row — a non-interactive `TeamAvatar` (`variant=\"menu\"`, 24px) with an\n * image or an initials fallback. The row's `label` names the team and `MenuItem` hides the\n * leading visual from assistive tech, so `alt` is optional. List rows only; chips don't render\n * it. With neither `src` nor `initials`, the fallback shows the first two letters of `label`.\n * `leadingVisual` and `leadingAvatar` take precedence.\n */\n leadingTeamAvatar?: { src?: string; initials?: string; alt?: string };\n /** Accepts translated nodes. */\n secondaryLabel?: ReactNode;\n /**\n * Extra `MenuItem` props for this row (e.g. `secondaryLabelPosition`, `tag`,\n * `trailingVisual`, `className`). Overrides the `menuItemProps` set on the\n * Combobox; the props Combobox owns (ARIA, selection, handlers) can't be set.\n */\n menuItemProps?: ComboboxMenuItemProps;\n};\n\n/**\n * Native input attributes `Combobox` sets or can't honor, so they're left out\n * of `ComboboxProps`. The ones it renders (`role`, `type`, `autoComplete`,\n * `aria-expanded`, …) also win at runtime over anything spread onto the input.\n */\nexport type ComboboxOwnedInputProps =\n // Value model: Combobox's own `value` / `defaultValue` / `onChange` / `multiple` / `size`.\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'multiple'\n | 'size'\n | 'type'\n | 'children'\n | 'dangerouslySetInnerHTML'\n // Combobox semantics.\n | 'role'\n | 'autoComplete'\n | 'spellCheck'\n | 'list'\n | 'aria-expanded'\n | 'aria-controls'\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-busy'\n | 'aria-haspopup'\n | 'aria-invalid'\n | 'aria-required'\n // First-class props with Combobox meaning (re-declared below).\n | 'required'\n // No form participation or constraint validation yet.\n | 'name'\n | 'form'\n | 'formAction'\n | 'formEncType'\n | 'formMethod'\n | 'formNoValidate'\n | 'formTarget'\n | 'readOnly'\n | 'maxLength'\n | 'minLength'\n | 'pattern'\n | 'min'\n | 'max'\n | 'step'\n // Not meaningful for a text combobox.\n | 'accept'\n | 'alt'\n | 'capture'\n | 'checked'\n | 'defaultChecked'\n | 'height'\n | 'width'\n | 'src';\n\n/**\n * Extra native input attributes (`data-*`, `aria-describedby`,\n * `aria-errormessage`, `aria-labelledby`, `autoFocus`, `tabIndex`, `style`,\n * `onFocus`, …) go on the `<input role=\"combobox\">`, the element the ref\n * targets. `className` goes on the root. Attributes in\n * `ComboboxOwnedInputProps` can't be set.\n */\nexport interface ComboboxProps\n extends\n Omit<InputHTMLAttributes<HTMLInputElement>, ComboboxOwnedInputProps>,\n DataAttributes {\n options: ComboboxOption[];\n /**\n * `MenuItem` props applied to every option row, e.g.\n * `menuItemProps={{ secondaryLabelPosition: 'inline' }}`. A row's own\n * `menuItemProps` wins. Not applied to the create row.\n */\n menuItemProps?: ComboboxMenuItemProps;\n /** When true, selected values render as removable chips. Default: false. */\n multiple?: boolean;\n value?: string | string[] | null;\n defaultValue?: string | string[] | null;\n onChange?: (value: string | string[] | null) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (value: string) => void;\n label?: ReactNode;\n placeholder?: string;\n leadingIcon?: ReactNode;\n size?: ComboboxSize;\n invalid?: boolean;\n disabled?: boolean;\n /**\n * Marks the field required for assistive tech (`aria-required=\"true\"`).\n * No native `required`, so the browser doesn't validate; the host does.\n * Safe in `multiple` mode, where the input is empty once chips are picked.\n * Default: false.\n */\n required?: boolean;\n /**\n * Client-side filter. `true` (default) matches labels case-insensitively.\n * `false` shows all options (caller filters via `inputValue` / `onInputChange`).\n */\n filter?: boolean | ((option: ComboboxOption, query: string) => boolean);\n /** Shown when there are no rows to pick from. Default: \"No results\". */\n emptyMessage?: ReactNode;\n /**\n * When true, the menu shows a loading row (with Spinner) in place of the\n * empty message. Set while async results are in flight.\n */\n loading?: boolean;\n /** Loading row text. Default: \"Loading…\". */\n loadingMessage?: ReactNode;\n /**\n * Option objects for the current value(s), used for chips and the\n * single-select label when a value is missing from `options` (e.g. an async\n * search that no longer returns it, or values preselected on load). Values\n * found in `options` resolve from there first.\n */\n selectedOptions?: ComboboxOption[];\n /**\n * When true, typed text that matches no option offers a create row. Created\n * values not found in `options` or `selectedOptions` display their raw value\n * as the label.\n */\n creatable?: boolean;\n /**\n * Called with the trimmed input when the create row is chosen. When set, the\n * host owns adding the value (`onChange` is not called). When omitted, the\n * input is committed as the value through `onChange`.\n */\n onCreateOption?: (inputValue: string) => void;\n /** Create row label. Default: `Create \"{inputValue}\"`. */\n formatCreateLabel?: (inputValue: string) => ReactNode;\n /**\n * Single mode: when a value is set, shows a clear button inside the control\n * that calls `onChange(null)`. Ignored with `multiple` (chips have their own\n * remove control). Default: false.\n */\n clearable?: boolean;\n /** Accessible name for the clear button. Default: \"Clear\". */\n clearLabel?: string;\n /** Extra attributes for the clear button (e.g. `data-testid`). */\n clearButtonProps?: BuiltInButtonProps;\n /**\n * Accessible name for the chip group in `multiple` mode. Default:\n * `{label} selections` when `label` is a string, otherwise \"Selected\".\n */\n selectionsLabel?: string;\n /**\n * Accessible name for the options list when `label` isn't a string and no\n * `aria-label` is set. Default: \"Options\".\n */\n listboxLabel?: string;\n className?: string;\n id?: string;\n 'aria-label'?: string;\n /**\n * Runs after Combobox's own focus handling (which opens the menu). Also runs\n * when the clear button hands focus back to the input.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Runs after Combobox's own blur handling, on every input blur — including\n * when focus moves to the clear button or a chip's remove button. Not called\n * when those buttons blur.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Runs after Combobox's own key handling. `event.defaultPrevented` is true\n * when Combobox handled the key (arrows, Home / End while open, Enter on a\n * row, Escape while open, Backspace removing a chip). Calling\n * `preventDefault()` here doesn't stop Combobox's handling. Any `onChange`\n * the key caused has already been called, but host state read here is\n * still from before that change.\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /** Portal mount node for the menu; defaults to `document.body`. */\n portalContainer?: HTMLElement | null;\n /** Stacking order for the portaled menu. */\n zIndex?: number;\n}\n\nconst POPUP_MAX_HEIGHT = 280;\n\nconst CHIP_SIZE_BY_COMBOBOX: Record<ComboboxSize, ChipSize> = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n};\n\nconst CLEAR_ICON_SIZE: Record<ComboboxSize, IconSize> = {\n small: '12',\n medium: '16',\n large: '16',\n};\n\nfunction defaultSelectionsLabel(label: ReactNode): string {\n return typeof label === 'string' ? `${label} selections` : 'Selected';\n}\n\ntype ComboboxRow =\n | { kind: 'option'; option: ComboboxOption }\n | { kind: 'create'; inputValue: string };\n\nfunction defaultFormatCreateLabel(inputValue: string): ReactNode {\n return `Create \"${inputValue}\"`;\n}\n\nfunction isRowDisabled(row: ComboboxRow): boolean {\n return row.kind === 'option' && row.option.disabled === true;\n}\n\nfunction defaultFilter(option: ComboboxOption, query: string): boolean {\n if (!query) return true;\n return option.label.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction toSingleValue(\n value: string | string[] | null | undefined,\n): string | null {\n if (value == null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value === '' ? null : value;\n}\n\nfunction toMultiValue(value: string | string[] | null | undefined): string[] {\n if (value == null) return [];\n if (Array.isArray(value)) return value;\n return value === '' ? [] : [value];\n}\n\nfunction optionLeadingVisual(option: ComboboxOption): ReactNode | undefined {\n if (option.leadingVisual != null) return option.leadingVisual;\n if (option.leadingAvatar != null) {\n return (\n <UserAvatar\n src={option.leadingAvatar.src}\n alt={option.leadingAvatar.alt}\n size=\"24\"\n />\n );\n }\n if (option.leadingTeamAvatar != null) {\n return (\n <TeamAvatar\n src={option.leadingTeamAvatar.src}\n initials={\n option.leadingTeamAvatar.initials ??\n (option.leadingTeamAvatar.src\n ? undefined\n : Array.from(option.label).slice(0, 2).join(''))\n }\n alt={option.leadingTeamAvatar.alt}\n size=\"24\"\n variant=\"menu\"\n />\n );\n }\n return undefined;\n}\n\n/**\n * { value: 'town-square', label: 'Town Square' }, { value: 'off-topic', label: 'Off-Topic'\n * }, { value: 'design', label: 'Design' }, { value: 'engineering', label: 'Engineering' }, {\n * value: 'releases', label: 'Releases' }, ];\n */\nconst Combobox = forwardRef<HTMLInputElement, ComboboxProps>(function Combobox(\n {\n options,\n menuItemProps,\n multiple = false,\n value: valueProp,\n defaultValue,\n onChange,\n inputValue: inputValueProp,\n defaultInputValue = '',\n onInputChange,\n label,\n placeholder,\n leadingIcon,\n size = 'medium',\n invalid = false,\n disabled = false,\n filter = true,\n emptyMessage = 'No results',\n loading = false,\n loadingMessage = 'Loading…',\n selectedOptions,\n creatable = false,\n onCreateOption,\n formatCreateLabel = defaultFormatCreateLabel,\n clearable = false,\n clearLabel = 'Clear',\n clearButtonProps,\n selectionsLabel,\n listboxLabel = 'Options',\n className = '',\n id: idProp,\n 'aria-label': ariaLabel,\n 'aria-describedby': describedBy,\n required = false,\n onFocus,\n onBlur,\n onKeyDown,\n portalContainer = null,\n zIndex,\n ...rest\n },\n ref,\n) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const listboxId = `${id}-listbox`;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const isValueControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<\n string | string[] | null\n >(() => {\n if (defaultValue !== undefined) return defaultValue;\n return multiple ? [] : null;\n });\n\n const rawValue = isValueControlled ? valueProp! : uncontrolledValue;\n const singleValue = multiple ? null : toSingleValue(rawValue);\n const multiValue = useMemo(\n () => (multiple ? toMultiValue(rawValue) : []),\n [multiple, rawValue],\n );\n\n const isInputControlled = inputValueProp !== undefined;\n const [uncontrolledInput, setUncontrolledInput] = useState(defaultInputValue);\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n // Hover moves the highlight without scrolling; only keyboard changes scroll the row into view.\n const activatedByPointer = useRef(false);\n const hoverRow = useCallback(\n (index: number) => {\n if (index === activeIndex) return;\n activatedByPointer.current = true;\n setActiveIndex(index);\n },\n [activeIndex],\n );\n const [queryOverride, setQueryOverride] = useState<string | null>(null);\n\n const resolveOption = useCallback(\n (optionValue: string): ComboboxOption | undefined =>\n options.find((o) => o.value === optionValue) ??\n selectedOptions?.find((o) => o.value === optionValue) ??\n (creatable ? { value: optionValue, label: optionValue } : undefined),\n [options, selectedOptions, creatable],\n );\n\n const selectedOption = useMemo(\n () => (singleValue == null ? undefined : resolveOption(singleValue)),\n [resolveOption, singleValue],\n );\n\n // Single-select: show the selected label until the user starts typing a filter.\n // `queryOverride !== null` means the field is in filter-edit mode.\n const displayInput = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return selectedOption?.label ?? uncontrolledInput;\n })();\n\n const filterQuery = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return '';\n })();\n\n const setInputDisplay = useCallback(\n (next: string) => {\n if (!isInputControlled) {\n setUncontrolledInput(next);\n if (!multiple) setQueryOverride(next);\n }\n onInputChange?.(next);\n },\n [isInputControlled, multiple, onInputChange],\n );\n\n const commitValue = useCallback(\n (next: string | string[] | null) => {\n if (!isValueControlled) setUncontrolledValue(next);\n onChange?.(next);\n },\n [isValueControlled, onChange],\n );\n\n const filteredOptions = useMemo(() => {\n if (filter === false) return options;\n const fn = typeof filter === 'function' ? filter : defaultFilter;\n return options.filter((o) => fn(o, filterQuery));\n }, [options, filter, filterQuery]);\n\n const createInput = creatable ? filterQuery.trim() : '';\n const showCreateRow = useMemo(() => {\n if (createInput === '') return false;\n const needle = createInput.toLowerCase();\n const matches = (text: string) => text.toLowerCase() === needle;\n const knownOptions = [...options, ...(selectedOptions ?? [])];\n if (knownOptions.some((o) => matches(o.label) || matches(o.value))) {\n return false;\n }\n const current = multiple\n ? multiValue\n : singleValue != null\n ? [singleValue]\n : [];\n return !current.some(matches);\n }, [\n createInput,\n options,\n selectedOptions,\n multiple,\n multiValue,\n singleValue,\n ]);\n\n const rows = useMemo<ComboboxRow[]>(\n () => [\n ...filteredOptions.map((option) => ({ kind: 'option' as const, option })),\n ...(showCreateRow\n ? [{ kind: 'create' as const, inputValue: createInput }]\n : []),\n ],\n [filteredOptions, showCreateRow, createInput],\n );\n\n const rowId = useCallback(\n (row: ComboboxRow) =>\n row.kind === 'option'\n ? `${listboxId}-option-${row.option.value}`\n : `${listboxId}-create`,\n [listboxId],\n );\n\n const { mounted: popupMounted, visible: popupVisible } =\n usePopoverTransition(isOpen);\n\n const {\n placement,\n maxHeight,\n style: popupStyle,\n portalRef,\n renderPortal,\n } = useAnchoredPopupPortal(anchorRef, popupMounted, {\n preferredHeight: POPUP_MAX_HEIGHT,\n maxHeightCap: POPUP_MAX_HEIGHT,\n portalContainer,\n zIndex,\n });\n\n const close = useCallback(() => {\n setIsOpen(false);\n setActiveIndex(-1);\n if (!multiple && !isInputControlled) {\n setQueryOverride(null);\n setUncontrolledInput('');\n }\n }, [multiple, isInputControlled]);\n\n const open = useCallback(() => {\n if (disabled) return;\n setIsOpen(true);\n }, [disabled]);\n\n useOutsideClose(rootRef, isOpen, close, portalRef);\n\n useEffect(() => {\n if (!isOpen) return;\n setActiveIndex((prev) => {\n if (rows.length === 0) return -1;\n if (prev >= 0 && prev < rows.length) return prev;\n const selectedIdx = rows.findIndex(\n (row) =>\n row.kind === 'option' &&\n (multiple\n ? multiValue.includes(row.option.value)\n : row.option.value === singleValue),\n );\n return selectedIdx >= 0 ? selectedIdx : 0;\n });\n }, [isOpen, rows, multiple, multiValue, singleValue]);\n\n const isSelected = useCallback(\n (optionValue: string) =>\n multiple ? multiValue.includes(optionValue) : singleValue === optionValue,\n [multiple, multiValue, singleValue],\n );\n\n const selectOption = useCallback(\n (option: ComboboxOption) => {\n if (option.disabled) return;\n\n if (multiple) {\n const next = multiValue.includes(option.value)\n ? multiValue.filter((v) => v !== option.value)\n : [...multiValue, option.value];\n commitValue(next);\n setInputDisplay('');\n close();\n inputRef.current?.focus();\n return;\n }\n\n commitValue(option.value);\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.(option.label);\n }\n close();\n },\n [\n multiple,\n multiValue,\n commitValue,\n setInputDisplay,\n isInputControlled,\n onInputChange,\n close,\n ],\n );\n\n const createValue = useCallback(\n (inputValue: string) => {\n if (onCreateOption) {\n onCreateOption(inputValue);\n } else if (multiple) {\n commitValue([...multiValue, inputValue]);\n } else {\n commitValue(inputValue);\n }\n\n if (multiple) {\n setInputDisplay('');\n close();\n inputRef.current?.focus();\n return;\n }\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.(inputValue);\n }\n close();\n },\n [\n onCreateOption,\n multiple,\n multiValue,\n commitValue,\n setInputDisplay,\n isInputControlled,\n onInputChange,\n close,\n ],\n );\n\n const selectRow = useCallback(\n (row: ComboboxRow) => {\n if (row.kind === 'create') createValue(row.inputValue);\n else selectOption(row.option);\n },\n [createValue, selectOption],\n );\n\n const clearValue = useCallback(() => {\n commitValue(null);\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.('');\n }\n inputRef.current?.focus();\n }, [commitValue, isInputControlled, onInputChange]);\n\n const removeValue = useCallback(\n (optionValue: string) => {\n if (!multiple) return;\n commitValue(multiValue.filter((v) => v !== optionValue));\n },\n [multiple, multiValue, commitValue],\n );\n\n const moveActive = useCallback(\n (delta: number) => {\n activatedByPointer.current = false;\n const enabled = rows\n .map((row, i) => ({ row, i }))\n .filter(({ row }) => !isRowDisabled(row));\n if (enabled.length === 0) {\n setActiveIndex(-1);\n return;\n }\n setActiveIndex((prev) => {\n const currentPos = enabled.findIndex(({ i }) => i === prev);\n const nextPos =\n currentPos < 0\n ? delta > 0\n ? 0\n : enabled.length - 1\n : (currentPos + delta + enabled.length) % enabled.length;\n return enabled[nextPos].i;\n });\n },\n [rows],\n );\n\n useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n if (activatedByPointer.current) {\n activatedByPointer.current = false;\n return;\n }\n const row = rows[activeIndex];\n if (!row) return;\n document.getElementById(rowId(row))?.scrollIntoView?.({ block: 'nearest' });\n }, [isOpen, activeIndex, rows, rowId]);\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n const next = e.target.value;\n setInputDisplay(next);\n if (!isOpen) open();\n setActiveIndex(0);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n open();\n // Select-all so the next keystroke replaces the selected label (filter mode).\n if (!multiple && !isInputControlled && selectedOption) {\n requestAnimationFrame(() => {\n inputRef.current?.select();\n });\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLElement>) => {\n // Delay so option mousedown can run first\n const related = e.relatedTarget as Node | null;\n if (related && rootRef.current?.contains(related)) return;\n setIsFocused(false);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(-1);\n break;\n case 'Home':\n if (isOpen && rows.length > 0) {\n e.preventDefault();\n setActiveIndex(\n Math.max(\n 0,\n rows.findIndex((row) => !isRowDisabled(row)),\n ),\n );\n }\n break;\n case 'End':\n if (isOpen && rows.length > 0) {\n e.preventDefault();\n for (let i = rows.length - 1; i >= 0; i--) {\n if (!isRowDisabled(rows[i])) {\n setActiveIndex(i);\n break;\n }\n }\n }\n break;\n case 'Enter':\n if (isOpen && activeIndex >= 0 && rows[activeIndex]) {\n e.preventDefault();\n selectRow(rows[activeIndex]);\n }\n break;\n case 'Escape':\n if (isOpen) {\n e.preventDefault();\n close();\n }\n break;\n case 'Backspace':\n if (multiple && displayInput === '' && multiValue.length > 0) {\n e.preventDefault();\n removeValue(multiValue[multiValue.length - 1]);\n }\n break;\n case 'Tab':\n close();\n break;\n default:\n break;\n }\n };\n\n const handleInputFocus = (e: FocusEvent<HTMLInputElement>) => {\n handleFocus();\n onFocus?.(e);\n };\n\n const handleInputBlur = (e: FocusEvent<HTMLInputElement>) => {\n handleBlur(e);\n onBlur?.(e);\n };\n\n const handleInputKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n handleKeyDown(e);\n onKeyDown?.(e);\n };\n\n const handleWrapperMouseDown = (e: MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n // Don't steal focus from chips, their remove buttons, or the clear button\n if ((e.target as HTMLElement).closest('[data-chip], [data-combobox-clear]'))\n return;\n if (e.target !== inputRef.current) {\n e.preventDefault();\n inputRef.current?.focus();\n }\n if (!isOpen) open();\n };\n\n const hasSelection = multiple\n ? multiValue.length > 0\n : singleValue != null && singleValue !== '';\n const hasInputText = displayInput.length > 0;\n const showClearButton = clearable && !multiple && hasSelection && !disabled;\n const labelFloated = isFocused || isOpen || hasSelection || hasInputText;\n\n const activeRow = activeIndex >= 0 ? rows[activeIndex] : undefined;\n const activeDescendant = activeRow != null ? rowId(activeRow) : undefined;\n\n // Without `selectedOptions`, values in `options` keep their list order (the\n // original behavior); with it, chips follow value order so they don't jump\n // around as async results change.\n const chipOptions = useMemo<ComboboxOption[]>(() => {\n if (!multiple) return [];\n if (selectedOptions == null) {\n const fromOptions = options.filter((o) => multiValue.includes(o.value));\n if (!creatable) return fromOptions;\n const listed = new Set(fromOptions.map((o) => o.value));\n return [\n ...fromOptions,\n ...multiValue\n .filter((v) => !listed.has(v))\n .map((v) => ({ value: v, label: v })),\n ];\n }\n return multiValue\n .map(resolveOption)\n .filter((o): o is ComboboxOption => o != null);\n }, [\n multiple,\n selectedOptions,\n options,\n multiValue,\n creatable,\n resolveOption,\n ]);\n\n const sizeClass = styles[`combobox--size-${toKebab(size)}`];\n const hasChips = multiple && chipOptions.length > 0;\n const rootClass = [\n styles.combobox,\n sizeClass,\n invalid ? styles['combobox--invalid'] : '',\n label != null && labelFloated ? styles['combobox--label-floated'] : '',\n leadingIcon != null ? styles['combobox--has-leading-icon'] : '',\n hasChips ? styles['combobox--has-chips'] : '',\n isOpen ? styles['combobox--open'] : '',\n disabled ? styles['combobox--disabled'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} ref={rootRef}>\n <div className={styles.combobox__wrapper} ref={anchorRef}>\n {label != null && (\n <label className={styles.combobox__label} htmlFor={id}>\n {label}\n </label>\n )}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- pointer convenience; the input owns keyboard interaction */}\n <div\n className={styles.combobox__inner}\n onMouseDown={handleWrapperMouseDown}\n >\n {leadingIcon != null && (\n <span className={styles['combobox__leading-icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n </span>\n )}\n <div className={styles.combobox__value}>\n {multiple && chipOptions.length > 0 && (\n <ChipGroup\n aria-label={selectionsLabel ?? defaultSelectionsLabel(label)}\n disabled={disabled}\n >\n {chipOptions.map((option) => (\n <Chip\n key={option.value}\n size={CHIP_SIZE_BY_COMBOBOX[size]}\n leadingAvatar={option.leadingAvatar}\n leadingIcon={\n option.leadingAvatar == null\n ? option.leadingVisual\n : undefined\n }\n onRemove={\n disabled\n ? undefined\n : (ev) => {\n ev.stopPropagation();\n removeValue(option.value);\n }\n }\n >\n {option.label}\n </Chip>\n ))}\n </ChipGroup>\n )}\n <input\n {...rest}\n ref={setInputRef}\n id={id}\n className={styles.combobox__control}\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n placeholder={\n multiple && chipOptions.length > 0 ? undefined : placeholder\n }\n value={displayInput}\n aria-label={ariaLabel}\n aria-describedby={describedBy || undefined}\n aria-required={required ? true : undefined}\n aria-invalid={invalid ? true : undefined}\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-busy={loading || undefined}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n />\n </div>\n {showClearButton && (\n <button\n {...clearButtonProps}\n type=\"button\"\n className={mergeClassNames(\n styles.combobox__clear,\n clearButtonProps?.className,\n )}\n aria-label={clearLabel}\n data-combobox-clear=\"\"\n onClick={clearValue}\n onBlur={(e) => {\n clearButtonProps?.onBlur?.(e);\n handleBlur(e);\n }}\n >\n <Icon size={CLEAR_ICON_SIZE[size]} glyph={<CloseCircleIcon />} />\n </button>\n )}\n <span className={styles['combobox__trailing-icon']} aria-hidden>\n <Icon size=\"12\" glyph={<ChevronDownIcon />} />\n </span>\n </div>\n </div>\n\n {popupMounted &&\n renderPortal(\n <div\n ref={portalRef}\n className={[\n styles.combobox__popup,\n placement === 'above' ? styles['combobox__popup--above'] : '',\n popupVisible ? styles['combobox__popup--visible'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={popupStyle}\n >\n <PopoverMenu className={styles.combobox__menu}>\n <PopoverMenuScroll maxHeight={maxHeight}>\n {rows.length > 0 && (\n <ul\n id={listboxId}\n className={styles.combobox__list}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n aria-label={\n typeof label === 'string'\n ? label\n : (ariaLabel ?? listboxLabel)\n }\n >\n {rows.map((row, index) => {\n const active = index === activeIndex;\n const preventBlur = (ev: MouseEvent) => {\n // Prevent input blur before click handler\n ev.preventDefault();\n };\n if (row.kind === 'create') {\n return (\n <li\n key={rowId(row)}\n className={styles.combobox__option}\n role=\"presentation\"\n >\n <MenuItem\n id={rowId(row)}\n role=\"option\"\n label={formatCreateLabel(row.inputValue)}\n leadingVisual={<Icon glyph={<PlusIcon />} />}\n active={active}\n aria-selected={false}\n onMouseDown={preventBlur}\n onMouseEnter={() => hoverRow(index)}\n onClick={() => createValue(row.inputValue)}\n />\n </li>\n );\n }\n const { option } = row;\n const selected = isSelected(option.value);\n const leading = optionLeadingVisual(option);\n return (\n <li\n key={option.value}\n className={styles.combobox__option}\n role=\"presentation\"\n >\n <MenuItem\n {...mergeMenuItemProps(\n menuItemProps,\n option.menuItemProps,\n )}\n id={rowId(row)}\n role=\"option\"\n label={option.label}\n secondaryLabel={option.secondaryLabel}\n leadingElement={leading != null}\n leadingVisual={leading}\n trailingElement={selected}\n active={active}\n disabled={option.disabled}\n aria-selected={selected}\n onMouseDown={preventBlur}\n onMouseEnter={() => hoverRow(index)}\n onClick={() => selectOption(option)}\n />\n </li>\n );\n })}\n </ul>\n )}\n {loading ? (\n <div className={styles.combobox__loading} role=\"status\">\n <Spinner size=\"16\" aria-hidden />\n <span>{loadingMessage}</span>\n </div>\n ) : (\n rows.length === 0 && (\n <p className={styles.combobox__empty}>{emptyMessage}</p>\n )\n )}\n </PopoverMenuScroll>\n </PopoverMenu>\n </div>,\n )}\n </div>\n );\n});\n\nexport default Combobox;\n"],"names":["POPUP_MAX_HEIGHT","CHIP_SIZE_BY_COMBOBOX","CLEAR_ICON_SIZE","defaultSelectionsLabel","label","defaultFormatCreateLabel","inputValue","isRowDisabled","row","defaultFilter","option","query","toSingleValue","value","toMultiValue","optionLeadingVisual","jsx","UserAvatar","TeamAvatar","Combobox","forwardRef","options","menuItemProps","multiple","valueProp","defaultValue","onChange","inputValueProp","defaultInputValue","onInputChange","placeholder","leadingIcon","size","invalid","disabled","filter","emptyMessage","loading","loadingMessage","selectedOptions","creatable","onCreateOption","formatCreateLabel","clearable","clearLabel","clearButtonProps","selectionsLabel","listboxLabel","className","idProp","ariaLabel","describedBy","required","onFocus","onBlur","onKeyDown","portalContainer","zIndex","rest","ref","generatedId","useId","id","listboxId","rootRef","useRef","anchorRef","inputRef","setInputRef","useCallback","node","isValueControlled","uncontrolledValue","setUncontrolledValue","useState","rawValue","singleValue","multiValue","useMemo","isInputControlled","uncontrolledInput","setUncontrolledInput","isOpen","setIsOpen","isFocused","setIsFocused","activeIndex","setActiveIndex","activatedByPointer","hoverRow","index","queryOverride","setQueryOverride","resolveOption","optionValue","o","selectedOption","displayInput","filterQuery","setInputDisplay","next","commitValue","filteredOptions","fn","createInput","showCreateRow","needle","matches","text","rows","rowId","popupMounted","popupVisible","usePopoverTransition","placement","maxHeight","popupStyle","portalRef","renderPortal","useAnchoredPopupPortal","close","open","useOutsideClose","useEffect","prev","selectedIdx","isSelected","selectOption","v","_a","createValue","selectRow","clearValue","removeValue","moveActive","delta","enabled","i","currentPos","nextPos","_b","handleInputChange","handleFocus","handleBlur","related","handleKeyDown","handleInputFocus","handleInputBlur","handleInputKeyDown","handleWrapperMouseDown","hasSelection","hasInputText","showClearButton","labelFloated","activeRow","activeDescendant","chipOptions","fromOptions","listed","sizeClass","styles","toKebab","hasChips","rootClass","jsxs","IconSlotContext","ChipGroup","Chip","ev","mergeClassNames","Icon","CloseCircleIcon","ChevronDownIcon","PopoverMenu","PopoverMenuScroll","active","preventBlur","MenuItem","PlusIcon","selected","leading","mergeMenuItemProps","Spinner"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Combobox.css');const o="_combobox_10ikn_2",_="_combobox__wrapper_10ikn_8",b="_combobox__label_10ikn_26",c="_combobox__inner_10ikn_56",m="_combobox__value_10ikn_72",n="_combobox__control_10ikn_82",i="_combobox__clear_10ikn_120",x="_combobox__popup_10ikn_143",e="_combobox__menu_10ikn_159",l="_combobox__empty_10ikn_164",a="_combobox__loading_10ikn_172",p="_combobox__list_10ikn_182",t="_combobox__option_10ikn_187",s={combobox:o,combobox__wrapper:_,"combobox--disabled":"_combobox--disabled_10ikn_16",combobox__label:b,"combobox--label-floated":"_combobox--label-floated_10ikn_47",combobox__inner:c,"combobox__leading-icon":"_combobox__leading-icon_10ikn_64",combobox__value:m,combobox__control:n,"combobox__trailing-icon":"_combobox__trailing-icon_10ikn_107","combobox--open":"_combobox--open_10ikn_117",combobox__clear:i,combobox__popup:x,"combobox__popup--above":"_combobox__popup--above_10ikn_150","combobox__popup--visible":"_combobox__popup--visible_10ikn_153",combobox__menu:e,combobox__empty:l,combobox__loading:a,combobox__list:p,combobox__option:t,"combobox--size-small":"_combobox--size-small_10ikn_191","combobox--has-chips":"_combobox--has-chips_10ikn_198","combobox--size-medium":"_combobox--size-medium_10ikn_215","combobox--size-large":"_combobox--size-large_10ikn_243","combobox--invalid":"_combobox--invalid_10ikn_272","combobox--has-leading-icon":"_combobox--has-leading-icon_10ikn_284"};exports.combobox=o;exports.combobox__clear=i;exports.combobox__control=n;exports.combobox__empty=l;exports.combobox__inner=c;exports.combobox__label=b;exports.combobox__list=p;exports.combobox__loading=a;exports.combobox__menu=e;exports.combobox__option=t;exports.combobox__popup=x;exports.combobox__value=m;exports.combobox__wrapper=_;exports.default=s;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Combobox.css');const o="_combobox_2wg8l_2",_="_combobox__wrapper_2wg8l_8",b="_combobox__label_2wg8l_26",c="_combobox__inner_2wg8l_56",m="_combobox__value_2wg8l_72",l="_combobox__control_2wg8l_82",x="_combobox__clear_2wg8l_120",e="_combobox__popup_2wg8l_143",n="_combobox__menu_2wg8l_159",i="_combobox__empty_2wg8l_164",a="_combobox__loading_2wg8l_172",p="_combobox__list_2wg8l_182",t="_combobox__option_2wg8l_187",s={combobox:o,combobox__wrapper:_,"combobox--disabled":"_combobox--disabled_2wg8l_16",combobox__label:b,"combobox--label-floated":"_combobox--label-floated_2wg8l_47",combobox__inner:c,"combobox__leading-icon":"_combobox__leading-icon_2wg8l_64",combobox__value:m,combobox__control:l,"combobox__trailing-icon":"_combobox__trailing-icon_2wg8l_107","combobox--open":"_combobox--open_2wg8l_117",combobox__clear:x,combobox__popup:e,"combobox__popup--above":"_combobox__popup--above_2wg8l_150","combobox__popup--visible":"_combobox__popup--visible_2wg8l_153",combobox__menu:n,combobox__empty:i,combobox__loading:a,combobox__list:p,combobox__option:t,"combobox--size-small":"_combobox--size-small_2wg8l_191","combobox--has-chips":"_combobox--has-chips_2wg8l_198","combobox--has-leading-icon":"_combobox--has-leading-icon_2wg8l_201","combobox--size-medium":"_combobox--size-medium_2wg8l_218","combobox--size-large":"_combobox--size-large_2wg8l_249","combobox--invalid":"_combobox--invalid_2wg8l_281"};exports.combobox=o;exports.combobox__clear=x;exports.combobox__control=l;exports.combobox__empty=i;exports.combobox__inner=c;exports.combobox__label=b;exports.combobox__list=p;exports.combobox__loading=a;exports.combobox__menu=n;exports.combobox__option=t;exports.combobox__popup=e;exports.combobox__value=m;exports.combobox__wrapper=_;exports.default=s;
2
2
  //# sourceMappingURL=Combobox.module.scss.cjs.map
@@ -1,45 +1,45 @@
1
- import './Combobox.css';const o = "_combobox_10ikn_2", _ = "_combobox__wrapper_10ikn_8", b = "_combobox__label_10ikn_26", c = "_combobox__inner_10ikn_56", m = "_combobox__value_10ikn_72", n = "_combobox__control_10ikn_82", i = "_combobox__clear_10ikn_120", x = "_combobox__popup_10ikn_143", e = "_combobox__menu_10ikn_159", l = "_combobox__empty_10ikn_164", a = "_combobox__loading_10ikn_172", p = "_combobox__list_10ikn_182", s = "_combobox__option_10ikn_187", t = {
1
+ import './Combobox.css';const o = "_combobox_2wg8l_2", _ = "_combobox__wrapper_2wg8l_8", b = "_combobox__label_2wg8l_26", c = "_combobox__inner_2wg8l_56", m = "_combobox__value_2wg8l_72", l = "_combobox__control_2wg8l_82", x = "_combobox__clear_2wg8l_120", e = "_combobox__popup_2wg8l_143", n = "_combobox__menu_2wg8l_159", i = "_combobox__empty_2wg8l_164", a = "_combobox__loading_2wg8l_172", p = "_combobox__list_2wg8l_182", s = "_combobox__option_2wg8l_187", g = {
2
2
  combobox: o,
3
3
  combobox__wrapper: _,
4
- "combobox--disabled": "_combobox--disabled_10ikn_16",
4
+ "combobox--disabled": "_combobox--disabled_2wg8l_16",
5
5
  combobox__label: b,
6
- "combobox--label-floated": "_combobox--label-floated_10ikn_47",
6
+ "combobox--label-floated": "_combobox--label-floated_2wg8l_47",
7
7
  combobox__inner: c,
8
- "combobox__leading-icon": "_combobox__leading-icon_10ikn_64",
8
+ "combobox__leading-icon": "_combobox__leading-icon_2wg8l_64",
9
9
  combobox__value: m,
10
- combobox__control: n,
11
- "combobox__trailing-icon": "_combobox__trailing-icon_10ikn_107",
12
- "combobox--open": "_combobox--open_10ikn_117",
13
- combobox__clear: i,
14
- combobox__popup: x,
15
- "combobox__popup--above": "_combobox__popup--above_10ikn_150",
16
- "combobox__popup--visible": "_combobox__popup--visible_10ikn_153",
17
- combobox__menu: e,
18
- combobox__empty: l,
10
+ combobox__control: l,
11
+ "combobox__trailing-icon": "_combobox__trailing-icon_2wg8l_107",
12
+ "combobox--open": "_combobox--open_2wg8l_117",
13
+ combobox__clear: x,
14
+ combobox__popup: e,
15
+ "combobox__popup--above": "_combobox__popup--above_2wg8l_150",
16
+ "combobox__popup--visible": "_combobox__popup--visible_2wg8l_153",
17
+ combobox__menu: n,
18
+ combobox__empty: i,
19
19
  combobox__loading: a,
20
20
  combobox__list: p,
21
21
  combobox__option: s,
22
- "combobox--size-small": "_combobox--size-small_10ikn_191",
23
- "combobox--has-chips": "_combobox--has-chips_10ikn_198",
24
- "combobox--size-medium": "_combobox--size-medium_10ikn_215",
25
- "combobox--size-large": "_combobox--size-large_10ikn_243",
26
- "combobox--invalid": "_combobox--invalid_10ikn_272",
27
- "combobox--has-leading-icon": "_combobox--has-leading-icon_10ikn_284"
22
+ "combobox--size-small": "_combobox--size-small_2wg8l_191",
23
+ "combobox--has-chips": "_combobox--has-chips_2wg8l_198",
24
+ "combobox--has-leading-icon": "_combobox--has-leading-icon_2wg8l_201",
25
+ "combobox--size-medium": "_combobox--size-medium_2wg8l_218",
26
+ "combobox--size-large": "_combobox--size-large_2wg8l_249",
27
+ "combobox--invalid": "_combobox--invalid_2wg8l_281"
28
28
  };
29
29
  export {
30
30
  o as combobox,
31
- i as combobox__clear,
32
- n as combobox__control,
33
- l as combobox__empty,
31
+ x as combobox__clear,
32
+ l as combobox__control,
33
+ i as combobox__empty,
34
34
  c as combobox__inner,
35
35
  b as combobox__label,
36
36
  p as combobox__list,
37
37
  a as combobox__loading,
38
- e as combobox__menu,
38
+ n as combobox__menu,
39
39
  s as combobox__option,
40
- x as combobox__popup,
40
+ e as combobox__popup,
41
41
  m as combobox__value,
42
42
  _ as combobox__wrapper,
43
- t as default
43
+ g as default
44
44
  };
45
45
  //# sourceMappingURL=Combobox.module.scss.js.map
@@ -1,3 +1,3 @@
1
1
  export { default as Combobox } from './Combobox';
2
- export type { ComboboxProps, ComboboxSize, ComboboxOption } from './Combobox';
2
+ export type { ComboboxProps, ComboboxSize, ComboboxOption, ComboboxOwnedInputProps, } from './Combobox';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- ._dropdown_1v31c_2{display:inline-flex;align-items:center;background:transparent;border:0;border-radius:var(--radius-s);cursor:pointer;font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);outline:2px solid color-mix(in srgb,var(--focus-ring-color) 0%,transparent);outline-offset:0;transition:background-color var(--duration-quick) var(--ease-transition),outline-color var(--duration-quick) var(--ease-transition),outline-offset var(--duration-quick) var(--ease-transition);padding:0}._dropdown_1v31c_2:focus-visible{outline-color:var(--focus-ring-color);outline-offset:3px}._dropdown_1v31c_2:hover:not(:disabled){background-color:rgba(var(--center-channel-color-rgb),.08)}._dropdown_1v31c_2:active:not(:disabled){background-color:rgba(var(--center-channel-color-rgb),.12)}._dropdown_1v31c_2:disabled{opacity:.56;cursor:not-allowed}._dropdown_1v31c_2 .button__label{display:contents}._dropdown__trigger_1v31c_34{display:inline-flex;align-items:center}._dropdown__content_1v31c_38{display:inline-flex;align-items:center;flex-shrink:0}._dropdown__leading-icon_1v31c_43{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}._dropdown__label_1v31c_50{white-space:nowrap;color:inherit}._dropdown__chevron_1v31c_54{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit;transition:transform var(--duration-quick) var(--ease-transition)}._dropdown__chevron_1v31c_54 svg{display:block;width:var(--icon-size-12);height:var(--icon-size-12)}._dropdown--open_1v31c_67 ._dropdown__chevron_1v31c_54{transform:rotate(180deg)}._dropdown--size-x-small_1v31c_70{padding-left:var(--spacing-xxxs);padding-right:var(--spacing-xxxxs)}._dropdown--size-x-small_1v31c_70 ._dropdown__trigger_1v31c_34,._dropdown--size-x-small_1v31c_70 ._dropdown__content_1v31c_38{gap:var(--spacing-xxxs)}._dropdown--size-x-small_1v31c_70 ._dropdown__label_1v31c_50{font-size:var(--font-size-50);line-height:var(--line-height-50);letter-spacing:.01em}._dropdown--size-x-small_1v31c_70 ._dropdown__leading-icon_1v31c_43 svg{width:var(--icon-size-12);height:var(--icon-size-12)}._dropdown--size-small_1v31c_89{padding:var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxs)}._dropdown--size-small_1v31c_89 ._dropdown__trigger_1v31c_34,._dropdown--size-small_1v31c_89 ._dropdown__content_1v31c_38{gap:var(--spacing-xxxs)}._dropdown--size-small_1v31c_89 ._dropdown__label_1v31c_50{font-size:var(--font-size-75);line-height:var(--line-height-75)}._dropdown--size-small_1v31c_89 ._dropdown__leading-icon_1v31c_43 svg{width:var(--icon-size-12);height:var(--icon-size-12)}._dropdown--size-medium_1v31c_106{padding:var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxs)}._dropdown--size-medium_1v31c_106 ._dropdown__trigger_1v31c_34{gap:var(--spacing-xxxs)}._dropdown--size-medium_1v31c_106 ._dropdown__content_1v31c_38{gap:var(--spacing-xs)}._dropdown--size-medium_1v31c_106 ._dropdown__label_1v31c_50{font-size:var(--font-size-100);line-height:var(--line-height-100)}._dropdown--size-medium_1v31c_106 ._dropdown__chevron_1v31c_54 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._dropdown--size-medium_1v31c_106 ._dropdown__leading-icon_1v31c_43 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._dropdown--size-medium_1v31c_106._dropdown--padding-compact_1v31c_127{padding:var(--spacing-xxs) var(--spacing-xs) var(--spacing-xxs) var(--spacing-xs)}._dropdown--size-large_1v31c_130{padding:var(--spacing-xxxxs) var(--spacing-xxxs) var(--spacing-xxxxs) var(--spacing-xxs)}._dropdown--size-large_1v31c_130 ._dropdown__trigger_1v31c_34{gap:var(--spacing-xxxs)}._dropdown--size-large_1v31c_130 ._dropdown__content_1v31c_38{gap:var(--spacing-s)}._dropdown--size-large_1v31c_130 ._dropdown__label_1v31c_50{font-family:var(--font-family-heading);font-size:var(--font-size-200);line-height:var(--line-height-200)}._dropdown--size-large_1v31c_130 ._dropdown__chevron_1v31c_54 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._dropdown--size-x-large_1v31c_148{padding:0 var(--spacing-xxs) 0 var(--spacing-xs)}._dropdown--size-x-large_1v31c_148 ._dropdown__trigger_1v31c_34{gap:var(--spacing-xxxs)}._dropdown--size-x-large_1v31c_148 ._dropdown__content_1v31c_38{gap:var(--spacing-s)}._dropdown--size-x-large_1v31c_148 ._dropdown__label_1v31c_50{font-family:var(--font-family-heading);font-size:var(--font-size-700);line-height:var(--line-height-700)}._dropdown--size-x-large_1v31c_148 ._dropdown__chevron_1v31c_54 svg{width:var(--icon-size-20);height:var(--icon-size-20)}._dropdown--appearance-inverted_1v31c_166{color:var(--sidebar-text)}._dropdown--appearance-inverted_1v31c_166:hover:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.12)}._dropdown--appearance-inverted_1v31c_166:active:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.2)}
1
+ ._dropdown_19vna_2{display:inline-flex;align-items:center;background:transparent;border:0;border-radius:var(--radius-s);cursor:pointer;font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);outline:2px solid color-mix(in srgb,var(--focus-ring-color) 0%,transparent);outline-offset:0;transition:background-color var(--duration-quick) var(--ease-transition),outline-color var(--duration-quick) var(--ease-transition),outline-offset var(--duration-quick) var(--ease-transition);padding:0}._dropdown_19vna_2._dropdown_19vna_2._dropdown_19vna_2{--button-fg: var(--center-channel-color)}._dropdown_19vna_2:focus-visible{outline-color:var(--focus-ring-color);outline-offset:3px}._dropdown_19vna_2:hover:not(:disabled){background-color:rgba(var(--center-channel-color-rgb),.08)}._dropdown_19vna_2:active:not(:disabled){background-color:rgba(var(--center-channel-color-rgb),.12)}._dropdown_19vna_2:disabled{opacity:.56;cursor:not-allowed}._dropdown_19vna_2 .button__label{display:contents}._dropdown__trigger_19vna_37{display:inline-flex;align-items:center}._dropdown__content_19vna_41{display:inline-flex;align-items:center;flex-shrink:0}._dropdown__leading-icon_19vna_46{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}._dropdown__label_19vna_53{white-space:nowrap;color:inherit}._dropdown__chevron_19vna_57{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit;transition:transform var(--duration-quick) var(--ease-transition)}._dropdown__chevron_19vna_57 svg{display:block;width:var(--icon-size-12);height:var(--icon-size-12)}._dropdown--open_19vna_70 ._dropdown__chevron_19vna_57{transform:rotate(180deg)}._dropdown--size-x-small_19vna_73{padding-left:var(--spacing-xxxs);padding-right:var(--spacing-xxxxs)}._dropdown--size-x-small_19vna_73 ._dropdown__trigger_19vna_37,._dropdown--size-x-small_19vna_73 ._dropdown__content_19vna_41{gap:var(--spacing-xxxs)}._dropdown--size-x-small_19vna_73 ._dropdown__label_19vna_53{font-size:var(--font-size-50);line-height:var(--line-height-50);letter-spacing:.01em}._dropdown--size-x-small_19vna_73 ._dropdown__leading-icon_19vna_46 svg{width:var(--icon-size-12);height:var(--icon-size-12)}._dropdown--size-small_19vna_92{padding:var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxs)}._dropdown--size-small_19vna_92 ._dropdown__trigger_19vna_37,._dropdown--size-small_19vna_92 ._dropdown__content_19vna_41{gap:var(--spacing-xxxs)}._dropdown--size-small_19vna_92 ._dropdown__label_19vna_53{font-size:var(--font-size-75);line-height:var(--line-height-75)}._dropdown--size-small_19vna_92 ._dropdown__leading-icon_19vna_46 svg{width:var(--icon-size-12);height:var(--icon-size-12)}._dropdown--size-medium_19vna_109{padding:var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxxs) var(--spacing-xxxs)}._dropdown--size-medium_19vna_109 ._dropdown__trigger_19vna_37{gap:var(--spacing-xxxs)}._dropdown--size-medium_19vna_109 ._dropdown__content_19vna_41{gap:var(--spacing-xs)}._dropdown--size-medium_19vna_109 ._dropdown__label_19vna_53{font-size:var(--font-size-100);line-height:var(--line-height-100)}._dropdown--size-medium_19vna_109 ._dropdown__chevron_19vna_57 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._dropdown--size-medium_19vna_109 ._dropdown__leading-icon_19vna_46 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._dropdown--size-medium_19vna_109._dropdown--padding-compact_19vna_130{padding:var(--spacing-xxs) var(--spacing-xs) var(--spacing-xxs) var(--spacing-xs)}._dropdown--size-large_19vna_133{padding:var(--spacing-xxxxs) var(--spacing-xxxs) var(--spacing-xxxxs) var(--spacing-xxs)}._dropdown--size-large_19vna_133 ._dropdown__trigger_19vna_37{gap:var(--spacing-xxxs)}._dropdown--size-large_19vna_133 ._dropdown__content_19vna_41{gap:var(--spacing-s)}._dropdown--size-large_19vna_133 ._dropdown__label_19vna_53{font-family:var(--font-family-heading);font-size:var(--font-size-200);line-height:var(--line-height-200)}._dropdown--size-large_19vna_133 ._dropdown__chevron_19vna_57 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._dropdown--size-x-large_19vna_151{padding:0 var(--spacing-xxs) 0 var(--spacing-xs)}._dropdown--size-x-large_19vna_151 ._dropdown__trigger_19vna_37{gap:var(--spacing-xxxs)}._dropdown--size-x-large_19vna_151 ._dropdown__content_19vna_41{gap:var(--spacing-s)}._dropdown--size-x-large_19vna_151 ._dropdown__label_19vna_53{font-family:var(--font-family-heading);font-size:var(--font-size-700);line-height:var(--line-height-700)}._dropdown--size-x-large_19vna_151 ._dropdown__chevron_19vna_57 svg{width:var(--icon-size-20);height:var(--icon-size-20)}._dropdown--appearance-inverted_19vna_169._dropdown_19vna_2._dropdown_19vna_2{--button-fg: var(--sidebar-text);color:var(--sidebar-text)}._dropdown--appearance-inverted_19vna_169._dropdown_19vna_2._dropdown_19vna_2:hover:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.12)}._dropdown--appearance-inverted_19vna_169._dropdown_19vna_2._dropdown_19vna_2:active:not(:disabled){background-color:rgba(var(--sidebar-text-rgb),.2)}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Dropdown.css');const o="_dropdown_1v31c_2",d="_dropdown__trigger_1v31c_34",_="_dropdown__content_1v31c_38",n="_dropdown__label_1v31c_50",r="_dropdown__chevron_1v31c_54",e={dropdown:o,dropdown__trigger:d,dropdown__content:_,"dropdown__leading-icon":"_dropdown__leading-icon_1v31c_43",dropdown__label:n,dropdown__chevron:r,"dropdown--open":"_dropdown--open_1v31c_67","dropdown--size-x-small":"_dropdown--size-x-small_1v31c_70","dropdown--size-small":"_dropdown--size-small_1v31c_89","dropdown--size-medium":"_dropdown--size-medium_1v31c_106","dropdown--padding-compact":"_dropdown--padding-compact_1v31c_127","dropdown--size-large":"_dropdown--size-large_1v31c_130","dropdown--size-x-large":"_dropdown--size-x-large_1v31c_148","dropdown--appearance-inverted":"_dropdown--appearance-inverted_1v31c_166"};exports.default=e;exports.dropdown=o;exports.dropdown__chevron=r;exports.dropdown__content=_;exports.dropdown__label=n;exports.dropdown__trigger=d;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Dropdown.css');const o="_dropdown_19vna_2",d="_dropdown__trigger_19vna_37",n="_dropdown__content_19vna_41",_="_dropdown__label_19vna_53",r="_dropdown__chevron_19vna_57",e={dropdown:o,dropdown__trigger:d,dropdown__content:n,"dropdown__leading-icon":"_dropdown__leading-icon_19vna_46",dropdown__label:_,dropdown__chevron:r,"dropdown--open":"_dropdown--open_19vna_70","dropdown--size-x-small":"_dropdown--size-x-small_19vna_73","dropdown--size-small":"_dropdown--size-small_19vna_92","dropdown--size-medium":"_dropdown--size-medium_19vna_109","dropdown--padding-compact":"_dropdown--padding-compact_19vna_130","dropdown--size-large":"_dropdown--size-large_19vna_133","dropdown--size-x-large":"_dropdown--size-x-large_19vna_151","dropdown--appearance-inverted":"_dropdown--appearance-inverted_19vna_169"};exports.default=e;exports.dropdown=o;exports.dropdown__chevron=r;exports.dropdown__content=n;exports.dropdown__label=_;exports.dropdown__trigger=d;
2
2
  //# sourceMappingURL=Dropdown.module.scss.cjs.map
@@ -1,25 +1,25 @@
1
- import './Dropdown.css';const o = "_dropdown_1v31c_2", d = "_dropdown__trigger_1v31c_34", _ = "_dropdown__content_1v31c_38", n = "_dropdown__label_1v31c_50", r = "_dropdown__chevron_1v31c_54", p = {
1
+ import './Dropdown.css';const o = "_dropdown_19vna_2", d = "_dropdown__trigger_19vna_37", n = "_dropdown__content_19vna_41", _ = "_dropdown__label_19vna_53", r = "_dropdown__chevron_19vna_57", p = {
2
2
  dropdown: o,
3
3
  dropdown__trigger: d,
4
- dropdown__content: _,
5
- "dropdown__leading-icon": "_dropdown__leading-icon_1v31c_43",
6
- dropdown__label: n,
4
+ dropdown__content: n,
5
+ "dropdown__leading-icon": "_dropdown__leading-icon_19vna_46",
6
+ dropdown__label: _,
7
7
  dropdown__chevron: r,
8
- "dropdown--open": "_dropdown--open_1v31c_67",
9
- "dropdown--size-x-small": "_dropdown--size-x-small_1v31c_70",
10
- "dropdown--size-small": "_dropdown--size-small_1v31c_89",
11
- "dropdown--size-medium": "_dropdown--size-medium_1v31c_106",
12
- "dropdown--padding-compact": "_dropdown--padding-compact_1v31c_127",
13
- "dropdown--size-large": "_dropdown--size-large_1v31c_130",
14
- "dropdown--size-x-large": "_dropdown--size-x-large_1v31c_148",
15
- "dropdown--appearance-inverted": "_dropdown--appearance-inverted_1v31c_166"
8
+ "dropdown--open": "_dropdown--open_19vna_70",
9
+ "dropdown--size-x-small": "_dropdown--size-x-small_19vna_73",
10
+ "dropdown--size-small": "_dropdown--size-small_19vna_92",
11
+ "dropdown--size-medium": "_dropdown--size-medium_19vna_109",
12
+ "dropdown--padding-compact": "_dropdown--padding-compact_19vna_130",
13
+ "dropdown--size-large": "_dropdown--size-large_19vna_133",
14
+ "dropdown--size-x-large": "_dropdown--size-x-large_19vna_151",
15
+ "dropdown--appearance-inverted": "_dropdown--appearance-inverted_19vna_169"
16
16
  };
17
17
  export {
18
18
  p as default,
19
19
  o as dropdown,
20
20
  r as dropdown__chevron,
21
- _ as dropdown__content,
22
- n as dropdown__label,
21
+ n as dropdown__content,
22
+ _ as dropdown__label,
23
23
  d as dropdown__trigger
24
24
  };
25
25
  //# sourceMappingURL=Dropdown.module.scss.js.map
@@ -1 +1 @@
1
- ._global-banner_weys9_2{display:flex;align-items:center;justify-content:center;height:40px;width:100%;position:relative;background-color:var(--neutral-900);padding:0 var(--spacing-xxl)}._global-banner__content_weys9_12{display:flex;align-items:center;justify-content:center;gap:var(--spacing-s)}._global-banner__icon_weys9_18{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--neutral-0)}._global-banner__message_weys9_25{font-size:var(--font-size-100);font-weight:var(--font-weight-semibold);line-height:var(--line-height-100);color:var(--neutral-0);white-space:nowrap;text-align:center}._global-banner__dismiss_weys9_33{position:absolute;right:var(--spacing-xxs);top:50%;transform:translateY(-50%);color:color-mix(in srgb,var(--neutral-0) 92%,transparent)!important}._global-banner__dismiss_weys9_33:hover:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 12%,transparent)!important;color:var(--neutral-0)!important}._global-banner__dismiss_weys9_33:active:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 20%,transparent)!important;color:var(--neutral-0)!important}._global-banner__dismiss_weys9_33:focus-visible{outline:2px solid color-mix(in srgb,var(--neutral-0) 56%,transparent)!important;outline-offset:2px!important;box-shadow:none!important}._global-banner__action_weys9_53{flex-shrink:0;background-color:color-mix(in srgb,var(--neutral-0) 8%,transparent)!important;color:var(--neutral-0)!important;border-color:transparent!important}._global-banner__action_weys9_53:hover:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 12%,transparent)!important;color:var(--neutral-0)!important}._global-banner__action_weys9_53:active:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 16%,transparent)!important;color:var(--neutral-0)!important}._global-banner__action_weys9_53:focus-visible{outline:2px solid color-mix(in srgb,var(--neutral-0) 56%,transparent)!important;outline-offset:2px!important;box-shadow:none!important}._global-banner__action_weys9_53:disabled{color:color-mix(in srgb,var(--neutral-0) 40%,transparent)!important;background-color:color-mix(in srgb,var(--neutral-0) 6%,transparent)!important}._global-banner--type-warning_weys9_76{background-color:rgb(var(--semantic-color-warning))}._global-banner--type-danger_weys9_79{background-color:rgb(var(--semantic-color-danger))}._global-banner--type-info_weys9_82{background-color:rgb(var(--semantic-color-info))}._global-banner--type-success_weys9_85{background-color:rgb(var(--semantic-color-success))}
1
+ ._global-banner_w1gsb_2{display:flex;align-items:center;justify-content:center;height:40px;width:100%;position:relative;background-color:var(--neutral-900);padding:0 var(--spacing-xxl)}._global-banner__content_w1gsb_12{display:flex;align-items:center;justify-content:center;gap:var(--spacing-s)}._global-banner__icon_w1gsb_18{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--neutral-0)}._global-banner__message_w1gsb_25{font-size:var(--font-size-100);font-weight:var(--font-weight-semibold);line-height:var(--line-height-100);color:var(--neutral-0);white-space:nowrap;text-align:center}._global-banner__dismiss_w1gsb_33{position:absolute;right:var(--spacing-xxs);top:50%;transform:translateY(-50%);color:color-mix(in srgb,var(--neutral-0) 92%,transparent)!important}._global-banner__dismiss_w1gsb_33:hover:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 12%,transparent)!important;color:var(--neutral-0)!important}._global-banner__dismiss_w1gsb_33:active:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 20%,transparent)!important;color:var(--neutral-0)!important}._global-banner__dismiss_w1gsb_33:focus-visible{outline:2px solid color-mix(in srgb,var(--neutral-0) 56%,transparent)!important;outline-offset:2px!important;box-shadow:none!important}._global-banner__action_w1gsb_53{flex-shrink:0;background-color:color-mix(in srgb,var(--neutral-0) 8%,transparent)!important;--button-fg: var(--neutral-0) !important;border-color:transparent!important}._global-banner__action_w1gsb_53:hover:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 12%,transparent)!important;--button-fg: var(--neutral-0) !important}._global-banner__action_w1gsb_53:active:not(:disabled){background-color:color-mix(in srgb,var(--neutral-0) 16%,transparent)!important;--button-fg: var(--neutral-0) !important}._global-banner__action_w1gsb_53:focus-visible{outline:2px solid color-mix(in srgb,var(--neutral-0) 56%,transparent)!important;outline-offset:2px!important;box-shadow:none!important}._global-banner__action_w1gsb_53:disabled{--button-fg: color-mix( in srgb, var(--neutral-0) 40%, transparent ) !important;background-color:color-mix(in srgb,var(--neutral-0) 6%,transparent)!important}._global-banner--type-warning_w1gsb_80{background-color:rgb(var(--semantic-color-warning))}._global-banner--type-danger_w1gsb_83{background-color:rgb(var(--semantic-color-danger))}._global-banner--type-info_w1gsb_86{background-color:rgb(var(--semantic-color-info))}._global-banner--type-success_w1gsb_89{background-color:rgb(var(--semantic-color-success))}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./GlobalBanner.css');const e={"global-banner":"_global-banner_weys9_2","global-banner__content":"_global-banner__content_weys9_12","global-banner__icon":"_global-banner__icon_weys9_18","global-banner__message":"_global-banner__message_weys9_25","global-banner__dismiss":"_global-banner__dismiss_weys9_33","global-banner__action":"_global-banner__action_weys9_53","global-banner--type-warning":"_global-banner--type-warning_weys9_76","global-banner--type-danger":"_global-banner--type-danger_weys9_79","global-banner--type-info":"_global-banner--type-info_weys9_82","global-banner--type-success":"_global-banner--type-success_weys9_85"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./GlobalBanner.css');const n={"global-banner":"_global-banner_w1gsb_2","global-banner__content":"_global-banner__content_w1gsb_12","global-banner__icon":"_global-banner__icon_w1gsb_18","global-banner__message":"_global-banner__message_w1gsb_25","global-banner__dismiss":"_global-banner__dismiss_w1gsb_33","global-banner__action":"_global-banner__action_w1gsb_53","global-banner--type-warning":"_global-banner--type-warning_w1gsb_80","global-banner--type-danger":"_global-banner--type-danger_w1gsb_83","global-banner--type-info":"_global-banner--type-info_w1gsb_86","global-banner--type-success":"_global-banner--type-success_w1gsb_89"};exports.default=n;
2
2
  //# sourceMappingURL=GlobalBanner.module.scss.cjs.map
@@ -1,14 +1,14 @@
1
1
  import './GlobalBanner.css';const n = {
2
- "global-banner": "_global-banner_weys9_2",
3
- "global-banner__content": "_global-banner__content_weys9_12",
4
- "global-banner__icon": "_global-banner__icon_weys9_18",
5
- "global-banner__message": "_global-banner__message_weys9_25",
6
- "global-banner__dismiss": "_global-banner__dismiss_weys9_33",
7
- "global-banner__action": "_global-banner__action_weys9_53",
8
- "global-banner--type-warning": "_global-banner--type-warning_weys9_76",
9
- "global-banner--type-danger": "_global-banner--type-danger_weys9_79",
10
- "global-banner--type-info": "_global-banner--type-info_weys9_82",
11
- "global-banner--type-success": "_global-banner--type-success_weys9_85"
2
+ "global-banner": "_global-banner_w1gsb_2",
3
+ "global-banner__content": "_global-banner__content_w1gsb_12",
4
+ "global-banner__icon": "_global-banner__icon_w1gsb_18",
5
+ "global-banner__message": "_global-banner__message_w1gsb_25",
6
+ "global-banner__dismiss": "_global-banner__dismiss_w1gsb_33",
7
+ "global-banner__action": "_global-banner__action_w1gsb_53",
8
+ "global-banner--type-warning": "_global-banner--type-warning_w1gsb_80",
9
+ "global-banner--type-danger": "_global-banner--type-danger_w1gsb_83",
10
+ "global-banner--type-info": "_global-banner--type-info_w1gsb_86",
11
+ "global-banner--type-success": "_global-banner--type-success_w1gsb_89"
12
12
  };
13
13
  export {
14
14
  n as default
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),a=require("react"),A=require("../../hooks/use-modal-focus.cjs"),D=require("../../hooks/use-popover-transition.cjs"),G=require("../scrollbar/Scrollbar.cjs"),J=require("../modal-footer/ModalFooter.cjs"),Q=require("../modal-header/ModalHeader.cjs"),U=require("../../utils/string.cjs"),e=require("./Modal.module.scss.cjs");function V({className:r="",style:n,size:i="small",title:s,subtitle:l,subtitlePlacement:c="below",hideTitle:u=!1,showBackButton:t=!1,onBack:d,backLabel:x,backButtonProps:y,onClose:m,closeLabel:I,closeButtonProps:R,headerDivider:g=!0,headerAction:F,headerSlot:N,bodyPadding:_="default",scrollable:b=!0,children:w,footer:v,footerLeading:j,footerType:f="2-actions",footerDivider:B=!0,closeOnEscape:P=!0,manageFocus:S=!0,initialFocusRef:k,active:p,transition:M,visible:z,...C}){const q=a.useRef(null);A.useModalFocus(q,{initialFocusRef:k,closeOnEscape:P,manageFocus:S,onClose:m,active:p});const h=a.useId(),H=e.default[`modal--size-${U.toKebab(i)}`],K=[e.default["modal__body-inner"],_==="menu"&&e.default["modal__body-inner--menu"],_==="none"&&e.default["modal__body-inner--none"],!b&&e.default["modal__body-inner--fill"]].filter(Boolean).join(" "),O=o.jsx("div",{className:K,children:w}),T=[e.default.modal__scroll,!b&&e.default["modal__scroll--fill"]].filter(Boolean).join(" "),$=v!=null||j!=null||f==="spacer-small"||f==="spacer-large";return o.jsxs("div",{...C,ref:q,tabIndex:-1,className:[e.default.modal,H,M&&e.default["modal--transition"],M&&z&&e.default["modal--visible"],r].filter(Boolean).join(" "),style:n,role:"dialog","aria-modal":"true","aria-labelledby":h,children:[o.jsx(Q.default,{title:s,titleId:h,subtitle:l,subtitlePlacement:c,hideTitle:u,showBackButton:t,onBack:d,backLabel:x,backButtonProps:y,onClose:m,closeLabel:I,closeButtonProps:R,divider:g,headerAction:F,headerSlot:N}),o.jsx("div",{className:e.default.modal__body,children:o.jsx(G.default,{className:T,children:O})}),$&&o.jsx(J.default,{type:f,divider:B,leading:j,children:v})]})}function W({open:r,onExited:n,...i}){const s=r!==void 0,{mounted:l,visible:c}=D.usePopoverTransition(r??!0),u=a.useRef(l),t=a.useRef(n);return t.current=n,a.useEffect(()=>{var d;u.current&&!l&&s&&((d=t.current)==null||d.call(t)),u.current=l},[l,s]),s&&!l?null:o.jsx(V,{...i,active:r??!0,transition:s,visible:c})}exports.default=W;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),j=require("react"),$=require("../../hooks/use-modal-focus.cjs"),A=require("../../hooks/use-popover-transition.cjs"),D=require("../scrollbar/Scrollbar.cjs"),G=require("../modal-footer/ModalFooter.cjs"),J=require("../modal-header/ModalHeader.cjs"),Q=require("../../utils/string.cjs"),U=require("../../utils/useOnExited.cjs"),e=require("./Modal.module.scss.cjs");function V({className:o="",style:a,size:r="small",title:s,subtitle:t,subtitlePlacement:n="below",hideTitle:x=!1,showBackButton:q=!1,onBack:M,backLabel:h,backButtonProps:y,onClose:u,closeLabel:I,closeButtonProps:g,headerDivider:F=!0,headerAction:N,headerSlot:R,bodyPadding:i="default",scrollable:c=!0,children:B,footer:f,footerLeading:m,footerType:d="2-actions",footerDivider:O=!0,closeOnEscape:P=!0,manageFocus:S=!0,initialFocusRef:k,active:p,transition:_,visible:w,...z}){const b=j.useRef(null);$.useModalFocus(b,{initialFocusRef:k,closeOnEscape:P,manageFocus:S,onClose:u,active:p});const v=j.useId(),C=e.default[`modal--size-${Q.toKebab(r)}`],E=[e.default["modal__body-inner"],i==="menu"&&e.default["modal__body-inner--menu"],i==="none"&&e.default["modal__body-inner--none"],!c&&e.default["modal__body-inner--fill"]].filter(Boolean).join(" "),H=l.jsx("div",{className:E,children:B}),K=[e.default.modal__scroll,!c&&e.default["modal__scroll--fill"]].filter(Boolean).join(" "),T=f!=null||m!=null||d==="spacer-small"||d==="spacer-large";return l.jsxs("div",{...z,ref:b,tabIndex:-1,className:[e.default.modal,C,_&&e.default["modal--transition"],_&&w&&e.default["modal--visible"],o].filter(Boolean).join(" "),style:a,role:"dialog","aria-modal":"true","aria-labelledby":v,children:[l.jsx(J.default,{title:s,titleId:v,subtitle:t,subtitlePlacement:n,hideTitle:x,showBackButton:q,onBack:M,backLabel:h,backButtonProps:y,onClose:u,closeLabel:I,closeButtonProps:g,divider:F,headerAction:N,headerSlot:R}),l.jsx("div",{className:e.default.modal__body,children:l.jsx(D.default,{className:K,children:H})}),T&&l.jsx(G.default,{type:d,divider:O,leading:m,children:f})]})}function W({open:o,onExited:a,...r}){const s=o!==void 0,{mounted:t,visible:n}=A.usePopoverTransition(o??!0);return U.useOnExited(t,a,s),s&&!t?null:l.jsx(V,{...r,active:o??!0,transition:s,visible:n})}exports.default=W;
2
2
  //# sourceMappingURL=Modal.cjs.map