@digital-ai/dot-components 5.11.0 → 5.12.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.
package/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
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, Fab, LinearProgress, Slide, Stack, Select } from '@mui/material';
4
+ import { Typography, Fade, StyledEngineProvider, Tooltip, InputAdornment, InputLabel, TextField, Icon, Accordion, AccordionSummary, AccordionDetails, AccordionActions, Toolbar, Alert, Avatar, AvatarGroup, Button, Link, List, ListSubheader, Divider, CircularProgress, Popper, MenuList, MenuItem, Paper, ClickAwayListener, Drawer, IconButton, ListItem, ListItemButton, Collapse, ListItemIcon, ListItemText, Badge, useMediaQuery, Chip, Autocomplete, 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, Fab, LinearProgress, Slide, Stack, Select } from '@mui/material';
5
5
  import styled, { keyframes, css, createGlobalStyle, ThemeProvider as ThemeProvider$1 } from 'styled-components';
6
6
  import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles';
7
7
  import '@digital-ai/dot-icons';
@@ -30,6 +30,63 @@ function useStylesWithRootClass(name, className, ...args) {
30
30
  return [name, ...(className ? [className] : [])].concat(args).join(' ').trim();
31
31
  }
32
32
 
33
+ /******************************************************************************
34
+ Copyright (c) Microsoft Corporation.
35
+
36
+ Permission to use, copy, modify, and/or distribute this software for any
37
+ purpose with or without fee is hereby granted.
38
+
39
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
40
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
41
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
42
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
43
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
44
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
45
+ PERFORMANCE OF THIS SOFTWARE.
46
+ ***************************************************************************** */
47
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
48
+
49
+
50
+ function __rest(s, e) {
51
+ var t = {};
52
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
53
+ t[p] = s[p];
54
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
55
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
56
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
57
+ t[p[i]] = s[p[i]];
58
+ }
59
+ return t;
60
+ }
61
+
62
+ function __awaiter(thisArg, _arguments, P, generator) {
63
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
64
+ return new (P || (P = Promise))(function (resolve, reject) {
65
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
66
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
67
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
68
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
69
+ });
70
+ }
71
+
72
+ function __classPrivateFieldGet(receiver, state, kind, f) {
73
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
74
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
75
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
76
+ }
77
+
78
+ function __classPrivateFieldSet(receiver, state, value, kind, f) {
79
+ if (kind === "m") throw new TypeError("Private method is not writable");
80
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
81
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
82
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
83
+ }
84
+
85
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
86
+ var e = new Error(message);
87
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
88
+ };
89
+
33
90
  const checkIfOverflowPresentInElementTree = element => {
34
91
  if (element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight) {
35
92
  return true;
@@ -1319,10 +1376,12 @@ const DotTooltip = ({
1319
1376
  open,
1320
1377
  placement = 'bottom',
1321
1378
  popperClassName,
1379
+ popperOptions,
1322
1380
  slotProps,
1323
1381
  title,
1324
1382
  childrenDisplayStyle
1325
1383
  }) => {
1384
+ var _a;
1326
1385
  const rootClasses = useStylesWithRootClass('dot-tooltip', className);
1327
1386
  const [hasTooltipOnHover, setHasTooltipOnHover] = useState(false);
1328
1387
  const childrenWrapperRef = useRef(undefined);
@@ -1347,6 +1406,16 @@ const DotTooltip = ({
1347
1406
  if (!title) {
1348
1407
  return children;
1349
1408
  }
1409
+ // MUI v5 Tooltip reads popperOptions exclusively from PopperProps.popperOptions —
1410
+ // it overrides any popperOptions in slotProps.popper at render time (see Tooltip.js:573).
1411
+ // To ensure both the popperOptions prop and any consumer-provided slotProps.popper.popperOptions
1412
+ // are forwarded to createPopper, we merge them here and pass via PopperProps.
1413
+ const _b = (_a = slotProps === null || slotProps === void 0 ? void 0 : slotProps.popper) !== null && _a !== void 0 ? _a : {},
1414
+ {
1415
+ popperOptions: slotPopperOptions
1416
+ } = _b,
1417
+ restPopperSlotProps = __rest(_b, ["popperOptions"]);
1418
+ const resolvedPopperOptions = popperOptions || slotPopperOptions ? Object.assign(Object.assign({}, popperOptions), slotPopperOptions) : undefined;
1350
1419
  return jsx(Tooltip, {
1351
1420
  "aria-hidden": false,
1352
1421
  "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : isString$2(title) ? title.toString() : 'Information tooltip',
@@ -1362,10 +1431,14 @@ const DotTooltip = ({
1362
1431
  open: open,
1363
1432
  placement: placement,
1364
1433
  PopperProps: {
1365
- disablePortal,
1366
- className: popperClassName
1434
+ popperOptions: resolvedPopperOptions
1367
1435
  },
1368
- slotProps: slotProps,
1436
+ slotProps: Object.assign(Object.assign({}, slotProps), {
1437
+ popper: Object.assign({
1438
+ disablePortal,
1439
+ className: popperClassName
1440
+ }, restPopperSlotProps)
1441
+ }),
1369
1442
  role: ariaRole,
1370
1443
  title: title,
1371
1444
  followCursor: followCursor,
@@ -2082,63 +2155,6 @@ const DotAnnotation = ({
2082
2155
  });
2083
2156
  };
2084
2157
 
2085
- /******************************************************************************
2086
- Copyright (c) Microsoft Corporation.
2087
-
2088
- Permission to use, copy, modify, and/or distribute this software for any
2089
- purpose with or without fee is hereby granted.
2090
-
2091
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
2092
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
2093
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
2094
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
2095
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
2096
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
2097
- PERFORMANCE OF THIS SOFTWARE.
2098
- ***************************************************************************** */
2099
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
2100
-
2101
-
2102
- function __rest(s, e) {
2103
- var t = {};
2104
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
2105
- t[p] = s[p];
2106
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
2107
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2108
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
2109
- t[p[i]] = s[p[i]];
2110
- }
2111
- return t;
2112
- }
2113
-
2114
- function __awaiter(thisArg, _arguments, P, generator) {
2115
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2116
- return new (P || (P = Promise))(function (resolve, reject) {
2117
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
2118
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
2119
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
2120
- step((generator = generator.apply(thisArg, _arguments || [])).next());
2121
- });
2122
- }
2123
-
2124
- function __classPrivateFieldGet(receiver, state, kind, f) {
2125
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
2126
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
2127
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
2128
- }
2129
-
2130
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
2131
- if (kind === "m") throw new TypeError("Private method is not writable");
2132
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
2133
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
2134
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
2135
- }
2136
-
2137
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
2138
- var e = new Error(message);
2139
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
2140
- };
2141
-
2142
2158
  const OpenAPI$1 = {
2143
2159
  BASE: '',
2144
2160
  TOKEN: undefined,
@@ -2786,6 +2802,54 @@ const StyledAvatar = styled(Avatar)`
2786
2802
  `}
2787
2803
  `;
2788
2804
 
2805
+ const rootClassName$1n = 'dot-avatar-group';
2806
+ const StyledAvatarGroup = styled(AvatarGroup)`
2807
+ ${() => css`
2808
+ &.${rootClassName$1n} {
2809
+ justify-content: flex-end;
2810
+
2811
+ .MuiAvatar-root {
2812
+ border: none;
2813
+ display: flex;
2814
+ }
2815
+ }
2816
+ `}
2817
+ `;
2818
+ const StyledDotTooltip = styled(DotTooltip)`
2819
+ ${({
2820
+ theme
2821
+ }) => css`
2822
+ &.avatar-with-tooltip {
2823
+ margin-left: -${theme.spacing(1)};
2824
+ }
2825
+ `}
2826
+ `;
2827
+ const StyledDotTypography = styled(DotTypography)`
2828
+ ${({
2829
+ theme
2830
+ }) => css`
2831
+ {
2832
+ color: inherit;
2833
+ &.xs {
2834
+ padding: ${theme.spacing(0.5)};
2835
+ }
2836
+ &.small {
2837
+ padding: ${theme.spacing(1)};
2838
+ }
2839
+ &.medium, &.large {
2840
+ padding: ${theme.spacing(1.5)};
2841
+ }
2842
+ `}
2843
+ `;
2844
+ const StyledExtraAvatarSpan = styled.span`
2845
+ display: flex;
2846
+ align-items: center;
2847
+ justify-content: center;
2848
+ width: 100%;
2849
+ height: 100%;
2850
+ pointer-events: auto;
2851
+ `;
2852
+
2789
2853
  const AvatarContent = ({
2790
2854
  ai,
2791
2855
  'data-testid': dataTestId,
@@ -2853,6 +2917,7 @@ const DotAvatar = ({
2853
2917
  text = alt,
2854
2918
  type = 'image',
2855
2919
  tooltip,
2920
+ tooltipClassname,
2856
2921
  variant = 'circular',
2857
2922
  style
2858
2923
  }) => {
@@ -2863,9 +2928,10 @@ const DotAvatar = ({
2863
2928
  if (text && text !== alt) return getAvatarColorForInputText(text);
2864
2929
  return 'default';
2865
2930
  };
2866
- return jsx(DotTooltip, {
2931
+ return jsx(StyledDotTooltip, {
2867
2932
  disableInteractive: disableInteractive,
2868
2933
  childrenDisplayStyle: "inline-block",
2934
+ className: tooltipClassname,
2869
2935
  title: tooltip,
2870
2936
  children: jsx(StyledAvatar, {
2871
2937
  alt: alt,
@@ -2898,12 +2964,12 @@ const DotAvatar = ({
2898
2964
  });
2899
2965
  };
2900
2966
 
2901
- const rootClassName$1n = 'dot-button';
2967
+ const rootClassName$1m = 'dot-button';
2902
2968
  const StyledButton = styled(Button)`
2903
2969
  ${({
2904
2970
  theme
2905
2971
  }) => css`
2906
- &.${rootClassName$1n} {
2972
+ &.${rootClassName$1m} {
2907
2973
  background-color: ${theme.palette.figma.primary.normal};
2908
2974
  margin: ${theme.spacing(0.5)};
2909
2975
  padding: ${theme.spacing(0.75, 2)};
@@ -3056,7 +3122,7 @@ const DotButton = forwardRef(({
3056
3122
  autoFocus = false,
3057
3123
  children,
3058
3124
  className,
3059
- 'data-pendoid': dataPendoId = rootClassName$1n,
3125
+ 'data-pendoid': dataPendoId = rootClassName$1m,
3060
3126
  'data-testid': dataTestId,
3061
3127
  disabled = false,
3062
3128
  disableInteractive,
@@ -3074,7 +3140,7 @@ const DotButton = forwardRef(({
3074
3140
  tooltipPlacement,
3075
3141
  type = 'primary'
3076
3142
  }, ref) => {
3077
- const rootClasses = useStylesWithRootClass(rootClassName$1n, className);
3143
+ const rootClasses = useStylesWithRootClass(rootClassName$1m, className);
3078
3144
  let color;
3079
3145
  let variant;
3080
3146
  switch (type) {
@@ -3105,7 +3171,7 @@ const DotButton = forwardRef(({
3105
3171
  }
3106
3172
  return jsx(DotTooltip, {
3107
3173
  childrenDisplayStyle: "inline-block",
3108
- "data-testid": `${dataTestId || rootClassName$1n}-tooltip`,
3174
+ "data-testid": `${dataTestId || rootClassName$1m}-tooltip`,
3109
3175
  disableInteractive: disableInteractive,
3110
3176
  placement: tooltipPlacement,
3111
3177
  title: tooltip,
@@ -3117,7 +3183,7 @@ const DotButton = forwardRef(({
3117
3183
  },
3118
3184
  color: color,
3119
3185
  "data-pendoid": dataPendoId,
3120
- "data-testid": dataTestId || rootClassName$1n,
3186
+ "data-testid": dataTestId || rootClassName$1m,
3121
3187
  disableRipple: disableRipple,
3122
3188
  disabled: disabled,
3123
3189
  endIcon: endIcon,
@@ -3137,10 +3203,10 @@ const DotButton = forwardRef(({
3137
3203
  });
3138
3204
  });
3139
3205
 
3140
- const rootClassName$1m = 'dot-link';
3206
+ const rootClassName$1l = 'dot-link';
3141
3207
  const StyledLink = styled(Link)`
3142
3208
  ${() => css`
3143
- &.${rootClassName$1m} {
3209
+ &.${rootClassName$1l} {
3144
3210
  cursor: pointer;
3145
3211
 
3146
3212
  &:hover.MuiLink-underlineHover {
@@ -3156,7 +3222,7 @@ const DotLink = ({
3156
3222
  children,
3157
3223
  className,
3158
3224
  color = 'primary',
3159
- 'data-pendoid': dataPendoId = rootClassName$1m,
3225
+ 'data-pendoid': dataPendoId = rootClassName$1l,
3160
3226
  'data-testid': dataTestId,
3161
3227
  href,
3162
3228
  onClick,
@@ -3169,7 +3235,7 @@ const DotLink = ({
3169
3235
  underline = 'always',
3170
3236
  variant = 'body1'
3171
3237
  }) => {
3172
- const rootClasses = useStylesWithRootClass(rootClassName$1m, className);
3238
+ const rootClasses = useStylesWithRootClass(rootClassName$1l, className);
3173
3239
  useEffect(() => {
3174
3240
  // Include a console warning if the link is not a string and no ariaLabel is provided
3175
3241
  if (!isString$2(children) && !ariaLabel) {
@@ -3220,7 +3286,7 @@ const CreateUUID = () => {
3220
3286
  });
3221
3287
  };
3222
3288
 
3223
- const rootClassName$1l = 'dot-list';
3289
+ const rootClassName$1k = 'dot-list';
3224
3290
  const listItemRootClass = 'dot-list-item';
3225
3291
  const nestedListClassName = 'dot-nested-list';
3226
3292
  const nestedDrawerClassName = 'dot-nested-drawer';
@@ -3228,7 +3294,7 @@ const StyledList = styled(List)`
3228
3294
  ${({
3229
3295
  theme
3230
3296
  }) => css`
3231
- &.${rootClassName$1l} {
3297
+ &.${rootClassName$1k} {
3232
3298
  background: ${theme.palette.figma.background.level0.componentsBackground};
3233
3299
 
3234
3300
  .dot-icon {
@@ -3322,13 +3388,13 @@ const DotListDivider = ({
3322
3388
  });
3323
3389
  };
3324
3390
 
3325
- const rootClassName$1k = 'dot-progress';
3391
+ const rootClassName$1j = 'dot-progress';
3326
3392
  const StyledProgress = styled.div`
3327
3393
  ${({
3328
3394
  theme,
3329
3395
  $aiProgressGradientId
3330
3396
  }) => css`
3331
- &.${rootClassName$1k} {
3397
+ &.${rootClassName$1j} {
3332
3398
  line-height: 0;
3333
3399
 
3334
3400
  .dot-progress-with-ai-wrapper {
@@ -3428,7 +3494,7 @@ const DotProgress = ({
3428
3494
  value,
3429
3495
  variant = 'indeterminate'
3430
3496
  }) => {
3431
- const rootClasses = useStylesWithRootClass(rootClassName$1k, className);
3497
+ const rootClasses = useStylesWithRootClass(rootClassName$1j, className);
3432
3498
  const calculatedSize = ai ? AI_PROGRESS_SIZE : size;
3433
3499
  const calculatedThickness = ai ? AI_PROGRESS_THICKNESS : thickness;
3434
3500
  useEffect(() => {
@@ -3517,13 +3583,13 @@ var variables = /*#__PURE__*/Object.freeze({
3517
3583
  levelTop: levelTop
3518
3584
  });
3519
3585
 
3520
- const rootClassName$1j = 'dot-popper';
3586
+ const rootClassName$1i = 'dot-popper';
3521
3587
  const arrowClassName = 'MuiPopper-arrow';
3522
3588
  const StyledPopper$1 = styled(Popper)`
3523
3589
  ${({
3524
3590
  theme
3525
3591
  }) => css`
3526
- &.${rootClassName$1j} {
3592
+ &.${rootClassName$1i} {
3527
3593
  font-family: ${theme.typography.fontFamily};
3528
3594
  font-size: ${theme.typography.body1.fontSize}px;
3529
3595
 
@@ -3582,7 +3648,7 @@ const StyledPopper$1 = styled(Popper)`
3582
3648
  }
3583
3649
  }
3584
3650
 
3585
- &.${rootClassName$1j}, &.${rootClassName$1j} > .dot-popper-paper {
3651
+ &.${rootClassName$1i}, &.${rootClassName$1i} > .dot-popper-paper {
3586
3652
  background-color: ${theme.palette.figma.background.level1.white};
3587
3653
  }
3588
3654
  `}
@@ -3612,12 +3678,12 @@ const StyledArrow = styled('span')`
3612
3678
  `;
3613
3679
 
3614
3680
  const flyoutMenuClassName = 'dot-flyout-menu';
3615
- const rootClassName$1i = 'dot-menu';
3681
+ const rootClassName$1h = 'dot-menu';
3616
3682
  const StyledPopper = styled(Popper)`
3617
3683
  ${({
3618
3684
  theme
3619
3685
  }) => css`
3620
- &.${rootClassName$1j} {
3686
+ &.${rootClassName$1i} {
3621
3687
  font-family: ${theme.typography.fontFamily};
3622
3688
  font-size: ${theme.typography.body1.fontSize}px;
3623
3689
 
@@ -3627,7 +3693,7 @@ const StyledPopper = styled(Popper)`
3627
3693
  }) => $zIndex === undefined ? `z-index: ${levelSecond};` : `z-index: ${$zIndex};`}
3628
3694
  }
3629
3695
  }
3630
- &.${rootClassName$1i}, &.${rootClassName$1j} {
3696
+ &.${rootClassName$1h}, &.${rootClassName$1i} {
3631
3697
  .MuiPaper-root:not(:empty) {
3632
3698
  border: 1px solid ${theme.palette.layer.n100};
3633
3699
  }
@@ -3707,14 +3773,14 @@ const MENU_ITEM_HEIGHT_NORMAL = 48;
3707
3773
  const MENU_ITEM_HEIGHT_DENSE = 36;
3708
3774
  const DEFAULT_MAX_VISIBLE_ITEMS = 7;
3709
3775
 
3710
- const rootClassName$1h = 'dot-ul';
3776
+ const rootClassName$1g = 'dot-ul';
3711
3777
  const listItemClassName$1 = 'dot-li';
3712
3778
  const listItemWithSubmenuClassName = 'dot-li-with-submenu';
3713
3779
  const StyledMenuList = styled(MenuList)`
3714
3780
  ${({
3715
3781
  theme
3716
3782
  }) => css`
3717
- &.${rootClassName$1h} {
3783
+ &.${rootClassName$1g} {
3718
3784
  background: ${theme.palette.figma.background.level1.white};
3719
3785
 
3720
3786
  .dot-li {
@@ -3816,7 +3882,7 @@ const DotMenuList = forwardRef(({
3816
3882
  onSubMenuCreate,
3817
3883
  selectedKey
3818
3884
  }, ref) => {
3819
- const rootClasses = useStylesWithRootClass(rootClassName$1h, className);
3885
+ const rootClasses = useStylesWithRootClass(rootClassName$1g, className);
3820
3886
  const [activeSubmenu, setActiveSubmenu] = useState(null);
3821
3887
  const [subItemAnchorEl, setSubItemAnchorEl] = useState(null);
3822
3888
  const openSubmenu = (target, itemKey) => {
@@ -3928,7 +3994,7 @@ const DotMenu = ({
3928
3994
  open = false,
3929
3995
  selectedKey
3930
3996
  }) => {
3931
- const rootClasses = useStylesWithRootClass(rootClassName$1i, className, loading ? 'loading' : '');
3997
+ const rootClasses = useStylesWithRootClass(rootClassName$1h, className, loading ? 'loading' : '');
3932
3998
  const isSubmenu = checkIfSubmenu(anchorEl);
3933
3999
  const hasSubItems = checkForSubItems(menuItems);
3934
4000
  // Timeout object is customizable when Menu component is either submenu
@@ -4016,12 +4082,12 @@ const DotMenu = ({
4016
4082
  });
4017
4083
  };
4018
4084
 
4019
- const rootClassName$1g = 'dot-drawer';
4085
+ const rootClassName$1f = 'dot-drawer';
4020
4086
  const StyledDrawer = styled(Drawer)`
4021
4087
  ${({
4022
4088
  theme
4023
4089
  }) => css`
4024
- &.${rootClassName$1g} .MuiBackdrop-root {
4090
+ &.${rootClassName$1f} .MuiBackdrop-root {
4025
4091
  background-color: ${theme.palette.figma.overlay.default};
4026
4092
  }
4027
4093
 
@@ -4040,12 +4106,12 @@ const StyledDrawer = styled(Drawer)`
4040
4106
  `}
4041
4107
  `;
4042
4108
 
4043
- const rootClassName$1f = 'dot-drawer-header';
4109
+ const rootClassName$1e = 'dot-drawer-header';
4044
4110
  const StyleDrawerHeader = styled.div`
4045
4111
  ${({
4046
4112
  theme
4047
4113
  }) => css`
4048
- &.${rootClassName$1f} {
4114
+ &.${rootClassName$1e} {
4049
4115
  padding: ${theme.spacing(0, 0, 2)};
4050
4116
  display: flex;
4051
4117
  align-items: center;
@@ -4056,13 +4122,13 @@ const StyleDrawerHeader = styled.div`
4056
4122
  `}
4057
4123
  `;
4058
4124
 
4059
- const rootClassName$1e = 'dot-icon-btn';
4125
+ const rootClassName$1d = 'dot-icon-btn';
4060
4126
  const StyledIconButton = styled(IconButton)`
4061
4127
  ${({
4062
4128
  theme,
4063
4129
  color
4064
4130
  }) => css`
4065
- &.${rootClassName$1e} {
4131
+ &.${rootClassName$1d} {
4066
4132
  ${color === 'inherit' ? css`
4067
4133
  color: inherit;
4068
4134
  ` : ''}
@@ -4148,7 +4214,7 @@ const DotIconButton = ({
4148
4214
  ariaRole = 'button',
4149
4215
  className,
4150
4216
  color = 'inherit',
4151
- 'data-pendoid': dataPendoId = rootClassName$1e,
4217
+ 'data-pendoid': dataPendoId = rootClassName$1d,
4152
4218
  'data-testid': dataTestId,
4153
4219
  disableInteractive,
4154
4220
  disableRipple = false,
@@ -4162,7 +4228,7 @@ const DotIconButton = ({
4162
4228
  tooltipPlacement
4163
4229
  }) => {
4164
4230
  const rippleClassName = disableRipple ? 'ripple-disabled' : '';
4165
- const rootClasses = useStylesWithRootClass(rootClassName$1e, rippleClassName, `shape-${shape}`, className);
4231
+ const rootClasses = useStylesWithRootClass(rootClassName$1d, rippleClassName, `shape-${shape}`, className);
4166
4232
  return jsx(DotTooltip, {
4167
4233
  childrenDisplayStyle: "inline-block",
4168
4234
  "data-testid": "icon-button-tooltip",
@@ -4199,7 +4265,7 @@ const DotDrawerHeader = ({
4199
4265
  onClose,
4200
4266
  variant
4201
4267
  }) => {
4202
- const rootClasses = useStylesWithRootClass(rootClassName$1f, className);
4268
+ const rootClasses = useStylesWithRootClass(rootClassName$1e, className);
4203
4269
  return jsxs(StyleDrawerHeader, {
4204
4270
  "aria-label": ariaLabel,
4205
4271
  "aria-level": 2,
@@ -4216,10 +4282,10 @@ const DotDrawerHeader = ({
4216
4282
  });
4217
4283
  };
4218
4284
 
4219
- const rootClassName$1d = 'dot-drawer-body';
4285
+ const rootClassName$1c = 'dot-drawer-body';
4220
4286
  const StyleDrawerBody = styled.div`
4221
4287
  ${() => css`
4222
- &.${rootClassName$1d} {
4288
+ &.${rootClassName$1c} {
4223
4289
  display: flex;
4224
4290
  .dot-drawer-close-button {
4225
4291
  align-self: self-start;
@@ -4240,7 +4306,7 @@ const DotDrawerBody = ({
4240
4306
  onClose,
4241
4307
  variant
4242
4308
  }) => {
4243
- const rootClasses = useStylesWithRootClass(rootClassName$1d, className);
4309
+ const rootClasses = useStylesWithRootClass(rootClassName$1c, className);
4244
4310
  return jsxs(StyleDrawerBody, {
4245
4311
  "aria-label": ariaLabel,
4246
4312
  className: rootClasses,
@@ -4255,12 +4321,12 @@ const DotDrawerBody = ({
4255
4321
  });
4256
4322
  };
4257
4323
 
4258
- const rootClassName$1c = 'dot-drawer-footer';
4324
+ const rootClassName$1b = 'dot-drawer-footer';
4259
4325
  const StyleDrawerFooter = styled.div`
4260
4326
  ${({
4261
4327
  theme
4262
4328
  }) => css`
4263
- &.${rootClassName$1c} {
4329
+ &.${rootClassName$1b} {
4264
4330
  padding: ${theme.spacing(2, 0, 0)};
4265
4331
  }
4266
4332
  `}
@@ -4273,7 +4339,7 @@ const DotDrawerFooter = ({
4273
4339
  className,
4274
4340
  'data-testid': dataTestId
4275
4341
  }) => {
4276
- const rootClasses = useStylesWithRootClass(rootClassName$1c, className);
4342
+ const rootClasses = useStylesWithRootClass(rootClassName$1b, className);
4277
4343
  return jsx(StyleDrawerFooter, {
4278
4344
  "aria-label": ariaLabel,
4279
4345
  className: rootClasses,
@@ -4289,7 +4355,7 @@ const DotDrawer = ({
4289
4355
  ariaRole = 'dialog',
4290
4356
  className,
4291
4357
  children,
4292
- 'data-pendoid': dataPendoId = rootClassName$1g,
4358
+ 'data-pendoid': dataPendoId = rootClassName$1f,
4293
4359
  'data-testid': dataTestId,
4294
4360
  drawerBodyProps,
4295
4361
  drawerFooterProps,
@@ -4312,7 +4378,7 @@ const DotDrawer = ({
4312
4378
  onClose(event);
4313
4379
  }
4314
4380
  };
4315
- const rootClasses = useStylesWithRootClass(rootClassName$1g, className);
4381
+ const rootClasses = useStylesWithRootClass(rootClassName$1f, className);
4316
4382
  const backdropEnabled = variant === 'temporary' && !(ModalProps === null || ModalProps === void 0 ? void 0 : ModalProps.hideBackdrop);
4317
4383
  const headerExists = !!drawerHeaderProps;
4318
4384
  const bodyPendoId = drawerBodyProps ? drawerBodyProps['data-pendoid'] : 'drawer-body';
@@ -4787,7 +4853,7 @@ const DotList = ({
4787
4853
  nestedListType = 'expandable',
4788
4854
  width = 240
4789
4855
  }) => {
4790
- const rootClasses = useStylesWithRootClass(rootClassName$1l, className);
4856
+ const rootClasses = useStylesWithRootClass(rootClassName$1k, className);
4791
4857
  const listWidth = typeof width === 'number' ? `${width}px` : width;
4792
4858
  const listRef = useRef(undefined);
4793
4859
  const disableCloseOnClickAway = !nestedListCloseOnClickAway && nestedListType === 'expandable';
@@ -4887,12 +4953,12 @@ const DotList = ({
4887
4953
  });
4888
4954
  };
4889
4955
 
4890
- const rootClassName$1b = 'dot-copy-button';
4956
+ const rootClassName$1a = 'dot-copy-button';
4891
4957
  const StyledCopyButton = styled.span`
4892
4958
  ${({
4893
4959
  theme
4894
4960
  }) => css`
4895
- &.${rootClassName$1b} .copied-to-clipboard {
4961
+ &.${rootClassName$1a} .copied-to-clipboard {
4896
4962
  color: ${theme.palette.figma.success.normal};
4897
4963
 
4898
4964
  &.MuiIcon-fontSizeSmall.button-size-small {
@@ -4918,7 +4984,7 @@ const DotCopyButton = ({
4918
4984
  color = 'inherit',
4919
4985
  copiedTooltip = 'Copied!',
4920
4986
  copyTooltip = 'Copy to clipboard',
4921
- 'data-pendoid': dataPendoId = rootClassName$1b,
4987
+ 'data-pendoid': dataPendoId = rootClassName$1a,
4922
4988
  'data-testid': dataTestId = 'dot-copy-button',
4923
4989
  disableInteractive,
4924
4990
  disabled = false,
@@ -4967,7 +5033,7 @@ const DotCopyButton = ({
4967
5033
  return false;
4968
5034
  }, [value, showCopiedIcon, disabled, onClick]);
4969
5035
  return jsxs(StyledCopyButton, {
4970
- className: rootClassName$1b,
5036
+ className: rootClassName$1a,
4971
5037
  "data-testid": dataTestId,
4972
5038
  children: [!timedShowCopiedIcon && jsx(DotIconButton, {
4973
5039
  ariaLabel: ariaLabel,
@@ -5266,10 +5332,10 @@ const DotInputText = ({
5266
5332
  });
5267
5333
  };
5268
5334
 
5269
- const rootClassName$1a = 'dot-search-input';
5335
+ const rootClassName$19 = 'dot-search-input';
5270
5336
  const StyledSearchInput = styled.span`
5271
5337
  ${() => css`
5272
- &.${rootClassName$1a} {
5338
+ &.${rootClassName$19} {
5273
5339
  }
5274
5340
  `}
5275
5341
  `;
@@ -5286,7 +5352,7 @@ function SearchInput({
5286
5352
  tooltip = null,
5287
5353
  value
5288
5354
  }) {
5289
- const rootClasses = useStylesWithRootClass(rootClassName$1a, className);
5355
+ const rootClasses = useStylesWithRootClass(rootClassName$19, className);
5290
5356
  const [searchText, setSearchText] = useState(value);
5291
5357
  let previousSearchText = '';
5292
5358
  const handleChange = useCallback(event => {
@@ -5542,12 +5608,12 @@ const recentAppInstancesSetter = (latestInstance, maxRecentItems
5542
5608
  };
5543
5609
  };
5544
5610
 
5545
- const rootClassName$19 = 'dot-app-switcher';
5611
+ const rootClassName$18 = 'dot-app-switcher';
5546
5612
  const StyledAppSwitcher = styled(DotDrawer)`
5547
5613
  ${({
5548
5614
  theme
5549
5615
  }) => css`
5550
- &.${rootClassName$19} {
5616
+ &.${rootClassName$18} {
5551
5617
  .dot-drawer-paper {
5552
5618
  padding: 0;
5553
5619
  width: 382px;
@@ -5657,7 +5723,7 @@ const DotAppSwitcherView = ({
5657
5723
  if (dotCoreApiContext !== null) {
5658
5724
  setSelectedAppType = dotCoreApiContext.setSelectedAppSwitcherAppType;
5659
5725
  }
5660
- const rootClasses = useStylesWithRootClass(rootClassName$19, className);
5726
+ const rootClasses = useStylesWithRootClass(rootClassName$18, className);
5661
5727
  const [appTypeMap, setAppTypeMap] = useState();
5662
5728
  const [appTypeLabels, setAppTypeLabels] = useState();
5663
5729
  const [appTypeMenuItems, setAppTypeMenuItems] = useState();
@@ -6035,12 +6101,12 @@ var SvgLogoDigitalAiWhite = function SvgLogoDigitalAiWhite(_ref, ref) {
6035
6101
  };
6036
6102
  var ForwardRef = /*#__PURE__*/forwardRef(SvgLogoDigitalAiWhite);
6037
6103
 
6038
- const rootClassName$18 = 'dot-sidebar';
6104
+ const rootClassName$17 = 'dot-sidebar';
6039
6105
  const StyledSidebar = styled.aside`
6040
6106
  ${({
6041
6107
  theme
6042
6108
  }) => css`
6043
- &.${rootClassName$18} {
6109
+ &.${rootClassName$17} {
6044
6110
  align-items: stretch;
6045
6111
  background: ${theme.palette.figma.background.level1.white};
6046
6112
  border-width: 0 1px;
@@ -6334,10 +6400,10 @@ const StyledSidebar = styled.aside`
6334
6400
  `}
6335
6401
  `;
6336
6402
 
6337
- const rootClassName$17 = 'dot-truncate-with-tooltip';
6403
+ const rootClassName$16 = 'dot-truncate-with-tooltip';
6338
6404
  const StyledTruncateWithTooltip = styled(Tooltip)`
6339
6405
  ${() => css`
6340
- &.${rootClassName$17} {
6406
+ &.${rootClassName$16} {
6341
6407
  display: block;
6342
6408
  overflow: hidden;
6343
6409
  white-space: nowrap;
@@ -6368,7 +6434,7 @@ const DotTruncateWithTooltip = ({
6368
6434
  label,
6369
6435
  width
6370
6436
  }) => {
6371
- const rootClasses = useStylesWithRootClass(rootClassName$17, className, charactersLimit ? 'dot-characters-limit' : '');
6437
+ const rootClasses = useStylesWithRootClass(rootClassName$16, className, charactersLimit ? 'dot-characters-limit' : '');
6372
6438
  return jsx(StyledTruncateWithTooltip, {
6373
6439
  "aria-label": ariaLabel,
6374
6440
  arrow: arrow,
@@ -6482,7 +6548,7 @@ const DotSidebar = ({
6482
6548
  keys: collapseKeys
6483
6549
  }, toggleNavCollapseState, [isOpen, collapsable]);
6484
6550
  const sidebarClasses = useStylesWithRootClass('side-nav', openClass);
6485
- const rootClasses = useStylesWithRootClass(rootClassName$18, openClass, className);
6551
+ const rootClasses = useStylesWithRootClass(rootClassName$17, openClass, className);
6486
6552
  return jsxs(StyledSidebar, {
6487
6553
  "aria-label": ariaLabel,
6488
6554
  className: rootClasses,
@@ -6558,12 +6624,12 @@ const DotSidebar = ({
6558
6624
  });
6559
6625
  };
6560
6626
 
6561
- const rootClassName$16 = 'dot-badge';
6627
+ const rootClassName$15 = 'dot-badge';
6562
6628
  const StyledBadge = styled(Badge)`
6563
6629
  ${({
6564
6630
  theme
6565
6631
  }) => css`
6566
- &.${rootClassName$16} {
6632
+ &.${rootClassName$15} {
6567
6633
  color: ${theme.palette.figma.typography.black};
6568
6634
  word-break: normal;
6569
6635
 
@@ -6598,7 +6664,7 @@ const DotBadge = ({
6598
6664
  overlap,
6599
6665
  variant = 'dot'
6600
6666
  }) => {
6601
- const rootClasses = useStylesWithRootClass(rootClassName$16, className);
6667
+ const rootClasses = useStylesWithRootClass(rootClassName$15, className);
6602
6668
  return jsx(StyledBadge, {
6603
6669
  "$badgeColor": badgeColor,
6604
6670
  anchorOrigin: {
@@ -6620,7 +6686,7 @@ const DotBadge = ({
6620
6686
  });
6621
6687
  };
6622
6688
 
6623
- const rootClassName$15 = 'dot-app-toolbar';
6689
+ const rootClassName$14 = 'dot-app-toolbar';
6624
6690
  const denseClassName = 'dense';
6625
6691
  const StyledMainMenu = styled(DotDrawer)`
6626
6692
  ${({
@@ -6660,7 +6726,7 @@ const StyledAppToolbar = styled.header`
6660
6726
  ${({
6661
6727
  theme
6662
6728
  }) => css`
6663
- &.${rootClassName$15} {
6729
+ &.${rootClassName$14} {
6664
6730
  align-items: center;
6665
6731
  background: ${theme.palette.figma.appToolbar.background};
6666
6732
  border-bottom: 4px solid ${theme.palette.figma.border.default};
@@ -6789,7 +6855,7 @@ const DotAppToolbar = ({
6789
6855
  const displayAppLogo = appLogo || appLogoSmall;
6790
6856
  const mainMenuRef = useRef(null);
6791
6857
  const denseClass = dense ? denseClassName : '';
6792
- const rootClasses = useStylesWithRootClass(rootClassName$15, className, denseClass, showMainMenu ? '' : 'without-menu-icon');
6858
+ const rootClasses = useStylesWithRootClass(rootClassName$14, className, denseClass, showMainMenu ? '' : 'without-menu-icon');
6793
6859
  const mainMenuClasses = useStylesWithRootClass('dot-main-menu', denseClass, menuOpen ? 'open' : '');
6794
6860
  const targetBreakpoint = useMediaQuery(theme => theme.breakpoints.up('lg'));
6795
6861
  useEffect(() => {
@@ -6941,12 +7007,12 @@ const DotAppToolbar = ({
6941
7007
  }) : appToolbar;
6942
7008
  };
6943
7009
 
6944
- const rootClassName$14 = 'dot-chip';
7010
+ const rootClassName$13 = 'dot-chip';
6945
7011
  const StyledChip = styled(Chip)`
6946
7012
  ${({
6947
7013
  theme
6948
7014
  }) => css`
6949
- &.${rootClassName$14} {
7015
+ &.${rootClassName$13} {
6950
7016
  background: ${theme.palette.figma.neutral.normal};
6951
7017
  border-color: ${theme.palette.figma.border.darker};
6952
7018
  color: ${theme.palette.figma.typography.black};
@@ -7052,7 +7118,7 @@ const DotChip = ({
7052
7118
  charactersLimit = DEFAULT_CHARACTERS_LIMIT,
7053
7119
  children,
7054
7120
  className,
7055
- 'data-pendoid': dataPendoId = rootClassName$14,
7121
+ 'data-pendoid': dataPendoId = rootClassName$13,
7056
7122
  'data-testid': dataTestId,
7057
7123
  disabled = false,
7058
7124
  error = false,
@@ -7066,7 +7132,7 @@ const DotChip = ({
7066
7132
  tooltipProps
7067
7133
  }) => {
7068
7134
  const errorClass = error ? 'Mui-error' : '';
7069
- const rootClasses = useStylesWithRootClass(rootClassName$14, className, errorClass);
7135
+ const rootClasses = useStylesWithRootClass(rootClassName$13, className, errorClass);
7070
7136
  const isTruncated = charactersLimit > 0 && children.length > charactersLimit;
7071
7137
  const getChipLabelWithTooltip = label => jsx(DotTooltip, Object.assign({}, tooltipProps, {
7072
7138
  hoverVisibility: "always",
@@ -7102,7 +7168,7 @@ const DotChip = ({
7102
7168
  });
7103
7169
  };
7104
7170
 
7105
- const rootClassName$13 = 'dot-autocomplete';
7171
+ const rootClassName$12 = 'dot-autocomplete';
7106
7172
  const inputRootClassName = 'dot-input-root';
7107
7173
  const inputMediumClassName = 'dot-input-medium';
7108
7174
  const inputAiClassName = 'dot-input-ai';
@@ -7110,7 +7176,7 @@ const StyledAutocomplete = styled(Autocomplete)`
7110
7176
  ${({
7111
7177
  theme
7112
7178
  }) => css`
7113
- &.${rootClassName$13} {
7179
+ &.${rootClassName$12} {
7114
7180
  &.${inputMediumClassName} .dot-text-field .${inputRootClassName} {
7115
7181
  height: 56px;
7116
7182
  padding-left: ${theme.spacing(2)};
@@ -7209,7 +7275,7 @@ const isEmptyValue = value => {
7209
7275
  return !value;
7210
7276
  }
7211
7277
  };
7212
- const getRootClassNames = (className, size) => useStylesWithRootClass(rootClassName$13, size === 'medium' && inputMediumClassName, className);
7278
+ const getRootClassNames = (className, size) => useStylesWithRootClass(rootClassName$12, size === 'medium' && inputMediumClassName, className);
7213
7279
  const getTextFieldRootClassNames = (textFieldWarningClassName, isReadOnly) => useStylesWithRootClass(rootClassName$1u, isReadOnly && readOnlyClassName$1, textFieldWarningClassName);
7214
7280
  const getInputRootClassNames = isDense => useStylesWithRootClass(inputRootClassName, !isDense && inputMediumClassName);
7215
7281
  const getDefaultAutoCompleteValue = (hasMultiple, defaultValue) => hasMultiple && isString$2(defaultValue) ? [defaultValue] : defaultValue;
@@ -7232,7 +7298,7 @@ const DotAutoComplete = ({
7232
7298
  autoFocus,
7233
7299
  autoHighlight,
7234
7300
  className,
7235
- 'data-pendoid': dataPendoId = rootClassName$13,
7301
+ 'data-pendoid': dataPendoId = rootClassName$12,
7236
7302
  'data-testid': dataTestId,
7237
7303
  defaultValue,
7238
7304
  dense = true,
@@ -7302,7 +7368,7 @@ const DotAutoComplete = ({
7302
7368
  const rootClasses = useStylesWithRootClass(getRootClassNames(className, size), isAiEnabled ? inputAiClassName : '');
7303
7369
  const textFieldRootClasses = getTextFieldRootClassNames(textFieldWarningClassName, readOnly);
7304
7370
  const inputRootClasses = getInputRootClassNames(dense);
7305
- const popperClasses = useStylesWithRootClass(rootClassName$1j, popperClassName);
7371
+ const popperClasses = useStylesWithRootClass(rootClassName$1i, popperClassName);
7306
7372
  let highlightedOption = null;
7307
7373
  let textFieldInput;
7308
7374
  const textFieldRef = element => {
@@ -7652,21 +7718,8 @@ const DotAutoComplete = ({
7652
7718
  });
7653
7719
  };
7654
7720
 
7655
- const rootClassName$12 = 'dot-avatar-group';
7656
- const StyledAvatarGroup = styled(AvatarGroup)`
7657
- ${() => css`
7658
- &.${rootClassName$12} {
7659
- justify-content: flex-end;
7660
-
7661
- .MuiAvatar-root {
7662
- border: none;
7663
- }
7664
- }
7665
- }
7666
- `}
7667
- `;
7668
-
7669
7721
  const DotAvatarGroup = ({
7722
+ additionalAvatarsLabel = 'Additional Users',
7670
7723
  ariaLabel,
7671
7724
  avatars,
7672
7725
  className,
@@ -7674,7 +7727,53 @@ const DotAvatarGroup = ({
7674
7727
  max = 3,
7675
7728
  spacing = 'medium'
7676
7729
  }) => {
7677
- const rootClasses = useStylesWithRootClass(rootClassName$12, className);
7730
+ var _a;
7731
+ const rootClasses = useStylesWithRootClass(rootClassName$1n, className);
7732
+ const firstAvatarSize = ((_a = avatars[0]) === null || _a === void 0 ? void 0 : _a.size) || 'medium';
7733
+ // Map avatar size to pixel value
7734
+ const sizeMap = {
7735
+ xs: 16,
7736
+ small: 24,
7737
+ medium: 40,
7738
+ large: 56
7739
+ };
7740
+ const textSizeMap = {
7741
+ xs: 'caption',
7742
+ small: 'caption',
7743
+ medium: 'h3',
7744
+ large: 'h1'
7745
+ };
7746
+ const surplusSizePixels = sizeMap[firstAvatarSize] || 40;
7747
+ const extraAvatarTooltip = jsxs("div", {
7748
+ children: [jsxs("div", {
7749
+ children: [additionalAvatarsLabel, ":"]
7750
+ }), avatars.slice(max - 1).map((avatar, index) => jsx("div", {
7751
+ children: avatar.alt || avatar.text || ''
7752
+ }, index))]
7753
+ });
7754
+ const getAvatarClassName = index => {
7755
+ return `${avatars[index].className}`;
7756
+ };
7757
+ const getAvatarTooltipClassName = index => {
7758
+ if (avatars[index] && avatars[index].tooltip) {
7759
+ return `${avatars[index].className} ${index !== 0 && index !== max - 1 ? 'avatar-with-tooltip' : ''}`;
7760
+ }
7761
+ return '';
7762
+ };
7763
+ const renderSurplus = surplus => {
7764
+ var _a;
7765
+ return jsx(DotTooltip, {
7766
+ title: extraAvatarTooltip,
7767
+ childrenDisplayStyle: "inline-flex",
7768
+ children: jsx(StyledExtraAvatarSpan, {
7769
+ children: jsx(StyledDotTypography, {
7770
+ className: firstAvatarSize,
7771
+ variant: (_a = textSizeMap[firstAvatarSize]) !== null && _a !== void 0 ? _a : 'caption',
7772
+ children: `+${surplus}`
7773
+ })
7774
+ })
7775
+ });
7776
+ };
7678
7777
  return jsx(StyledAvatarGroup, {
7679
7778
  "aria-label": ariaLabel,
7680
7779
  classes: {
@@ -7683,7 +7782,19 @@ const DotAvatarGroup = ({
7683
7782
  "data-testid": dataTestId,
7684
7783
  max: max,
7685
7784
  spacing: spacing,
7686
- children: avatars.map((avatar, index) => createElement(DotAvatar, Object.assign({}, avatar, {
7785
+ slotProps: {
7786
+ additionalAvatar: {
7787
+ sx: {
7788
+ width: surplusSizePixels,
7789
+ height: surplusSizePixels
7790
+ }
7791
+ }
7792
+ },
7793
+ renderSurplus: renderSurplus,
7794
+ children: avatars.map((avatar, index) => createElement(DotAvatar, Object.assign({
7795
+ tooltipClassname: getAvatarTooltipClassName(index),
7796
+ className: getAvatarClassName(index)
7797
+ }, avatar, {
7687
7798
  key: index
7688
7799
  })))
7689
7800
  });
@@ -15860,6 +15971,20 @@ const StyledNavigationRail = styled.div`
15860
15971
  }
15861
15972
  }
15862
15973
 
15974
+ &.ai-rail {
15975
+ &.selected,
15976
+ &:focus-visible,
15977
+ &:hover {
15978
+ background-color: ${theme.palette.figma.aiPink.light} !important;
15979
+ }
15980
+ &.selected {
15981
+ border-image: ${theme.palette.figma.gradient.active} 1;
15982
+ }
15983
+ .dot-icon {
15984
+ color: transparent !important;
15985
+ }
15986
+ }
15987
+
15863
15988
  .rail-item-text {
15864
15989
  word-break: break-word;
15865
15990
  padding: ${theme.spacing(0, 0.5)};
@@ -15869,7 +15994,7 @@ const StyledNavigationRail = styled.div`
15869
15994
  `}
15870
15995
  `;
15871
15996
 
15872
- const MAX_ALLOWED_ITEMS = 7;
15997
+ const MAX_ALLOWED_ITEMS = 8;
15873
15998
  const DotNavigationRail = ({
15874
15999
  ariaLabel,
15875
16000
  className,
@@ -15891,8 +16016,9 @@ const DotNavigationRail = ({
15891
16016
  onChange && onChange(index);
15892
16017
  };
15893
16018
  const checkIfSelected = index => selectedItemIndex === index;
15894
- const renderIcon = (iconId, railIconBadge) => {
16019
+ const renderIcon = (ai, iconId, railIconBadge) => {
15895
16020
  const icon = jsx(DotIcon, {
16021
+ ai: ai,
15896
16022
  className: "rail-item-button-icon",
15897
16023
  iconId: iconId
15898
16024
  });
@@ -15904,18 +16030,20 @@ const DotNavigationRail = ({
15904
16030
  };
15905
16031
  const renderRailItems = () => {
15906
16032
  return railItems === null || railItems === void 0 ? void 0 : railItems.slice(0, MAX_ALLOWED_ITEMS).map(({
16033
+ ai,
15907
16034
  ariaLabel: itemAriaLabel,
15908
16035
  iconBadge,
15909
16036
  iconId,
15910
16037
  title
15911
16038
  }, index) => jsxs(DotButton, {
15912
16039
  ariaLabel: itemAriaLabel,
15913
- className: useStylesWithRootClass('rail-item-button', checkIfSelected(index) && 'selected'),
16040
+ className: useStylesWithRootClass('rail-item-button', ai ? 'ai-rail' : '', checkIfSelected(index) && 'selected'),
15914
16041
  "data-testid": `rail-item-${index}`,
15915
16042
  disableRipple: true,
15916
16043
  onClick: onItemSelect(index),
15917
16044
  type: "text",
15918
- children: [iconId && renderIcon(iconId, iconBadge), jsx(DotTypography, {
16045
+ children: [iconId && renderIcon(ai, iconId, iconBadge), jsx(DotTypography, {
16046
+ ai: ai,
15919
16047
  className: "rail-item-text",
15920
16048
  variant: "body2",
15921
16049
  children: title
@@ -19178,7 +19306,7 @@ const DotPopper = ({
19178
19306
  placement
19179
19307
  }) => {
19180
19308
  const [arrowRef, setArrowRef] = useState(null);
19181
- const rootClasses = useStylesWithRootClass(rootClassName$1j, className);
19309
+ const rootClasses = useStylesWithRootClass(rootClassName$1i, className);
19182
19310
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19183
19311
  const handleClickAway = event => {
19184
19312
  if (onClickAway && (!anchorEl || !anchorEl.contains(event.currentTarget))) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digital-ai/dot-components",
3
- "version": "5.11.0",
3
+ "version": "5.12.1",
4
4
  "private": false,
5
5
  "license": "SEE LICENSE IN <LICENSE.md>",
6
6
  "contributors": [
@@ -33,9 +33,11 @@ export interface AvatarProps extends CommonProps {
33
33
  text?: string;
34
34
  /** Tooltip for avatar */
35
35
  tooltip?: string;
36
+ /** Classname for the tooltip */
37
+ tooltipClassname?: string;
36
38
  /** The type of the avatar */
37
39
  type?: AvatarType;
38
40
  /** The shape of the avatar */
39
41
  variant?: AvatarVariant;
40
42
  }
41
- export declare const DotAvatar: ({ ai, alt, ariaLabel, ariaRole, className, component, disableInteractive, color, "data-testid": dataTestId, iconId, imageSrc, onClick, number, size, tabIndex, text, type, tooltip, variant, style, }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
43
+ export declare const DotAvatar: ({ ai, alt, ariaLabel, ariaRole, className, component, disableInteractive, color, "data-testid": dataTestId, iconId, imageSrc, onClick, number, size, tabIndex, text, type, tooltip, tooltipClassname, variant, style, }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
@@ -2,6 +2,8 @@ import { CommonProps } from '../CommonProps';
2
2
  import { AvatarProps } from '../avatar/Avatar';
3
3
  export type AvatarGroupSpacing = 'medium' | 'small' | number;
4
4
  export interface AvatarGroupProps extends CommonProps {
5
+ /** Label for the additional avatars displayed when the max is exceeded */
6
+ additionalAvatarsLabel?: string;
5
7
  /** Array of avatars displayed inside the group */
6
8
  avatars: Array<AvatarProps>;
7
9
  /** Max avatars to show before +x */
@@ -9,4 +11,4 @@ export interface AvatarGroupProps extends CommonProps {
9
11
  /** Spacing between avatars */
10
12
  spacing?: AvatarGroupSpacing;
11
13
  }
12
- export declare const DotAvatarGroup: ({ ariaLabel, avatars, className, "data-testid": dataTestId, max, spacing, }: AvatarGroupProps) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const DotAvatarGroup: ({ additionalAvatarsLabel, ariaLabel, avatars, className, "data-testid": dataTestId, max, spacing, }: AvatarGroupProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,6 @@
1
1
  import { AvatarGroup } from '@mui/material';
2
2
  export declare const rootClassName = "dot-avatar-group";
3
3
  export declare const StyledAvatarGroup: import("styled-components").StyledComponent<typeof AvatarGroup, any, {}, never>;
4
+ export declare const StyledDotTooltip: import("styled-components").StyledComponent<({ ariaLabel, ariaRole, arrow, children, className, "data-testid": dataTestId, disablePortal, disableInteractive, followCursor, enterDelay, enterNextDelay, hoverVisibility, leaveDelay, onClose, open, placement, popperClassName, popperOptions, slotProps, title, childrenDisplayStyle, }: import("../tooltip").TooltipProps) => import("react/jsx-runtime").JSX.Element, any, {}, never>;
5
+ export declare const StyledDotTypography: import("styled-components").StyledComponent<({ ai, ariaLabel, ariaLevel, ariaRole, className, "data-testid": dataTestId, children, component, hasShimmer, noMarginBottom, noWrap, variant, }: import("../typography/Typography").TypographyProps) => import("react/jsx-runtime").JSX.Element, any, {}, never>;
6
+ export declare const StyledExtraAvatarSpan: import("styled-components").StyledComponent<"span", any, {}, never>;
@@ -3,6 +3,8 @@ import { BadgeProps } from '../badge';
3
3
  export type RailItemsPosition = 'flex-start' | 'center' | 'flex-end';
4
4
  export type RailIconBadge = Omit<BadgeProps, 'children'>;
5
5
  export interface RailItem {
6
+ /** If true, applies AI color scheme on the elements */
7
+ ai?: boolean;
6
8
  /** Defines a string value that labels the current element **/
7
9
  ariaLabel?: string;
8
10
  /** Optional badge which will be displayed over an icon **/
@@ -33,8 +33,10 @@ export interface TooltipProps extends CommonProps {
33
33
  open?: boolean;
34
34
  placement?: TooltipPlacement;
35
35
  popperClassName?: string;
36
+ /** Options forwarded to the underlying Popper.js instance (e.g. strategy, modifiers). */
37
+ popperOptions?: PopperProps['popperOptions'];
36
38
  /** The extra props for the slot components, like popper. It allows to override the existing props or add new ones. */
37
39
  slotProps?: SlotProps;
38
40
  title?: ReactNode | string | number;
39
41
  }
40
- export declare const DotTooltip: ({ ariaLabel, ariaRole, arrow, children, className, "data-testid": dataTestId, disablePortal, disableInteractive, followCursor, enterDelay, enterNextDelay, hoverVisibility, leaveDelay, onClose, open, placement, popperClassName, slotProps, title, childrenDisplayStyle, }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
42
+ export declare const DotTooltip: ({ ariaLabel, ariaRole, arrow, children, className, "data-testid": dataTestId, disablePortal, disableInteractive, followCursor, enterDelay, enterNextDelay, hoverVisibility, leaveDelay, onClose, open, placement, popperClassName, popperOptions, slotProps, title, childrenDisplayStyle, }: TooltipProps) => import("react/jsx-runtime").JSX.Element;