@digital-ai/dot-components 4.13.0 → 4.15.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.
package/index.esm.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
- import React__default, { useState, useRef, useEffect, createContext, useMemo, useContext, forwardRef, useCallback, createElement, Fragment as Fragment$1, useLayoutEffect } from 'react';
4
- import { Tooltip, InputAdornment, InputLabel, TextField, Icon, Typography, Accordion, AccordionSummary, AccordionDetails, AccordionActions, Toolbar, Fade, StyledEngineProvider, Alert, Avatar, Button, Link, List, ListSubheader, Divider, CircularProgress, Popper, MenuList, MenuItem, Paper, ClickAwayListener, Drawer, IconButton, ListItem, ListItemButton, Collapse, ListItemIcon, ListItemText, Badge, useMediaQuery, Chip, Autocomplete, AvatarGroup, Breadcrumbs, ToggleButtonGroup, ToggleButton, Card, CardContent, CardHeader, FormControlLabel, Checkbox, FormControl, FormGroup, FormLabel, FormHelperText, Dialog, DialogContent, DialogActions, useTheme as useTheme$1, Snackbar, RadioGroup, Radio, Switch, Skeleton, ButtonGroup, Stepper, Step, StepLabel, TablePagination, TableContainer, TableBody, TableCell, TableRow, TableSortLabel, TableHead, Table, Tabs, Tab, LinearProgress, Slide } from '@mui/material';
5
- import '@digital-ai/dot-icons';
6
- import styled, { css, createGlobalStyle, ThemeProvider as ThemeProvider$1, keyframes } from 'styled-components';
3
+ import React__default, { useEffect, useState, useRef, createContext, useMemo, useContext, forwardRef, useCallback, createElement, Fragment as Fragment$1, useLayoutEffect } from 'react';
4
+ import { Typography, Fade, StyledEngineProvider, Tooltip, InputAdornment, InputLabel, TextField, Icon, Accordion, AccordionSummary, AccordionDetails, AccordionActions, Toolbar, Alert, Avatar, Button, Link, List, ListSubheader, Divider, CircularProgress, Popper, MenuList, MenuItem, Paper, ClickAwayListener, Drawer, IconButton, ListItem, ListItemButton, Collapse, ListItemIcon, ListItemText, Badge, useMediaQuery, Chip, Autocomplete, AvatarGroup, Breadcrumbs, ToggleButtonGroup, ToggleButton, Card, CardContent, CardHeader, FormControlLabel, Checkbox, FormControl, FormGroup, FormLabel, FormHelperText, Dialog, DialogContent, DialogActions, useTheme as useTheme$1, Snackbar, RadioGroup, Radio, Switch, Skeleton, ButtonGroup, Stepper, Step, StepLabel, TablePagination, TableContainer, TableBody, TableCell, TableRow, TableSortLabel, TableHead, Table, Tabs, Tab, LinearProgress, Slide } from '@mui/material';
7
5
  import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles';
6
+ import styled, { createGlobalStyle, ThemeProvider as ThemeProvider$1, css, keyframes } from 'styled-components';
7
+ import '@digital-ai/dot-icons';
8
8
  import jwt_decode from 'jwt-decode';
9
9
  import '@digital-ai/dot-illustrations';
10
10
  import { DatePicker, PickersDay, TimePicker, LocalizationProvider } from '@mui/x-date-pickers';
@@ -42,756 +42,166 @@ const checkIfOverflowPresentInElementTree = element => {
42
42
  return false;
43
43
  };
44
44
 
45
- const DotTooltip = ({
45
+ const DotTypography = ({
46
46
  ariaLabel,
47
- ariaRole = 'tooltip',
48
- arrow = true,
49
- children,
47
+ ariaLevel,
48
+ ariaRole,
50
49
  className,
51
50
  'data-testid': dataTestId,
52
- disablePortal = false,
53
- disableInteractive = false,
54
- followCursor = false,
55
- enterDelay = 600,
56
- enterNextDelay = 0,
57
- hoverVisibility = 'always',
58
- leaveDelay,
59
- onClose,
60
- open,
61
- placement = 'bottom',
62
- popperClassName,
63
- slotProps,
64
- title,
65
- childrenDisplayStyle
51
+ children,
52
+ component,
53
+ noMarginBottom,
54
+ noWrap,
55
+ variant
66
56
  }) => {
67
- const rootClasses = useStylesWithRootClass('dot-tooltip', className);
68
- const [hasTooltipOnHover, setHasTooltipOnHover] = useState(false);
69
- const childrenWrapperRef = useRef();
57
+ const rootClasses = useStylesWithRootClass('dot-typography', className);
70
58
  useEffect(() => {
71
- if (hoverVisibility !== 'overflow') return;
72
- const resizeObserver = new ResizeObserver(checkIfTooltipShouldBeRendered);
73
- if (childrenWrapperRef.current) {
74
- resizeObserver.observe(childrenWrapperRef.current);
59
+ if (ariaRole === 'heading' && !ariaLevel) {
60
+ console.warn('please include ariaLevel when using ariaRole="heading"');
75
61
  }
76
- checkIfTooltipShouldBeRendered();
77
- return () => {
78
- if (childrenWrapperRef.current) {
79
- resizeObserver.unobserve(childrenWrapperRef.current);
80
- }
81
- };
82
- }, [childrenWrapperRef.current, children, hoverVisibility]);
83
- const checkIfTooltipShouldBeRendered = () => {
84
- if (!childrenWrapperRef || !childrenWrapperRef.current) return;
85
- const isOverflowPresent = checkIfOverflowPresentInElementTree(childrenWrapperRef.current);
86
- setHasTooltipOnHover(isOverflowPresent);
87
- };
88
- if (!title) {
89
- return children;
90
- }
91
- return jsx(Tooltip, {
92
- "aria-hidden": false,
93
- "aria-label": ariaLabel || title.toString(),
94
- arrow: arrow,
95
- className: rootClasses,
96
- "data-testid": dataTestId,
97
- disableHoverListener: hoverVisibility === 'never' || hoverVisibility === 'overflow' && !hasTooltipOnHover,
98
- disableInteractive: disableInteractive,
99
- leaveDelay: leaveDelay,
100
- enterDelay: enterDelay,
101
- enterNextDelay: enterNextDelay,
102
- onClose: onClose,
103
- open: open,
104
- placement: placement,
105
- PopperProps: {
106
- disablePortal,
107
- className: popperClassName
62
+ if (noMarginBottom) {
63
+ console.warn('DEPRECATED: `noMarginBottom` on `DotTypography` is no longer included');
64
+ }
65
+ }, []);
66
+ return jsx(Typography, {
67
+ "aria-label": ariaLabel,
68
+ "aria-level": ariaLevel,
69
+ classes: {
70
+ root: rootClasses
108
71
  },
109
- slotProps: slotProps,
72
+ component: component,
73
+ "data-testid": dataTestId,
74
+ noWrap: noWrap,
110
75
  role: ariaRole,
111
- title: title,
112
- followCursor: followCursor,
113
- children: jsx("span", {
114
- style: {
115
- display: childrenDisplayStyle
116
- },
117
- ref: childrenWrapperRef,
118
- tabIndex: -1,
119
- children: children
120
- })
76
+ style: {
77
+ marginBottom: noMarginBottom ? 0 : undefined
78
+ },
79
+ variant: variant,
80
+ children: children
121
81
  });
122
82
  };
123
83
 
124
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
125
- const formHelperTextRootStyles = theme => css`
126
- align-items: flex-end;
127
- color: ${theme.palette.figma.typography.gray};
128
- display: flex;
129
- font-family: ${theme.typography.fontFamily};
130
- font-size: ${theme.typography.body2.fontSize}px;
131
- font-weight: 400;
132
- margin: ${theme.spacing(0.5, 0, 0, 1.5)};
133
-
134
- &.read-only .MuiOutlinedInput-root:hover > fieldset {
135
- border-color: ${theme.palette.figma.typography.black};
136
- }
137
- `;
138
- const adornmentIconStyles = () => css`
139
- font-size: 24px;
140
- height: 24px;
141
- padding: 0;
142
- width: 24px;
143
- `;
144
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
- const pickerInputStyles = theme => css`
146
- label:not(.MuiInputLabel-shrink) {
147
- top: -5px;
148
- }
149
-
150
- .MuiInputBase-root {
151
- margin-bottom: 0;
152
-
153
- .dot-error-icon {
154
- margin-right: ${theme.spacing(0.5)};
155
- color: ${theme.palette.figma.destructive.normal};
156
- }
157
-
158
- .dot-icon {
159
- ${adornmentIconStyles()};
160
- }
161
- }
162
-
163
- .MuiInputBase-input {
164
- height: ${theme.spacing(2)};
165
- padding: ${theme.spacing(1.5, 0, 1.5, 2)};
166
- }
167
-
168
- .MuiFormHelperText-root {
169
- ${formHelperTextRootStyles(theme)};
170
- }
171
- `;
172
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
173
- const readOnlyStyles = theme => css`
174
- background: ${theme.palette.figma.disabled.normal};
175
- color: ${theme.palette.figma.typography.disabled};
176
- border-color: ${theme.palette.figma.border.defaultButton};
177
- -webkit-text-fill-color: ${theme.palette.figma.typography.disabled};
178
-
179
- input.Mui-disabled {
180
- -webkit-text-fill-color: ${theme.palette.figma.typography.disabled};
181
- }
182
-
183
- .dot-chip {
184
- background: ${theme.palette.figma.disabled.normal};
185
- opacity: 1;
186
- }
187
- `;
188
-
189
- const rootClassName$1n = 'dot-text-field';
190
- const rootSelectClassName = 'dot-select-field';
191
- const wrapperClassName$2 = 'dot-label-wrapper';
192
- const labelClassName = 'dot-input-label';
193
- const errorClassName = 'dot-error';
194
- const warningClassName = 'dot-warning';
195
- const successClassName = 'dot-success';
196
- const adornmentIconClassName = 'dot-adornment-icon';
197
- const fieldsetClassName = 'MuiOutlinedInput-notchedOutline';
198
- const readOnlyClassName$1 = 'read-only';
199
- const resizerClassName = 'with-resizer';
200
- const ROW_HEIGHT = 37;
201
- const StyledAdornment = styled(InputAdornment)`
202
- .dot-icon {
203
- ${adornmentIconStyles()};
204
- }
205
- `;
206
- const StyledInputLabel = styled(InputLabel)`
207
- ${({
208
- theme
209
- }) => css`
210
- &.${labelClassName} {
211
- margin-bottom: ${theme.spacing(0.5)};
212
- transform: none;
213
-
214
- &.Mui-disabled .dot-typography {
215
- color: ${theme.palette.figma.typography.disabled};
216
- }
217
-
218
- &.Mui-error .dot-typography,
219
- &.MuiInputLabel-outlined.Mui-disabled,
220
- &.MuiInputLabel-outlined.Mui-disabled .dot-typography {
221
- color: ${theme.palette.figma.typography.black};
222
- }
223
-
224
- .dot-typography {
225
- display: inline;
226
- }
227
- }
228
- `}
229
- `;
230
- const StyledTextFieldContainer = styled.div`
231
- &.dot-input-text--fullwidth {
232
- width: 100%;
233
- }
234
- `;
235
- const StyledTextField = styled(TextField)`
236
- ${({
237
- theme,
238
- InputProps,
239
- $maxRows,
240
- $minRows
241
- }) => css`
242
- &.${rootClassName$1n} {
243
- .MuiInputBase-root {
244
- margin-bottom: 0;
245
-
246
- &:not(.MuiAutocomplete-inputRoot) {
247
- &.MuiInputBase-adornedStart {
248
- padding-left: ${theme.spacing(1.5)};
249
- }
250
- &.MuiInputBase-adornedEnd {
251
- padding-right: ${theme.spacing(1)};
252
- }
253
- }
254
- }
255
- .MuiInputBase-input {
256
- box-sizing: content-box;
257
- }
258
- .MuiOutlinedInput-input {
259
- padding: 18px ${InputProps.endAdornment ? '0px' : '12px'} 18px
260
- ${InputProps.startAdornment ? '0px' : '12px'};
261
- &::placeholder {
262
- opacity: 1;
263
- color: ${theme.palette.figma.typography.gray};
264
- }
265
- }
266
- .MuiInputBase-inputSizeSmall {
267
- padding-top: 10.5px;
268
- padding-bottom: 10.5px;
269
-
270
- &:not(textarea) {
271
- /* padding above and below together is 21px, and total height should be 40px */
272
- height: 19px;
273
- }
274
- }
275
-
276
- .MuiInputBase-multiline {
277
- .MuiInputBase-inputMultiline {
278
- padding: 0;
279
- }
280
-
281
- &.${resizerClassName} {
282
- resize: both;
283
- overflow: auto;
284
- height: ${$minRows ? ROW_HEIGHT * $minRows : ROW_HEIGHT}px;
285
- min-height: ${$minRows ? ROW_HEIGHT * $minRows : ROW_HEIGHT}px;
286
- max-height: ${$maxRows ? `${ROW_HEIGHT * $maxRows}px` : 'unset'};
287
- min-width: 170px;
288
-
289
- #custom-text-input.MuiInputBase-inputMultiline {
290
- height: 100% !important;
291
- width: 100%;
292
- }
293
- }
294
- }
295
-
296
- &.${readOnlyClassName$1} .MuiInputBase-root,
297
- .MuiInputBase-root.Mui-disabled {
298
- ${readOnlyStyles(theme)};
299
- }
300
-
301
- .MuiInputBase-adornedEnd .clear-icon-button.hidden {
302
- visibility: hidden;
303
- }
304
-
305
- .${adornmentIconClassName}.MuiInputAdornment-positionStart {
306
- margin-right: ${theme.spacing(0.5)};
307
- }
308
-
309
- .${adornmentIconClassName}.MuiInputAdornment-positionEnd {
310
- margin: ${theme.spacing(0)};
311
- }
312
- }
313
-
314
- .dot-select,
315
- .dot-input {
316
- &.${readOnlyClassName$1}, &.Mui-disabled {
317
- ${readOnlyStyles(theme)};
318
- }
319
- }
320
-
321
- &.${rootSelectClassName} .${adornmentIconClassName} {
322
- // inputSelect has an arrow so we need spacing for end adornment
323
- margin-right: ${theme.spacing(2)};
324
- }
325
-
326
- &.${rootSelectClassName}, &.${rootClassName$1n} {
327
- .${adornmentIconClassName} {
328
- color: ${theme.palette.figma.icon.black};
329
- p {
330
- font-size: ${theme.typography.body2.fontSize}px;
331
- margin: 0;
332
- }
333
-
334
- .dot-icon i {
335
- margin-top: -2px;
336
- }
337
- }
338
-
339
- .MuiInputLabel-root,
340
- .MuiInputLabel-root.Mui-error {
341
- color: ${theme.palette.figma.typography.gray};
342
-
343
- &.MuiInputLabel-shrink {
344
- color: ${theme.palette.figma.typography.black};
345
- }
346
- }
347
-
348
- .MuiInputBase-root {
349
- background: ${theme.palette.figma.neutral.normal};
350
- margin-bottom: 0;
351
- }
352
-
353
- .MuiInputBase-inputSizeSmall:not(textarea) {
354
- height: 19px;
355
- padding-top: 10.5px;
356
- padding-bottom: 10.5px;
357
- }
358
-
359
- select.dot-select {
360
- padding-left: ${theme.spacing(1.5)};
361
- }
362
-
363
- .MuiSelect-select:focus:not(.${readOnlyClassName$1}) {
364
- background-color: transparent;
365
- }
366
-
367
- .MuiSelect-icon {
368
- right: ${InputProps.endAdornment ? `44px` : `12px`};
369
- }
370
-
371
- &.${successClassName} {
372
- .MuiOutlinedInput-notchedOutline {
373
- border-color: ${theme.palette.figma.success.normal};
374
- }
375
-
376
- .${adornmentIconClassName} .dot-icon {
377
- color: ${theme.palette.figma.success.normal};
378
- }
379
- }
380
-
381
- &.${errorClassName} {
382
- .MuiOutlinedInput-notchedOutline {
383
- border-color: ${theme.palette.figma.destructive.normal};
384
- }
385
-
386
- .${adornmentIconClassName} .dot-icon {
387
- color: ${theme.palette.figma.destructive.normal};
388
- }
389
- }
390
-
391
- &.${warningClassName} {
392
- .MuiOutlinedInput-notchedOutline {
393
- border-color: ${theme.palette.figma.warning.normal};
394
- }
395
-
396
- .${adornmentIconClassName} .dot-icon {
397
- color: ${theme.palette.figma.warning.normal};
398
- }
399
- }
400
-
401
- .MuiOutlinedInput-adornedStart {
402
- padding-left: 12px;
403
-
404
- &.${warningClassName} .${fieldsetClassName} {
405
- border-color: ${theme.palette.figma.warning.normal};
406
- }
407
- }
408
-
409
- .MuiFormHelperText-root {
410
- ${formHelperTextRootStyles(theme)};
411
- }
412
- }
413
- `}
414
- `;
415
-
416
- const rootClassName$1m = 'dot-icon';
417
- const StyledIcon = styled(Icon)`
418
- ${({
419
- theme
420
- }) => css`
421
- &.${rootClassName$1m} {
422
- color: ${theme.palette.figma.icon.black};
423
- font-size: 20px;
424
-
425
- &.MuiIcon-fontSizeLarge {
426
- font-size: 28px;
427
- height: 35px;
428
- width: 35px;
429
-
430
- i {
431
- height: 28px;
432
- }
433
- }
434
- &.MuiIcon-fontSizeSmall {
435
- font-size: 18px;
436
-
437
- i {
438
- height: 18px;
439
- }
440
- }
441
-
442
- i {
443
- height: 20px;
444
- }
445
-
446
- &.${warningClassName} {
447
- color: ${theme.palette.figma.warning.normal};
448
- }
449
- }
450
- `}
451
- `;
452
-
453
- const DotIcon = ({
454
- ariaLabel,
455
- ariaRole = 'img',
456
- className,
457
- 'data-testid': dataTestId,
458
- fontSize = 'medium',
459
- iconId,
460
- tooltip
461
- }) => {
462
- const rootClasses = useStylesWithRootClass(rootClassName$1m, className);
463
- return jsx(DotTooltip, {
464
- childrenDisplayStyle: "inline-block",
465
- title: tooltip,
466
- children: jsx(StyledIcon, {
467
- "aria-hidden": "false",
468
- "aria-label": ariaLabel || `${iconId} icon`,
469
- classes: {
470
- root: rootClasses
471
- },
472
- "data-testid": dataTestId,
473
- fontSize: fontSize,
474
- role: ariaRole,
475
- children: jsx("i", {
476
- "aria-label": ariaLabel || `${iconId} icon`,
477
- className: `icon-${iconId} dot-i`,
478
- "data-testid": dataTestId && `${dataTestId}-i`,
479
- role: ariaRole
480
- })
481
- })
482
- });
483
- };
484
-
485
- const DotTypography = ({
486
- ariaLabel,
487
- ariaLevel,
488
- ariaRole,
489
- className,
490
- 'data-testid': dataTestId,
491
- children,
492
- component,
493
- noMarginBottom,
494
- noWrap,
495
- variant
496
- }) => {
497
- const rootClasses = useStylesWithRootClass('dot-typography', className);
498
- useEffect(() => {
499
- if (ariaRole === 'heading' && !ariaLevel) {
500
- console.warn('please include ariaLevel when using ariaRole="heading"');
501
- }
502
- if (noMarginBottom) {
503
- console.warn('DEPRECATED: `noMarginBottom` on `DotTypography` is no longer included');
504
- }
505
- }, []);
506
- return jsx(Typography, {
507
- "aria-label": ariaLabel,
508
- "aria-level": ariaLevel,
509
- classes: {
510
- root: rootClasses
511
- },
512
- component: component,
513
- "data-testid": dataTestId,
514
- noWrap: noWrap,
515
- role: ariaRole,
516
- style: {
517
- marginBottom: noMarginBottom ? 0 : undefined
518
- },
519
- variant: variant,
520
- children: children
521
- });
522
- };
523
-
524
- const rootClassName$1l = 'dot-accordion';
525
- const summaryClassName = 'dot-accordion-summary';
526
- const detailClassName = 'dot-accordion-details';
527
- const StyledAccordion = styled(Accordion)`
528
- ${({
529
- theme
530
- }) => css`
531
- .${detailClassName} {
532
- background: ${theme.palette.figma.background.level1.white};
533
- }
534
-
535
- &.${rootClassName$1l} .${summaryClassName} {
536
- align-items: center;
537
- background: ${theme.palette.figma.background.level1.white};
538
- color: ${theme.palette.figma.typography.black};
539
- display: flex;
540
-
541
- &.Mui-expanded {
542
- border-top: 1px solid ${theme.palette.figma.border.default};
543
- margin: 0;
544
-
545
- &:before {
546
- opacity: 1;
547
- }
548
- }
549
-
550
- .MuiAccordionSummary-content {
551
- align-items: center;
552
- gap: ${theme.spacing(1)};
553
- width: calc(100% - ${theme.spacing(5)});
554
-
555
- .dot-tooltip {
556
- overflow: hidden;
557
- }
558
- }
559
-
560
- .MuiAccordionSummary-expandIconWrapper {
561
- padding: ${theme.spacing(1.5)};
562
- margin-right: ${theme.spacing(-1.5)};
563
- }
564
-
565
- .MuiTypography-root {
566
- margin-bottom: 0;
567
- }
568
- .MuiTypography-body1 {
569
- padding: 2px 0;
570
- }
571
- }
572
- `}
573
- `;
574
-
575
- const DotAccordion = ({
576
- actions,
577
- ariaLabel,
578
- children,
579
- className,
580
- 'data-pendoid': dataPendoId = rootClassName$1l,
581
- 'data-testid': dataTestId = 'dot-accordion',
582
- disabled = false,
583
- expanded,
584
- hasElevation = false,
585
- onChange,
586
- square = false,
587
- startIcon = null,
588
- summary,
589
- noWrap = true
590
- }) => {
591
- const rootClasses = useStylesWithRootClass(rootClassName$1l, className);
592
- const [elevation, setElevation] = useState();
593
- useEffect(() => {
594
- if (onChange && expanded === undefined) {
595
- console.warn('The use of an `onChange` callback makes this a controlled component but no `expanded` state has been provided. In effect, this makes the component disabled.');
596
- }
597
- }, []);
598
- useEffect(() => {
599
- setElevation(hasElevation ? 1 : 0);
600
- }, [hasElevation]);
601
- return jsxs(StyledAccordion, {
602
- "aria-label": ariaLabel,
603
- className: rootClasses,
604
- "data-pendoid": dataPendoId,
605
- "data-testid": dataTestId,
606
- disabled: disabled,
607
- elevation: elevation,
608
- expanded: onChange ? expanded : undefined,
609
- onChange: onChange,
610
- square: square,
611
- children: [jsxs(AccordionSummary, {
612
- "aria-label": ariaLabel || summary,
613
- classes: {
614
- root: summaryClassName
615
- },
616
- "data-testid": `${dataTestId}-summary`,
617
- expandIcon: jsx(DotIcon, {
618
- iconId: "chevron-down"
619
- }),
620
- role: "button",
621
- children: [startIcon, jsx(DotTooltip, {
622
- "data-testid": "accordion-tooltip",
623
- title: noWrap ? summary : '',
624
- children: jsx(DotTypography, {
625
- noWrap: noWrap,
626
- variant: "body1",
627
- children: summary
628
- })
629
- })]
630
- }), jsx(AccordionDetails, {
631
- classes: {
632
- root: detailClassName
633
- },
634
- "data-testid": `${dataTestId}-details`,
635
- children: children
636
- }), actions && jsx(AccordionActions, {
637
- children: actions
638
- })]
639
- });
640
- };
641
-
642
- const rootClassName$1k = 'dot-action-toolbar';
643
- const StyledToolbar = styled(Toolbar)`
644
- ${({
645
- theme
646
- }) => css`
647
- &.${rootClassName$1k} {
648
- border-bottom: 1px solid ${theme.palette.figma.border.default};
649
-
650
- .${rootClassName$1n} .MuiInputBase-root {
651
- margin-bottom: 0;
652
- }
653
- }
654
- `}
655
- `;
656
-
657
- const DotActionToolbar = ({
658
- ariaLabel,
659
- children,
660
- className,
661
- 'data-testid': dataTestId,
662
- variant = 'dense'
663
- }) => {
664
- const rootClasses = useStylesWithRootClass(rootClassName$1k, className);
665
- return jsx(StyledToolbar, {
666
- "aria-label": ariaLabel,
667
- className: rootClasses,
668
- "data-testid": dataTestId,
669
- variant: variant,
670
- children: children
671
- });
672
- };
673
-
674
- //Primary blue
675
- //https://zeroheight.com/4a9ac476a/p/22005a-color/t/6288e9
676
- const b50 = '#e8edf3';
677
- const b100 = '#c5d3e2';
678
- const b200 = '#9eb6cf';
679
- const b300 = '#7798bb';
680
- const b400 = '#5a82ad';
681
- const b500 = '#3d6c9e';
682
- const b600 = '#376496';
683
- const b700 = '#2f598c';
684
- const b800 = '#274f82';
685
- const b900 = '#1a3d70';
686
- const bA100 = '#abcaff';
687
- const bA200 = '#78aaff';
688
- const bA400 = '#458aff';
689
- const bA700 = '#2b7aff';
690
- //Success green
691
- //https://zeroheight.com/4a9ac476a/p/22005a-color/t/653193
692
- const g50 = '#e9f0e0';
693
- const g100 = '#c8dab3';
694
- const g200 = '#a4c280';
695
- const g300 = '#80aa4d';
696
- const g400 = '#649726';
697
- const g500 = '#498500';
698
- const g600 = '#427d00';
699
- const g700 = '#397200';
700
- const g800 = '#316800';
701
- const g900 = '#215500';
702
- const gA100 = '#aaff87';
703
- const gA200 = '#86ff54';
704
- const gA400 = '#61ff21';
705
- const gA700 = '#4fff08';
706
- //Neutral color
707
- //https://zeroheight.com/4a9ac476a/p/22005a-color/t/44d174
708
- const n0 = '#ffffff';
709
- const n50 = '#f3f5f6';
710
- const n100 = '#e3e5e8';
711
- const n200 = '#c1c6cd';
712
- const n300 = '#a4acb6';
713
- const n400 = '#667385';
714
- const n500 = '#4b5a6f';
715
- const n600 = '#445267';
716
- const n700 = '#3b485c';
717
- const n700_70 = 'rgba(59, 72, 92, 0.7)';
718
- const n700_90 = 'rgba(59, 72, 92, 0.9)';
719
- const n800 = '#333f52';
720
- const n900 = '#232e40';
721
- const n900_20 = 'rgba(35, 46, 64, 0.2)';
722
- const n900_70 = 'rgba(35, 46, 64, 0.7)';
723
- const nA100 = '#88b1ff';
724
- const nA200 = '#5590ff';
725
- const nA400 = '#226eff';
726
- const nA700 = '#085eff';
727
- //Warning orange
728
- //https://zeroheight.com/4a9ac476a/p/22005a-color/t/01bbd7
729
- const o50 = '#fff3e9';
730
- const o100 = '#ffe2c8';
731
- const o200 = '#ffcfa4';
732
- const o300 = '#ffbb80';
733
- const o400 = '#ffad64';
734
- const o500 = '#ff9e49';
735
- const o600 = '#ff9642';
736
- const o700 = '#ff8c39';
737
- const o800 = '#ff8231';
738
- const o900 = '#f05e1d';
739
- const oA100 = '#ffffff';
740
- const oA200 = '#ffffff';
741
- const oA400 = '#ffe0d0';
742
- const oA700 = '#ffceb7';
743
- //Error red
744
- //https://zeroheight.com/4a9ac476a/p/22005a-color/t/941bd8
745
- const r50 = '#fae4e4';
746
- const r100 = '#f3bcbc';
747
- const r200 = '#eb8f90';
748
- const r300 = '#e26264';
749
- const r400 = '#dc4142';
750
- const r500 = '#d61f21';
751
- const r600 = '#d11b1d';
752
- const r700 = '#cc1718';
753
- const r800 = '#c61214';
754
- const r900 = '#bc0a0b';
755
- const rA100 = '#ffe7e7';
756
- const rA200 = '#ffb4b5';
757
- const rA400 = '#ff8182';
758
- const rA700 = '#ff6869';
759
- //Graph color
760
- //Yellow
761
- //https://zeroheight.com/4a9ac476a/p/22005a-color/t/48416f
762
- const y50 = '#fdf8e2';
763
- const y100 = '#faeeb8';
764
- const y200 = '#f7e288';
765
- const y300 = '#f3d658';
766
- const y400 = '#f1ce35';
767
- const y500 = '#eec511';
768
- const y600 = '#ecbf0f';
769
- const y700 = '#e9b80c';
770
- const y800 = '#e7b00a';
771
- const y900 = '#e2a305';
772
- const yA100 = '#ffffff';
773
- const yA200 = '#fff2d7';
774
- const yA400 = '#ffe2a4';
775
- const yA700 = '#ffda8b';
776
- //Purple
777
- //https://zeroheight.com/4a9ac476a/p/22005a-color/t/48416f
778
- const p50 = '#f3e4ee';
779
- const p100 = '#e0bbd4';
780
- const p200 = '#cc8eb8';
781
- const p300 = '#b8609c';
782
- const p400 = '#a83e86';
783
- const p500 = '#991c71';
784
- const p600 = '#911969';
785
- const p700 = '#86145e';
786
- const p800 = '#7c1154';
787
- const p900 = '#6b0942';
788
- const pA100 = '#ff9cd1';
789
- const pA200 = '#ff69b9';
790
- const pA400 = '#ff36a2';
791
- const pA700 = '#ff1d96';
792
- const selectedGray = 'rgba(0, 0, 0, 0.12)';
793
- const lightSelectedGray = 'rgba(0, 0, 0, 0.08)';
794
- const hoverGray = 'rgba(0, 0, 0, 0.04)';
84
+ //Primary blue
85
+ //https://zeroheight.com/4a9ac476a/p/22005a-color/t/6288e9
86
+ const b50 = '#e8edf3';
87
+ const b100 = '#c5d3e2';
88
+ const b200 = '#9eb6cf';
89
+ const b300 = '#7798bb';
90
+ const b400 = '#5a82ad';
91
+ const b500 = '#3d6c9e';
92
+ const b600 = '#376496';
93
+ const b700 = '#2f598c';
94
+ const b800 = '#274f82';
95
+ const b900 = '#1a3d70';
96
+ const bA100 = '#abcaff';
97
+ const bA200 = '#78aaff';
98
+ const bA400 = '#458aff';
99
+ const bA700 = '#2b7aff';
100
+ //Success green
101
+ //https://zeroheight.com/4a9ac476a/p/22005a-color/t/653193
102
+ const g50 = '#e9f0e0';
103
+ const g100 = '#c8dab3';
104
+ const g200 = '#a4c280';
105
+ const g300 = '#80aa4d';
106
+ const g400 = '#649726';
107
+ const g500 = '#498500';
108
+ const g600 = '#427d00';
109
+ const g700 = '#397200';
110
+ const g800 = '#316800';
111
+ const g900 = '#215500';
112
+ const gA100 = '#aaff87';
113
+ const gA200 = '#86ff54';
114
+ const gA400 = '#61ff21';
115
+ const gA700 = '#4fff08';
116
+ //Neutral color
117
+ //https://zeroheight.com/4a9ac476a/p/22005a-color/t/44d174
118
+ const n0 = '#ffffff';
119
+ const n50 = '#f3f5f6';
120
+ const n100 = '#e3e5e8';
121
+ const n200 = '#c1c6cd';
122
+ const n300 = '#a4acb6';
123
+ const n400 = '#667385';
124
+ const n500 = '#4b5a6f';
125
+ const n600 = '#445267';
126
+ const n700 = '#3b485c';
127
+ const n700_70 = 'rgba(59, 72, 92, 0.7)';
128
+ const n700_90 = 'rgba(59, 72, 92, 0.9)';
129
+ const n800 = '#333f52';
130
+ const n900 = '#232e40';
131
+ const n900_20 = 'rgba(35, 46, 64, 0.2)';
132
+ const n900_70 = 'rgba(35, 46, 64, 0.7)';
133
+ const nA100 = '#88b1ff';
134
+ const nA200 = '#5590ff';
135
+ const nA400 = '#226eff';
136
+ const nA700 = '#085eff';
137
+ //Warning orange
138
+ //https://zeroheight.com/4a9ac476a/p/22005a-color/t/01bbd7
139
+ const o50 = '#fff3e9';
140
+ const o100 = '#ffe2c8';
141
+ const o200 = '#ffcfa4';
142
+ const o300 = '#ffbb80';
143
+ const o400 = '#ffad64';
144
+ const o500 = '#ff9e49';
145
+ const o600 = '#ff9642';
146
+ const o700 = '#ff8c39';
147
+ const o800 = '#ff8231';
148
+ const o900 = '#f05e1d';
149
+ const oA100 = '#ffffff';
150
+ const oA200 = '#ffffff';
151
+ const oA400 = '#ffe0d0';
152
+ const oA700 = '#ffceb7';
153
+ //Error red
154
+ //https://zeroheight.com/4a9ac476a/p/22005a-color/t/941bd8
155
+ const r50 = '#fae4e4';
156
+ const r100 = '#f3bcbc';
157
+ const r200 = '#eb8f90';
158
+ const r300 = '#e26264';
159
+ const r400 = '#dc4142';
160
+ const r500 = '#d61f21';
161
+ const r600 = '#d11b1d';
162
+ const r700 = '#cc1718';
163
+ const r800 = '#c61214';
164
+ const r900 = '#bc0a0b';
165
+ const rA100 = '#ffe7e7';
166
+ const rA200 = '#ffb4b5';
167
+ const rA400 = '#ff8182';
168
+ const rA700 = '#ff6869';
169
+ //Graph color
170
+ //Yellow
171
+ //https://zeroheight.com/4a9ac476a/p/22005a-color/t/48416f
172
+ const y50 = '#fdf8e2';
173
+ const y100 = '#faeeb8';
174
+ const y200 = '#f7e288';
175
+ const y300 = '#f3d658';
176
+ const y400 = '#f1ce35';
177
+ const y500 = '#eec511';
178
+ const y600 = '#ecbf0f';
179
+ const y700 = '#e9b80c';
180
+ const y800 = '#e7b00a';
181
+ const y900 = '#e2a305';
182
+ const yA100 = '#ffffff';
183
+ const yA200 = '#fff2d7';
184
+ const yA400 = '#ffe2a4';
185
+ const yA700 = '#ffda8b';
186
+ //Purple
187
+ //https://zeroheight.com/4a9ac476a/p/22005a-color/t/48416f
188
+ const p50 = '#f3e4ee';
189
+ const p100 = '#e0bbd4';
190
+ const p200 = '#cc8eb8';
191
+ const p300 = '#b8609c';
192
+ const p400 = '#a83e86';
193
+ const p500 = '#991c71';
194
+ const p600 = '#911969';
195
+ const p700 = '#86145e';
196
+ const p800 = '#7c1154';
197
+ const p900 = '#6b0942';
198
+ const pA100 = '#ff9cd1';
199
+ const pA200 = '#ff69b9';
200
+ const pA400 = '#ff36a2';
201
+ const pA700 = '#ff1d96';
202
+ const selectedGray = 'rgba(0, 0, 0, 0.12)';
203
+ const lightSelectedGray = 'rgba(0, 0, 0, 0.08)';
204
+ const hoverGray = 'rgba(0, 0, 0, 0.04)';
795
205
 
796
206
  var lightThemeColors = /*#__PURE__*/Object.freeze({
797
207
  __proto__: null,
@@ -1434,302 +844,894 @@ const darkTheme = createTheme({
1434
844
  unknown: n300,
1435
845
  unknownHover: n100
1436
846
  },
1437
- layer: {
1438
- n0: n900,
1439
- n50: n800,
1440
- n100: n700,
1441
- n200: n600,
1442
- n300: n500,
1443
- n400: n400,
1444
- n500: n300,
1445
- n600: n200,
1446
- n700: n100,
1447
- n800: n50,
1448
- n900: n0
1449
- },
1450
- primary: {
1451
- main: b200,
1452
- '50': b50,
1453
- '100': b100,
1454
- '500': b500
1455
- },
1456
- secondary: {
1457
- main: g800,
1458
- '50': g400,
1459
- '100': g300,
1460
- '500': g200,
1461
- '700': g100
1462
- },
1463
- error: {
1464
- main: r800,
1465
- '50': r400,
1466
- '100': r300,
1467
- '500': r200,
1468
- '700': r100
1469
- },
1470
- grey: {
1471
- '50': n500,
1472
- '100': n400,
1473
- '200': n400,
1474
- '300': n400,
1475
- '400': n200,
1476
- '500': n500,
1477
- '700': n700,
1478
- '900': n900
847
+ layer: {
848
+ n0: n900,
849
+ n50: n800,
850
+ n100: n700,
851
+ n200: n600,
852
+ n300: n500,
853
+ n400: n400,
854
+ n500: n300,
855
+ n600: n200,
856
+ n700: n100,
857
+ n800: n50,
858
+ n900: n0
859
+ },
860
+ primary: {
861
+ main: b200,
862
+ '50': b50,
863
+ '100': b100,
864
+ '500': b500
865
+ },
866
+ secondary: {
867
+ main: g800,
868
+ '50': g400,
869
+ '100': g300,
870
+ '500': g200,
871
+ '700': g100
872
+ },
873
+ error: {
874
+ main: r800,
875
+ '50': r400,
876
+ '100': r300,
877
+ '500': r200,
878
+ '700': r100
879
+ },
880
+ grey: {
881
+ '50': n500,
882
+ '100': n400,
883
+ '200': n400,
884
+ '300': n400,
885
+ '400': n200,
886
+ '500': n500,
887
+ '700': n700,
888
+ '900': n900
889
+ },
890
+ purple: {
891
+ main: p500
892
+ },
893
+ text: {
894
+ primary: n50
895
+ }
896
+ },
897
+ components: Object.assign(Object.assign({}, componentOverrides), {
898
+ MuiPaper: {
899
+ styleOverrides: {
900
+ root: {
901
+ backgroundColor: darkFigmaColors.background.level0.componentsBackground
902
+ }
903
+ }
904
+ }
905
+ }),
906
+ typography: Object.assign(Object.assign({}, typographyOptions), {
907
+ allVariants: Object.assign(Object.assign({}, typographyOptions.allVariants), {
908
+ color: darkFigmaColors.typography.black
909
+ }),
910
+ body2: Object.assign(Object.assign({}, typographyOptions.body2), {
911
+ color: darkFigmaColors.typography.gray
912
+ })
913
+ })
914
+ });
915
+ const lightTheme = createTheme({
916
+ breakpoints: Object.assign({}, breakpointOptions),
917
+ palette: {
918
+ mode: 'light',
919
+ avatarColors: Object.assign({}, avatarColors),
920
+ figma: lightFigmaColors,
921
+ background: {
922
+ default: n0
923
+ },
924
+ primary: {
925
+ main: b500,
926
+ '50': b50,
927
+ '100': b100,
928
+ '200': b200,
929
+ '300': b300,
930
+ '400': b400,
931
+ '500': b500,
932
+ '600': b600,
933
+ '700': b700,
934
+ '800': b800,
935
+ '900': b900,
936
+ A100: bA100,
937
+ A200: bA200,
938
+ A400: bA400,
939
+ A700: bA700
940
+ },
941
+ secondary: {
942
+ main: g500,
943
+ '50': g50,
944
+ '100': g100,
945
+ '200': g200,
946
+ '300': g300,
947
+ '400': g400,
948
+ '500': g500,
949
+ '600': g600,
950
+ '700': g700,
951
+ '800': g800,
952
+ '900': g900,
953
+ A100: gA100,
954
+ A200: gA200,
955
+ A400: gA400,
956
+ A700: gA700
957
+ },
958
+ error: {
959
+ main: r500,
960
+ '50': r50,
961
+ '100': r100,
962
+ '200': r200,
963
+ '300': r300,
964
+ '400': r400,
965
+ '500': r500,
966
+ '600': r600,
967
+ '700': r700,
968
+ '800': r800,
969
+ '900': r900,
970
+ A100: rA100,
971
+ A200: rA200,
972
+ A400: rA400,
973
+ A700: rA700
974
+ },
975
+ warning: {
976
+ main: o500,
977
+ '50': o50,
978
+ '100': o100,
979
+ '200': o200,
980
+ '300': o300,
981
+ '400': o400,
982
+ '500': o500,
983
+ '600': o600,
984
+ '700': o700,
985
+ '800': o800,
986
+ '900': o900,
987
+ A100: oA100,
988
+ A200: oA200,
989
+ A400: oA400,
990
+ A700: oA700
991
+ },
992
+ success: {
993
+ main: g500,
994
+ '50': g50,
995
+ '100': g100,
996
+ '200': g200,
997
+ '300': g300,
998
+ '400': g400,
999
+ '500': g500,
1000
+ '600': g600,
1001
+ '700': g700,
1002
+ '800': g800,
1003
+ '900': g900,
1004
+ A100: gA100,
1005
+ A200: gA200,
1006
+ A400: gA400,
1007
+ A700: gA700
1008
+ },
1009
+ grey: {
1010
+ '50': n50,
1011
+ '100': n100,
1012
+ '200': n200,
1013
+ '300': n300,
1014
+ '400': n400,
1015
+ '500': n500,
1016
+ '600': n600,
1017
+ '700': n700,
1018
+ '800': n800,
1019
+ '900': n900,
1020
+ A100: nA100,
1021
+ A200: nA200,
1022
+ A400: nA400,
1023
+ A700: nA700
1024
+ },
1025
+ purple: {
1026
+ main: p500,
1027
+ '50': p50,
1028
+ '100': p100,
1029
+ '200': p200,
1030
+ '300': p300,
1031
+ '400': p400,
1032
+ '500': p500,
1033
+ '600': p600,
1034
+ '700': p700,
1035
+ '800': p800,
1036
+ '900': p900,
1037
+ A100: pA100,
1038
+ A200: pA200,
1039
+ A400: pA400,
1040
+ A700: pA700
1041
+ },
1042
+ layer: {
1043
+ n0: n0,
1044
+ n50: n50,
1045
+ n100: n100,
1046
+ n200: n200,
1047
+ n300: n300,
1048
+ n400: n400,
1049
+ n500: n500,
1050
+ n600: n600,
1051
+ n700: n700,
1052
+ n800: n800,
1053
+ n900: n900
1054
+ },
1055
+ icon: {
1056
+ checkOutline: b500,
1057
+ emphasized: b300,
1058
+ fileDotted: b500,
1059
+ improve: g500,
1060
+ improveHover: g300,
1061
+ maintain: r500,
1062
+ maintainHover: r300,
1063
+ rogueCommits: o500,
1064
+ unknown: n300,
1065
+ unknownHover: n100
1066
+ },
1067
+ text: {
1068
+ primary: n700
1479
1069
  },
1480
- purple: {
1481
- main: p500
1070
+ tonalOffset: 0.2
1071
+ },
1072
+ components: Object.assign(Object.assign({}, componentOverrides), {
1073
+ MuiPaper: {
1074
+ styleOverrides: {
1075
+ root: {
1076
+ backgroundColor: lightFigmaColors.background.level0.componentsBackground
1077
+ }
1078
+ }
1079
+ }
1080
+ }),
1081
+ typography: Object.assign(Object.assign({}, typographyOptions), {
1082
+ allVariants: Object.assign(Object.assign({}, typographyOptions.allVariants), {
1083
+ color: lightFigmaColors.typography.black
1084
+ }),
1085
+ body2: Object.assign(Object.assign({}, typographyOptions.body2), {
1086
+ color: lightFigmaColors.typography.gray
1087
+ })
1088
+ })
1089
+ });
1090
+ const getThemeFromString = themeOption => {
1091
+ if (themeOption === 'dark') {
1092
+ return darkTheme;
1093
+ }
1094
+ return lightTheme;
1095
+ };
1096
+ function DotThemeProvider({
1097
+ children,
1098
+ theme = lightTheme
1099
+ }) {
1100
+ const userTheme = typeof theme === 'string' ? getThemeFromString(theme) : theme;
1101
+ return jsx(StyledEngineProvider, {
1102
+ injectFirst: true,
1103
+ children: jsx(ThemeProvider, {
1104
+ theme: userTheme,
1105
+ children: jsxs(ThemeProvider$1, {
1106
+ theme: userTheme,
1107
+ children: [jsx(GlobalFonts, {}), children]
1108
+ })
1109
+ })
1110
+ });
1111
+ }
1112
+
1113
+ const calculateNumberFromText = text => {
1114
+ const charCodes = text.split('') // => ["A", "A"]
1115
+ .map(char => char.charCodeAt(0)) // => [65, 65]
1116
+ .join(''); // => "6565"
1117
+ return parseInt(charCodes, 10);
1118
+ };
1119
+ const calculateWidth = width => {
1120
+ if (!width) return;
1121
+ return isString$2(width) ? width : `${width}px`;
1122
+ };
1123
+ const getAvatarColorForInputText = value => {
1124
+ const colorOptions = [...Object.keys(avatarColors)];
1125
+ if (!value || !colorOptions || colorOptions.length <= 0) return 'default';
1126
+ const numberFromValue = calculateNumberFromText(value);
1127
+ const index = numberFromValue % colorOptions.length;
1128
+ // if number is 9 (transparent), return default color
1129
+ if (index === 9) return 'default';
1130
+ return colorOptions[index];
1131
+ };
1132
+ const isString$2 = str => typeof str === 'string';
1133
+ const isLowerCase = str => str === str.toLowerCase();
1134
+ const isNumber = num => typeof num === 'number';
1135
+ const renderNodeOrTypography = (content, typographyVariant = 'body1') => {
1136
+ return isString$2(content) ? jsx(DotTypography, {
1137
+ variant: typographyVariant,
1138
+ children: content
1139
+ }) : content;
1140
+ };
1141
+ const checkIfArrowUpPressed = event => event.key === 'ArrowUp';
1142
+ const checkIfArrowDownPressed = event => event.key === 'ArrowDown';
1143
+
1144
+ const DotTooltip = ({
1145
+ ariaLabel,
1146
+ ariaRole = 'tooltip',
1147
+ arrow = true,
1148
+ children,
1149
+ className,
1150
+ 'data-testid': dataTestId,
1151
+ disablePortal = false,
1152
+ disableInteractive = false,
1153
+ followCursor = false,
1154
+ enterDelay = 600,
1155
+ enterNextDelay = 0,
1156
+ hoverVisibility = 'always',
1157
+ leaveDelay,
1158
+ onClose,
1159
+ open,
1160
+ placement = 'bottom',
1161
+ popperClassName,
1162
+ slotProps,
1163
+ title,
1164
+ childrenDisplayStyle
1165
+ }) => {
1166
+ const rootClasses = useStylesWithRootClass('dot-tooltip', className);
1167
+ const [hasTooltipOnHover, setHasTooltipOnHover] = useState(false);
1168
+ const childrenWrapperRef = useRef();
1169
+ useEffect(() => {
1170
+ if (hoverVisibility !== 'overflow') return;
1171
+ const resizeObserver = new ResizeObserver(checkIfTooltipShouldBeRendered);
1172
+ if (childrenWrapperRef.current) {
1173
+ resizeObserver.observe(childrenWrapperRef.current);
1174
+ }
1175
+ checkIfTooltipShouldBeRendered();
1176
+ return () => {
1177
+ if (childrenWrapperRef.current) {
1178
+ resizeObserver.unobserve(childrenWrapperRef.current);
1179
+ }
1180
+ };
1181
+ }, [childrenWrapperRef.current, children, hoverVisibility]);
1182
+ const checkIfTooltipShouldBeRendered = () => {
1183
+ if (!childrenWrapperRef || !childrenWrapperRef.current) return;
1184
+ const isOverflowPresent = checkIfOverflowPresentInElementTree(childrenWrapperRef.current);
1185
+ setHasTooltipOnHover(isOverflowPresent);
1186
+ };
1187
+ if (!title) {
1188
+ return children;
1189
+ }
1190
+ return jsx(Tooltip, {
1191
+ "aria-hidden": false,
1192
+ "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : isString$2(title) ? title.toString() : 'Information tooltip',
1193
+ arrow: arrow,
1194
+ className: rootClasses,
1195
+ "data-testid": dataTestId,
1196
+ disableHoverListener: hoverVisibility === 'never' || hoverVisibility === 'overflow' && !hasTooltipOnHover,
1197
+ disableInteractive: disableInteractive,
1198
+ leaveDelay: leaveDelay,
1199
+ enterDelay: enterDelay,
1200
+ enterNextDelay: enterNextDelay,
1201
+ onClose: onClose,
1202
+ open: open,
1203
+ placement: placement,
1204
+ PopperProps: {
1205
+ disablePortal,
1206
+ className: popperClassName
1482
1207
  },
1483
- text: {
1484
- primary: n50
1208
+ slotProps: slotProps,
1209
+ role: ariaRole,
1210
+ title: title,
1211
+ followCursor: followCursor,
1212
+ children: jsx("span", {
1213
+ style: {
1214
+ display: childrenDisplayStyle
1215
+ },
1216
+ ref: childrenWrapperRef,
1217
+ tabIndex: -1,
1218
+ children: children
1219
+ })
1220
+ });
1221
+ };
1222
+
1223
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1224
+ const formHelperTextRootStyles = theme => css`
1225
+ align-items: flex-end;
1226
+ color: ${theme.palette.figma.typography.gray};
1227
+ display: flex;
1228
+ font-family: ${theme.typography.fontFamily};
1229
+ font-size: ${theme.typography.body2.fontSize}px;
1230
+ font-weight: 400;
1231
+ margin: ${theme.spacing(0.5, 0, 0, 1.5)};
1232
+
1233
+ &.read-only .MuiOutlinedInput-root:hover > fieldset {
1234
+ border-color: ${theme.palette.figma.typography.black};
1235
+ }
1236
+ `;
1237
+ const adornmentIconStyles = () => css`
1238
+ font-size: 24px;
1239
+ height: 24px;
1240
+ padding: 0;
1241
+ width: 24px;
1242
+ `;
1243
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1244
+ const pickerInputStyles = theme => css`
1245
+ label:not(.MuiInputLabel-shrink) {
1246
+ top: -5px;
1247
+ }
1248
+
1249
+ .MuiInputBase-root {
1250
+ margin-bottom: 0;
1251
+
1252
+ .dot-error-icon {
1253
+ margin-right: ${theme.spacing(0.5)};
1254
+ color: ${theme.palette.figma.destructive.normal};
1485
1255
  }
1486
- },
1487
- components: Object.assign(Object.assign({}, componentOverrides), {
1488
- MuiPaper: {
1489
- styleOverrides: {
1490
- root: {
1491
- backgroundColor: darkFigmaColors.background.level0.componentsBackground
1256
+
1257
+ .dot-icon {
1258
+ ${adornmentIconStyles()};
1259
+ }
1260
+ }
1261
+
1262
+ .MuiInputBase-input {
1263
+ height: ${theme.spacing(2)};
1264
+ padding: ${theme.spacing(1.5, 0, 1.5, 2)};
1265
+ }
1266
+
1267
+ .MuiFormHelperText-root {
1268
+ ${formHelperTextRootStyles(theme)};
1269
+ }
1270
+ `;
1271
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1272
+ const readOnlyStyles = theme => css`
1273
+ background: ${theme.palette.figma.disabled.normal};
1274
+ color: ${theme.palette.figma.typography.disabled};
1275
+ border-color: ${theme.palette.figma.border.defaultButton};
1276
+ -webkit-text-fill-color: ${theme.palette.figma.typography.disabled};
1277
+
1278
+ input.Mui-disabled {
1279
+ -webkit-text-fill-color: ${theme.palette.figma.typography.disabled};
1280
+ }
1281
+
1282
+ .dot-chip {
1283
+ background: ${theme.palette.figma.disabled.normal};
1284
+ opacity: 1;
1285
+ }
1286
+ `;
1287
+
1288
+ const rootClassName$1n = 'dot-text-field';
1289
+ const rootSelectClassName = 'dot-select-field';
1290
+ const wrapperClassName$2 = 'dot-label-wrapper';
1291
+ const labelClassName = 'dot-input-label';
1292
+ const errorClassName = 'dot-error';
1293
+ const warningClassName = 'dot-warning';
1294
+ const successClassName = 'dot-success';
1295
+ const adornmentIconClassName = 'dot-adornment-icon';
1296
+ const fieldsetClassName = 'MuiOutlinedInput-notchedOutline';
1297
+ const readOnlyClassName$1 = 'read-only';
1298
+ const resizerClassName = 'with-resizer';
1299
+ const ROW_HEIGHT = 37;
1300
+ const StyledAdornment = styled(InputAdornment)`
1301
+ .dot-icon {
1302
+ ${adornmentIconStyles()};
1303
+ }
1304
+ `;
1305
+ const StyledInputLabel = styled(InputLabel)`
1306
+ ${({
1307
+ theme
1308
+ }) => css`
1309
+ &.${labelClassName} {
1310
+ margin-bottom: ${theme.spacing(0.5)};
1311
+ transform: none;
1312
+
1313
+ &.Mui-disabled .dot-typography {
1314
+ color: ${theme.palette.figma.typography.disabled};
1315
+ }
1316
+
1317
+ &.Mui-error .dot-typography,
1318
+ &.MuiInputLabel-outlined.Mui-disabled,
1319
+ &.MuiInputLabel-outlined.Mui-disabled .dot-typography {
1320
+ color: ${theme.palette.figma.typography.black};
1321
+ }
1322
+
1323
+ .dot-typography {
1324
+ display: inline;
1325
+ }
1326
+ }
1327
+ `}
1328
+ `;
1329
+ const StyledTextFieldContainer = styled.div`
1330
+ &.dot-input-text--fullwidth {
1331
+ width: 100%;
1332
+ }
1333
+ `;
1334
+ const StyledTextField = styled(TextField)`
1335
+ ${({
1336
+ theme,
1337
+ InputProps,
1338
+ $maxRows,
1339
+ $minRows
1340
+ }) => css`
1341
+ &.${rootClassName$1n} {
1342
+ .MuiInputBase-root {
1343
+ margin-bottom: 0;
1344
+
1345
+ &:not(.MuiAutocomplete-inputRoot) {
1346
+ &.MuiInputBase-adornedStart {
1347
+ padding-left: ${theme.spacing(1.5)};
1348
+ }
1349
+ &.MuiInputBase-adornedEnd {
1350
+ padding-right: ${theme.spacing(1)};
1351
+ }
1352
+ }
1353
+ }
1354
+ .MuiInputBase-input {
1355
+ box-sizing: content-box;
1356
+ }
1357
+ .MuiOutlinedInput-input {
1358
+ padding: 18px ${InputProps.endAdornment ? '0px' : '12px'} 18px
1359
+ ${InputProps.startAdornment ? '0px' : '12px'};
1360
+ &::placeholder {
1361
+ opacity: 1;
1362
+ color: ${theme.palette.figma.typography.gray};
1363
+ }
1364
+ }
1365
+ .MuiInputBase-inputSizeSmall {
1366
+ padding-top: 10.5px;
1367
+ padding-bottom: 10.5px;
1368
+
1369
+ &:not(textarea) {
1370
+ /* padding above and below together is 21px, and total height should be 40px */
1371
+ height: 19px;
1372
+ }
1373
+ }
1374
+
1375
+ .MuiInputBase-multiline {
1376
+ .MuiInputBase-inputMultiline {
1377
+ padding: 0;
1378
+ }
1379
+
1380
+ &.${resizerClassName} {
1381
+ resize: both;
1382
+ overflow: auto;
1383
+ height: ${$minRows ? ROW_HEIGHT * $minRows : ROW_HEIGHT}px;
1384
+ min-height: ${$minRows ? ROW_HEIGHT * $minRows : ROW_HEIGHT}px;
1385
+ max-height: ${$maxRows ? `${ROW_HEIGHT * $maxRows}px` : 'unset'};
1386
+ min-width: 170px;
1387
+
1388
+ #custom-text-input.MuiInputBase-inputMultiline {
1389
+ height: 100% !important;
1390
+ width: 100%;
1391
+ }
1392
+ }
1393
+ }
1394
+
1395
+ &.${readOnlyClassName$1} .MuiInputBase-root,
1396
+ .MuiInputBase-root.Mui-disabled {
1397
+ ${readOnlyStyles(theme)};
1398
+ }
1399
+
1400
+ .MuiInputBase-adornedEnd .clear-icon-button.hidden {
1401
+ visibility: hidden;
1402
+ }
1403
+
1404
+ .${adornmentIconClassName}.MuiInputAdornment-positionStart {
1405
+ margin-right: ${theme.spacing(0.5)};
1406
+ }
1407
+
1408
+ .${adornmentIconClassName}.MuiInputAdornment-positionEnd {
1409
+ margin: ${theme.spacing(0)};
1410
+ }
1411
+ }
1412
+
1413
+ .dot-select,
1414
+ .dot-input {
1415
+ &.${readOnlyClassName$1}, &.Mui-disabled {
1416
+ ${readOnlyStyles(theme)};
1417
+ }
1418
+ }
1419
+
1420
+ &.${rootSelectClassName} .${adornmentIconClassName} {
1421
+ // inputSelect has an arrow so we need spacing for end adornment
1422
+ margin-right: ${theme.spacing(2)};
1423
+ }
1424
+
1425
+ &.${rootSelectClassName}, &.${rootClassName$1n} {
1426
+ .${adornmentIconClassName} {
1427
+ color: ${theme.palette.figma.icon.black};
1428
+ p {
1429
+ font-size: ${theme.typography.body2.fontSize}px;
1430
+ margin: 0;
1431
+ }
1432
+
1433
+ .dot-icon i {
1434
+ margin-top: -2px;
1435
+ }
1436
+ }
1437
+
1438
+ .MuiInputLabel-root,
1439
+ .MuiInputLabel-root.Mui-error {
1440
+ color: ${theme.palette.figma.typography.gray};
1441
+
1442
+ &.MuiInputLabel-shrink {
1443
+ color: ${theme.palette.figma.typography.black};
1444
+ }
1445
+ }
1446
+
1447
+ .MuiInputBase-root {
1448
+ background: ${theme.palette.figma.neutral.normal};
1449
+ margin-bottom: 0;
1450
+ }
1451
+
1452
+ .MuiInputBase-inputSizeSmall:not(textarea) {
1453
+ height: 19px;
1454
+ padding-top: 10.5px;
1455
+ padding-bottom: 10.5px;
1456
+ }
1457
+
1458
+ select.dot-select {
1459
+ padding-left: ${theme.spacing(1.5)};
1460
+ }
1461
+
1462
+ .MuiSelect-select:focus:not(.${readOnlyClassName$1}) {
1463
+ background-color: transparent;
1464
+ }
1465
+
1466
+ .MuiSelect-icon {
1467
+ right: ${InputProps.endAdornment ? `44px` : `12px`};
1468
+ }
1469
+
1470
+ &.${successClassName} {
1471
+ .MuiOutlinedInput-notchedOutline {
1472
+ border-color: ${theme.palette.figma.success.normal};
1473
+ }
1474
+
1475
+ .${adornmentIconClassName} .dot-icon {
1476
+ color: ${theme.palette.figma.success.normal};
1477
+ }
1478
+ }
1479
+
1480
+ &.${errorClassName} {
1481
+ .MuiOutlinedInput-notchedOutline {
1482
+ border-color: ${theme.palette.figma.destructive.normal};
1483
+ }
1484
+
1485
+ .${adornmentIconClassName} .dot-icon {
1486
+ color: ${theme.palette.figma.destructive.normal};
1487
+ }
1488
+ }
1489
+
1490
+ &.${warningClassName} {
1491
+ .MuiOutlinedInput-notchedOutline {
1492
+ border-color: ${theme.palette.figma.warning.normal};
1493
+ }
1494
+
1495
+ .${adornmentIconClassName} .dot-icon {
1496
+ color: ${theme.palette.figma.warning.normal};
1497
+ }
1498
+ }
1499
+
1500
+ .MuiOutlinedInput-adornedStart {
1501
+ padding-left: 12px;
1502
+
1503
+ &.${warningClassName} .${fieldsetClassName} {
1504
+ border-color: ${theme.palette.figma.warning.normal};
1492
1505
  }
1493
1506
  }
1507
+
1508
+ .MuiFormHelperText-root {
1509
+ ${formHelperTextRootStyles(theme)};
1510
+ }
1494
1511
  }
1495
- }),
1496
- typography: Object.assign(Object.assign({}, typographyOptions), {
1497
- allVariants: Object.assign(Object.assign({}, typographyOptions.allVariants), {
1498
- color: darkFigmaColors.typography.black
1499
- }),
1500
- body2: Object.assign(Object.assign({}, typographyOptions.body2), {
1501
- color: darkFigmaColors.typography.gray
1502
- })
1503
- })
1504
- });
1505
- const lightTheme = createTheme({
1506
- breakpoints: Object.assign({}, breakpointOptions),
1507
- palette: {
1508
- mode: 'light',
1509
- avatarColors: Object.assign({}, avatarColors),
1510
- figma: lightFigmaColors,
1511
- background: {
1512
- default: n0
1513
- },
1514
- primary: {
1515
- main: b500,
1516
- '50': b50,
1517
- '100': b100,
1518
- '200': b200,
1519
- '300': b300,
1520
- '400': b400,
1521
- '500': b500,
1522
- '600': b600,
1523
- '700': b700,
1524
- '800': b800,
1525
- '900': b900,
1526
- A100: bA100,
1527
- A200: bA200,
1528
- A400: bA400,
1529
- A700: bA700
1530
- },
1531
- secondary: {
1532
- main: g500,
1533
- '50': g50,
1534
- '100': g100,
1535
- '200': g200,
1536
- '300': g300,
1537
- '400': g400,
1538
- '500': g500,
1539
- '600': g600,
1540
- '700': g700,
1541
- '800': g800,
1542
- '900': g900,
1543
- A100: gA100,
1544
- A200: gA200,
1545
- A400: gA400,
1546
- A700: gA700
1547
- },
1548
- error: {
1549
- main: r500,
1550
- '50': r50,
1551
- '100': r100,
1552
- '200': r200,
1553
- '300': r300,
1554
- '400': r400,
1555
- '500': r500,
1556
- '600': r600,
1557
- '700': r700,
1558
- '800': r800,
1559
- '900': r900,
1560
- A100: rA100,
1561
- A200: rA200,
1562
- A400: rA400,
1563
- A700: rA700
1564
- },
1565
- warning: {
1566
- main: o500,
1567
- '50': o50,
1568
- '100': o100,
1569
- '200': o200,
1570
- '300': o300,
1571
- '400': o400,
1572
- '500': o500,
1573
- '600': o600,
1574
- '700': o700,
1575
- '800': o800,
1576
- '900': o900,
1577
- A100: oA100,
1578
- A200: oA200,
1579
- A400: oA400,
1580
- A700: oA700
1581
- },
1582
- success: {
1583
- main: g500,
1584
- '50': g50,
1585
- '100': g100,
1586
- '200': g200,
1587
- '300': g300,
1588
- '400': g400,
1589
- '500': g500,
1590
- '600': g600,
1591
- '700': g700,
1592
- '800': g800,
1593
- '900': g900,
1594
- A100: gA100,
1595
- A200: gA200,
1596
- A400: gA400,
1597
- A700: gA700
1598
- },
1599
- grey: {
1600
- '50': n50,
1601
- '100': n100,
1602
- '200': n200,
1603
- '300': n300,
1604
- '400': n400,
1605
- '500': n500,
1606
- '600': n600,
1607
- '700': n700,
1608
- '800': n800,
1609
- '900': n900,
1610
- A100: nA100,
1611
- A200: nA200,
1612
- A400: nA400,
1613
- A700: nA700
1614
- },
1615
- purple: {
1616
- main: p500,
1617
- '50': p50,
1618
- '100': p100,
1619
- '200': p200,
1620
- '300': p300,
1621
- '400': p400,
1622
- '500': p500,
1623
- '600': p600,
1624
- '700': p700,
1625
- '800': p800,
1626
- '900': p900,
1627
- A100: pA100,
1628
- A200: pA200,
1629
- A400: pA400,
1630
- A700: pA700
1631
- },
1632
- layer: {
1633
- n0: n0,
1634
- n50: n50,
1635
- n100: n100,
1636
- n200: n200,
1637
- n300: n300,
1638
- n400: n400,
1639
- n500: n500,
1640
- n600: n600,
1641
- n700: n700,
1642
- n800: n800,
1643
- n900: n900
1644
- },
1645
- icon: {
1646
- checkOutline: b500,
1647
- emphasized: b300,
1648
- fileDotted: b500,
1649
- improve: g500,
1650
- improveHover: g300,
1651
- maintain: r500,
1652
- maintainHover: r300,
1653
- rogueCommits: o500,
1654
- unknown: n300,
1655
- unknownHover: n100
1656
- },
1657
- text: {
1658
- primary: n700
1659
- },
1660
- tonalOffset: 0.2
1661
- },
1662
- components: Object.assign(Object.assign({}, componentOverrides), {
1663
- MuiPaper: {
1664
- styleOverrides: {
1665
- root: {
1666
- backgroundColor: lightFigmaColors.background.level0.componentsBackground
1512
+ `}
1513
+ `;
1514
+
1515
+ const rootClassName$1m = 'dot-icon';
1516
+ const StyledIcon = styled(Icon)`
1517
+ ${({
1518
+ theme
1519
+ }) => css`
1520
+ &.${rootClassName$1m} {
1521
+ color: ${theme.palette.figma.icon.black};
1522
+ font-size: 20px;
1523
+
1524
+ &.MuiIcon-fontSizeLarge {
1525
+ font-size: 28px;
1526
+ height: 35px;
1527
+ width: 35px;
1528
+
1529
+ i {
1530
+ height: 28px;
1531
+ }
1532
+ }
1533
+ &.MuiIcon-fontSizeSmall {
1534
+ font-size: 18px;
1535
+
1536
+ i {
1537
+ height: 18px;
1667
1538
  }
1668
1539
  }
1540
+
1541
+ i {
1542
+ height: 20px;
1543
+ }
1544
+
1545
+ &.${warningClassName} {
1546
+ color: ${theme.palette.figma.warning.normal};
1547
+ }
1669
1548
  }
1670
- }),
1671
- typography: Object.assign(Object.assign({}, typographyOptions), {
1672
- allVariants: Object.assign(Object.assign({}, typographyOptions.allVariants), {
1673
- color: lightFigmaColors.typography.black
1674
- }),
1675
- body2: Object.assign(Object.assign({}, typographyOptions.body2), {
1676
- color: lightFigmaColors.typography.gray
1677
- })
1678
- })
1679
- });
1680
- const getThemeFromString = themeOption => {
1681
- if (themeOption === 'dark') {
1682
- return darkTheme;
1683
- }
1684
- return lightTheme;
1685
- };
1686
- function DotThemeProvider({
1687
- children,
1688
- theme = lightTheme
1689
- }) {
1690
- const userTheme = typeof theme === 'string' ? getThemeFromString(theme) : theme;
1691
- return jsx(StyledEngineProvider, {
1692
- injectFirst: true,
1693
- children: jsx(ThemeProvider, {
1694
- theme: userTheme,
1695
- children: jsxs(ThemeProvider$1, {
1696
- theme: userTheme,
1697
- children: [jsx(GlobalFonts, {}), children]
1549
+ `}
1550
+ `;
1551
+
1552
+ const DotIcon = ({
1553
+ ariaLabel,
1554
+ ariaRole = 'img',
1555
+ className,
1556
+ 'data-testid': dataTestId,
1557
+ disableInteractive,
1558
+ fontSize = 'medium',
1559
+ iconId,
1560
+ tooltip
1561
+ }) => {
1562
+ const rootClasses = useStylesWithRootClass(rootClassName$1m, className);
1563
+ return jsx(DotTooltip, {
1564
+ disableInteractive: disableInteractive,
1565
+ childrenDisplayStyle: "inline-block",
1566
+ title: tooltip,
1567
+ children: jsx(StyledIcon, {
1568
+ "aria-hidden": "false",
1569
+ "aria-label": ariaLabel || `${iconId} icon`,
1570
+ classes: {
1571
+ root: rootClasses
1572
+ },
1573
+ "data-testid": dataTestId,
1574
+ fontSize: fontSize,
1575
+ role: ariaRole,
1576
+ children: jsx("i", {
1577
+ "aria-label": ariaLabel || `${iconId} icon`,
1578
+ className: `icon-${iconId} dot-i`,
1579
+ "data-testid": dataTestId && `${dataTestId}-i`,
1580
+ role: ariaRole
1698
1581
  })
1699
1582
  })
1700
1583
  });
1701
- }
1702
-
1703
- const calculateNumberFromText = text => {
1704
- const charCodes = text.split('') // => ["A", "A"]
1705
- .map(char => char.charCodeAt(0)) // => [65, 65]
1706
- .join(''); // => "6565"
1707
- return parseInt(charCodes, 10);
1708
- };
1709
- const calculateWidth = width => {
1710
- if (!width) return;
1711
- return isString$2(width) ? width : `${width}px`;
1712
1584
  };
1713
- const getAvatarColorForInputText = value => {
1714
- const colorOptions = [...Object.keys(avatarColors)];
1715
- if (!value || !colorOptions || colorOptions.length <= 0) return 'default';
1716
- const numberFromValue = calculateNumberFromText(value);
1717
- const index = numberFromValue % colorOptions.length;
1718
- // if number is 9 (transparent), return default color
1719
- if (index === 9) return 'default';
1720
- return colorOptions[index];
1585
+
1586
+ const rootClassName$1l = 'dot-accordion';
1587
+ const summaryClassName = 'dot-accordion-summary';
1588
+ const detailClassName = 'dot-accordion-details';
1589
+ const StyledAccordion = styled(Accordion)`
1590
+ ${({
1591
+ theme
1592
+ }) => css`
1593
+ .${detailClassName} {
1594
+ background: ${theme.palette.figma.background.level1.white};
1595
+ }
1596
+
1597
+ &.${rootClassName$1l} .${summaryClassName} {
1598
+ align-items: center;
1599
+ background: ${theme.palette.figma.background.level1.white};
1600
+ color: ${theme.palette.figma.typography.black};
1601
+ display: flex;
1602
+
1603
+ &.Mui-expanded {
1604
+ border-top: 1px solid ${theme.palette.figma.border.default};
1605
+ margin: 0;
1606
+
1607
+ &:before {
1608
+ opacity: 1;
1609
+ }
1610
+ }
1611
+
1612
+ .MuiAccordionSummary-content {
1613
+ align-items: center;
1614
+ gap: ${theme.spacing(1)};
1615
+ width: calc(100% - ${theme.spacing(5)});
1616
+
1617
+ .dot-tooltip {
1618
+ overflow: hidden;
1619
+ }
1620
+ }
1621
+
1622
+ .MuiAccordionSummary-expandIconWrapper {
1623
+ padding: ${theme.spacing(1.5)};
1624
+ margin-right: ${theme.spacing(-1.5)};
1625
+ }
1626
+
1627
+ .MuiTypography-root {
1628
+ margin-bottom: 0;
1629
+ }
1630
+ .MuiTypography-body1 {
1631
+ padding: 2px 0;
1632
+ }
1633
+ }
1634
+ `}
1635
+ `;
1636
+
1637
+ const DotAccordion = ({
1638
+ actions,
1639
+ ariaLabel,
1640
+ children,
1641
+ className,
1642
+ 'data-pendoid': dataPendoId = rootClassName$1l,
1643
+ 'data-testid': dataTestId = 'dot-accordion',
1644
+ disabled = false,
1645
+ expanded,
1646
+ hasElevation = false,
1647
+ onChange,
1648
+ square = false,
1649
+ startIcon = null,
1650
+ summary,
1651
+ noWrap = true
1652
+ }) => {
1653
+ const rootClasses = useStylesWithRootClass(rootClassName$1l, className);
1654
+ const [elevation, setElevation] = useState();
1655
+ useEffect(() => {
1656
+ if (onChange && expanded === undefined) {
1657
+ console.warn('The use of an `onChange` callback makes this a controlled component but no `expanded` state has been provided. In effect, this makes the component disabled.');
1658
+ }
1659
+ }, []);
1660
+ useEffect(() => {
1661
+ setElevation(hasElevation ? 1 : 0);
1662
+ }, [hasElevation]);
1663
+ return jsxs(StyledAccordion, {
1664
+ "aria-label": ariaLabel,
1665
+ className: rootClasses,
1666
+ "data-pendoid": dataPendoId,
1667
+ "data-testid": dataTestId,
1668
+ disabled: disabled,
1669
+ elevation: elevation,
1670
+ expanded: onChange ? expanded : undefined,
1671
+ onChange: onChange,
1672
+ square: square,
1673
+ children: [jsxs(AccordionSummary, {
1674
+ "aria-label": ariaLabel || summary,
1675
+ classes: {
1676
+ root: summaryClassName
1677
+ },
1678
+ "data-testid": `${dataTestId}-summary`,
1679
+ expandIcon: jsx(DotIcon, {
1680
+ iconId: "chevron-down"
1681
+ }),
1682
+ role: "button",
1683
+ children: [startIcon, jsx(DotTooltip, {
1684
+ "data-testid": "accordion-tooltip",
1685
+ title: noWrap ? summary : '',
1686
+ children: jsx(DotTypography, {
1687
+ noWrap: noWrap,
1688
+ variant: "body1",
1689
+ children: summary
1690
+ })
1691
+ })]
1692
+ }), jsx(AccordionDetails, {
1693
+ classes: {
1694
+ root: detailClassName
1695
+ },
1696
+ "data-testid": `${dataTestId}-details`,
1697
+ children: children
1698
+ }), actions && jsx(AccordionActions, {
1699
+ children: actions
1700
+ })]
1701
+ });
1721
1702
  };
1722
- const isString$2 = str => typeof str === 'string';
1723
- const isLowerCase = str => str === str.toLowerCase();
1724
- const isNumber = num => typeof num === 'number';
1725
- const renderNodeOrTypography = (content, typographyVariant = 'body1') => {
1726
- return isString$2(content) ? jsx(DotTypography, {
1727
- variant: typographyVariant,
1728
- children: content
1729
- }) : content;
1703
+
1704
+ const rootClassName$1k = 'dot-action-toolbar';
1705
+ const StyledToolbar = styled(Toolbar)`
1706
+ ${({
1707
+ theme
1708
+ }) => css`
1709
+ &.${rootClassName$1k} {
1710
+ border-bottom: 1px solid ${theme.palette.figma.border.default};
1711
+
1712
+ .${rootClassName$1n} .MuiInputBase-root {
1713
+ margin-bottom: 0;
1714
+ }
1715
+ }
1716
+ `}
1717
+ `;
1718
+
1719
+ const DotActionToolbar = ({
1720
+ ariaLabel,
1721
+ children,
1722
+ className,
1723
+ 'data-testid': dataTestId,
1724
+ variant = 'dense'
1725
+ }) => {
1726
+ const rootClasses = useStylesWithRootClass(rootClassName$1k, className);
1727
+ return jsx(StyledToolbar, {
1728
+ "aria-label": ariaLabel,
1729
+ className: rootClasses,
1730
+ "data-testid": dataTestId,
1731
+ variant: variant,
1732
+ children: children
1733
+ });
1730
1734
  };
1731
- const checkIfArrowUpPressed = event => event.key === 'ArrowUp';
1732
- const checkIfArrowDownPressed = event => event.key === 'ArrowDown';
1733
1735
 
1734
1736
  const rootClassName$1j = 'dot-alert-banner';
1735
1737
  const StyledAlertBanner = styled(Alert)`
@@ -2612,6 +2614,7 @@ const DotAvatar = ({
2612
2614
  ariaRole = 'img',
2613
2615
  className,
2614
2616
  component = 'div',
2617
+ disableInteractive,
2615
2618
  color,
2616
2619
  'data-testid': dataTestId,
2617
2620
  iconId,
@@ -2634,6 +2637,7 @@ const DotAvatar = ({
2634
2637
  return 'default';
2635
2638
  };
2636
2639
  return jsx(DotTooltip, {
2640
+ disableInteractive: disableInteractive,
2637
2641
  childrenDisplayStyle: "inline-block",
2638
2642
  title: tooltip,
2639
2643
  children: jsx(StyledAvatar, {
@@ -2758,6 +2762,7 @@ const DotButton = forwardRef(({
2758
2762
  'data-pendoid': dataPendoId = rootClassName$1g,
2759
2763
  'data-testid': dataTestId,
2760
2764
  disabled = false,
2765
+ disableInteractive,
2761
2766
  disableRipple = false,
2762
2767
  endIcon,
2763
2768
  fullWidth = false,
@@ -2795,6 +2800,7 @@ const DotButton = forwardRef(({
2795
2800
  return jsx(DotTooltip, {
2796
2801
  childrenDisplayStyle: "inline-block",
2797
2802
  "data-testid": `${dataTestId || rootClassName$1g}-tooltip`,
2803
+ disableInteractive: disableInteractive,
2798
2804
  placement: tooltipPlacement,
2799
2805
  title: tooltip,
2800
2806
  children: jsx(StyledButton, {
@@ -3491,6 +3497,7 @@ const DotMenuList = forwardRef(({
3491
3497
  "aria-label": itemAriaLabel,
3492
3498
  className: menuItemClasses,
3493
3499
  "data-pendoid": dataPendoId,
3500
+ "data-id": key,
3494
3501
  disabled: disabled,
3495
3502
  disableRipple: hasSubmenu,
3496
3503
  divider: divider,
@@ -3729,6 +3736,7 @@ const DotIconButton = ({
3729
3736
  color = 'inherit',
3730
3737
  'data-pendoid': dataPendoId = rootClassName$17,
3731
3738
  'data-testid': dataTestId,
3739
+ disableInteractive,
3732
3740
  disableRipple = false,
3733
3741
  disabled = false,
3734
3742
  iconId,
@@ -3744,10 +3752,11 @@ const DotIconButton = ({
3744
3752
  return jsx(DotTooltip, {
3745
3753
  childrenDisplayStyle: "inline-block",
3746
3754
  "data-testid": "icon-button-tooltip",
3755
+ disableInteractive: disableInteractive,
3747
3756
  placement: tooltipPlacement,
3748
3757
  title: tooltip,
3749
3758
  children: jsx(StyledIconButton, {
3750
- "aria-label": ariaLabel || tooltip || `${iconId} icon button`,
3759
+ "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : isString$2(tooltip) ? tooltip.toString() : `${iconId} icon button`,
3751
3760
  classes: {
3752
3761
  root: rootClasses
3753
3762
  },
@@ -4497,6 +4506,7 @@ const DotCopyButton = ({
4497
4506
  copyTooltip = 'Copy to clipboard',
4498
4507
  'data-pendoid': dataPendoId = rootClassName$14,
4499
4508
  'data-testid': dataTestId = 'dot-copy-button',
4509
+ disableInteractive,
4500
4510
  disabled = false,
4501
4511
  disableRipple = false,
4502
4512
  iconId = 'duplicate',
@@ -4553,6 +4563,7 @@ const DotCopyButton = ({
4553
4563
  "data-pendoid": dataPendoId,
4554
4564
  "data-testid": `${dataTestId}-button`,
4555
4565
  disabled: disabled || timedDisabled,
4566
+ disableInteractive: disableInteractive,
4556
4567
  disableRipple: disableRipple,
4557
4568
  iconId: iconId,
4558
4569
  iconSize: iconSize,
@@ -4563,6 +4574,7 @@ const DotCopyButton = ({
4563
4574
  }), timedShowCopiedIcon && jsx(DotIcon, {
4564
4575
  className: `copied-to-clipboard button-size-${size}`,
4565
4576
  "data-testid": `${dataTestId}-icon`,
4577
+ disableInteractive: disableInteractive,
4566
4578
  fontSize: iconSize,
4567
4579
  iconId: "check-solid",
4568
4580
  tooltip: copiedTooltip
@@ -6105,7 +6117,13 @@ const DotSidebar = ({
6105
6117
  }), collapsable && jsx("div", {
6106
6118
  className: "toggle-nav",
6107
6119
  children: jsx(DotTooltip, {
6108
- title: (isOpen ? 'Collapse' : 'Expand') + ` ${collapseKeys[0].toUpperCase()}`,
6120
+ ariaLabel: `${isOpen ? 'Collapse' : 'Expand'} ${collapseKeys[0].toUpperCase()}`,
6121
+ title: jsxs(Fragment, {
6122
+ children: [isOpen ? 'Collapse' : 'Expand', jsx(DotAnnotation, {
6123
+ content: collapseKeys[0].toUpperCase(),
6124
+ type: "secondary"
6125
+ })]
6126
+ }),
6109
6127
  placement: "right",
6110
6128
  children: jsx(DotIconButton, {
6111
6129
  ariaLabel: "collapse sidebar navigation",
@@ -6385,6 +6403,7 @@ const DotAppToolbar = ({
6385
6403
  variant: item.badgeVariant,
6386
6404
  children: jsx(DotIconButton, {
6387
6405
  className: item.className,
6406
+ disableInteractive: true,
6388
6407
  "data-testid": "dot-app-toolbar-icon-button",
6389
6408
  iconId: item.iconId,
6390
6409
  iconSize: "medium",
@@ -6414,6 +6433,7 @@ const DotAppToolbar = ({
6414
6433
  children: [jsx("div", {
6415
6434
  className: "dot-main-menu-btn",
6416
6435
  children: jsx(DotIconButton, {
6436
+ disableInteractive: true,
6417
6437
  "data-testid": "main-menu-icon",
6418
6438
  iconId: menuOpen ? 'close' : 'menu',
6419
6439
  iconSize: "medium",
@@ -6455,6 +6475,7 @@ const DotAppToolbar = ({
6455
6475
  // href
6456
6476
  customLogo ? customLogo : jsx(DotTooltip, {
6457
6477
  "data-testid": "logo-tooltip",
6478
+ disableInteractive: true,
6458
6479
  title: primaryLogoHref ? 'digital.ai' : '',
6459
6480
  children: jsx(ForwardRef, {
6460
6481
  className: !primaryLogoHref ? 'primary-logo' : ''
@@ -7788,6 +7809,7 @@ const DotButtonToggle = ({
7788
7809
  iconId: optionIconId,
7789
7810
  text: optionText,
7790
7811
  tooltip: optionTooltip,
7812
+ disableInteractive: optionDisableInteractive,
7791
7813
  value: optionValue
7792
7814
  }, key) => {
7793
7815
  const commonProps = {
@@ -7820,7 +7842,8 @@ const DotButtonToggle = ({
7820
7842
  const children = getChildren();
7821
7843
  return optionTooltip ? jsx(TooltipToggleButton, Object.assign({}, commonProps, {
7822
7844
  CustomTooltipProps: {
7823
- title: optionTooltip
7845
+ title: optionTooltip,
7846
+ disableInteractive: optionDisableInteractive
7824
7847
  },
7825
7848
  value: optionValue,
7826
7849
  children: children
@@ -8545,6 +8568,7 @@ const DotDialog = ({
8545
8568
  className: cancelClasses,
8546
8569
  "data-pendoid": cancelButtonProps === null || cancelButtonProps === void 0 ? void 0 : cancelButtonProps['data-pendoid'],
8547
8570
  "data-testid": cancelButtonProps === null || cancelButtonProps === void 0 ? void 0 : cancelButtonProps['data-testid'],
8571
+ disableInteractive: cancelButtonProps === null || cancelButtonProps === void 0 ? void 0 : cancelButtonProps.disableInteractive,
8548
8572
  disableRipple: cancelButtonProps === null || cancelButtonProps === void 0 ? void 0 : cancelButtonProps.disableRipple,
8549
8573
  disabled: cancelButtonProps === null || cancelButtonProps === void 0 ? void 0 : cancelButtonProps.disabled,
8550
8574
  endIcon: cancelButtonProps === null || cancelButtonProps === void 0 ? void 0 : cancelButtonProps.endIcon,
@@ -8558,6 +8582,7 @@ const DotDialog = ({
8558
8582
  className: secondaryButtonProps === null || secondaryButtonProps === void 0 ? void 0 : secondaryButtonProps.className,
8559
8583
  "data-pendoid": secondaryButtonProps === null || secondaryButtonProps === void 0 ? void 0 : secondaryButtonProps['data-pendoid'],
8560
8584
  "data-testid": secondaryButtonProps === null || secondaryButtonProps === void 0 ? void 0 : secondaryButtonProps['data-testid'],
8585
+ disableInteractive: secondaryButtonProps === null || secondaryButtonProps === void 0 ? void 0 : secondaryButtonProps.disableInteractive,
8561
8586
  disableRipple: secondaryButtonProps === null || secondaryButtonProps === void 0 ? void 0 : secondaryButtonProps.disableRipple,
8562
8587
  disabled: secondaryButtonProps === null || secondaryButtonProps === void 0 ? void 0 : secondaryButtonProps.disabled,
8563
8588
  endIcon: secondaryButtonProps === null || secondaryButtonProps === void 0 ? void 0 : secondaryButtonProps.endIcon,
@@ -8571,6 +8596,7 @@ const DotDialog = ({
8571
8596
  className: submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.className,
8572
8597
  "data-pendoid": submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps['data-pendoid'],
8573
8598
  "data-testid": submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps['data-testid'],
8599
+ disableInteractive: submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.disableInteractive,
8574
8600
  disableRipple: submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.disableRipple,
8575
8601
  disabled: submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.disabled,
8576
8602
  endIcon: submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.endIcon,
@@ -13528,6 +13554,7 @@ const DotProgressButton = ({
13528
13554
  'data-pendoid': dataPendoId = rootClassName$x,
13529
13555
  'data-testid': dataTestId,
13530
13556
  disabled = false,
13557
+ disableInteractive,
13531
13558
  disableRipple = false,
13532
13559
  fullWidth = false,
13533
13560
  isLoading = false,
@@ -13543,10 +13570,11 @@ const DotProgressButton = ({
13543
13570
  const titleClasses = useStylesWithRootClass(isLoading ? 'hidden' : '');
13544
13571
  const progressCircleSize = size === 'large' ? SPINNER_LARGE_SIZE : SPINNER_DEFAULT_SIZE;
13545
13572
  return jsxs(StyledProgressButton, {
13546
- ariaLabel: ariaLabel || tooltip,
13573
+ ariaLabel: ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : isString$2(tooltip) ? `${tooltip}` : undefined,
13547
13574
  className: rootClasses,
13548
13575
  "data-pendoid": dataPendoId,
13549
13576
  "data-testid": dataTestId,
13577
+ disableInteractive: disableInteractive,
13550
13578
  disableRipple: disableRipple,
13551
13579
  disabled: isButtonDisabled,
13552
13580
  fullWidth: fullWidth,
@@ -15023,6 +15051,7 @@ const DotSplitButton = ({
15023
15051
  'data-testid': dataTestId,
15024
15052
  defaultMainOptionKey,
15025
15053
  disabled = false,
15054
+ disableInteractive,
15026
15055
  disablePortal,
15027
15056
  disableRipple = false,
15028
15057
  fullWidth = false,
@@ -15063,6 +15092,7 @@ const DotSplitButton = ({
15063
15092
  className: "label-button",
15064
15093
  "data-pendoid": dataPendoId,
15065
15094
  "data-testid": dataTestId,
15095
+ disableInteractive: disableInteractive,
15066
15096
  disableRipple: disableRipple,
15067
15097
  disabled: isMainOptionDisabled,
15068
15098
  isSubmit: isSubmit,
@@ -15076,6 +15106,7 @@ const DotSplitButton = ({
15076
15106
  className: "expand-button",
15077
15107
  "data-pendoid": dataPendoId && `${dataPendoId}-expand`,
15078
15108
  "data-testid": dataTestId && `${dataTestId}-expand`,
15109
+ disableInteractive: disableInteractive,
15079
15110
  disableRipple: disableRipple,
15080
15111
  disabled: isMenuButtonDisabled,
15081
15112
  onClick: () => setOpen(!open),