@mattermost/compass-ui 0.1.0-alpha.20 → 0.1.0-alpha.22

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 (135) 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 +55 -3
  5. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  6. package/dist/components/combobox/Combobox.js +299 -272
  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/date-range-picker/DateRangePicker.css +1 -1
  13. package/dist/components/date-range-picker/DateRangePicker.module.scss.cjs +1 -1
  14. package/dist/components/date-range-picker/DateRangePicker.module.scss.js +26 -26
  15. package/dist/components/emoji-popover/EmojiPopover.css +1 -1
  16. package/dist/components/emoji-popover/EmojiPopover.module.scss.cjs +1 -1
  17. package/dist/components/emoji-popover/EmojiPopover.module.scss.js +21 -21
  18. package/dist/components/menu-item/MenuItem.cjs.map +1 -1
  19. package/dist/components/menu-item/MenuItem.css +1 -1
  20. package/dist/components/menu-item/MenuItem.d.ts +6 -1
  21. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  22. package/dist/components/menu-item/MenuItem.js.map +1 -1
  23. package/dist/components/menu-item/MenuItem.module.scss.cjs +1 -1
  24. package/dist/components/menu-item/MenuItem.module.scss.js +18 -18
  25. package/dist/components/modal/Modal.cjs +1 -1
  26. package/dist/components/modal/Modal.cjs.map +1 -1
  27. package/dist/components/modal/Modal.d.ts.map +1 -1
  28. package/dist/components/modal/Modal.js +91 -93
  29. package/dist/components/modal/Modal.js.map +1 -1
  30. package/dist/components/modal/ModalOverlay.cjs +2 -0
  31. package/dist/components/modal/ModalOverlay.cjs.map +1 -0
  32. package/dist/components/modal/ModalOverlay.css +1 -1
  33. package/dist/components/modal/ModalOverlay.d.ts +43 -0
  34. package/dist/components/modal/ModalOverlay.d.ts.map +1 -0
  35. package/dist/components/modal/ModalOverlay.js +59 -0
  36. package/dist/components/modal/ModalOverlay.js.map +1 -0
  37. package/dist/components/modal/ModalOverlay.module.scss.cjs +1 -1
  38. package/dist/components/modal/ModalOverlay.module.scss.js +3 -3
  39. package/dist/components/modal/index.cjs +1 -1
  40. package/dist/components/modal/index.d.ts +2 -0
  41. package/dist/components/modal/index.d.ts.map +1 -1
  42. package/dist/components/modal/index.js +4 -2
  43. package/dist/components/modal/index.js.map +1 -1
  44. package/dist/components/password-input/PasswordInput.css +1 -1
  45. package/dist/components/password-input/PasswordInput.module.scss.cjs +1 -1
  46. package/dist/components/password-input/PasswordInput.module.scss.js +12 -12
  47. package/dist/components/popover-menu/PopoverMenu.cjs +1 -1
  48. package/dist/components/popover-menu/PopoverMenu.cjs.map +1 -1
  49. package/dist/components/popover-menu/PopoverMenu.css +1 -1
  50. package/dist/components/popover-menu/PopoverMenu.d.ts +6 -2
  51. package/dist/components/popover-menu/PopoverMenu.d.ts.map +1 -1
  52. package/dist/components/popover-menu/PopoverMenu.js +29 -29
  53. package/dist/components/popover-menu/PopoverMenu.js.map +1 -1
  54. package/dist/components/popover-menu/PopoverMenu.module.scss.cjs +1 -1
  55. package/dist/components/popover-menu/PopoverMenu.module.scss.js +13 -12
  56. package/dist/components/popover-menu/PopoverMenu.module.scss.js.map +1 -1
  57. package/dist/components/profile-popover/ProfilePopover.css +1 -1
  58. package/dist/components/profile-popover/ProfilePopover.module.scss.cjs +1 -1
  59. package/dist/components/profile-popover/ProfilePopover.module.scss.js +33 -33
  60. package/dist/components/search-input/SearchInput.css +1 -1
  61. package/dist/components/search-input/SearchInput.module.scss.cjs +1 -1
  62. package/dist/components/search-input/SearchInput.module.scss.js +15 -15
  63. package/dist/components/team-avatar/TeamAvatar.cjs +1 -1
  64. package/dist/components/team-avatar/TeamAvatar.cjs.map +1 -1
  65. package/dist/components/team-avatar/TeamAvatar.css +1 -1
  66. package/dist/components/team-avatar/TeamAvatar.d.ts +8 -1
  67. package/dist/components/team-avatar/TeamAvatar.d.ts.map +1 -1
  68. package/dist/components/team-avatar/TeamAvatar.js +23 -21
  69. package/dist/components/team-avatar/TeamAvatar.js.map +1 -1
  70. package/dist/components/team-avatar/TeamAvatar.module.scss.cjs +1 -1
  71. package/dist/components/team-avatar/TeamAvatar.module.scss.js +17 -16
  72. package/dist/components/team-avatar/TeamAvatar.module.scss.js.map +1 -1
  73. package/dist/components/team-avatar/index.d.ts +1 -1
  74. package/dist/components/team-avatar/index.d.ts.map +1 -1
  75. package/dist/components/text-area/TextArea.css +1 -1
  76. package/dist/components/text-area/TextArea.module.scss.cjs +1 -1
  77. package/dist/components/text-area/TextArea.module.scss.js +12 -12
  78. package/dist/components/text-input/TextInput.css +1 -1
  79. package/dist/components/text-input/TextInput.module.scss.cjs +1 -1
  80. package/dist/components/text-input/TextInput.module.scss.js +19 -19
  81. package/dist/components/tile-button/TileButton.cjs +2 -0
  82. package/dist/components/tile-button/TileButton.cjs.map +1 -0
  83. package/dist/components/tile-button/TileButton.css +1 -0
  84. package/dist/components/tile-button/TileButton.d.ts +54 -0
  85. package/dist/components/tile-button/TileButton.d.ts.map +1 -0
  86. package/dist/components/tile-button/TileButton.js +74 -0
  87. package/dist/components/tile-button/TileButton.js.map +1 -0
  88. package/dist/components/tile-button/TileButton.module.scss.cjs +2 -0
  89. package/dist/components/tile-button/TileButton.module.scss.cjs.map +1 -0
  90. package/dist/components/tile-button/TileButton.module.scss.js +12 -0
  91. package/dist/components/tile-button/TileButton.module.scss.js.map +1 -0
  92. package/dist/components/{action-button → tile-button}/index.cjs +1 -1
  93. package/dist/components/tile-button/index.d.ts +3 -0
  94. package/dist/components/tile-button/index.d.ts.map +1 -0
  95. package/dist/components/tile-button/index.js +5 -0
  96. package/dist/components/tour-point/TourPoint.css +1 -1
  97. package/dist/components/tour-point/TourPoint.module.scss.cjs +1 -1
  98. package/dist/components/tour-point/TourPoint.module.scss.js +28 -28
  99. package/dist/index.cjs +1 -1
  100. package/dist/index.d.ts +2 -2
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +111 -109
  103. package/dist/index.js.map +1 -1
  104. package/dist/utils/scrollLock.cjs +2 -0
  105. package/dist/utils/scrollLock.cjs.map +1 -0
  106. package/dist/utils/scrollLock.d.ts +9 -0
  107. package/dist/utils/scrollLock.d.ts.map +1 -0
  108. package/dist/utils/scrollLock.js +38 -0
  109. package/dist/utils/scrollLock.js.map +1 -0
  110. package/dist/utils/slot.cjs.map +1 -1
  111. package/dist/utils/slot.d.ts +1 -1
  112. package/dist/utils/slot.js.map +1 -1
  113. package/dist/utils/useOnExited.cjs +2 -0
  114. package/dist/utils/useOnExited.cjs.map +1 -0
  115. package/dist/utils/useOnExited.d.ts +7 -0
  116. package/dist/utils/useOnExited.d.ts.map +1 -0
  117. package/dist/utils/useOnExited.js +14 -0
  118. package/dist/utils/useOnExited.js.map +1 -0
  119. package/package.json +5 -4
  120. package/dist/components/action-button/ActionButton.cjs +0 -2
  121. package/dist/components/action-button/ActionButton.cjs.map +0 -1
  122. package/dist/components/action-button/ActionButton.css +0 -1
  123. package/dist/components/action-button/ActionButton.d.ts +0 -54
  124. package/dist/components/action-button/ActionButton.d.ts.map +0 -1
  125. package/dist/components/action-button/ActionButton.js +0 -74
  126. package/dist/components/action-button/ActionButton.js.map +0 -1
  127. package/dist/components/action-button/ActionButton.module.scss.cjs +0 -2
  128. package/dist/components/action-button/ActionButton.module.scss.cjs.map +0 -1
  129. package/dist/components/action-button/ActionButton.module.scss.js +0 -12
  130. package/dist/components/action-button/ActionButton.module.scss.js.map +0 -1
  131. package/dist/components/action-button/index.d.ts +0 -3
  132. package/dist/components/action-button/index.d.ts.map +0 -1
  133. package/dist/components/action-button/index.js +0 -5
  134. /package/dist/components/{action-button → tile-button}/index.cjs.map +0 -0
  135. /package/dist/components/{action-button → tile-button}/index.js.map +0 -0
@@ -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 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 /** 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 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","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
- ._date-range-picker_212m8_2{--date-range-picker-day-size: calc(var(--icon-size-32) + var(--spacing-xxxs));display:flex;flex-direction:column;position:relative;width:100%}._date-range-picker__trigger_212m8_9{display:flex;align-items:center;gap:var(--spacing-s);padding:var(--spacing-s) var(--spacing-l);background-color:var(--center-channel-bg);border-radius:var(--radius-s);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.16);cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow var(--duration-quick) var(--ease-transition)}._date-range-picker_212m8_2:not(._date-range-picker--disabled_212m8_21):not(._date-range-picker--open_212m8_21):not(:focus-within) ._date-range-picker__trigger_212m8_9:hover{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.24)}._date-range-picker_212m8_2:focus-within ._date-range-picker__trigger_212m8_9,._date-range-picker--open_212m8_21 ._date-range-picker__trigger_212m8_9{outline:none;box-shadow:inset 0 0 0 1px var(--focus-ring-color),0 0 0 1px var(--focus-ring-color)}._date-range-picker__trigger_212m8_9:focus{outline:none}._date-range-picker__trigger_212m8_9:focus-visible{outline:none}._date-range-picker--disabled_212m8_21 ._date-range-picker__trigger_212m8_9{opacity:.56;cursor:not-allowed}._date-range-picker__calendar-icon_212m8_38{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64)}._date-range-picker__calendar-icon_212m8_38 svg{display:block;width:var(--icon-size-16);height:var(--icon-size-16)}._date-range-picker__value_212m8_50{flex:1 1 0;min-width:0;align-self:stretch;display:flex;align-items:center;font-family:var(--font-family-body);font-size:var(--font-size-100);line-height:var(--line-height-100);font-weight:var(--font-weight-regular);color:var(--center-channel-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._date-range-picker__trigger_212m8_9:not([data-has-value]) ._date-range-picker__value_212m8_50{color:rgba(var(--center-channel-color-rgb),.64)}._date-range-picker__chevron_212m8_68{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64);transition:transform var(--duration-quick) var(--ease-transition)}._date-range-picker__chevron_212m8_68 svg{display:block;width:var(--icon-size-16);height:var(--icon-size-16)}._date-range-picker--open_212m8_21 ._date-range-picker__chevron_212m8_68{transform:rotate(180deg)}._date-range-picker__popover_212m8_84{--date-range-picker-day-size: calc( var(--icon-size-32) + var(--spacing-xxxs) );width:340px;padding:var(--spacing-l);background-color:var(--center-channel-bg);border:1px solid rgba(var(--center-channel-color-rgb),.16);border-radius:var(--radius-s);box-shadow:var(--elevation-4);display:flex;flex-direction:column;gap:var(--spacing-xs);opacity:0;transform:scale(.9);transform-origin:top left;transition:opacity var(--duration-quick) var(--ease-exit),transform var(--duration-quick) var(--ease-exit);pointer-events:none}._date-range-picker__popover--above_212m8_103{transform-origin:bottom left}._date-range-picker__popover--visible_212m8_106{opacity:1;transform:scale(1);pointer-events:auto;transition:opacity var(--duration-quick) var(--ease-entrance),transform var(--duration-quick) var(--ease-entrance)}._date-range-picker__header_212m8_112{display:flex;align-items:center;justify-content:space-between;padding-left:var(--spacing-xs)}._date-range-picker__month-label_212m8_118{font-family:var(--font-family-heading);font-size:var(--font-size-200);line-height:var(--line-height-200);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}._date-range-picker__header-actions_212m8_129{display:flex;align-items:center;gap:var(--spacing-xxxs);flex-shrink:0}._date-range-picker__nav-buttons_212m8_135{display:flex;align-items:center}._date-range-picker__weekdays_212m8_139{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:center;padding:0}._date-range-picker__weekday_212m8_139{display:flex;align-items:center;justify-content:center;width:100%;font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);font-weight:var(--font-weight-semibold);color:rgba(var(--center-channel-color-rgb),.72);text-transform:uppercase;letter-spacing:.24px;text-align:center}._date-range-picker__grid_212m8_159{display:flex;flex-direction:column;gap:0}._date-range-picker__week_212m8_139{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:stretch}._date-range-picker__day-empty_212m8_169{display:block;height:var(--date-range-picker-day-size)}._date-range-picker__day-cell_212m8_173{display:flex;align-items:center;justify-content:center;height:var(--date-range-picker-day-size);min-width:0;position:relative;z-index:0}._date-range-picker__day-cell--in-range_212m8_182:before,._date-range-picker__day-cell--range-start_212m8_182:before,._date-range-picker__day-cell--range-end_212m8_182:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:-1;pointer-events:none}._date-range-picker__day-cell--in-range_212m8_182{background-color:rgba(var(--button-bg-rgb),.12)}._date-range-picker__day-cell--in-range_212m8_182:before{background-color:rgba(var(--button-bg-rgb),.12)}._date-range-picker__day-cell--range-start_212m8_182{background:linear-gradient(to right,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day-cell--range-start_212m8_182:before{background:linear-gradient(to right,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day-cell--range-end_212m8_182{background:linear-gradient(to left,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day-cell--range-end_212m8_182:before{background:linear-gradient(to left,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day_212m8_169{display:flex;align-items:center;justify-content:center;width:var(--date-range-picker-day-size);height:var(--date-range-picker-day-size);flex-shrink:0;background:transparent;border:0;border-radius:var(--radius-pill);font-family:var(--font-family-body);font-size:var(--font-size-100);line-height:var(--line-height-100);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);cursor:pointer;transition:background-color var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition)}._date-range-picker__day_212m8_169:hover:not(._date-range-picker__day--selected_212m8_225){background-color:rgba(var(--center-channel-color-rgb),.08)}._date-range-picker__day_212m8_169:focus{outline:none}._date-range-picker__day_212m8_169:focus-visible:not(._date-range-picker__day--selected_212m8_225){background-color:rgba(var(--center-channel-color-rgb),.08);box-shadow:0 0 0 2px rgba(var(--button-bg-rgb),.56)}._date-range-picker__day--selected_212m8_225:focus-visible{box-shadow:0 0 0 2px rgba(var(--button-bg-rgb),.56)}._date-range-picker__day--today_212m8_238{color:var(--link-color);font-weight:var(--font-weight-semibold)}._date-range-picker__day--selected_212m8_225{background-color:var(--button-bg);color:var(--button-color)}._date-range-picker__day--selected_212m8_225:hover{background-color:var(--button-bg);opacity:.92}._date-range-picker--disabled_212m8_21{pointer-events:none}
1
+ ._date-range-picker_c56gh_2{--date-range-picker-day-size: calc(var(--icon-size-32) + var(--spacing-xxxs));display:flex;flex-direction:column;position:relative;width:100%}._date-range-picker__trigger_c56gh_9{display:flex;align-items:center;gap:var(--spacing-s);padding:var(--spacing-s) var(--spacing-l);background-color:var(--center-channel-bg);border-radius:var(--radius-s);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.16);cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow var(--duration-quick) var(--ease-transition)}._date-range-picker_c56gh_2:not(._date-range-picker--disabled_c56gh_21):not(._date-range-picker--open_c56gh_21):not(:focus-within) ._date-range-picker__trigger_c56gh_9:hover{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.24)}._date-range-picker_c56gh_2:focus-within ._date-range-picker__trigger_c56gh_9,._date-range-picker--open_c56gh_21 ._date-range-picker__trigger_c56gh_9{outline:none;box-shadow:inset 0 0 0 1px var(--focus-ring-color),0 0 0 1px var(--focus-ring-color)}._date-range-picker__trigger_c56gh_9:focus{outline:none}._date-range-picker__trigger_c56gh_9:focus-visible{outline:none}._date-range-picker--disabled_c56gh_21 ._date-range-picker__trigger_c56gh_9{opacity:.56;cursor:not-allowed}._date-range-picker__calendar-icon_c56gh_38{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64)}._date-range-picker__calendar-icon_c56gh_38 svg{display:block;width:var(--icon-size-16);height:var(--icon-size-16)}._date-range-picker__value_c56gh_50{flex:1 1 0;min-width:0;align-self:stretch;display:flex;align-items:center;font-family:var(--font-family-body);font-size:var(--font-size-100);line-height:var(--line-height-100);font-weight:var(--font-weight-regular);color:var(--center-channel-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._date-range-picker__trigger_c56gh_9:not([data-has-value]) ._date-range-picker__value_c56gh_50{color:rgba(var(--center-channel-color-rgb),.64)}._date-range-picker__chevron_c56gh_68{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64);transition:transform var(--duration-quick) var(--ease-transition)}._date-range-picker__chevron_c56gh_68 svg{display:block;width:var(--icon-size-16);height:var(--icon-size-16)}._date-range-picker--open_c56gh_21 ._date-range-picker__chevron_c56gh_68{transform:rotate(180deg)}._date-range-picker__popover_c56gh_84{--date-range-picker-day-size: calc( var(--icon-size-32) + var(--spacing-xxxs) );width:340px;padding:var(--spacing-l);background-color:var(--center-channel-bg);border:1px solid rgba(var(--center-channel-color-rgb),.16);border-radius:var(--radius-m);box-shadow:var(--elevation-4);display:flex;flex-direction:column;gap:var(--spacing-xs);opacity:0;transform:scale(.9);transform-origin:top left;transition:opacity var(--duration-quick) var(--ease-exit),transform var(--duration-quick) var(--ease-exit);pointer-events:none}._date-range-picker__popover--above_c56gh_103{transform-origin:bottom left}._date-range-picker__popover--visible_c56gh_106{opacity:1;transform:scale(1);pointer-events:auto;transition:opacity var(--duration-quick) var(--ease-entrance),transform var(--duration-quick) var(--ease-entrance)}._date-range-picker__header_c56gh_112{display:flex;align-items:center;justify-content:space-between;padding-left:var(--spacing-xs)}._date-range-picker__month-label_c56gh_118{font-family:var(--font-family-heading);font-size:var(--font-size-200);line-height:var(--line-height-200);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}._date-range-picker__header-actions_c56gh_129{display:flex;align-items:center;gap:var(--spacing-xxxs);flex-shrink:0}._date-range-picker__nav-buttons_c56gh_135{display:flex;align-items:center}._date-range-picker__weekdays_c56gh_139{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:center;padding:0}._date-range-picker__weekday_c56gh_139{display:flex;align-items:center;justify-content:center;width:100%;font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);font-weight:var(--font-weight-semibold);color:rgba(var(--center-channel-color-rgb),.72);text-transform:uppercase;letter-spacing:.24px;text-align:center}._date-range-picker__grid_c56gh_159{display:flex;flex-direction:column;gap:0}._date-range-picker__week_c56gh_139{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:stretch}._date-range-picker__day-empty_c56gh_169{display:block;height:var(--date-range-picker-day-size)}._date-range-picker__day-cell_c56gh_173{display:flex;align-items:center;justify-content:center;height:var(--date-range-picker-day-size);min-width:0;position:relative;z-index:0}._date-range-picker__day-cell--in-range_c56gh_182:before,._date-range-picker__day-cell--range-start_c56gh_182:before,._date-range-picker__day-cell--range-end_c56gh_182:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:-1;pointer-events:none}._date-range-picker__day-cell--in-range_c56gh_182{background-color:rgba(var(--button-bg-rgb),.12)}._date-range-picker__day-cell--in-range_c56gh_182:before{background-color:rgba(var(--button-bg-rgb),.12)}._date-range-picker__day-cell--range-start_c56gh_182{background:linear-gradient(to right,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day-cell--range-start_c56gh_182:before{background:linear-gradient(to right,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day-cell--range-end_c56gh_182{background:linear-gradient(to left,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day-cell--range-end_c56gh_182:before{background:linear-gradient(to left,transparent 50%,rgba(var(--button-bg-rgb),.12) 50%)}._date-range-picker__day_c56gh_169{display:flex;align-items:center;justify-content:center;width:var(--date-range-picker-day-size);height:var(--date-range-picker-day-size);flex-shrink:0;background:transparent;border:0;border-radius:var(--radius-pill);font-family:var(--font-family-body);font-size:var(--font-size-100);line-height:var(--line-height-100);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);cursor:pointer;transition:background-color var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition)}._date-range-picker__day_c56gh_169:hover:not(._date-range-picker__day--selected_c56gh_225){background-color:rgba(var(--center-channel-color-rgb),.08)}._date-range-picker__day_c56gh_169:focus{outline:none}._date-range-picker__day_c56gh_169:focus-visible:not(._date-range-picker__day--selected_c56gh_225){background-color:rgba(var(--center-channel-color-rgb),.08);box-shadow:0 0 0 2px rgba(var(--button-bg-rgb),.56)}._date-range-picker__day--selected_c56gh_225:focus-visible{box-shadow:0 0 0 2px rgba(var(--button-bg-rgb),.56)}._date-range-picker__day--today_c56gh_238{color:var(--link-color);font-weight:var(--font-weight-semibold)}._date-range-picker__day--selected_c56gh_225{background-color:var(--button-bg);color:var(--button-color)}._date-range-picker__day--selected_c56gh_225:hover{background-color:var(--button-bg);opacity:.92}._date-range-picker--disabled_c56gh_21{pointer-events:none}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./DateRangePicker.css');const e={"date-range-picker":"_date-range-picker_212m8_2","date-range-picker__trigger":"_date-range-picker__trigger_212m8_9","date-range-picker--disabled":"_date-range-picker--disabled_212m8_21","date-range-picker--open":"_date-range-picker--open_212m8_21","date-range-picker__calendar-icon":"_date-range-picker__calendar-icon_212m8_38","date-range-picker__value":"_date-range-picker__value_212m8_50","date-range-picker__chevron":"_date-range-picker__chevron_212m8_68","date-range-picker__popover":"_date-range-picker__popover_212m8_84","date-range-picker__popover--above":"_date-range-picker__popover--above_212m8_103","date-range-picker__popover--visible":"_date-range-picker__popover--visible_212m8_106","date-range-picker__header":"_date-range-picker__header_212m8_112","date-range-picker__month-label":"_date-range-picker__month-label_212m8_118","date-range-picker__header-actions":"_date-range-picker__header-actions_212m8_129","date-range-picker__nav-buttons":"_date-range-picker__nav-buttons_212m8_135","date-range-picker__weekdays":"_date-range-picker__weekdays_212m8_139","date-range-picker__weekday":"_date-range-picker__weekday_212m8_139","date-range-picker__grid":"_date-range-picker__grid_212m8_159","date-range-picker__week":"_date-range-picker__week_212m8_139","date-range-picker__day-empty":"_date-range-picker__day-empty_212m8_169","date-range-picker__day-cell":"_date-range-picker__day-cell_212m8_173","date-range-picker__day-cell--in-range":"_date-range-picker__day-cell--in-range_212m8_182","date-range-picker__day-cell--range-start":"_date-range-picker__day-cell--range-start_212m8_182","date-range-picker__day-cell--range-end":"_date-range-picker__day-cell--range-end_212m8_182","date-range-picker__day":"_date-range-picker__day_212m8_169","date-range-picker__day--selected":"_date-range-picker__day--selected_212m8_225","date-range-picker__day--today":"_date-range-picker__day--today_212m8_238"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./DateRangePicker.css');const e={"date-range-picker":"_date-range-picker_c56gh_2","date-range-picker__trigger":"_date-range-picker__trigger_c56gh_9","date-range-picker--disabled":"_date-range-picker--disabled_c56gh_21","date-range-picker--open":"_date-range-picker--open_c56gh_21","date-range-picker__calendar-icon":"_date-range-picker__calendar-icon_c56gh_38","date-range-picker__value":"_date-range-picker__value_c56gh_50","date-range-picker__chevron":"_date-range-picker__chevron_c56gh_68","date-range-picker__popover":"_date-range-picker__popover_c56gh_84","date-range-picker__popover--above":"_date-range-picker__popover--above_c56gh_103","date-range-picker__popover--visible":"_date-range-picker__popover--visible_c56gh_106","date-range-picker__header":"_date-range-picker__header_c56gh_112","date-range-picker__month-label":"_date-range-picker__month-label_c56gh_118","date-range-picker__header-actions":"_date-range-picker__header-actions_c56gh_129","date-range-picker__nav-buttons":"_date-range-picker__nav-buttons_c56gh_135","date-range-picker__weekdays":"_date-range-picker__weekdays_c56gh_139","date-range-picker__weekday":"_date-range-picker__weekday_c56gh_139","date-range-picker__grid":"_date-range-picker__grid_c56gh_159","date-range-picker__week":"_date-range-picker__week_c56gh_139","date-range-picker__day-empty":"_date-range-picker__day-empty_c56gh_169","date-range-picker__day-cell":"_date-range-picker__day-cell_c56gh_173","date-range-picker__day-cell--in-range":"_date-range-picker__day-cell--in-range_c56gh_182","date-range-picker__day-cell--range-start":"_date-range-picker__day-cell--range-start_c56gh_182","date-range-picker__day-cell--range-end":"_date-range-picker__day-cell--range-end_c56gh_182","date-range-picker__day":"_date-range-picker__day_c56gh_169","date-range-picker__day--selected":"_date-range-picker__day--selected_c56gh_225","date-range-picker__day--today":"_date-range-picker__day--today_c56gh_238"};exports.default=e;
2
2
  //# sourceMappingURL=DateRangePicker.module.scss.cjs.map
@@ -1,30 +1,30 @@
1
1
  import './DateRangePicker.css';const e = {
2
- "date-range-picker": "_date-range-picker_212m8_2",
3
- "date-range-picker__trigger": "_date-range-picker__trigger_212m8_9",
4
- "date-range-picker--disabled": "_date-range-picker--disabled_212m8_21",
5
- "date-range-picker--open": "_date-range-picker--open_212m8_21",
6
- "date-range-picker__calendar-icon": "_date-range-picker__calendar-icon_212m8_38",
7
- "date-range-picker__value": "_date-range-picker__value_212m8_50",
8
- "date-range-picker__chevron": "_date-range-picker__chevron_212m8_68",
9
- "date-range-picker__popover": "_date-range-picker__popover_212m8_84",
10
- "date-range-picker__popover--above": "_date-range-picker__popover--above_212m8_103",
11
- "date-range-picker__popover--visible": "_date-range-picker__popover--visible_212m8_106",
12
- "date-range-picker__header": "_date-range-picker__header_212m8_112",
13
- "date-range-picker__month-label": "_date-range-picker__month-label_212m8_118",
14
- "date-range-picker__header-actions": "_date-range-picker__header-actions_212m8_129",
15
- "date-range-picker__nav-buttons": "_date-range-picker__nav-buttons_212m8_135",
16
- "date-range-picker__weekdays": "_date-range-picker__weekdays_212m8_139",
17
- "date-range-picker__weekday": "_date-range-picker__weekday_212m8_139",
18
- "date-range-picker__grid": "_date-range-picker__grid_212m8_159",
19
- "date-range-picker__week": "_date-range-picker__week_212m8_139",
20
- "date-range-picker__day-empty": "_date-range-picker__day-empty_212m8_169",
21
- "date-range-picker__day-cell": "_date-range-picker__day-cell_212m8_173",
22
- "date-range-picker__day-cell--in-range": "_date-range-picker__day-cell--in-range_212m8_182",
23
- "date-range-picker__day-cell--range-start": "_date-range-picker__day-cell--range-start_212m8_182",
24
- "date-range-picker__day-cell--range-end": "_date-range-picker__day-cell--range-end_212m8_182",
25
- "date-range-picker__day": "_date-range-picker__day_212m8_169",
26
- "date-range-picker__day--selected": "_date-range-picker__day--selected_212m8_225",
27
- "date-range-picker__day--today": "_date-range-picker__day--today_212m8_238"
2
+ "date-range-picker": "_date-range-picker_c56gh_2",
3
+ "date-range-picker__trigger": "_date-range-picker__trigger_c56gh_9",
4
+ "date-range-picker--disabled": "_date-range-picker--disabled_c56gh_21",
5
+ "date-range-picker--open": "_date-range-picker--open_c56gh_21",
6
+ "date-range-picker__calendar-icon": "_date-range-picker__calendar-icon_c56gh_38",
7
+ "date-range-picker__value": "_date-range-picker__value_c56gh_50",
8
+ "date-range-picker__chevron": "_date-range-picker__chevron_c56gh_68",
9
+ "date-range-picker__popover": "_date-range-picker__popover_c56gh_84",
10
+ "date-range-picker__popover--above": "_date-range-picker__popover--above_c56gh_103",
11
+ "date-range-picker__popover--visible": "_date-range-picker__popover--visible_c56gh_106",
12
+ "date-range-picker__header": "_date-range-picker__header_c56gh_112",
13
+ "date-range-picker__month-label": "_date-range-picker__month-label_c56gh_118",
14
+ "date-range-picker__header-actions": "_date-range-picker__header-actions_c56gh_129",
15
+ "date-range-picker__nav-buttons": "_date-range-picker__nav-buttons_c56gh_135",
16
+ "date-range-picker__weekdays": "_date-range-picker__weekdays_c56gh_139",
17
+ "date-range-picker__weekday": "_date-range-picker__weekday_c56gh_139",
18
+ "date-range-picker__grid": "_date-range-picker__grid_c56gh_159",
19
+ "date-range-picker__week": "_date-range-picker__week_c56gh_139",
20
+ "date-range-picker__day-empty": "_date-range-picker__day-empty_c56gh_169",
21
+ "date-range-picker__day-cell": "_date-range-picker__day-cell_c56gh_173",
22
+ "date-range-picker__day-cell--in-range": "_date-range-picker__day-cell--in-range_c56gh_182",
23
+ "date-range-picker__day-cell--range-start": "_date-range-picker__day-cell--range-start_c56gh_182",
24
+ "date-range-picker__day-cell--range-end": "_date-range-picker__day-cell--range-end_c56gh_182",
25
+ "date-range-picker__day": "_date-range-picker__day_c56gh_169",
26
+ "date-range-picker__day--selected": "_date-range-picker__day--selected_c56gh_225",
27
+ "date-range-picker__day--today": "_date-range-picker__day--today_c56gh_238"
28
28
  };
29
29
  export {
30
30
  e as default
@@ -1 +1 @@
1
- ._emoji-popover_ffrmi_2{box-sizing:border-box;display:flex;flex-direction:column;width:348px;height:436px;background-color:var(--center-channel-bg);border:1px solid rgba(var(--center-channel-color-rgb),.16);border-radius:var(--radius-s);box-shadow:var(--elevation-4);overflow:hidden}._emoji-popover__header_ffrmi_14{display:flex;flex-direction:column;flex-shrink:0;background-color:var(--center-channel-bg);border-bottom:1px solid rgba(var(--center-channel-color-rgb),.12)}._emoji-popover__search-row_ffrmi_21{display:flex;align-items:center;gap:var(--spacing-xxs);padding:var(--spacing-m) var(--spacing-m) var(--spacing-xxxs)}._emoji-popover__search-input_ffrmi_27{flex:1;min-width:0}._emoji-popover__header-panels_ffrmi_31{position:relative;overflow:hidden}._emoji-popover__header-main_ffrmi_35{transition:transform var(--duration-quick) var(--ease-transition)}._emoji-popover__header-main--hidden_ffrmi_38{transform:translate(-100%)}._emoji-popover__skin-tone-picker_ffrmi_41{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;gap:var(--spacing-s);padding:var(--spacing-xs) var(--spacing-m);transform:translate(100%);transition:transform var(--duration-quick) var(--ease-transition);background-color:var(--center-channel-bg)}._emoji-popover__skin-tone-picker--visible_ffrmi_55{transform:translate(0)}._emoji-popover__skin-tone-label_ffrmi_58{flex-shrink:0;font-size:var(--font-size-75);font-weight:var(--font-weight-semibold);line-height:var(--line-height-75);color:var(--center-channel-color);padding-left:var(--spacing-xxs)}._emoji-popover__skin-tone-options_ffrmi_66{display:flex;flex:1;align-items:center;justify-content:space-between}._emoji-popover__categories_ffrmi_72{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xxs) var(--spacing-m)}._emoji-popover__scroll-view_ffrmi_78{display:flex;flex-direction:column;flex:1;min-height:0}._emoji-popover__scroll-view_ffrmi_78>*{flex:1;min-height:0}._emoji-popover__emoji-list_ffrmi_88{display:flex;flex-direction:column;gap:var(--spacing-xxs);padding:var(--spacing-xxxs) 0}._emoji-popover__group_ffrmi_94{display:flex;flex-direction:column}._emoji-popover__emoji-row_ffrmi_98{display:flex;flex-wrap:wrap;align-items:flex-start;padding:0 var(--spacing-s);gap:0}._emoji-popover__emoji-row--nowrap_ffrmi_105{flex-wrap:nowrap}._emoji-popover__footer_ffrmi_108{display:flex;align-items:center;gap:var(--spacing-xs);height:56px;flex-shrink:0;padding:0 var(--spacing-l);border-top:1px solid rgba(var(--center-channel-color-rgb),.12);background-color:var(--center-channel-bg)}._emoji-popover__footer-preview_ffrmi_118{display:flex;align-items:center;gap:var(--spacing-xs);flex:1;min-width:0}._emoji-popover__footer-hint_ffrmi_125{font-size:var(--font-size-100);font-weight:var(--font-weight-semibold);color:var(--center-channel-color)}._emoji-popover__footer-shortcode_ffrmi_130{font-size:var(--font-size-100);font-weight:var(--font-weight-semibold);color:rgba(var(--center-channel-color-rgb),.72)}
1
+ ._emoji-popover_1y5gd_2{box-sizing:border-box;display:flex;flex-direction:column;width:348px;height:436px;background-color:var(--center-channel-bg);border:1px solid rgba(var(--center-channel-color-rgb),.16);border-radius:var(--radius-m);box-shadow:var(--elevation-4);overflow:hidden}._emoji-popover__header_1y5gd_14{display:flex;flex-direction:column;flex-shrink:0;background-color:var(--center-channel-bg);border-bottom:1px solid rgba(var(--center-channel-color-rgb),.12)}._emoji-popover__search-row_1y5gd_21{display:flex;align-items:center;gap:var(--spacing-xxs);padding:var(--spacing-m) var(--spacing-m) var(--spacing-xxxs)}._emoji-popover__search-input_1y5gd_27{flex:1;min-width:0}._emoji-popover__header-panels_1y5gd_31{position:relative;overflow:hidden}._emoji-popover__header-main_1y5gd_35{transition:transform var(--duration-quick) var(--ease-transition)}._emoji-popover__header-main--hidden_1y5gd_38{transform:translate(-100%)}._emoji-popover__skin-tone-picker_1y5gd_41{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;gap:var(--spacing-s);padding:var(--spacing-xs) var(--spacing-m);transform:translate(100%);transition:transform var(--duration-quick) var(--ease-transition);background-color:var(--center-channel-bg)}._emoji-popover__skin-tone-picker--visible_1y5gd_55{transform:translate(0)}._emoji-popover__skin-tone-label_1y5gd_58{flex-shrink:0;font-size:var(--font-size-75);font-weight:var(--font-weight-semibold);line-height:var(--line-height-75);color:var(--center-channel-color);padding-left:var(--spacing-xxs)}._emoji-popover__skin-tone-options_1y5gd_66{display:flex;flex:1;align-items:center;justify-content:space-between}._emoji-popover__categories_1y5gd_72{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xxs) var(--spacing-m)}._emoji-popover__scroll-view_1y5gd_78{display:flex;flex-direction:column;flex:1;min-height:0}._emoji-popover__scroll-view_1y5gd_78>*{flex:1;min-height:0}._emoji-popover__emoji-list_1y5gd_88{display:flex;flex-direction:column;gap:var(--spacing-xxs);padding:var(--spacing-xxxs) 0}._emoji-popover__group_1y5gd_94{display:flex;flex-direction:column}._emoji-popover__emoji-row_1y5gd_98{display:flex;flex-wrap:wrap;align-items:flex-start;padding:0 var(--spacing-s);gap:0}._emoji-popover__emoji-row--nowrap_1y5gd_105{flex-wrap:nowrap}._emoji-popover__footer_1y5gd_108{display:flex;align-items:center;gap:var(--spacing-xs);height:56px;flex-shrink:0;padding:0 var(--spacing-l);border-top:1px solid rgba(var(--center-channel-color-rgb),.12);background-color:var(--center-channel-bg)}._emoji-popover__footer-preview_1y5gd_118{display:flex;align-items:center;gap:var(--spacing-xs);flex:1;min-width:0}._emoji-popover__footer-hint_1y5gd_125{font-size:var(--font-size-100);font-weight:var(--font-weight-semibold);color:var(--center-channel-color)}._emoji-popover__footer-shortcode_1y5gd_130{font-size:var(--font-size-100);font-weight:var(--font-weight-semibold);color:rgba(var(--center-channel-color-rgb),.72)}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./EmojiPopover.css');const o={"emoji-popover":"_emoji-popover_ffrmi_2","emoji-popover__header":"_emoji-popover__header_ffrmi_14","emoji-popover__search-row":"_emoji-popover__search-row_ffrmi_21","emoji-popover__search-input":"_emoji-popover__search-input_ffrmi_27","emoji-popover__header-panels":"_emoji-popover__header-panels_ffrmi_31","emoji-popover__header-main":"_emoji-popover__header-main_ffrmi_35","emoji-popover__header-main--hidden":"_emoji-popover__header-main--hidden_ffrmi_38","emoji-popover__skin-tone-picker":"_emoji-popover__skin-tone-picker_ffrmi_41","emoji-popover__skin-tone-picker--visible":"_emoji-popover__skin-tone-picker--visible_ffrmi_55","emoji-popover__skin-tone-label":"_emoji-popover__skin-tone-label_ffrmi_58","emoji-popover__skin-tone-options":"_emoji-popover__skin-tone-options_ffrmi_66","emoji-popover__categories":"_emoji-popover__categories_ffrmi_72","emoji-popover__scroll-view":"_emoji-popover__scroll-view_ffrmi_78","emoji-popover__emoji-list":"_emoji-popover__emoji-list_ffrmi_88","emoji-popover__group":"_emoji-popover__group_ffrmi_94","emoji-popover__emoji-row":"_emoji-popover__emoji-row_ffrmi_98","emoji-popover__emoji-row--nowrap":"_emoji-popover__emoji-row--nowrap_ffrmi_105","emoji-popover__footer":"_emoji-popover__footer_ffrmi_108","emoji-popover__footer-preview":"_emoji-popover__footer-preview_ffrmi_118","emoji-popover__footer-hint":"_emoji-popover__footer-hint_ffrmi_125","emoji-popover__footer-shortcode":"_emoji-popover__footer-shortcode_ffrmi_130"};exports.default=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./EmojiPopover.css');const o={"emoji-popover":"_emoji-popover_1y5gd_2","emoji-popover__header":"_emoji-popover__header_1y5gd_14","emoji-popover__search-row":"_emoji-popover__search-row_1y5gd_21","emoji-popover__search-input":"_emoji-popover__search-input_1y5gd_27","emoji-popover__header-panels":"_emoji-popover__header-panels_1y5gd_31","emoji-popover__header-main":"_emoji-popover__header-main_1y5gd_35","emoji-popover__header-main--hidden":"_emoji-popover__header-main--hidden_1y5gd_38","emoji-popover__skin-tone-picker":"_emoji-popover__skin-tone-picker_1y5gd_41","emoji-popover__skin-tone-picker--visible":"_emoji-popover__skin-tone-picker--visible_1y5gd_55","emoji-popover__skin-tone-label":"_emoji-popover__skin-tone-label_1y5gd_58","emoji-popover__skin-tone-options":"_emoji-popover__skin-tone-options_1y5gd_66","emoji-popover__categories":"_emoji-popover__categories_1y5gd_72","emoji-popover__scroll-view":"_emoji-popover__scroll-view_1y5gd_78","emoji-popover__emoji-list":"_emoji-popover__emoji-list_1y5gd_88","emoji-popover__group":"_emoji-popover__group_1y5gd_94","emoji-popover__emoji-row":"_emoji-popover__emoji-row_1y5gd_98","emoji-popover__emoji-row--nowrap":"_emoji-popover__emoji-row--nowrap_1y5gd_105","emoji-popover__footer":"_emoji-popover__footer_1y5gd_108","emoji-popover__footer-preview":"_emoji-popover__footer-preview_1y5gd_118","emoji-popover__footer-hint":"_emoji-popover__footer-hint_1y5gd_125","emoji-popover__footer-shortcode":"_emoji-popover__footer-shortcode_1y5gd_130"};exports.default=o;
2
2
  //# sourceMappingURL=EmojiPopover.module.scss.cjs.map
@@ -1,25 +1,25 @@
1
1
  import './EmojiPopover.css';const o = {
2
- "emoji-popover": "_emoji-popover_ffrmi_2",
3
- "emoji-popover__header": "_emoji-popover__header_ffrmi_14",
4
- "emoji-popover__search-row": "_emoji-popover__search-row_ffrmi_21",
5
- "emoji-popover__search-input": "_emoji-popover__search-input_ffrmi_27",
6
- "emoji-popover__header-panels": "_emoji-popover__header-panels_ffrmi_31",
7
- "emoji-popover__header-main": "_emoji-popover__header-main_ffrmi_35",
8
- "emoji-popover__header-main--hidden": "_emoji-popover__header-main--hidden_ffrmi_38",
9
- "emoji-popover__skin-tone-picker": "_emoji-popover__skin-tone-picker_ffrmi_41",
10
- "emoji-popover__skin-tone-picker--visible": "_emoji-popover__skin-tone-picker--visible_ffrmi_55",
11
- "emoji-popover__skin-tone-label": "_emoji-popover__skin-tone-label_ffrmi_58",
12
- "emoji-popover__skin-tone-options": "_emoji-popover__skin-tone-options_ffrmi_66",
13
- "emoji-popover__categories": "_emoji-popover__categories_ffrmi_72",
14
- "emoji-popover__scroll-view": "_emoji-popover__scroll-view_ffrmi_78",
15
- "emoji-popover__emoji-list": "_emoji-popover__emoji-list_ffrmi_88",
16
- "emoji-popover__group": "_emoji-popover__group_ffrmi_94",
17
- "emoji-popover__emoji-row": "_emoji-popover__emoji-row_ffrmi_98",
18
- "emoji-popover__emoji-row--nowrap": "_emoji-popover__emoji-row--nowrap_ffrmi_105",
19
- "emoji-popover__footer": "_emoji-popover__footer_ffrmi_108",
20
- "emoji-popover__footer-preview": "_emoji-popover__footer-preview_ffrmi_118",
21
- "emoji-popover__footer-hint": "_emoji-popover__footer-hint_ffrmi_125",
22
- "emoji-popover__footer-shortcode": "_emoji-popover__footer-shortcode_ffrmi_130"
2
+ "emoji-popover": "_emoji-popover_1y5gd_2",
3
+ "emoji-popover__header": "_emoji-popover__header_1y5gd_14",
4
+ "emoji-popover__search-row": "_emoji-popover__search-row_1y5gd_21",
5
+ "emoji-popover__search-input": "_emoji-popover__search-input_1y5gd_27",
6
+ "emoji-popover__header-panels": "_emoji-popover__header-panels_1y5gd_31",
7
+ "emoji-popover__header-main": "_emoji-popover__header-main_1y5gd_35",
8
+ "emoji-popover__header-main--hidden": "_emoji-popover__header-main--hidden_1y5gd_38",
9
+ "emoji-popover__skin-tone-picker": "_emoji-popover__skin-tone-picker_1y5gd_41",
10
+ "emoji-popover__skin-tone-picker--visible": "_emoji-popover__skin-tone-picker--visible_1y5gd_55",
11
+ "emoji-popover__skin-tone-label": "_emoji-popover__skin-tone-label_1y5gd_58",
12
+ "emoji-popover__skin-tone-options": "_emoji-popover__skin-tone-options_1y5gd_66",
13
+ "emoji-popover__categories": "_emoji-popover__categories_1y5gd_72",
14
+ "emoji-popover__scroll-view": "_emoji-popover__scroll-view_1y5gd_78",
15
+ "emoji-popover__emoji-list": "_emoji-popover__emoji-list_1y5gd_88",
16
+ "emoji-popover__group": "_emoji-popover__group_1y5gd_94",
17
+ "emoji-popover__emoji-row": "_emoji-popover__emoji-row_1y5gd_98",
18
+ "emoji-popover__emoji-row--nowrap": "_emoji-popover__emoji-row--nowrap_1y5gd_105",
19
+ "emoji-popover__footer": "_emoji-popover__footer_1y5gd_108",
20
+ "emoji-popover__footer-preview": "_emoji-popover__footer-preview_1y5gd_118",
21
+ "emoji-popover__footer-hint": "_emoji-popover__footer-hint_1y5gd_125",
22
+ "emoji-popover__footer-shortcode": "_emoji-popover__footer-shortcode_1y5gd_130"
23
23
  };
24
24
  export {
25
25
  o as default