@mirohq/design-system-dropdown-menu 3.3.0-dropdown.6 → 3.3.0-dropdown.7
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 +5 -5
- package/dist/main.js.map +1 -1
- package/dist/module.js +5 -5
- package/dist/module.js.map +1 -1
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -292,9 +292,9 @@ const CheckboxItem = React__default["default"].forwardRef(({ children, checked,
|
|
|
292
292
|
disabled,
|
|
293
293
|
onCheckedChange: onChange
|
|
294
294
|
}, children, /* @__PURE__ */ React__default["default"].createElement(RightSlot, null, /* @__PURE__ */ React__default["default"].createElement(StyledIndicator, null, (disabled === true || designSystemUtils.booleanify(ariaDisabled)) && !checked && /* @__PURE__ */ React__default["default"].createElement(designSystemIcons.IconProhibit, {
|
|
295
|
-
|
|
295
|
+
css: { square: "$3", display: "block" }
|
|
296
296
|
}), checked && /* @__PURE__ */ React__default["default"].createElement(designSystemIcons.IconCheckMark, {
|
|
297
|
-
css: {
|
|
297
|
+
css: { square: "$3", display: "block" }
|
|
298
298
|
})))));
|
|
299
299
|
});
|
|
300
300
|
|
|
@@ -302,7 +302,7 @@ const CONTENT_GUTTER = parseInt(designSystemStitches.theme.space[150]);
|
|
|
302
302
|
const CONTENT_OFFSET = parseInt(designSystemStitches.theme.space[50]);
|
|
303
303
|
const contentDefaults = {
|
|
304
304
|
maxWidth: "$125",
|
|
305
|
-
backgroundColor: "$
|
|
305
|
+
backgroundColor: "$background-neutrals-container",
|
|
306
306
|
borderRadius: "$50",
|
|
307
307
|
boxShadow: "$50",
|
|
308
308
|
"@media (prefers-reduced-motion: no-preference)": {
|
|
@@ -445,7 +445,7 @@ const StyledRadioContainer = designSystemStitches.styled(designSystemPrimitive.P
|
|
|
445
445
|
boxSizing: "border-box",
|
|
446
446
|
border: "1px solid $border-neutrals",
|
|
447
447
|
borderRadius: "$half",
|
|
448
|
-
|
|
448
|
+
margin: "2px 4px"
|
|
449
449
|
});
|
|
450
450
|
const StyledPill = designSystemStitches.styled(designSystemPrimitive.Primitive.span, {
|
|
451
451
|
display: "none",
|
|
@@ -455,7 +455,7 @@ const StyledPill = designSystemStitches.styled(designSystemPrimitive.Primitive.s
|
|
|
455
455
|
});
|
|
456
456
|
const StyledProhibited = designSystemStitches.styled(designSystemIcons.IconProhibit, {
|
|
457
457
|
display: "none",
|
|
458
|
-
width: "$3"
|
|
458
|
+
width: "$3 !important"
|
|
459
459
|
});
|
|
460
460
|
const StyledRadioItem = designSystemStitches.styled(RadixDropdownMenu__namespace.RadioItem, {
|
|
461
461
|
...itemDefaults,
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/partials/item-description.tsx","../src/hooks/use-content.tsx","../src/partials/slots.styled.ts","../src/hooks/use-item.tsx","../src/partials/slots.tsx","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.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/dropdown-menu.tsx"],"sourcesContent":["import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const ItemDescription = 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 color: '$text-neutrals-subtle',\n})\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n})\n\nexport const ContentProvider = ({\n children,\n}: PropsWithChildren<{}>): 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 }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n placeContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$none',\n },\n})\n","import React, { createContext, useContext, useState, useCallback } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({\n children,\n}: PropsWithChildren<{}>): 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, { useEffect, useRef } from 'react'\nimport type { ComponentPropsWithRef, ElementRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledIllustrationSlot, StyledRightSlot } from './slots.styled'\nimport type { IconSlotProps } from './icon-slot'\nimport { useItem } from '../hooks/use-item'\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 useEffect(() => {\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\nexport const HotkeySlot = styled(RightSlot, {\n color: '$text-neutrals-subtle',\n})\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n IconSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import { focus } from '@mirohq/design-system-styles'\n\nimport { ItemDescription } from '../partials/item-description'\nimport { IllustrationSlot } from '../partials/slots'\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: 'auto 1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateRows: '1fr auto',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n minHeight: '$10',\n padding: '$100 $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 gridTemplateRows: 'auto',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n '&:not(:last-child)': {\n marginBottom: '$50',\n },\n '&:not(:first-child)': {\n marginTop: '$50',\n },\n\n ...focus.defaults,\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n pointerEvents: 'none',\n [`&, & ${ItemDescription}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${IllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:hover': {\n background: '$background-primary-subtle-hover',\n color: '$text-primary-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active': {\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 padding: '4px 6px',\n})\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`&[data-state=\"checked\"] ${StyledIndicator}`]: {\n color: '$icon-primary',\n },\n [`&[data-state=\"checked\"]:hover ${StyledIndicator}`]: {\n color: '$icon-primary-hover',\n },\n [`\n &[aria-disabled=\"true\"] ${StyledIndicator},\n &[data-disabled] ${StyledIndicator}\n `]: {\n color: '$icon-neutrals-disabled',\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import { useMemo } from 'react'\nimport type { KeyboardEventHandler } from 'react'\nimport type { Booleanish } from '@mirohq/design-system-types'\nimport { booleanify } from '@mirohq/design-system-utils'\n\ninterface AriaDisabledProps extends Object {\n 'aria-disabled'?: Booleanish\n onKeyDown?: KeyboardEventHandler\n onSelect?: (event: Event) => void\n}\n\nexport const useAriaDisabled = (\n { 'aria-disabled': ariaDisabled, onKeyDown, onSelect }: AriaDisabledProps,\n preventDefault: boolean | undefined = false\n): AriaDisabledProps =>\n useMemo(\n () => ({\n 'aria-disabled': booleanify(ariaDisabled) ? ariaDisabled : undefined,\n onKeyDown: e => {\n if (\n booleanify(ariaDisabled) &&\n e.code !== 'ArrowUp' &&\n e.code !== 'ArrowDown'\n ) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n\n onKeyDown?.(e)\n },\n onSelect: e => {\n if (preventDefault) {\n e.preventDefault()\n }\n\n if (booleanify(ariaDisabled)) {\n return\n }\n\n onSelect?.(e)\n },\n }),\n [ariaDisabled, onKeyDown, onSelect, preventDefault]\n )\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconCheckMark, IconProhibit } 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 './slots'\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\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(({ children, checked, onChange, disabled, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n const { 'aria-disabled': ariaDisabled } = ariaDisabledProps\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...restProps}\n {...ariaDisabledProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {(disabled === true || booleanify(ariaDisabled)) && !checked && (\n <IconProhibit size='small' />\n )}\n {checked && (\n <IconCheckMark css={{ width: '12px', display: 'block' }} />\n )}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n})\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GUTTER = parseInt(theme.space[150])\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const contentDefaults = {\n maxWidth: '$125',\n backgroundColor: '$white',\n borderRadius: '$50',\n boxShadow: '$50',\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: '$dropdownMenu',\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 StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n\n variants: {\n containerSpacing: {\n small: {\n '&, [role=\"menu\"]': {\n padding: '$50 $150',\n },\n },\n medium: {\n '&, [role=\"menu\"]': {\n padding: '$150',\n },\n },\n large: {\n '&, [role=\"menu\"]': {\n padding: '$150 $300',\n },\n },\n },\n },\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledContent } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { ContentProvider } from '../hooks/use-content'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n} from '../types'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around\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 */\n side?: Side\n\n /**\n * The distance in pixels from the trigger\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 */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\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 */\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 */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container\n */\n containerSpacing?: StyledContentProps['containerSpacing']\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 ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledContent\n {...restProps}\n ref={forwardRef}\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 containerSpacing={containerSpacing}\n />\n </ContentProvider>\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 },\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 */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard). Calling event.preventDefault in this handler will prevent the dropdown menu 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 behavior will use the .textContent of the item. Use this when the content is complex, or you have non-textual content inside\n */\n textValue?: string\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...restProps}\n {...ariaDisabledProps}\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'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\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 const ariaDisabledProps = useAriaDisabled(restProps)\n return (\n <Item asChild ref={forwardRef} {...restProps} {...ariaDisabledProps}>\n <a href={href}>{children}</a>\n </Item>\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 StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n marginY: '$50',\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.span, {\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: '$half',\n marginTop: '2px',\n})\n\nexport const StyledPill = styled(Primitive.span, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$half',\n})\n\nexport const StyledProhibited = styled(IconProhibit, {\n display: 'none',\n width: '$3',\n})\n\nexport const StyledRadioItem = styled(RadixDropdownMenu.RadioItem, {\n ...itemDefaults,\n [`&[data-state=\"checked\"] ${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 [`&:hover ${StyledRadioContainer}`]: {\n borderColor: '$border-primary-hover',\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 '&[data-state=\"unchecked\"]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\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 './slots'\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 */\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled = false, children, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n return (\n <ItemProvider>\n <StyledRadioItem\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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 marginTop: '2px',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[data-state=\"checked\"] ${StyledSwitch}`]: styles.checked,\n [`&[data-state=\"checked\"]:hover ${StyledSwitch}`]: styles.checkedHovered,\n\n [`&:hover ${StyledSwitch}`]: 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 './slots'\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n { disabled = false, checked, onChange, children, ...restProps },\n forwardRef\n ) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...restProps}\n {...ariaDisabledProps}\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.defaults,\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onPress, onClick, ...restProps }, forwardRef) => (\n <StyledTrigger\n {...restProps}\n onClick={onPress ?? onClick}\n ref={forwardRef}\n unstyled={!asChild}\n asChild={asChild}\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 marginRight: '-4px',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': itemDefaults['&:hover'],\n\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:hover ${StyledIconContainer}`]:\n {\n color: '$icon-primary-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 './slots'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch\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 const { onSelect, ...ariaDisabledProps } = useAriaDisabled({\n onKeyDown: restProps.onKeyDown,\n 'aria-disabled': restProps['aria-disabled'],\n })\n\n return (\n <StyledSubTrigger\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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' weight='thin' />\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'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_GUTTER, CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport type { PointerDownOutsideEvent, FocusOutsideEvent } from '../types'\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 */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side andalign 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 */\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?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n}\n\n// without CONTENT_GUTTER submenu would overlap the menu\nconst SIDE_OFFSET = CONTENT_GUTTER + CONTENT_OFFSET\n\nexport const SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset = SIDE_OFFSET,\n alignOffset = -CONTENT_GUTTER,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = false,\n sticky = 'partial',\n ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n />\n </ContentProvider>\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: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './slots.styled'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n paddingTop: '2px',\n\n variants: {\n customIcon: {\n true: {\n square: '$icon-200',\n },\n },\n },\n})\n\nexport type StyledIconSlotProps = StrictComponentProps<typeof StyledIconSlot>\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport type { IconProps } from '@mirohq/design-system-icons'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\nexport type IconSlotProps = Omit<StyledIconSlotProps, 'custom'>\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n IconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n const child = React.Children.only(children) as React.ReactElement\n\n const isIcon = isIconComponent(child)\n\n const formattedChild = isIcon\n ? React.cloneElement<IconProps>(child, {\n ...child.props,\n size: 'small',\n weight: 'thin',\n })\n : child\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps} customIcon={!isIcon}>\n {formattedChild}\n </StyledIconSlot>\n )\n})\n","import React, { useState } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\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 { HotkeySlot, IllustrationSlot } from './partials/slots'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\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 */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n */\n direction?: 'ltr' | 'rtl'\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 */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nexport const DropdownMenu: React.FC<DropdownMenuProps> & Partials = ({\n defaultOpen = false,\n direction = 'ltr',\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}) => {\n const [openState, setOpenState] = useState(defaultOpen)\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\ninterface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n HotkeySlot: typeof HotkeySlot\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.HotkeySlot = HotkeySlot\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":["styled","Primitive","Context","createContext","useState","useRef","useCallback","addPropsToChildren","React","useContext","useEffect","focus","RadixDropdownMenu","useMemo","booleanify","IconProhibit","IconCheckMark","theme","animations","styles","Thumb","IconChevronRight","RadixPortal","isIconComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/partials/item-description.tsx","../src/hooks/use-content.tsx","../src/partials/slots.styled.ts","../src/hooks/use-item.tsx","../src/partials/slots.tsx","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.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/dropdown-menu.tsx"],"sourcesContent":["import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const ItemDescription = 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 color: '$text-neutrals-subtle',\n})\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n})\n\nexport const ContentProvider = ({\n children,\n}: PropsWithChildren<{}>): 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 }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n placeContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$none',\n },\n})\n","import React, { createContext, useContext, useState, useCallback } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({\n children,\n}: PropsWithChildren<{}>): 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, { useEffect, useRef } from 'react'\nimport type { ComponentPropsWithRef, ElementRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledIllustrationSlot, StyledRightSlot } from './slots.styled'\nimport type { IconSlotProps } from './icon-slot'\nimport { useItem } from '../hooks/use-item'\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 useEffect(() => {\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\nexport const HotkeySlot = styled(RightSlot, {\n color: '$text-neutrals-subtle',\n})\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n IconSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import { focus } from '@mirohq/design-system-styles'\n\nimport { ItemDescription } from '../partials/item-description'\nimport { IllustrationSlot } from '../partials/slots'\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: 'auto 1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateRows: '1fr auto',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n minHeight: '$10',\n padding: '$100 $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 gridTemplateRows: 'auto',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n '&:not(:last-child)': {\n marginBottom: '$50',\n },\n '&:not(:first-child)': {\n marginTop: '$50',\n },\n\n ...focus.defaults,\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n pointerEvents: 'none',\n [`&, & ${ItemDescription}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${IllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:hover': {\n background: '$background-primary-subtle-hover',\n color: '$text-primary-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active': {\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 padding: '4px 6px',\n})\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`&[data-state=\"checked\"] ${StyledIndicator}`]: {\n color: '$icon-primary',\n },\n [`&[data-state=\"checked\"]:hover ${StyledIndicator}`]: {\n color: '$icon-primary-hover',\n },\n [`\n &[aria-disabled=\"true\"] ${StyledIndicator},\n &[data-disabled] ${StyledIndicator}\n `]: {\n color: '$icon-neutrals-disabled',\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import { useMemo } from 'react'\nimport type { KeyboardEventHandler } from 'react'\nimport type { Booleanish } from '@mirohq/design-system-types'\nimport { booleanify } from '@mirohq/design-system-utils'\n\ninterface AriaDisabledProps extends Object {\n 'aria-disabled'?: Booleanish\n onKeyDown?: KeyboardEventHandler\n onSelect?: (event: Event) => void\n}\n\nexport const useAriaDisabled = (\n { 'aria-disabled': ariaDisabled, onKeyDown, onSelect }: AriaDisabledProps,\n preventDefault: boolean | undefined = false\n): AriaDisabledProps =>\n useMemo(\n () => ({\n 'aria-disabled': booleanify(ariaDisabled) ? ariaDisabled : undefined,\n onKeyDown: e => {\n if (\n booleanify(ariaDisabled) &&\n e.code !== 'ArrowUp' &&\n e.code !== 'ArrowDown'\n ) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n\n onKeyDown?.(e)\n },\n onSelect: e => {\n if (preventDefault) {\n e.preventDefault()\n }\n\n if (booleanify(ariaDisabled)) {\n return\n }\n\n onSelect?.(e)\n },\n }),\n [ariaDisabled, onKeyDown, onSelect, preventDefault]\n )\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconCheckMark, IconProhibit } 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 './slots'\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\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(({ children, checked, onChange, disabled, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n const { 'aria-disabled': ariaDisabled } = ariaDisabledProps\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...restProps}\n {...ariaDisabledProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {(disabled === true || booleanify(ariaDisabled)) && !checked && (\n <IconProhibit css={{ square: '$3', display: 'block' }} />\n )}\n {checked && (\n <IconCheckMark css={{ square: '$3', display: 'block' }} />\n )}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n})\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GUTTER = parseInt(theme.space[150])\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const contentDefaults = {\n maxWidth: '$125',\n backgroundColor: '$background-neutrals-container',\n borderRadius: '$50',\n boxShadow: '$50',\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: '$dropdownMenu',\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 StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n\n variants: {\n containerSpacing: {\n small: {\n '&, [role=\"menu\"]': {\n padding: '$50 $150',\n },\n },\n medium: {\n '&, [role=\"menu\"]': {\n padding: '$150',\n },\n },\n large: {\n '&, [role=\"menu\"]': {\n padding: '$150 $300',\n },\n },\n },\n },\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledContent } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { ContentProvider } from '../hooks/use-content'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n} from '../types'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around\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 */\n side?: Side\n\n /**\n * The distance in pixels from the trigger\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 */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\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 */\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 */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container\n */\n containerSpacing?: StyledContentProps['containerSpacing']\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 ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledContent\n {...restProps}\n ref={forwardRef}\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 containerSpacing={containerSpacing}\n />\n </ContentProvider>\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 },\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 */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard). Calling event.preventDefault in this handler will prevent the dropdown menu 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 behavior will use the .textContent of the item. Use this when the content is complex, or you have non-textual content inside\n */\n textValue?: string\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...restProps}\n {...ariaDisabledProps}\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'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\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 const ariaDisabledProps = useAriaDisabled(restProps)\n return (\n <Item asChild ref={forwardRef} {...restProps} {...ariaDisabledProps}>\n <a href={href}>{children}</a>\n </Item>\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 StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n marginY: '$50',\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.span, {\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: '$half',\n margin: '2px 4px',\n})\n\nexport const StyledPill = styled(Primitive.span, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$half',\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 [`&[data-state=\"checked\"] ${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 [`&:hover ${StyledRadioContainer}`]: {\n borderColor: '$border-primary-hover',\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 '&[data-state=\"unchecked\"]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\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 './slots'\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 */\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled = false, children, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n return (\n <ItemProvider>\n <StyledRadioItem\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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 marginTop: '2px',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[data-state=\"checked\"] ${StyledSwitch}`]: styles.checked,\n [`&[data-state=\"checked\"]:hover ${StyledSwitch}`]: styles.checkedHovered,\n\n [`&:hover ${StyledSwitch}`]: 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 './slots'\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n { disabled = false, checked, onChange, children, ...restProps },\n forwardRef\n ) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...restProps}\n {...ariaDisabledProps}\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.defaults,\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onPress, onClick, ...restProps }, forwardRef) => (\n <StyledTrigger\n {...restProps}\n onClick={onPress ?? onClick}\n ref={forwardRef}\n unstyled={!asChild}\n asChild={asChild}\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 marginRight: '-4px',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': itemDefaults['&:hover'],\n\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:hover ${StyledIconContainer}`]:\n {\n color: '$icon-primary-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 './slots'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch\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 const { onSelect, ...ariaDisabledProps } = useAriaDisabled({\n onKeyDown: restProps.onKeyDown,\n 'aria-disabled': restProps['aria-disabled'],\n })\n\n return (\n <StyledSubTrigger\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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' weight='thin' />\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'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_GUTTER, CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport type { PointerDownOutsideEvent, FocusOutsideEvent } from '../types'\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 */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side andalign 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 */\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?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n}\n\n// without CONTENT_GUTTER submenu would overlap the menu\nconst SIDE_OFFSET = CONTENT_GUTTER + CONTENT_OFFSET\n\nexport const SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset = SIDE_OFFSET,\n alignOffset = -CONTENT_GUTTER,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = false,\n sticky = 'partial',\n ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n />\n </ContentProvider>\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: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './slots.styled'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n paddingTop: '2px',\n\n variants: {\n customIcon: {\n true: {\n square: '$icon-200',\n },\n },\n },\n})\n\nexport type StyledIconSlotProps = StrictComponentProps<typeof StyledIconSlot>\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport type { IconProps } from '@mirohq/design-system-icons'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\nexport type IconSlotProps = Omit<StyledIconSlotProps, 'custom'>\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n IconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n const child = React.Children.only(children) as React.ReactElement\n\n const isIcon = isIconComponent(child)\n\n const formattedChild = isIcon\n ? React.cloneElement<IconProps>(child, {\n ...child.props,\n size: 'small',\n weight: 'thin',\n })\n : child\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps} customIcon={!isIcon}>\n {formattedChild}\n </StyledIconSlot>\n )\n})\n","import React, { useState } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\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 { HotkeySlot, IllustrationSlot } from './partials/slots'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\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 */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n */\n direction?: 'ltr' | 'rtl'\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 */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nexport const DropdownMenu: React.FC<DropdownMenuProps> & Partials = ({\n defaultOpen = false,\n direction = 'ltr',\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}) => {\n const [openState, setOpenState] = useState(defaultOpen)\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\ninterface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n HotkeySlot: typeof HotkeySlot\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.HotkeySlot = HotkeySlot\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":["styled","Primitive","Context","createContext","useState","useRef","useCallback","addPropsToChildren","React","useContext","useEffect","focus","RadixDropdownMenu","useMemo","booleanify","IconProhibit","IconCheckMark","theme","animations","styles","Thumb","IconChevronRight","RadixPortal","isIconComponent"],"mappings":"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"}
|
package/dist/module.js
CHANGED
|
@@ -266,9 +266,9 @@ const CheckboxItem = React.forwardRef(({ children, checked, onChange, disabled,
|
|
|
266
266
|
disabled,
|
|
267
267
|
onCheckedChange: onChange
|
|
268
268
|
}, children, /* @__PURE__ */ React.createElement(RightSlot, null, /* @__PURE__ */ React.createElement(StyledIndicator, null, (disabled === true || booleanify(ariaDisabled)) && !checked && /* @__PURE__ */ React.createElement(IconProhibit, {
|
|
269
|
-
|
|
269
|
+
css: { square: "$3", display: "block" }
|
|
270
270
|
}), checked && /* @__PURE__ */ React.createElement(IconCheckMark, {
|
|
271
|
-
css: {
|
|
271
|
+
css: { square: "$3", display: "block" }
|
|
272
272
|
})))));
|
|
273
273
|
});
|
|
274
274
|
|
|
@@ -276,7 +276,7 @@ const CONTENT_GUTTER = parseInt(theme.space[150]);
|
|
|
276
276
|
const CONTENT_OFFSET = parseInt(theme.space[50]);
|
|
277
277
|
const contentDefaults = {
|
|
278
278
|
maxWidth: "$125",
|
|
279
|
-
backgroundColor: "$
|
|
279
|
+
backgroundColor: "$background-neutrals-container",
|
|
280
280
|
borderRadius: "$50",
|
|
281
281
|
boxShadow: "$50",
|
|
282
282
|
"@media (prefers-reduced-motion: no-preference)": {
|
|
@@ -419,7 +419,7 @@ const StyledRadioContainer = styled(Primitive.span, {
|
|
|
419
419
|
boxSizing: "border-box",
|
|
420
420
|
border: "1px solid $border-neutrals",
|
|
421
421
|
borderRadius: "$half",
|
|
422
|
-
|
|
422
|
+
margin: "2px 4px"
|
|
423
423
|
});
|
|
424
424
|
const StyledPill = styled(Primitive.span, {
|
|
425
425
|
display: "none",
|
|
@@ -429,7 +429,7 @@ const StyledPill = styled(Primitive.span, {
|
|
|
429
429
|
});
|
|
430
430
|
const StyledProhibited = styled(IconProhibit, {
|
|
431
431
|
display: "none",
|
|
432
|
-
width: "$3"
|
|
432
|
+
width: "$3 !important"
|
|
433
433
|
});
|
|
434
434
|
const StyledRadioItem = styled(RadixDropdownMenu.RadioItem, {
|
|
435
435
|
...itemDefaults,
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/partials/item-description.tsx","../src/hooks/use-content.tsx","../src/partials/slots.styled.ts","../src/hooks/use-item.tsx","../src/partials/slots.tsx","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.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/dropdown-menu.tsx"],"sourcesContent":["import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const ItemDescription = 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 color: '$text-neutrals-subtle',\n})\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n})\n\nexport const ContentProvider = ({\n children,\n}: PropsWithChildren<{}>): 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 }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n placeContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$none',\n },\n})\n","import React, { createContext, useContext, useState, useCallback } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({\n children,\n}: PropsWithChildren<{}>): 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, { useEffect, useRef } from 'react'\nimport type { ComponentPropsWithRef, ElementRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledIllustrationSlot, StyledRightSlot } from './slots.styled'\nimport type { IconSlotProps } from './icon-slot'\nimport { useItem } from '../hooks/use-item'\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 useEffect(() => {\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\nexport const HotkeySlot = styled(RightSlot, {\n color: '$text-neutrals-subtle',\n})\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n IconSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import { focus } from '@mirohq/design-system-styles'\n\nimport { ItemDescription } from '../partials/item-description'\nimport { IllustrationSlot } from '../partials/slots'\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: 'auto 1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateRows: '1fr auto',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n minHeight: '$10',\n padding: '$100 $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 gridTemplateRows: 'auto',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n '&:not(:last-child)': {\n marginBottom: '$50',\n },\n '&:not(:first-child)': {\n marginTop: '$50',\n },\n\n ...focus.defaults,\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n pointerEvents: 'none',\n [`&, & ${ItemDescription}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${IllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:hover': {\n background: '$background-primary-subtle-hover',\n color: '$text-primary-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active': {\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 padding: '4px 6px',\n})\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`&[data-state=\"checked\"] ${StyledIndicator}`]: {\n color: '$icon-primary',\n },\n [`&[data-state=\"checked\"]:hover ${StyledIndicator}`]: {\n color: '$icon-primary-hover',\n },\n [`\n &[aria-disabled=\"true\"] ${StyledIndicator},\n &[data-disabled] ${StyledIndicator}\n `]: {\n color: '$icon-neutrals-disabled',\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import { useMemo } from 'react'\nimport type { KeyboardEventHandler } from 'react'\nimport type { Booleanish } from '@mirohq/design-system-types'\nimport { booleanify } from '@mirohq/design-system-utils'\n\ninterface AriaDisabledProps extends Object {\n 'aria-disabled'?: Booleanish\n onKeyDown?: KeyboardEventHandler\n onSelect?: (event: Event) => void\n}\n\nexport const useAriaDisabled = (\n { 'aria-disabled': ariaDisabled, onKeyDown, onSelect }: AriaDisabledProps,\n preventDefault: boolean | undefined = false\n): AriaDisabledProps =>\n useMemo(\n () => ({\n 'aria-disabled': booleanify(ariaDisabled) ? ariaDisabled : undefined,\n onKeyDown: e => {\n if (\n booleanify(ariaDisabled) &&\n e.code !== 'ArrowUp' &&\n e.code !== 'ArrowDown'\n ) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n\n onKeyDown?.(e)\n },\n onSelect: e => {\n if (preventDefault) {\n e.preventDefault()\n }\n\n if (booleanify(ariaDisabled)) {\n return\n }\n\n onSelect?.(e)\n },\n }),\n [ariaDisabled, onKeyDown, onSelect, preventDefault]\n )\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconCheckMark, IconProhibit } 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 './slots'\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\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(({ children, checked, onChange, disabled, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n const { 'aria-disabled': ariaDisabled } = ariaDisabledProps\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...restProps}\n {...ariaDisabledProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {(disabled === true || booleanify(ariaDisabled)) && !checked && (\n <IconProhibit size='small' />\n )}\n {checked && (\n <IconCheckMark css={{ width: '12px', display: 'block' }} />\n )}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n})\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GUTTER = parseInt(theme.space[150])\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const contentDefaults = {\n maxWidth: '$125',\n backgroundColor: '$white',\n borderRadius: '$50',\n boxShadow: '$50',\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: '$dropdownMenu',\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 StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n\n variants: {\n containerSpacing: {\n small: {\n '&, [role=\"menu\"]': {\n padding: '$50 $150',\n },\n },\n medium: {\n '&, [role=\"menu\"]': {\n padding: '$150',\n },\n },\n large: {\n '&, [role=\"menu\"]': {\n padding: '$150 $300',\n },\n },\n },\n },\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledContent } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { ContentProvider } from '../hooks/use-content'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n} from '../types'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around\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 */\n side?: Side\n\n /**\n * The distance in pixels from the trigger\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 */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\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 */\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 */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container\n */\n containerSpacing?: StyledContentProps['containerSpacing']\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 ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledContent\n {...restProps}\n ref={forwardRef}\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 containerSpacing={containerSpacing}\n />\n </ContentProvider>\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 },\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 */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard). Calling event.preventDefault in this handler will prevent the dropdown menu 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 behavior will use the .textContent of the item. Use this when the content is complex, or you have non-textual content inside\n */\n textValue?: string\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...restProps}\n {...ariaDisabledProps}\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'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\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 const ariaDisabledProps = useAriaDisabled(restProps)\n return (\n <Item asChild ref={forwardRef} {...restProps} {...ariaDisabledProps}>\n <a href={href}>{children}</a>\n </Item>\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 StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n marginY: '$50',\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.span, {\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: '$half',\n marginTop: '2px',\n})\n\nexport const StyledPill = styled(Primitive.span, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$half',\n})\n\nexport const StyledProhibited = styled(IconProhibit, {\n display: 'none',\n width: '$3',\n})\n\nexport const StyledRadioItem = styled(RadixDropdownMenu.RadioItem, {\n ...itemDefaults,\n [`&[data-state=\"checked\"] ${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 [`&:hover ${StyledRadioContainer}`]: {\n borderColor: '$border-primary-hover',\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 '&[data-state=\"unchecked\"]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\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 './slots'\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 */\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled = false, children, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n return (\n <ItemProvider>\n <StyledRadioItem\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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 marginTop: '2px',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[data-state=\"checked\"] ${StyledSwitch}`]: styles.checked,\n [`&[data-state=\"checked\"]:hover ${StyledSwitch}`]: styles.checkedHovered,\n\n [`&:hover ${StyledSwitch}`]: 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 './slots'\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n { disabled = false, checked, onChange, children, ...restProps },\n forwardRef\n ) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...restProps}\n {...ariaDisabledProps}\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.defaults,\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onPress, onClick, ...restProps }, forwardRef) => (\n <StyledTrigger\n {...restProps}\n onClick={onPress ?? onClick}\n ref={forwardRef}\n unstyled={!asChild}\n asChild={asChild}\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 marginRight: '-4px',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': itemDefaults['&:hover'],\n\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:hover ${StyledIconContainer}`]:\n {\n color: '$icon-primary-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 './slots'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch\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 const { onSelect, ...ariaDisabledProps } = useAriaDisabled({\n onKeyDown: restProps.onKeyDown,\n 'aria-disabled': restProps['aria-disabled'],\n })\n\n return (\n <StyledSubTrigger\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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' weight='thin' />\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'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_GUTTER, CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport type { PointerDownOutsideEvent, FocusOutsideEvent } from '../types'\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 */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side andalign 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 */\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?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n}\n\n// without CONTENT_GUTTER submenu would overlap the menu\nconst SIDE_OFFSET = CONTENT_GUTTER + CONTENT_OFFSET\n\nexport const SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset = SIDE_OFFSET,\n alignOffset = -CONTENT_GUTTER,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = false,\n sticky = 'partial',\n ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n />\n </ContentProvider>\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: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './slots.styled'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n paddingTop: '2px',\n\n variants: {\n customIcon: {\n true: {\n square: '$icon-200',\n },\n },\n },\n})\n\nexport type StyledIconSlotProps = StrictComponentProps<typeof StyledIconSlot>\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport type { IconProps } from '@mirohq/design-system-icons'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\nexport type IconSlotProps = Omit<StyledIconSlotProps, 'custom'>\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n IconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n const child = React.Children.only(children) as React.ReactElement\n\n const isIcon = isIconComponent(child)\n\n const formattedChild = isIcon\n ? React.cloneElement<IconProps>(child, {\n ...child.props,\n size: 'small',\n weight: 'thin',\n })\n : child\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps} customIcon={!isIcon}>\n {formattedChild}\n </StyledIconSlot>\n )\n})\n","import React, { useState } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\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 { HotkeySlot, IllustrationSlot } from './partials/slots'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\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 */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n */\n direction?: 'ltr' | 'rtl'\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 */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nexport const DropdownMenu: React.FC<DropdownMenuProps> & Partials = ({\n defaultOpen = false,\n direction = 'ltr',\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}) => {\n const [openState, setOpenState] = useState(defaultOpen)\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\ninterface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n HotkeySlot: typeof HotkeySlot\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.HotkeySlot = HotkeySlot\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","RadixPortal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../src/partials/item-description.tsx","../src/hooks/use-content.tsx","../src/partials/slots.styled.ts","../src/hooks/use-item.tsx","../src/partials/slots.tsx","../src/styles/item.ts","../src/partials/checkbox-item.styled.tsx","../src/hooks/use-aria-disabled.ts","../src/partials/checkbox-item.tsx","../src/styles/content.ts","../src/partials/content.styled.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/dropdown-menu.tsx"],"sourcesContent":["import { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const ItemDescription = 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 color: '$text-neutrals-subtle',\n})\n","import React, {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n} from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ContentContext {\n rightSlotMount: (width: number) => number\n rightSlotDestroy: (index: number) => void\n}\n\nconst Context = createContext<ContentContext>({\n rightSlotMount: () => 0,\n rightSlotDestroy: () => {},\n})\n\nexport const ContentProvider = ({\n children,\n}: PropsWithChildren<{}>): 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 }}\n >\n {formattedChildren}\n </Context.Provider>\n )\n}\n\nexport const useContent = (): ContentContext => useContext(Context)\n","import { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const LeftSlot = styled(Primitive.div, {\n display: 'flex',\n placeContent: 'center',\n marginRight: '$100',\n gridArea: 'left-slot',\n})\n\nexport const StyledIllustrationSlot = styled(LeftSlot, {\n width: '$13',\n})\n\nexport type StyledIllustrationSlotProps = StrictComponentProps<\n typeof StyledIllustrationSlot\n>\n\nexport const StyledRightSlot = styled(Primitive.div, {\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: '$200',\n gridArea: 'right-slot',\n minWidth: 'max-content',\n textAlign: 'right',\n '&:empty': {\n paddingLeft: '$none',\n },\n})\n","import React, { createContext, useContext, useState, useCallback } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { addPropsToChildren } from '@mirohq/design-system-utils'\n\ninterface ItemContext {\n leftSlotMount: () => void\n leftSlotDestroy: () => void\n}\n\nconst Context = createContext<ItemContext>({\n leftSlotMount: () => {},\n leftSlotDestroy: () => {},\n})\n\nexport const ItemProvider = ({\n children,\n}: PropsWithChildren<{}>): 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, { useEffect, useRef } from 'react'\nimport type { ComponentPropsWithRef, ElementRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { useContent } from '../hooks/use-content'\nimport { StyledIllustrationSlot, StyledRightSlot } from './slots.styled'\nimport type { IconSlotProps } from './icon-slot'\nimport { useItem } from '../hooks/use-item'\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 useEffect(() => {\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\nexport const HotkeySlot = styled(RightSlot, {\n color: '$text-neutrals-subtle',\n})\n\nexport const IllustrationSlot = React.forwardRef<\n ElementRef<typeof StyledIllustrationSlot>,\n IconSlotProps\n>((props, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return <StyledIllustrationSlot ref={forwardRef} {...props} />\n})\n","import { focus } from '@mirohq/design-system-styles'\n\nimport { ItemDescription } from '../partials/item-description'\nimport { IllustrationSlot } from '../partials/slots'\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: 'auto 1fr minmax(auto, var(--right-slot-max-width))',\n gridTemplateRows: '1fr auto',\n gridTemplateAreas: `'left-slot item-text right-slot'\n 'left-slot item-description right-slot'`,\n alignItems: 'start',\n minHeight: '$10',\n padding: '$100 $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 gridTemplateRows: 'auto',\n gridTemplateAreas: `'item-text right-slot'\n 'item-description right-slot'`,\n },\n\n '&:not(:last-child)': {\n marginBottom: '$50',\n },\n '&:not(:first-child)': {\n marginTop: '$50',\n },\n\n ...focus.defaults,\n\n '&:disabled, &[aria-disabled=\"true\"], &[data-disabled]': {\n pointerEvents: 'none',\n [`&, & ${ItemDescription}`]: {\n color: '$text-neutrals-disabled',\n },\n [`& ${IllustrationSlot}`]: {\n filter: 'grayscale(1)',\n },\n },\n\n '&:hover': {\n background: '$background-primary-subtle-hover',\n color: '$text-primary-hover',\n '&:not([aria-disabled=\"true\"])': {\n boxShadow: 'none',\n },\n },\n\n '&:active': {\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 padding: '4px 6px',\n})\n\nexport const StyledCheckboxItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n [`&[data-state=\"checked\"] ${StyledIndicator}`]: {\n color: '$icon-primary',\n },\n [`&[data-state=\"checked\"]:hover ${StyledIndicator}`]: {\n color: '$icon-primary-hover',\n },\n [`\n &[aria-disabled=\"true\"] ${StyledIndicator},\n &[data-disabled] ${StyledIndicator}\n `]: {\n color: '$icon-neutrals-disabled',\n },\n})\n\nexport type StyledCheckboxItemProps = StrictComponentProps<\n typeof StyledCheckboxItem\n>\n","import { useMemo } from 'react'\nimport type { KeyboardEventHandler } from 'react'\nimport type { Booleanish } from '@mirohq/design-system-types'\nimport { booleanify } from '@mirohq/design-system-utils'\n\ninterface AriaDisabledProps extends Object {\n 'aria-disabled'?: Booleanish\n onKeyDown?: KeyboardEventHandler\n onSelect?: (event: Event) => void\n}\n\nexport const useAriaDisabled = (\n { 'aria-disabled': ariaDisabled, onKeyDown, onSelect }: AriaDisabledProps,\n preventDefault: boolean | undefined = false\n): AriaDisabledProps =>\n useMemo(\n () => ({\n 'aria-disabled': booleanify(ariaDisabled) ? ariaDisabled : undefined,\n onKeyDown: e => {\n if (\n booleanify(ariaDisabled) &&\n e.code !== 'ArrowUp' &&\n e.code !== 'ArrowDown'\n ) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n\n onKeyDown?.(e)\n },\n onSelect: e => {\n if (preventDefault) {\n e.preventDefault()\n }\n\n if (booleanify(ariaDisabled)) {\n return\n }\n\n onSelect?.(e)\n },\n }),\n [ariaDisabled, onKeyDown, onSelect, preventDefault]\n )\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { IconCheckMark, IconProhibit } 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 './slots'\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\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const CheckboxItem = React.forwardRef<\n ElementRef<typeof StyledCheckboxItem>,\n CheckboxItemProps\n>(({ children, checked, onChange, disabled, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n const { 'aria-disabled': ariaDisabled } = ariaDisabledProps\n\n return (\n <ItemProvider>\n <StyledCheckboxItem\n {...restProps}\n {...ariaDisabledProps}\n ref={forwardRef}\n checked={checked}\n disabled={disabled}\n onCheckedChange={onChange}\n >\n {children}\n <RightSlot>\n <StyledIndicator>\n {(disabled === true || booleanify(ariaDisabled)) && !checked && (\n <IconProhibit css={{ square: '$3', display: 'block' }} />\n )}\n {checked && (\n <IconCheckMark css={{ square: '$3', display: 'block' }} />\n )}\n </StyledIndicator>\n </RightSlot>\n </StyledCheckboxItem>\n </ItemProvider>\n )\n})\n","import { theme } from '@mirohq/design-system-stitches'\nimport { animations } from '@mirohq/design-system-styles'\n\nexport const CONTENT_GUTTER = parseInt(theme.space[150])\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\n\nexport const contentDefaults = {\n maxWidth: '$125',\n backgroundColor: '$background-neutrals-container',\n borderRadius: '$50',\n boxShadow: '$50',\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: '$dropdownMenu',\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 StyledContent = styled(RadixDropdownMenu.Content, {\n ...contentDefaults,\n\n variants: {\n containerSpacing: {\n small: {\n '&, [role=\"menu\"]': {\n padding: '$50 $150',\n },\n },\n medium: {\n '&, [role=\"menu\"]': {\n padding: '$150',\n },\n },\n large: {\n '&, [role=\"menu\"]': {\n padding: '$150 $300',\n },\n },\n },\n },\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledContent } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { ContentProvider } from '../hooks/use-content'\nimport { CONTENT_OFFSET } from '../styles/content'\nimport type {\n PointerDownOutsideEvent,\n FocusOutsideEvent,\n Side,\n Align,\n StickyBehavior,\n} from '../types'\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Whether keyboard navigation should loop around\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 */\n side?: Side\n\n /**\n * The distance in pixels from the trigger\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 */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with window edges.\n */\n avoidCollisions?: boolean\n\n /**\n * The distance in pixels from window edges where collision detection should\n * occur.\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 */\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 */\n hideWhenDetached?: boolean\n\n /**\n * The spacing around container\n */\n containerSpacing?: StyledContentProps['containerSpacing']\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 ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledContent\n {...restProps}\n ref={forwardRef}\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 containerSpacing={containerSpacing}\n />\n </ContentProvider>\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 },\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 */\n disabled?: boolean\n\n /**\n * Event handler called when the user selects an item (via mouse of keyboard). Calling event.preventDefault in this handler will prevent the dropdown menu 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 behavior will use the .textContent of the item. Use this when the content is complex, or you have non-textual content inside\n */\n textValue?: string\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ disabled = false, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps)\n\n return (\n <ItemProvider>\n <StyledItem\n {...restProps}\n {...ariaDisabledProps}\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'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\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 const ariaDisabledProps = useAriaDisabled(restProps)\n return (\n <Item asChild ref={forwardRef} {...restProps} {...ariaDisabledProps}>\n <a href={href}>{children}</a>\n </Item>\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 StyledRadioGroup = styled(RadixDropdownMenu.RadioGroup, {\n marginY: '$50',\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.span, {\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: '$half',\n margin: '2px 4px',\n})\n\nexport const StyledPill = styled(Primitive.span, {\n display: 'none',\n width: '$2',\n height: '$2',\n borderRadius: '$half',\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 [`&[data-state=\"checked\"] ${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 [`&:hover ${StyledRadioContainer}`]: {\n borderColor: '$border-primary-hover',\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 '&[data-state=\"unchecked\"]': {\n [`\n &[aria-disabled=\"true\"] ${StyledProhibited},\n &[data-disabled] ${StyledProhibited}\n `]: {\n display: 'flex',\n },\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 './slots'\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 */\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const RadioItem = React.forwardRef<\n ElementRef<typeof StyledRadioItem>,\n RadioItemProps\n>(({ disabled = false, children, ...restProps }, forwardRef) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n return (\n <ItemProvider>\n <StyledRadioItem\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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 marginTop: '2px',\n})\n\nexport const StyledSwitchItem = styled(RadixDropdownMenu.CheckboxItem, {\n ...itemDefaults,\n\n [`&[data-state=\"checked\"] ${StyledSwitch}`]: styles.checked,\n [`&[data-state=\"checked\"]:hover ${StyledSwitch}`]: styles.checkedHovered,\n\n [`&:hover ${StyledSwitch}`]: 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 './slots'\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 * Optional text used for typeahead purposes. By default the typeahead behavior will use the .textContent of the item.\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n\nexport const SwitchItem = React.forwardRef<\n ElementRef<typeof StyledSwitchItem>,\n SwitchItemProps\n>(\n (\n { disabled = false, checked, onChange, children, ...restProps },\n forwardRef\n ) => {\n const ariaDisabledProps = useAriaDisabled(restProps, true)\n\n return (\n <ItemProvider>\n <StyledSwitchItem\n {...restProps}\n {...ariaDisabledProps}\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.defaults,\n },\n false: {\n cursor: 'pointer',\n },\n },\n },\n})\n\nexport type StyledTriggerProps = StrictComponentProps<typeof StyledTrigger>\n","import React from 'react'\nimport type { ElementRef, DOMAttributes } from 'react'\n\nimport { StyledTrigger } from './trigger.styled'\nimport type { StyledTriggerProps } from './trigger.styled'\n\nexport interface TriggerProps extends StyledTriggerProps {\n /**\n * temporary the same as onClick, later will be added touch events support\n */\n onPress?: DOMAttributes<HTMLElement>['onClick']\n}\n\nexport const Trigger = React.forwardRef<\n ElementRef<typeof StyledTrigger>,\n TriggerProps\n>(({ asChild = false, onPress, onClick, ...restProps }, forwardRef) => (\n <StyledTrigger\n {...restProps}\n onClick={onPress ?? onClick}\n ref={forwardRef}\n unstyled={!asChild}\n asChild={asChild}\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 marginRight: '-4px',\n})\n\nexport const StyledSubTrigger = styled(RadixDropdownMenu.SubTrigger, {\n ...itemDefaults,\n '&[data-state=\"open\"]': itemDefaults['&:hover'],\n\n [`&[data-state=\"open\"] ${StyledIconContainer}, &:hover ${StyledIconContainer}`]:\n {\n color: '$icon-primary-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 './slots'\nimport { useAriaDisabled } from '../hooks/use-aria-disabled'\n\nexport interface SubTriggerProps extends StyledSubTriggerProps {\n /**\n * Prevents the user from interacting with the switch\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 const { onSelect, ...ariaDisabledProps } = useAriaDisabled({\n onKeyDown: restProps.onKeyDown,\n 'aria-disabled': restProps['aria-disabled'],\n })\n\n return (\n <StyledSubTrigger\n {...restProps}\n {...ariaDisabledProps}\n disabled={disabled}\n ref={forwardRef}\n >\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' weight='thin' />\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'\n\nimport { StyledSubContent } from './sub-content.styled'\nimport { CONTENT_GUTTER, CONTENT_OFFSET } from '../styles/content'\nimport { ContentProvider } from '../hooks/use-content'\nimport type { StyledSubContentProps } from './sub-content.styled'\nimport type { PointerDownOutsideEvent, FocusOutsideEvent } from '../types'\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 */\n sideOffset?: number\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side andalign 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 */\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?: 'partial' | 'always'\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default false\n */\n hideWhenDetached?: boolean\n}\n\n// without CONTENT_GUTTER submenu would overlap the menu\nconst SIDE_OFFSET = CONTENT_GUTTER + CONTENT_OFFSET\n\nexport const SubContent = React.forwardRef<\n ElementRef<typeof StyledSubContent>,\n SubContentProps\n>(\n (\n {\n sideOffset = SIDE_OFFSET,\n alignOffset = -CONTENT_GUTTER,\n collisionPadding = 0,\n loop = false,\n hideWhenDetached = false,\n sticky = 'partial',\n ...restProps\n },\n forwardRef\n ) => (\n <ContentProvider>\n <StyledSubContent\n {...restProps}\n ref={forwardRef}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n collisionPadding={collisionPadding}\n loop={loop}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n />\n </ContentProvider>\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: React.FC<PortalProps> = props => <RadixPortal {...props} />\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nimport { LeftSlot } from './slots.styled'\n\nexport const StyledIconSlot = styled(LeftSlot, {\n paddingTop: '2px',\n\n variants: {\n customIcon: {\n true: {\n square: '$icon-200',\n },\n },\n },\n})\n\nexport type StyledIconSlotProps = StrictComponentProps<typeof StyledIconSlot>\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport type { IconProps } from '@mirohq/design-system-icons'\nimport { isIconComponent } from '@mirohq/design-system-base-icon'\n\nimport type { StyledIconSlotProps } from './icon-slot.styled'\nimport { StyledIconSlot } from './icon-slot.styled'\nimport { useItem } from '../hooks/use-item'\n\nexport type IconSlotProps = Omit<StyledIconSlotProps, 'custom'>\n\nexport const IconSlot = React.forwardRef<\n ElementRef<typeof StyledIconSlot>,\n IconSlotProps\n>(({ children, ...restProps }, forwardRef) => {\n const { leftSlotMount, leftSlotDestroy } = useItem()\n const child = React.Children.only(children) as React.ReactElement\n\n const isIcon = isIconComponent(child)\n\n const formattedChild = isIcon\n ? React.cloneElement<IconProps>(child, {\n ...child.props,\n size: 'small',\n weight: 'thin',\n })\n : child\n\n useEffect(() => {\n leftSlotMount()\n return () => leftSlotDestroy()\n }, [leftSlotMount, leftSlotDestroy])\n\n return (\n <StyledIconSlot ref={forwardRef} {...restProps} customIcon={!isIcon}>\n {formattedChild}\n </StyledIconSlot>\n )\n})\n","import React, { useState } from 'react'\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu'\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 { HotkeySlot, IllustrationSlot } from './partials/slots'\nimport { ItemDescription } from './partials/item-description'\nimport { IconSlot } from './partials/icon-slot'\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 */\n defaultOpen?: boolean\n\n /**\n * The reading direction of submenus when applicable. If omitted, assumes LTR\n * (left-to-right) reading mode.\n */\n direction?: 'ltr' | 'rtl'\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 */\n interactOutside?: boolean\n\n /**\n * The content\n */\n children: React.ReactNode\n}\n\nexport const DropdownMenu: React.FC<DropdownMenuProps> & Partials = ({\n defaultOpen = false,\n direction = 'ltr',\n interactOutside = false,\n open,\n onOpen,\n onClose,\n ...restProps\n}) => {\n const [openState, setOpenState] = useState(defaultOpen)\n\n return (\n <RadixDropdownMenu.Root\n {...restProps}\n dir={direction}\n modal={interactOutside}\n open={open ?? openState}\n onOpenChange={newOpen => {\n if (open == null) {\n setOpenState(newOpen)\n }\n\n newOpen ? onOpen?.() : onClose?.()\n }}\n />\n )\n}\n\n// Partials\n// -----------------------------------------------------------------------------\n\ninterface Partials {\n CheckboxItem: typeof CheckboxItem\n Content: typeof Content\n HotkeySlot: typeof HotkeySlot\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.HotkeySlot = HotkeySlot\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","RadixPortal"],"mappings":"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"}
|