@box/blueprint-web 8.3.1 → 8.4.1

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,9 +1,10 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { PointerChevron } from '@box/blueprint-web-assets/icons/Fill';
3
- import { SurfaceStatusSurfaceLightBlue } from '@box/blueprint-web-assets/tokens/tokens';
3
+ import { SurfaceStatusSurfaceRed, SurfaceStatusSurfaceLightBlue } from '@box/blueprint-web-assets/tokens/tokens';
4
4
  import * as RadixAccordion from '@radix-ui/react-accordion';
5
5
  import clsx from 'clsx';
6
6
  import { Ghost } from '../ghost/ghost.js';
7
+ import { InlineNotice } from '../inline-notice/inline-notice.js';
7
8
  import { Status } from '../status/status.js';
8
9
  import { isDefined } from '../utils/isDefined.js';
9
10
  import styles from './accordion.module.js';
@@ -59,11 +60,17 @@ const Item = props => {
59
60
  })
60
61
  });
61
62
  }
63
+ const statusColors = {
64
+ error: SurfaceStatusSurfaceRed,
65
+ default: SurfaceStatusSurfaceLightBlue
66
+ };
62
67
  // TODO: [DSYS-549] Refactor - spread props in a single place
63
68
  const {
64
69
  status,
65
70
  title,
66
71
  disabled,
72
+ error,
73
+ errorIconAriaLabel,
67
74
  ...itemRest
68
75
  } = props;
69
76
  return jsxs(RadixAccordion.Item, {
@@ -82,7 +89,7 @@ const Item = props => {
82
89
  className: styles.accordionHeaderTrigger,
83
90
  children: [isDefined(status) && jsx(Status, {
84
91
  className: styles.accordionStatus,
85
- color: SurfaceStatusSurfaceLightBlue,
92
+ color: error ? statusColors.error : statusColors.default,
86
93
  text: `${status}`
87
94
  }), jsx(PointerChevron, {
88
95
  "aria-hidden": "true",
@@ -91,12 +98,19 @@ const Item = props => {
91
98
  })]
92
99
  })
93
100
  })
94
- }), jsx(RadixAccordion.Content, {
101
+ }), jsxs(RadixAccordion.Content, {
95
102
  className: clsx(children && styles.accordionContent),
96
- children: jsx("div", {
103
+ children: [error && jsx("div", {
104
+ className: styles.accordionInlineErrorWrapper,
105
+ children: jsx(InlineNotice, {
106
+ variant: "error",
107
+ variantIconAriaLabel: errorIconAriaLabel,
108
+ children: error
109
+ })
110
+ }), jsx("div", {
97
111
  className: styles.accordionContentWrapper,
98
112
  children: children
99
- })
113
+ })]
100
114
  })]
101
115
  });
102
116
  };
@@ -1,4 +1,4 @@
1
1
  import '../index.css';
2
- var styles = {"accordionContent":"bp_accordion_module_accordionContent--aef9c","slideDown":"bp_accordion_module_slideDown--aef9c","slideUp":"bp_accordion_module_slideUp--aef9c","accordionContentWrapper":"bp_accordion_module_accordionContentWrapper--aef9c","accordionItem":"bp_accordion_module_accordionItem--aef9c","accordionFixedContent":"bp_accordion_module_accordionFixedContent--aef9c","accordionHeader":"bp_accordion_module_accordionHeader--aef9c","accordionHeaderTrigger":"bp_accordion_module_accordionHeaderTrigger--aef9c","accordionStatus":"bp_accordion_module_accordionStatus--aef9c","accordionTrigger":"bp_accordion_module_accordionTrigger--aef9c","accordionTriggerIcon":"bp_accordion_module_accordionTriggerIcon--aef9c"};
2
+ var styles = {"accordionContent":"bp_accordion_module_accordionContent--81559","slideDown":"bp_accordion_module_slideDown--81559","slideUp":"bp_accordion_module_slideUp--81559","accordionContentWrapper":"bp_accordion_module_accordionContentWrapper--81559","accordionInlineErrorWrapper":"bp_accordion_module_accordionInlineErrorWrapper--81559","accordionItem":"bp_accordion_module_accordionItem--81559","accordionFixedContent":"bp_accordion_module_accordionFixedContent--81559","accordionHeader":"bp_accordion_module_accordionHeader--81559","accordionHeaderTrigger":"bp_accordion_module_accordionHeaderTrigger--81559","accordionStatus":"bp_accordion_module_accordionStatus--81559","accordionTrigger":"bp_accordion_module_accordionTrigger--81559","accordionTriggerIcon":"bp_accordion_module_accordionTriggerIcon--81559"};
3
3
 
4
4
  export { styles as default };
@@ -7,12 +7,22 @@ interface Loading {
7
7
  /** The aria-label for the ghost state. */
8
8
  loadingAriaLabel: string;
9
9
  }
10
+ interface Errorable {
11
+ /**
12
+ * Error message displayed in an InlineNotice
13
+ */
14
+ error?: string;
15
+ /**
16
+ * ARIA label for the icon inside the InlineNotice
17
+ */
18
+ errorIconAriaLabel?: string;
19
+ }
10
20
  export type AccordionBaseItem = {
11
21
  /**
12
22
  * Content of the accordion item that is displayed when the section is expanded
13
23
  */
14
24
  children?: React.ReactNode;
15
- } & RequireAllOrNone<Loading, keyof Loading>;
25
+ } & RequireAllOrNone<Loading, keyof Loading> & RequireAllOrNone<Errorable, keyof Errorable>;
16
26
  /**
17
27
  * Fixed sections are non-collapsible, have no title, only content, can't be disabled
18
28
  */
package/lib-esm/index.css CHANGED
@@ -32,208 +32,113 @@
32
32
  }
33
33
  }
34
34
 
35
- .bp_status_module_interactiveStatus--88fd7{
36
- border:initial;
37
- cursor:default;
38
- max-width:100%;
39
- padding:initial;
40
- vertical-align:top;
41
- }
42
- .bp_status_module_interactiveStatus--88fd7:focus-visible{
43
- box-shadow:0 0 0 .125rem #2486fc;
44
- outline:none;
45
- overflow:visible;
46
- }
47
- .bp_status_module_interactiveStatus--88fd7:hover{
48
- background-color:var(--status-interactive-background-color-hover, #e8e8e8);
49
- box-shadow:0 0 0 .1875rem #0000000a;
50
- }
51
- .bp_status_module_interactiveStatus--88fd7:focus-visible{
52
- background-color:var(--status-interactive-background-color-focus, #e8e8e8);
53
- }
54
-
55
- .bp_status_module_status--88fd7{
56
- align-items:center;
57
- background-color:var(--status-background-color, #e8e8e8);
58
- border-radius:2rem;
59
- color:#222;
35
+ .bp_base_inline_notice_module_noticeWrapper--ab47a{
36
+ border-radius:var(--radius-2);
60
37
  display:flex;
61
- font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
62
- font-size:.625rem;
63
- font-weight:700;
64
- gap:.25rem;
65
- height:1.25rem;
66
- letter-spacing:.0375rem;
67
- line-height:1rem;
68
- padding-left:.5rem;
69
- padding-right:.5rem;
70
- text-decoration:none;
71
- text-transform:none;
72
- -webkit-user-select:text;
73
- user-select:text;
74
- white-space:nowrap;
75
- }
76
- .bp_status_module_status--88fd7.bp_status_module_reverse--88fd7{
77
- flex-direction:row-reverse;
38
+ gap:var(--space-3);
39
+ justify-content:space-between;
40
+ padding:var(--space-3) var(--space-4);
78
41
  }
79
- .bp_status_module_status--88fd7.bp_status_module_circle--88fd7{
80
- padding:0 3px;
42
+ .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actions--ab47a{
43
+ align-self:center;
44
+ display:flex;
45
+ gap:var(--space-3);
46
+ justify-content:flex-end;
81
47
  }
82
- .bp_status_module_status--88fd7 .bp_status_module_text--88fd7{
83
- overflow:hidden;
84
- text-overflow:ellipsis;
48
+ .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a,.bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a{
49
+ height:var(--space-8);
85
50
  }
86
- .bp_status_module_status--88fd7 > svg{
87
- flex:0 0 auto;
88
- white-space:nowrap;
51
+ .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a,.bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:hover{
52
+ background:#0000;
89
53
  }
90
-
91
- .bp_status_module_maxContainer--88fd7{
92
- display:inline-block;
93
- max-width:100%;
94
- vertical-align:middle;
54
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundYellow--ab47a{
55
+ background:var(--surface-message-surface-warning-secondary);
95
56
  }
96
- .bp_status_module_colorSurfaceStatusSurfaceGray--88fd7,.bp_status_module_colorSurfaceStatusSurfaceGray--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceGray--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
97
- background-color:#e8e8e8;
57
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundBlue--ab47a{
58
+ background:var(--surface-message-surface-info-secondary);
98
59
  }
99
- .bp_status_module_colorSurfaceStatusSurfaceYellow--88fd7,.bp_status_module_colorSurfaceStatusSurfaceYellow--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceYellow--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
100
- background-color:#ffeb7f;
60
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundRed--ab47a{
61
+ background:var(--surface-message-surface-error-secondary);
101
62
  }
102
- .bp_status_module_colorSurfaceStatusSurfaceOrange--88fd7,.bp_status_module_colorSurfaceStatusSurfaceOrange--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceOrange--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
103
- background-color:#f8c08c;
63
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundGreen--ab47a{
64
+ background:var(--surface-message-surface-success-secondary);
104
65
  }
105
- .bp_status_module_colorSurfaceStatusSurfaceRed--88fd7,.bp_status_module_colorSurfaceStatusSurfaceRed--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceRed--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
106
- background-color:#f69bab;
66
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a{
67
+ background:var(--surface-message-surface-promo-secondary);
107
68
  }
108
- .bp_status_module_colorSurfaceStatusSurfacePurple--88fd7,.bp_status_module_colorSurfaceStatusSurfacePurple--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfacePurple--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
109
- background-color:#cf9ff6;
69
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a{
70
+ background:var(--surface-cta-surface-tertiary-promo);
71
+ color:var(--text-cta-promo);
110
72
  }
111
- .bp_status_module_colorSurfaceStatusSurfaceLightBlue--88fd7,.bp_status_module_colorSurfaceStatusSurfaceLightBlue--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceLightBlue--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
112
- background-color:#91c2fd;
73
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:active{
74
+ background:var(--surface-cta-surface-tertiary-promo-pressed);
113
75
  }
114
- .bp_status_module_colorSurfaceStatusSurfaceDarkBlue--88fd7,.bp_status_module_colorSurfaceStatusSurfaceDarkBlue--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceDarkBlue--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
115
- background-color:#7f9dc1;
76
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a[data-focus-visible]{
77
+ background:var(--surface-cta-surface-tertiary-promo-focus);
116
78
  }
117
- .bp_status_module_colorSurfaceStatusSurfaceGreen--88fd7,.bp_status_module_colorSurfaceStatusSurfaceGreen--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceGreen--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
118
- background-color:#92e0c0;
79
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:hover{
80
+ background:var(--surface-cta-surface-tertiary-promo-hover);
119
81
  }
120
-
121
- .bp_accordion_module_accordionContent--aef9c[data-state=open]{
122
- animation:bp_accordion_module_slideDown--aef9c .15s ease-out;
82
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:focus:active{
83
+ background:var(--surface-cta-surface-tertiary-promo-focus-pressed);
123
84
  }
124
-
125
- .bp_accordion_module_accordionContent--aef9c[data-state=closed]{
126
- animation:bp_accordion_module_slideUp--aef9c .15s ease-out;
85
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:hover:active{
86
+ background:var(--surface-cta-surface-tertiary-promo-pressed);
127
87
  }
128
-
129
- .bp_accordion_module_accordionContent--aef9c{
130
- overflow:hidden;
88
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a{
89
+ background:var(--surface-cta-surface-promo);
90
+ border-color:var(--surface-cta-surface-promo);
131
91
  }
132
-
133
- @keyframes bp_accordion_module_slideDown--aef9c{
134
- from{
135
- height:0;
136
- }
137
- to{
138
- height:var(--radix-accordion-content-height);
139
- }
92
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:active{
93
+ background:var(--surface-cta-surface-promo-pressed);
140
94
  }
141
- @keyframes bp_accordion_module_slideUp--aef9c{
142
- from{
143
- height:var(--radix-accordion-content-height);
144
- }
145
- to{
146
- height:0;
147
- }
95
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a[data-focus-visible]{
96
+ background:var(--surface-cta-surface-promo-focus);
148
97
  }
149
- .bp_accordion_module_accordionContentWrapper--aef9c{
150
- display:flex;
151
- flex-direction:column;
152
- gap:var(--space-4);
153
- padding-block:var(--space-4);
154
- padding-block-end:var(--space-6);
155
- padding-inline:var(--space-4);
98
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:hover{
99
+ background:var(--surface-cta-surface-promo-hover);
100
+ border-color:var(--surface-cta-surface-promo-hover);
156
101
  }
157
-
158
- .bp_accordion_module_accordionItem--aef9c{
159
- border-bottom:var(--border-1) solid var(--border-divider-border);
160
- min-width:320px;
102
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:focus:active{
103
+ background:var(--surface-cta-surface-promo-focus-pressed);
161
104
  }
162
- .bp_accordion_module_accordionItem--aef9c,.bp_accordion_module_accordionItem--aef9c > [data-state=open]{
163
- background-color:var(--surface-accordion-surface);
105
+ .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:hover:active{
106
+ background:var(--surface-cta-surface-promo-pressed);
164
107
  }
165
-
166
- .bp_accordion_module_accordionFixedContent--aef9c{
167
- background-color:var(--surface-surface);
108
+ .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_contentContainer--ab47a{
168
109
  display:flex;
169
- flex-direction:column;
170
- gap:var(--space-4);
171
- padding-block:var(--space-5);
172
- padding-inline:var(--space-4);
110
+ gap:var(--space-3);
173
111
  }
174
-
175
- .bp_accordion_module_accordionHeader--aef9c{
112
+ .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_content--ab47a{
176
113
  color:var(--text-text-on-light);
177
- display:flex;
178
114
  font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
179
- font-size:.9375rem;
180
- font-weight:700;
181
- justify-content:space-between;
115
+ font-size:.875rem;
116
+ font-weight:400;
182
117
  letter-spacing:.01875rem;
183
118
  line-height:1.25rem;
184
- margin:0;
185
- text-align:initial;
186
119
  text-decoration:none;
187
120
  text-transform:none;
188
- width:100%;
189
121
  }
190
-
191
- .bp_accordion_module_accordionHeaderTrigger--aef9c{
192
- align-items:center;
193
- display:flex;
122
+ .bp_base_inline_notice_module_noticeWrapper--ab47a svg{
123
+ display:block;
194
124
  }
195
-
196
- .bp_accordion_module_accordionStatus--aef9c{
197
- margin-inline-start:var(--space-2);
125
+ .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_title--ab47a{
126
+ font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
127
+ font-size:.875rem;
128
+ font-weight:700;
129
+ letter-spacing:.01875rem;
130
+ line-height:1.25rem;
131
+ text-decoration:none;
132
+ text-transform:none;
198
133
  }
199
134
 
200
- .bp_accordion_module_accordionTrigger--aef9c{
201
- align-items:center;
202
- background-color:var(--surface-surface);
203
- border:none;
204
- display:flex;
205
- height:100%;
206
- padding:var(--space-4);
207
- padding-inline-end:var(--space-6);
208
- text-transform:capitalize;
209
- width:100%;
210
- }
211
- .bp_accordion_module_accordionTrigger--aef9c:active{
212
- background-color:var(--surface-surface);
213
- }
214
- .bp_accordion_module_accordionTrigger--aef9c:hover{
215
- background-color:var(--surface-accordion-surface-hover);
216
- cursor:pointer;
217
- }
218
- .bp_accordion_module_accordionTrigger--aef9c:focus-visible{
219
- background-color:var(--surface-surface-hover);
220
- box-shadow:inset 0 0 0 var(--border-2) var(--outline-focus-on-light);
221
- outline:none;
222
- }
223
- .bp_accordion_module_accordionTrigger--aef9c:disabled{
224
- cursor:default;
225
- opacity:.3;
226
- }
227
- .bp_accordion_module_accordionTrigger--aef9c:disabled:hover{
228
- background-color:var(--gray-white);
229
- }
230
- .bp_accordion_module_accordionTrigger--aef9c .bp_accordion_module_accordionTriggerIcon--aef9c{
231
- color:var(--gray-50);
232
- flex-shrink:0;
233
- margin-inline-start:var(--space-3);
234
- }
235
- .bp_accordion_module_accordionTrigger--aef9c[data-state=open] .bp_accordion_module_accordionTriggerIcon--aef9c{
236
- transform:rotate(180deg);
135
+ @media (max-width: 1023px){
136
+ .bp_base_inline_notice_module_actions--ab47a{
137
+ margin-top:var(--space-3);
138
+ }
139
+ .bp_base_inline_notice_module_noticeWrapper--ab47a{
140
+ display:block;
141
+ }
237
142
  }
238
143
 
239
144
  .bp_loading_indicator_module_crawler--59b39{
@@ -410,126 +315,17 @@
410
315
  padding:0 var(--size-4);
411
316
  }
412
317
  .bp_base_button_module_button--fe56c.bp_base_button_module_large--fe56c.bp_base_button_module_isIconButton--fe56c{
413
- height:var(--size-10);
414
- padding:0 calc((var(--size-10) - var(--size-5))/2);
415
- width:var(--size-10);
416
- }
417
- .bp_base_button_module_button--fe56c.bp_base_button_module_hide--fe56c{
418
- pointer-events:none;
419
- position:relative;
420
- }
421
- .bp_base_button_module_button--fe56c.bp_base_button_module_hide--fe56c span{
422
- color:#0000;
423
- opacity:0;
424
- }
425
-
426
- .bp_base_inline_notice_module_noticeWrapper--ab47a{
427
- border-radius:var(--radius-2);
428
- display:flex;
429
- gap:var(--space-3);
430
- justify-content:space-between;
431
- padding:var(--space-3) var(--space-4);
432
- }
433
- .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actions--ab47a{
434
- align-self:center;
435
- display:flex;
436
- gap:var(--space-3);
437
- justify-content:flex-end;
438
- }
439
- .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a,.bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a{
440
- height:var(--space-8);
441
- }
442
- .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a,.bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:hover{
443
- background:#0000;
444
- }
445
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundYellow--ab47a{
446
- background:var(--surface-message-surface-warning-secondary);
447
- }
448
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundBlue--ab47a{
449
- background:var(--surface-message-surface-info-secondary);
450
- }
451
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundRed--ab47a{
452
- background:var(--surface-message-surface-error-secondary);
453
- }
454
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundGreen--ab47a{
455
- background:var(--surface-message-surface-success-secondary);
456
- }
457
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a{
458
- background:var(--surface-message-surface-promo-secondary);
459
- }
460
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a{
461
- background:var(--surface-cta-surface-tertiary-promo);
462
- color:var(--text-cta-promo);
463
- }
464
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:active{
465
- background:var(--surface-cta-surface-tertiary-promo-pressed);
466
- }
467
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a[data-focus-visible]{
468
- background:var(--surface-cta-surface-tertiary-promo-focus);
469
- }
470
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:hover{
471
- background:var(--surface-cta-surface-tertiary-promo-hover);
472
- }
473
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:focus:active{
474
- background:var(--surface-cta-surface-tertiary-promo-focus-pressed);
475
- }
476
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonTertiary--ab47a:hover:active{
477
- background:var(--surface-cta-surface-tertiary-promo-pressed);
478
- }
479
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a{
480
- background:var(--surface-cta-surface-promo);
481
- border-color:var(--surface-cta-surface-promo);
482
- }
483
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:active{
484
- background:var(--surface-cta-surface-promo-pressed);
485
- }
486
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a[data-focus-visible]{
487
- background:var(--surface-cta-surface-promo-focus);
488
- }
489
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:hover{
490
- background:var(--surface-cta-surface-promo-hover);
491
- border-color:var(--surface-cta-surface-promo-hover);
492
- }
493
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:focus:active{
494
- background:var(--surface-cta-surface-promo-focus-pressed);
495
- }
496
- .bp_base_inline_notice_module_noticeWrapper--ab47a.bp_base_inline_notice_module_backgroundPurple--ab47a .bp_base_inline_notice_module_actionButtonPrimary--ab47a:hover:active{
497
- background:var(--surface-cta-surface-promo-pressed);
498
- }
499
- .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_contentContainer--ab47a{
500
- display:flex;
501
- gap:var(--space-3);
502
- }
503
- .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_content--ab47a{
504
- color:var(--text-text-on-light);
505
- font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
506
- font-size:.875rem;
507
- font-weight:400;
508
- letter-spacing:.01875rem;
509
- line-height:1.25rem;
510
- text-decoration:none;
511
- text-transform:none;
512
- }
513
- .bp_base_inline_notice_module_noticeWrapper--ab47a svg{
514
- display:block;
515
- }
516
- .bp_base_inline_notice_module_noticeWrapper--ab47a .bp_base_inline_notice_module_title--ab47a{
517
- font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
518
- font-size:.875rem;
519
- font-weight:700;
520
- letter-spacing:.01875rem;
521
- line-height:1.25rem;
522
- text-decoration:none;
523
- text-transform:none;
318
+ height:var(--size-10);
319
+ padding:0 calc((var(--size-10) - var(--size-5))/2);
320
+ width:var(--size-10);
524
321
  }
525
-
526
- @media (max-width: 1023px){
527
- .bp_base_inline_notice_module_actions--ab47a{
528
- margin-top:var(--space-3);
529
- }
530
- .bp_base_inline_notice_module_noticeWrapper--ab47a{
531
- display:block;
532
- }
322
+ .bp_base_button_module_button--fe56c.bp_base_button_module_hide--fe56c{
323
+ pointer-events:none;
324
+ position:relative;
325
+ }
326
+ .bp_base_button_module_button--fe56c.bp_base_button_module_hide--fe56c span{
327
+ color:#0000;
328
+ opacity:0;
533
329
  }
534
330
 
535
331
  .bp_text_module_textReset--fcca1{
@@ -662,6 +458,215 @@
662
458
  text-transform:none;
663
459
  }
664
460
 
461
+ .bp_status_module_interactiveStatus--88fd7{
462
+ border:initial;
463
+ cursor:default;
464
+ max-width:100%;
465
+ padding:initial;
466
+ vertical-align:top;
467
+ }
468
+ .bp_status_module_interactiveStatus--88fd7:focus-visible{
469
+ box-shadow:0 0 0 .125rem #2486fc;
470
+ outline:none;
471
+ overflow:visible;
472
+ }
473
+ .bp_status_module_interactiveStatus--88fd7:hover{
474
+ background-color:var(--status-interactive-background-color-hover, #e8e8e8);
475
+ box-shadow:0 0 0 .1875rem #0000000a;
476
+ }
477
+ .bp_status_module_interactiveStatus--88fd7:focus-visible{
478
+ background-color:var(--status-interactive-background-color-focus, #e8e8e8);
479
+ }
480
+
481
+ .bp_status_module_status--88fd7{
482
+ align-items:center;
483
+ background-color:var(--status-background-color, #e8e8e8);
484
+ border-radius:2rem;
485
+ color:#222;
486
+ display:flex;
487
+ font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
488
+ font-size:.625rem;
489
+ font-weight:700;
490
+ gap:.25rem;
491
+ height:1.25rem;
492
+ letter-spacing:.0375rem;
493
+ line-height:1rem;
494
+ padding-left:.5rem;
495
+ padding-right:.5rem;
496
+ text-decoration:none;
497
+ text-transform:none;
498
+ -webkit-user-select:text;
499
+ user-select:text;
500
+ white-space:nowrap;
501
+ }
502
+ .bp_status_module_status--88fd7.bp_status_module_reverse--88fd7{
503
+ flex-direction:row-reverse;
504
+ }
505
+ .bp_status_module_status--88fd7.bp_status_module_circle--88fd7{
506
+ padding:0 3px;
507
+ }
508
+ .bp_status_module_status--88fd7 .bp_status_module_text--88fd7{
509
+ overflow:hidden;
510
+ text-overflow:ellipsis;
511
+ }
512
+ .bp_status_module_status--88fd7 > svg{
513
+ flex:0 0 auto;
514
+ white-space:nowrap;
515
+ }
516
+
517
+ .bp_status_module_maxContainer--88fd7{
518
+ display:inline-block;
519
+ max-width:100%;
520
+ vertical-align:middle;
521
+ }
522
+ .bp_status_module_colorSurfaceStatusSurfaceGray--88fd7,.bp_status_module_colorSurfaceStatusSurfaceGray--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceGray--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
523
+ background-color:#e8e8e8;
524
+ }
525
+ .bp_status_module_colorSurfaceStatusSurfaceYellow--88fd7,.bp_status_module_colorSurfaceStatusSurfaceYellow--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceYellow--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
526
+ background-color:#ffeb7f;
527
+ }
528
+ .bp_status_module_colorSurfaceStatusSurfaceOrange--88fd7,.bp_status_module_colorSurfaceStatusSurfaceOrange--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceOrange--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
529
+ background-color:#f8c08c;
530
+ }
531
+ .bp_status_module_colorSurfaceStatusSurfaceRed--88fd7,.bp_status_module_colorSurfaceStatusSurfaceRed--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceRed--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
532
+ background-color:#f69bab;
533
+ }
534
+ .bp_status_module_colorSurfaceStatusSurfacePurple--88fd7,.bp_status_module_colorSurfaceStatusSurfacePurple--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfacePurple--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
535
+ background-color:#cf9ff6;
536
+ }
537
+ .bp_status_module_colorSurfaceStatusSurfaceLightBlue--88fd7,.bp_status_module_colorSurfaceStatusSurfaceLightBlue--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceLightBlue--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
538
+ background-color:#91c2fd;
539
+ }
540
+ .bp_status_module_colorSurfaceStatusSurfaceDarkBlue--88fd7,.bp_status_module_colorSurfaceStatusSurfaceDarkBlue--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceDarkBlue--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
541
+ background-color:#7f9dc1;
542
+ }
543
+ .bp_status_module_colorSurfaceStatusSurfaceGreen--88fd7,.bp_status_module_colorSurfaceStatusSurfaceGreen--88fd7.bp_status_module_interactiveStatus--88fd7:focus-visible,.bp_status_module_colorSurfaceStatusSurfaceGreen--88fd7.bp_status_module_interactiveStatus--88fd7:hover{
544
+ background-color:#92e0c0;
545
+ }
546
+
547
+ .bp_accordion_module_accordionContent--81559[data-state=open]{
548
+ animation:bp_accordion_module_slideDown--81559 .15s ease-out;
549
+ }
550
+
551
+ .bp_accordion_module_accordionContent--81559[data-state=closed]{
552
+ animation:bp_accordion_module_slideUp--81559 .15s ease-out;
553
+ }
554
+
555
+ .bp_accordion_module_accordionContent--81559{
556
+ overflow:hidden;
557
+ }
558
+
559
+ @keyframes bp_accordion_module_slideDown--81559{
560
+ from{
561
+ height:0;
562
+ }
563
+ to{
564
+ height:var(--radix-accordion-content-height);
565
+ }
566
+ }
567
+ @keyframes bp_accordion_module_slideUp--81559{
568
+ from{
569
+ height:var(--radix-accordion-content-height);
570
+ }
571
+ to{
572
+ height:0;
573
+ }
574
+ }
575
+ .bp_accordion_module_accordionContentWrapper--81559{
576
+ display:flex;
577
+ flex-direction:column;
578
+ gap:var(--space-4);
579
+ padding-block:var(--space-4);
580
+ padding-block-end:var(--space-6);
581
+ padding-inline:var(--space-4);
582
+ }
583
+
584
+ .bp_accordion_module_accordionInlineErrorWrapper--81559{
585
+ padding-block-start:var(--space-4);
586
+ padding-inline:var(--space-4);
587
+ }
588
+
589
+ .bp_accordion_module_accordionItem--81559{
590
+ border-bottom:var(--border-1) solid var(--border-divider-border);
591
+ min-width:320px;
592
+ }
593
+ .bp_accordion_module_accordionItem--81559,.bp_accordion_module_accordionItem--81559 > [data-state=open]{
594
+ background-color:var(--surface-accordion-surface);
595
+ }
596
+
597
+ .bp_accordion_module_accordionFixedContent--81559{
598
+ background-color:var(--surface-surface);
599
+ display:flex;
600
+ flex-direction:column;
601
+ gap:var(--space-4);
602
+ padding-block:var(--space-5);
603
+ padding-inline:var(--space-4);
604
+ }
605
+
606
+ .bp_accordion_module_accordionHeader--81559{
607
+ color:var(--text-text-on-light);
608
+ display:flex;
609
+ font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
610
+ font-size:.9375rem;
611
+ font-weight:700;
612
+ justify-content:space-between;
613
+ letter-spacing:.01875rem;
614
+ line-height:1.25rem;
615
+ margin:0;
616
+ text-align:initial;
617
+ text-decoration:none;
618
+ text-transform:none;
619
+ width:100%;
620
+ }
621
+
622
+ .bp_accordion_module_accordionHeaderTrigger--81559{
623
+ align-items:center;
624
+ display:flex;
625
+ }
626
+
627
+ .bp_accordion_module_accordionStatus--81559{
628
+ margin-inline-start:var(--space-2);
629
+ }
630
+
631
+ .bp_accordion_module_accordionTrigger--81559{
632
+ align-items:center;
633
+ background-color:var(--surface-surface);
634
+ border:none;
635
+ display:flex;
636
+ height:100%;
637
+ padding:var(--space-4);
638
+ padding-inline-end:var(--space-6);
639
+ text-transform:capitalize;
640
+ width:100%;
641
+ }
642
+ .bp_accordion_module_accordionTrigger--81559:active{
643
+ background-color:var(--surface-surface);
644
+ }
645
+ .bp_accordion_module_accordionTrigger--81559:hover{
646
+ background-color:var(--surface-accordion-surface-hover);
647
+ cursor:pointer;
648
+ }
649
+ .bp_accordion_module_accordionTrigger--81559:focus-visible{
650
+ background-color:var(--surface-surface-hover);
651
+ box-shadow:inset 0 0 0 var(--border-2) var(--outline-focus-on-light);
652
+ outline:none;
653
+ }
654
+ .bp_accordion_module_accordionTrigger--81559:disabled{
655
+ cursor:default;
656
+ opacity:.3;
657
+ }
658
+ .bp_accordion_module_accordionTrigger--81559:disabled:hover{
659
+ background-color:var(--gray-white);
660
+ }
661
+ .bp_accordion_module_accordionTrigger--81559 .bp_accordion_module_accordionTriggerIcon--81559{
662
+ color:var(--gray-50);
663
+ flex-shrink:0;
664
+ margin-inline-start:var(--space-3);
665
+ }
666
+ .bp_accordion_module_accordionTrigger--81559[data-state=open] .bp_accordion_module_accordionTriggerIcon--81559{
667
+ transform:rotate(180deg);
668
+ }
669
+
665
670
  .bp_avatar_module_avatar--97423{
666
671
  all:unset;
667
672
  align-items:center;
@@ -5114,6 +5119,88 @@ table.bp_inline_table_module_inlineTable--b023b tr:not(:last-child) td{
5114
5119
  background-color:var(--surface-radio-surface-selected-hover);
5115
5120
  }
5116
5121
 
5122
+ .bp_radio_tiles_option_module_radioTileOption--db24b{
5123
+ background-color:var(--surface-radiotile-surface);
5124
+ border:var(--border-1) solid var(--border-radiotile-border);
5125
+ border-radius:var(--radius-3);
5126
+ box-sizing:border-box;
5127
+ cursor:pointer;
5128
+ display:inline-flex;
5129
+ max-width:100%;
5130
+ min-height:var(--size-10);
5131
+ overflow:hidden;
5132
+ pointer-events:auto;
5133
+ position:relative;
5134
+ transition:background-color var(--animation-duration-2), border var(--animation-duration-2);
5135
+ -webkit-user-select:none;
5136
+ user-select:none;
5137
+ }
5138
+ .bp_radio_tiles_option_module_radioTileOption--db24b .bp_radio_tiles_option_module_icon--db24b{
5139
+ display:inline-flex;
5140
+ }
5141
+ .bp_radio_tiles_option_module_radioTileOption--db24b .bp_radio_tiles_option_module_icon--db24b > svg > path{
5142
+ fill:var(--icon-icon-on-light-secondary);
5143
+ }
5144
+ .bp_radio_tiles_option_module_radioTileOption--db24b.bp_radio_tiles_option_module_disabled--db24b{
5145
+ opacity:.6;
5146
+ }
5147
+ .bp_radio_tiles_option_module_radioTileOption--db24b:has(:focus-visible){
5148
+ outline:2px solid var(--border-input-border-focus);
5149
+ outline-offset:var(--border-2);
5150
+ }
5151
+ .bp_radio_tiles_option_module_radioTileOption--db24b.bp_radio_tiles_option_module_checked--db24b{
5152
+ background-color:var(--surface-radiotile-surface-selected);
5153
+ border-color:#0000;
5154
+ box-shadow:0 0 0 2px var(--border-radiotile-border-selected);
5155
+ }
5156
+ .bp_radio_tiles_option_module_radioTileOption--db24b.bp_radio_tiles_option_module_checked--db24b:focus-within{
5157
+ outline-offset:var(--border-3);
5158
+ }
5159
+ .bp_radio_tiles_option_module_radioTileOption--db24b.bp_radio_tiles_option_module_checked--db24b .bp_radio_tiles_option_module_icon--db24b > svg > path{
5160
+ fill:var(--icon-icon-blue);
5161
+ }
5162
+ .bp_radio_tiles_option_module_radioTileOption--db24b:hover:not(.bp_radio_tiles_option_module_disabled--db24b, .bp_radio_tiles_option_module_checked--db24b){
5163
+ background-color:var(--surface-radiotile-surface-hover);
5164
+ border:var(--border-1) solid var(--border-radiotile-border-hover);
5165
+ }
5166
+ .bp_radio_tiles_option_module_radioTileOption--db24b > label{
5167
+ align-items:center;
5168
+ box-sizing:border-box;
5169
+ cursor:inherit;
5170
+ display:flex;
5171
+ flex-direction:column;
5172
+ gap:var(--space-2);
5173
+ justify-content:center;
5174
+ padding:var(--space-2);
5175
+ width:100%;
5176
+ }
5177
+
5178
+ .bp_radio_tiles_option_module_radioTileLabel--db24b{
5179
+ max-width:100%;
5180
+ overflow:hidden;
5181
+ text-align:center;
5182
+ text-overflow:ellipsis;
5183
+ white-space:nowrap;
5184
+ }
5185
+
5186
+ .bp_radio_tiles_module_radioTiles--94f93{
5187
+ display:flex;
5188
+ gap:var(--space-2);
5189
+ }
5190
+ .bp_radio_tiles_module_radioTiles--94f93.bp_radio_tiles_module_hasColumns--94f93{
5191
+ flex-wrap:wrap;
5192
+ }
5193
+ .bp_radio_tiles_module_radioTiles--94f93.bp_radio_tiles_module_hasColumns--94f93 > *{
5194
+ width:100%;
5195
+ }
5196
+ .bp_radio_tiles_module_radioTiles--94f93.bp_radio_tiles_module_default--94f93 > *{
5197
+ flex:1 1 calc(100%/var(--columns) - var(--space-2));
5198
+ width:100%;
5199
+ }
5200
+ .bp_radio_tiles_module_radioTiles--94f93.bp_radio_tiles_module_compact--94f93 > *{
5201
+ flex:0 1 calc(100%/var(--columns) - var(--space-2) + var(--space-2)/var(--columns));
5202
+ }
5203
+
5117
5204
  .bp_search_module_search--b65f4{
5118
5205
  font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
5119
5206
  font-size:.875rem;
@@ -46,6 +46,7 @@ export * from './primitives/select-menu-grid';
46
46
  export * from './primitives/supplementary-fonts';
47
47
  export * from './primitives/tabs';
48
48
  export * from './radio-group';
49
+ export * from './radio-tiles';
49
50
  export * from './search-input';
50
51
  export * from './select';
51
52
  export * from './side-panel';
package/lib-esm/index.js CHANGED
@@ -61,6 +61,8 @@ export { useSupplementaryFonts } from './primitives/supplementary-fonts/useSuppl
61
61
  export { getSupplementaryFontFacesConfig } from './primitives/supplementary-fonts/get-supplementary-font-faces-config.js';
62
62
  export { Tabs } from './primitives/tabs/index.js';
63
63
  export { Radio } from './radio-group/index.js';
64
+ export { RadioTiles } from './radio-tiles/radio-tiles.js';
65
+ export { RadioTilesOption } from './radio-tiles/radio-tiles-option.js';
64
66
  export { SearchInput } from './search-input/index.js';
65
67
  export { SELECT_EMPTY_VALUE, Select } from './select/select.js';
66
68
  export { SidePanel } from './side-panel/side-panel.js';
@@ -0,0 +1,3 @@
1
+ export { RadioTiles } from './radio-tiles';
2
+ export { RadioTilesOption } from './radio-tiles-option';
3
+ export type { RadioTilesProps, RadioTilesOptionProps } from './types';
@@ -0,0 +1,2 @@
1
+ import { type RadioTilesOptionProps } from './types';
2
+ export declare const RadioTilesOption: <T extends string>({ children, value, label, icon, disabled: disabledProp, className, "aria-label": ariaLabel, }: RadioTilesOptionProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,82 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import React__default, { useRef } from 'react';
3
+ import clsx from 'clsx';
4
+ import { Text } from '../text/text.js';
5
+ import { useRadioTilesContext } from './radio-tiles.context.js';
6
+ import styles from './radio-tiles-option.module.js';
7
+ import { useFullTextTooltip } from '../utils/useFullTextTooltip.js';
8
+ import { VisuallyHidden } from '../visually-hidden/visually-hidden.js';
9
+
10
+ const RadioTilesOption = function RadioTilesOption({
11
+ children,
12
+ value,
13
+ label,
14
+ icon,
15
+ disabled: disabledProp,
16
+ className,
17
+ 'aria-label': ariaLabel
18
+ }) {
19
+ const {
20
+ name,
21
+ selectedValue,
22
+ disabled,
23
+ onChange
24
+ } = useRadioTilesContext();
25
+ const labelRef = useRef(null);
26
+ const {
27
+ Wrapper: Tooltip,
28
+ wrapperProps
29
+ } = useFullTextTooltip({
30
+ ref: labelRef,
31
+ textValue: label
32
+ });
33
+ const isSelected = selectedValue === value;
34
+ const isDisabled = disabled || disabledProp;
35
+ const handleChange = event => {
36
+ if (isDisabled) {
37
+ event.preventDefault();
38
+ return;
39
+ }
40
+ onChange(event);
41
+ };
42
+ const radioTileClassNames = clsx(styles.radioTileOption, {
43
+ [styles.checked]: isSelected,
44
+ [styles.disabled]: isDisabled
45
+ }, className);
46
+ return (
47
+ // @ts-expect-error Fix this type error - DSYS-1597
48
+ jsx(Tooltip, {
49
+ ...wrapperProps,
50
+ children: jsx("div", {
51
+ className: radioTileClassNames,
52
+ children: jsxs("label", {
53
+ children: [jsx(VisuallyHidden, {
54
+ children: jsx("input", {
55
+ checked: isSelected,
56
+ disabled: isDisabled,
57
+ name: name,
58
+ onChange: handleChange,
59
+ type: "radio",
60
+ value: value
61
+ })
62
+ }), icon && jsx("div", {
63
+ className: styles.icon,
64
+ children: /*#__PURE__*/React__default.cloneElement(icon, {
65
+ 'aria-label': label || ariaLabel
66
+ })
67
+ }), children && /*#__PURE__*/React__default.cloneElement(children, {
68
+ 'aria-label': label || ariaLabel
69
+ }), label && jsx(Text, {
70
+ ref: labelRef,
71
+ as: "p",
72
+ className: styles.radioTileLabel,
73
+ variant: "bodyDefault",
74
+ children: label
75
+ })]
76
+ })
77
+ })
78
+ })
79
+ );
80
+ };
81
+
82
+ export { RadioTilesOption };
@@ -0,0 +1,4 @@
1
+ import '../index.css';
2
+ var styles = {"radioTileOption":"bp_radio_tiles_option_module_radioTileOption--db24b","icon":"bp_radio_tiles_option_module_icon--db24b","disabled":"bp_radio_tiles_option_module_disabled--db24b","checked":"bp_radio_tiles_option_module_checked--db24b","radioTileLabel":"bp_radio_tiles_option_module_radioTileLabel--db24b"};
3
+
4
+ export { styles as default };
@@ -0,0 +1,9 @@
1
+ import { type ChangeEvent } from 'react';
2
+ export interface RadioTilesContextValue {
3
+ name?: string;
4
+ disabled?: boolean;
5
+ selectedValue: string | undefined | null;
6
+ onChange: (event: ChangeEvent<HTMLInputElement>) => void;
7
+ }
8
+ export declare const RadioTilesContext: import("react").Context<RadioTilesContextValue | null>;
9
+ export declare const useRadioTilesContext: () => RadioTilesContextValue;
@@ -0,0 +1,12 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ const RadioTilesContext = /*#__PURE__*/createContext(null);
4
+ const useRadioTilesContext = () => {
5
+ const context = useContext(RadioTilesContext);
6
+ if (!context) {
7
+ throw new Error('useRadioTilesContext cannot be used outside the RadioTilesContext.Provider');
8
+ }
9
+ return context;
10
+ };
11
+
12
+ export { RadioTilesContext, useRadioTilesContext };
@@ -0,0 +1,4 @@
1
+ import { type RadioTilesProps } from './types';
2
+ export declare const RadioTiles: (<T extends string | null = string>({ children, name, value, variant, columns, disabled, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onChange, }: RadioTilesProps<T>) => import("react/jsx-runtime").JSX.Element) & {
3
+ Option: <T_1 extends string>({ children, value, label, icon, disabled: disabledProp, className, "aria-label": ariaLabel, }: import("./types").RadioTilesOptionProps<T_1>) => import("react/jsx-runtime").JSX.Element;
4
+ };
@@ -0,0 +1,48 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useMemo } from 'react';
3
+ import clsx from 'clsx';
4
+ import { RadioTilesOption } from './radio-tiles-option.js';
5
+ import { RadioTilesContext } from './radio-tiles.context.js';
6
+ import styles from './radio-tiles.module.js';
7
+
8
+ const RadioTilesRoot = ({
9
+ children,
10
+ name,
11
+ value,
12
+ variant = 'default',
13
+ columns,
14
+ disabled,
15
+ 'aria-label': ariaLabel,
16
+ 'aria-labelledby': ariaLabelledBy,
17
+ onChange
18
+ }) => {
19
+ const containerStyles = {
20
+ '--columns': columns
21
+ };
22
+ const containerClassNames = clsx(styles.radioTiles, {
23
+ [styles.hasColumns]: Number(columns) > 0,
24
+ [variant === 'compact' ? styles.compact : styles.default]: true
25
+ });
26
+ const contextValue = useMemo(() => ({
27
+ name,
28
+ selectedValue: value,
29
+ disabled,
30
+ onChange
31
+ }), [name, value, disabled, onChange]);
32
+ return jsx(RadioTilesContext.Provider, {
33
+ value: contextValue,
34
+ children: jsx("div", {
35
+ "aria-label": ariaLabel,
36
+ "aria-labelledby": ariaLabelledBy,
37
+ className: containerClassNames,
38
+ role: "radiogroup",
39
+ style: containerStyles,
40
+ children: children
41
+ })
42
+ });
43
+ };
44
+ const RadioTiles = Object.assign(RadioTilesRoot, {
45
+ Option: RadioTilesOption
46
+ });
47
+
48
+ export { RadioTiles };
@@ -0,0 +1,4 @@
1
+ import '../index.css';
2
+ var styles = {"radioTiles":"bp_radio_tiles_module_radioTiles--94f93","hasColumns":"bp_radio_tiles_module_hasColumns--94f93","default":"bp_radio_tiles_module_default--94f93","compact":"bp_radio_tiles_module_compact--94f93"};
3
+
4
+ export { styles as default };
@@ -0,0 +1,48 @@
1
+ import { type ChangeEvent, type CSSProperties, type ReactElement, type SVGProps } from 'react';
2
+ /**
3
+ * RadioTilesProps
4
+ */
5
+ interface WithAriaLabel {
6
+ 'aria-label': string;
7
+ 'aria-labelledby'?: never;
8
+ }
9
+ interface WithAriaLabelledBy {
10
+ 'aria-label'?: never;
11
+ 'aria-labelledby': string;
12
+ }
13
+ export type RadioTilesProps<T extends string | null = string | null> = {
14
+ children: ReactElement<RadioTilesOptionProps<NonNullable<T>>>[];
15
+ name?: string;
16
+ value?: T;
17
+ gap?: string;
18
+ columns?: number;
19
+ variant?: 'default' | 'compact';
20
+ disabled?: boolean;
21
+ onChange: (event: ChangeEvent<HTMLInputElement>) => void;
22
+ } & (WithAriaLabel | WithAriaLabelledBy);
23
+ /**
24
+ * RadioTilesOptionProps
25
+ */
26
+ interface WithIcon {
27
+ icon?: ReactElement<SVGProps<SVGSVGElement>>;
28
+ children?: never;
29
+ }
30
+ interface WithoutIcon {
31
+ icon?: never;
32
+ children: ReactElement;
33
+ }
34
+ interface WithLabel {
35
+ label: string;
36
+ 'aria-label'?: never;
37
+ }
38
+ interface WithoutLabel {
39
+ label?: never;
40
+ 'aria-label': string;
41
+ }
42
+ export type RadioTilesOptionProps<T extends string = string> = {
43
+ value: T;
44
+ disabled?: boolean;
45
+ className?: string;
46
+ style?: CSSProperties;
47
+ } & (WithIcon | WithoutIcon) & (WithLabel | WithoutLabel);
48
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/blueprint-web",
3
- "version": "8.3.1",
3
+ "version": "8.4.1",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
@@ -63,7 +63,7 @@
63
63
  "react-stately": "^3.31.1",
64
64
  "tsx": "^4.16.5"
65
65
  },
66
- "gitHead": "bef9db208515d53f0fb75d387d1740b389f6f753",
66
+ "gitHead": "f477bbfa6a9fbb2c9c533a43c1f59acf03ad0e7b",
67
67
  "module": "lib-esm/index.js",
68
68
  "main": "lib-esm/index.js",
69
69
  "exports": {