@mirohq/design-system-combobox 0.1.0-combobox.5 → 0.1.0-combobox.6

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
@@ -6,11 +6,13 @@ var jsxRuntime = require('react/jsx-runtime');
6
6
  var React = require('react');
7
7
  var react = require('@ariakit/react');
8
8
  var designSystemBaseForm = require('@mirohq/design-system-base-form');
9
- var RadixPopover = require('@radix-ui/react-popover');
10
9
  var designSystemUtils = require('@mirohq/design-system-utils');
10
+ var RadixPopover = require('@radix-ui/react-popover');
11
11
  var designSystemStitches = require('@mirohq/design-system-stitches');
12
12
  var designSystemInput = require('@mirohq/design-system-input');
13
+ var reactUseControllableState = require('@radix-ui/react-use-controllable-state');
13
14
  var designSystemIcons = require('@mirohq/design-system-icons');
15
+ var designSystemScrollArea = require('@mirohq/design-system-scroll-area');
14
16
  var utils = require('@react-aria/utils');
15
17
  var designSystemUseAriaDisabled = require('@mirohq/design-system-use-aria-disabled');
16
18
  var designSystemStyles = require('@mirohq/design-system-styles');
@@ -78,10 +80,14 @@ const StyledInput = designSystemStitches.styled(designSystemInput.Input, {
78
80
  const ComboboxContext = React.createContext({});
79
81
  const ComboboxProvider = ({
80
82
  children,
83
+ open: openProp,
81
84
  defaultOpen,
85
+ onOpen,
86
+ onClose,
82
87
  valid,
83
88
  value: valueProp,
84
89
  defaultValue: defaultValueProp,
90
+ onValueChange,
85
91
  onSearchValueChange,
86
92
  autoFilter = true,
87
93
  ...restProps
@@ -89,9 +95,23 @@ const ComboboxProvider = ({
89
95
  const triggerRef = React.useRef(null);
90
96
  const inputRef = React.useRef(null);
91
97
  const contentRef = React.useRef(null);
92
- const [openState, setOpenState] = React.useState(defaultOpen != null ? defaultOpen : false);
93
- const [value, setValue] = React.useState(valueProp != null ? valueProp : []);
94
98
  const [defaultValue, setDefaultValue] = React.useState(defaultValueProp);
99
+ const [openState = false, setOpenState] = reactUseControllableState.useControllableState({
100
+ prop: openProp,
101
+ defaultProp: defaultOpen,
102
+ onChange: (state) => {
103
+ if (state) {
104
+ onOpen == null ? void 0 : onOpen();
105
+ } else {
106
+ onClose == null ? void 0 : onClose();
107
+ }
108
+ }
109
+ });
110
+ const [value, setValue] = reactUseControllableState.useControllableState({
111
+ prop: valueProp,
112
+ defaultProp: defaultValueProp,
113
+ onChange: onValueChange
114
+ });
95
115
  const [filteredItems, setFilteredItems] = React.useState(/* @__PURE__ */ new Set());
96
116
  const [searchValue, setSearchValue] = React.useState("");
97
117
  const { valid: formFieldValid } = designSystemBaseForm.useFormFieldContext();
@@ -146,7 +166,7 @@ const TriggerActionButton = ({
146
166
  clearActionLabel,
147
167
  size
148
168
  }) => {
149
- const { setOpenState, value, setValue } = useComboboxContext();
169
+ const { setOpenState, value = [], setValue } = useComboboxContext();
150
170
  const isEmpty = value.length === 0;
151
171
  const ActionButtonIcon = isEmpty ? designSystemIcons.IconChevronDown : designSystemIcons.IconCross;
152
172
  const label = isEmpty ? openActionLabel : clearActionLabel;
@@ -155,7 +175,7 @@ const TriggerActionButton = ({
155
175
  if (!isEmpty) {
156
176
  setValue([]);
157
177
  } else {
158
- setOpenState((prevOpen) => !prevOpen);
178
+ setOpenState((prevOpen = false) => !prevOpen);
159
179
  }
160
180
  event.stopPropagation();
161
181
  },
@@ -181,7 +201,7 @@ const Trigger = React__default["default"].forwardRef(
181
201
  "aria-disabled": ariaDisabled,
182
202
  valid: comboboxValid,
183
203
  disabled,
184
- value,
204
+ value = [],
185
205
  triggerRef,
186
206
  inputRef,
187
207
  onSearchValueChange,
@@ -276,7 +296,6 @@ const StyledContent = designSystemStitches.styled(RadixPopover__namespace.Conten
276
296
  width: "var(--radix-popover-trigger-width)",
277
297
  zIndex: "$select",
278
298
  overflowY: "auto",
279
- marginTop: "$200",
280
299
  padding: "$150",
281
300
  boxSizing: "border-box",
282
301
  outline: "1px solid transparent"
@@ -356,7 +375,13 @@ const Item = React__default["default"].forwardRef(
356
375
  // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here
357
376
  /* @__PURE__ */ jsxRuntime.jsx(StyledItemCheck, { ...props })
358
377
  ),
359
- children: /* @__PURE__ */ jsxRuntime.jsx(designSystemIcons.IconCheckMark, { size: "small" })
378
+ children: /* @__PURE__ */ jsxRuntime.jsx(
379
+ designSystemIcons.IconCheckMark,
380
+ {
381
+ size: "small",
382
+ "data-testid": process.env.NODE_ENV === "test" ? "combobox-item-check" : void 0
383
+ }
384
+ )
360
385
  }
361
386
  )
362
387
  ]
@@ -387,48 +412,65 @@ const getChildrenItemValues = (componentChildren) => {
387
412
  return values;
388
413
  };
389
414
 
415
+ const CONTENT_OFFSET = parseInt(designSystemStitches.theme.space[50]);
390
416
  const isInsideRef = (element, ref) => {
391
417
  var _a, _b;
392
418
  return (_b = element != null && ((_a = ref.current) == null ? void 0 : _a.contains(element))) != null ? _b : false;
393
419
  };
394
- const Content = React__default["default"].forwardRef(({ children, ...restProps }, forwardRef) => {
395
- const {
396
- triggerRef,
397
- contentRef,
398
- autoFilter,
399
- filteredItems,
400
- setFilteredItems,
401
- searchValue,
402
- noResultsText
403
- } = useComboboxContext();
404
- React.useEffect(() => {
405
- const childrenItemValues = getChildrenItemValues(children);
406
- setFilteredItems(
407
- new Set(
408
- autoFilter === false ? childrenItemValues : childrenItemValues.filter(
409
- (child) => child.toLowerCase().includes(searchValue.toLowerCase())
420
+ const Content = React__default["default"].forwardRef(
421
+ ({ sideOffset = CONTENT_OFFSET, maxHeight, children, ...restProps }, forwardRef) => {
422
+ const {
423
+ triggerRef,
424
+ contentRef,
425
+ autoFilter,
426
+ filteredItems,
427
+ setFilteredItems,
428
+ searchValue,
429
+ noResultsText,
430
+ direction
431
+ } = useComboboxContext();
432
+ React.useEffect(() => {
433
+ const childrenItemValues = getChildrenItemValues(children);
434
+ setFilteredItems(
435
+ new Set(
436
+ autoFilter === false ? childrenItemValues : childrenItemValues.filter(
437
+ (child) => child.toLowerCase().includes(searchValue.toLowerCase())
438
+ )
410
439
  )
411
- )
440
+ );
441
+ }, [children, autoFilter, setFilteredItems, searchValue]);
442
+ const content = filteredItems.size === 0 ? noResultsText : children;
443
+ return /* @__PURE__ */ jsxRuntime.jsx(
444
+ StyledContent,
445
+ {
446
+ ...restProps,
447
+ sideOffset,
448
+ ref: designSystemUtils.mergeRefs([forwardRef, contentRef]),
449
+ onOpenAutoFocus: (event) => event.preventDefault(),
450
+ onInteractOutside: (event) => {
451
+ const target = event.target;
452
+ const isTrigger = isInsideRef(target, triggerRef);
453
+ const isContent = isInsideRef(target, contentRef);
454
+ if (isTrigger || isContent) {
455
+ event.preventDefault();
456
+ }
457
+ },
458
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystemScrollArea.ScrollArea, { type: "always", dir: direction, children: [
459
+ /* @__PURE__ */ jsxRuntime.jsx(
460
+ designSystemScrollArea.ScrollArea.Viewport,
461
+ {
462
+ availableHeight: "var(--radix-popover-content-available-height)",
463
+ verticalGap: "calc(var(--space-150) * 2)",
464
+ maxHeight,
465
+ children: content
466
+ }
467
+ ),
468
+ /* @__PURE__ */ jsxRuntime.jsx(designSystemScrollArea.ScrollArea.Scrollbar, { orientation: "vertical", children: /* @__PURE__ */ jsxRuntime.jsx(designSystemScrollArea.ScrollArea.Thumb, {}) })
469
+ ] })
470
+ }
412
471
  );
413
- }, [children, autoFilter, setFilteredItems, searchValue]);
414
- return /* @__PURE__ */ jsxRuntime.jsx(
415
- StyledContent,
416
- {
417
- ...restProps,
418
- ref: designSystemUtils.mergeRefs([forwardRef, contentRef]),
419
- onOpenAutoFocus: (event) => event.preventDefault(),
420
- onInteractOutside: (event) => {
421
- const target = event.target;
422
- const isTrigger = isInsideRef(target, triggerRef);
423
- const isContent = isInsideRef(target, contentRef);
424
- if (isTrigger || isContent) {
425
- event.preventDefault();
426
- }
427
- },
428
- children: filteredItems.size === 0 ? noResultsText : children
429
- }
430
- );
431
- });
472
+ }
473
+ );
432
474
 
433
475
  const Portal = (props) => /* @__PURE__ */ jsxRuntime.jsx(RadixPopover.Portal, { ...props });
434
476
 
@@ -508,14 +550,14 @@ const StyledValue = designSystemStitches.styled(Chip, {
508
550
 
509
551
  const Value = ({ removeChipAriaLabel }) => {
510
552
  const {
511
- value,
553
+ value = [],
512
554
  setValue,
513
555
  disabled,
514
556
  "aria-disabled": ariaDisabled
515
557
  } = useComboboxContext();
516
558
  const isDisabled = ariaDisabled === true || disabled;
517
559
  const onItemRemove = (item) => {
518
- setValue((prevValue) => prevValue.filter((value2) => value2 !== item));
560
+ setValue((prevValue) => prevValue == null ? void 0 : prevValue.filter((value2) => value2 !== item));
519
561
  };
520
562
  if (value.length === 0) {
521
563
  return null;
@@ -526,6 +568,7 @@ const Value = ({ removeChipAriaLabel }) => {
526
568
  onRemove: () => onItemRemove(item),
527
569
  disabled: isDisabled,
528
570
  removeChipAriaLabel,
571
+ "data-testid": process.env.NODE_ENV === "test" ? "combobox-value-".concat(item) : void 0,
529
572
  children: item
530
573
  },
531
574
  item
@@ -539,10 +582,17 @@ const StyledSeparator = designSystemStitches.styled(designSystemPrimitive.Primit
539
582
  margin: "$100 0"
540
583
  });
541
584
 
542
- const Separator = React__default["default"].forwardRef((props, forwardRef) => /* @__PURE__ */ jsxRuntime.jsx(StyledSeparator, { ...props, ref: forwardRef, "aria-hidden": true }));
585
+ const Separator = React__default["default"].forwardRef((props, forwardRef) => {
586
+ const { autoFilter, searchValue } = useComboboxContext();
587
+ if (autoFilter === true && searchValue.length > 0) {
588
+ return null;
589
+ }
590
+ return /* @__PURE__ */ jsxRuntime.jsx(StyledSeparator, { ...props, ref: forwardRef, "aria-hidden": true });
591
+ });
543
592
 
544
593
  const StyledComboboxContent = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
545
- position: "relative"
594
+ position: "relative",
595
+ width: "100%"
546
596
  });
547
597
 
548
598
  const Root = React__default["default"].forwardRef(({ value: valueProp, onValueChange, children, ...restProps }, forwardRef) => {
@@ -575,8 +625,18 @@ const Root = React__default["default"].forwardRef(({ value: valueProp, onValueCh
575
625
  setReadOnly
576
626
  ]);
577
627
  const onSetSelectedValue = (newValue) => {
578
- onValueChange == null ? void 0 : onValueChange(newValue);
579
- setValue(newValue);
628
+ setValue(typeof newValue === "string" ? [newValue] : newValue);
629
+ };
630
+ const comboboxProps = {
631
+ ...restProps,
632
+ onClick: (event) => {
633
+ if (!designSystemUtils.booleanify(disabled)) {
634
+ setOpenState(true);
635
+ }
636
+ if (restProps.onClick !== void 0) {
637
+ restProps.onClick(event);
638
+ }
639
+ }
580
640
  };
581
641
  return /* @__PURE__ */ jsxRuntime.jsx(RadixPopover__namespace.Root, { open: openState, onOpenChange: setOpenState, children: /* @__PURE__ */ jsxRuntime.jsx(
582
642
  react.ComboboxProvider,
@@ -586,7 +646,15 @@ const Root = React__default["default"].forwardRef(({ value: valueProp, onValueCh
586
646
  defaultSelectedValue: defaultValue,
587
647
  selectedValue: value,
588
648
  setSelectedValue: onSetSelectedValue,
589
- children: /* @__PURE__ */ jsxRuntime.jsx(StyledComboboxContent, { ...restProps, ref: forwardRef, dir: direction, children })
649
+ children: /* @__PURE__ */ jsxRuntime.jsx(
650
+ StyledComboboxContent,
651
+ {
652
+ ...comboboxProps,
653
+ ref: forwardRef,
654
+ dir: direction,
655
+ children
656
+ }
657
+ )
590
658
  }
591
659
  ) });
592
660
  });
@@ -601,8 +669,9 @@ const Combobox = React__default["default"].forwardRef(
601
669
  required,
602
670
  value,
603
671
  defaultValue,
604
- onSearchValueChange,
605
672
  onOpen,
673
+ onClose,
674
+ onSearchValueChange,
606
675
  onValueChange,
607
676
  direction = "ltr",
608
677
  autoFilter = true,
@@ -613,9 +682,12 @@ const Combobox = React__default["default"].forwardRef(
613
682
  {
614
683
  defaultValue,
615
684
  value,
685
+ onValueChange,
616
686
  onSearchValueChange,
617
687
  defaultOpen,
618
688
  open,
689
+ onOpen,
690
+ onClose,
619
691
  valid,
620
692
  required,
621
693
  disabled,
@@ -624,15 +696,7 @@ const Combobox = React__default["default"].forwardRef(
624
696
  direction,
625
697
  autoFilter,
626
698
  noResultsText,
627
- children: /* @__PURE__ */ jsxRuntime.jsx(
628
- Root,
629
- {
630
- ...restProps,
631
- noResultsText,
632
- value,
633
- ref: forwardRef
634
- }
635
- )
699
+ children: /* @__PURE__ */ jsxRuntime.jsx(Root, { ...restProps, value, ref: forwardRef })
636
700
  }
637
701
  )
638
702
  );
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/partials/content.tsx","../src/partials/portal.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.styled.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: '0 $50',\n overflowY: 'scroll',\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 { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\nimport type { Direction } from '../types'\n\nexport interface ComboboxProps extends FormElementProps {\n open?: boolean\n defaultOpen?: boolean\n value?: string[]\n defaultValue?: string[]\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>>\n openState: boolean\n value: string[]\n setValue: React.Dispatch<React.SetStateAction<string[]>>\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}\n\nexport type ComboboxProviderProps = ComboboxProps\n\nconst ComboboxContext = createContext<ComboboxContextProps>({} as any)\n\nexport const ComboboxProvider = ({\n children,\n defaultOpen,\n valid,\n value: valueProp,\n defaultValue: defaultValueProp,\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 [openState, setOpenState] = useState(defaultOpen ?? false)\n const [value, setValue] = useState(valueProp ?? [])\n const [defaultValue, setDefaultValue] = useState(defaultValueProp)\n const [filteredItems, setFilteredItems] = useState(new Set<string>())\n const [searchValue, setSearchValue] = useState('')\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 }}\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'\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. Open/Close action will be performed.\n * Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox has values selected. Clear Combobox values action\n * will be performed. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n}\n\nexport const TriggerActionButton: React.FC<TriggerActionButtonProps> = ({\n openActionLabel,\n clearActionLabel,\n size,\n}) => {\n const { setOpenState, value, setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const ActionButtonIcon = isEmpty ? IconChevronDown : IconCross\n const label = isEmpty ? openActionLabel : clearActionLabel\n\n const onActionButtonClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!isEmpty) {\n setValue([])\n } else {\n setOpenState(prevOpen => !prevOpen)\n }\n\n event.stopPropagation()\n },\n [isEmpty, setValue, setOpenState]\n )\n\n return (\n <StyledActionButton label={label} size={size} onClick={onActionButtonClick}>\n <ActionButtonIcon size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Combobox } from '@ariakit/react'\nimport {\n booleanishAttrValue,\n mergeRefs,\n stringAttrValue,\n} from '@mirohq/design-system-utils'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport type { Input, InputProps } from '@mirohq/design-system-input'\nimport * as RadixPopover 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<TriggerActionButtonProps, 'openActionLabel' | 'clearActionLabel'> & {\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 clearActionLabel,\n onChange,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value,\n triggerRef,\n inputRef,\n onSearchValueChange,\n searchValue,\n setSearchValue,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaDescribedBy: formFieldContextDescribedBy,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n label,\n isFloatingLabel,\n focused,\n } = useFormFieldContext()\n\n const valid = formFieldValid ?? comboboxValid\n\n const inputProps = {\n ...restProps,\n 'aria-disabled': ariaDisabled,\n 'aria-invalid': ariaInvalid ?? formFieldAriaInvalid,\n 'aria-describedby': stringAttrValue(\n ariaDescribedBy,\n formFieldContextDescribedBy\n ),\n valid,\n disabled,\n invalid: booleanishAttrValue(valid),\n id: id ?? formElementId,\n placeholder: value.length === 0 ? placeholder : undefined,\n }\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\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 <RadixPopover.Anchor ref={mergeRefs([triggerRef, forwardRef])}>\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n <Combobox\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 clearActionLabel={clearActionLabel}\n size={size}\n />\n </StyledInput>\n }\n />\n </RadixPopover.Anchor>\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'\n\nexport const StyledContent = styled(RadixPopover.Content, {\n backgroundColor: '$background-neutrals-container',\n borderRadius: '$50',\n boxShadow: '$50',\n fontSize: '$175',\n fontWeight: 'normal',\n lineHeight: '1.5',\n width: 'var(--radix-popover-trigger-width)',\n zIndex: '$select',\n overflowY: 'auto',\n marginTop: '$200',\n padding: '$150',\n boxSizing: 'border-box',\n outline: '1px solid transparent',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import { ComboboxItem } from '@ariakit/react'\nimport { focus } from '@mirohq/design-system-styles'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledItemCheck = styled(Primitive.span, {\n color: '$icon-primary',\n paddingX: '$100',\n})\n\nexport const StyledItem = styled(ComboboxItem, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '$200',\n borderRadius: '$50',\n boxSizing: 'border-box',\n color: '$text-neutrals',\n cursor: 'pointer',\n fontSize: '$175',\n lineHeight: 1.5,\n position: 'relative',\n userSelect: 'none',\n paddingX: '$100',\n paddingY: '10px',\n\n ...focus.css({\n boxShadow: '$focus-small',\n }),\n\n '&:not([aria-disabled=\"true\"])': {\n _hover: {\n background: '$background-primary-subtle-hover',\n color: '$text-primary-hover',\n\n [`${StyledItemCheck}`]: {\n color: '$icon-primary-hover',\n },\n },\n },\n\n '&:disabled, &[aria-disabled=true], &[data-disabled]': {\n cursor: 'default',\n color: '$text-neutrals-disabled',\n },\n})\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'\n\nimport { StyledItem, StyledItemCheck } 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 { autoFilter, filteredItems, triggerRef, inputRef } =\n useComboboxContext()\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 return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n accessibleWhenDisabled={ariaDisabled === true}\n disabled={ariaDisabled === true || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n >\n {children}\n <AriakitComboboxItemCheck\n render={({ style, ...props }) => (\n // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here\n <StyledItemCheck {...props} />\n )}\n >\n <IconCheckMark size='small' />\n </AriakitComboboxItemCheck>\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, { useEffect } from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\n\nimport { StyledContent } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { getChildrenItemValues } from '../util'\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\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(({ children, ...restProps }, forwardRef) => {\n const {\n triggerRef,\n contentRef,\n autoFilter,\n filteredItems,\n setFilteredItems,\n searchValue,\n noResultsText,\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 return (\n <StyledContent\n {...restProps}\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 {filteredItems.size === 0 ? noResultsText : children}\n </StyledContent>\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 React, { useMemo } from 'react'\nimport { Group as AriakitGroup } from '@ariakit/react'\nimport type { ElementRef } from 'react'\nimport type { GroupProps as AriakitGroupProps } from '@ariakit/react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { getChildrenItemValues } from '../util'\n\nexport type GroupProps = AriakitGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof AriakitGroup>,\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 if (!hasVisibleChildren) {\n return null\n }\n\n return (\n <AriakitGroup {...rest} ref={forwardRef}>\n {children}\n </AriakitGroup>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledGroupLabel = styled(GroupLabel, {\n padding: '$100',\n color: '$text-neutrals-subtle',\n fontSize: '$150',\n textTransform: 'uppercase',\n fontWeight: 650,\n})\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 background: '$gray-100',\n color: '$gray-900',\n})\n\nexport const StyledChipButton = styled(BaseButton, {\n ...focus.css({\n boxShadow: '$focus-small-outline',\n borderColor: '$blue-400 !important',\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 chip label used to make the button recognizable by the screen readers.\n */\n removeChipAriaLabel?: string\n}\n\nexport const Chip = React.forwardRef<ElementRef<typeof StyledChip>, ChipProps>(\n (\n { children, disabled = false, onRemove, removeChipAriaLabel, ...restProps },\n forwardRef\n ) => (\n <StyledChip {...restProps} ref={forwardRef}>\n <StyledChipContent>{children}</StyledChipContent>\n {!booleanify(disabled) && (\n <StyledChipButton onClick={onRemove} aria-label={removeChipAriaLabel}>\n <IconCross size='small' weight='thin' color='gray-500' />\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 { styled } from '@mirohq/design-system-stitches'\n\nimport { Chip } from '../chip'\n\nexport const StyledValue = styled(Chip, {\n marginTop: '$50',\n})\n","import type { FC } from 'react'\nimport React from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledValue } from './value.styled'\n\nexport interface ValueProps {\n /**\n * Remove chip label used to make the button recognizable by the screen readers.\n */\n removeChipAriaLabel?: string\n}\n\nexport const Value: FC<ValueProps> = ({ removeChipAriaLabel }) => {\n const {\n value,\n setValue,\n disabled,\n 'aria-disabled': ariaDisabled,\n } = useComboboxContext()\n const isDisabled = ariaDisabled === true || disabled\n\n const onItemRemove = (item: string): void => {\n setValue(prevValue => prevValue.filter(value => value !== item))\n }\n\n if (value.length === 0) {\n return null\n }\n\n return (\n <>\n {value.map(item => (\n <StyledValue\n key={item}\n onRemove={() => onItemRemove(item)}\n disabled={isDisabled}\n removeChipAriaLabel={removeChipAriaLabel}\n >\n {item}\n </StyledValue>\n ))}\n </>\n )\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledSeparator = styled(Primitive.div, {\n backgroundColor: '$border-neutrals-subtle',\n height: '1px',\n width: '100%',\n margin: '$100 0',\n})\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\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 <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 StyledComboboxContent = styled(Primitive.div, {\n position: 'relative',\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 { useFormFieldContext } from '@mirohq/design-system-base-form'\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 } 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 extends ComboboxProviderProps {\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\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(({ value: valueProp, onValueChange, children, ...restProps }, forwardRef) => {\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 } = useComboboxContext()\n\n const { setRequired, setDisabled, setAriaDisabled, setReadOnly } =\n useFormFieldContext()\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 onSetSelectedValue = (newValue: string | string[]): void => {\n // setSelectedValue from Ariakit.ComboboxProvider expects to accept a union string | string[], type cast is required to specify that it's a multi value\n onValueChange?.(newValue as string[])\n setValue(newValue as string[])\n }\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={setOpenState}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={setOpenState}\n defaultSelectedValue={defaultValue}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent {...restProps} ref={forwardRef} dir={direction}>\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n </RadixPopover.Root>\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 onSearchValueChange,\n onOpen,\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 onSearchValueChange={onSearchValueChange}\n defaultOpen={defaultOpen}\n open={open}\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\n {...restProps}\n noResultsText={noResultsText}\n value={value}\n ref={forwardRef}\n />\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","useFormFieldContext","jsx","useContext","IconChevronDown","IconCross","useCallback","React","stringAttrValue","booleanishAttrValue","jsxs","RadixPopover","mergeRefs","FloatingLabel","Combobox","Primitive","ComboboxItem","focus","useAriaDisabled","mergeProps","AriakitComboboxItemCheck","IconCheckMark","useEffect","RadixPortal","useMemo","AriakitGroup","GroupLabel","BaseButton","booleanify","value","Fragment","AriakitComboboxProvider"],"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/partials/content.tsx","../src/partials/portal.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.styled.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: '0 $50',\n overflowY: 'scroll',\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'\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}\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\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 }}\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'\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. Open/Close action will be performed.\n * Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox has values selected. Clear Combobox values action\n * will be performed. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n}\n\nexport const TriggerActionButton: React.FC<TriggerActionButtonProps> = ({\n openActionLabel,\n clearActionLabel,\n size,\n}) => {\n const { setOpenState, value = [], setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const ActionButtonIcon = isEmpty ? IconChevronDown : IconCross\n const label = isEmpty ? openActionLabel : clearActionLabel\n\n const onActionButtonClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!isEmpty) {\n setValue([])\n } else {\n setOpenState((prevOpen = false) => !prevOpen)\n }\n\n event.stopPropagation()\n },\n [isEmpty, setValue, setOpenState]\n )\n\n return (\n <StyledActionButton label={label} size={size} onClick={onActionButtonClick}>\n <ActionButtonIcon size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Combobox } from '@ariakit/react'\nimport {\n booleanishAttrValue,\n mergeRefs,\n stringAttrValue,\n} from '@mirohq/design-system-utils'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport type { Input, InputProps } from '@mirohq/design-system-input'\nimport * as RadixPopover 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<TriggerActionButtonProps, 'openActionLabel' | 'clearActionLabel'> & {\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 clearActionLabel,\n onChange,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value = [],\n triggerRef,\n inputRef,\n onSearchValueChange,\n searchValue,\n setSearchValue,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaDescribedBy: formFieldContextDescribedBy,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n label,\n isFloatingLabel,\n focused,\n } = useFormFieldContext()\n\n const valid = formFieldValid ?? comboboxValid\n\n const inputProps = {\n ...restProps,\n 'aria-disabled': ariaDisabled,\n 'aria-invalid': ariaInvalid ?? formFieldAriaInvalid,\n 'aria-describedby': stringAttrValue(\n ariaDescribedBy,\n formFieldContextDescribedBy\n ),\n valid,\n disabled,\n invalid: booleanishAttrValue(valid),\n id: id ?? formElementId,\n placeholder: value.length === 0 ? placeholder : undefined,\n }\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\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 <RadixPopover.Anchor ref={mergeRefs([triggerRef, forwardRef])}>\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n <Combobox\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 clearActionLabel={clearActionLabel}\n size={size}\n />\n </StyledInput>\n }\n />\n </RadixPopover.Anchor>\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'\n\nexport const StyledContent = styled(RadixPopover.Content, {\n backgroundColor: '$background-neutrals-container',\n borderRadius: '$50',\n boxShadow: '$50',\n fontSize: '$175',\n fontWeight: 'normal',\n lineHeight: '1.5',\n width: 'var(--radix-popover-trigger-width)',\n zIndex: '$select',\n overflowY: 'auto',\n padding: '$150',\n boxSizing: 'border-box',\n outline: '1px solid transparent',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import { ComboboxItem } from '@ariakit/react'\nimport { focus } from '@mirohq/design-system-styles'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledItemCheck = styled(Primitive.span, {\n color: '$icon-primary',\n paddingX: '$100',\n})\n\nexport const StyledItem = styled(ComboboxItem, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '$200',\n borderRadius: '$50',\n boxSizing: 'border-box',\n color: '$text-neutrals',\n cursor: 'pointer',\n fontSize: '$175',\n lineHeight: 1.5,\n position: 'relative',\n userSelect: 'none',\n paddingX: '$100',\n paddingY: '10px',\n\n ...focus.css({\n boxShadow: '$focus-small',\n }),\n\n '&:not([aria-disabled=\"true\"])': {\n _hover: {\n background: '$background-primary-subtle-hover',\n color: '$text-primary-hover',\n\n [`${StyledItemCheck}`]: {\n color: '$icon-primary-hover',\n },\n },\n },\n\n '&:disabled, &[aria-disabled=true], &[data-disabled]': {\n cursor: 'default',\n color: '$text-neutrals-disabled',\n },\n})\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'\n\nimport { StyledItem, StyledItemCheck } 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 { autoFilter, filteredItems, triggerRef, inputRef } =\n useComboboxContext()\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 return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n accessibleWhenDisabled={ariaDisabled === true}\n disabled={ariaDisabled === true || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n >\n {children}\n <AriakitComboboxItemCheck\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 </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, { 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'\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 { Overflow } from '../types'\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 * The distance in pixels from the anchor. Only available when position is set\n * to popper.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\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 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 { sideOffset = CONTENT_OFFSET, maxHeight, children, ...restProps },\n forwardRef\n ) => {\n const {\n triggerRef,\n contentRef,\n autoFilter,\n filteredItems,\n setFilteredItems,\n searchValue,\n noResultsText,\n direction,\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 content = filteredItems.size === 0 ? noResultsText : children\n\n return (\n <StyledContent\n {...restProps}\n sideOffset={sideOffset}\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 <ScrollArea type='always' dir={direction}>\n <ScrollArea.Viewport\n availableHeight='var(--radix-popover-content-available-height)'\n verticalGap='calc(var(--space-150) * 2)'\n maxHeight={maxHeight}\n >\n {content}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\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 React, { useMemo } from 'react'\nimport { Group as AriakitGroup } from '@ariakit/react'\nimport type { ElementRef } from 'react'\nimport type { GroupProps as AriakitGroupProps } from '@ariakit/react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { getChildrenItemValues } from '../util'\n\nexport type GroupProps = AriakitGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof AriakitGroup>,\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 if (!hasVisibleChildren) {\n return null\n }\n\n return (\n <AriakitGroup {...rest} ref={forwardRef}>\n {children}\n </AriakitGroup>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledGroupLabel = styled(GroupLabel, {\n padding: '$100',\n color: '$text-neutrals-subtle',\n fontSize: '$150',\n textTransform: 'uppercase',\n fontWeight: 650,\n})\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 background: '$gray-100',\n color: '$gray-900',\n})\n\nexport const StyledChipButton = styled(BaseButton, {\n ...focus.css({\n boxShadow: '$focus-small-outline',\n borderColor: '$blue-400 !important',\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 chip label used to make the button recognizable by the screen readers.\n */\n removeChipAriaLabel?: string\n}\n\nexport const Chip = React.forwardRef<ElementRef<typeof StyledChip>, ChipProps>(\n (\n { children, disabled = false, onRemove, removeChipAriaLabel, ...restProps },\n forwardRef\n ) => (\n <StyledChip {...restProps} ref={forwardRef}>\n <StyledChipContent>{children}</StyledChipContent>\n {!booleanify(disabled) && (\n <StyledChipButton onClick={onRemove} aria-label={removeChipAriaLabel}>\n <IconCross size='small' weight='thin' color='gray-500' />\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 { styled } from '@mirohq/design-system-stitches'\n\nimport { Chip } from '../chip'\n\nexport const StyledValue = styled(Chip, {\n marginTop: '$50',\n})\n","import type { FC } from 'react'\nimport React from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledValue } from './value.styled'\n\nexport interface ValueProps {\n /**\n * Remove chip label used to make the button recognizable by the screen readers.\n */\n removeChipAriaLabel?: string\n}\n\nexport const Value: FC<ValueProps> = ({ removeChipAriaLabel }) => {\n const {\n value = [],\n setValue,\n disabled,\n 'aria-disabled': ariaDisabled,\n } = useComboboxContext()\n const isDisabled = ariaDisabled === true || disabled\n\n const onItemRemove = (item: string): void => {\n setValue(prevValue => prevValue?.filter(value => value !== item))\n }\n\n if (value.length === 0) {\n return null\n }\n\n return (\n <>\n {value.map(item => (\n <StyledValue\n key={item}\n onRemove={() => onItemRemove(item)}\n disabled={isDisabled}\n removeChipAriaLabel={removeChipAriaLabel}\n data-testid={\n process.env.NODE_ENV === 'test'\n ? `combobox-value-${item}`\n : undefined\n }\n >\n {item}\n </StyledValue>\n ))}\n </>\n )\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\n\nexport const StyledSeparator = styled(Primitive.div, {\n backgroundColor: '$border-neutrals-subtle',\n height: '1px',\n width: '100%',\n margin: '$100 0',\n})\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 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 { useFormFieldContext } 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 } 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 extends ComboboxProviderProps {\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 * Event handler called when the combobox clicked.\n */\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n Omit<ComboboxProps, 'noResultsText'>\n>(({ value: valueProp, onValueChange, children, ...restProps }, forwardRef) => {\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 } = useComboboxContext()\n\n const { setRequired, setDisabled, setAriaDisabled, setReadOnly } =\n useFormFieldContext()\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 onSetSelectedValue = (newValue: string | string[]): void => {\n setValue(typeof newValue === 'string' ? [newValue] : newValue)\n }\n\n const comboboxProps = {\n ...restProps,\n onClick: (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (!booleanify(disabled)) {\n setOpenState(true)\n }\n\n if (restProps.onClick !== undefined) {\n restProps.onClick(event)\n }\n },\n }\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={setOpenState}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={setOpenState}\n defaultSelectedValue={defaultValue}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent\n {...comboboxProps}\n ref={forwardRef}\n dir={direction}\n >\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n </RadixPopover.Root>\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","IconChevronDown","IconCross","useCallback","React","stringAttrValue","booleanishAttrValue","jsxs","RadixPopover","mergeRefs","FloatingLabel","Combobox","Primitive","ComboboxItem","focus","useAriaDisabled","mergeProps","AriakitComboboxItemCheck","IconCheckMark","theme","useEffect","ScrollArea","RadixPortal","useMemo","AriakitGroup","GroupLabel","BaseButton","booleanify","value","Fragment","AriakitComboboxProvider"],"mappings":"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"}