@mirohq/design-system-toolbar 3.1.2-dummy.0 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -12,6 +12,7 @@ var designSystemUsePress = require('@mirohq/design-system-use-press');
12
12
  var designSystemUtils = require('@mirohq/design-system-utils');
13
13
  var designSystemUseAriaDisabled = require('@mirohq/design-system-use-aria-disabled');
14
14
  var designSystemStyles = require('@mirohq/design-system-styles');
15
+ var reactDirection = require('@radix-ui/react-direction');
15
16
 
16
17
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
18
 
@@ -241,6 +242,63 @@ const Item = React__default["default"].forwardRef(
241
242
  }
242
243
  );
243
244
 
245
+ const useToolbarKeyboardNavigation = ({
246
+ orientation = "horizontal",
247
+ dir,
248
+ loop = true,
249
+ onKeyDown
250
+ }) => {
251
+ const localDir = reactDirection.useDirection(dir != null ? dir : "ltr");
252
+ return React.useCallback(
253
+ (event) => {
254
+ var _a, _b, _c;
255
+ const { key, currentTarget } = event;
256
+ const isHorizontal = orientation === "horizontal";
257
+ const isRTL = localDir === "rtl";
258
+ const isForward = isHorizontal && key === (isRTL ? "ArrowLeft" : "ArrowRight") || !isHorizontal && key === "ArrowDown";
259
+ const isBackward = isHorizontal && key === (isRTL ? "ArrowRight" : "ArrowLeft") || !isHorizontal && key === "ArrowUp";
260
+ if (!isForward && !isBackward) {
261
+ onKeyDown == null ? void 0 : onKeyDown(event);
262
+ return;
263
+ }
264
+ const items = Array.from(
265
+ currentTarget.querySelectorAll("[data-radix-collection-item]")
266
+ ).filter((item) => !item.hasAttribute("disabled"));
267
+ const currentIndex = items.findIndex(
268
+ (item) => item.contains(document.activeElement)
269
+ );
270
+ if (items.length === 0 || currentIndex === -1) {
271
+ return onKeyDown == null ? void 0 : onKeyDown(event);
272
+ }
273
+ let nextIndex;
274
+ if (isForward) {
275
+ nextIndex = currentIndex + 1;
276
+ if (nextIndex >= items.length) {
277
+ nextIndex = loop ? 0 : currentIndex;
278
+ }
279
+ } else {
280
+ nextIndex = currentIndex - 1;
281
+ if (nextIndex < 0) {
282
+ nextIndex = loop ? items.length - 1 : currentIndex;
283
+ }
284
+ }
285
+ const currentIsAriaDisabled = ((_a = items[currentIndex]) == null ? void 0 : _a.getAttribute("aria-disabled")) === "true";
286
+ const nextIsAriaDisabled = ((_b = items[nextIndex]) == null ? void 0 : _b.getAttribute("aria-disabled")) === "true";
287
+ if (!currentIsAriaDisabled && !nextIsAriaDisabled) {
288
+ onKeyDown == null ? void 0 : onKeyDown(event);
289
+ return;
290
+ }
291
+ event.preventDefault();
292
+ event.stopPropagation();
293
+ if (nextIndex !== currentIndex) {
294
+ (_c = items[nextIndex]) == null ? void 0 : _c.focus();
295
+ }
296
+ onKeyDown == null ? void 0 : onKeyDown(event);
297
+ },
298
+ [orientation, localDir, loop, onKeyDown]
299
+ );
300
+ };
301
+
244
302
  const Toolbar = React__default["default"].forwardRef(
245
303
  ({
246
304
  unstyled,
@@ -248,9 +306,16 @@ const Toolbar = React__default["default"].forwardRef(
248
306
  variant = "floating",
249
307
  dir = "ltr",
250
308
  loop = true,
309
+ onKeyDown,
251
310
  ...restProps
252
311
  }, forwardRef) => {
253
312
  const variantProp = unstyled === void 0 ? variant : unstyled ? "flat" : "floating";
313
+ const handleKeyDown = useToolbarKeyboardNavigation({
314
+ orientation,
315
+ dir,
316
+ loop,
317
+ onKeyDown
318
+ });
254
319
  return /* @__PURE__ */ jsxRuntime.jsx(
255
320
  StyledToolbar,
256
321
  {
@@ -258,6 +323,7 @@ const Toolbar = React__default["default"].forwardRef(
258
323
  orientation,
259
324
  dir,
260
325
  loop,
326
+ onKeyDown: handleKeyDown,
261
327
  ref: forwardRef,
262
328
  ...restProps
263
329
  }
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/toolbar.styled.ts","../src/partials/base-item.styled.ts","../src/partials/base-item.tsx","../src/styles.ts","../src/partials/icon.styled.tsx","../src/partials/icon.tsx","../src/partials/separator.styled.ts","../src/partials/separator.tsx","../src/partials/link.styled.tsx","../src/partials/link.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/toolbar.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-toolbar'\n\nexport const StyledToolbar = styled(Root, {\n all: 'unset',\n display: 'flex',\n boxSizing: 'border-box',\n alignItems: 'center',\n maxWidth: '100%',\n gap: '$50',\n\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$12',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '$12',\n },\n\n variants: {\n variant: {\n floating: {\n backgroundColor: '$background-neutrals-layout',\n boxShadow: '$elevation-100',\n border: '0.5px solid $border-neutrals-subtle',\n borderRadius: '$100',\n padding: '$50',\n },\n flat: {},\n },\n },\n})\n\nexport type StyledToolbarProps = StrictComponentProps<typeof StyledToolbar>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixToolbar from '@radix-ui/react-toolbar'\n\nexport const StyledBaseItem = styled(RadixToolbar.Button, {\n boxSizing: 'border-box',\n cursor: 'pointer',\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n})\n\nexport type StyledBaseItemProps = StrictComponentProps<typeof StyledBaseItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { mergeProps } from '@react-aria/utils'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport type { PressEvents } from '@mirohq/design-system-use-press'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\nimport { StyledBaseItem } from './base-item.styled'\nimport type { StyledBaseItemProps } from './base-item.styled'\n\nexport interface BaseItemProps\n extends StyledBaseItemProps,\n HoverEvents,\n PressEvents {\n disabled?: boolean\n}\n\nexport const BaseItem = React.forwardRef<\n ElementRef<typeof StyledBaseItem>,\n BaseItemProps\n>(\n (\n {\n disabled = false,\n 'aria-disabled': ariaDisabled,\n asChild,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(\n {\n ...restProps,\n ariaDisabled,\n },\n { allowArrows: true }\n )\n\n const { pressProps } = usePress({\n preventFocusOnPress: 'auto',\n disabled: disabled || booleanify(ariaDisabled),\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n return (\n <StyledBaseItem\n {...mergeProps(pressProps, hoverProps)}\n data-hovered={isHovered ? '' : undefined}\n asChild={asChild}\n disabled={disabled}\n aria-disabled={booleanify(ariaDisabled) ? 'true' : ariaDisabled}\n ref={forwardRef}\n />\n )\n }\n)\n","import { focus } from '@mirohq/design-system-styles'\n\nexport const disabledSelector = '&[disabled], &[aria-disabled=\"true\"]'\n\nexport const sharedStyles = {\n base: {\n backgroundColor: '$transparent',\n borderRadius: '$50',\n height: '$10',\n border: 'none',\n ...focus.css({\n boxShadow: '$focus',\n }),\n '&[disabled]': {\n pointerEvents: 'none',\n },\n '&:not([aria-disabled=\"true\"])': {\n '&[data-hovered]': {\n backgroundColor: '$background-neutrals-hover',\n },\n\n '&:active, &[data-pressed]': {\n backgroundColor: '$background-neutrals-active',\n },\n },\n },\n}\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledIcon = styled(BaseItem, {\n padding: 0,\n font: 'unset',\n width: '$10',\n color: '$icon-neutrals',\n\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$icon-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledIcon } from './icon.styled'\n\nexport interface IconProps extends BaseItemProps {\n /**\n * Renders icon in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Icon = React.forwardRef<ElementRef<typeof StyledIcon>, IconProps>(\n ({ active = false, ...restProps }, forwardRef) => (\n <StyledIcon {...restProps} active={active} ref={forwardRef} />\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Separator } from '@radix-ui/react-toolbar'\n\nexport const StyledSeparator = styled(Separator, {\n all: 'unset',\n display: 'block',\n boxSizing: 'border-box',\n backgroundColor: '$border-neutrals-subtle',\n\n '&[data-orientation=\"vertical\"]': {\n width: '1px',\n height: '$6',\n margin: '0 $50',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '1px',\n width: '$6',\n margin: '$50 0',\n },\n})\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { StyledSeparatorProps } from './separator.styled'\nimport { StyledSeparator } 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 { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledLink = styled(BaseItem, {\n paddingX: '$150',\n\n ...sharedStyles.base,\n color: '$text-primary',\n textDecoration: 'underline solid',\n textDecorationThickness: '1px',\n textUnderlineOffset: '4px',\n outline: 'none',\n\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n})\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledLink } from './link.styled'\n\ntype ItemPropsWithAnchor = Omit<BaseItemProps, 'ref'> &\n AnchorHTMLAttributes<typeof StyledLink>\nexport interface LinkProps extends ItemPropsWithAnchor {}\n\nexport const Link = React.forwardRef<ElementRef<'a'>, LinkProps>(\n ({ children, href, ...restProps }, forwardRef) => (\n <StyledLink {...restProps} asChild>\n <a href={href} ref={forwardRef}>\n {children}\n </a>\n </StyledLink>\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledItem = styled(BaseItem, {\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$text-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { BaseItem } from './base-item'\nimport { StyledItem } from './item.styled'\n\nexport interface ItemProps extends BaseItemProps {\n /**\n * It's applied by default when using with asChild attribute.\n * You can still combine default Item styles with your own component by\n * setting this prop to false.\n * Note: Must be used together with asChild\n * @default true\n */\n unstyled?: boolean\n\n /**\n * Renders item in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ active = false, unstyled = true, asChild, ...restProps }, forwardRef) => {\n const shouldRenderUnstyled = asChild === true ? unstyled : false\n\n if (shouldRenderUnstyled) {\n return <BaseItem {...restProps} asChild={asChild} ref={forwardRef} />\n }\n\n return (\n <StyledItem\n {...restProps}\n asChild={asChild}\n active={active}\n ref={forwardRef}\n />\n )\n }\n)\n","import React from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\n\nimport type { StyledToolbarProps } from './toolbar.styled'\nimport { StyledToolbar } from './toolbar.styled'\nimport { Icon } from './partials/icon'\nimport { Separator } from './partials/separator'\nimport { Link } from './partials/link'\nimport { Item } from './partials/item'\n\nexport interface ToolbarProps extends StyledToolbarProps {\n /**\n * @deprecated Please use variant for non-floating toolbar\n */\n unstyled?: boolean\n\n /**\n * When floating, the toolbar has shadow and border to differentiate it from the surface\n * @default floating\n */\n variant?: StyledToolbarProps['variant']\n\n /**\n * The orientation of the toolbar\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical'\n\n /**\n * The reading direction of the toolbar\n * @default 'ltr'\n */\n dir?: 'ltr' | 'rtl'\n\n /**\n * When true, keyboard navigation will loop from last tab to first, and vice versa\n * @default true\n */\n loop?: boolean\n}\n\nexport const Toolbar = React.forwardRef<\n ElementRef<typeof StyledToolbar>,\n ToolbarProps\n>(\n (\n {\n unstyled,\n orientation = 'horizontal',\n variant = 'floating',\n dir = 'ltr',\n loop = true,\n ...restProps\n },\n forwardRef\n ) => {\n const variantProp =\n unstyled === undefined ? variant : unstyled ? 'flat' : 'floating'\n\n return (\n <StyledToolbar\n variant={variantProp}\n orientation={orientation}\n dir={dir}\n loop={loop}\n ref={forwardRef}\n {...restProps}\n />\n )\n }\n) as ForwardRefExoticComponent<ToolbarProps> & Partials\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Icon: typeof Icon\n Item: typeof Item\n Link: typeof Link\n Separator: typeof Separator\n}\n\nToolbar.Icon = Icon\nToolbar.Item = Item\nToolbar.Link = Link\nToolbar.Separator = Separator\n"],"names":["styled","Root","RadixToolbar","React","useAriaDisabled","usePress","booleanify","useHover","jsx","mergeProps","focus","Separator"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/toolbar.styled.ts","../src/partials/base-item.styled.ts","../src/partials/base-item.tsx","../src/styles.ts","../src/partials/icon.styled.tsx","../src/partials/icon.tsx","../src/partials/separator.styled.ts","../src/partials/separator.tsx","../src/partials/link.styled.tsx","../src/partials/link.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/hooks/use-toolbar-keyboard-navigation.ts","../src/toolbar.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-toolbar'\n\nexport const StyledToolbar = styled(Root, {\n all: 'unset',\n display: 'flex',\n boxSizing: 'border-box',\n alignItems: 'center',\n maxWidth: '100%',\n gap: '$50',\n\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$12',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '$12',\n },\n\n variants: {\n variant: {\n floating: {\n backgroundColor: '$background-neutrals-layout',\n boxShadow: '$elevation-100',\n border: '0.5px solid $border-neutrals-subtle',\n borderRadius: '$100',\n padding: '$50',\n },\n flat: {},\n },\n },\n})\n\nexport type StyledToolbarProps = StrictComponentProps<typeof StyledToolbar>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixToolbar from '@radix-ui/react-toolbar'\n\nexport const StyledBaseItem = styled(RadixToolbar.Button, {\n boxSizing: 'border-box',\n cursor: 'pointer',\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n})\n\nexport type StyledBaseItemProps = StrictComponentProps<typeof StyledBaseItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { mergeProps } from '@react-aria/utils'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport type { PressEvents } from '@mirohq/design-system-use-press'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\nimport { StyledBaseItem } from './base-item.styled'\nimport type { StyledBaseItemProps } from './base-item.styled'\n\nexport interface BaseItemProps\n extends StyledBaseItemProps,\n HoverEvents,\n PressEvents {\n disabled?: boolean\n}\n\nexport const BaseItem = React.forwardRef<\n ElementRef<typeof StyledBaseItem>,\n BaseItemProps\n>(\n (\n {\n disabled = false,\n 'aria-disabled': ariaDisabled,\n asChild,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(\n {\n ...restProps,\n ariaDisabled,\n },\n { allowArrows: true }\n )\n\n const { pressProps } = usePress({\n preventFocusOnPress: 'auto',\n disabled: disabled || booleanify(ariaDisabled),\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n return (\n <StyledBaseItem\n {...mergeProps(pressProps, hoverProps)}\n data-hovered={isHovered ? '' : undefined}\n asChild={asChild}\n disabled={disabled}\n aria-disabled={booleanify(ariaDisabled) ? 'true' : ariaDisabled}\n ref={forwardRef}\n />\n )\n }\n)\n","import { focus } from '@mirohq/design-system-styles'\n\nexport const disabledSelector = '&[disabled], &[aria-disabled=\"true\"]'\n\nexport const sharedStyles = {\n base: {\n backgroundColor: '$transparent',\n borderRadius: '$50',\n height: '$10',\n border: 'none',\n ...focus.css({\n boxShadow: '$focus',\n }),\n '&[disabled]': {\n pointerEvents: 'none',\n },\n '&:not([aria-disabled=\"true\"])': {\n '&[data-hovered]': {\n backgroundColor: '$background-neutrals-hover',\n },\n\n '&:active, &[data-pressed]': {\n backgroundColor: '$background-neutrals-active',\n },\n },\n },\n}\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledIcon = styled(BaseItem, {\n padding: 0,\n font: 'unset',\n width: '$10',\n color: '$icon-neutrals',\n\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$icon-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledIcon } from './icon.styled'\n\nexport interface IconProps extends BaseItemProps {\n /**\n * Renders icon in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Icon = React.forwardRef<ElementRef<typeof StyledIcon>, IconProps>(\n ({ active = false, ...restProps }, forwardRef) => (\n <StyledIcon {...restProps} active={active} ref={forwardRef} />\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Separator } from '@radix-ui/react-toolbar'\n\nexport const StyledSeparator = styled(Separator, {\n all: 'unset',\n display: 'block',\n boxSizing: 'border-box',\n backgroundColor: '$border-neutrals-subtle',\n\n '&[data-orientation=\"vertical\"]': {\n width: '1px',\n height: '$6',\n margin: '0 $50',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '1px',\n width: '$6',\n margin: '$50 0',\n },\n})\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { StyledSeparatorProps } from './separator.styled'\nimport { StyledSeparator } 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 { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledLink = styled(BaseItem, {\n paddingX: '$150',\n\n ...sharedStyles.base,\n color: '$text-primary',\n textDecoration: 'underline solid',\n textDecorationThickness: '1px',\n textUnderlineOffset: '4px',\n outline: 'none',\n\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n})\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledLink } from './link.styled'\n\ntype ItemPropsWithAnchor = Omit<BaseItemProps, 'ref'> &\n AnchorHTMLAttributes<typeof StyledLink>\nexport interface LinkProps extends ItemPropsWithAnchor {}\n\nexport const Link = React.forwardRef<ElementRef<'a'>, LinkProps>(\n ({ children, href, ...restProps }, forwardRef) => (\n <StyledLink {...restProps} asChild>\n <a href={href} ref={forwardRef}>\n {children}\n </a>\n </StyledLink>\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledItem = styled(BaseItem, {\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$text-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { BaseItem } from './base-item'\nimport { StyledItem } from './item.styled'\n\nexport interface ItemProps extends BaseItemProps {\n /**\n * It's applied by default when using with asChild attribute.\n * You can still combine default Item styles with your own component by\n * setting this prop to false.\n * Note: Must be used together with asChild\n * @default true\n */\n unstyled?: boolean\n\n /**\n * Renders item in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ active = false, unstyled = true, asChild, ...restProps }, forwardRef) => {\n const shouldRenderUnstyled = asChild === true ? unstyled : false\n\n if (shouldRenderUnstyled) {\n return <BaseItem {...restProps} asChild={asChild} ref={forwardRef} />\n }\n\n return (\n <StyledItem\n {...restProps}\n asChild={asChild}\n active={active}\n ref={forwardRef}\n />\n )\n }\n)\n","import { useCallback } from 'react'\nimport type { KeyboardEvent } from 'react'\nimport { useDirection } from '@radix-ui/react-direction'\n\ninterface UseToolbarKeyboardNavigationProps {\n orientation?: 'horizontal' | 'vertical'\n dir?: 'ltr' | 'rtl'\n loop?: boolean\n onKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void\n}\n\n/**\n * Custom keyboard navigation for Radix Toolbar that allows navigation to aria-disabled items.\n *\n * By default, Radix UI Toolbar skips items with aria-disabled=\"true\" during keyboard navigation.\n * This hook intercepts arrow key events and manually handles focus management when aria-disabled\n * items are involved, while delegating to Radix for normal navigation.\n */\nexport const useToolbarKeyboardNavigation = ({\n orientation = 'horizontal',\n dir,\n loop = true,\n onKeyDown,\n}: UseToolbarKeyboardNavigationProps): ((\n event: KeyboardEvent<HTMLDivElement>\n) => void) => {\n const localDir = useDirection(dir ?? 'ltr')\n\n return useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key, currentTarget } = event\n const isHorizontal = orientation === 'horizontal'\n const isRTL = localDir === 'rtl'\n\n const isForward =\n (isHorizontal && key === (isRTL ? 'ArrowLeft' : 'ArrowRight')) ||\n (!isHorizontal && key === 'ArrowDown')\n\n const isBackward =\n (isHorizontal && key === (isRTL ? 'ArrowRight' : 'ArrowLeft')) ||\n (!isHorizontal && key === 'ArrowUp')\n\n if (!isForward && !isBackward) {\n onKeyDown?.(event)\n return\n }\n\n // Find all navigable items (using Radix's collection attribute)\n const items = Array.from(\n currentTarget.querySelectorAll('[data-radix-collection-item]')\n ).filter(item => !item.hasAttribute('disabled')) as HTMLElement[]\n\n // Find currently focused item\n const currentIndex = items.findIndex(item =>\n item.contains(document.activeElement)\n )\n\n if (items.length === 0 || currentIndex === -1) {\n return onKeyDown?.(event)\n }\n\n // Calculate next item index\n let nextIndex: number\n if (isForward) {\n nextIndex = currentIndex + 1\n if (nextIndex >= items.length) {\n nextIndex = loop ? 0 : currentIndex\n }\n } else {\n nextIndex = currentIndex - 1\n if (nextIndex < 0) {\n nextIndex = loop ? items.length - 1 : currentIndex\n }\n }\n\n // Check if aria-disabled items are involved\n const currentIsAriaDisabled =\n items[currentIndex]?.getAttribute('aria-disabled') === 'true'\n const nextIsAriaDisabled =\n items[nextIndex]?.getAttribute('aria-disabled') === 'true'\n\n // Only override Radix if aria-disabled items are involved\n // Otherwise, let Radix handle it with all their edge cases and optimizations\n if (!currentIsAriaDisabled && !nextIsAriaDisabled) {\n onKeyDown?.(event)\n return\n }\n\n // Take control: prevent Radix's handler and manually move focus\n event.preventDefault()\n event.stopPropagation()\n\n if (nextIndex !== currentIndex) {\n items[nextIndex]?.focus()\n }\n\n onKeyDown?.(event)\n },\n [orientation, localDir, loop, onKeyDown]\n )\n}\n","import React from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\n\nimport type { StyledToolbarProps } from './toolbar.styled'\nimport { StyledToolbar } from './toolbar.styled'\nimport { Icon } from './partials/icon'\nimport { Separator } from './partials/separator'\nimport { Link } from './partials/link'\nimport { Item } from './partials/item'\nimport { useToolbarKeyboardNavigation } from './hooks/use-toolbar-keyboard-navigation'\n\nexport interface ToolbarProps extends StyledToolbarProps {\n /**\n * @deprecated Please use variant for non-floating toolbar\n */\n unstyled?: boolean\n\n /**\n * When floating, the toolbar has shadow and border to differentiate it from the surface\n * @default floating\n */\n variant?: StyledToolbarProps['variant']\n\n /**\n * The orientation of the toolbar\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical'\n\n /**\n * The reading direction of the toolbar\n * @default 'ltr'\n */\n dir?: 'ltr' | 'rtl'\n\n /**\n * When true, keyboard navigation will loop from last tab to first, and vice versa\n * @default true\n */\n loop?: boolean\n}\n\nexport const Toolbar = React.forwardRef<\n ElementRef<typeof StyledToolbar>,\n ToolbarProps\n>(\n (\n {\n unstyled,\n orientation = 'horizontal',\n variant = 'floating',\n dir = 'ltr',\n loop = true,\n onKeyDown,\n ...restProps\n },\n forwardRef\n ) => {\n const variantProp =\n unstyled === undefined ? variant : unstyled ? 'flat' : 'floating'\n\n const handleKeyDown = useToolbarKeyboardNavigation({\n orientation,\n dir,\n loop,\n onKeyDown,\n })\n\n return (\n <StyledToolbar\n variant={variantProp}\n orientation={orientation}\n dir={dir}\n loop={loop}\n onKeyDown={handleKeyDown}\n ref={forwardRef}\n {...restProps}\n />\n )\n }\n) as ForwardRefExoticComponent<ToolbarProps> & Partials\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Icon: typeof Icon\n Item: typeof Item\n Link: typeof Link\n Separator: typeof Separator\n}\n\nToolbar.Icon = Icon\nToolbar.Item = Item\nToolbar.Link = Link\nToolbar.Separator = Separator\n"],"names":["styled","Root","RadixToolbar","React","useAriaDisabled","usePress","booleanify","useHover","jsx","mergeProps","focus","Separator","useDirection","useCallback"],"mappings":"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"}
package/dist/module.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import React from 'react';
2
+ import React, { useCallback } from 'react';
3
3
  import { styled } from '@mirohq/design-system-stitches';
4
4
  import * as RadixToolbar from '@radix-ui/react-toolbar';
5
5
  import { Root, Separator as Separator$1 } from '@radix-ui/react-toolbar';
@@ -9,6 +9,7 @@ import { usePress } from '@mirohq/design-system-use-press';
9
9
  import { booleanify } from '@mirohq/design-system-utils';
10
10
  import { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled';
11
11
  import { focus } from '@mirohq/design-system-styles';
12
+ import { useDirection } from '@radix-ui/react-direction';
12
13
 
13
14
  const StyledToolbar = styled(Root, {
14
15
  all: "unset",
@@ -215,6 +216,63 @@ const Item = React.forwardRef(
215
216
  }
216
217
  );
217
218
 
219
+ const useToolbarKeyboardNavigation = ({
220
+ orientation = "horizontal",
221
+ dir,
222
+ loop = true,
223
+ onKeyDown
224
+ }) => {
225
+ const localDir = useDirection(dir != null ? dir : "ltr");
226
+ return useCallback(
227
+ (event) => {
228
+ var _a, _b, _c;
229
+ const { key, currentTarget } = event;
230
+ const isHorizontal = orientation === "horizontal";
231
+ const isRTL = localDir === "rtl";
232
+ const isForward = isHorizontal && key === (isRTL ? "ArrowLeft" : "ArrowRight") || !isHorizontal && key === "ArrowDown";
233
+ const isBackward = isHorizontal && key === (isRTL ? "ArrowRight" : "ArrowLeft") || !isHorizontal && key === "ArrowUp";
234
+ if (!isForward && !isBackward) {
235
+ onKeyDown == null ? void 0 : onKeyDown(event);
236
+ return;
237
+ }
238
+ const items = Array.from(
239
+ currentTarget.querySelectorAll("[data-radix-collection-item]")
240
+ ).filter((item) => !item.hasAttribute("disabled"));
241
+ const currentIndex = items.findIndex(
242
+ (item) => item.contains(document.activeElement)
243
+ );
244
+ if (items.length === 0 || currentIndex === -1) {
245
+ return onKeyDown == null ? void 0 : onKeyDown(event);
246
+ }
247
+ let nextIndex;
248
+ if (isForward) {
249
+ nextIndex = currentIndex + 1;
250
+ if (nextIndex >= items.length) {
251
+ nextIndex = loop ? 0 : currentIndex;
252
+ }
253
+ } else {
254
+ nextIndex = currentIndex - 1;
255
+ if (nextIndex < 0) {
256
+ nextIndex = loop ? items.length - 1 : currentIndex;
257
+ }
258
+ }
259
+ const currentIsAriaDisabled = ((_a = items[currentIndex]) == null ? void 0 : _a.getAttribute("aria-disabled")) === "true";
260
+ const nextIsAriaDisabled = ((_b = items[nextIndex]) == null ? void 0 : _b.getAttribute("aria-disabled")) === "true";
261
+ if (!currentIsAriaDisabled && !nextIsAriaDisabled) {
262
+ onKeyDown == null ? void 0 : onKeyDown(event);
263
+ return;
264
+ }
265
+ event.preventDefault();
266
+ event.stopPropagation();
267
+ if (nextIndex !== currentIndex) {
268
+ (_c = items[nextIndex]) == null ? void 0 : _c.focus();
269
+ }
270
+ onKeyDown == null ? void 0 : onKeyDown(event);
271
+ },
272
+ [orientation, localDir, loop, onKeyDown]
273
+ );
274
+ };
275
+
218
276
  const Toolbar = React.forwardRef(
219
277
  ({
220
278
  unstyled,
@@ -222,9 +280,16 @@ const Toolbar = React.forwardRef(
222
280
  variant = "floating",
223
281
  dir = "ltr",
224
282
  loop = true,
283
+ onKeyDown,
225
284
  ...restProps
226
285
  }, forwardRef) => {
227
286
  const variantProp = unstyled === void 0 ? variant : unstyled ? "flat" : "floating";
287
+ const handleKeyDown = useToolbarKeyboardNavigation({
288
+ orientation,
289
+ dir,
290
+ loop,
291
+ onKeyDown
292
+ });
228
293
  return /* @__PURE__ */ jsx(
229
294
  StyledToolbar,
230
295
  {
@@ -232,6 +297,7 @@ const Toolbar = React.forwardRef(
232
297
  orientation,
233
298
  dir,
234
299
  loop,
300
+ onKeyDown: handleKeyDown,
235
301
  ref: forwardRef,
236
302
  ...restProps
237
303
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../src/toolbar.styled.ts","../src/partials/base-item.styled.ts","../src/partials/base-item.tsx","../src/styles.ts","../src/partials/icon.styled.tsx","../src/partials/icon.tsx","../src/partials/separator.styled.ts","../src/partials/separator.tsx","../src/partials/link.styled.tsx","../src/partials/link.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/toolbar.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-toolbar'\n\nexport const StyledToolbar = styled(Root, {\n all: 'unset',\n display: 'flex',\n boxSizing: 'border-box',\n alignItems: 'center',\n maxWidth: '100%',\n gap: '$50',\n\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$12',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '$12',\n },\n\n variants: {\n variant: {\n floating: {\n backgroundColor: '$background-neutrals-layout',\n boxShadow: '$elevation-100',\n border: '0.5px solid $border-neutrals-subtle',\n borderRadius: '$100',\n padding: '$50',\n },\n flat: {},\n },\n },\n})\n\nexport type StyledToolbarProps = StrictComponentProps<typeof StyledToolbar>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixToolbar from '@radix-ui/react-toolbar'\n\nexport const StyledBaseItem = styled(RadixToolbar.Button, {\n boxSizing: 'border-box',\n cursor: 'pointer',\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n})\n\nexport type StyledBaseItemProps = StrictComponentProps<typeof StyledBaseItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { mergeProps } from '@react-aria/utils'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport type { PressEvents } from '@mirohq/design-system-use-press'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\nimport { StyledBaseItem } from './base-item.styled'\nimport type { StyledBaseItemProps } from './base-item.styled'\n\nexport interface BaseItemProps\n extends StyledBaseItemProps,\n HoverEvents,\n PressEvents {\n disabled?: boolean\n}\n\nexport const BaseItem = React.forwardRef<\n ElementRef<typeof StyledBaseItem>,\n BaseItemProps\n>(\n (\n {\n disabled = false,\n 'aria-disabled': ariaDisabled,\n asChild,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(\n {\n ...restProps,\n ariaDisabled,\n },\n { allowArrows: true }\n )\n\n const { pressProps } = usePress({\n preventFocusOnPress: 'auto',\n disabled: disabled || booleanify(ariaDisabled),\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n return (\n <StyledBaseItem\n {...mergeProps(pressProps, hoverProps)}\n data-hovered={isHovered ? '' : undefined}\n asChild={asChild}\n disabled={disabled}\n aria-disabled={booleanify(ariaDisabled) ? 'true' : ariaDisabled}\n ref={forwardRef}\n />\n )\n }\n)\n","import { focus } from '@mirohq/design-system-styles'\n\nexport const disabledSelector = '&[disabled], &[aria-disabled=\"true\"]'\n\nexport const sharedStyles = {\n base: {\n backgroundColor: '$transparent',\n borderRadius: '$50',\n height: '$10',\n border: 'none',\n ...focus.css({\n boxShadow: '$focus',\n }),\n '&[disabled]': {\n pointerEvents: 'none',\n },\n '&:not([aria-disabled=\"true\"])': {\n '&[data-hovered]': {\n backgroundColor: '$background-neutrals-hover',\n },\n\n '&:active, &[data-pressed]': {\n backgroundColor: '$background-neutrals-active',\n },\n },\n },\n}\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledIcon = styled(BaseItem, {\n padding: 0,\n font: 'unset',\n width: '$10',\n color: '$icon-neutrals',\n\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$icon-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledIcon } from './icon.styled'\n\nexport interface IconProps extends BaseItemProps {\n /**\n * Renders icon in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Icon = React.forwardRef<ElementRef<typeof StyledIcon>, IconProps>(\n ({ active = false, ...restProps }, forwardRef) => (\n <StyledIcon {...restProps} active={active} ref={forwardRef} />\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Separator } from '@radix-ui/react-toolbar'\n\nexport const StyledSeparator = styled(Separator, {\n all: 'unset',\n display: 'block',\n boxSizing: 'border-box',\n backgroundColor: '$border-neutrals-subtle',\n\n '&[data-orientation=\"vertical\"]': {\n width: '1px',\n height: '$6',\n margin: '0 $50',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '1px',\n width: '$6',\n margin: '$50 0',\n },\n})\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { StyledSeparatorProps } from './separator.styled'\nimport { StyledSeparator } 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 { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledLink = styled(BaseItem, {\n paddingX: '$150',\n\n ...sharedStyles.base,\n color: '$text-primary',\n textDecoration: 'underline solid',\n textDecorationThickness: '1px',\n textUnderlineOffset: '4px',\n outline: 'none',\n\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n})\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledLink } from './link.styled'\n\ntype ItemPropsWithAnchor = Omit<BaseItemProps, 'ref'> &\n AnchorHTMLAttributes<typeof StyledLink>\nexport interface LinkProps extends ItemPropsWithAnchor {}\n\nexport const Link = React.forwardRef<ElementRef<'a'>, LinkProps>(\n ({ children, href, ...restProps }, forwardRef) => (\n <StyledLink {...restProps} asChild>\n <a href={href} ref={forwardRef}>\n {children}\n </a>\n </StyledLink>\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledItem = styled(BaseItem, {\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$text-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { BaseItem } from './base-item'\nimport { StyledItem } from './item.styled'\n\nexport interface ItemProps extends BaseItemProps {\n /**\n * It's applied by default when using with asChild attribute.\n * You can still combine default Item styles with your own component by\n * setting this prop to false.\n * Note: Must be used together with asChild\n * @default true\n */\n unstyled?: boolean\n\n /**\n * Renders item in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ active = false, unstyled = true, asChild, ...restProps }, forwardRef) => {\n const shouldRenderUnstyled = asChild === true ? unstyled : false\n\n if (shouldRenderUnstyled) {\n return <BaseItem {...restProps} asChild={asChild} ref={forwardRef} />\n }\n\n return (\n <StyledItem\n {...restProps}\n asChild={asChild}\n active={active}\n ref={forwardRef}\n />\n )\n }\n)\n","import React from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\n\nimport type { StyledToolbarProps } from './toolbar.styled'\nimport { StyledToolbar } from './toolbar.styled'\nimport { Icon } from './partials/icon'\nimport { Separator } from './partials/separator'\nimport { Link } from './partials/link'\nimport { Item } from './partials/item'\n\nexport interface ToolbarProps extends StyledToolbarProps {\n /**\n * @deprecated Please use variant for non-floating toolbar\n */\n unstyled?: boolean\n\n /**\n * When floating, the toolbar has shadow and border to differentiate it from the surface\n * @default floating\n */\n variant?: StyledToolbarProps['variant']\n\n /**\n * The orientation of the toolbar\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical'\n\n /**\n * The reading direction of the toolbar\n * @default 'ltr'\n */\n dir?: 'ltr' | 'rtl'\n\n /**\n * When true, keyboard navigation will loop from last tab to first, and vice versa\n * @default true\n */\n loop?: boolean\n}\n\nexport const Toolbar = React.forwardRef<\n ElementRef<typeof StyledToolbar>,\n ToolbarProps\n>(\n (\n {\n unstyled,\n orientation = 'horizontal',\n variant = 'floating',\n dir = 'ltr',\n loop = true,\n ...restProps\n },\n forwardRef\n ) => {\n const variantProp =\n unstyled === undefined ? variant : unstyled ? 'flat' : 'floating'\n\n return (\n <StyledToolbar\n variant={variantProp}\n orientation={orientation}\n dir={dir}\n loop={loop}\n ref={forwardRef}\n {...restProps}\n />\n )\n }\n) as ForwardRefExoticComponent<ToolbarProps> & Partials\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Icon: typeof Icon\n Item: typeof Item\n Link: typeof Link\n Separator: typeof Separator\n}\n\nToolbar.Icon = Icon\nToolbar.Item = Item\nToolbar.Link = Link\nToolbar.Separator = Separator\n"],"names":["Separator"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../src/toolbar.styled.ts","../src/partials/base-item.styled.ts","../src/partials/base-item.tsx","../src/styles.ts","../src/partials/icon.styled.tsx","../src/partials/icon.tsx","../src/partials/separator.styled.ts","../src/partials/separator.tsx","../src/partials/link.styled.tsx","../src/partials/link.tsx","../src/partials/item.styled.tsx","../src/partials/item.tsx","../src/hooks/use-toolbar-keyboard-navigation.ts","../src/toolbar.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-toolbar'\n\nexport const StyledToolbar = styled(Root, {\n all: 'unset',\n display: 'flex',\n boxSizing: 'border-box',\n alignItems: 'center',\n maxWidth: '100%',\n gap: '$50',\n\n '&[data-orientation=\"vertical\"]': {\n flexDirection: 'column',\n width: '$12',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '$12',\n },\n\n variants: {\n variant: {\n floating: {\n backgroundColor: '$background-neutrals-layout',\n boxShadow: '$elevation-100',\n border: '0.5px solid $border-neutrals-subtle',\n borderRadius: '$100',\n padding: '$50',\n },\n flat: {},\n },\n },\n})\n\nexport type StyledToolbarProps = StrictComponentProps<typeof StyledToolbar>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixToolbar from '@radix-ui/react-toolbar'\n\nexport const StyledBaseItem = styled(RadixToolbar.Button, {\n boxSizing: 'border-box',\n cursor: 'pointer',\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n\n '&[tabindex=\"0\"]': {\n zIndex: '1',\n },\n})\n\nexport type StyledBaseItemProps = StrictComponentProps<typeof StyledBaseItem>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useHover } from '@react-aria/interactions'\nimport type { HoverEvents } from '@react-types/shared'\nimport { mergeProps } from '@react-aria/utils'\nimport { usePress } from '@mirohq/design-system-use-press'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport type { PressEvents } from '@mirohq/design-system-use-press'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\n\nimport { StyledBaseItem } from './base-item.styled'\nimport type { StyledBaseItemProps } from './base-item.styled'\n\nexport interface BaseItemProps\n extends StyledBaseItemProps,\n HoverEvents,\n PressEvents {\n disabled?: boolean\n}\n\nexport const BaseItem = React.forwardRef<\n ElementRef<typeof StyledBaseItem>,\n BaseItemProps\n>(\n (\n {\n disabled = false,\n 'aria-disabled': ariaDisabled,\n asChild,\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n ...restProps\n },\n forwardRef\n ) => {\n const elementProps = useAriaDisabled(\n {\n ...restProps,\n ariaDisabled,\n },\n { allowArrows: true }\n )\n\n const { pressProps } = usePress({\n preventFocusOnPress: 'auto',\n disabled: disabled || booleanify(ariaDisabled),\n ...elementProps,\n })\n\n const { hoverProps, isHovered } = useHover({\n onHoverStart,\n onHoverEnd,\n onHoverChange,\n })\n\n return (\n <StyledBaseItem\n {...mergeProps(pressProps, hoverProps)}\n data-hovered={isHovered ? '' : undefined}\n asChild={asChild}\n disabled={disabled}\n aria-disabled={booleanify(ariaDisabled) ? 'true' : ariaDisabled}\n ref={forwardRef}\n />\n )\n }\n)\n","import { focus } from '@mirohq/design-system-styles'\n\nexport const disabledSelector = '&[disabled], &[aria-disabled=\"true\"]'\n\nexport const sharedStyles = {\n base: {\n backgroundColor: '$transparent',\n borderRadius: '$50',\n height: '$10',\n border: 'none',\n ...focus.css({\n boxShadow: '$focus',\n }),\n '&[disabled]': {\n pointerEvents: 'none',\n },\n '&:not([aria-disabled=\"true\"])': {\n '&[data-hovered]': {\n backgroundColor: '$background-neutrals-hover',\n },\n\n '&:active, &[data-pressed]': {\n backgroundColor: '$background-neutrals-active',\n },\n },\n },\n}\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledIcon = styled(BaseItem, {\n padding: 0,\n font: 'unset',\n width: '$10',\n color: '$icon-neutrals',\n\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$icon-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$icon-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledIcon } from './icon.styled'\n\nexport interface IconProps extends BaseItemProps {\n /**\n * Renders icon in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Icon = React.forwardRef<ElementRef<typeof StyledIcon>, IconProps>(\n ({ active = false, ...restProps }, forwardRef) => (\n <StyledIcon {...restProps} active={active} ref={forwardRef} />\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Separator } from '@radix-ui/react-toolbar'\n\nexport const StyledSeparator = styled(Separator, {\n all: 'unset',\n display: 'block',\n boxSizing: 'border-box',\n backgroundColor: '$border-neutrals-subtle',\n\n '&[data-orientation=\"vertical\"]': {\n width: '1px',\n height: '$6',\n margin: '0 $50',\n },\n\n '&[data-orientation=\"horizontal\"]': {\n height: '1px',\n width: '$6',\n margin: '$50 0',\n },\n})\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { StyledSeparatorProps } from './separator.styled'\nimport { StyledSeparator } 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 { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledLink = styled(BaseItem, {\n paddingX: '$150',\n\n ...sharedStyles.base,\n color: '$text-primary',\n textDecoration: 'underline solid',\n textDecorationThickness: '1px',\n textUnderlineOffset: '4px',\n outline: 'none',\n\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n})\n","import React from 'react'\nimport type { ElementRef, AnchorHTMLAttributes } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { StyledLink } from './link.styled'\n\ntype ItemPropsWithAnchor = Omit<BaseItemProps, 'ref'> &\n AnchorHTMLAttributes<typeof StyledLink>\nexport interface LinkProps extends ItemPropsWithAnchor {}\n\nexport const Link = React.forwardRef<ElementRef<'a'>, LinkProps>(\n ({ children, href, ...restProps }, forwardRef) => (\n <StyledLink {...restProps} asChild>\n <a href={href} ref={forwardRef}>\n {children}\n </a>\n </StyledLink>\n )\n)\n","import { styled } from '@mirohq/design-system-stitches'\n\nimport { BaseItem } from './base-item'\nimport { disabledSelector, sharedStyles } from '../styles'\n\nexport const StyledItem = styled(BaseItem, {\n ...sharedStyles.base,\n\n variants: {\n active: {\n true: {\n backgroundColor: '$background-primary-subtle-selected',\n color: '$text-primary-selected',\n },\n false: {\n [disabledSelector]: {\n pointerEvents: 'none',\n color: '$text-neutrals-disabled',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport type { BaseItemProps } from './base-item'\nimport { BaseItem } from './base-item'\nimport { StyledItem } from './item.styled'\n\nexport interface ItemProps extends BaseItemProps {\n /**\n * It's applied by default when using with asChild attribute.\n * You can still combine default Item styles with your own component by\n * setting this prop to false.\n * Note: Must be used together with asChild\n * @default true\n */\n unstyled?: boolean\n\n /**\n * Renders item in enabled/toggled state.\n * @default false\n */\n active?: boolean\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n ({ active = false, unstyled = true, asChild, ...restProps }, forwardRef) => {\n const shouldRenderUnstyled = asChild === true ? unstyled : false\n\n if (shouldRenderUnstyled) {\n return <BaseItem {...restProps} asChild={asChild} ref={forwardRef} />\n }\n\n return (\n <StyledItem\n {...restProps}\n asChild={asChild}\n active={active}\n ref={forwardRef}\n />\n )\n }\n)\n","import { useCallback } from 'react'\nimport type { KeyboardEvent } from 'react'\nimport { useDirection } from '@radix-ui/react-direction'\n\ninterface UseToolbarKeyboardNavigationProps {\n orientation?: 'horizontal' | 'vertical'\n dir?: 'ltr' | 'rtl'\n loop?: boolean\n onKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void\n}\n\n/**\n * Custom keyboard navigation for Radix Toolbar that allows navigation to aria-disabled items.\n *\n * By default, Radix UI Toolbar skips items with aria-disabled=\"true\" during keyboard navigation.\n * This hook intercepts arrow key events and manually handles focus management when aria-disabled\n * items are involved, while delegating to Radix for normal navigation.\n */\nexport const useToolbarKeyboardNavigation = ({\n orientation = 'horizontal',\n dir,\n loop = true,\n onKeyDown,\n}: UseToolbarKeyboardNavigationProps): ((\n event: KeyboardEvent<HTMLDivElement>\n) => void) => {\n const localDir = useDirection(dir ?? 'ltr')\n\n return useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key, currentTarget } = event\n const isHorizontal = orientation === 'horizontal'\n const isRTL = localDir === 'rtl'\n\n const isForward =\n (isHorizontal && key === (isRTL ? 'ArrowLeft' : 'ArrowRight')) ||\n (!isHorizontal && key === 'ArrowDown')\n\n const isBackward =\n (isHorizontal && key === (isRTL ? 'ArrowRight' : 'ArrowLeft')) ||\n (!isHorizontal && key === 'ArrowUp')\n\n if (!isForward && !isBackward) {\n onKeyDown?.(event)\n return\n }\n\n // Find all navigable items (using Radix's collection attribute)\n const items = Array.from(\n currentTarget.querySelectorAll('[data-radix-collection-item]')\n ).filter(item => !item.hasAttribute('disabled')) as HTMLElement[]\n\n // Find currently focused item\n const currentIndex = items.findIndex(item =>\n item.contains(document.activeElement)\n )\n\n if (items.length === 0 || currentIndex === -1) {\n return onKeyDown?.(event)\n }\n\n // Calculate next item index\n let nextIndex: number\n if (isForward) {\n nextIndex = currentIndex + 1\n if (nextIndex >= items.length) {\n nextIndex = loop ? 0 : currentIndex\n }\n } else {\n nextIndex = currentIndex - 1\n if (nextIndex < 0) {\n nextIndex = loop ? items.length - 1 : currentIndex\n }\n }\n\n // Check if aria-disabled items are involved\n const currentIsAriaDisabled =\n items[currentIndex]?.getAttribute('aria-disabled') === 'true'\n const nextIsAriaDisabled =\n items[nextIndex]?.getAttribute('aria-disabled') === 'true'\n\n // Only override Radix if aria-disabled items are involved\n // Otherwise, let Radix handle it with all their edge cases and optimizations\n if (!currentIsAriaDisabled && !nextIsAriaDisabled) {\n onKeyDown?.(event)\n return\n }\n\n // Take control: prevent Radix's handler and manually move focus\n event.preventDefault()\n event.stopPropagation()\n\n if (nextIndex !== currentIndex) {\n items[nextIndex]?.focus()\n }\n\n onKeyDown?.(event)\n },\n [orientation, localDir, loop, onKeyDown]\n )\n}\n","import React from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\n\nimport type { StyledToolbarProps } from './toolbar.styled'\nimport { StyledToolbar } from './toolbar.styled'\nimport { Icon } from './partials/icon'\nimport { Separator } from './partials/separator'\nimport { Link } from './partials/link'\nimport { Item } from './partials/item'\nimport { useToolbarKeyboardNavigation } from './hooks/use-toolbar-keyboard-navigation'\n\nexport interface ToolbarProps extends StyledToolbarProps {\n /**\n * @deprecated Please use variant for non-floating toolbar\n */\n unstyled?: boolean\n\n /**\n * When floating, the toolbar has shadow and border to differentiate it from the surface\n * @default floating\n */\n variant?: StyledToolbarProps['variant']\n\n /**\n * The orientation of the toolbar\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical'\n\n /**\n * The reading direction of the toolbar\n * @default 'ltr'\n */\n dir?: 'ltr' | 'rtl'\n\n /**\n * When true, keyboard navigation will loop from last tab to first, and vice versa\n * @default true\n */\n loop?: boolean\n}\n\nexport const Toolbar = React.forwardRef<\n ElementRef<typeof StyledToolbar>,\n ToolbarProps\n>(\n (\n {\n unstyled,\n orientation = 'horizontal',\n variant = 'floating',\n dir = 'ltr',\n loop = true,\n onKeyDown,\n ...restProps\n },\n forwardRef\n ) => {\n const variantProp =\n unstyled === undefined ? variant : unstyled ? 'flat' : 'floating'\n\n const handleKeyDown = useToolbarKeyboardNavigation({\n orientation,\n dir,\n loop,\n onKeyDown,\n })\n\n return (\n <StyledToolbar\n variant={variantProp}\n orientation={orientation}\n dir={dir}\n loop={loop}\n onKeyDown={handleKeyDown}\n ref={forwardRef}\n {...restProps}\n />\n )\n }\n) as ForwardRefExoticComponent<ToolbarProps> & Partials\n\n// Partials\n// -----------------------------------------------------------------------------\n\nexport interface Partials {\n Icon: typeof Icon\n Item: typeof Item\n Link: typeof Link\n Separator: typeof Separator\n}\n\nToolbar.Icon = Icon\nToolbar.Item = Item\nToolbar.Link = Link\nToolbar.Separator = Separator\n"],"names":["Separator"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirohq/design-system-toolbar",
3
- "version": "3.1.2-dummy.0",
3
+ "version": "3.1.2",
4
4
  "description": "",
5
5
  "author": "Miro",
6
6
  "source": "src/index.ts",
@@ -27,15 +27,16 @@
27
27
  "react-dom": "^16.14 || ^17 || ^18 || ^19"
28
28
  },
29
29
  "dependencies": {
30
+ "@radix-ui/react-direction": "^1.0.0",
30
31
  "@radix-ui/react-toolbar": "^1.0.0",
31
32
  "@react-aria/interactions": "^3.13.0",
32
33
  "@react-aria/utils": "^3.13.0",
33
34
  "@react-types/shared": "^3.16.0",
34
- "@mirohq/design-system-stitches": "^3.1.2-dummy.0",
35
- "@mirohq/design-system-styles": "^2.1.2-dummy.0",
36
- "@mirohq/design-system-use-aria-disabled": "^1.1.1-dummy.0",
37
- "@mirohq/design-system-use-press": "^1.1.1-dummy.0",
38
- "@mirohq/design-system-utils": "^1.2.1-dummy.0"
35
+ "@mirohq/design-system-stitches": "^3.1.1",
36
+ "@mirohq/design-system-utils": "^1.2.0",
37
+ "@mirohq/design-system-use-press": "^1.1.0",
38
+ "@mirohq/design-system-use-aria-disabled": "^1.1.0",
39
+ "@mirohq/design-system-styles": "^2.1.1"
39
40
  },
40
41
  "scripts": {
41
42
  "build": "rollup -c ../../../rollup.config.js",