@mirohq/design-system-combobox 0.1.6 → 0.3.0

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.
package/dist/main.js CHANGED
@@ -13,12 +13,12 @@ var designSystemInput = require('@mirohq/design-system-input');
13
13
  var reactUseControllableState = require('@radix-ui/react-use-controllable-state');
14
14
  var designSystemIcons = require('@mirohq/design-system-icons');
15
15
  var designSystemScrollArea = require('@mirohq/design-system-scroll-area');
16
- var designSystemPrimitive = require('@mirohq/design-system-primitive');
17
16
  var designSystemBaseSelect = require('@mirohq/design-system-base-select');
18
17
  var utils = require('@react-aria/utils');
19
18
  var designSystemUseAriaDisabled = require('@mirohq/design-system-use-aria-disabled');
20
19
  var designSystemUseLayoutEffect = require('@mirohq/design-system-use-layout-effect');
21
20
  var reactDom = require('react-dom');
21
+ var designSystemPrimitive = require('@mirohq/design-system-primitive');
22
22
  var designSystemBaseButton = require('@mirohq/design-system-base-button');
23
23
  var designSystemStyles = require('@mirohq/design-system-styles');
24
24
 
@@ -90,6 +90,7 @@ const ComboboxProvider = ({
90
90
  value: valueProp,
91
91
  defaultValue: defaultValueProp,
92
92
  onValueChange,
93
+ searchValue: searchValueProp,
93
94
  onSearchValueChange,
94
95
  autoFilter = true,
95
96
  ...restProps
@@ -115,7 +116,11 @@ const ComboboxProvider = ({
115
116
  onChange: onValueChange
116
117
  });
117
118
  const [filteredItems, setFilteredItems] = React.useState(/* @__PURE__ */ new Set());
118
- const [searchValue, setSearchValue] = React.useState("");
119
+ const [searchValue, setSearchValue] = reactUseControllableState.useControllableState({
120
+ prop: searchValueProp,
121
+ defaultProp: "",
122
+ onChange: onSearchValueChange
123
+ });
119
124
  const [size, setSize] = React.useState();
120
125
  const [placeholder, setPlaceholder] = React.useState();
121
126
  const [itemValueTextMap, setItemValueTextMap] = React.useState(/* @__PURE__ */ new Map());
@@ -132,7 +137,6 @@ const ComboboxProvider = ({
132
137
  setValue,
133
138
  setDefaultValue,
134
139
  defaultValue,
135
- onSearchValueChange,
136
140
  triggerRef,
137
141
  inputRef,
138
142
  contentRef,
@@ -176,6 +180,7 @@ const TriggerActionButton = ({
176
180
  openActionLabel,
177
181
  closeActionLabel,
178
182
  clearActionLabel,
183
+ clearable,
179
184
  size
180
185
  }) => {
181
186
  const { openState, setOpenState, value = [], setValue } = useComboboxContext();
@@ -196,7 +201,7 @@ const TriggerActionButton = ({
196
201
  },
197
202
  [setValue]
198
203
  );
199
- if (isEmpty) {
204
+ if (isEmpty || clearable === false || clearActionLabel === void 0) {
200
205
  return /* @__PURE__ */ jsxRuntime.jsx(RadixPopover.Trigger, { asChild: true, "aria-haspopup": "listbox", children: /* @__PURE__ */ jsxRuntime.jsx(
201
206
  StyledActionButton,
202
207
  {
@@ -228,6 +233,7 @@ const Trigger = React__default["default"].forwardRef(
228
233
  placeholder,
229
234
  openActionLabel,
230
235
  closeActionLabel,
236
+ clearable,
231
237
  clearActionLabel,
232
238
  onChange,
233
239
  ...restProps
@@ -240,7 +246,6 @@ const Trigger = React__default["default"].forwardRef(
240
246
  readOnly,
241
247
  triggerRef,
242
248
  inputRef,
243
- onSearchValueChange,
244
249
  searchValue,
245
250
  setSearchValue,
246
251
  setOpenState,
@@ -270,7 +275,7 @@ const Trigger = React__default["default"].forwardRef(
270
275
  readOnly,
271
276
  invalid: designSystemUtils.booleanishAttrValue(valid),
272
277
  id: id != null ? id : formElementId,
273
- placeholder: value.length === 0 ? placeholder : void 0
278
+ placeholder: children === null || children === void 0 || value.length === 0 ? placeholder : void 0
274
279
  };
275
280
  const scrollIntoView = (event) => {
276
281
  var _a;
@@ -288,7 +293,6 @@ const Trigger = React__default["default"].forwardRef(
288
293
  };
289
294
  const onInputChange = (e) => {
290
295
  setSearchValue(e.target.value);
291
- onSearchValueChange == null ? void 0 : onSearchValueChange(e.target.value);
292
296
  onChange == null ? void 0 : onChange(e);
293
297
  };
294
298
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -320,6 +324,7 @@ const Trigger = React__default["default"].forwardRef(
320
324
  openActionLabel,
321
325
  closeActionLabel,
322
326
  clearActionLabel,
327
+ clearable,
323
328
  size
324
329
  }
325
330
  )
@@ -333,9 +338,6 @@ const Trigger = React__default["default"].forwardRef(
333
338
  }
334
339
  );
335
340
 
336
- const NoResultPlaceholder = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
337
- padding: "$100"
338
- });
339
341
  const StyledContent = designSystemStitches.styled(RadixPopover__namespace.Content, {
340
342
  ...designSystemBaseSelect.contentStyles,
341
343
  width: "var(--radix-popover-trigger-width)",
@@ -480,31 +482,23 @@ const Content = React__default["default"].forwardRef(
480
482
  triggerRef,
481
483
  contentRef,
482
484
  autoFilter,
483
- filteredItems,
484
485
  setFilteredItems,
485
486
  searchValue,
486
- noResultsText,
487
487
  direction,
488
488
  openState
489
489
  } = useComboboxContext();
490
490
  React.useEffect(() => {
491
491
  const childrenItemValues = getChildrenItemValues(children);
492
- setFilteredItems(
493
- new Set(
494
- autoFilter === false ? childrenItemValues : childrenItemValues.filter(
495
- (child) => child.toLowerCase().includes(searchValue.toLowerCase())
496
- )
497
- )
498
- );
492
+ const shouldFilter = autoFilter !== false && searchValue !== void 0 && searchValue.length > 0;
493
+ const items = shouldFilter ? childrenItemValues.filter(
494
+ (child) => child.toLowerCase().includes(searchValue.toLowerCase())
495
+ ) : childrenItemValues;
496
+ setFilteredItems(new Set(items));
499
497
  }, [children, autoFilter, setFilteredItems, searchValue]);
500
498
  const getInvisibleContent = useInvisibleContent();
501
499
  if (!openState) {
502
500
  return getInvisibleContent(children);
503
501
  }
504
- const content = filteredItems.size === 0 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
505
- /* @__PURE__ */ jsxRuntime.jsx(NoResultPlaceholder, { children: noResultsText }),
506
- getInvisibleContent(children)
507
- ] }) : children;
508
502
  return /* @__PURE__ */ jsxRuntime.jsx(
509
503
  StyledContent,
510
504
  {
@@ -536,11 +530,11 @@ const Content = React__default["default"].forwardRef(
536
530
  availableHeight: "var(--radix-popover-content-available-height)",
537
531
  verticalGap: "var(--space-50) * 2",
538
532
  maxHeight,
539
- children: content
533
+ children
540
534
  }
541
535
  ),
542
536
  /* @__PURE__ */ jsxRuntime.jsx(designSystemScrollArea.ScrollArea.Scrollbar, { orientation: "vertical", children: /* @__PURE__ */ jsxRuntime.jsx(designSystemScrollArea.ScrollArea.Thumb, {}) })
543
- ] }) : content })
537
+ ] }) : children })
544
538
  }
545
539
  );
546
540
  }
@@ -660,7 +654,7 @@ const StyledSeparator = designSystemStitches.styled(designSystemPrimitive.Primit
660
654
 
661
655
  const Separator = React__default["default"].forwardRef((props, forwardRef) => {
662
656
  const { autoFilter, searchValue } = useComboboxContext();
663
- if (autoFilter === true && searchValue.length > 0) {
657
+ if (autoFilter === true && searchValue !== void 0 && searchValue.length > 0) {
664
658
  return null;
665
659
  }
666
660
  return /* @__PURE__ */ jsxRuntime.jsx(StyledSeparator, { ...props, ref: forwardRef, "aria-hidden": true });
@@ -675,6 +669,18 @@ const StyledComboboxContent = designSystemStitches.styled(designSystemPrimitive.
675
669
  width: "100%"
676
670
  });
677
671
 
672
+ const StyledNoResult = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
673
+ padding: "$100"
674
+ });
675
+
676
+ const NoResult = React__default["default"].forwardRef((props, forwardRef) => {
677
+ const { filteredItems } = useComboboxContext();
678
+ if (filteredItems.size !== 0) {
679
+ return null;
680
+ }
681
+ return /* @__PURE__ */ jsxRuntime.jsx(StyledNoResult, { ...props, ref: forwardRef });
682
+ });
683
+
678
684
  const Root = React__default["default"].forwardRef(
679
685
  ({ value: valueProp, onValueChange, name, children, ...restProps }, forwardRef) => {
680
686
  var _a;
@@ -790,11 +796,11 @@ const Combobox = React__default["default"].forwardRef(
790
796
  defaultValue,
791
797
  onOpen,
792
798
  onClose,
799
+ searchValue,
793
800
  onSearchValueChange,
794
801
  onValueChange,
795
802
  direction = "ltr",
796
803
  autoFilter = true,
797
- noResultsText,
798
804
  ...restProps
799
805
  }, forwardRef) => /* @__PURE__ */ jsxRuntime.jsx(
800
806
  ComboboxProvider,
@@ -802,6 +808,7 @@ const Combobox = React__default["default"].forwardRef(
802
808
  defaultValue,
803
809
  value,
804
810
  onValueChange,
811
+ searchValue,
805
812
  onSearchValueChange,
806
813
  defaultOpen,
807
814
  open,
@@ -814,7 +821,6 @@ const Combobox = React__default["default"].forwardRef(
814
821
  "aria-disabled": ariaDisabled,
815
822
  direction,
816
823
  autoFilter,
817
- noResultsText,
818
824
  children: /* @__PURE__ */ jsxRuntime.jsx(Root, { ...restProps, value, ref: forwardRef })
819
825
  }
820
826
  )
@@ -827,6 +833,7 @@ Combobox.Group = Group;
827
833
  Combobox.GroupLabel = GroupLabel;
828
834
  Combobox.Value = Value;
829
835
  Combobox.Separator = Separator;
836
+ Combobox.NoResult = NoResult;
830
837
 
831
838
  var types = /*#__PURE__*/Object.freeze({
832
839
  __proto__: null
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/partials/trigger.styled.tsx","../src/hooks/use-combobox-context.tsx","../src/partials/trigger-action-button.styled.tsx","../src/partials/trigger-action-button.tsx","../src/partials/trigger.tsx","../src/partials/content.styled.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/util.ts","../src/hooks/use-document-fragment.ts","../src/hooks/use-invisible-content.tsx","../src/partials/content.tsx","../src/partials/portal.tsx","../src/partials/group.styled.tsx","../src/partials/group.tsx","../src/partials/group-label.styled.tsx","../src/partials/group-label.tsx","../src/chip/chip.styled.tsx","../src/chip/left-icon.styled.tsx","../src/chip/left-slot.tsx","../src/chip/chip.tsx","../src/partials/value.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/combobox.styled.tsx","../src/combobox.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport { Input } from '@mirohq/design-system-input'\n\nexport const StyledInput = styled(Input, {\n flexWrap: 'wrap',\n flexGrow: 1,\n gap: '$50',\n\n '&[data-valid], &[data-invalid]': {\n // we don't need a bigger padding here as Input component will render its own icon\n paddingRight: '$100',\n },\n\n '& input': {\n minWidth: '$8',\n flexBasis: 0,\n flexGrow: 1,\n },\n\n variants: {\n size: {\n large: {\n minHeight: '$10',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n 'x-large': {\n minHeight: '$12',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n","import React, { createContext, useContext, useRef, useState } from 'react'\nimport type { PropsWithChildren, ReactNode } from 'react'\nimport { useControllableState } from '@radix-ui/react-use-controllable-state'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\nimport type { InputProps } from '@mirohq/design-system-input'\n\nimport type { Direction } from '../types'\n\nexport interface ComboboxProps extends FormElementProps {\n open?: boolean\n defaultOpen?: boolean\n onOpen?: () => void\n onClose?: () => void\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n onSearchValueChange?: (value: string) => void\n direction?: Direction\n autoFilter?: boolean\n noResultsText?: ReactNode\n}\n\ninterface ComboboxContextProps extends ComboboxProps {\n setOpenState: React.Dispatch<React.SetStateAction<boolean | undefined>>\n openState: boolean\n value?: string[]\n setValue: React.Dispatch<React.SetStateAction<string[] | undefined>>\n setDefaultValue: React.Dispatch<React.SetStateAction<string[] | undefined>>\n triggerRef: React.RefObject<HTMLInputElement>\n inputRef: React.RefObject<HTMLInputElement>\n contentRef: React.RefObject<HTMLDivElement>\n searchValue: string\n setSearchValue: React.Dispatch<React.SetStateAction<string>>\n filteredItems: Set<string>\n setFilteredItems: React.Dispatch<React.SetStateAction<Set<string>>>\n itemValueTextMap: Map<string, string>\n setItemValueTextMap: React.Dispatch<React.SetStateAction<Map<string, string>>>\n placeholder?: string\n setPlaceholder: React.Dispatch<React.SetStateAction<string | undefined>>\n size: InputProps['size']\n setSize: React.Dispatch<React.SetStateAction<InputProps['size']>>\n}\n\nexport type ComboboxProviderProps = ComboboxProps\n\nconst ComboboxContext = createContext<ComboboxContextProps>({} as any)\n\nexport const ComboboxProvider = ({\n children,\n open: openProp,\n defaultOpen,\n onOpen,\n onClose,\n valid,\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange,\n onSearchValueChange,\n autoFilter = true,\n ...restProps\n}: PropsWithChildren<ComboboxProviderProps>): JSX.Element => {\n const triggerRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const [defaultValue, setDefaultValue] = useState(defaultValueProp)\n const [openState = false, setOpenState] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: state => {\n if (state) {\n onOpen?.()\n } else {\n onClose?.()\n }\n },\n })\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValueProp,\n onChange: onValueChange,\n })\n const [filteredItems, setFilteredItems] = useState(new Set<string>())\n const [searchValue, setSearchValue] = useState('')\n const [size, setSize] = useState<InputProps['size']>()\n const [placeholder, setPlaceholder] = useState<string | undefined>()\n\n const [itemValueTextMap, setItemValueTextMap] = useState<\n ComboboxContextProps['itemValueTextMap']\n >(new Map())\n\n const { valid: formFieldValid } = useFormFieldContext()\n\n return (\n <ComboboxContext.Provider\n value={{\n ...restProps,\n valid: valid ?? formFieldValid,\n openState,\n setOpenState,\n value,\n setValue,\n setDefaultValue,\n defaultValue,\n onSearchValueChange,\n triggerRef,\n inputRef,\n contentRef,\n autoFilter,\n searchValue,\n setSearchValue,\n filteredItems,\n setFilteredItems,\n itemValueTextMap,\n setItemValueTextMap,\n placeholder,\n setPlaceholder,\n size,\n setSize,\n }}\n >\n {children}\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = (): ComboboxContextProps =>\n useContext(ComboboxContext)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Input } from '@mirohq/design-system-input'\n\nexport const StyledActionButton = styled(Input.ActionButton, {\n position: 'absolute',\n right: '$100',\n\n variants: {\n size: {\n large: {\n top: '5px',\n },\n 'x-large': {\n top: '9px',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n\nexport type StyledActionButtonProps = StrictComponentProps<\n typeof StyledActionButton\n>\n","import React, { useCallback } from 'react'\nimport { IconChevronDown, IconCross } from '@mirohq/design-system-icons'\nimport { Trigger as RadixTrigger } from '@radix-ui/react-popover'\n\nimport type { StyledActionButtonProps } from './trigger-action-button.styled'\nimport { StyledActionButton } from './trigger-action-button.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport type TriggerActionButtonProps = Omit<\n StyledActionButtonProps,\n 'label'\n> & {\n /**\n * The label text for Trigger's action button when Combobox is empty and closed. Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and open. Will be rendered in a Tooltip.\n */\n closeActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox has values selected. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n}\n\nexport const TriggerActionButton: React.FC<TriggerActionButtonProps> = ({\n openActionLabel,\n closeActionLabel,\n clearActionLabel,\n size,\n}) => {\n const { openState, setOpenState, value = [], setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const onToggleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (openState) {\n // open action will be performed by radix since it's RadixTrigger\n setOpenState(false)\n }\n\n event.stopPropagation()\n },\n [setOpenState, openState]\n )\n\n const onClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n setValue([])\n\n event.stopPropagation()\n },\n [setValue]\n )\n\n if (isEmpty) {\n return (\n <RadixTrigger asChild aria-haspopup='listbox'>\n <StyledActionButton\n label={openState ? closeActionLabel : openActionLabel}\n size={size}\n onClick={onToggleClick}\n >\n <IconChevronDown size='small' weight='thin' />\n </StyledActionButton>\n </RadixTrigger>\n )\n }\n\n return (\n <StyledActionButton\n label={clearActionLabel}\n size={size}\n onClick={onClearClick}\n >\n <IconCross size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport { Combobox as AriakitComboboxTrigger } from '@ariakit/react'\nimport {\n booleanify,\n booleanishAttrValue,\n mergeRefs,\n} from '@mirohq/design-system-utils'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { Input, InputProps } from '@mirohq/design-system-input'\nimport { Anchor as RadixAnchor } from '@radix-ui/react-popover'\n\nimport { StyledInput } from './trigger.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { TriggerActionButton } from './trigger-action-button'\nimport type { TriggerActionButtonProps } from './trigger-action-button'\n\nexport type TriggerProps = InputProps &\n Pick<\n TriggerActionButtonProps,\n 'openActionLabel' | 'closeActionLabel' | 'clearActionLabel'\n > & {\n /**\n * The content.\n */\n children?: React.ReactNode\n\n /**\n * The size of the trigger.\n * @default 'large'\n */\n size?: InputProps['size']\n\n /**\n * The content that will be rendered inside the Combobox.Trigger when no value or\n * defaultValue is set.\n */\n placeholder?: string\n }\n\nexport const Trigger = React.forwardRef<ElementRef<typeof Input>, TriggerProps>(\n (\n {\n id,\n children,\n size = 'large',\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n placeholder,\n openActionLabel,\n closeActionLabel,\n clearActionLabel,\n onChange,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value = [],\n readOnly,\n triggerRef,\n inputRef,\n onSearchValueChange,\n searchValue,\n setSearchValue,\n setOpenState,\n setSize,\n setPlaceholder,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n } = useFormFieldContext()\n\n useEffect(() => {\n setSize(size)\n }, [size, setSize])\n\n useEffect(() => {\n setPlaceholder(placeholder)\n }, [setPlaceholder, placeholder])\n\n const valid = formFieldValid ?? comboboxValid\n\n const inputProps = {\n ...restProps,\n 'aria-disabled': ariaDisabled,\n 'aria-invalid': ariaInvalid ?? formFieldAriaInvalid,\n // todo MDS-1011: use formFieldContextDescribedBy after removing form context from BaseInput\n 'aria-describedby': ariaDescribedBy,\n valid,\n disabled,\n readOnly,\n invalid: booleanishAttrValue(valid),\n id: id ?? formElementId,\n placeholder: value.length === 0 ? placeholder : undefined,\n }\n\n const scrollIntoView = (\n event: React.FocusEvent<HTMLInputElement>\n ): void => {\n const trigger = triggerRef?.current\n const baseInput = inputRef?.current?.parentElement\n\n if (baseInput != null && trigger != null) {\n event.preventDefault()\n baseInput.scrollTo({\n top: trigger.scrollHeight,\n })\n }\n\n if (restProps.onFocus !== undefined) {\n restProps.onFocus(event)\n }\n }\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n setSearchValue(e.target.value)\n onSearchValueChange?.(e.target.value)\n onChange?.(e)\n }\n\n return (\n <RadixAnchor\n ref={mergeRefs([triggerRef, forwardRef])}\n // todo MDS-1112: move this logic to AriakitComboboxTrigger's showOnClick\n onClick={() => {\n if (\n !booleanify(disabled) &&\n !booleanify(ariaDisabled) &&\n !booleanify(readOnly)\n ) {\n setOpenState(true)\n }\n }}\n >\n <AriakitComboboxTrigger\n render={\n <StyledInput\n {...inputProps}\n value={searchValue}\n size={size}\n ref={inputRef}\n onChange={onInputChange}\n onFocus={scrollIntoView}\n >\n {children}\n <TriggerActionButton\n openActionLabel={openActionLabel}\n closeActionLabel={closeActionLabel}\n clearActionLabel={clearActionLabel}\n size={size}\n />\n </StyledInput>\n }\n />\n </RadixAnchor>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { contentStyles } from '@mirohq/design-system-base-select'\n\nexport const NoResultPlaceholder = styled(Primitive.div, {\n padding: '$100',\n})\n\nexport const StyledContent = styled(RadixPopover.Content, {\n ...contentStyles,\n width: 'var(--radix-popover-trigger-width)',\n overflowY: 'auto',\n boxSizing: 'border-box',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import { ComboboxItem } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { itemStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledItem = styled(ComboboxItem, itemStyles)\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { ComboboxItemCheck as AriakitComboboxItemCheck } from '@ariakit/react'\nimport { mergeProps } from '@react-aria/utils'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\nimport { IconCheckMark } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport { StyledItemCheck } from '@mirohq/design-system-base-select'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * The value given as data when submitted with a name.\n */\n value: string\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the Combobox's item text. Use this when the content is\n * complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Item's content.\n */\n children?: ReactNode\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n (\n { disabled = false, value, textValue, children, ...restProps },\n forwardRef\n ) => {\n const { 'aria-disabled': ariaDisabled, ...restAriaDisabledProps } =\n useAriaDisabled(restProps, { allowArrows: true })\n const {\n autoFilter,\n filteredItems,\n setItemValueTextMap,\n triggerRef,\n inputRef,\n value: comboboxValue = [],\n } = useComboboxContext()\n\n useLayoutEffect(() => {\n const textToSet =\n textValue !== undefined\n ? textValue\n : typeof children === 'string'\n ? children\n : ''\n\n setItemValueTextMap(prevState => new Map(prevState.set(value, textToSet)))\n\n return () => {\n setItemValueTextMap(prevState => {\n prevState.delete(value)\n return new Map(prevState)\n })\n }\n }, [setItemValueTextMap, value, textValue, children])\n\n if (autoFilter !== false && !filteredItems.has(value)) {\n return null\n }\n\n const scrollIntoView = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (\n inputRef?.current?.parentElement != null &&\n triggerRef?.current != null\n ) {\n inputRef.current.parentElement.scrollTo({\n top: triggerRef.current.scrollHeight,\n })\n }\n\n if (restProps.onClick !== undefined) {\n restProps.onClick(event)\n }\n }\n\n // todo MDS-1142 find a better way to fix blinking.\n // We need to use custom state because Ariakit changes its state internally on click even for controlled Combobox\n // and it case `aria-selected` value and checkmark to blink.\n const isSelected = comboboxValue.includes(value)\n\n return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n hideOnClick={false}\n accessibleWhenDisabled={booleanify(ariaDisabled)}\n disabled={booleanify(ariaDisabled) || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n aria-selected={isSelected}\n >\n <AriakitComboboxItemCheck\n checked={isSelected}\n render={({ style, ...props }) => (\n // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here\n <StyledItemCheck {...props} />\n )}\n >\n <IconCheckMark\n size='small'\n data-testid={\n process.env.NODE_ENV === 'test'\n ? 'combobox-item-check'\n : undefined\n }\n />\n </AriakitComboboxItemCheck>\n {children}\n </StyledItem>\n )\n }\n)\n","import React from 'react'\nimport type { ReactNode } from 'react'\n\nimport { Item } from './partials/item'\nimport type { ItemProps } from './partials/item'\n\nconst itemType = React.createElement(Item).type\n\nexport const getChildrenItemValues = (\n componentChildren: ReactNode\n): string[] => {\n const values: string[] = []\n\n const recurse = (children: ReactNode): void => {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) {\n return\n }\n\n if (child.type === itemType) {\n const props = child.props as ItemProps\n\n values.push(props.value)\n\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (child.props.children) {\n recurse(child.props.children)\n }\n })\n }\n\n recurse(componentChildren)\n\n return values\n}\n","import React from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nexport const useDocumentFragment = (): DocumentFragment | undefined => {\n const [fragment, setFragment] = React.useState<DocumentFragment>()\n\n // we need `useLayoutEffect` here because `DocumentFragment` doesn't exist on the server\n useLayoutEffect(() => {\n setFragment(new DocumentFragment())\n }, [])\n\n return fragment\n}\n","import React, { useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useDocumentFragment } from './use-document-fragment'\n\n/**\n * Render content in DocumentFragment so items can send its text value to context,\n * otherwise we will have empty chips.\n * Content won't be visible in DOM.\n */\nexport const useInvisibleContent = (): ((\n children: React.ReactNode\n) => React.ReactElement | null) => {\n const fragment = useDocumentFragment()\n\n return useCallback(\n (children: React.ReactNode): React.ReactElement | null =>\n fragment !== undefined\n ? createPortal(<div>{children}</div>, fragment)\n : null,\n [fragment]\n )\n}\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\nimport { theme } from '@mirohq/design-system-stitches'\nimport type { CSSProperties } from '@stitches/react'\nimport { ComboboxList as AriakitComboboxList } from '@ariakit/react'\n\nimport { NoResultPlaceholder, StyledContent } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { getChildrenItemValues } from '../util'\nimport type {\n Align,\n Overflow,\n PointerDownOutsideEvent,\n Side,\n Sticky,\n} from '../types'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nconst isInsideRef = (\n element: Element | null,\n ref: React.RefObject<Element>\n): boolean => (element != null && ref.current?.contains(element)) ?? false\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Combobox's content.\n */\n children?: ReactNode\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n\n /**\n * The preferred side of the anchor to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the anchor.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the anchor. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with boundary edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The distance in pixels from the boundary edges where collision detection\n * should occur. Accepts a number (same for all sides), or a partial padding\n * object, for example: { top: 20, left: 20 }.\n * @default 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in the\n * boundary as long as the trigger is at least partially in the boundary whilst\n * \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: Sticky\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true\n */\n hideWhenDetached?: boolean\n\n /**\n * The max height for the content.\n */\n maxHeight?: CSSProperties['maxHeight']\n\n /**\n * Setting overflow as \"visible\" means that the content can extend beyond\n * its collision boundary without any clipping or scrolling being\n * applied.\n * When set to \"auto,\" a scrollbar is added if the content exceeds its\n * boundaries. If no maxHeight is defined, it will be automatically adjusted\n * to fit the remaining space between the trigger and the boundary edge.\n * @default 'visible'\n */\n overflow?: Overflow\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = true,\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n triggerRef,\n contentRef,\n autoFilter,\n filteredItems,\n setFilteredItems,\n searchValue,\n noResultsText,\n direction,\n openState,\n } = useComboboxContext()\n\n useEffect(() => {\n const childrenItemValues = getChildrenItemValues(children)\n\n setFilteredItems(\n new Set(\n autoFilter === false\n ? childrenItemValues\n : childrenItemValues.filter(child =>\n child.toLowerCase().includes(searchValue.toLowerCase())\n )\n )\n )\n }, [children, autoFilter, setFilteredItems, searchValue])\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!openState) {\n return getInvisibleContent(children)\n }\n\n const content =\n filteredItems.size === 0 ? (\n <>\n <NoResultPlaceholder>{noResultsText}</NoResultPlaceholder>\n {getInvisibleContent(children)}\n </>\n ) : (\n children\n )\n\n return (\n <StyledContent\n asChild\n {...restProps}\n dir={direction}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n ref={mergeRefs([forwardRef, contentRef])}\n onOpenAutoFocus={event => event.preventDefault()}\n onInteractOutside={event => {\n const target = event.target as Element | null\n const isTrigger = isInsideRef(target, triggerRef)\n const isContent = isInsideRef(target, contentRef)\n\n if (isTrigger || isContent) {\n event.preventDefault()\n }\n }}\n >\n {/* we have to specify role here otherwise it would be overwritten by Radix.Content */}\n <AriakitComboboxList role='listbox'>\n {overflow === 'auto' ? (\n <ScrollArea type='always' dir={direction}>\n <ScrollArea.Viewport\n availableHeight='var(--radix-popover-content-available-height)'\n verticalGap='var(--space-50) * 2'\n maxHeight={maxHeight}\n >\n {content}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n ) : (\n content\n )}\n </AriakitComboboxList>\n </StyledContent>\n )\n }\n)\n","import React from 'react'\nimport type { PopoverPortalProps } from '@radix-ui/react-popover'\nimport { Portal as RadixPortal } from '@radix-ui/react-popover'\n\nexport interface PortalProps extends PopoverPortalProps {\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import { Group as AriakitGroup } from '@ariakit/react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledGroup = styled(AriakitGroup, {})\n\nexport type StyledGroupProps = StrictComponentProps<typeof StyledGroup>\n","import React, { useMemo } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { getChildrenItemValues } from '../util'\nimport type { StyledGroupProps } from './group.styled'\nimport { StyledGroup } from './group.styled'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport type GroupProps = StyledGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof StyledGroup>,\n GroupProps\n>(({ children, ...rest }, forwardRef) => {\n const { autoFilter, filteredItems } = useComboboxContext()\n\n const childValues = useMemo(\n // don't perform calculation if auto filter is disabled\n () => (autoFilter !== false ? getChildrenItemValues(children) : []),\n [children, autoFilter]\n )\n const hasVisibleChildren = useMemo(\n () =>\n // don't perform calculation if auto filter is disabled\n autoFilter !== false\n ? childValues.some(value => filteredItems.has(value))\n : true,\n [childValues, filteredItems, autoFilter]\n )\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!hasVisibleChildren) {\n return getInvisibleContent(children)\n }\n\n return (\n <StyledGroup {...rest} ref={forwardRef}>\n {children}\n </StyledGroup>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { groupLabelStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledGroupLabel = styled(GroupLabel, groupLabelStyles)\n\nexport type StyledGroupLabelProps = StrictComponentProps<\n typeof StyledGroupLabel\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledGroupLabel } from './group-label.styled'\nimport type { StyledGroupLabelProps } from './group-label.styled'\n\nexport interface GroupLabelProps extends StyledGroupLabelProps {}\n\nexport const GroupLabel = React.forwardRef<\n ElementRef<typeof StyledGroupLabel>,\n GroupLabelProps\n>((props, forwardRef) => <StyledGroupLabel {...props} ref={forwardRef} />)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { BaseButton } from '@mirohq/design-system-base-button'\nimport { focus } from '@mirohq/design-system-styles'\n\nexport const StyledChip = styled(Primitive.div, {\n fontSize: '$150',\n padding: '$50 $100',\n borderRadius: '$round',\n display: 'flex',\n alignItems: 'center',\n gap: '$50',\n whiteSpace: 'nowrap',\n maxWidth: '$35',\n backgroundColor: '$background-neutrals-subtle',\n color: '$text-neutrals',\n})\n\nexport const StyledChipButton = styled(BaseButton, {\n color: '$icon-neutrals-inactive',\n\n ...focus.css({\n boxShadow: '$focus-small-outline',\n }),\n})\n\nexport const StyledChipContent = styled(Primitive.div, {\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n lineHeight: 1.3,\n})\n\nexport type StyledChipProps = StrictComponentProps<typeof StyledChip>\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledLeftSlot = styled(Primitive.span, {\n order: -1,\n marginRight: '$50',\n})\n\nexport type StyledLeftSlotProps = StrictComponentProps<typeof StyledLeftSlot>\n","import type { StyledLeftSlotProps } from './left-icon.styled'\nimport { StyledLeftSlot } from './left-icon.styled'\n\nexport interface LeftSlotProps extends StyledLeftSlotProps {}\n\nexport const LeftSlot = StyledLeftSlot\n","import React from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\nimport { IconCross } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledChip, StyledChipContent, StyledChipButton } from './chip.styled'\nimport type { StyledChipProps } from './chip.styled'\nimport { LeftSlot } from './left-slot'\n\nexport type ChipProps = StyledChipProps & {\n /**\n * Event handler called when the chip's remove button is clicked.\n */\n onRemove?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Remove button label to make the button recognizable by the screen readers.\n */\n removeAriaLabel: string\n}\n\nexport const Chip = React.forwardRef<ElementRef<typeof StyledChip>, ChipProps>(\n (\n { children, disabled = false, onRemove, removeAriaLabel, ...restProps },\n forwardRef\n ) => (\n <StyledChip {...restProps} ref={forwardRef}>\n <StyledChipContent>{children}</StyledChipContent>\n {!booleanify(disabled) && (\n <StyledChipButton onClick={onRemove} aria-label={removeAriaLabel}>\n <IconCross size='small' weight='thin' aria-hidden />\n </StyledChipButton>\n )}\n </StyledChip>\n )\n) as ForwardRefExoticComponent<ChipProps> & Partials\n\nexport interface Partials {\n LeftSlot: typeof LeftSlot\n}\n\nChip.LeftSlot = LeftSlot\n","import React, { useCallback } from 'react'\nimport type { FC } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { Chip } from '../chip'\n\nexport interface ValueProps {\n /**\n * The label to make the remove button recognizable by the screen readers.\n */\n unselectAriaLabel: string\n}\n\nexport const Value: FC<ValueProps> = ({ unselectAriaLabel }) => {\n const {\n value = [],\n setValue,\n disabled,\n 'aria-disabled': ariaDisabled,\n itemValueTextMap,\n } = useComboboxContext()\n const isDisabled = ariaDisabled === true || disabled\n\n const onItemRemove = useCallback(\n (item: string): void => {\n setValue(prevValue => prevValue?.filter(value => value !== item))\n },\n [setValue]\n )\n\n const getItemText = useCallback(\n (itemValue: string) => {\n const textValue = itemValueTextMap.get(itemValue)\n if (textValue === undefined || textValue === '') {\n return null\n }\n\n return (\n <Chip\n key={itemValue}\n onRemove={e => {\n onItemRemove(itemValue)\n e.stopPropagation()\n }}\n disabled={isDisabled}\n removeAriaLabel={`${unselectAriaLabel} ${textValue}`}\n data-testid={\n process.env.NODE_ENV === 'test'\n ? `combobox-value-${itemValue}`\n : undefined\n }\n >\n {textValue}\n </Chip>\n )\n },\n [isDisabled, itemValueTextMap, onItemRemove, unselectAriaLabel]\n )\n\n return <>{value.map(getItemText)}</>\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { separatorStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledSeparator = styled(Primitive.div, separatorStyles)\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledSeparator } from './separator.styled'\nimport type { StyledSeparatorProps } from './separator.styled'\n\nexport interface SeparatorProps extends StyledSeparatorProps {}\n\nexport const Separator = React.forwardRef<\n ElementRef<typeof StyledSeparator>,\n SeparatorProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue } = useComboboxContext()\n\n if (autoFilter === true && searchValue.length > 0) {\n return null\n }\n\n return <StyledSeparator {...props} ref={forwardRef} aria-hidden />\n})\n","import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledNativeSelect = styled(Primitive.select, {\n // if we support autoComplete, we would have to use visually-hidden styles here\n display: 'none',\n})\n\nexport const StyledComboboxContent = styled(Primitive.div, {\n position: 'relative',\n width: '100%',\n})\n\nexport type StyledComboboxProps = ComponentPropsWithRef<\n typeof StyledComboboxContent\n>\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ForwardRefExoticComponent, ReactNode } from 'react'\nimport { ComboboxProvider as AriakitComboboxProvider } from '@ariakit/react'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport * as RadixPopover from '@radix-ui/react-popover'\n\nimport { Trigger } from './partials/trigger'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { Portal } from './partials/portal'\nimport { Group } from './partials/group'\nimport { GroupLabel } from './partials/group-label'\nimport { Value } from './partials/value'\nimport { Separator } from './partials/separator'\nimport { StyledComboboxContent, StyledNativeSelect } from './combobox.styled'\nimport type { StyledComboboxProps } from './combobox.styled'\nimport {\n ComboboxProvider,\n useComboboxContext,\n} from './hooks/use-combobox-context'\nimport type { ComboboxProviderProps } from './hooks/use-combobox-context'\nimport type { Direction } from './types'\n\nexport interface ComboboxProps\n extends ComboboxProviderProps,\n StyledComboboxProps {\n /**\n * The value of the combobox when initially rendered. Use when you do not need\n * to control the state of the combobox.\n */\n defaultValue?: string[]\n\n /**\n * The controlled value of the combobox. Should be used in conjunction with\n * onValueChange.\n */\n value?: string[]\n\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[]) => void\n\n /**\n * Event handler called when the trigger input value changes.\n */\n onSearchValueChange?: (value: string) => void\n\n /**\n * The open state of the combobox when it is initially rendered. Use when you do\n * not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the combobox. Must be used in conjunction with\n * onOpen and onClose.\n */\n open?: boolean\n\n /**\n * Event handler called when the combobox opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the combobox closes.\n */\n onClose?: () => void\n\n /**\n * The reading direction of the combobox when applicable. If omitted, inherits\n * globally from DirectionProvider or assumes LTR (left-to-right) reading\n * mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The content of the combobox\n */\n children?: React.ReactNode\n\n /**\n * Enables/disabled automatic filtering.\n * @default true\n */\n autoFilter?: boolean\n\n /**\n * Text that is displayed when there are no items to display.\n */\n noResultsText: ReactNode\n\n /**\n * The name of the combobox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n Omit<ComboboxProps, 'noResultsText'>\n>(\n (\n { value: valueProp, onValueChange, name, children, ...restProps },\n forwardRef\n ) => {\n const {\n openState,\n setOpenState,\n defaultValue,\n value = [],\n setValue,\n required,\n readOnly,\n 'aria-disabled': ariaDisabled,\n disabled,\n direction,\n size,\n placeholder,\n triggerRef,\n } = useComboboxContext()\n\n const {\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n label,\n isFloatingLabel,\n focused,\n formElementRef,\n } = useFormFieldContext<HTMLSelectElement>()\n\n useEffect(() => {\n setRequired?.(required)\n setDisabled?.(disabled)\n setAriaDisabled?.(ariaDisabled)\n setReadOnly?.(readOnly)\n }, [\n readOnly,\n disabled,\n ariaDisabled,\n required,\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n ])\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\n\n const onSetSelectedValue = (newValue: string | string[]): void => {\n setValue(typeof newValue === 'string' ? [newValue] : newValue)\n }\n\n const onOpenChange = (value: boolean): void => {\n if (!booleanify(readOnly)) {\n setOpenState(value)\n }\n }\n\n const isFormControl = Boolean(triggerRef.current?.closest('form'))\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={onOpenChange}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={onOpenChange}\n defaultSelectedValue={defaultValue}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent\n ref={forwardRef}\n {...restProps}\n dir={direction}\n data-form-element='select'\n >\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n {isFormControl && (\n <StyledNativeSelect\n multiple\n autoComplete='off'\n name={name}\n tabIndex={-1}\n aria-hidden='true'\n ref={formElementRef}\n required={required}\n disabled={disabled}\n aria-disabled={ariaDisabled}\n value={value}\n // since we don't support autoComplete there is no way this select value will change,\n // although we still need to provide `onChange` since we use `value` and not `defaultValue`\n onChange={() => {}}\n >\n {value.length === 0 ? (\n <option value='' />\n ) : (\n // since we don't support autoComplete we can render here only selected values\n value.map(itemValue => (\n <option key={itemValue} value={itemValue}>\n {itemValue}\n </option>\n ))\n )}\n </StyledNativeSelect>\n )}\n </RadixPopover.Root>\n )\n }\n)\n\nexport const Combobox = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled,\n defaultOpen = false,\n open,\n valid,\n disabled,\n readOnly,\n required,\n value,\n defaultValue,\n onOpen,\n onClose,\n onSearchValueChange,\n onValueChange,\n direction = 'ltr',\n autoFilter = true,\n noResultsText,\n ...restProps\n },\n forwardRef\n ) => (\n <ComboboxProvider\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n onSearchValueChange={onSearchValueChange}\n defaultOpen={defaultOpen}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n valid={valid}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n aria-disabled={ariaDisabled}\n direction={direction}\n autoFilter={autoFilter}\n noResultsText={noResultsText}\n >\n <Root {...restProps} value={value} ref={forwardRef} />\n </ComboboxProvider>\n )\n) as ForwardRefExoticComponent<ComboboxProps> & Partials\n\nexport interface Partials {\n Portal: typeof Portal\n Trigger: typeof Trigger\n Content: typeof Content\n Item: typeof Item\n Group: typeof Group\n GroupLabel: typeof GroupLabel\n Value: typeof Value\n Separator: typeof Separator\n}\n\nCombobox.Portal = Portal\nCombobox.Trigger = Trigger\nCombobox.Content = Content\nCombobox.Item = Item\nCombobox.Group = Group\nCombobox.GroupLabel = GroupLabel\nCombobox.Value = Value\nCombobox.Separator = Separator\n"],"names":["styled","Input","createContext","useRef","useState","useControllableState","useFormFieldContext","jsx","useContext","useCallback","RadixTrigger","IconChevronDown","IconCross","React","useEffect","booleanishAttrValue","RadixAnchor","mergeRefs","booleanify","AriakitComboboxTrigger","jsxs","Primitive","RadixPopover","contentStyles","ComboboxItem","itemStyles","useAriaDisabled","useLayoutEffect","mergeProps","AriakitComboboxItemCheck","StyledItemCheck","IconCheckMark","createPortal","theme","Fragment","AriakitComboboxList","ScrollArea","RadixPortal","AriakitGroup","useMemo","GroupLabel","groupLabelStyles","BaseButton","focus","value","separatorStyles","AriakitComboboxProvider","FloatingLabel"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/partials/trigger.styled.tsx","../src/hooks/use-combobox-context.tsx","../src/partials/trigger-action-button.styled.tsx","../src/partials/trigger-action-button.tsx","../src/partials/trigger.tsx","../src/partials/content.styled.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/util.ts","../src/hooks/use-document-fragment.ts","../src/hooks/use-invisible-content.tsx","../src/partials/content.tsx","../src/partials/portal.tsx","../src/partials/group.styled.tsx","../src/partials/group.tsx","../src/partials/group-label.styled.tsx","../src/partials/group-label.tsx","../src/chip/chip.styled.tsx","../src/chip/left-icon.styled.tsx","../src/chip/left-slot.tsx","../src/chip/chip.tsx","../src/partials/value.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/combobox.styled.tsx","../src/partials/no-result.styled.tsx","../src/partials/no-result.tsx","../src/combobox.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport { Input } from '@mirohq/design-system-input'\n\nexport const StyledInput = styled(Input, {\n flexWrap: 'wrap',\n flexGrow: 1,\n gap: '$50',\n\n '&[data-valid], &[data-invalid]': {\n // we don't need a bigger padding here as Input component will render its own icon\n paddingRight: '$100',\n },\n\n '& input': {\n minWidth: '$8',\n flexBasis: 0,\n flexGrow: 1,\n },\n\n variants: {\n size: {\n large: {\n minHeight: '$10',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n 'x-large': {\n minHeight: '$12',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n","import React, { createContext, useContext, useRef, useState } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { useControllableState } from '@radix-ui/react-use-controllable-state'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\nimport type { InputProps } from '@mirohq/design-system-input'\n\nimport type { Direction } from '../types'\n\nexport interface ComboboxProps extends FormElementProps {\n open?: boolean\n defaultOpen?: boolean\n onOpen?: () => void\n onClose?: () => void\n value?: string[]\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n searchValue?: string\n onSearchValueChange?: (value: string) => void\n direction?: Direction\n autoFilter?: boolean\n}\n\ninterface ComboboxContextProps\n extends Omit<ComboboxProps, 'onValueChange' | 'onSearchValueChange'> {\n setOpenState: React.Dispatch<React.SetStateAction<boolean | undefined>>\n openState: boolean\n setValue: React.Dispatch<React.SetStateAction<string[] | undefined>>\n setDefaultValue: React.Dispatch<React.SetStateAction<string[] | undefined>>\n triggerRef: React.RefObject<HTMLInputElement>\n inputRef: React.RefObject<HTMLInputElement>\n contentRef: React.RefObject<HTMLDivElement>\n setSearchValue: React.Dispatch<React.SetStateAction<string | undefined>>\n filteredItems: Set<string>\n setFilteredItems: React.Dispatch<React.SetStateAction<Set<string>>>\n itemValueTextMap: Map<string, string>\n setItemValueTextMap: React.Dispatch<React.SetStateAction<Map<string, string>>>\n placeholder?: string\n setPlaceholder: React.Dispatch<React.SetStateAction<string | undefined>>\n size: InputProps['size']\n setSize: React.Dispatch<React.SetStateAction<InputProps['size']>>\n}\n\nexport type ComboboxProviderProps = ComboboxProps\n\nconst ComboboxContext = createContext<ComboboxContextProps>({} as any)\n\nexport const ComboboxProvider = ({\n children,\n open: openProp,\n defaultOpen,\n onOpen,\n onClose,\n valid,\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange,\n searchValue: searchValueProp,\n onSearchValueChange,\n autoFilter = true,\n ...restProps\n}: PropsWithChildren<ComboboxProviderProps>): JSX.Element => {\n const triggerRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const [defaultValue, setDefaultValue] = useState(defaultValueProp)\n const [openState = false, setOpenState] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: state => {\n if (state) {\n onOpen?.()\n } else {\n onClose?.()\n }\n },\n })\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValueProp,\n onChange: onValueChange,\n })\n const [filteredItems, setFilteredItems] = useState(new Set<string>())\n\n const [searchValue, setSearchValue] = useControllableState({\n prop: searchValueProp,\n defaultProp: '',\n onChange: onSearchValueChange,\n })\n\n const [size, setSize] = useState<InputProps['size']>()\n const [placeholder, setPlaceholder] = useState<string | undefined>()\n\n const [itemValueTextMap, setItemValueTextMap] = useState<\n ComboboxContextProps['itemValueTextMap']\n >(new Map())\n\n const { valid: formFieldValid } = useFormFieldContext()\n\n return (\n <ComboboxContext.Provider\n value={{\n ...restProps,\n valid: valid ?? formFieldValid,\n openState,\n setOpenState,\n value,\n setValue,\n setDefaultValue,\n defaultValue,\n triggerRef,\n inputRef,\n contentRef,\n autoFilter,\n searchValue,\n setSearchValue,\n filteredItems,\n setFilteredItems,\n itemValueTextMap,\n setItemValueTextMap,\n placeholder,\n setPlaceholder,\n size,\n setSize,\n }}\n >\n {children}\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = (): ComboboxContextProps =>\n useContext(ComboboxContext)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Input } from '@mirohq/design-system-input'\n\nexport const StyledActionButton = styled(Input.ActionButton, {\n position: 'absolute',\n right: '$100',\n\n variants: {\n size: {\n large: {\n top: '5px',\n },\n 'x-large': {\n top: '9px',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n\nexport type StyledActionButtonProps = StrictComponentProps<\n typeof StyledActionButton\n>\n","import React, { useCallback } from 'react'\nimport { IconChevronDown, IconCross } from '@mirohq/design-system-icons'\nimport { Trigger as RadixTrigger } from '@radix-ui/react-popover'\n\nimport type { StyledActionButtonProps } from './trigger-action-button.styled'\nimport { StyledActionButton } from './trigger-action-button.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport type TriggerActionButtonProps = Omit<\n StyledActionButtonProps,\n 'label'\n> & {\n openActionLabel: string\n closeActionLabel: string\n clearable?: boolean\n clearActionLabel?: string\n}\n\nexport const TriggerActionButton: React.FC<TriggerActionButtonProps> = ({\n openActionLabel,\n closeActionLabel,\n clearActionLabel,\n clearable,\n size,\n}) => {\n const { openState, setOpenState, value = [], setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const onToggleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (openState) {\n // open action will be performed by radix since it's RadixTrigger\n setOpenState(false)\n }\n\n event.stopPropagation()\n },\n [setOpenState, openState]\n )\n\n const onClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n setValue([])\n\n event.stopPropagation()\n },\n [setValue]\n )\n\n if (isEmpty || clearable === false || clearActionLabel === undefined) {\n return (\n <RadixTrigger asChild aria-haspopup='listbox'>\n <StyledActionButton\n label={openState ? closeActionLabel : openActionLabel}\n size={size}\n onClick={onToggleClick}\n >\n <IconChevronDown size='small' weight='thin' />\n </StyledActionButton>\n </RadixTrigger>\n )\n }\n\n return (\n <StyledActionButton\n label={clearActionLabel}\n size={size}\n onClick={onClearClick}\n >\n <IconCross size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React, { useEffect } from 'react'\nimport type {\n ElementRef,\n ComponentPropsWithRef,\n InputHTMLAttributes,\n} from 'react'\nimport { Combobox as AriakitComboboxTrigger } from '@ariakit/react'\nimport {\n booleanify,\n booleanishAttrValue,\n mergeRefs,\n} from '@mirohq/design-system-utils'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { Input } from '@mirohq/design-system-input'\nimport { Anchor as RadixAnchor } from '@radix-ui/react-popover'\nimport type { CSS, SafeProps } from '@mirohq/design-system-stitches'\n\nimport { StyledInput } from './trigger.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { TriggerActionButton } from './trigger-action-button'\n\n// todo MDS-1011: clean up after using BaseInput\n// these types are needed because Input we use in a trigger has Clearable type and we don't need it here\ntype InputProps = InputHTMLAttributes<HTMLInputElement>\ntype StyledInputProps = Omit<SafeProps<InputProps & { css?: CSS }>, 'size'>\ntype StyledTriggerProps = ComponentPropsWithRef<typeof StyledInput>\n\nexport type TriggerProps = FormElementProps &\n StyledInputProps & {\n /**\n * The content.\n */\n children?: React.ReactNode\n\n /**\n * The size of the trigger.\n * @default 'large'\n */\n size?: StyledTriggerProps['size']\n\n /**\n * The content that will be rendered inside the Combobox.Trigger when no value or\n * defaultValue is set.\n */\n placeholder?: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and closed. Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and open. Will be rendered in a Tooltip.\n */\n closeActionLabel: string\n\n /**\n * Show a button to clear the Combobox value.\n */\n clearable?: boolean\n } & (\n | { clearable: false; clearActionLabel?: never }\n | {\n /**\n * The label text for Trigger's action button when Combobox has values selected. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n }\n )\n\nexport const Trigger = React.forwardRef<ElementRef<typeof Input>, TriggerProps>(\n (\n {\n id,\n children,\n size = 'large',\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n placeholder,\n openActionLabel,\n closeActionLabel,\n clearable,\n clearActionLabel,\n onChange,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value = [],\n readOnly,\n triggerRef,\n inputRef,\n searchValue,\n setSearchValue,\n setOpenState,\n setSize,\n setPlaceholder,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n } = useFormFieldContext()\n\n useEffect(() => {\n setSize(size)\n }, [size, setSize])\n\n useEffect(() => {\n setPlaceholder(placeholder)\n }, [setPlaceholder, placeholder])\n\n const valid = formFieldValid ?? comboboxValid\n\n const inputProps = {\n ...restProps,\n 'aria-disabled': ariaDisabled,\n 'aria-invalid': ariaInvalid ?? formFieldAriaInvalid,\n // todo MDS-1011: use formFieldContextDescribedBy after removing form context from BaseInput\n 'aria-describedby': ariaDescribedBy,\n valid,\n disabled,\n readOnly,\n invalid: booleanishAttrValue(valid),\n id: id ?? formElementId,\n placeholder:\n children === null || children === undefined || value.length === 0\n ? placeholder\n : undefined,\n }\n\n const scrollIntoView = (\n event: React.FocusEvent<HTMLInputElement>\n ): void => {\n const trigger = triggerRef?.current\n const baseInput = inputRef?.current?.parentElement\n\n if (baseInput != null && trigger != null) {\n event.preventDefault()\n baseInput.scrollTo({\n top: trigger.scrollHeight,\n })\n }\n\n if (restProps.onFocus !== undefined) {\n restProps.onFocus(event)\n }\n }\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n setSearchValue(e.target.value)\n onChange?.(e)\n }\n\n return (\n <RadixAnchor\n ref={mergeRefs([triggerRef, forwardRef])}\n // todo MDS-1112: move this logic to AriakitComboboxTrigger's showOnClick\n onClick={() => {\n if (\n !booleanify(disabled) &&\n !booleanify(ariaDisabled) &&\n !booleanify(readOnly)\n ) {\n setOpenState(true)\n }\n }}\n >\n <AriakitComboboxTrigger\n render={\n <StyledInput\n {...inputProps}\n value={searchValue}\n size={size}\n ref={inputRef}\n onChange={onInputChange}\n onFocus={scrollIntoView}\n >\n {children}\n <TriggerActionButton\n openActionLabel={openActionLabel}\n closeActionLabel={closeActionLabel}\n clearActionLabel={clearActionLabel}\n clearable={clearable}\n size={size}\n />\n </StyledInput>\n }\n />\n </RadixAnchor>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport { contentStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledContent = styled(RadixPopover.Content, {\n ...contentStyles,\n width: 'var(--radix-popover-trigger-width)',\n overflowY: 'auto',\n boxSizing: 'border-box',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import { ComboboxItem } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { itemStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledItem = styled(ComboboxItem, itemStyles)\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { ComboboxItemCheck as AriakitComboboxItemCheck } from '@ariakit/react'\nimport { mergeProps } from '@react-aria/utils'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\nimport { IconCheckMark } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport { StyledItemCheck } from '@mirohq/design-system-base-select'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * The value given as data when submitted with a name.\n */\n value: string\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the Combobox's item text. Use this when the content is\n * complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Item's content.\n */\n children?: ReactNode\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n (\n { disabled = false, value, textValue, children, ...restProps },\n forwardRef\n ) => {\n const { 'aria-disabled': ariaDisabled, ...restAriaDisabledProps } =\n useAriaDisabled(restProps, { allowArrows: true })\n const {\n autoFilter,\n filteredItems,\n setItemValueTextMap,\n triggerRef,\n inputRef,\n value: comboboxValue = [],\n } = useComboboxContext()\n\n useLayoutEffect(() => {\n const textToSet =\n textValue !== undefined\n ? textValue\n : typeof children === 'string'\n ? children\n : ''\n\n setItemValueTextMap(prevState => new Map(prevState.set(value, textToSet)))\n\n return () => {\n setItemValueTextMap(prevState => {\n prevState.delete(value)\n return new Map(prevState)\n })\n }\n }, [setItemValueTextMap, value, textValue, children])\n\n if (autoFilter !== false && !filteredItems.has(value)) {\n return null\n }\n\n const scrollIntoView = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (\n inputRef?.current?.parentElement != null &&\n triggerRef?.current != null\n ) {\n inputRef.current.parentElement.scrollTo({\n top: triggerRef.current.scrollHeight,\n })\n }\n\n if (restProps.onClick !== undefined) {\n restProps.onClick(event)\n }\n }\n\n // todo MDS-1142 find a better way to fix blinking.\n // We need to use custom state because Ariakit changes its state internally on click even for controlled Combobox\n // and it case `aria-selected` value and checkmark to blink.\n const isSelected = comboboxValue.includes(value)\n\n return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n hideOnClick={false}\n accessibleWhenDisabled={booleanify(ariaDisabled)}\n disabled={booleanify(ariaDisabled) || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n aria-selected={isSelected}\n >\n <AriakitComboboxItemCheck\n checked={isSelected}\n render={({ style, ...props }) => (\n // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here\n <StyledItemCheck {...props} />\n )}\n >\n <IconCheckMark\n size='small'\n data-testid={\n process.env.NODE_ENV === 'test'\n ? 'combobox-item-check'\n : undefined\n }\n />\n </AriakitComboboxItemCheck>\n {children}\n </StyledItem>\n )\n }\n)\n","import React from 'react'\nimport type { ReactNode } from 'react'\n\nimport { Item } from './partials/item'\nimport type { ItemProps } from './partials/item'\n\nconst itemType = React.createElement(Item).type\n\nexport const getChildrenItemValues = (\n componentChildren: ReactNode\n): string[] => {\n const values: string[] = []\n\n const recurse = (children: ReactNode): void => {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) {\n return\n }\n\n if (child.type === itemType) {\n const props = child.props as ItemProps\n\n values.push(props.value)\n\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (child.props.children) {\n recurse(child.props.children)\n }\n })\n }\n\n recurse(componentChildren)\n\n return values\n}\n","import React from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nexport const useDocumentFragment = (): DocumentFragment | undefined => {\n const [fragment, setFragment] = React.useState<DocumentFragment>()\n\n // we need `useLayoutEffect` here because `DocumentFragment` doesn't exist on the server\n useLayoutEffect(() => {\n setFragment(new DocumentFragment())\n }, [])\n\n return fragment\n}\n","import React, { useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useDocumentFragment } from './use-document-fragment'\n\n/**\n * Render content in DocumentFragment so items can send its text value to context,\n * otherwise we will have empty chips.\n * Content won't be visible in DOM.\n */\nexport const useInvisibleContent = (): ((\n children: React.ReactNode\n) => React.ReactElement | null) => {\n const fragment = useDocumentFragment()\n\n return useCallback(\n (children: React.ReactNode): React.ReactElement | null =>\n fragment !== undefined\n ? createPortal(<div>{children}</div>, fragment)\n : null,\n [fragment]\n )\n}\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\nimport { theme } from '@mirohq/design-system-stitches'\nimport type { CSSProperties } from '@stitches/react'\nimport { ComboboxList as AriakitComboboxList } from '@ariakit/react'\n\nimport { StyledContent } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { getChildrenItemValues } from '../util'\nimport type {\n Align,\n Overflow,\n PointerDownOutsideEvent,\n Side,\n Sticky,\n} from '../types'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nconst isInsideRef = (\n element: Element | null,\n ref: React.RefObject<Element>\n): boolean => (element != null && ref.current?.contains(element)) ?? false\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Combobox's content.\n */\n children?: ReactNode\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n\n /**\n * The preferred side of the anchor to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the anchor.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the anchor. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with boundary edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The distance in pixels from the boundary edges where collision detection\n * should occur. Accepts a number (same for all sides), or a partial padding\n * object, for example: { top: 20, left: 20 }.\n * @default 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in the\n * boundary as long as the trigger is at least partially in the boundary whilst\n * \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: Sticky\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true\n */\n hideWhenDetached?: boolean\n\n /**\n * The max height for the content.\n */\n maxHeight?: CSSProperties['maxHeight']\n\n /**\n * Setting overflow as \"visible\" means that the content can extend beyond\n * its collision boundary without any clipping or scrolling being\n * applied.\n * When set to \"auto,\" a scrollbar is added if the content exceeds its\n * boundaries. If no maxHeight is defined, it will be automatically adjusted\n * to fit the remaining space between the trigger and the boundary edge.\n * @default 'visible'\n */\n overflow?: Overflow\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = true,\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n triggerRef,\n contentRef,\n autoFilter,\n setFilteredItems,\n searchValue,\n direction,\n openState,\n } = useComboboxContext()\n\n useEffect(() => {\n const childrenItemValues = getChildrenItemValues(children)\n\n const shouldFilter =\n autoFilter !== false &&\n searchValue !== undefined &&\n searchValue.length > 0\n\n const items = shouldFilter\n ? childrenItemValues.filter(child =>\n child.toLowerCase().includes(searchValue.toLowerCase())\n )\n : childrenItemValues\n\n setFilteredItems(new Set(items))\n }, [children, autoFilter, setFilteredItems, searchValue])\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!openState) {\n return getInvisibleContent(children)\n }\n\n return (\n <StyledContent\n asChild\n {...restProps}\n dir={direction}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n ref={mergeRefs([forwardRef, contentRef])}\n onOpenAutoFocus={event => event.preventDefault()}\n onInteractOutside={event => {\n const target = event.target as Element | null\n const isTrigger = isInsideRef(target, triggerRef)\n const isContent = isInsideRef(target, contentRef)\n\n if (isTrigger || isContent) {\n event.preventDefault()\n }\n }}\n >\n {/* we have to specify role here otherwise it would be overwritten by Radix.Content */}\n <AriakitComboboxList role='listbox'>\n {overflow === 'auto' ? (\n <ScrollArea type='always' dir={direction}>\n <ScrollArea.Viewport\n availableHeight='var(--radix-popover-content-available-height)'\n verticalGap='var(--space-50) * 2'\n maxHeight={maxHeight}\n >\n {children}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n ) : (\n children\n )}\n </AriakitComboboxList>\n </StyledContent>\n )\n }\n)\n","import React from 'react'\nimport type { PopoverPortalProps } from '@radix-ui/react-popover'\nimport { Portal as RadixPortal } from '@radix-ui/react-popover'\n\nexport interface PortalProps extends PopoverPortalProps {\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import { Group as AriakitGroup } from '@ariakit/react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledGroup = styled(AriakitGroup, {})\n\nexport type StyledGroupProps = StrictComponentProps<typeof StyledGroup>\n","import React, { useMemo } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { getChildrenItemValues } from '../util'\nimport type { StyledGroupProps } from './group.styled'\nimport { StyledGroup } from './group.styled'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport type GroupProps = StyledGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof StyledGroup>,\n GroupProps\n>(({ children, ...rest }, forwardRef) => {\n const { autoFilter, filteredItems } = useComboboxContext()\n\n const childValues = useMemo(\n // don't perform calculation if auto filter is disabled\n () => (autoFilter !== false ? getChildrenItemValues(children) : []),\n [children, autoFilter]\n )\n const hasVisibleChildren = useMemo(\n () =>\n // don't perform calculation if auto filter is disabled\n autoFilter !== false\n ? childValues.some(value => filteredItems.has(value))\n : true,\n [childValues, filteredItems, autoFilter]\n )\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!hasVisibleChildren) {\n return getInvisibleContent(children)\n }\n\n return (\n <StyledGroup {...rest} ref={forwardRef}>\n {children}\n </StyledGroup>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { groupLabelStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledGroupLabel = styled(GroupLabel, groupLabelStyles)\n\nexport type StyledGroupLabelProps = StrictComponentProps<\n typeof StyledGroupLabel\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledGroupLabel } from './group-label.styled'\nimport type { StyledGroupLabelProps } from './group-label.styled'\n\nexport interface GroupLabelProps extends StyledGroupLabelProps {}\n\nexport const GroupLabel = React.forwardRef<\n ElementRef<typeof StyledGroupLabel>,\n GroupLabelProps\n>((props, forwardRef) => <StyledGroupLabel {...props} ref={forwardRef} />)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { BaseButton } from '@mirohq/design-system-base-button'\nimport { focus } from '@mirohq/design-system-styles'\n\nexport const StyledChip = styled(Primitive.div, {\n fontSize: '$150',\n padding: '$50 $100',\n borderRadius: '$round',\n display: 'flex',\n alignItems: 'center',\n gap: '$50',\n whiteSpace: 'nowrap',\n maxWidth: '$35',\n backgroundColor: '$background-neutrals-subtle',\n color: '$text-neutrals',\n})\n\nexport const StyledChipButton = styled(BaseButton, {\n color: '$icon-neutrals-inactive',\n\n ...focus.css({\n boxShadow: '$focus-small-outline',\n }),\n})\n\nexport const StyledChipContent = styled(Primitive.div, {\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n lineHeight: 1.3,\n})\n\nexport type StyledChipProps = StrictComponentProps<typeof StyledChip>\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledLeftSlot = styled(Primitive.span, {\n order: -1,\n marginRight: '$50',\n})\n\nexport type StyledLeftSlotProps = StrictComponentProps<typeof StyledLeftSlot>\n","import type { StyledLeftSlotProps } from './left-icon.styled'\nimport { StyledLeftSlot } from './left-icon.styled'\n\nexport interface LeftSlotProps extends StyledLeftSlotProps {}\n\nexport const LeftSlot = StyledLeftSlot\n","import React from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\nimport { IconCross } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledChip, StyledChipContent, StyledChipButton } from './chip.styled'\nimport type { StyledChipProps } from './chip.styled'\nimport { LeftSlot } from './left-slot'\n\nexport type ChipProps = StyledChipProps & {\n /**\n * Event handler called when the chip's remove button is clicked.\n */\n onRemove?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Remove button label to make the button recognizable by the screen readers.\n */\n removeAriaLabel: string\n}\n\nexport const Chip = React.forwardRef<ElementRef<typeof StyledChip>, ChipProps>(\n (\n { children, disabled = false, onRemove, removeAriaLabel, ...restProps },\n forwardRef\n ) => (\n <StyledChip {...restProps} ref={forwardRef}>\n <StyledChipContent>{children}</StyledChipContent>\n {!booleanify(disabled) && (\n <StyledChipButton onClick={onRemove} aria-label={removeAriaLabel}>\n <IconCross size='small' weight='thin' aria-hidden />\n </StyledChipButton>\n )}\n </StyledChip>\n )\n) as ForwardRefExoticComponent<ChipProps> & Partials\n\nexport interface Partials {\n LeftSlot: typeof LeftSlot\n}\n\nChip.LeftSlot = LeftSlot\n","import React, { useCallback } from 'react'\nimport type { FC } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { Chip } from '../chip'\n\nexport interface ValueProps {\n /**\n * The label to make the remove button recognizable by the screen readers.\n */\n unselectAriaLabel: string\n}\n\nexport const Value: FC<ValueProps> = ({ unselectAriaLabel }) => {\n const {\n value = [],\n setValue,\n disabled,\n 'aria-disabled': ariaDisabled,\n itemValueTextMap,\n } = useComboboxContext()\n const isDisabled = ariaDisabled === true || disabled\n\n const onItemRemove = useCallback(\n (item: string): void => {\n setValue(prevValue => prevValue?.filter(value => value !== item))\n },\n [setValue]\n )\n\n const getItemText = useCallback(\n (itemValue: string) => {\n const textValue = itemValueTextMap.get(itemValue)\n if (textValue === undefined || textValue === '') {\n return null\n }\n\n return (\n <Chip\n key={itemValue}\n onRemove={e => {\n onItemRemove(itemValue)\n e.stopPropagation()\n }}\n disabled={isDisabled}\n removeAriaLabel={`${unselectAriaLabel} ${textValue}`}\n data-testid={\n process.env.NODE_ENV === 'test'\n ? `combobox-value-${itemValue}`\n : undefined\n }\n >\n {textValue}\n </Chip>\n )\n },\n [isDisabled, itemValueTextMap, onItemRemove, unselectAriaLabel]\n )\n\n return <>{value.map(getItemText)}</>\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { separatorStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledSeparator = styled(Primitive.div, separatorStyles)\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledSeparator } from './separator.styled'\nimport type { StyledSeparatorProps } from './separator.styled'\n\nexport interface SeparatorProps extends StyledSeparatorProps {}\n\nexport const Separator = React.forwardRef<\n ElementRef<typeof StyledSeparator>,\n SeparatorProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue } = useComboboxContext()\n\n if (\n autoFilter === true &&\n searchValue !== undefined &&\n searchValue.length > 0\n ) {\n return null\n }\n\n return <StyledSeparator {...props} ref={forwardRef} aria-hidden />\n})\n","import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledNativeSelect = styled(Primitive.select, {\n // if we support autoComplete, we would have to use visually-hidden styles here\n display: 'none',\n})\n\nexport const StyledComboboxContent = styled(Primitive.div, {\n position: 'relative',\n width: '100%',\n})\n\nexport type StyledComboboxProps = ComponentPropsWithRef<\n typeof StyledComboboxContent\n>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledNoResult = styled(Primitive.div, {\n padding: '$100',\n})\n\nexport type StyledNoResultProps = StrictComponentProps<typeof StyledNoResult>\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\n\nimport type { StyledNoResultProps } from './no-result.styled'\nimport { StyledNoResult } from './no-result.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface NoResultProps extends StyledNoResultProps {\n /**\n * The content.\n */\n children?: ReactNode\n}\n\nexport const NoResult = React.forwardRef<\n ElementRef<typeof StyledNoResult>,\n NoResultProps\n>((props, forwardRef) => {\n const { filteredItems } = useComboboxContext()\n\n if (filteredItems.size !== 0) {\n return null\n }\n\n return <StyledNoResult {...props} ref={forwardRef} />\n})\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\nimport { ComboboxProvider as AriakitComboboxProvider } from '@ariakit/react'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport * as RadixPopover from '@radix-ui/react-popover'\n\nimport { Trigger } from './partials/trigger'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { Portal } from './partials/portal'\nimport { Group } from './partials/group'\nimport { GroupLabel } from './partials/group-label'\nimport { Value } from './partials/value'\nimport { Separator } from './partials/separator'\nimport { StyledComboboxContent, StyledNativeSelect } from './combobox.styled'\nimport type { StyledComboboxProps } from './combobox.styled'\nimport {\n ComboboxProvider,\n useComboboxContext,\n} from './hooks/use-combobox-context'\nimport type { ComboboxProviderProps } from './hooks/use-combobox-context'\nimport type { Direction } from './types'\nimport { NoResult } from './partials/no-result'\n\nexport interface ComboboxProps\n extends ComboboxProviderProps,\n StyledComboboxProps {\n /**\n * The value of the combobox when initially rendered. Use when you do not need\n * to control the state of the combobox.\n */\n defaultValue?: string[]\n\n /**\n * The controlled value of the combobox. Should be used in conjunction with\n * onValueChange.\n */\n value?: string[]\n\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[]) => void\n\n /**\n * The controlled search value to filter items. Should be used in conjunction with\n * onSearchValueChange.\n */\n searchValue?: string\n\n /**\n * Event handler called when the trigger input value changes.\n */\n onSearchValueChange?: (value: string) => void\n\n /**\n * The open state of the combobox when it is initially rendered. Use when you do\n * not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the combobox. Must be used in conjunction with\n * onOpen and onClose.\n */\n open?: boolean\n\n /**\n * Event handler called when the combobox opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the combobox closes.\n */\n onClose?: () => void\n\n /**\n * The reading direction of the combobox when applicable. If omitted, inherits\n * globally from DirectionProvider or assumes LTR (left-to-right) reading\n * mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The content of the combobox\n */\n children?: React.ReactNode\n\n /**\n * Enables/disabled automatic filtering.\n * @default true\n */\n autoFilter?: boolean\n\n /**\n * The name of the combobox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n { value: valueProp, onValueChange, name, children, ...restProps },\n forwardRef\n ) => {\n const {\n openState,\n setOpenState,\n defaultValue,\n value = [],\n setValue,\n required,\n readOnly,\n 'aria-disabled': ariaDisabled,\n disabled,\n direction,\n size,\n placeholder,\n triggerRef,\n } = useComboboxContext()\n\n const {\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n label,\n isFloatingLabel,\n focused,\n formElementRef,\n } = useFormFieldContext<HTMLSelectElement>()\n\n useEffect(() => {\n setRequired?.(required)\n setDisabled?.(disabled)\n setAriaDisabled?.(ariaDisabled)\n setReadOnly?.(readOnly)\n }, [\n readOnly,\n disabled,\n ariaDisabled,\n required,\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n ])\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\n\n const onSetSelectedValue = (newValue: string | string[]): void => {\n setValue(typeof newValue === 'string' ? [newValue] : newValue)\n }\n\n const onOpenChange = (value: boolean): void => {\n if (!booleanify(readOnly)) {\n setOpenState(value)\n }\n }\n\n const isFormControl = Boolean(triggerRef.current?.closest('form'))\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={onOpenChange}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={onOpenChange}\n defaultSelectedValue={defaultValue}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent\n ref={forwardRef}\n {...restProps}\n dir={direction}\n data-form-element='select'\n >\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n {isFormControl && (\n <StyledNativeSelect\n multiple\n autoComplete='off'\n name={name}\n tabIndex={-1}\n aria-hidden='true'\n ref={formElementRef}\n required={required}\n disabled={disabled}\n aria-disabled={ariaDisabled}\n value={value}\n // since we don't support autoComplete there is no way this select value will change,\n // although we still need to provide `onChange` since we use `value` and not `defaultValue`\n onChange={() => {}}\n >\n {value.length === 0 ? (\n <option value='' />\n ) : (\n // since we don't support autoComplete we can render here only selected values\n value.map(itemValue => (\n <option key={itemValue} value={itemValue}>\n {itemValue}\n </option>\n ))\n )}\n </StyledNativeSelect>\n )}\n </RadixPopover.Root>\n )\n }\n)\n\nexport const Combobox = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled,\n defaultOpen = false,\n open,\n valid,\n disabled,\n readOnly,\n required,\n value,\n defaultValue,\n onOpen,\n onClose,\n searchValue,\n onSearchValueChange,\n onValueChange,\n direction = 'ltr',\n autoFilter = true,\n ...restProps\n },\n forwardRef\n ) => (\n <ComboboxProvider\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n searchValue={searchValue}\n onSearchValueChange={onSearchValueChange}\n defaultOpen={defaultOpen}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n valid={valid}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n aria-disabled={ariaDisabled}\n direction={direction}\n autoFilter={autoFilter}\n >\n <Root {...restProps} value={value} ref={forwardRef} />\n </ComboboxProvider>\n )\n) as ForwardRefExoticComponent<ComboboxProps> & Partials\n\nexport interface Partials {\n Portal: typeof Portal\n Trigger: typeof Trigger\n Content: typeof Content\n Item: typeof Item\n Group: typeof Group\n GroupLabel: typeof GroupLabel\n Value: typeof Value\n Separator: typeof Separator\n NoResult: typeof NoResult\n}\n\nCombobox.Portal = Portal\nCombobox.Trigger = Trigger\nCombobox.Content = Content\nCombobox.Item = Item\nCombobox.Group = Group\nCombobox.GroupLabel = GroupLabel\nCombobox.Value = Value\nCombobox.Separator = Separator\nCombobox.NoResult = NoResult\n"],"names":["styled","Input","createContext","useRef","useState","useControllableState","useFormFieldContext","jsx","useContext","useCallback","RadixTrigger","IconChevronDown","IconCross","React","useEffect","booleanishAttrValue","RadixAnchor","mergeRefs","booleanify","AriakitComboboxTrigger","jsxs","RadixPopover","contentStyles","ComboboxItem","itemStyles","useAriaDisabled","useLayoutEffect","mergeProps","AriakitComboboxItemCheck","StyledItemCheck","IconCheckMark","createPortal","theme","AriakitComboboxList","ScrollArea","RadixPortal","AriakitGroup","useMemo","GroupLabel","groupLabelStyles","Primitive","BaseButton","focus","value","Fragment","separatorStyles","AriakitComboboxProvider","FloatingLabel"],"mappings":"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"}