@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--
|
|
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'>;
|
package/dist/lib-esm/index.css
CHANGED
|
@@ -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--
|
|
616
|
-
animation:bp_accordion_module_slideDown--
|
|
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--
|
|
620
|
-
animation:bp_accordion_module_slideUp--
|
|
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--
|
|
623
|
+
.bp_accordion_module_accordionContent--13004{
|
|
624
624
|
overflow:hidden;
|
|
625
625
|
}
|
|
626
626
|
|
|
627
|
-
@keyframes bp_accordion_module_slideDown--
|
|
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--
|
|
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--
|
|
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--
|
|
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--
|
|
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--
|
|
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--
|
|
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--
|
|
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--
|
|
691
|
+
.bp_accordion_module_accordionHeaderTrigger--13004{
|
|
692
692
|
align-items:center;
|
|
693
693
|
display:flex;
|
|
694
694
|
}
|
|
695
695
|
|
|
696
|
-
.bp_accordion_module_accordionStatus--
|
|
696
|
+
.bp_accordion_module_accordionStatus--13004{
|
|
697
697
|
margin-inline-start:var(--space-2);
|
|
698
698
|
}
|
|
699
699
|
|
|
700
|
-
.
|
|
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--
|
|
721
|
+
.bp_accordion_module_accordionTrigger--13004:active{
|
|
712
722
|
background-color:var(--surface-surface);
|
|
713
723
|
}
|
|
714
|
-
.bp_accordion_module_accordionTrigger--
|
|
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--
|
|
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--
|
|
733
|
+
.bp_accordion_module_accordionTrigger--13004:disabled{
|
|
724
734
|
cursor:default;
|
|
725
735
|
opacity:.3;
|
|
726
736
|
}
|
|
727
|
-
.bp_accordion_module_accordionTrigger--
|
|
737
|
+
.bp_accordion_module_accordionTrigger--13004:disabled:hover{
|
|
728
738
|
background-color:var(--gray-white);
|
|
729
739
|
}
|
|
730
|
-
.bp_accordion_module_accordionTrigger--
|
|
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--
|
|
745
|
+
.bp_accordion_module_accordionTrigger--13004[data-state=open] .bp_accordion_module_accordionTriggerIcon--13004{
|
|
736
746
|
transform:rotate(180deg);
|
|
737
747
|
}
|
|
738
748
|
|