@box/blueprint-web 13.11.0 → 13.11.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.
@@ -9344,9 +9344,10 @@ table.bp_inline_table_module_inlineTable--fc22e[data-modern=true] td:last-child,
9344
9344
  padding:var(--chips-group-small-screen-padding);
9345
9345
  }
9346
9346
  }
9347
- .bp_context_menu_module_menuBlock--747b4[data-modern=false]{
9347
+ .bp_context_menu_module_menuBlock--b9e5e[data-modern=false]{
9348
9348
  --context-menu-block-font-color:unset;
9349
9349
  --context-menu-block-min-width:var(--blueprint-web-context-menu-min-width, 160px);
9350
+ --context-menu-end-element-color:var(--text-text-on-light-secondary);
9350
9351
  --context-menu-block-max-width:var(--blueprint-web-context-menu-max-width);
9351
9352
  --context-menu-block-max-height:var(
9352
9353
  --blueprint-web-context-menu-max-height,
@@ -9371,9 +9372,10 @@ table.bp_inline_table_module_inlineTable--fc22e[data-modern=true] td:last-child,
9371
9372
  --context-menu-items-separator-margin:var(--space-2);
9372
9373
  }
9373
9374
 
9374
- .bp_context_menu_module_menuBlock--747b4[data-modern=true]{
9375
+ .bp_context_menu_module_menuBlock--b9e5e[data-modern=true]{
9375
9376
  --context-menu-block-font-color:var(--bp-text-text-on-light);
9376
9377
  --context-menu-block-min-width:var(--blueprint-web-context-menu-min-width, 160px);
9378
+ --context-menu-end-element-color:var(--bp-icon-icon-on-light-secondary);
9377
9379
  --context-menu-block-max-width:var(--blueprint-web-context-menu-max-width);
9378
9380
  --context-menu-block-max-height:var(
9379
9381
  --blueprint-web-context-menu-max-height,
@@ -9398,19 +9400,19 @@ table.bp_inline_table_module_inlineTable--fc22e[data-modern=true] td:last-child,
9398
9400
  --context-menu-items-separator-margin:var(--bp-space-020);
9399
9401
  }
9400
9402
 
9401
- .bp_context_menu_module_menuHeader--747b4[data-modern=false]{
9403
+ .bp_context_menu_module_menuHeader--b9e5e[data-modern=false]{
9402
9404
  --context-menu-header-padding:var(--space-3);
9403
9405
  --context-menu-header-gap:var(--space-2);
9404
9406
  --context-menu-header-shadow:var(--dropshadow-1);
9405
9407
  }
9406
9408
 
9407
- .bp_context_menu_module_menuHeader--747b4[data-modern=true]{
9409
+ .bp_context_menu_module_menuHeader--b9e5e[data-modern=true]{
9408
9410
  --context-menu-header-padding:var(--bp-space-030) var(--bp-space-040);
9409
9411
  --context-menu-header-gap:var(--bp-space-030);
9410
9412
  --context-menu-header-shadow:var(--dropshadow-1);
9411
9413
  }
9412
9414
 
9413
- .bp_context_menu_module_menuBlock--747b4{
9415
+ .bp_context_menu_module_menuBlock--b9e5e{
9414
9416
  backdrop-filter:var(--context-menu-block-backdrop-filter);
9415
9417
  background-color:var(--context-menu-block-background-color);
9416
9418
  border:var(--context-menu-block-border);
@@ -9423,7 +9425,7 @@ table.bp_inline_table_module_inlineTable--fc22e[data-modern=true] td:last-child,
9423
9425
  min-width:var(--context-menu-block-min-width);
9424
9426
  padding:var(--context-menu-block-padding);
9425
9427
  }
9426
- .bp_context_menu_module_menuBlock--747b4[data-menu-fullscreen=true]{
9428
+ .bp_context_menu_module_menuBlock--b9e5e[data-menu-fullscreen=true]{
9427
9429
  border:unset;
9428
9430
  border-radius:unset;
9429
9431
  display:flex;
@@ -9436,14 +9438,14 @@ table.bp_inline_table_module_inlineTable--fc22e[data-modern=true] td:last-child,
9436
9438
  position:relative;
9437
9439
  width:100vw;
9438
9440
  }
9439
- .bp_context_menu_module_menuBlock--747b4[data-menu-fullscreen=true] .bp_context_menu_module_fullScreenContent--747b4{
9441
+ .bp_context_menu_module_menuBlock--b9e5e[data-menu-fullscreen=true] .bp_context_menu_module_fullScreenContent--b9e5e{
9440
9442
  overflow-y:auto;
9441
9443
  padding:var(--context-menu-fullscreen-content-padding);
9442
9444
  }
9443
- .bp_context_menu_module_menuBlock--747b4 .bp_context_menu_module_menuItemsSeparator--747b4{
9445
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_menuItemsSeparator--b9e5e{
9444
9446
  margin:var(--context-menu-items-separator-margin);
9445
9447
  }
9446
- .bp_context_menu_module_menuBlock--747b4 .bp_context_menu_module_menuItem--747b4{
9448
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_menuItem--b9e5e{
9447
9449
  align-items:center;
9448
9450
  background-color:var(--context-menu-background-color);
9449
9451
  border:var(--context-menu-item-border);
@@ -9456,32 +9458,41 @@ table.bp_inline_table_module_inlineTable--fc22e[data-modern=true] td:last-child,
9456
9458
  padding-inline:var(--context-menu-item-padding);
9457
9459
  position:relative;
9458
9460
  }
9459
- .bp_context_menu_module_menuBlock--747b4 .bp_context_menu_module_menuItem--747b4[data-disabled]{
9461
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_menuItem--b9e5e[data-disabled]{
9460
9462
  opacity:60%;
9461
9463
  pointer-events:none;
9462
9464
  }
9463
- .bp_context_menu_module_menuBlock--747b4 .bp_context_menu_module_menuItem--747b4[data-highlighted]:not(:hover){
9465
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_menuItem--b9e5e[data-highlighted]:not(:hover){
9464
9466
  background-color:var(--context-menu-item-background-color-hover);
9465
9467
  border:var(--context-menu-item-focus-border);
9466
9468
  }
9467
- .bp_context_menu_module_menuBlock--747b4 .bp_context_menu_module_menuItem--747b4[data-state=open][data-highlighted]:not(:hover){
9469
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_menuItem--b9e5e[data-state=open][data-highlighted]:not(:hover){
9468
9470
  border:var(--context-menu-item-border);
9469
9471
  }
9470
- .bp_context_menu_module_menuBlock--747b4 .bp_context_menu_module_menuItem--747b4:active{
9472
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_menuItem--b9e5e:active{
9471
9473
  background-color:var(--context-menu-item-background-color-pressed);
9472
9474
  border:var(--context-menu-item-border);
9473
9475
  }
9474
- .bp_context_menu_module_menuBlock--747b4 .bp_context_menu_module_menuItem--747b4:hover{
9476
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_menuItem--b9e5e:hover{
9475
9477
  background-color:var(--context-menu-item-background-color-hover);
9476
9478
  border:var(--context-menu-item-border-hover);
9477
9479
  }
9480
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_startElement--b9e5e{
9481
+ align-items:center;
9482
+ display:flex;
9483
+ }
9484
+ .bp_context_menu_module_menuBlock--b9e5e .bp_context_menu_module_endElement--b9e5e{
9485
+ align-items:center;
9486
+ color:var(--context-menu-end-element-color);
9487
+ display:flex;
9488
+ }
9478
9489
  div[data-radix-popper-content-wrapper]:has([role=menu]):has([data-state=open]):has([data-menu-fullscreen=true]){
9479
9490
  height:100%;
9480
9491
  transform:none !important;
9481
9492
  width:100%;
9482
9493
  }
9483
9494
 
9484
- .bp_context_menu_module_menuHeader--747b4{
9495
+ .bp_context_menu_module_menuHeader--b9e5e{
9485
9496
  align-items:center;
9486
9497
  box-shadow:var(--context-menu-header-shadow);
9487
9498
  display:grid;
@@ -9491,19 +9502,19 @@ div[data-radix-popper-content-wrapper]:has([role=menu]):has([data-state=open]):h
9491
9502
  padding:var(--context-menu-header-padding);
9492
9503
  }
9493
9504
 
9494
- .bp_context_menu_module_headerTextContent--747b4{
9505
+ .bp_context_menu_module_headerTextContent--b9e5e{
9495
9506
  display:grid;
9496
9507
  }
9497
9508
 
9498
- .bp_context_menu_module_submenuCloseButton--747b4{
9509
+ .bp_context_menu_module_submenuCloseButton--b9e5e{
9499
9510
  grid-area:submenu-close;
9500
9511
  }
9501
9512
 
9502
- .bp_context_menu_module_menuCloseButton--747b4{
9513
+ .bp_context_menu_module_menuCloseButton--b9e5e{
9503
9514
  grid-area:close;
9504
9515
  }
9505
9516
 
9506
- .bp_context_menu_module_ellipsis--747b4{
9517
+ .bp_context_menu_module_ellipsis--b9e5e{
9507
9518
  overflow:hidden;
9508
9519
  text-overflow:ellipsis;
9509
9520
  white-space:nowrap;
@@ -1,16 +1,30 @@
1
1
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
2
+ import { type ForwardRefExoticComponent, type RefAttributes, type SVGProps } from 'react';
2
3
  export type ContextMenuItemProps = ContextMenuPrimitive.ContextMenuItemProps;
4
+ export interface ContextMenuItemStartElementProps extends React.ComponentProps<'div'> {
5
+ icon?: ForwardRefExoticComponent<Omit<SVGProps<SVGSVGElement>, 'ref'> & RefAttributes<SVGSVGElement>>;
6
+ children?: React.ReactNode;
7
+ }
8
+ export type ContextMenuItemEndElementProps = React.ComponentProps<'div'>;
3
9
  /**
4
10
  * Based on Radix-UI context menu [Item](https://www.radix-ui.com/docs/primitives/components/context-menu#item).<br>
5
- * Contains sub components: <b>Item.MainContent</b> and <b>Item.SideContent</b>.
11
+ * Contains sub components: <b>Item.StartElement</b>, <b>Item.MainContent</b>, <b>Item.EndElement</b> and <b>Item.SideContent</b>.
6
12
  */
7
- export declare const ContextMenuItem: import("react").ForwardRefExoticComponent<ContextMenuPrimitive.ContextMenuItemProps & import("react").RefAttributes<HTMLDivElement>> & {
13
+ export declare const ContextMenuItem: ForwardRefExoticComponent<ContextMenuPrimitive.ContextMenuItemProps & RefAttributes<HTMLDivElement>> & {
8
14
  /**
9
- * Container for side content of menu item.
15
+ * Start element of an Item, dedicated for icons.
10
16
  */
11
- SideContent: ({ children, className, ...rest }: import("../../util-components/menu-item-sections/menu-item-sections").MenuItemSideContentProps) => import("react/jsx-runtime").JSX.Element;
17
+ StartElement: ForwardRefExoticComponent<Omit<ContextMenuItemStartElementProps, "ref"> & RefAttributes<HTMLDivElement>>;
12
18
  /**
13
19
  * Text content of menu item.
14
20
  */
15
21
  MainContent: ({ className, label, description, ...rest }: import("../../util-components/menu-item-sections/menu-item-sections").MenuItemMainContentProps) => import("react/jsx-runtime").JSX.Element;
22
+ /**
23
+ * End element of an Item, dedicated for additional text and icons.
24
+ */
25
+ EndElement: ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
26
+ /**
27
+ * Container for side content of menu item.
28
+ */
29
+ SideContent: ({ children, className, ...rest }: import("../../util-components/menu-item-sections/menu-item-sections").MenuItemSideContentProps) => import("react/jsx-runtime").JSX.Element;
16
30
  };
@@ -1,8 +1,10 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Size4, bpIconIconOnLightSecondary, IconIconOnLightSecondary } from '@box/blueprint-web-assets/tokens/tokens';
2
3
  import * as ContextMenuPrimitve from '@radix-ui/react-context-menu';
3
4
  import clsx from 'clsx';
4
- import { forwardRef, useCallback } from 'react';
5
- import { MenuItemMainContent, MenuItemSideContent } from '../../util-components/menu-item-sections/menu-item-sections.js';
5
+ import { forwardRef, useCallback, createElement } from 'react';
6
+ import { useBlueprintModernization } from '../../blueprint-modernization-context/useBlueprintModernization.js';
7
+ import { MenuItemSideContent, MenuItemMainContent } from '../../util-components/menu-item-sections/menu-item-sections.js';
6
8
  import styles from './context-menu.module.js';
7
9
 
8
10
  const MenuItemRoot = /*#__PURE__*/forwardRef((props, forwardedRef) => {
@@ -24,19 +26,67 @@ const MenuItemRoot = /*#__PURE__*/forwardRef((props, forwardedRef) => {
24
26
  });
25
27
  });
26
28
  MenuItemRoot.displayName = 'ContextMenuItem';
29
+ /**
30
+ * Start element of an Item, dedicated for icons.
31
+ */
32
+ const ContextMenuItemStartElement = /*#__PURE__*/forwardRef(({
33
+ children,
34
+ className,
35
+ icon,
36
+ ...rest
37
+ }, ref) => {
38
+ const {
39
+ enableModernizedComponents
40
+ } = useBlueprintModernization();
41
+ const iconColor = enableModernizedComponents ? bpIconIconOnLightSecondary : IconIconOnLightSecondary;
42
+ return jsxs("div", {
43
+ ...rest,
44
+ ref: ref,
45
+ className: clsx(styles.startElement, className),
46
+ children: [icon && /*#__PURE__*/createElement(icon, {
47
+ color: iconColor,
48
+ height: Size4,
49
+ width: Size4,
50
+ role: 'presentation'
51
+ }), children]
52
+ });
53
+ });
54
+ /**
55
+ * End element of an Item, dedicated for additional text and icons.
56
+ */
57
+ const ContextMenuItemEndElement = /*#__PURE__*/forwardRef(({
58
+ children,
59
+ className,
60
+ ...rest
61
+ }, ref) => {
62
+ return jsx("div", {
63
+ ...rest,
64
+ ref: ref,
65
+ className: clsx(styles.endElement, className),
66
+ children: children
67
+ });
68
+ });
27
69
  /**
28
70
  * Based on Radix-UI context menu [Item](https://www.radix-ui.com/docs/primitives/components/context-menu#item).<br>
29
- * Contains sub components: <b>Item.MainContent</b> and <b>Item.SideContent</b>.
71
+ * Contains sub components: <b>Item.StartElement</b>, <b>Item.MainContent</b>, <b>Item.EndElement</b> and <b>Item.SideContent</b>.
30
72
  */
31
73
  const ContextMenuItem = Object.assign(MenuItemRoot, {
32
74
  /**
33
- * Container for side content of menu item.
75
+ * Start element of an Item, dedicated for icons.
34
76
  */
35
- SideContent: MenuItemSideContent,
77
+ StartElement: ContextMenuItemStartElement,
36
78
  /**
37
79
  * Text content of menu item.
38
80
  */
39
- MainContent: MenuItemMainContent
81
+ MainContent: MenuItemMainContent,
82
+ /**
83
+ * End element of an Item, dedicated for additional text and icons.
84
+ */
85
+ EndElement: ContextMenuItemEndElement,
86
+ /**
87
+ * Container for side content of menu item.
88
+ */
89
+ SideContent: MenuItemSideContent
40
90
  });
41
91
 
42
92
  export { ContextMenuItem };
@@ -1,4 +1,4 @@
1
1
  import '../../index.css';
2
- var styles = {"menuBlock":"bp_context_menu_module_menuBlock--747b4","menuHeader":"bp_context_menu_module_menuHeader--747b4","fullScreenContent":"bp_context_menu_module_fullScreenContent--747b4","menuItemsSeparator":"bp_context_menu_module_menuItemsSeparator--747b4","menuItem":"bp_context_menu_module_menuItem--747b4","headerTextContent":"bp_context_menu_module_headerTextContent--747b4","submenuCloseButton":"bp_context_menu_module_submenuCloseButton--747b4","menuCloseButton":"bp_context_menu_module_menuCloseButton--747b4","ellipsis":"bp_context_menu_module_ellipsis--747b4"};
2
+ var styles = {"menuBlock":"bp_context_menu_module_menuBlock--b9e5e","menuHeader":"bp_context_menu_module_menuHeader--b9e5e","fullScreenContent":"bp_context_menu_module_fullScreenContent--b9e5e","menuItemsSeparator":"bp_context_menu_module_menuItemsSeparator--b9e5e","menuItem":"bp_context_menu_module_menuItem--b9e5e","startElement":"bp_context_menu_module_startElement--b9e5e","endElement":"bp_context_menu_module_endElement--b9e5e","headerTextContent":"bp_context_menu_module_headerTextContent--b9e5e","submenuCloseButton":"bp_context_menu_module_submenuCloseButton--b9e5e","menuCloseButton":"bp_context_menu_module_menuCloseButton--b9e5e","ellipsis":"bp_context_menu_module_ellipsis--b9e5e"};
3
3
 
4
4
  export { styles as default };
@@ -13,8 +13,10 @@ export declare const ContextMenu: {
13
13
  SubMenuContent: import("react").ForwardRefExoticComponent<import("./context-menu-sub-menu-content").ContextMenuSubMenuContentProps & import("react").RefAttributes<HTMLDivElement>>;
14
14
  ItemsSeparator: import("react").ForwardRefExoticComponent<import("react").RefAttributes<HTMLHRElement>>;
15
15
  Item: import("react").ForwardRefExoticComponent<import("@radix-ui/react-context-menu").ContextMenuItemProps & import("react").RefAttributes<HTMLDivElement>> & {
16
- SideContent: ({ children, className, ...rest }: import("../../util-components/menu-item-sections/menu-item-sections").MenuItemSideContentProps) => import("react/jsx-runtime").JSX.Element;
16
+ StartElement: import("react").ForwardRefExoticComponent<Omit<import("./context-menu-item").ContextMenuItemStartElementProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
17
17
  MainContent: ({ className, label, description, ...rest }: import("../../util-components/menu-item-sections/menu-item-sections").MenuItemMainContentProps) => import("react/jsx-runtime").JSX.Element;
18
+ EndElement: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
19
+ SideContent: ({ children, className, ...rest }: import("../../util-components/menu-item-sections/menu-item-sections").MenuItemSideContentProps) => import("react/jsx-runtime").JSX.Element;
18
20
  };
19
21
  Header: (({ children, className, ...rest }: import("react").HTMLAttributes<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element) & {
20
22
  MenuCloseButton: import("react").ForwardRefExoticComponent<Omit<import("./context-menu-menu-header").MenuCloseButtonProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -25,7 +27,7 @@ export declare const ContextMenu: {
25
27
  } & import("react").RefAttributes<HTMLDivElement>>;
26
28
  };
27
29
  };
28
- export type { ContextMenuItemProps } from './context-menu-item';
30
+ export type { ContextMenuItemProps, ContextMenuItemStartElementProps, ContextMenuItemEndElementProps, } from './context-menu-item';
29
31
  export type { ContextMenuMenuContentProps } from './context-menu-menu-content';
30
32
  export type { ContextMenuMenuRootProps } from './context-menu-menu-root';
31
33
  export type { ContextMenuMenuTriggerProps } from './context-menu-menu-trigger';
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { Size8, Size4, bpIconIconOnLightSecondary } from '@box/blueprint-web-assets/tokens/tokens';
2
+ import { Size8, Size4, bpIconIconOnLightSecondary, IconIconOnLightSecondary } from '@box/blueprint-web-assets/tokens/tokens';
3
3
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
4
4
  import clsx from 'clsx';
5
5
  import { forwardRef, useCallback, createElement } from 'react';
@@ -86,7 +86,7 @@ const MenuItemStartElement = /*#__PURE__*/forwardRef(({
86
86
  enableModernizedComponents
87
87
  } = useBlueprintModernization();
88
88
  const iconSize = internalSize === 'medium' ? Size8 : Size4;
89
- const iconColor = enableModernizedComponents ? bpIconIconOnLightSecondary : undefined;
89
+ const iconColor = enableModernizedComponents ? bpIconIconOnLightSecondary : IconIconOnLightSecondary;
90
90
  return jsxs("div", {
91
91
  ...rest,
92
92
  ref: ref,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/blueprint-web",
3
- "version": "13.11.0",
3
+ "version": "13.11.2",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
@@ -47,7 +47,7 @@
47
47
  "dependencies": {
48
48
  "@ariakit/react": "0.4.15",
49
49
  "@ariakit/react-core": "0.4.15",
50
- "@box/blueprint-web-assets": "^4.111.0",
50
+ "@box/blueprint-web-assets": "^4.111.2",
51
51
  "@internationalized/date": "^3.7.0",
52
52
  "@radix-ui/react-accordion": "1.1.2",
53
53
  "@radix-ui/react-checkbox": "1.0.4",
@@ -77,7 +77,7 @@
77
77
  "type-fest": "^3.2.0"
78
78
  },
79
79
  "devDependencies": {
80
- "@box/storybook-utils": "^0.17.0",
80
+ "@box/storybook-utils": "^0.17.2",
81
81
  "@figma/code-connect": "1.3.12",
82
82
  "@types/react": "^18.0.0",
83
83
  "@types/react-dom": "^18.0.0",