@box/blueprint-web 12.3.1 → 12.4.0

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.
@@ -1,14 +1,27 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { PointerChevron } from '@box/blueprint-web-assets/icons/Fill';
3
- import { SurfaceStatusSurfaceRed, SurfaceStatusSurfaceLightBlue } from '@box/blueprint-web-assets/tokens/tokens';
2
+ import { PointerChevron, Alert, ClockBadge } from '@box/blueprint-web-assets/icons/Fill';
3
+ import { SurfaceStatusSurfaceRed, SurfaceStatusSurfaceLightBlue, GrayWhite, SurfaceBadgeErrorSurface, SurfaceBadgePagesSurface } from '@box/blueprint-web-assets/tokens/tokens';
4
4
  import * as RadixAccordion from '@radix-ui/react-accordion';
5
5
  import clsx from 'clsx';
6
+ import { createElement } from 'react';
6
7
  import { Ghost } from '../ghost/ghost.js';
7
8
  import { InlineNotice } from '../inline-notice/inline-notice.js';
8
9
  import { Status } from '../status/status.js';
9
10
  import { isDefined } from '../utils/isDefined.js';
10
11
  import styles from './accordion.module.js';
11
12
 
13
+ const accordionIconVariantToIconProps = {
14
+ 'alert-error': {
15
+ icon: Alert,
16
+ iconColor: GrayWhite,
17
+ backgroundColor: SurfaceBadgeErrorSurface
18
+ },
19
+ 'status-pending': {
20
+ icon: ClockBadge,
21
+ iconColor: GrayWhite,
22
+ backgroundColor: SurfaceBadgePagesSurface
23
+ }
24
+ };
12
25
  /**
13
26
  * The root component that contains all the parts of a accordion.
14
27
  *
@@ -67,12 +80,19 @@ const Item = props => {
67
80
  // TODO: [DSYS-549] Refactor - spread props in a single place
68
81
  const {
69
82
  status,
83
+ iconVariant,
84
+ iconAriaLabel,
70
85
  title,
71
86
  disabled,
72
87
  error,
73
88
  errorIconAriaLabel,
74
89
  ...itemRest
75
90
  } = props;
91
+ const {
92
+ backgroundColor,
93
+ iconColor,
94
+ icon
95
+ } = iconVariant ? accordionIconVariantToIconProps[iconVariant] : {};
76
96
  return jsxs(RadixAccordion.Item, {
77
97
  ...itemRest,
78
98
  className: accordionItemClasses,
@@ -91,6 +111,18 @@ const Item = props => {
91
111
  className: styles.accordionStatus,
92
112
  color: error ? statusColors.error : statusColors.default,
93
113
  text: `${status}`
114
+ }), icon && jsx("div", {
115
+ className: styles.accordionIconWrapper,
116
+ style: {
117
+ backgroundColor
118
+ },
119
+ children: /*#__PURE__*/createElement(icon, {
120
+ color: iconColor,
121
+ role: 'img',
122
+ height: '0.625rem',
123
+ width: '0.625rem',
124
+ 'aria-label': iconAriaLabel
125
+ })
94
126
  }), jsx(PointerChevron, {
95
127
  "aria-hidden": "true",
96
128
  className: styles.accordionTriggerIcon
@@ -1,4 +1,4 @@
1
1
  import '../index.css';
2
- var styles = {"accordionContent":"bp_accordion_module_accordionContent--eb917","slideDown":"bp_accordion_module_slideDown--eb917","slideUp":"bp_accordion_module_slideUp--eb917","accordionContentWrapper":"bp_accordion_module_accordionContentWrapper--eb917","accordionInlineErrorWrapper":"bp_accordion_module_accordionInlineErrorWrapper--eb917","accordionItem":"bp_accordion_module_accordionItem--eb917","accordionFixedContent":"bp_accordion_module_accordionFixedContent--eb917","accordionHeader":"bp_accordion_module_accordionHeader--eb917","accordionHeaderTrigger":"bp_accordion_module_accordionHeaderTrigger--eb917","accordionStatus":"bp_accordion_module_accordionStatus--eb917","accordionTrigger":"bp_accordion_module_accordionTrigger--eb917","accordionTriggerIcon":"bp_accordion_module_accordionTriggerIcon--eb917"};
2
+ var styles = {"accordionContent":"bp_accordion_module_accordionContent--13004","slideDown":"bp_accordion_module_slideDown--13004","slideUp":"bp_accordion_module_slideUp--13004","accordionContentWrapper":"bp_accordion_module_accordionContentWrapper--13004","accordionInlineErrorWrapper":"bp_accordion_module_accordionInlineErrorWrapper--13004","accordionItem":"bp_accordion_module_accordionItem--13004","accordionFixedContent":"bp_accordion_module_accordionFixedContent--13004","accordionHeader":"bp_accordion_module_accordionHeader--13004","accordionHeaderTrigger":"bp_accordion_module_accordionHeaderTrigger--13004","accordionStatus":"bp_accordion_module_accordionStatus--13004","accordionIconWrapper":"bp_accordion_module_accordionIconWrapper--13004","accordionTrigger":"bp_accordion_module_accordionTrigger--13004","accordionTriggerIcon":"bp_accordion_module_accordionTriggerIcon--13004"};
3
3
 
4
4
  export { styles as default };
@@ -16,6 +16,23 @@ interface Errorable {
16
16
  */
17
17
  errorIconAriaLabel?: string;
18
18
  }
19
+ interface IconProps {
20
+ /**
21
+ * Variant of icon displayed next to the title
22
+ * */
23
+ iconVariant: 'alert-error' | 'status-pending';
24
+ /**
25
+ * ARIA label of icon displayed next to the title
26
+ * */
27
+ iconAriaLabel: string;
28
+ }
29
+ type StatusProps = {
30
+ status?: number;
31
+ iconVariant?: never;
32
+ iconAriaLabel?: never;
33
+ } | ({
34
+ status?: never;
35
+ } & RequireAllOrNone<IconProps, keyof IconProps>);
19
36
  export type AccordionBaseItem = {
20
37
  /**
21
38
  * Content of the accordion item that is displayed when the section is expanded
@@ -33,15 +50,11 @@ export type AccordionSectionItem = AccordionBaseItem & Omit<RadixAccordionItemPr
33
50
  * Header text displayed
34
51
  */
35
52
  title: string;
36
- /**
37
- * Number displayed in a status pill next to the title
38
- * */
39
- status?: number;
40
53
  /**
41
54
  * Disabled state of the section.
42
55
  */
43
56
  disabled?: boolean;
44
- };
57
+ } & StatusProps;
45
58
  export type AccordionItem = AccordionSectionItem | AccordionFixedItem;
46
59
  export type AccordionItemProps = AccordionItem & React.ComponentPropsWithRef<'div'>;
47
60
  export type AccordionProps = (AccordionSingleProps | AccordionMultipleProps) & React.ComponentPropsWithRef<'div'>;
@@ -612,19 +612,19 @@
612
612
  .bp_status_module_colorSurfaceStatusSurfaceGreen--6c98f.bp_status_module_interactiveStatus--6c98f:focus-visible{
613
613
  background-color:var(--surface-status-surface-green-focus);
614
614
  }
615
- .bp_accordion_module_accordionContent--eb917[data-state=open]{
616
- animation:bp_accordion_module_slideDown--eb917 .15s ease-out;
615
+ .bp_accordion_module_accordionContent--13004[data-state=open]{
616
+ animation:bp_accordion_module_slideDown--13004 .15s ease-out;
617
617
  }
618
618
 
619
- .bp_accordion_module_accordionContent--eb917[data-state=closed]{
620
- animation:bp_accordion_module_slideUp--eb917 .15s ease-out;
619
+ .bp_accordion_module_accordionContent--13004[data-state=closed]{
620
+ animation:bp_accordion_module_slideUp--13004 .15s ease-out;
621
621
  }
622
622
 
623
- .bp_accordion_module_accordionContent--eb917{
623
+ .bp_accordion_module_accordionContent--13004{
624
624
  overflow:hidden;
625
625
  }
626
626
 
627
- @keyframes bp_accordion_module_slideDown--eb917{
627
+ @keyframes bp_accordion_module_slideDown--13004{
628
628
  from{
629
629
  height:0;
630
630
  }
@@ -632,7 +632,7 @@
632
632
  height:var(--radix-accordion-content-height);
633
633
  }
634
634
  }
635
- @keyframes bp_accordion_module_slideUp--eb917{
635
+ @keyframes bp_accordion_module_slideUp--13004{
636
636
  from{
637
637
  height:var(--radix-accordion-content-height);
638
638
  }
@@ -640,7 +640,7 @@
640
640
  height:0;
641
641
  }
642
642
  }
643
- .bp_accordion_module_accordionContentWrapper--eb917{
643
+ .bp_accordion_module_accordionContentWrapper--13004{
644
644
  display:flex;
645
645
  flex-direction:column;
646
646
  gap:var(--space-4);
@@ -649,20 +649,20 @@
649
649
  padding-inline:var(--space-4);
650
650
  }
651
651
 
652
- .bp_accordion_module_accordionInlineErrorWrapper--eb917{
652
+ .bp_accordion_module_accordionInlineErrorWrapper--13004{
653
653
  padding-block-start:var(--space-4);
654
654
  padding-inline:var(--space-4);
655
655
  }
656
656
 
657
- .bp_accordion_module_accordionItem--eb917{
657
+ .bp_accordion_module_accordionItem--13004{
658
658
  border-bottom:var(--border-1) solid var(--border-divider-border);
659
659
  min-width:320px;
660
660
  }
661
- .bp_accordion_module_accordionItem--eb917,.bp_accordion_module_accordionItem--eb917 > [data-state=open]{
661
+ .bp_accordion_module_accordionItem--13004,.bp_accordion_module_accordionItem--13004 > [data-state=open]{
662
662
  background-color:var(--surface-accordion-surface);
663
663
  }
664
664
 
665
- .bp_accordion_module_accordionFixedContent--eb917{
665
+ .bp_accordion_module_accordionFixedContent--13004{
666
666
  background-color:var(--surface-surface);
667
667
  display:flex;
668
668
  flex-direction:column;
@@ -671,7 +671,7 @@
671
671
  padding-inline:var(--space-4);
672
672
  }
673
673
 
674
- .bp_accordion_module_accordionHeader--eb917{
674
+ .bp_accordion_module_accordionHeader--13004{
675
675
  color:var(--text-text-on-light);
676
676
  display:flex;
677
677
  font-family:var(--title-small-font-family);
@@ -688,16 +688,26 @@
688
688
  width:100%;
689
689
  }
690
690
 
691
- .bp_accordion_module_accordionHeaderTrigger--eb917{
691
+ .bp_accordion_module_accordionHeaderTrigger--13004{
692
692
  align-items:center;
693
693
  display:flex;
694
694
  }
695
695
 
696
- .bp_accordion_module_accordionStatus--eb917{
696
+ .bp_accordion_module_accordionStatus--13004{
697
697
  margin-inline-start:var(--space-2);
698
698
  }
699
699
 
700
- .bp_accordion_module_accordionTrigger--eb917{
700
+ .bp_accordion_module_accordionIconWrapper--13004{
701
+ align-items:center;
702
+ border-radius:var(--radius-half);
703
+ display:flex;
704
+ height:var(--size-4);
705
+ justify-content:center;
706
+ margin-inline-start:var(--space-2);
707
+ width:var(--size-4);
708
+ }
709
+
710
+ .bp_accordion_module_accordionTrigger--13004{
701
711
  align-items:center;
702
712
  background-color:var(--surface-surface);
703
713
  border:none;
@@ -708,31 +718,31 @@
708
718
  text-transform:capitalize;
709
719
  width:100%;
710
720
  }
711
- .bp_accordion_module_accordionTrigger--eb917:active{
721
+ .bp_accordion_module_accordionTrigger--13004:active{
712
722
  background-color:var(--surface-surface);
713
723
  }
714
- .bp_accordion_module_accordionTrigger--eb917:hover{
724
+ .bp_accordion_module_accordionTrigger--13004:hover{
715
725
  background-color:var(--surface-accordion-surface-hover);
716
726
  cursor:pointer;
717
727
  }
718
- .bp_accordion_module_accordionTrigger--eb917:focus-visible{
728
+ .bp_accordion_module_accordionTrigger--13004:focus-visible{
719
729
  background-color:var(--surface-surface-hover);
720
730
  box-shadow:inset 0 0 0 var(--border-2) var(--outline-focus-on-light);
721
731
  outline:none;
722
732
  }
723
- .bp_accordion_module_accordionTrigger--eb917:disabled{
733
+ .bp_accordion_module_accordionTrigger--13004:disabled{
724
734
  cursor:default;
725
735
  opacity:.3;
726
736
  }
727
- .bp_accordion_module_accordionTrigger--eb917:disabled:hover{
737
+ .bp_accordion_module_accordionTrigger--13004:disabled:hover{
728
738
  background-color:var(--gray-white);
729
739
  }
730
- .bp_accordion_module_accordionTrigger--eb917 .bp_accordion_module_accordionTriggerIcon--eb917{
740
+ .bp_accordion_module_accordionTrigger--13004 .bp_accordion_module_accordionTriggerIcon--13004{
731
741
  color:var(--gray-50);
732
742
  flex-shrink:0;
733
743
  margin-inline-start:var(--space-3);
734
744
  }
735
- .bp_accordion_module_accordionTrigger--eb917[data-state=open] .bp_accordion_module_accordionTriggerIcon--eb917{
745
+ .bp_accordion_module_accordionTrigger--13004[data-state=open] .bp_accordion_module_accordionTriggerIcon--13004{
736
746
  transform:rotate(180deg);
737
747
  }
738
748
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/blueprint-web",
3
- "version": "12.3.1",
3
+ "version": "12.4.0",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {