@mirohq/design-system-dropdown-menu 5.1.14 → 5.2.1

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/hooks/use-item.tsx","../src/partials/item-description.tsx","../src/partials/left-slot.tsx","../src/partials/illustration-slot.styled.ts","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-content.tsx","../src/partials/right-slot.styled.ts","../src/partials/right-slot.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.tsx","../src/partials/scrollable-content.tsx","../src/hooks/use-dropdown-context.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/partials/link-item.tsx","../src/partials/radio-group.styled.tsx","../src/partials/radio-group.tsx","../src/partials/radio-item.styled.tsx","../src/partials/radio-item.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/partials/switch-item.styled.ts","../src/partials/switch-item.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/sub-trigger.styled.tsx","../src/partials/sub-trigger.tsx","../src/partials/sub-content.styled.tsx","../src/partials/sub-content.tsx","../src/partials/sub.styled.tsx","../src/partials/sub.tsx","../src/partials/portal.tsx","../src/partials/icon-slot.styled.ts","../src/partials/icon-slot.tsx","../src/partials/hotkey.tsx","../src/partials/illustration-slot.tsx","../src/dropdown-menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\ninterface ItemProviderProps {\n children: React.ReactNode\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({ children }: ItemProviderProps): JSX.Element => {\n const [hasSlot, setHasSlot] = useState(false)\n\n const leftSlotMount = useCallback(() => {\n setHasSlot(true)\n }, [])\n\n const leftSlotDestroy = useCallback(() => {\n setHasSlot(false)\n }, [])\n\n const formattedChildren = hasSlot\n ? children\n : addPropsToChildren(children, () => true, {\n 'data-no-left-slot': '',\n })\n\n return (\n <Context.Provider\n value={{\n leftSlotMount,\n leftSlotDestroy,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useItem = (): ItemContext => useContext(Context)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { ItemProvider } from '../hooks/use-item'\n\nexport const StyledItemDescription = styled(Primitive.div, {\n display: '-webkit-box',\n width: '100%',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n overflow: 'hidden',\n gridArea: 'item-description',\n fontSize: '$150',\n lineHeight: 1.5,\n color: '$text-neutrals-subtle',\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n})\n\ntype StyledItemDescriptionProps = StrictComponentProps<\n typeof StyledItemDescription\n>\n\nexport const ItemDescription = React.forwardRef<\n ElementRef<typeof StyledItemDescription>,\n StyledItemDescriptionProps\n>(({ ...props }, forwardRef) => (\n <ItemProvider>\n <StyledItemDescription {...props} ref={forwardRef} />\n </ItemProvider>\n))\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n","import { focus } from '@mirohq/design-system-styles'\nimport { Hotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { StyledItemDescription } from '../partials/item-description'\nimport { StyledIllustrationSlot } from '../partials/illustration-slot.styled'\n\nexport const itemDefaults = {\n all: 'unset',\n boxSizing: 'border-box',\n fontSize: 14,\n lineHeight: '20px',\n color: '$text-neutrals',\n borderRadius: '$50',\n display: 'grid',\n gridTemplateColumns:\n 'auto 1fr minmax(min-content, var(--right-slot-max-width))',\n gridTemplateRows: 'auto minmax(0, 1fr)',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n padding: '10px $100',\n position: 'relative',\n userSelect: 'none',\n cursor: 'pointer',\n\n '&[data-no-left-slot]': {\n gridTemplateColumns: '1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n cursor: 'default',\n\n [`&, & ${StyledItemDescription}, & ${Hotkey}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${StyledIllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:disabled, &[data-disabled]': {\n pointerEvents: 'none',\n },\n\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active:not([aria-disabled=\"true\"])': {\n background: '$background-primary-subtle-active',\n boxShadow: 'none',\n color: '$text-primary-active',\n },\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n}\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIndicator = styled(Primitive.span, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nconst checkedSelector = `&[aria-checked=true] ${StyledIndicator}`\nconst uncheckedSelector = `&[aria-checked=false] ${StyledIndicator}`\nconst indeterminateSelector = `&[data-state=\"indeterminate\"] ${StyledIndicator}`\nconst hoverCheckedSelector = `&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst hoverUncheckedSelector = `&[aria-checked=false]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst disabledSelector = `&[aria-disabled=\"true\"] ${StyledIndicator}, &[data-disabled] ${StyledIndicator}`\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`${StyledIndicator}`]: {\n borderRadius: '$50',\n boxSizing: 'border-box',\n },\n variants: {\n variant: {\n 'solid-prominent': {\n [`${StyledIndicator}`]: {\n square: '$4',\n },\n [`${checkedSelector}, ${indeterminateSelector}`]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n [hoverCheckedSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n [uncheckedSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n [hoverUncheckedSelector]: {\n border: '1px solid $border-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n backgroundColor: '$background-neutrals-disabled',\n },\n },\n ghost: {\n [`${StyledIndicator}`]: {\n square: '$3',\n },\n [checkedSelector]: {\n color: '$icon-primary',\n },\n [indeterminateSelector]: {\n color: '$icon-primary',\n },\n [hoverCheckedSelector]: {\n color: '$icon-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\nimport type { ContainerSpacing } from '../types'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n containerSpacing: ContainerSpacing\n}\n\ninterface ContentProviderProps {\n children: React.ReactNode\n containerSpacing?: ContainerSpacing\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n containerSpacing: 'medium',\n})\n\nexport const ContentProvider = ({\n children,\n containerSpacing = 'medium',\n}: ContentProviderProps): JSX.Element => {\n const [maxWidth, setMaxWidth] = useState<number>(0)\n\n // we need maxRef, so we don't rerender RightSlot whenever we change maxWidth\n const maxRef = useRef<number>(0)\n\n // rightSlot index to remove width from map on destroy\n const indexRef = useRef<number>(0)\n\n const widthMapRef = useRef<Map<number, number>>(new Map())\n\n const updateMaxWith = useCallback((value: number) => {\n maxRef.current = value\n setMaxWidth(value)\n }, [])\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotMount = useCallback(\n (width: number): number => {\n indexRef.current++\n\n widthMapRef.current.set(indexRef.current, width)\n\n if (width > maxRef.current) {\n updateMaxWith(width)\n }\n\n return indexRef.current\n },\n [updateMaxWith]\n )\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotDestroy = useCallback(\n (index: number): void => {\n widthMapRef.current.delete(index)\n\n if (widthMapRef.current.size === 0) {\n updateMaxWith(0)\n } else {\n const maximum = Math.max(...Array.from(widthMapRef.current.values()))\n updateMaxWith(maximum)\n }\n },\n [updateMaxWith]\n )\n\n const formattedChildren = addPropsToChildren(children, () => true, {\n UNSAFE_style: {\n '--right-slot-max-width': `${Math.ceil(maxWidth)}px`,\n },\n })\n\n return (\n <Context.Provider\n value={{\n rightSlotMount,\n rightSlotDestroy,\n containerSpacing,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n height: '$5',\n width: '$7',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$0',\n },\n})\n","import React, { useRef } from 'react'\nimport type { ComponentPropsWithRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledRightSlot } from './right-slot.styled'\n\nexport const RightSlot = (\n props: ComponentPropsWithRef<typeof StyledRightSlot>\n): JSX.Element => {\n const { rightSlotMount, rightSlotDestroy } = useContent()\n\n const ref = useRef<HTMLDivElement>(null)\n\n useLayoutEffect(() => {\n if (ref.current !== null) {\n const width = ref.current.getBoundingClientRect().width\n const index = rightSlotMount(width)\n\n return () => rightSlotDestroy(index)\n }\n\n return () => {}\n }, [rightSlotMount, rightSlotDestroy, ref])\n\n return <StyledRightSlot ref={ref} {...props} />\n}\n","import { booleanify } from '@mirohq/design-system-utils'\nimport { useAriaDisabled as DS_useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\ntype UseAriaDisabled = typeof DS_useAriaDisabled\ntype UseAriaDisabledParameters = Parameters<UseAriaDisabled>\n\ntype DropdownAriaDisabledProps<T> = Omit<T, 'onSelect'> & {\n onSelect?: (event: Event) => void\n}\n\ntype UseAriaDisabledProps = DropdownAriaDisabledProps<\n UseAriaDisabledParameters[0]\n>\n\ntype UseAriaDisabledExceptions = UseAriaDisabledParameters[1] & {\n closeOnSelect?: boolean | undefined\n}\n\nexport const useAriaDisabled = <T extends UseAriaDisabledProps>(\n { onSelect, ...restProps }: T,\n { exceptions, closeOnSelect = true }: UseAriaDisabledExceptions = {}\n): T => {\n const elementProps = DS_useAriaDisabled(restProps, {\n ...exceptions,\n allowArrows: true,\n })\n const { 'aria-disabled': ariaDisabled, onPointerMove, onClick } = elementProps\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {\n ...elementProps,\n\n // these events need to be manually included\n // bacause useAriaDisabled only removes the events from the props.\n // Radix uses these events to handle the dropdown menu so we need to prevent\n // it from being called when the item is aria-disabled.\n onSelect: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n if (!closeOnSelect) {\n e.preventDefault()\n }\n\n onSelect?.(e)\n },\n onPointerMove: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onPointerMove?.(e)\n },\n onClick: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onClick?.(e)\n },\n } as T\n}\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport {\n IconCheckMark,\n IconMinus,\n IconProhibit,\n} from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledCheckboxItem, StyledIndicator } from './checkbox-item.styled'\nimport type { StyledCheckboxItemProps } from './checkbox-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface CheckboxItemProps\n extends Omit<StyledCheckboxItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean | 'indeterminate'\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n\n /**\n * The style of the checkbox in the menu item.\n * @default 'ghost'\n */\n variant?: StyledCheckboxItemProps['variant']\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(\n (\n {\n children,\n checked,\n onChange,\n disabled,\n closeOnSelect = false,\n variant = 'ghost',\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n const { 'aria-disabled': ariaDisabled } = restProps\n const iconCss = { square: '100%', display: 'block' }\n const isAriaDisabled = booleanify(ariaDisabled ?? false)\n const disabledUnchecked =\n (disabled === true || isAriaDisabled) && checked === false\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...elementProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n variant={variant}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {disabledUnchecked && <IconProhibit css={iconCss} />}\n {checked === true && <IconCheckMark css={iconCss} />}\n {checked === 'indeterminate' && <IconMinus css={iconCss} />}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n }\n)\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GAP = '$50'\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const CONTENT_PADDING_TOKENS = {\n small: { y: 50, x: 150 },\n medium: { y: 150, x: 150 },\n large: { y: 150, x: 300 },\n} as const\n\nexport const CONTENT_PADDING = {\n small: `$${CONTENT_PADDING_TOKENS.small.y} $${CONTENT_PADDING_TOKENS.small.x}`,\n medium: `$${CONTENT_PADDING_TOKENS.medium.y} $${CONTENT_PADDING_TOKENS.medium.x}`,\n large: `$${CONTENT_PADDING_TOKENS.large.y} $${CONTENT_PADDING_TOKENS.large.x}`,\n}\n\nexport const contentDefaults = {\n maxWidth: '$125',\n\n '@media (prefers-reduced-motion: no-preference)': {\n animationDuration: '150ms',\n animationTimingFunction: 'cubic-bezier(0.25, 0.5, 0.5, 0.9)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': { animationName: animations.fadeInScaled },\n '&[data-state=\"closed\"]': { animationName: animations.fadeOutScaled },\n '&[data-side=\"top\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'bottom left' },\n '&[data-align=\"center\"]': { transformOrigin: 'bottom center' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n '&[data-side=\"right\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'center left' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom left' },\n },\n '&[data-side=\"bottom\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'top center' },\n '&[data-align=\"end\"]': { transformOrigin: 'top right' },\n },\n '&[data-side=\"left\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top right' },\n '&[data-align=\"center\"]': { transformOrigin: 'center right' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n },\n position: 'relative',\n zIndex: '$dropdown-menu',\n outline: '1px solid transparent !important', // important because Radix overrides outline in element styles\n borderRadius: '$100',\n backgroundColor: '$background-neutrals-layout',\n border: '.5px solid $border-neutrals-subtle',\n boxShadow: '$elevation-200',\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport {\n contentDefaults,\n CONTENT_PADDING,\n CONTENT_GAP,\n} from '../styles/content'\n\nexport const StyledItemsContainer = styled('div', {\n display: 'grid',\n gap: CONTENT_GAP,\n\n variants: {\n containerSpacing: {\n small: {\n padding: CONTENT_PADDING.small,\n },\n medium: {\n padding: CONTENT_PADDING.medium,\n },\n large: {\n padding: CONTENT_PADDING.large,\n },\n },\n },\n})\n\nexport type StyledItemsContainerProps = StrictComponentProps<\n typeof StyledItemsContainer\n>\n\nexport const StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\n\nimport type { Direction, Overflow } from '../types'\n\nexport const RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-dropdown-menu-content-available-height)'\n\ninterface ScrollableContentProps {\n children?: React.ReactNode\n maxHeight?: string\n overflow: Overflow\n direction?: Direction\n}\n\nexport const ScrollableContent = ({\n children,\n maxHeight,\n overflow,\n direction,\n}: ScrollableContentProps): JSX.Element => {\n if (overflow === 'auto') {\n return (\n <ScrollArea dir={direction} type='always'>\n <ScrollArea.Viewport\n css={{\n maxHeight: maxHeight,\n }}\n >\n {children}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n )\n }\n\n return <>{children}</>\n}\n","import { createContext, useContext } from 'react'\n\nimport type { Direction } from '../types'\n\ninterface DropdownProps {\n direction?: Direction\n}\n\ninterface DropdownContextProps extends DropdownProps {}\n\nexport interface DropdownProviderProps extends DropdownProps {\n children: React.ReactNode\n}\n\nconst DropdownContext = createContext<DropdownContextProps>({} as any)\n\nexport const DropdownProvider = ({\n children,\n ...restProps\n}: DropdownProviderProps): JSX.Element => (\n <DropdownContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </DropdownContext.Provider>\n)\n\nexport const useDropdownContext = (): DropdownContextProps =>\n useContext(DropdownContext)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledContentProps } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n ContainerSpacing,\n Overflow,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around.\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * The preferred side of the trigger to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled. This prop is\n * ignored within submenus.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur. This prop is ignored within submenus.\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 window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\n * @default 0\n */\n collisionPadding?: number\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from\n * DropdownMenu.Portal.\n */\n forceMount?: true\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 * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container.\n * @default 'medium'\n */\n containerSpacing?: ContainerSpacing\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 loop = false,\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = false,\n containerSpacing = 'medium',\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { direction } = useDropdownContext()\n\n /**\n * TODO remove when Radix release the fix:\n * https://github.com/radix-ui/primitives/pull/3237\n */\n const preventScrollOnFocus = (ref: HTMLDivElement | null): void => {\n if (ref === null || '_autoScrollPrevented' in ref.focus) {\n return\n }\n const _focus = ref.focus\n\n function focusWithouAutoScroll(\n this: HTMLDivElement,\n ...args: Parameters<typeof _focus>\n ): void {\n if (window.event?.type === 'focusScope.autoFocusOnMount') {\n _focus.call(this, {\n preventScroll: true,\n })\n } else {\n _focus.apply(this, args)\n }\n }\n focusWithouAutoScroll._autoScrollPrevented = true\n ref.focus = focusWithouAutoScroll\n }\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledContent\n {...restProps}\n ref={mergeRefs([forwardRef, preventScrollOnFocus])}\n loop={loop}\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 >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledItem = styled(RadixDropdownMenu.Item, {\n ...itemDefaults,\n variants: {\n // This is a hack for the :has() selector\n // Remove it after Firefox implements it\n hasRightSlot: {\n true: {\n paddingRight: '$600',\n },\n },\n variant: {\n subtle: {},\n danger: {\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])':\n {\n color: '$text-danger',\n backgroundColor: '$background-danger-subtle',\n },\n '&:active:not([aria-disabled=\"true\"],[data-disabled])': {\n color: '$text-danger-active',\n backgroundColor: '$background-danger-subtle-active',\n },\n },\n },\n },\n})\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n * Calling event.preventDefault in this handler will prevent the dropdown menu\n * from closing when selecting that item.\n */\n onSelect?: (event: Event) => void\n\n /**\n * Optional text used for typeahead purposes. By default, the typeahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Change the item style.\n * @default 'subtle'\n */\n variant?: StyledItemProps['variant']\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, variant = 'subtle', ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...elementProps}\n variant={variant}\n disabled={disabled}\n ref={forwardRef}\n />\n </ItemProvider>\n )\n }\n)\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport { Item } from './item'\nimport type { ItemProps } from './item'\n\ntype ItemPropsWithAnchor = ItemProps & AnchorHTMLAttributes<typeof Item>\nexport interface LinkItemProps extends ItemPropsWithAnchor {}\n\nexport const LinkItem = React.forwardRef<\n ElementRef<typeof Item>,\n LinkItemProps\n>(({ children, href, ...restProps }, forwardRef) => (\n <Item asChild ref={forwardRef} {...restProps}>\n <a href={href}>{children}</a>\n </Item>\n))\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { CONTENT_GAP } from '../styles/content'\n\nexport const StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n display: 'grid',\n gap: CONTENT_GAP,\n})\n\nexport type StyledRadioGroupProps = StrictComponentProps<\n typeof StyledRadioGroup\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledRadioGroup } from './radio-group.styled'\nimport type { StyledRadioGroupProps } from './radio-group.styled'\n\nexport interface RadioGroupProps\n extends Omit<StyledRadioGroupProps, 'onChange'> {\n /**\n * The value of the selected item in the group\n */\n value: string\n\n /**\n * Event handler called when the selected radio changes\n */\n onChange: (value: string) => void\n}\n\nexport const RadioGroup = React.forwardRef<\n ElementRef<typeof StyledRadioGroup>,\n RadioGroupProps\n>((props, forwardRef) => {\n const { onChange, ...restProps } = props\n\n return (\n <StyledRadioGroup\n {...restProps}\n ref={forwardRef}\n onValueChange={onChange}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { IconProhibit } from '@mirohq/design-system-icons'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledRadioContainer = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '$4',\n height: '$4',\n boxSizing: 'border-box',\n border: '1px solid $border-neutrals',\n borderRadius: '$round',\n})\n\nexport const StyledPill = styled(Primitive.div, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$round',\n})\n\nexport const StyledProhibited = styled(IconProhibit, {\n display: 'none',\n width: '$3 !important',\n})\n\nexport const StyledRadioItem = styled(RadixDropdownMenu.RadioItem, {\n ...itemDefaults,\n [`&[aria-checked=true] ${StyledRadioContainer}`]: {\n color: '$icon-primary',\n borderColor: '$border-primary',\n\n [`& ${StyledPill}`]: {\n display: 'block',\n backgroundColor: '$background-primary-prominent-selected',\n },\n },\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledRadioContainer}`]:\n {\n [`& ${StyledPill}`]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n\n [`\n &[aria-disabled=\"true\"] ${StyledRadioContainer},\n &[data-disabled] ${StyledRadioContainer}\n `]: {\n color: '$icon-neutrals-disabled',\n borderColor: '$border-neutrals-disabled',\n\n [`& ${StyledPill}`]: {\n backgroundColor: '$icon-neutrals-disabled',\n },\n },\n '&[aria-checked=false]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\n },\n [`${StyledRadioContainer}`]: {\n borderWidth: '2px',\n borderColor: '$border-neutrals-controls',\n },\n})\n\nexport type StyledRadioItemProps = StrictComponentProps<typeof StyledRadioItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport {\n StyledPill,\n StyledProhibited,\n StyledRadioContainer,\n StyledRadioItem,\n} from './radio-item.styled'\nimport type { StyledRadioItemProps } from './radio-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface RadioItemProps extends StyledRadioItemProps {\n /**\n * The unique value of the item.\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 * Event handler called when the user selects an item (via mouse or keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled, children, closeOnSelect = false, ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps, {\n closeOnSelect,\n })\n\n return (\n <ItemProvider>\n <StyledRadioItem {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledRadioContainer>\n <StyledPill />\n <StyledProhibited />\n </StyledRadioContainer>\n </RightSlot>\n </StyledRadioItem>\n </ItemProvider>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSeparator = styled(RadixDropdownMenu.Separator, {\n borderTop: '1px solid $border-neutrals-subtle',\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) => <StyledSeparator {...props} ref={forwardRef} />)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { styles } from '@mirohq/design-system-base-switch'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledSwitch = styled(Primitive.span, {\n ...styles.default,\n width: '$7',\n height: '$4',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[aria-checked=true] ${StyledSwitch}`]: styles.checked,\n [`&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.checkedHovered,\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.hovered,\n [`\n &[aria-disabled=\"true\"] ${StyledSwitch},\n &[data-disabled] ${StyledSwitch}\n `]: styles.disabled,\n})\n\nexport type StyledSwitchItemProps = StrictComponentProps<\n typeof StyledSwitchItem\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Thumb } from '@mirohq/design-system-base-switch'\n\nimport { RightSlot } from './right-slot'\nimport type { StyledSwitchItemProps } from './switch-item.styled'\nimport { StyledSwitch, StyledSwitchItem } from './switch-item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface SwitchItemProps\n extends Omit<StyledSwitchItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n {\n disabled,\n checked,\n onChange,\n closeOnSelect = false,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...elementProps}\n disabled={disabled}\n checked={checked}\n onCheckedChange={onChange}\n ref={forwardRef}\n >\n {children}\n <RightSlot>\n <StyledSwitch>\n <Thumb />\n </StyledSwitch>\n </RightSlot>\n </StyledSwitchItem>\n </ItemProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { focus } from '@mirohq/design-system-styles'\n\nexport const StyledTrigger = styled(RadixDropdownMenu.Trigger, {\n variants: {\n unstyled: {\n true: {\n all: 'unset',\n boxSizing: 'border-box',\n cursor: 'pointer',\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useRef } from 'react'\nimport { mergeRefs, handleVirtualClick } from '@mirohq/design-system-utils'\nimport type { ElementRef } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onClick, ...restProps }, forwardRef) => {\n const ref = useRef<HTMLButtonElement>(null)\n\n return (\n <StyledTrigger\n {...restProps}\n onClick={e => {\n handleVirtualClick(e, ref)\n onClick?.(e)\n }}\n ref={mergeRefs([ref, forwardRef])}\n unstyled={!asChild}\n asChild={asChild}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIconContainer = styled(Primitive.span, {\n color: '$icon-neutrals-with-text',\n display: 'flex',\n alignItems: 'center',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:is(:hover,[data-hovered]):not([aria-disabled=\"true\"]) ${StyledIconContainer}`]:\n {\n color: '$icon-neutrals-hover',\n },\n})\n\nexport type StyledSubTriggerProps = StrictComponentProps<\n typeof StyledSubTrigger\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconChevronRight } from '@mirohq/design-system-icons'\n\nimport { StyledIconContainer, StyledSubTrigger } from './sub-trigger.styled'\nimport type { StyledSubTriggerProps } from './sub-trigger.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for type ahead purposes. By default the type ahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have.\n */\n textValue?: string\n}\n\nexport const SubTrigger = React.forwardRef<\n ElementRef<typeof StyledSubTrigger>,\n StyledSubTriggerProps\n>(({ children, disabled = false, ...restProps }, forwardRef) => {\n // remove onSelect to avoid TS mismatch error\n let { onSelect, ...elementProps } = restProps\n elementProps = useAriaDisabled(elementProps)\n\n return (\n <StyledSubTrigger {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledIconContainer\n data-testid={\n process.env.NODE_ENV === 'test' ? 'submenu-arrow-icon' : undefined\n }\n >\n <IconChevronRight size='small' />\n </StyledIconContainer>\n </RightSlot>\n </StyledSubTrigger>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { contentDefaults } from '../styles/content'\n\nexport const StyledSubContent = styled(\n RadixDropdownMenu.SubContent,\n contentDefaults\n)\n\nexport type StyledSubContentProps = StrictComponentProps<\n typeof StyledSubContent\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { theme } from '@mirohq/design-system-stitches'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_OFFSET, CONTENT_PADDING_TOKENS } from '../styles/content'\nimport { ContentProvider, useContent } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport { StyledItemsContainer } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n StickyBehavior,\n Overflow,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface SubContentProps extends StyledSubContentProps {\n /**\n * Whether keyboard navigation should loop around\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries.\n */\n forceMount?: true\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_PADDING_Y + CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default -CONTENT_PADDING_Y\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n *The distance in pixels from the boundary edges where collision detection\n *should occur. Accepts a number (same for all sides).\n * @default 0\n */\n collisionPadding?: 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 sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\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 subContent.\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 SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset,\n alignOffset,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = true,\n sticky = 'partial',\n overflow = 'visible',\n maxHeight,\n collisionBoundary,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n /* A new ContentProvider instance is created per Content and SubContent,\n using the context from the parent is necessary to preserve this value. */\n const { containerSpacing } = useContent()\n const { direction } = useDropdownContext()\n\n // We need to calculate offsets based on content padding,\n // otherwise submenu would overlap the menu and won't be aligned with the menu properly\n const paddingToken = CONTENT_PADDING_TOKENS[containerSpacing]\n const contentSideOffset =\n CONTENT_OFFSET + parseInt(theme.space[paddingToken.x])\n const contentAlignOffset = -parseInt(theme.space[paddingToken.y])\n\n /*\n When SubContent renders inside the Content and they both have collisionBoundary,\n Radix content available height is not calculated correctly and uses Content's available height.\n If we get collisionBoundary's height, it works just fine\n */\n const availableHeight =\n collisionBoundary != null\n ? getComputedStyle(collisionBoundary).getPropertyValue('height')\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset ?? contentSideOffset}\n alignOffset={alignOffset ?? contentAlignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n collisionBoundary={collisionBoundary}\n >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${availableHeight}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : availableHeight\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledSubContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSub = styled(RadixDropdownMenu.Sub, {})\n\nexport type StyledSubProps = StrictComponentProps<typeof StyledSub>\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledSub } from './sub.styled'\nimport type { StyledSubProps } from './sub.styled'\n\nexport interface SubProps extends StyledSubProps {\n /**\n * The open state of the submenu when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the submenu. Must be used in conjunction with\n * onOpenChange.\n */\n open?: boolean\n\n /**\n * Event handler called when the submenu opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the submenu closes.\n */\n onClose?: () => void\n}\n\nexport const Sub = React.forwardRef<ElementRef<typeof StyledSub>, SubProps>(\n ({ defaultOpen, onOpen, onClose, open, ...restProps }, forwardRef) => {\n const [openState, setOpenState] = useState(defaultOpen)\n return (\n <StyledSub\n {...restProps}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n ref={forwardRef}\n />\n )\n }\n)\n","import React from 'react'\nimport type { DropdownMenuPortalProps } from '@radix-ui/react-dropdown-menu'\nimport { Portal as RadixPortal } from '@radix-ui/react-dropdown-menu'\n\nexport interface PortalProps extends DropdownMenuPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by DropdownMenu.Content and DropdownMenu.SubContent respectively.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal = (props: PortalProps): React.ReactNode => (\n <RadixPortal {...props} />\n)\n","import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { styles as baseIconStyles } from '@mirohq/design-system-base-icon'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n square: '$5',\n\n '& svg:not([data-icon-component]), & img:not([data-icon-component])': {\n ...baseIconStyles.size.small,\n },\n})\n\nexport type StyledIconSlotProps = ComponentPropsWithRef<typeof StyledIconSlot>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport type { IconSizes } from '@mirohq/design-system-base-icon'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\ninterface IconComponentProps {\n 'data-icon-component': ''\n size: IconSizes\n}\n\nexport type IconSlotProps = { children: React.ReactNode } & StyledIconSlotProps\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n StyledIconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n const formattedChildren = addPropsToChildren<IconComponentProps>(\n children,\n isIconComponent,\n {\n 'data-icon-component': '',\n size: 'small',\n }\n )\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps}>\n <Primitive.svg asChild aria-hidden>\n {formattedChildren}\n </Primitive.svg>\n </StyledIconSlot>\n )\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { HotkeySharedProps as BaseHotkeyProps } from '@mirohq/design-system-base-hotkey'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { RightSlot } from './right-slot'\n\nexport type HotkeyProps = BaseHotkeyProps & {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof BaseHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <RightSlot>\n <BaseHotkey ref={forwardRef} {...restProps} variant='neutral'>\n {children}\n </BaseHotkey>\n </RightSlot>\n))\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useItem } from '../hooks/use-item'\nimport type { StyledIllustrationSlotProps } from './illustration-slot.styled'\nimport { StyledIllustrationSlot } from './illustration-slot.styled'\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n StyledIllustrationSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import React, { useEffect } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { CheckboxItem } from './partials/checkbox-item'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { LinkItem } from './partials/link-item'\nimport { RadioGroup } from './partials/radio-group'\nimport { RadioItem } from './partials/radio-item'\nimport { Separator } from './partials/separator'\nimport { SwitchItem } from './partials/switch-item'\nimport { Trigger } from './partials/trigger'\nimport { SubTrigger } from './partials/sub-trigger'\nimport { SubContent } from './partials/sub-content'\nimport { Sub } from './partials/sub'\nimport { Portal } from './partials/portal'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\nimport { Hotkey } from './partials/hotkey'\nimport { IllustrationSlot } from './partials/illustration-slot'\nimport { DropdownProvider } from './hooks/use-dropdown-context'\nimport type { Direction } from './types'\n\nexport interface DropdownMenuProps {\n /**\n * The open state of the dropdown menu when it is initially rendered. Use when\n * you do not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The current dropdown open state.\n */\n open?: boolean\n\n /**\n * Event handler called when the dropdown opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the dropdown closes.\n */\n onClose?: () => void\n\n /**\n * Defines whether the interaction with outside elements will be disabled and\n * only menu content will be visible to screen readers. This prop is ignored\n * within submenus.\n * @default false\n */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nconst Root = ({\n defaultOpen = false,\n direction,\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}: DropdownMenuProps): React.ReactNode => {\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(open)\n\n useEffect(() => {\n if (prevOpen === true && open === false) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, open, prevOpen])\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={newOpen => {\n if (!newOpen && open === undefined) {\n ignoreNextTooltip()\n }\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\nexport const DropdownMenu: ((props: DropdownMenuProps) => React.ReactNode) &\n Partials = ({ direction = 'ltr', ...restProps }) => (\n <DropdownProvider direction={direction}>\n <BaseTooltipProvider>\n <Root direction={direction} {...restProps} />\n </BaseTooltipProvider>\n </DropdownProvider>\n)\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n Hotkey: typeof Hotkey\n IconSlot: typeof IconSlot\n IllustrationSlot: typeof IllustrationSlot\n Item: typeof Item\n ItemDescription: typeof ItemDescription\n LinkItem: typeof LinkItem\n Portal: typeof Portal\n RadioGroup: typeof RadioGroup\n RadioItem: typeof RadioItem\n Separator: typeof Separator\n Sub: typeof Sub\n SubContent: typeof SubContent\n SubTrigger: typeof SubTrigger\n SwitchItem: typeof SwitchItem\n Trigger: typeof Trigger\n}\n\nDropdownMenu.CheckboxItem = CheckboxItem\nDropdownMenu.Content = Content\nDropdownMenu.Hotkey = Hotkey\nDropdownMenu.IconSlot = IconSlot\nDropdownMenu.IllustrationSlot = IllustrationSlot\nDropdownMenu.Item = Item\nDropdownMenu.ItemDescription = ItemDescription\nDropdownMenu.LinkItem = LinkItem\nDropdownMenu.Portal = Portal\nDropdownMenu.RadioGroup = RadioGroup\nDropdownMenu.RadioItem = RadioItem\nDropdownMenu.Separator = Separator\nDropdownMenu.Sub = Sub\nDropdownMenu.SubContent = SubContent\nDropdownMenu.SubTrigger = SubTrigger\nDropdownMenu.SwitchItem = SwitchItem\nDropdownMenu.Trigger = Trigger\n"],"names":["Context","createContext","useState","useCallback","addPropsToChildren","jsx","useContext","styled","Primitive","React","focus","RadixDropdownMenu","useRef","useLayoutEffect","DS_useAriaDisabled","booleanify","jsxs","IconProhibit","IconCheckMark","IconMinus","theme","animations","ScrollArea","mergeRefs","styles","Thumb","handleVirtualClick","IconChevronRight","RadixPortal","baseIconStyles","isIconComponent","BaseHotkey","useBaseTooltipContext","usePrevious","useEffect","BaseTooltipProvider"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/hooks/use-item.tsx","../src/partials/item-description.tsx","../src/partials/left-slot.tsx","../src/partials/illustration-slot.styled.ts","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-content.tsx","../src/partials/right-slot.styled.ts","../src/partials/right-slot.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.tsx","../src/partials/scrollable-content.tsx","../src/hooks/use-dropdown-context.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/partials/link-item.tsx","../src/partials/radio-group.styled.tsx","../src/partials/radio-group.tsx","../src/partials/radio-item.styled.tsx","../src/partials/radio-item.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/partials/switch-item.styled.ts","../src/partials/switch-item.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/sub-trigger.styled.tsx","../src/partials/sub-trigger.tsx","../src/partials/sub-content.styled.tsx","../src/partials/sub-content.tsx","../src/partials/sub.styled.tsx","../src/partials/sub.tsx","../src/partials/portal.tsx","../src/partials/icon-slot.styled.ts","../src/partials/icon-slot.tsx","../src/partials/hotkey.tsx","../src/partials/illustration-slot.tsx","../src/dropdown-menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\ninterface ItemProviderProps {\n children: React.ReactNode\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({ children }: ItemProviderProps): JSX.Element => {\n const [hasSlot, setHasSlot] = useState(false)\n\n const leftSlotMount = useCallback(() => {\n setHasSlot(true)\n }, [])\n\n const leftSlotDestroy = useCallback(() => {\n setHasSlot(false)\n }, [])\n\n const formattedChildren = hasSlot\n ? children\n : addPropsToChildren(children, () => true, {\n 'data-no-left-slot': '',\n })\n\n return (\n <Context.Provider\n value={{\n leftSlotMount,\n leftSlotDestroy,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useItem = (): ItemContext => useContext(Context)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { ItemProvider } from '../hooks/use-item'\n\nexport const StyledItemDescription = styled(Primitive.div, {\n display: '-webkit-box',\n width: '100%',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n overflow: 'hidden',\n gridArea: 'item-description',\n fontSize: '$150',\n lineHeight: 1.5,\n color: '$text-neutrals-subtle',\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n})\n\ntype StyledItemDescriptionProps = StrictComponentProps<\n typeof StyledItemDescription\n>\n\nexport const ItemDescription = React.forwardRef<\n ElementRef<typeof StyledItemDescription>,\n StyledItemDescriptionProps\n>(({ ...props }, forwardRef) => (\n <ItemProvider>\n <StyledItemDescription {...props} ref={forwardRef} />\n </ItemProvider>\n))\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n","import { focus } from '@mirohq/design-system-styles'\nimport { Hotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { StyledItemDescription } from '../partials/item-description'\nimport { StyledIllustrationSlot } from '../partials/illustration-slot.styled'\n\nexport const itemDefaults = {\n all: 'unset',\n boxSizing: 'border-box',\n fontSize: 14,\n lineHeight: '20px',\n color: '$text-neutrals',\n borderRadius: '$50',\n display: 'grid',\n gridTemplateColumns:\n 'auto 1fr minmax(min-content, var(--right-slot-max-width))',\n gridTemplateRows: 'auto minmax(0, 1fr)',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n padding: '10px $100',\n position: 'relative',\n userSelect: 'none',\n cursor: 'pointer',\n\n '&[data-no-left-slot]': {\n gridTemplateColumns: '1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n cursor: 'default',\n\n [`&, & ${StyledItemDescription}, & ${Hotkey}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${StyledIllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:disabled, &[data-disabled]': {\n pointerEvents: 'none',\n },\n\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active:not([aria-disabled=\"true\"])': {\n background: '$background-primary-subtle-active',\n boxShadow: 'none',\n color: '$text-primary-active',\n },\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n}\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIndicator = styled(Primitive.span, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nconst checkedSelector = `&[aria-checked=true] ${StyledIndicator}`\nconst uncheckedSelector = `&[aria-checked=false] ${StyledIndicator}`\nconst indeterminateSelector = `&[data-state=\"indeterminate\"] ${StyledIndicator}`\nconst hoverCheckedSelector = `&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst hoverUncheckedSelector = `&[aria-checked=false]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst disabledSelector = `&[aria-disabled=\"true\"] ${StyledIndicator}, &[data-disabled] ${StyledIndicator}`\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`${StyledIndicator}`]: {\n borderRadius: '$50',\n boxSizing: 'border-box',\n },\n variants: {\n variant: {\n 'solid-prominent': {\n [`${StyledIndicator}`]: {\n square: '$4',\n },\n [`${checkedSelector}, ${indeterminateSelector}`]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n [hoverCheckedSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n [uncheckedSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n [hoverUncheckedSelector]: {\n border: '1px solid $border-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n backgroundColor: '$background-neutrals-disabled',\n },\n },\n ghost: {\n [`${StyledIndicator}`]: {\n square: '$3',\n },\n [checkedSelector]: {\n color: '$icon-primary',\n },\n [indeterminateSelector]: {\n color: '$icon-primary',\n },\n [hoverCheckedSelector]: {\n color: '$icon-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\nimport type { ContainerSpacing } from '../types'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n containerSpacing: ContainerSpacing\n}\n\ninterface ContentProviderProps {\n children: React.ReactNode\n containerSpacing?: ContainerSpacing\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n containerSpacing: 'medium',\n})\n\nexport const ContentProvider = ({\n children,\n containerSpacing = 'medium',\n}: ContentProviderProps): JSX.Element => {\n const [maxWidth, setMaxWidth] = useState<number>(0)\n\n // we need maxRef, so we don't rerender RightSlot whenever we change maxWidth\n const maxRef = useRef<number>(0)\n\n // rightSlot index to remove width from map on destroy\n const indexRef = useRef<number>(0)\n\n const widthMapRef = useRef<Map<number, number>>(new Map())\n\n const updateMaxWith = useCallback((value: number) => {\n maxRef.current = value\n setMaxWidth(value)\n }, [])\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotMount = useCallback(\n (width: number): number => {\n indexRef.current++\n\n widthMapRef.current.set(indexRef.current, width)\n\n if (width > maxRef.current) {\n updateMaxWith(width)\n }\n\n return indexRef.current\n },\n [updateMaxWith]\n )\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotDestroy = useCallback(\n (index: number): void => {\n widthMapRef.current.delete(index)\n\n if (widthMapRef.current.size === 0) {\n updateMaxWith(0)\n } else {\n const maximum = Math.max(...Array.from(widthMapRef.current.values()))\n updateMaxWith(maximum)\n }\n },\n [updateMaxWith]\n )\n\n const formattedChildren = addPropsToChildren(children, () => true, {\n UNSAFE_style: {\n '--right-slot-max-width': `${Math.ceil(maxWidth)}px`,\n },\n })\n\n return (\n <Context.Provider\n value={{\n rightSlotMount,\n rightSlotDestroy,\n containerSpacing,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n height: '$5',\n width: '$7',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$0',\n },\n})\n","import React, { useRef } from 'react'\nimport type { ComponentPropsWithRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledRightSlot } from './right-slot.styled'\n\nexport const RightSlot = (\n props: ComponentPropsWithRef<typeof StyledRightSlot>\n): JSX.Element => {\n const { rightSlotMount, rightSlotDestroy } = useContent()\n\n const ref = useRef<HTMLDivElement>(null)\n\n useLayoutEffect(() => {\n if (ref.current !== null) {\n const width = ref.current.getBoundingClientRect().width\n const index = rightSlotMount(width)\n\n return () => rightSlotDestroy(index)\n }\n\n return () => {}\n }, [rightSlotMount, rightSlotDestroy, ref])\n\n return <StyledRightSlot ref={ref} {...props} />\n}\n","import { booleanify } from '@mirohq/design-system-utils'\nimport { useAriaDisabled as DS_useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\ntype UseAriaDisabled = typeof DS_useAriaDisabled\ntype UseAriaDisabledParameters = Parameters<UseAriaDisabled>\n\ntype DropdownAriaDisabledProps<T> = Omit<T, 'onSelect'> & {\n onSelect?: (event: Event) => void\n}\n\ntype UseAriaDisabledProps = DropdownAriaDisabledProps<\n UseAriaDisabledParameters[0]\n>\n\ntype UseAriaDisabledExceptions = UseAriaDisabledParameters[1] & {\n closeOnSelect?: boolean | undefined\n}\n\nexport const useAriaDisabled = <T extends UseAriaDisabledProps>(\n { onSelect, ...restProps }: T,\n { exceptions, closeOnSelect = true }: UseAriaDisabledExceptions = {}\n): T => {\n const elementProps = DS_useAriaDisabled(restProps, {\n ...exceptions,\n allowArrows: true,\n })\n const { 'aria-disabled': ariaDisabled, onPointerMove, onClick } = elementProps\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {\n ...elementProps,\n\n // these events need to be manually included\n // bacause useAriaDisabled only removes the events from the props.\n // Radix uses these events to handle the dropdown menu so we need to prevent\n // it from being called when the item is aria-disabled.\n onSelect: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n if (!closeOnSelect) {\n e.preventDefault()\n }\n\n onSelect?.(e)\n },\n onPointerMove: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onPointerMove?.(e)\n },\n onClick: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onClick?.(e)\n },\n } as T\n}\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport {\n IconCheckMark,\n IconMinus,\n IconProhibit,\n} from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledCheckboxItem, StyledIndicator } from './checkbox-item.styled'\nimport type { StyledCheckboxItemProps } from './checkbox-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface CheckboxItemProps\n extends Omit<StyledCheckboxItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean | 'indeterminate'\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n\n /**\n * The style of the checkbox in the menu item.\n * @default 'ghost'\n */\n variant?: StyledCheckboxItemProps['variant']\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(\n (\n {\n children,\n checked,\n onChange,\n disabled,\n closeOnSelect = false,\n variant = 'ghost',\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n const { 'aria-disabled': ariaDisabled } = restProps\n const iconCss = { square: '100%', display: 'block' }\n const isAriaDisabled = booleanify(ariaDisabled ?? false)\n const disabledUnchecked =\n (disabled === true || isAriaDisabled) && checked === false\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...elementProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n variant={variant}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {disabledUnchecked && <IconProhibit css={iconCss} />}\n {checked === true && <IconCheckMark css={iconCss} />}\n {checked === 'indeterminate' && <IconMinus css={iconCss} />}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n }\n)\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GAP = '$50'\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const CONTENT_PADDING_TOKENS = {\n small: { y: 50, x: 150 },\n medium: { y: 150, x: 150 },\n large: { y: 150, x: 300 },\n} as const\n\nexport const CONTENT_PADDING = {\n small: `$${CONTENT_PADDING_TOKENS.small.y} $${CONTENT_PADDING_TOKENS.small.x}`,\n medium: `$${CONTENT_PADDING_TOKENS.medium.y} $${CONTENT_PADDING_TOKENS.medium.x}`,\n large: `$${CONTENT_PADDING_TOKENS.large.y} $${CONTENT_PADDING_TOKENS.large.x}`,\n}\n\nexport const contentDefaults = {\n maxWidth: '$125',\n\n '@media (prefers-reduced-motion: no-preference)': {\n animationDuration: '150ms',\n animationTimingFunction: 'cubic-bezier(0.25, 0.5, 0.5, 0.9)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': { animationName: animations.fadeInScaled },\n '&[data-state=\"closed\"]': { animationName: animations.fadeOutScaled },\n '&[data-side=\"top\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'bottom left' },\n '&[data-align=\"center\"]': { transformOrigin: 'bottom center' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n '&[data-side=\"right\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'center left' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom left' },\n },\n '&[data-side=\"bottom\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'top center' },\n '&[data-align=\"end\"]': { transformOrigin: 'top right' },\n },\n '&[data-side=\"left\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top right' },\n '&[data-align=\"center\"]': { transformOrigin: 'center right' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n },\n position: 'relative',\n zIndex: '$dropdown-menu',\n outline: '1px solid transparent !important', // important because Radix overrides outline in element styles\n borderRadius: '$100',\n backgroundColor: '$background-neutrals-layout',\n border: '.5px solid $border-neutrals-subtle',\n boxShadow: '$elevation-200',\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport {\n contentDefaults,\n CONTENT_PADDING,\n CONTENT_GAP,\n} from '../styles/content'\n\nexport const StyledItemsContainer = styled('div', {\n display: 'grid',\n gap: CONTENT_GAP,\n\n variants: {\n containerSpacing: {\n small: {\n padding: CONTENT_PADDING.small,\n },\n medium: {\n padding: CONTENT_PADDING.medium,\n },\n large: {\n padding: CONTENT_PADDING.large,\n },\n },\n },\n})\n\nexport type StyledItemsContainerProps = StrictComponentProps<\n typeof StyledItemsContainer\n>\n\nexport const StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\n\nimport type { Direction, Overflow } from '../types'\n\nexport const RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-dropdown-menu-content-available-height)'\n\ninterface ScrollableContentProps {\n children?: React.ReactNode\n maxHeight?: string\n overflow: Overflow\n direction?: Direction\n}\n\nexport const ScrollableContent = ({\n children,\n maxHeight,\n overflow,\n direction,\n}: ScrollableContentProps): JSX.Element => {\n if (overflow === 'auto') {\n return (\n <ScrollArea dir={direction} type='always'>\n <ScrollArea.Viewport\n css={{\n maxHeight: maxHeight,\n }}\n >\n {children}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n )\n }\n\n return <>{children}</>\n}\n","import { createContext, useContext } from 'react'\n\nimport type { Direction } from '../types'\n\ninterface DropdownProps {\n direction?: Direction\n}\n\ninterface DropdownContextProps extends DropdownProps {}\n\nexport interface DropdownProviderProps extends DropdownProps {\n children: React.ReactNode\n}\n\nconst DropdownContext = createContext<DropdownContextProps>({} as any)\n\nexport const DropdownProvider = ({\n children,\n ...restProps\n}: DropdownProviderProps): JSX.Element => (\n <DropdownContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </DropdownContext.Provider>\n)\n\nexport const useDropdownContext = (): DropdownContextProps =>\n useContext(DropdownContext)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledContentProps } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n ContainerSpacing,\n Overflow,\n CollisionPadding,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around.\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * The preferred side of the trigger to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled. This prop is\n * ignored within submenus.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur. This prop is ignored within submenus.\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 window edges.\n * @default true\n */\n avoidCollisions?: boolean\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?: CollisionPadding\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from\n * DropdownMenu.Portal.\n */\n forceMount?: true\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 * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container.\n * @default 'medium'\n */\n containerSpacing?: ContainerSpacing\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 loop = false,\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = false,\n containerSpacing = 'medium',\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { direction } = useDropdownContext()\n\n /**\n * TODO remove when Radix release the fix:\n * https://github.com/radix-ui/primitives/pull/3237\n */\n const preventScrollOnFocus = (ref: HTMLDivElement | null): void => {\n if (ref === null || '_autoScrollPrevented' in ref.focus) {\n return\n }\n const _focus = ref.focus\n\n function focusWithouAutoScroll(\n this: HTMLDivElement,\n ...args: Parameters<typeof _focus>\n ): void {\n if (window.event?.type === 'focusScope.autoFocusOnMount') {\n _focus.call(this, {\n preventScroll: true,\n })\n } else {\n _focus.apply(this, args)\n }\n }\n focusWithouAutoScroll._autoScrollPrevented = true\n ref.focus = focusWithouAutoScroll\n }\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledContent\n {...restProps}\n ref={mergeRefs([forwardRef, preventScrollOnFocus])}\n loop={loop}\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 >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledItem = styled(RadixDropdownMenu.Item, {\n ...itemDefaults,\n variants: {\n // This is a hack for the :has() selector\n // Remove it after Firefox implements it\n hasRightSlot: {\n true: {\n paddingRight: '$600',\n },\n },\n variant: {\n subtle: {},\n danger: {\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])':\n {\n color: '$text-danger',\n backgroundColor: '$background-danger-subtle',\n },\n '&:active:not([aria-disabled=\"true\"],[data-disabled])': {\n color: '$text-danger-active',\n backgroundColor: '$background-danger-subtle-active',\n },\n },\n },\n },\n})\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n * Calling event.preventDefault in this handler will prevent the dropdown menu\n * from closing when selecting that item.\n */\n onSelect?: (event: Event) => void\n\n /**\n * Optional text used for typeahead purposes. By default, the typeahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Change the item style.\n * @default 'subtle'\n */\n variant?: StyledItemProps['variant']\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, variant = 'subtle', ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...elementProps}\n variant={variant}\n disabled={disabled}\n ref={forwardRef}\n />\n </ItemProvider>\n )\n }\n)\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport { Item } from './item'\nimport type { ItemProps } from './item'\n\ntype ItemPropsWithAnchor = ItemProps & AnchorHTMLAttributes<typeof Item>\nexport interface LinkItemProps extends ItemPropsWithAnchor {}\n\nexport const LinkItem = React.forwardRef<\n ElementRef<typeof Item>,\n LinkItemProps\n>(({ children, href, ...restProps }, forwardRef) => (\n <Item asChild ref={forwardRef} {...restProps}>\n <a href={href}>{children}</a>\n </Item>\n))\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { CONTENT_GAP } from '../styles/content'\n\nexport const StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n display: 'grid',\n gap: CONTENT_GAP,\n})\n\nexport type StyledRadioGroupProps = StrictComponentProps<\n typeof StyledRadioGroup\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledRadioGroup } from './radio-group.styled'\nimport type { StyledRadioGroupProps } from './radio-group.styled'\n\nexport interface RadioGroupProps\n extends Omit<StyledRadioGroupProps, 'onChange'> {\n /**\n * The value of the selected item in the group\n */\n value: string\n\n /**\n * Event handler called when the selected radio changes\n */\n onChange: (value: string) => void\n}\n\nexport const RadioGroup = React.forwardRef<\n ElementRef<typeof StyledRadioGroup>,\n RadioGroupProps\n>((props, forwardRef) => {\n const { onChange, ...restProps } = props\n\n return (\n <StyledRadioGroup\n {...restProps}\n ref={forwardRef}\n onValueChange={onChange}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { IconProhibit } from '@mirohq/design-system-icons'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledRadioContainer = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '$4',\n height: '$4',\n boxSizing: 'border-box',\n border: '1px solid $border-neutrals',\n borderRadius: '$round',\n})\n\nexport const StyledPill = styled(Primitive.div, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$round',\n})\n\nexport const StyledProhibited = styled(IconProhibit, {\n display: 'none',\n width: '$3 !important',\n})\n\nexport const StyledRadioItem = styled(RadixDropdownMenu.RadioItem, {\n ...itemDefaults,\n [`&[aria-checked=true] ${StyledRadioContainer}`]: {\n color: '$icon-primary',\n borderColor: '$border-primary',\n\n [`& ${StyledPill}`]: {\n display: 'block',\n backgroundColor: '$background-primary-prominent-selected',\n },\n },\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledRadioContainer}`]:\n {\n [`& ${StyledPill}`]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n\n [`\n &[aria-disabled=\"true\"] ${StyledRadioContainer},\n &[data-disabled] ${StyledRadioContainer}\n `]: {\n color: '$icon-neutrals-disabled',\n borderColor: '$border-neutrals-disabled',\n\n [`& ${StyledPill}`]: {\n backgroundColor: '$icon-neutrals-disabled',\n },\n },\n '&[aria-checked=false]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\n },\n [`${StyledRadioContainer}`]: {\n borderWidth: '2px',\n borderColor: '$border-neutrals-controls',\n },\n})\n\nexport type StyledRadioItemProps = StrictComponentProps<typeof StyledRadioItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport {\n StyledPill,\n StyledProhibited,\n StyledRadioContainer,\n StyledRadioItem,\n} from './radio-item.styled'\nimport type { StyledRadioItemProps } from './radio-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface RadioItemProps extends StyledRadioItemProps {\n /**\n * The unique value of the item.\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 * Event handler called when the user selects an item (via mouse or keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled, children, closeOnSelect = false, ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps, {\n closeOnSelect,\n })\n\n return (\n <ItemProvider>\n <StyledRadioItem {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledRadioContainer>\n <StyledPill />\n <StyledProhibited />\n </StyledRadioContainer>\n </RightSlot>\n </StyledRadioItem>\n </ItemProvider>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSeparator = styled(RadixDropdownMenu.Separator, {\n borderTop: '1px solid $border-neutrals-subtle',\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) => <StyledSeparator {...props} ref={forwardRef} />)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { styles } from '@mirohq/design-system-base-switch'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledSwitch = styled(Primitive.span, {\n ...styles.default,\n width: '$7',\n height: '$4',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[aria-checked=true] ${StyledSwitch}`]: styles.checked,\n [`&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.checkedHovered,\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.hovered,\n [`\n &[aria-disabled=\"true\"] ${StyledSwitch},\n &[data-disabled] ${StyledSwitch}\n `]: styles.disabled,\n})\n\nexport type StyledSwitchItemProps = StrictComponentProps<\n typeof StyledSwitchItem\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Thumb } from '@mirohq/design-system-base-switch'\n\nimport { RightSlot } from './right-slot'\nimport type { StyledSwitchItemProps } from './switch-item.styled'\nimport { StyledSwitch, StyledSwitchItem } from './switch-item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface SwitchItemProps\n extends Omit<StyledSwitchItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n {\n disabled,\n checked,\n onChange,\n closeOnSelect = false,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...elementProps}\n disabled={disabled}\n checked={checked}\n onCheckedChange={onChange}\n ref={forwardRef}\n >\n {children}\n <RightSlot>\n <StyledSwitch>\n <Thumb />\n </StyledSwitch>\n </RightSlot>\n </StyledSwitchItem>\n </ItemProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { focus } from '@mirohq/design-system-styles'\n\nexport const StyledTrigger = styled(RadixDropdownMenu.Trigger, {\n variants: {\n unstyled: {\n true: {\n all: 'unset',\n boxSizing: 'border-box',\n cursor: 'pointer',\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useRef } from 'react'\nimport { mergeRefs, handleVirtualClick } from '@mirohq/design-system-utils'\nimport type { ElementRef } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onClick, ...restProps }, forwardRef) => {\n const ref = useRef<HTMLButtonElement>(null)\n\n return (\n <StyledTrigger\n {...restProps}\n onClick={e => {\n handleVirtualClick(e, ref)\n onClick?.(e)\n }}\n ref={mergeRefs([ref, forwardRef])}\n unstyled={!asChild}\n asChild={asChild}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIconContainer = styled(Primitive.span, {\n color: '$icon-neutrals-with-text',\n display: 'flex',\n alignItems: 'center',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:is(:hover,[data-hovered]):not([aria-disabled=\"true\"]) ${StyledIconContainer}`]:\n {\n color: '$icon-neutrals-hover',\n },\n})\n\nexport type StyledSubTriggerProps = StrictComponentProps<\n typeof StyledSubTrigger\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconChevronRight } from '@mirohq/design-system-icons'\n\nimport { StyledIconContainer, StyledSubTrigger } from './sub-trigger.styled'\nimport type { StyledSubTriggerProps } from './sub-trigger.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for type ahead purposes. By default the type ahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have.\n */\n textValue?: string\n}\n\nexport const SubTrigger = React.forwardRef<\n ElementRef<typeof StyledSubTrigger>,\n StyledSubTriggerProps\n>(({ children, disabled = false, ...restProps }, forwardRef) => {\n // remove onSelect to avoid TS mismatch error\n let { onSelect, ...elementProps } = restProps\n elementProps = useAriaDisabled(elementProps)\n\n return (\n <StyledSubTrigger {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledIconContainer\n data-testid={\n process.env.NODE_ENV === 'test' ? 'submenu-arrow-icon' : undefined\n }\n >\n <IconChevronRight size='small' />\n </StyledIconContainer>\n </RightSlot>\n </StyledSubTrigger>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { contentDefaults } from '../styles/content'\n\nexport const StyledSubContent = styled(\n RadixDropdownMenu.SubContent,\n contentDefaults\n)\n\nexport type StyledSubContentProps = StrictComponentProps<\n typeof StyledSubContent\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { theme } from '@mirohq/design-system-stitches'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_OFFSET, CONTENT_PADDING_TOKENS } from '../styles/content'\nimport { ContentProvider, useContent } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport { StyledItemsContainer } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n StickyBehavior,\n Overflow,\n CollisionPadding,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface SubContentProps extends StyledSubContentProps {\n /**\n * Whether keyboard navigation should loop around\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries.\n */\n forceMount?: true\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_PADDING_Y + CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default -CONTENT_PADDING_Y\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\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?: CollisionPadding\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 sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\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 subContent.\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 SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset,\n alignOffset,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = true,\n sticky = 'partial',\n overflow = 'visible',\n maxHeight,\n collisionBoundary,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n /* A new ContentProvider instance is created per Content and SubContent,\n using the context from the parent is necessary to preserve this value. */\n const { containerSpacing } = useContent()\n const { direction } = useDropdownContext()\n\n // We need to calculate offsets based on content padding,\n // otherwise submenu would overlap the menu and won't be aligned with the menu properly\n const paddingToken = CONTENT_PADDING_TOKENS[containerSpacing]\n const contentSideOffset =\n CONTENT_OFFSET + parseInt(theme.space[paddingToken.x])\n const contentAlignOffset = -parseInt(theme.space[paddingToken.y])\n\n /*\n When SubContent renders inside the Content and they both have collisionBoundary,\n Radix content available height is not calculated correctly and uses Content's available height.\n If we get collisionBoundary's height, it works just fine\n */\n const availableHeight =\n collisionBoundary != null\n ? getComputedStyle(collisionBoundary).getPropertyValue('height')\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset ?? contentSideOffset}\n alignOffset={alignOffset ?? contentAlignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n collisionBoundary={collisionBoundary}\n >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${availableHeight}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : availableHeight\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledSubContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSub = styled(RadixDropdownMenu.Sub, {})\n\nexport type StyledSubProps = StrictComponentProps<typeof StyledSub>\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledSub } from './sub.styled'\nimport type { StyledSubProps } from './sub.styled'\n\nexport interface SubProps extends StyledSubProps {\n /**\n * The open state of the submenu when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the submenu. Must be used in conjunction with\n * onOpenChange.\n */\n open?: boolean\n\n /**\n * Event handler called when the submenu opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the submenu closes.\n */\n onClose?: () => void\n}\n\nexport const Sub = React.forwardRef<ElementRef<typeof StyledSub>, SubProps>(\n ({ defaultOpen, onOpen, onClose, open, ...restProps }, forwardRef) => {\n const [openState, setOpenState] = useState(defaultOpen)\n return (\n <StyledSub\n {...restProps}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n ref={forwardRef}\n />\n )\n }\n)\n","import React from 'react'\nimport type { DropdownMenuPortalProps } from '@radix-ui/react-dropdown-menu'\nimport { Portal as RadixPortal } from '@radix-ui/react-dropdown-menu'\n\nexport interface PortalProps extends DropdownMenuPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by DropdownMenu.Content and DropdownMenu.SubContent respectively.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal = (props: PortalProps): React.ReactNode => (\n <RadixPortal {...props} />\n)\n","import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { styles as baseIconStyles } from '@mirohq/design-system-base-icon'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n square: '$5',\n\n '& svg:not([data-icon-component]), & img:not([data-icon-component])': {\n ...baseIconStyles.size.small,\n },\n})\n\nexport type StyledIconSlotProps = ComponentPropsWithRef<typeof StyledIconSlot>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport type { IconSizes } from '@mirohq/design-system-base-icon'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\ninterface IconComponentProps {\n 'data-icon-component': ''\n size: IconSizes\n}\n\nexport type IconSlotProps = { children: React.ReactNode } & StyledIconSlotProps\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n StyledIconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n const formattedChildren = addPropsToChildren<IconComponentProps>(\n children,\n isIconComponent,\n {\n 'data-icon-component': '',\n size: 'small',\n }\n )\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps}>\n <Primitive.svg asChild aria-hidden>\n {formattedChildren}\n </Primitive.svg>\n </StyledIconSlot>\n )\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { HotkeySharedProps as BaseHotkeyProps } from '@mirohq/design-system-base-hotkey'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { RightSlot } from './right-slot'\n\nexport type HotkeyProps = BaseHotkeyProps & {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof BaseHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <RightSlot>\n <BaseHotkey ref={forwardRef} {...restProps} variant='neutral'>\n {children}\n </BaseHotkey>\n </RightSlot>\n))\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useItem } from '../hooks/use-item'\nimport type { StyledIllustrationSlotProps } from './illustration-slot.styled'\nimport { StyledIllustrationSlot } from './illustration-slot.styled'\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n StyledIllustrationSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import React, { useEffect } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { CheckboxItem } from './partials/checkbox-item'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { LinkItem } from './partials/link-item'\nimport { RadioGroup } from './partials/radio-group'\nimport { RadioItem } from './partials/radio-item'\nimport { Separator } from './partials/separator'\nimport { SwitchItem } from './partials/switch-item'\nimport { Trigger } from './partials/trigger'\nimport { SubTrigger } from './partials/sub-trigger'\nimport { SubContent } from './partials/sub-content'\nimport { Sub } from './partials/sub'\nimport { Portal } from './partials/portal'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\nimport { Hotkey } from './partials/hotkey'\nimport { IllustrationSlot } from './partials/illustration-slot'\nimport { DropdownProvider } from './hooks/use-dropdown-context'\nimport type { Direction } from './types'\n\nexport interface DropdownMenuProps {\n /**\n * The open state of the dropdown menu when it is initially rendered. Use when\n * you do not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The current dropdown open state.\n */\n open?: boolean\n\n /**\n * Event handler called when the dropdown opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the dropdown closes.\n */\n onClose?: () => void\n\n /**\n * Defines whether the interaction with outside elements will be disabled and\n * only menu content will be visible to screen readers. This prop is ignored\n * within submenus.\n * @default false\n */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nconst Root = ({\n defaultOpen = false,\n direction,\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}: DropdownMenuProps): React.ReactNode => {\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(open)\n\n useEffect(() => {\n if (prevOpen === true && open === false) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, open, prevOpen])\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={newOpen => {\n if (!newOpen && open === undefined) {\n ignoreNextTooltip()\n }\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\nexport const DropdownMenu: ((props: DropdownMenuProps) => React.ReactNode) &\n Partials = ({ direction = 'ltr', ...restProps }) => (\n <DropdownProvider direction={direction}>\n <BaseTooltipProvider>\n <Root direction={direction} {...restProps} />\n </BaseTooltipProvider>\n </DropdownProvider>\n)\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n Hotkey: typeof Hotkey\n IconSlot: typeof IconSlot\n IllustrationSlot: typeof IllustrationSlot\n Item: typeof Item\n ItemDescription: typeof ItemDescription\n LinkItem: typeof LinkItem\n Portal: typeof Portal\n RadioGroup: typeof RadioGroup\n RadioItem: typeof RadioItem\n Separator: typeof Separator\n Sub: typeof Sub\n SubContent: typeof SubContent\n SubTrigger: typeof SubTrigger\n SwitchItem: typeof SwitchItem\n Trigger: typeof Trigger\n}\n\nDropdownMenu.CheckboxItem = CheckboxItem\nDropdownMenu.Content = Content\nDropdownMenu.Hotkey = Hotkey\nDropdownMenu.IconSlot = IconSlot\nDropdownMenu.IllustrationSlot = IllustrationSlot\nDropdownMenu.Item = Item\nDropdownMenu.ItemDescription = ItemDescription\nDropdownMenu.LinkItem = LinkItem\nDropdownMenu.Portal = Portal\nDropdownMenu.RadioGroup = RadioGroup\nDropdownMenu.RadioItem = RadioItem\nDropdownMenu.Separator = Separator\nDropdownMenu.Sub = Sub\nDropdownMenu.SubContent = SubContent\nDropdownMenu.SubTrigger = SubTrigger\nDropdownMenu.SwitchItem = SwitchItem\nDropdownMenu.Trigger = Trigger\n"],"names":["Context","createContext","useState","useCallback","addPropsToChildren","jsx","useContext","styled","Primitive","React","focus","RadixDropdownMenu","useRef","useLayoutEffect","DS_useAriaDisabled","booleanify","jsxs","IconProhibit","IconCheckMark","IconMinus","theme","animations","ScrollArea","mergeRefs","styles","Thumb","handleVirtualClick","IconChevronRight","RadixPortal","baseIconStyles","isIconComponent","BaseHotkey","useBaseTooltipContext","usePrevious","useEffect","BaseTooltipProvider"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../src/hooks/use-item.tsx","../src/partials/item-description.tsx","../src/partials/left-slot.tsx","../src/partials/illustration-slot.styled.ts","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-content.tsx","../src/partials/right-slot.styled.ts","../src/partials/right-slot.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.tsx","../src/partials/scrollable-content.tsx","../src/hooks/use-dropdown-context.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/partials/link-item.tsx","../src/partials/radio-group.styled.tsx","../src/partials/radio-group.tsx","../src/partials/radio-item.styled.tsx","../src/partials/radio-item.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/partials/switch-item.styled.ts","../src/partials/switch-item.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/sub-trigger.styled.tsx","../src/partials/sub-trigger.tsx","../src/partials/sub-content.styled.tsx","../src/partials/sub-content.tsx","../src/partials/sub.styled.tsx","../src/partials/sub.tsx","../src/partials/portal.tsx","../src/partials/icon-slot.styled.ts","../src/partials/icon-slot.tsx","../src/partials/hotkey.tsx","../src/partials/illustration-slot.tsx","../src/dropdown-menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\ninterface ItemProviderProps {\n children: React.ReactNode\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({ children }: ItemProviderProps): JSX.Element => {\n const [hasSlot, setHasSlot] = useState(false)\n\n const leftSlotMount = useCallback(() => {\n setHasSlot(true)\n }, [])\n\n const leftSlotDestroy = useCallback(() => {\n setHasSlot(false)\n }, [])\n\n const formattedChildren = hasSlot\n ? children\n : addPropsToChildren(children, () => true, {\n 'data-no-left-slot': '',\n })\n\n return (\n <Context.Provider\n value={{\n leftSlotMount,\n leftSlotDestroy,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useItem = (): ItemContext => useContext(Context)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { ItemProvider } from '../hooks/use-item'\n\nexport const StyledItemDescription = styled(Primitive.div, {\n display: '-webkit-box',\n width: '100%',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n overflow: 'hidden',\n gridArea: 'item-description',\n fontSize: '$150',\n lineHeight: 1.5,\n color: '$text-neutrals-subtle',\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n})\n\ntype StyledItemDescriptionProps = StrictComponentProps<\n typeof StyledItemDescription\n>\n\nexport const ItemDescription = React.forwardRef<\n ElementRef<typeof StyledItemDescription>,\n StyledItemDescriptionProps\n>(({ ...props }, forwardRef) => (\n <ItemProvider>\n <StyledItemDescription {...props} ref={forwardRef} />\n </ItemProvider>\n))\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n","import { focus } from '@mirohq/design-system-styles'\nimport { Hotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { StyledItemDescription } from '../partials/item-description'\nimport { StyledIllustrationSlot } from '../partials/illustration-slot.styled'\n\nexport const itemDefaults = {\n all: 'unset',\n boxSizing: 'border-box',\n fontSize: 14,\n lineHeight: '20px',\n color: '$text-neutrals',\n borderRadius: '$50',\n display: 'grid',\n gridTemplateColumns:\n 'auto 1fr minmax(min-content, var(--right-slot-max-width))',\n gridTemplateRows: 'auto minmax(0, 1fr)',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n padding: '10px $100',\n position: 'relative',\n userSelect: 'none',\n cursor: 'pointer',\n\n '&[data-no-left-slot]': {\n gridTemplateColumns: '1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n cursor: 'default',\n\n [`&, & ${StyledItemDescription}, & ${Hotkey}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${StyledIllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:disabled, &[data-disabled]': {\n pointerEvents: 'none',\n },\n\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active:not([aria-disabled=\"true\"])': {\n background: '$background-primary-subtle-active',\n boxShadow: 'none',\n color: '$text-primary-active',\n },\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n}\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIndicator = styled(Primitive.span, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nconst checkedSelector = `&[aria-checked=true] ${StyledIndicator}`\nconst uncheckedSelector = `&[aria-checked=false] ${StyledIndicator}`\nconst indeterminateSelector = `&[data-state=\"indeterminate\"] ${StyledIndicator}`\nconst hoverCheckedSelector = `&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst hoverUncheckedSelector = `&[aria-checked=false]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst disabledSelector = `&[aria-disabled=\"true\"] ${StyledIndicator}, &[data-disabled] ${StyledIndicator}`\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`${StyledIndicator}`]: {\n borderRadius: '$50',\n boxSizing: 'border-box',\n },\n variants: {\n variant: {\n 'solid-prominent': {\n [`${StyledIndicator}`]: {\n square: '$4',\n },\n [`${checkedSelector}, ${indeterminateSelector}`]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n [hoverCheckedSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n [uncheckedSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n [hoverUncheckedSelector]: {\n border: '1px solid $border-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n backgroundColor: '$background-neutrals-disabled',\n },\n },\n ghost: {\n [`${StyledIndicator}`]: {\n square: '$3',\n },\n [checkedSelector]: {\n color: '$icon-primary',\n },\n [indeterminateSelector]: {\n color: '$icon-primary',\n },\n [hoverCheckedSelector]: {\n color: '$icon-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\nimport type { ContainerSpacing } from '../types'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n containerSpacing: ContainerSpacing\n}\n\ninterface ContentProviderProps {\n children: React.ReactNode\n containerSpacing?: ContainerSpacing\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n containerSpacing: 'medium',\n})\n\nexport const ContentProvider = ({\n children,\n containerSpacing = 'medium',\n}: ContentProviderProps): JSX.Element => {\n const [maxWidth, setMaxWidth] = useState<number>(0)\n\n // we need maxRef, so we don't rerender RightSlot whenever we change maxWidth\n const maxRef = useRef<number>(0)\n\n // rightSlot index to remove width from map on destroy\n const indexRef = useRef<number>(0)\n\n const widthMapRef = useRef<Map<number, number>>(new Map())\n\n const updateMaxWith = useCallback((value: number) => {\n maxRef.current = value\n setMaxWidth(value)\n }, [])\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotMount = useCallback(\n (width: number): number => {\n indexRef.current++\n\n widthMapRef.current.set(indexRef.current, width)\n\n if (width > maxRef.current) {\n updateMaxWith(width)\n }\n\n return indexRef.current\n },\n [updateMaxWith]\n )\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotDestroy = useCallback(\n (index: number): void => {\n widthMapRef.current.delete(index)\n\n if (widthMapRef.current.size === 0) {\n updateMaxWith(0)\n } else {\n const maximum = Math.max(...Array.from(widthMapRef.current.values()))\n updateMaxWith(maximum)\n }\n },\n [updateMaxWith]\n )\n\n const formattedChildren = addPropsToChildren(children, () => true, {\n UNSAFE_style: {\n '--right-slot-max-width': `${Math.ceil(maxWidth)}px`,\n },\n })\n\n return (\n <Context.Provider\n value={{\n rightSlotMount,\n rightSlotDestroy,\n containerSpacing,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n height: '$5',\n width: '$7',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$0',\n },\n})\n","import React, { useRef } from 'react'\nimport type { ComponentPropsWithRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledRightSlot } from './right-slot.styled'\n\nexport const RightSlot = (\n props: ComponentPropsWithRef<typeof StyledRightSlot>\n): JSX.Element => {\n const { rightSlotMount, rightSlotDestroy } = useContent()\n\n const ref = useRef<HTMLDivElement>(null)\n\n useLayoutEffect(() => {\n if (ref.current !== null) {\n const width = ref.current.getBoundingClientRect().width\n const index = rightSlotMount(width)\n\n return () => rightSlotDestroy(index)\n }\n\n return () => {}\n }, [rightSlotMount, rightSlotDestroy, ref])\n\n return <StyledRightSlot ref={ref} {...props} />\n}\n","import { booleanify } from '@mirohq/design-system-utils'\nimport { useAriaDisabled as DS_useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\ntype UseAriaDisabled = typeof DS_useAriaDisabled\ntype UseAriaDisabledParameters = Parameters<UseAriaDisabled>\n\ntype DropdownAriaDisabledProps<T> = Omit<T, 'onSelect'> & {\n onSelect?: (event: Event) => void\n}\n\ntype UseAriaDisabledProps = DropdownAriaDisabledProps<\n UseAriaDisabledParameters[0]\n>\n\ntype UseAriaDisabledExceptions = UseAriaDisabledParameters[1] & {\n closeOnSelect?: boolean | undefined\n}\n\nexport const useAriaDisabled = <T extends UseAriaDisabledProps>(\n { onSelect, ...restProps }: T,\n { exceptions, closeOnSelect = true }: UseAriaDisabledExceptions = {}\n): T => {\n const elementProps = DS_useAriaDisabled(restProps, {\n ...exceptions,\n allowArrows: true,\n })\n const { 'aria-disabled': ariaDisabled, onPointerMove, onClick } = elementProps\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {\n ...elementProps,\n\n // these events need to be manually included\n // bacause useAriaDisabled only removes the events from the props.\n // Radix uses these events to handle the dropdown menu so we need to prevent\n // it from being called when the item is aria-disabled.\n onSelect: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n if (!closeOnSelect) {\n e.preventDefault()\n }\n\n onSelect?.(e)\n },\n onPointerMove: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onPointerMove?.(e)\n },\n onClick: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onClick?.(e)\n },\n } as T\n}\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport {\n IconCheckMark,\n IconMinus,\n IconProhibit,\n} from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledCheckboxItem, StyledIndicator } from './checkbox-item.styled'\nimport type { StyledCheckboxItemProps } from './checkbox-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface CheckboxItemProps\n extends Omit<StyledCheckboxItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean | 'indeterminate'\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n\n /**\n * The style of the checkbox in the menu item.\n * @default 'ghost'\n */\n variant?: StyledCheckboxItemProps['variant']\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(\n (\n {\n children,\n checked,\n onChange,\n disabled,\n closeOnSelect = false,\n variant = 'ghost',\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n const { 'aria-disabled': ariaDisabled } = restProps\n const iconCss = { square: '100%', display: 'block' }\n const isAriaDisabled = booleanify(ariaDisabled ?? false)\n const disabledUnchecked =\n (disabled === true || isAriaDisabled) && checked === false\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...elementProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n variant={variant}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {disabledUnchecked && <IconProhibit css={iconCss} />}\n {checked === true && <IconCheckMark css={iconCss} />}\n {checked === 'indeterminate' && <IconMinus css={iconCss} />}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n }\n)\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GAP = '$50'\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const CONTENT_PADDING_TOKENS = {\n small: { y: 50, x: 150 },\n medium: { y: 150, x: 150 },\n large: { y: 150, x: 300 },\n} as const\n\nexport const CONTENT_PADDING = {\n small: `$${CONTENT_PADDING_TOKENS.small.y} $${CONTENT_PADDING_TOKENS.small.x}`,\n medium: `$${CONTENT_PADDING_TOKENS.medium.y} $${CONTENT_PADDING_TOKENS.medium.x}`,\n large: `$${CONTENT_PADDING_TOKENS.large.y} $${CONTENT_PADDING_TOKENS.large.x}`,\n}\n\nexport const contentDefaults = {\n maxWidth: '$125',\n\n '@media (prefers-reduced-motion: no-preference)': {\n animationDuration: '150ms',\n animationTimingFunction: 'cubic-bezier(0.25, 0.5, 0.5, 0.9)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': { animationName: animations.fadeInScaled },\n '&[data-state=\"closed\"]': { animationName: animations.fadeOutScaled },\n '&[data-side=\"top\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'bottom left' },\n '&[data-align=\"center\"]': { transformOrigin: 'bottom center' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n '&[data-side=\"right\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'center left' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom left' },\n },\n '&[data-side=\"bottom\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'top center' },\n '&[data-align=\"end\"]': { transformOrigin: 'top right' },\n },\n '&[data-side=\"left\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top right' },\n '&[data-align=\"center\"]': { transformOrigin: 'center right' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n },\n position: 'relative',\n zIndex: '$dropdown-menu',\n outline: '1px solid transparent !important', // important because Radix overrides outline in element styles\n borderRadius: '$100',\n backgroundColor: '$background-neutrals-layout',\n border: '.5px solid $border-neutrals-subtle',\n boxShadow: '$elevation-200',\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport {\n contentDefaults,\n CONTENT_PADDING,\n CONTENT_GAP,\n} from '../styles/content'\n\nexport const StyledItemsContainer = styled('div', {\n display: 'grid',\n gap: CONTENT_GAP,\n\n variants: {\n containerSpacing: {\n small: {\n padding: CONTENT_PADDING.small,\n },\n medium: {\n padding: CONTENT_PADDING.medium,\n },\n large: {\n padding: CONTENT_PADDING.large,\n },\n },\n },\n})\n\nexport type StyledItemsContainerProps = StrictComponentProps<\n typeof StyledItemsContainer\n>\n\nexport const StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\n\nimport type { Direction, Overflow } from '../types'\n\nexport const RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-dropdown-menu-content-available-height)'\n\ninterface ScrollableContentProps {\n children?: React.ReactNode\n maxHeight?: string\n overflow: Overflow\n direction?: Direction\n}\n\nexport const ScrollableContent = ({\n children,\n maxHeight,\n overflow,\n direction,\n}: ScrollableContentProps): JSX.Element => {\n if (overflow === 'auto') {\n return (\n <ScrollArea dir={direction} type='always'>\n <ScrollArea.Viewport\n css={{\n maxHeight: maxHeight,\n }}\n >\n {children}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n )\n }\n\n return <>{children}</>\n}\n","import { createContext, useContext } from 'react'\n\nimport type { Direction } from '../types'\n\ninterface DropdownProps {\n direction?: Direction\n}\n\ninterface DropdownContextProps extends DropdownProps {}\n\nexport interface DropdownProviderProps extends DropdownProps {\n children: React.ReactNode\n}\n\nconst DropdownContext = createContext<DropdownContextProps>({} as any)\n\nexport const DropdownProvider = ({\n children,\n ...restProps\n}: DropdownProviderProps): JSX.Element => (\n <DropdownContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </DropdownContext.Provider>\n)\n\nexport const useDropdownContext = (): DropdownContextProps =>\n useContext(DropdownContext)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledContentProps } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n ContainerSpacing,\n Overflow,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around.\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * The preferred side of the trigger to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled. This prop is\n * ignored within submenus.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur. This prop is ignored within submenus.\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 window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\n * @default 0\n */\n collisionPadding?: number\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from\n * DropdownMenu.Portal.\n */\n forceMount?: true\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 * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container.\n * @default 'medium'\n */\n containerSpacing?: ContainerSpacing\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 loop = false,\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = false,\n containerSpacing = 'medium',\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { direction } = useDropdownContext()\n\n /**\n * TODO remove when Radix release the fix:\n * https://github.com/radix-ui/primitives/pull/3237\n */\n const preventScrollOnFocus = (ref: HTMLDivElement | null): void => {\n if (ref === null || '_autoScrollPrevented' in ref.focus) {\n return\n }\n const _focus = ref.focus\n\n function focusWithouAutoScroll(\n this: HTMLDivElement,\n ...args: Parameters<typeof _focus>\n ): void {\n if (window.event?.type === 'focusScope.autoFocusOnMount') {\n _focus.call(this, {\n preventScroll: true,\n })\n } else {\n _focus.apply(this, args)\n }\n }\n focusWithouAutoScroll._autoScrollPrevented = true\n ref.focus = focusWithouAutoScroll\n }\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledContent\n {...restProps}\n ref={mergeRefs([forwardRef, preventScrollOnFocus])}\n loop={loop}\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 >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledItem = styled(RadixDropdownMenu.Item, {\n ...itemDefaults,\n variants: {\n // This is a hack for the :has() selector\n // Remove it after Firefox implements it\n hasRightSlot: {\n true: {\n paddingRight: '$600',\n },\n },\n variant: {\n subtle: {},\n danger: {\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])':\n {\n color: '$text-danger',\n backgroundColor: '$background-danger-subtle',\n },\n '&:active:not([aria-disabled=\"true\"],[data-disabled])': {\n color: '$text-danger-active',\n backgroundColor: '$background-danger-subtle-active',\n },\n },\n },\n },\n})\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n * Calling event.preventDefault in this handler will prevent the dropdown menu\n * from closing when selecting that item.\n */\n onSelect?: (event: Event) => void\n\n /**\n * Optional text used for typeahead purposes. By default, the typeahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Change the item style.\n * @default 'subtle'\n */\n variant?: StyledItemProps['variant']\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, variant = 'subtle', ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...elementProps}\n variant={variant}\n disabled={disabled}\n ref={forwardRef}\n />\n </ItemProvider>\n )\n }\n)\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport { Item } from './item'\nimport type { ItemProps } from './item'\n\ntype ItemPropsWithAnchor = ItemProps & AnchorHTMLAttributes<typeof Item>\nexport interface LinkItemProps extends ItemPropsWithAnchor {}\n\nexport const LinkItem = React.forwardRef<\n ElementRef<typeof Item>,\n LinkItemProps\n>(({ children, href, ...restProps }, forwardRef) => (\n <Item asChild ref={forwardRef} {...restProps}>\n <a href={href}>{children}</a>\n </Item>\n))\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { CONTENT_GAP } from '../styles/content'\n\nexport const StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n display: 'grid',\n gap: CONTENT_GAP,\n})\n\nexport type StyledRadioGroupProps = StrictComponentProps<\n typeof StyledRadioGroup\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledRadioGroup } from './radio-group.styled'\nimport type { StyledRadioGroupProps } from './radio-group.styled'\n\nexport interface RadioGroupProps\n extends Omit<StyledRadioGroupProps, 'onChange'> {\n /**\n * The value of the selected item in the group\n */\n value: string\n\n /**\n * Event handler called when the selected radio changes\n */\n onChange: (value: string) => void\n}\n\nexport const RadioGroup = React.forwardRef<\n ElementRef<typeof StyledRadioGroup>,\n RadioGroupProps\n>((props, forwardRef) => {\n const { onChange, ...restProps } = props\n\n return (\n <StyledRadioGroup\n {...restProps}\n ref={forwardRef}\n onValueChange={onChange}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { IconProhibit } from '@mirohq/design-system-icons'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledRadioContainer = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '$4',\n height: '$4',\n boxSizing: 'border-box',\n border: '1px solid $border-neutrals',\n borderRadius: '$round',\n})\n\nexport const StyledPill = styled(Primitive.div, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$round',\n})\n\nexport const StyledProhibited = styled(IconProhibit, {\n display: 'none',\n width: '$3 !important',\n})\n\nexport const StyledRadioItem = styled(RadixDropdownMenu.RadioItem, {\n ...itemDefaults,\n [`&[aria-checked=true] ${StyledRadioContainer}`]: {\n color: '$icon-primary',\n borderColor: '$border-primary',\n\n [`& ${StyledPill}`]: {\n display: 'block',\n backgroundColor: '$background-primary-prominent-selected',\n },\n },\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledRadioContainer}`]:\n {\n [`& ${StyledPill}`]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n\n [`\n &[aria-disabled=\"true\"] ${StyledRadioContainer},\n &[data-disabled] ${StyledRadioContainer}\n `]: {\n color: '$icon-neutrals-disabled',\n borderColor: '$border-neutrals-disabled',\n\n [`& ${StyledPill}`]: {\n backgroundColor: '$icon-neutrals-disabled',\n },\n },\n '&[aria-checked=false]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\n },\n [`${StyledRadioContainer}`]: {\n borderWidth: '2px',\n borderColor: '$border-neutrals-controls',\n },\n})\n\nexport type StyledRadioItemProps = StrictComponentProps<typeof StyledRadioItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport {\n StyledPill,\n StyledProhibited,\n StyledRadioContainer,\n StyledRadioItem,\n} from './radio-item.styled'\nimport type { StyledRadioItemProps } from './radio-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface RadioItemProps extends StyledRadioItemProps {\n /**\n * The unique value of the item.\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 * Event handler called when the user selects an item (via mouse or keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled, children, closeOnSelect = false, ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps, {\n closeOnSelect,\n })\n\n return (\n <ItemProvider>\n <StyledRadioItem {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledRadioContainer>\n <StyledPill />\n <StyledProhibited />\n </StyledRadioContainer>\n </RightSlot>\n </StyledRadioItem>\n </ItemProvider>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSeparator = styled(RadixDropdownMenu.Separator, {\n borderTop: '1px solid $border-neutrals-subtle',\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) => <StyledSeparator {...props} ref={forwardRef} />)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { styles } from '@mirohq/design-system-base-switch'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledSwitch = styled(Primitive.span, {\n ...styles.default,\n width: '$7',\n height: '$4',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[aria-checked=true] ${StyledSwitch}`]: styles.checked,\n [`&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.checkedHovered,\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.hovered,\n [`\n &[aria-disabled=\"true\"] ${StyledSwitch},\n &[data-disabled] ${StyledSwitch}\n `]: styles.disabled,\n})\n\nexport type StyledSwitchItemProps = StrictComponentProps<\n typeof StyledSwitchItem\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Thumb } from '@mirohq/design-system-base-switch'\n\nimport { RightSlot } from './right-slot'\nimport type { StyledSwitchItemProps } from './switch-item.styled'\nimport { StyledSwitch, StyledSwitchItem } from './switch-item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface SwitchItemProps\n extends Omit<StyledSwitchItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n {\n disabled,\n checked,\n onChange,\n closeOnSelect = false,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...elementProps}\n disabled={disabled}\n checked={checked}\n onCheckedChange={onChange}\n ref={forwardRef}\n >\n {children}\n <RightSlot>\n <StyledSwitch>\n <Thumb />\n </StyledSwitch>\n </RightSlot>\n </StyledSwitchItem>\n </ItemProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { focus } from '@mirohq/design-system-styles'\n\nexport const StyledTrigger = styled(RadixDropdownMenu.Trigger, {\n variants: {\n unstyled: {\n true: {\n all: 'unset',\n boxSizing: 'border-box',\n cursor: 'pointer',\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useRef } from 'react'\nimport { mergeRefs, handleVirtualClick } from '@mirohq/design-system-utils'\nimport type { ElementRef } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onClick, ...restProps }, forwardRef) => {\n const ref = useRef<HTMLButtonElement>(null)\n\n return (\n <StyledTrigger\n {...restProps}\n onClick={e => {\n handleVirtualClick(e, ref)\n onClick?.(e)\n }}\n ref={mergeRefs([ref, forwardRef])}\n unstyled={!asChild}\n asChild={asChild}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIconContainer = styled(Primitive.span, {\n color: '$icon-neutrals-with-text',\n display: 'flex',\n alignItems: 'center',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:is(:hover,[data-hovered]):not([aria-disabled=\"true\"]) ${StyledIconContainer}`]:\n {\n color: '$icon-neutrals-hover',\n },\n})\n\nexport type StyledSubTriggerProps = StrictComponentProps<\n typeof StyledSubTrigger\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconChevronRight } from '@mirohq/design-system-icons'\n\nimport { StyledIconContainer, StyledSubTrigger } from './sub-trigger.styled'\nimport type { StyledSubTriggerProps } from './sub-trigger.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for type ahead purposes. By default the type ahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have.\n */\n textValue?: string\n}\n\nexport const SubTrigger = React.forwardRef<\n ElementRef<typeof StyledSubTrigger>,\n StyledSubTriggerProps\n>(({ children, disabled = false, ...restProps }, forwardRef) => {\n // remove onSelect to avoid TS mismatch error\n let { onSelect, ...elementProps } = restProps\n elementProps = useAriaDisabled(elementProps)\n\n return (\n <StyledSubTrigger {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledIconContainer\n data-testid={\n process.env.NODE_ENV === 'test' ? 'submenu-arrow-icon' : undefined\n }\n >\n <IconChevronRight size='small' />\n </StyledIconContainer>\n </RightSlot>\n </StyledSubTrigger>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { contentDefaults } from '../styles/content'\n\nexport const StyledSubContent = styled(\n RadixDropdownMenu.SubContent,\n contentDefaults\n)\n\nexport type StyledSubContentProps = StrictComponentProps<\n typeof StyledSubContent\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { theme } from '@mirohq/design-system-stitches'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_OFFSET, CONTENT_PADDING_TOKENS } from '../styles/content'\nimport { ContentProvider, useContent } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport { StyledItemsContainer } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n StickyBehavior,\n Overflow,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface SubContentProps extends StyledSubContentProps {\n /**\n * Whether keyboard navigation should loop around\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries.\n */\n forceMount?: true\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_PADDING_Y + CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default -CONTENT_PADDING_Y\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n *The distance in pixels from the boundary edges where collision detection\n *should occur. Accepts a number (same for all sides).\n * @default 0\n */\n collisionPadding?: 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 sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\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 subContent.\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 SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset,\n alignOffset,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = true,\n sticky = 'partial',\n overflow = 'visible',\n maxHeight,\n collisionBoundary,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n /* A new ContentProvider instance is created per Content and SubContent,\n using the context from the parent is necessary to preserve this value. */\n const { containerSpacing } = useContent()\n const { direction } = useDropdownContext()\n\n // We need to calculate offsets based on content padding,\n // otherwise submenu would overlap the menu and won't be aligned with the menu properly\n const paddingToken = CONTENT_PADDING_TOKENS[containerSpacing]\n const contentSideOffset =\n CONTENT_OFFSET + parseInt(theme.space[paddingToken.x])\n const contentAlignOffset = -parseInt(theme.space[paddingToken.y])\n\n /*\n When SubContent renders inside the Content and they both have collisionBoundary,\n Radix content available height is not calculated correctly and uses Content's available height.\n If we get collisionBoundary's height, it works just fine\n */\n const availableHeight =\n collisionBoundary != null\n ? getComputedStyle(collisionBoundary).getPropertyValue('height')\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset ?? contentSideOffset}\n alignOffset={alignOffset ?? contentAlignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n collisionBoundary={collisionBoundary}\n >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${availableHeight}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : availableHeight\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledSubContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSub = styled(RadixDropdownMenu.Sub, {})\n\nexport type StyledSubProps = StrictComponentProps<typeof StyledSub>\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledSub } from './sub.styled'\nimport type { StyledSubProps } from './sub.styled'\n\nexport interface SubProps extends StyledSubProps {\n /**\n * The open state of the submenu when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the submenu. Must be used in conjunction with\n * onOpenChange.\n */\n open?: boolean\n\n /**\n * Event handler called when the submenu opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the submenu closes.\n */\n onClose?: () => void\n}\n\nexport const Sub = React.forwardRef<ElementRef<typeof StyledSub>, SubProps>(\n ({ defaultOpen, onOpen, onClose, open, ...restProps }, forwardRef) => {\n const [openState, setOpenState] = useState(defaultOpen)\n return (\n <StyledSub\n {...restProps}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n ref={forwardRef}\n />\n )\n }\n)\n","import React from 'react'\nimport type { DropdownMenuPortalProps } from '@radix-ui/react-dropdown-menu'\nimport { Portal as RadixPortal } from '@radix-ui/react-dropdown-menu'\n\nexport interface PortalProps extends DropdownMenuPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by DropdownMenu.Content and DropdownMenu.SubContent respectively.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal = (props: PortalProps): React.ReactNode => (\n <RadixPortal {...props} />\n)\n","import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { styles as baseIconStyles } from '@mirohq/design-system-base-icon'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n square: '$5',\n\n '& svg:not([data-icon-component]), & img:not([data-icon-component])': {\n ...baseIconStyles.size.small,\n },\n})\n\nexport type StyledIconSlotProps = ComponentPropsWithRef<typeof StyledIconSlot>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport type { IconSizes } from '@mirohq/design-system-base-icon'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\ninterface IconComponentProps {\n 'data-icon-component': ''\n size: IconSizes\n}\n\nexport type IconSlotProps = { children: React.ReactNode } & StyledIconSlotProps\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n StyledIconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n const formattedChildren = addPropsToChildren<IconComponentProps>(\n children,\n isIconComponent,\n {\n 'data-icon-component': '',\n size: 'small',\n }\n )\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps}>\n <Primitive.svg asChild aria-hidden>\n {formattedChildren}\n </Primitive.svg>\n </StyledIconSlot>\n )\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { HotkeySharedProps as BaseHotkeyProps } from '@mirohq/design-system-base-hotkey'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { RightSlot } from './right-slot'\n\nexport type HotkeyProps = BaseHotkeyProps & {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof BaseHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <RightSlot>\n <BaseHotkey ref={forwardRef} {...restProps} variant='neutral'>\n {children}\n </BaseHotkey>\n </RightSlot>\n))\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useItem } from '../hooks/use-item'\nimport type { StyledIllustrationSlotProps } from './illustration-slot.styled'\nimport { StyledIllustrationSlot } from './illustration-slot.styled'\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n StyledIllustrationSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import React, { useEffect } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { CheckboxItem } from './partials/checkbox-item'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { LinkItem } from './partials/link-item'\nimport { RadioGroup } from './partials/radio-group'\nimport { RadioItem } from './partials/radio-item'\nimport { Separator } from './partials/separator'\nimport { SwitchItem } from './partials/switch-item'\nimport { Trigger } from './partials/trigger'\nimport { SubTrigger } from './partials/sub-trigger'\nimport { SubContent } from './partials/sub-content'\nimport { Sub } from './partials/sub'\nimport { Portal } from './partials/portal'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\nimport { Hotkey } from './partials/hotkey'\nimport { IllustrationSlot } from './partials/illustration-slot'\nimport { DropdownProvider } from './hooks/use-dropdown-context'\nimport type { Direction } from './types'\n\nexport interface DropdownMenuProps {\n /**\n * The open state of the dropdown menu when it is initially rendered. Use when\n * you do not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The current dropdown open state.\n */\n open?: boolean\n\n /**\n * Event handler called when the dropdown opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the dropdown closes.\n */\n onClose?: () => void\n\n /**\n * Defines whether the interaction with outside elements will be disabled and\n * only menu content will be visible to screen readers. This prop is ignored\n * within submenus.\n * @default false\n */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nconst Root = ({\n defaultOpen = false,\n direction,\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}: DropdownMenuProps): React.ReactNode => {\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(open)\n\n useEffect(() => {\n if (prevOpen === true && open === false) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, open, prevOpen])\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={newOpen => {\n if (!newOpen && open === undefined) {\n ignoreNextTooltip()\n }\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\nexport const DropdownMenu: ((props: DropdownMenuProps) => React.ReactNode) &\n Partials = ({ direction = 'ltr', ...restProps }) => (\n <DropdownProvider direction={direction}>\n <BaseTooltipProvider>\n <Root direction={direction} {...restProps} />\n </BaseTooltipProvider>\n </DropdownProvider>\n)\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n Hotkey: typeof Hotkey\n IconSlot: typeof IconSlot\n IllustrationSlot: typeof IllustrationSlot\n Item: typeof Item\n ItemDescription: typeof ItemDescription\n LinkItem: typeof LinkItem\n Portal: typeof Portal\n RadioGroup: typeof RadioGroup\n RadioItem: typeof RadioItem\n Separator: typeof Separator\n Sub: typeof Sub\n SubContent: typeof SubContent\n SubTrigger: typeof SubTrigger\n SwitchItem: typeof SwitchItem\n Trigger: typeof Trigger\n}\n\nDropdownMenu.CheckboxItem = CheckboxItem\nDropdownMenu.Content = Content\nDropdownMenu.Hotkey = Hotkey\nDropdownMenu.IconSlot = IconSlot\nDropdownMenu.IllustrationSlot = IllustrationSlot\nDropdownMenu.Item = Item\nDropdownMenu.ItemDescription = ItemDescription\nDropdownMenu.LinkItem = LinkItem\nDropdownMenu.Portal = Portal\nDropdownMenu.RadioGroup = RadioGroup\nDropdownMenu.RadioItem = RadioItem\nDropdownMenu.Separator = Separator\nDropdownMenu.Sub = Sub\nDropdownMenu.SubContent = SubContent\nDropdownMenu.SubTrigger = SubTrigger\nDropdownMenu.SwitchItem = SwitchItem\nDropdownMenu.Trigger = Trigger\n"],"names":["Context","DS_useAriaDisabled","RadixPortal","baseIconStyles","BaseHotkey"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../src/hooks/use-item.tsx","../src/partials/item-description.tsx","../src/partials/left-slot.tsx","../src/partials/illustration-slot.styled.ts","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-content.tsx","../src/partials/right-slot.styled.ts","../src/partials/right-slot.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.tsx","../src/partials/scrollable-content.tsx","../src/hooks/use-dropdown-context.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/partials/link-item.tsx","../src/partials/radio-group.styled.tsx","../src/partials/radio-group.tsx","../src/partials/radio-item.styled.tsx","../src/partials/radio-item.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/partials/switch-item.styled.ts","../src/partials/switch-item.tsx","../src/partials/trigger.styled.tsx","../src/partials/trigger.tsx","../src/partials/sub-trigger.styled.tsx","../src/partials/sub-trigger.tsx","../src/partials/sub-content.styled.tsx","../src/partials/sub-content.tsx","../src/partials/sub.styled.tsx","../src/partials/sub.tsx","../src/partials/portal.tsx","../src/partials/icon-slot.styled.ts","../src/partials/icon-slot.tsx","../src/partials/hotkey.tsx","../src/partials/illustration-slot.tsx","../src/dropdown-menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\ninterface ItemProviderProps {\n children: React.ReactNode\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({ children }: ItemProviderProps): JSX.Element => {\n const [hasSlot, setHasSlot] = useState(false)\n\n const leftSlotMount = useCallback(() => {\n setHasSlot(true)\n }, [])\n\n const leftSlotDestroy = useCallback(() => {\n setHasSlot(false)\n }, [])\n\n const formattedChildren = hasSlot\n ? children\n : addPropsToChildren(children, () => true, {\n 'data-no-left-slot': '',\n })\n\n return (\n <Context.Provider\n value={{\n leftSlotMount,\n leftSlotDestroy,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useItem = (): ItemContext => useContext(Context)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { ItemProvider } from '../hooks/use-item'\n\nexport const StyledItemDescription = styled(Primitive.div, {\n display: '-webkit-box',\n width: '100%',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n overflow: 'hidden',\n gridArea: 'item-description',\n fontSize: '$150',\n lineHeight: 1.5,\n color: '$text-neutrals-subtle',\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n})\n\ntype StyledItemDescriptionProps = StrictComponentProps<\n typeof StyledItemDescription\n>\n\nexport const ItemDescription = React.forwardRef<\n ElementRef<typeof StyledItemDescription>,\n StyledItemDescriptionProps\n>(({ ...props }, forwardRef) => (\n <ItemProvider>\n <StyledItemDescription {...props} ref={forwardRef} />\n </ItemProvider>\n))\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n","import { focus } from '@mirohq/design-system-styles'\nimport { Hotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { StyledItemDescription } from '../partials/item-description'\nimport { StyledIllustrationSlot } from '../partials/illustration-slot.styled'\n\nexport const itemDefaults = {\n all: 'unset',\n boxSizing: 'border-box',\n fontSize: 14,\n lineHeight: '20px',\n color: '$text-neutrals',\n borderRadius: '$50',\n display: 'grid',\n gridTemplateColumns:\n 'auto 1fr minmax(min-content, var(--right-slot-max-width))',\n gridTemplateRows: 'auto minmax(0, 1fr)',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n padding: '10px $100',\n position: 'relative',\n userSelect: 'none',\n cursor: 'pointer',\n\n '&[data-no-left-slot]': {\n gridTemplateColumns: '1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n cursor: 'default',\n\n [`&, & ${StyledItemDescription}, & ${Hotkey}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${StyledIllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:disabled, &[data-disabled]': {\n pointerEvents: 'none',\n },\n\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active:not([aria-disabled=\"true\"])': {\n background: '$background-primary-subtle-active',\n boxShadow: 'none',\n color: '$text-primary-active',\n },\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n}\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIndicator = styled(Primitive.span, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nconst checkedSelector = `&[aria-checked=true] ${StyledIndicator}`\nconst uncheckedSelector = `&[aria-checked=false] ${StyledIndicator}`\nconst indeterminateSelector = `&[data-state=\"indeterminate\"] ${StyledIndicator}`\nconst hoverCheckedSelector = `&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst hoverUncheckedSelector = `&[aria-checked=false]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledIndicator}`\nconst disabledSelector = `&[aria-disabled=\"true\"] ${StyledIndicator}, &[data-disabled] ${StyledIndicator}`\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`${StyledIndicator}`]: {\n borderRadius: '$50',\n boxSizing: 'border-box',\n },\n variants: {\n variant: {\n 'solid-prominent': {\n [`${StyledIndicator}`]: {\n square: '$4',\n },\n [`${checkedSelector}, ${indeterminateSelector}`]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n [hoverCheckedSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n [uncheckedSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n [hoverUncheckedSelector]: {\n border: '1px solid $border-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n backgroundColor: '$background-neutrals-disabled',\n },\n },\n ghost: {\n [`${StyledIndicator}`]: {\n square: '$3',\n },\n [checkedSelector]: {\n color: '$icon-primary',\n },\n [indeterminateSelector]: {\n color: '$icon-primary',\n },\n [hoverCheckedSelector]: {\n color: '$icon-primary-hover',\n },\n [disabledSelector]: {\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\nimport type { ContainerSpacing } from '../types'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n containerSpacing: ContainerSpacing\n}\n\ninterface ContentProviderProps {\n children: React.ReactNode\n containerSpacing?: ContainerSpacing\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n containerSpacing: 'medium',\n})\n\nexport const ContentProvider = ({\n children,\n containerSpacing = 'medium',\n}: ContentProviderProps): JSX.Element => {\n const [maxWidth, setMaxWidth] = useState<number>(0)\n\n // we need maxRef, so we don't rerender RightSlot whenever we change maxWidth\n const maxRef = useRef<number>(0)\n\n // rightSlot index to remove width from map on destroy\n const indexRef = useRef<number>(0)\n\n const widthMapRef = useRef<Map<number, number>>(new Map())\n\n const updateMaxWith = useCallback((value: number) => {\n maxRef.current = value\n setMaxWidth(value)\n }, [])\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotMount = useCallback(\n (width: number): number => {\n indexRef.current++\n\n widthMapRef.current.set(indexRef.current, width)\n\n if (width > maxRef.current) {\n updateMaxWith(width)\n }\n\n return indexRef.current\n },\n [updateMaxWith]\n )\n\n // do not use state here, otherwise it will case many rerenders in RightSlot\n const rightSlotDestroy = useCallback(\n (index: number): void => {\n widthMapRef.current.delete(index)\n\n if (widthMapRef.current.size === 0) {\n updateMaxWith(0)\n } else {\n const maximum = Math.max(...Array.from(widthMapRef.current.values()))\n updateMaxWith(maximum)\n }\n },\n [updateMaxWith]\n )\n\n const formattedChildren = addPropsToChildren(children, () => true, {\n UNSAFE_style: {\n '--right-slot-max-width': `${Math.ceil(maxWidth)}px`,\n },\n })\n\n return (\n <Context.Provider\n value={{\n rightSlotMount,\n rightSlotDestroy,\n containerSpacing,\n }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n height: '$5',\n width: '$7',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$0',\n },\n})\n","import React, { useRef } from 'react'\nimport type { ComponentPropsWithRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledRightSlot } from './right-slot.styled'\n\nexport const RightSlot = (\n props: ComponentPropsWithRef<typeof StyledRightSlot>\n): JSX.Element => {\n const { rightSlotMount, rightSlotDestroy } = useContent()\n\n const ref = useRef<HTMLDivElement>(null)\n\n useLayoutEffect(() => {\n if (ref.current !== null) {\n const width = ref.current.getBoundingClientRect().width\n const index = rightSlotMount(width)\n\n return () => rightSlotDestroy(index)\n }\n\n return () => {}\n }, [rightSlotMount, rightSlotDestroy, ref])\n\n return <StyledRightSlot ref={ref} {...props} />\n}\n","import { booleanify } from '@mirohq/design-system-utils'\nimport { useAriaDisabled as DS_useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\ntype UseAriaDisabled = typeof DS_useAriaDisabled\ntype UseAriaDisabledParameters = Parameters<UseAriaDisabled>\n\ntype DropdownAriaDisabledProps<T> = Omit<T, 'onSelect'> & {\n onSelect?: (event: Event) => void\n}\n\ntype UseAriaDisabledProps = DropdownAriaDisabledProps<\n UseAriaDisabledParameters[0]\n>\n\ntype UseAriaDisabledExceptions = UseAriaDisabledParameters[1] & {\n closeOnSelect?: boolean | undefined\n}\n\nexport const useAriaDisabled = <T extends UseAriaDisabledProps>(\n { onSelect, ...restProps }: T,\n { exceptions, closeOnSelect = true }: UseAriaDisabledExceptions = {}\n): T => {\n const elementProps = DS_useAriaDisabled(restProps, {\n ...exceptions,\n allowArrows: true,\n })\n const { 'aria-disabled': ariaDisabled, onPointerMove, onClick } = elementProps\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {\n ...elementProps,\n\n // these events need to be manually included\n // bacause useAriaDisabled only removes the events from the props.\n // Radix uses these events to handle the dropdown menu so we need to prevent\n // it from being called when the item is aria-disabled.\n onSelect: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n if (!closeOnSelect) {\n e.preventDefault()\n }\n\n onSelect?.(e)\n },\n onPointerMove: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onPointerMove?.(e)\n },\n onClick: e => {\n if (booleanify(ariaDisabled)) {\n e.preventDefault()\n return\n }\n\n onClick?.(e)\n },\n } as T\n}\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport {\n IconCheckMark,\n IconMinus,\n IconProhibit,\n} from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { StyledCheckboxItem, StyledIndicator } from './checkbox-item.styled'\nimport type { StyledCheckboxItemProps } from './checkbox-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface CheckboxItemProps\n extends Omit<StyledCheckboxItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean | 'indeterminate'\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n\n /**\n * The style of the checkbox in the menu item.\n * @default 'ghost'\n */\n variant?: StyledCheckboxItemProps['variant']\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(\n (\n {\n children,\n checked,\n onChange,\n disabled,\n closeOnSelect = false,\n variant = 'ghost',\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n const { 'aria-disabled': ariaDisabled } = restProps\n const iconCss = { square: '100%', display: 'block' }\n const isAriaDisabled = booleanify(ariaDisabled ?? false)\n const disabledUnchecked =\n (disabled === true || isAriaDisabled) && checked === false\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...elementProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n variant={variant}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {disabledUnchecked && <IconProhibit css={iconCss} />}\n {checked === true && <IconCheckMark css={iconCss} />}\n {checked === 'indeterminate' && <IconMinus css={iconCss} />}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n }\n)\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GAP = '$50'\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const CONTENT_PADDING_TOKENS = {\n small: { y: 50, x: 150 },\n medium: { y: 150, x: 150 },\n large: { y: 150, x: 300 },\n} as const\n\nexport const CONTENT_PADDING = {\n small: `$${CONTENT_PADDING_TOKENS.small.y} $${CONTENT_PADDING_TOKENS.small.x}`,\n medium: `$${CONTENT_PADDING_TOKENS.medium.y} $${CONTENT_PADDING_TOKENS.medium.x}`,\n large: `$${CONTENT_PADDING_TOKENS.large.y} $${CONTENT_PADDING_TOKENS.large.x}`,\n}\n\nexport const contentDefaults = {\n maxWidth: '$125',\n\n '@media (prefers-reduced-motion: no-preference)': {\n animationDuration: '150ms',\n animationTimingFunction: 'cubic-bezier(0.25, 0.5, 0.5, 0.9)',\n willChange: 'transform, opacity',\n '&[data-state=\"open\"]': { animationName: animations.fadeInScaled },\n '&[data-state=\"closed\"]': { animationName: animations.fadeOutScaled },\n '&[data-side=\"top\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'bottom left' },\n '&[data-align=\"center\"]': { transformOrigin: 'bottom center' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n '&[data-side=\"right\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'center left' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom left' },\n },\n '&[data-side=\"bottom\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top left' },\n '&[data-align=\"center\"]': { transformOrigin: 'top center' },\n '&[data-align=\"end\"]': { transformOrigin: 'top right' },\n },\n '&[data-side=\"left\"]': {\n '&[data-align=\"start\"]': { transformOrigin: 'top right' },\n '&[data-align=\"center\"]': { transformOrigin: 'center right' },\n '&[data-align=\"end\"]': { transformOrigin: 'bottom right' },\n },\n },\n position: 'relative',\n zIndex: '$dropdown-menu',\n outline: '1px solid transparent !important', // important because Radix overrides outline in element styles\n borderRadius: '$100',\n backgroundColor: '$background-neutrals-layout',\n border: '.5px solid $border-neutrals-subtle',\n boxShadow: '$elevation-200',\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport {\n contentDefaults,\n CONTENT_PADDING,\n CONTENT_GAP,\n} from '../styles/content'\n\nexport const StyledItemsContainer = styled('div', {\n display: 'grid',\n gap: CONTENT_GAP,\n\n variants: {\n containerSpacing: {\n small: {\n padding: CONTENT_PADDING.small,\n },\n medium: {\n padding: CONTENT_PADDING.medium,\n },\n large: {\n padding: CONTENT_PADDING.large,\n },\n },\n },\n})\n\nexport type StyledItemsContainerProps = StrictComponentProps<\n typeof StyledItemsContainer\n>\n\nexport const StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\n\nimport type { Direction, Overflow } from '../types'\n\nexport const RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-dropdown-menu-content-available-height)'\n\ninterface ScrollableContentProps {\n children?: React.ReactNode\n maxHeight?: string\n overflow: Overflow\n direction?: Direction\n}\n\nexport const ScrollableContent = ({\n children,\n maxHeight,\n overflow,\n direction,\n}: ScrollableContentProps): JSX.Element => {\n if (overflow === 'auto') {\n return (\n <ScrollArea dir={direction} type='always'>\n <ScrollArea.Viewport\n css={{\n maxHeight: maxHeight,\n }}\n >\n {children}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n )\n }\n\n return <>{children}</>\n}\n","import { createContext, useContext } from 'react'\n\nimport type { Direction } from '../types'\n\ninterface DropdownProps {\n direction?: Direction\n}\n\ninterface DropdownContextProps extends DropdownProps {}\n\nexport interface DropdownProviderProps extends DropdownProps {\n children: React.ReactNode\n}\n\nconst DropdownContext = createContext<DropdownContextProps>({} as any)\n\nexport const DropdownProvider = ({\n children,\n ...restProps\n}: DropdownProviderProps): JSX.Element => (\n <DropdownContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </DropdownContext.Provider>\n)\n\nexport const useDropdownContext = (): DropdownContextProps =>\n useContext(DropdownContext)\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledContentProps } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n ContainerSpacing,\n Overflow,\n CollisionPadding,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around.\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * The preferred side of the trigger to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled. This prop is\n * ignored within submenus.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the trigger. May change when collisions\n * occur. This prop is ignored within submenus.\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 window edges.\n * @default true\n */\n avoidCollisions?: boolean\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?: CollisionPadding\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. It inherits from\n * DropdownMenu.Portal.\n */\n forceMount?: true\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 * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container.\n * @default 'medium'\n */\n containerSpacing?: ContainerSpacing\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 loop = false,\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = false,\n containerSpacing = 'medium',\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { direction } = useDropdownContext()\n\n /**\n * TODO remove when Radix release the fix:\n * https://github.com/radix-ui/primitives/pull/3237\n */\n const preventScrollOnFocus = (ref: HTMLDivElement | null): void => {\n if (ref === null || '_autoScrollPrevented' in ref.focus) {\n return\n }\n const _focus = ref.focus\n\n function focusWithouAutoScroll(\n this: HTMLDivElement,\n ...args: Parameters<typeof _focus>\n ): void {\n if (window.event?.type === 'focusScope.autoFocusOnMount') {\n _focus.call(this, {\n preventScroll: true,\n })\n } else {\n _focus.apply(this, args)\n }\n }\n focusWithouAutoScroll._autoScrollPrevented = true\n ref.focus = focusWithouAutoScroll\n }\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledContent\n {...restProps}\n ref={mergeRefs([forwardRef, preventScrollOnFocus])}\n loop={loop}\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 >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledItem = styled(RadixDropdownMenu.Item, {\n ...itemDefaults,\n variants: {\n // This is a hack for the :has() selector\n // Remove it after Firefox implements it\n hasRightSlot: {\n true: {\n paddingRight: '$600',\n },\n },\n variant: {\n subtle: {},\n danger: {\n '&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled])':\n {\n color: '$text-danger',\n backgroundColor: '$background-danger-subtle',\n },\n '&:active:not([aria-disabled=\"true\"],[data-disabled])': {\n color: '$text-danger-active',\n backgroundColor: '$background-danger-subtle-active',\n },\n },\n },\n },\n})\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n * Calling event.preventDefault in this handler will prevent the dropdown menu\n * from closing when selecting that item.\n */\n onSelect?: (event: Event) => void\n\n /**\n * Optional text used for typeahead purposes. By default, the typeahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Change the item style.\n * @default 'subtle'\n */\n variant?: StyledItemProps['variant']\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, variant = 'subtle', ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...elementProps}\n variant={variant}\n disabled={disabled}\n ref={forwardRef}\n />\n </ItemProvider>\n )\n }\n)\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport { Item } from './item'\nimport type { ItemProps } from './item'\n\ntype ItemPropsWithAnchor = ItemProps & AnchorHTMLAttributes<typeof Item>\nexport interface LinkItemProps extends ItemPropsWithAnchor {}\n\nexport const LinkItem = React.forwardRef<\n ElementRef<typeof Item>,\n LinkItemProps\n>(({ children, href, ...restProps }, forwardRef) => (\n <Item asChild ref={forwardRef} {...restProps}>\n <a href={href}>{children}</a>\n </Item>\n))\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { CONTENT_GAP } from '../styles/content'\n\nexport const StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n display: 'grid',\n gap: CONTENT_GAP,\n})\n\nexport type StyledRadioGroupProps = StrictComponentProps<\n typeof StyledRadioGroup\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledRadioGroup } from './radio-group.styled'\nimport type { StyledRadioGroupProps } from './radio-group.styled'\n\nexport interface RadioGroupProps\n extends Omit<StyledRadioGroupProps, 'onChange'> {\n /**\n * The value of the selected item in the group\n */\n value: string\n\n /**\n * Event handler called when the selected radio changes\n */\n onChange: (value: string) => void\n}\n\nexport const RadioGroup = React.forwardRef<\n ElementRef<typeof StyledRadioGroup>,\n RadioGroupProps\n>((props, forwardRef) => {\n const { onChange, ...restProps } = props\n\n return (\n <StyledRadioGroup\n {...restProps}\n ref={forwardRef}\n onValueChange={onChange}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { IconProhibit } from '@mirohq/design-system-icons'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledRadioContainer = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '$4',\n height: '$4',\n boxSizing: 'border-box',\n border: '1px solid $border-neutrals',\n borderRadius: '$round',\n})\n\nexport const StyledPill = styled(Primitive.div, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$round',\n})\n\nexport const StyledProhibited = styled(IconProhibit, {\n display: 'none',\n width: '$3 !important',\n})\n\nexport const StyledRadioItem = styled(RadixDropdownMenu.RadioItem, {\n ...itemDefaults,\n [`&[aria-checked=true] ${StyledRadioContainer}`]: {\n color: '$icon-primary',\n borderColor: '$border-primary',\n\n [`& ${StyledPill}`]: {\n display: 'block',\n backgroundColor: '$background-primary-prominent-selected',\n },\n },\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledRadioContainer}`]:\n {\n [`& ${StyledPill}`]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n\n [`\n &[aria-disabled=\"true\"] ${StyledRadioContainer},\n &[data-disabled] ${StyledRadioContainer}\n `]: {\n color: '$icon-neutrals-disabled',\n borderColor: '$border-neutrals-disabled',\n\n [`& ${StyledPill}`]: {\n backgroundColor: '$icon-neutrals-disabled',\n },\n },\n '&[aria-checked=false]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\n },\n [`${StyledRadioContainer}`]: {\n borderWidth: '2px',\n borderColor: '$border-neutrals-controls',\n },\n})\n\nexport type StyledRadioItemProps = StrictComponentProps<typeof StyledRadioItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport {\n StyledPill,\n StyledProhibited,\n StyledRadioContainer,\n StyledRadioItem,\n} from './radio-item.styled'\nimport type { StyledRadioItemProps } from './radio-item.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface RadioItemProps extends StyledRadioItemProps {\n /**\n * The unique value of the item.\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 * Event handler called when the user selects an item (via mouse or keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled, children, closeOnSelect = false, ...restProps }, forwardRef) => {\n const elementProps = useAriaDisabled(restProps, {\n closeOnSelect,\n })\n\n return (\n <ItemProvider>\n <StyledRadioItem {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledRadioContainer>\n <StyledPill />\n <StyledProhibited />\n </StyledRadioContainer>\n </RightSlot>\n </StyledRadioItem>\n </ItemProvider>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSeparator = styled(RadixDropdownMenu.Separator, {\n borderTop: '1px solid $border-neutrals-subtle',\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) => <StyledSeparator {...props} ref={forwardRef} />)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { styles } from '@mirohq/design-system-base-switch'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledSwitch = styled(Primitive.span, {\n ...styles.default,\n width: '$7',\n height: '$4',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[aria-checked=true] ${StyledSwitch}`]: styles.checked,\n [`&[aria-checked=true]:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.checkedHovered,\n\n [`&:is(:hover,[data-hovered]):not([aria-disabled=\"true\"],[data-disabled]) ${StyledSwitch}`]:\n styles.hovered,\n [`\n &[aria-disabled=\"true\"] ${StyledSwitch},\n &[data-disabled] ${StyledSwitch}\n `]: styles.disabled,\n})\n\nexport type StyledSwitchItemProps = StrictComponentProps<\n typeof StyledSwitchItem\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { Thumb } from '@mirohq/design-system-base-switch'\n\nimport { RightSlot } from './right-slot'\nimport type { StyledSwitchItemProps } from './switch-item.styled'\nimport { StyledSwitch, StyledSwitchItem } from './switch-item.styled'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\nimport { ItemProvider } from '../hooks/use-item'\n\nexport interface SwitchItemProps\n extends Omit<StyledSwitchItemProps, 'onChange'> {\n /**\n * The checked state of the item.\n */\n checked: boolean\n\n /**\n * Event handler called when the checked state changes.\n */\n onChange: (checked: boolean) => void\n\n /**\n * When true, prevents the user from interacting with the item.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard).\n */\n onSelect?: (event: Event) => void\n\n /**\n * Closes the dropdown when the user selects an item.\n * @default false\n */\n closeOnSelect?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content\n * inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n {\n disabled,\n checked,\n onChange,\n closeOnSelect = false,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(restProps, { closeOnSelect })\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...elementProps}\n disabled={disabled}\n checked={checked}\n onCheckedChange={onChange}\n ref={forwardRef}\n >\n {children}\n <RightSlot>\n <StyledSwitch>\n <Thumb />\n </StyledSwitch>\n </RightSlot>\n </StyledSwitchItem>\n </ItemProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { focus } from '@mirohq/design-system-styles'\n\nexport const StyledTrigger = styled(RadixDropdownMenu.Trigger, {\n variants: {\n unstyled: {\n true: {\n all: 'unset',\n boxSizing: 'border-box',\n cursor: 'pointer',\n ...focus.css({\n boxShadow: '$focus',\n outline: '1px solid transparent',\n }),\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React, { useRef } from 'react'\nimport { mergeRefs, handleVirtualClick } from '@mirohq/design-system-utils'\nimport type { ElementRef } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onClick, ...restProps }, forwardRef) => {\n const ref = useRef<HTMLButtonElement>(null)\n\n return (\n <StyledTrigger\n {...restProps}\n onClick={e => {\n handleVirtualClick(e, ref)\n onClick?.(e)\n }}\n ref={mergeRefs([ref, forwardRef])}\n unstyled={!asChild}\n asChild={asChild}\n />\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport { itemDefaults } from '../styles/item'\n\nexport const StyledIconContainer = styled(Primitive.span, {\n color: '$icon-neutrals-with-text',\n display: 'flex',\n alignItems: 'center',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': {\n background: '$background-neutrals-hover',\n color: '$text-neutrals-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:is(:hover,[data-hovered]):not([aria-disabled=\"true\"]) ${StyledIconContainer}`]:\n {\n color: '$icon-neutrals-hover',\n },\n})\n\nexport type StyledSubTriggerProps = StrictComponentProps<\n typeof StyledSubTrigger\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconChevronRight } from '@mirohq/design-system-icons'\n\nimport { StyledIconContainer, StyledSubTrigger } from './sub-trigger.styled'\nimport type { StyledSubTriggerProps } from './sub-trigger.styled'\nimport { RightSlot } from './right-slot'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for type ahead purposes. By default the type ahead\n * behavior will use the .textContent of the item. Use this when the content\n * is complex, or you have.\n */\n textValue?: string\n}\n\nexport const SubTrigger = React.forwardRef<\n ElementRef<typeof StyledSubTrigger>,\n StyledSubTriggerProps\n>(({ children, disabled = false, ...restProps }, forwardRef) => {\n // remove onSelect to avoid TS mismatch error\n let { onSelect, ...elementProps } = restProps\n elementProps = useAriaDisabled(elementProps)\n\n return (\n <StyledSubTrigger {...elementProps} disabled={disabled} ref={forwardRef}>\n {children}\n <RightSlot>\n <StyledIconContainer\n data-testid={\n process.env.NODE_ENV === 'test' ? 'submenu-arrow-icon' : undefined\n }\n >\n <IconChevronRight size='small' />\n </StyledIconContainer>\n </RightSlot>\n </StyledSubTrigger>\n )\n})\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nimport { contentDefaults } from '../styles/content'\n\nexport const StyledSubContent = styled(\n RadixDropdownMenu.SubContent,\n contentDefaults\n)\n\nexport type StyledSubContentProps = StrictComponentProps<\n typeof StyledSubContent\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { CSSProperties } from '@stitches/react'\nimport { theme } from '@mirohq/design-system-stitches'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_OFFSET, CONTENT_PADDING_TOKENS } from '../styles/content'\nimport { ContentProvider, useContent } from '../hooks/use-content'\nimport {\n RADIX_CONTENT_AVAILABLE_HEIGHT,\n ScrollableContent,\n} from './scrollable-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport { StyledItemsContainer } from './content.styled'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n StickyBehavior,\n Overflow,\n CollisionPadding,\n} from '../types'\nimport { useDropdownContext } from '../hooks/use-dropdown-context'\n\nexport interface SubContentProps extends StyledSubContentProps {\n /**\n * Whether keyboard navigation should loop around\n * @default false\n */\n loop?: boolean\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault. This prop is ignored within\n * submenus.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when the escape key is down. It can be prevented by\n * 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 * Event handler called when focus moves outside the bounds of the component.\n * It can be prevented by calling event.preventDefault.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void\n\n /**\n * Event handler called when an interaction (pointer or focus event) happens\n * outside the bounds of the component. It can be prevented by calling\n * event.preventDefault.\n */\n onInteractOutside?: (\n event: PointerDownOutsideEvent | FocusOutsideEvent\n ) => void\n\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries.\n */\n forceMount?: true\n\n /**\n * The distance in pixels from the trigger.\n * @default CONTENT_PADDING_Y + CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default -CONTENT_PADDING_Y\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n * @default true\n */\n avoidCollisions?: boolean\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?: CollisionPadding\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 sticky behavior on the align axis. \"partial\" will keep the content in\n * the boundary as long as the trigger is at least partially in the boundary\n * whilst \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: StickyBehavior\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 subContent.\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 SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset,\n alignOffset,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = true,\n sticky = 'partial',\n overflow = 'visible',\n maxHeight,\n collisionBoundary,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n /* A new ContentProvider instance is created per Content and SubContent,\n using the context from the parent is necessary to preserve this value. */\n const { containerSpacing } = useContent()\n const { direction } = useDropdownContext()\n\n // We need to calculate offsets based on content padding,\n // otherwise submenu would overlap the menu and won't be aligned with the menu properly\n const paddingToken = CONTENT_PADDING_TOKENS[containerSpacing]\n const contentSideOffset =\n CONTENT_OFFSET + parseInt(theme.space[paddingToken.x])\n const contentAlignOffset = -parseInt(theme.space[paddingToken.y])\n\n /*\n When SubContent renders inside the Content and they both have collisionBoundary,\n Radix content available height is not calculated correctly and uses Content's available height.\n If we get collisionBoundary's height, it works just fine\n */\n const availableHeight =\n collisionBoundary != null\n ? getComputedStyle(collisionBoundary).getPropertyValue('height')\n : RADIX_CONTENT_AVAILABLE_HEIGHT\n\n return (\n <ContentProvider containerSpacing={containerSpacing}>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset ?? contentSideOffset}\n alignOffset={alignOffset ?? contentAlignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n collisionBoundary={collisionBoundary}\n >\n <ScrollableContent\n maxHeight={\n maxHeight !== undefined\n ? `min(${availableHeight}, ${\n typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight\n })`\n : availableHeight\n }\n overflow={overflow}\n direction={direction}\n >\n <StyledItemsContainer containerSpacing={containerSpacing}>\n {children}\n </StyledItemsContainer>\n </ScrollableContent>\n </StyledSubContent>\n </ContentProvider>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\n\nexport const StyledSub = styled(RadixDropdownMenu.Sub, {})\n\nexport type StyledSubProps = StrictComponentProps<typeof StyledSub>\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledSub } from './sub.styled'\nimport type { StyledSubProps } from './sub.styled'\n\nexport interface SubProps extends StyledSubProps {\n /**\n * The open state of the submenu when it is initially rendered. Use when you\n * do not need to control its open state.\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the submenu. Must be used in conjunction with\n * onOpenChange.\n */\n open?: boolean\n\n /**\n * Event handler called when the submenu opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the submenu closes.\n */\n onClose?: () => void\n}\n\nexport const Sub = React.forwardRef<ElementRef<typeof StyledSub>, SubProps>(\n ({ defaultOpen, onOpen, onClose, open, ...restProps }, forwardRef) => {\n const [openState, setOpenState] = useState(defaultOpen)\n return (\n <StyledSub\n {...restProps}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n ref={forwardRef}\n />\n )\n }\n)\n","import React from 'react'\nimport type { DropdownMenuPortalProps } from '@radix-ui/react-dropdown-menu'\nimport { Portal as RadixPortal } from '@radix-ui/react-dropdown-menu'\n\nexport interface PortalProps extends DropdownMenuPortalProps {\n /**\n * Used to force mounting when more control is needed. Useful when controlling\n * animation with React animation libraries. If used on this part, it will be\n * inherited by DropdownMenu.Content and DropdownMenu.SubContent respectively.\n */\n forceMount?: true\n\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal = (props: PortalProps): React.ReactNode => (\n <RadixPortal {...props} />\n)\n","import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { styles as baseIconStyles } from '@mirohq/design-system-base-icon'\n\nimport { LeftSlot } from './left-slot'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n square: '$5',\n\n '& svg:not([data-icon-component]), & img:not([data-icon-component])': {\n ...baseIconStyles.size.small,\n },\n})\n\nexport type StyledIconSlotProps = ComponentPropsWithRef<typeof StyledIconSlot>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport type { IconSizes } from '@mirohq/design-system-base-icon'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\ninterface IconComponentProps {\n 'data-icon-component': ''\n size: IconSizes\n}\n\nexport type IconSlotProps = { children: React.ReactNode } & StyledIconSlotProps\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n StyledIconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n const formattedChildren = addPropsToChildren<IconComponentProps>(\n children,\n isIconComponent,\n {\n 'data-icon-component': '',\n size: 'small',\n }\n )\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps}>\n <Primitive.svg asChild aria-hidden>\n {formattedChildren}\n </Primitive.svg>\n </StyledIconSlot>\n )\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport type { HotkeySharedProps as BaseHotkeyProps } from '@mirohq/design-system-base-hotkey'\nimport { Hotkey as BaseHotkey } from '@mirohq/design-system-base-hotkey'\n\nimport { RightSlot } from './right-slot'\n\nexport type HotkeyProps = BaseHotkeyProps & {\n /**\n * The content.\n */\n children: string\n}\n\nexport const Hotkey = React.forwardRef<\n ElementRef<typeof BaseHotkey>,\n HotkeyProps\n>(({ children, ...restProps }, forwardRef) => (\n <RightSlot>\n <BaseHotkey ref={forwardRef} {...restProps} variant='neutral'>\n {children}\n </BaseHotkey>\n </RightSlot>\n))\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nimport { useItem } from '../hooks/use-item'\nimport type { StyledIllustrationSlotProps } from './illustration-slot.styled'\nimport { StyledIllustrationSlot } from './illustration-slot.styled'\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n StyledIllustrationSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useLayoutEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import React, { useEffect } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { CheckboxItem } from './partials/checkbox-item'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { LinkItem } from './partials/link-item'\nimport { RadioGroup } from './partials/radio-group'\nimport { RadioItem } from './partials/radio-item'\nimport { Separator } from './partials/separator'\nimport { SwitchItem } from './partials/switch-item'\nimport { Trigger } from './partials/trigger'\nimport { SubTrigger } from './partials/sub-trigger'\nimport { SubContent } from './partials/sub-content'\nimport { Sub } from './partials/sub'\nimport { Portal } from './partials/portal'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\nimport { Hotkey } from './partials/hotkey'\nimport { IllustrationSlot } from './partials/illustration-slot'\nimport { DropdownProvider } from './hooks/use-dropdown-context'\nimport type { Direction } from './types'\n\nexport interface DropdownMenuProps {\n /**\n * The open state of the dropdown menu when it is initially rendered. Use when\n * you do not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The current dropdown open state.\n */\n open?: boolean\n\n /**\n * Event handler called when the dropdown opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the dropdown closes.\n */\n onClose?: () => void\n\n /**\n * Defines whether the interaction with outside elements will be disabled and\n * only menu content will be visible to screen readers. This prop is ignored\n * within submenus.\n * @default false\n */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nconst Root = ({\n defaultOpen = false,\n direction,\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}: DropdownMenuProps): React.ReactNode => {\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(open)\n\n useEffect(() => {\n if (prevOpen === true && open === false) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, open, prevOpen])\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={newOpen => {\n if (!newOpen && open === undefined) {\n ignoreNextTooltip()\n }\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\nexport const DropdownMenu: ((props: DropdownMenuProps) => React.ReactNode) &\n Partials = ({ direction = 'ltr', ...restProps }) => (\n <DropdownProvider direction={direction}>\n <BaseTooltipProvider>\n <Root direction={direction} {...restProps} />\n </BaseTooltipProvider>\n </DropdownProvider>\n)\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n Hotkey: typeof Hotkey\n IconSlot: typeof IconSlot\n IllustrationSlot: typeof IllustrationSlot\n Item: typeof Item\n ItemDescription: typeof ItemDescription\n LinkItem: typeof LinkItem\n Portal: typeof Portal\n RadioGroup: typeof RadioGroup\n RadioItem: typeof RadioItem\n Separator: typeof Separator\n Sub: typeof Sub\n SubContent: typeof SubContent\n SubTrigger: typeof SubTrigger\n SwitchItem: typeof SwitchItem\n Trigger: typeof Trigger\n}\n\nDropdownMenu.CheckboxItem = CheckboxItem\nDropdownMenu.Content = Content\nDropdownMenu.Hotkey = Hotkey\nDropdownMenu.IconSlot = IconSlot\nDropdownMenu.IllustrationSlot = IllustrationSlot\nDropdownMenu.Item = Item\nDropdownMenu.ItemDescription = ItemDescription\nDropdownMenu.LinkItem = LinkItem\nDropdownMenu.Portal = Portal\nDropdownMenu.RadioGroup = RadioGroup\nDropdownMenu.RadioItem = RadioItem\nDropdownMenu.Separator = Separator\nDropdownMenu.Sub = Sub\nDropdownMenu.SubContent = SubContent\nDropdownMenu.SubTrigger = SubTrigger\nDropdownMenu.SwitchItem = SwitchItem\nDropdownMenu.Trigger = Trigger\n"],"names":["Context","DS_useAriaDisabled","RadixPortal","baseIconStyles","BaseHotkey"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -75,6 +75,12 @@ type StickyBehavior = 'partial' | 'always';
75
75
  type ContainerSpacing = ExtractValidKeys<StyledItemsContainerProps['containerSpacing']>;
76
76
  type Overflow = 'auto' | 'visible';
77
77
  type Direction = 'ltr' | 'rtl';
78
+ /**
79
+ * Collision padding can be specified as:
80
+ * - A single number (same for all sides)
81
+ * - A partial object with side keys { top?: number, right?: number, bottom?: number, left?: number }
82
+ */
83
+ type CollisionPadding = number | Partial<Record<Side, number>>;
78
84
 
79
85
  type types_PointerDownOutsideEvent = PointerDownOutsideEvent;
80
86
  type types_FocusOutsideEvent = FocusOutsideEvent;
@@ -84,6 +90,7 @@ type types_StickyBehavior = StickyBehavior;
84
90
  type types_ContainerSpacing = ContainerSpacing;
85
91
  type types_Overflow = Overflow;
86
92
  type types_Direction = Direction;
93
+ type types_CollisionPadding = CollisionPadding;
87
94
  declare namespace types {
88
95
  export {
89
96
  types_PointerDownOutsideEvent as PointerDownOutsideEvent,
@@ -94,6 +101,7 @@ declare namespace types {
94
101
  types_ContainerSpacing as ContainerSpacing,
95
102
  types_Overflow as Overflow,
96
103
  types_Direction as Direction,
104
+ types_CollisionPadding as CollisionPadding,
97
105
  };
98
106
  }
99
107
 
@@ -160,11 +168,12 @@ interface ContentProps extends StyledContentProps {
160
168
  */
161
169
  avoidCollisions?: boolean;
162
170
  /**
163
- * The distance in pixels from window edges where collision detection should
164
- * occur.
171
+ * The distance in pixels from the boundary edges where collision detection
172
+ * should occur. Accepts a number (same for all sides), or a partial padding
173
+ * object, for example: { top: 20, left: 20 }.
165
174
  * @default 0
166
175
  */
167
- collisionPadding?: number;
176
+ collisionPadding?: CollisionPadding;
168
177
  /**
169
178
  * The sticky behavior on the align axis. "partial" will keep the content in
170
179
  * the boundary as long as the trigger is at least partially in the boundary
@@ -427,11 +436,12 @@ interface SubContentProps extends StyledSubContentProps {
427
436
  */
428
437
  avoidCollisions?: boolean;
429
438
  /**
430
- *The distance in pixels from the boundary edges where collision detection
431
- *should occur. Accepts a number (same for all sides).
439
+ * The distance in pixels from the boundary edges where collision detection
440
+ * should occur. Accepts a number (same for all sides), or a partial padding
441
+ * object, for example: { top: 20, left: 20 }.
432
442
  * @default 0
433
443
  */
434
- collisionPadding?: number;
444
+ collisionPadding?: CollisionPadding;
435
445
  /**
436
446
  * The element used as the collision boundary. By default this is the
437
447
  * viewport, though you can provide additional element(s) to be included in
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirohq/design-system-dropdown-menu",
3
- "version": "5.1.14",
3
+ "version": "5.2.1",
4
4
  "description": "",
5
5
  "author": "Miro",
6
6
  "source": "src/index.ts",
@@ -32,7 +32,7 @@
32
32
  "@mirohq/design-system-base-icon": "^1.1.0",
33
33
  "@mirohq/design-system-base-switch": "^1.1.2",
34
34
  "@mirohq/design-system-base-tooltip": "^1.1.0",
35
- "@mirohq/design-system-icons": "^1.27.0",
35
+ "@mirohq/design-system-icons": "^1.27.1",
36
36
  "@mirohq/design-system-primitive": "^2.1.0",
37
37
  "@mirohq/design-system-scroll-area": "^1.1.2",
38
38
  "@mirohq/design-system-stitches": "^3.1.2",