@digital-ai/dot-components 5.12.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';
@@ -2802,6 +2802,54 @@ const StyledAvatar = styled(Avatar)`
2802
2802
  `}
2803
2803
  `;
2804
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
+
2805
2853
  const AvatarContent = ({
2806
2854
  ai,
2807
2855
  'data-testid': dataTestId,
@@ -2869,6 +2917,7 @@ const DotAvatar = ({
2869
2917
  text = alt,
2870
2918
  type = 'image',
2871
2919
  tooltip,
2920
+ tooltipClassname,
2872
2921
  variant = 'circular',
2873
2922
  style
2874
2923
  }) => {
@@ -2879,9 +2928,10 @@ const DotAvatar = ({
2879
2928
  if (text && text !== alt) return getAvatarColorForInputText(text);
2880
2929
  return 'default';
2881
2930
  };
2882
- return jsx(DotTooltip, {
2931
+ return jsx(StyledDotTooltip, {
2883
2932
  disableInteractive: disableInteractive,
2884
2933
  childrenDisplayStyle: "inline-block",
2934
+ className: tooltipClassname,
2885
2935
  title: tooltip,
2886
2936
  children: jsx(StyledAvatar, {
2887
2937
  alt: alt,
@@ -2914,12 +2964,12 @@ const DotAvatar = ({
2914
2964
  });
2915
2965
  };
2916
2966
 
2917
- const rootClassName$1n = 'dot-button';
2967
+ const rootClassName$1m = 'dot-button';
2918
2968
  const StyledButton = styled(Button)`
2919
2969
  ${({
2920
2970
  theme
2921
2971
  }) => css`
2922
- &.${rootClassName$1n} {
2972
+ &.${rootClassName$1m} {
2923
2973
  background-color: ${theme.palette.figma.primary.normal};
2924
2974
  margin: ${theme.spacing(0.5)};
2925
2975
  padding: ${theme.spacing(0.75, 2)};
@@ -3072,7 +3122,7 @@ const DotButton = forwardRef(({
3072
3122
  autoFocus = false,
3073
3123
  children,
3074
3124
  className,
3075
- 'data-pendoid': dataPendoId = rootClassName$1n,
3125
+ 'data-pendoid': dataPendoId = rootClassName$1m,
3076
3126
  'data-testid': dataTestId,
3077
3127
  disabled = false,
3078
3128
  disableInteractive,
@@ -3090,7 +3140,7 @@ const DotButton = forwardRef(({
3090
3140
  tooltipPlacement,
3091
3141
  type = 'primary'
3092
3142
  }, ref) => {
3093
- const rootClasses = useStylesWithRootClass(rootClassName$1n, className);
3143
+ const rootClasses = useStylesWithRootClass(rootClassName$1m, className);
3094
3144
  let color;
3095
3145
  let variant;
3096
3146
  switch (type) {
@@ -3121,7 +3171,7 @@ const DotButton = forwardRef(({
3121
3171
  }
3122
3172
  return jsx(DotTooltip, {
3123
3173
  childrenDisplayStyle: "inline-block",
3124
- "data-testid": `${dataTestId || rootClassName$1n}-tooltip`,
3174
+ "data-testid": `${dataTestId || rootClassName$1m}-tooltip`,
3125
3175
  disableInteractive: disableInteractive,
3126
3176
  placement: tooltipPlacement,
3127
3177
  title: tooltip,
@@ -3133,7 +3183,7 @@ const DotButton = forwardRef(({
3133
3183
  },
3134
3184
  color: color,
3135
3185
  "data-pendoid": dataPendoId,
3136
- "data-testid": dataTestId || rootClassName$1n,
3186
+ "data-testid": dataTestId || rootClassName$1m,
3137
3187
  disableRipple: disableRipple,
3138
3188
  disabled: disabled,
3139
3189
  endIcon: endIcon,
@@ -3153,10 +3203,10 @@ const DotButton = forwardRef(({
3153
3203
  });
3154
3204
  });
3155
3205
 
3156
- const rootClassName$1m = 'dot-link';
3206
+ const rootClassName$1l = 'dot-link';
3157
3207
  const StyledLink = styled(Link)`
3158
3208
  ${() => css`
3159
- &.${rootClassName$1m} {
3209
+ &.${rootClassName$1l} {
3160
3210
  cursor: pointer;
3161
3211
 
3162
3212
  &:hover.MuiLink-underlineHover {
@@ -3172,7 +3222,7 @@ const DotLink = ({
3172
3222
  children,
3173
3223
  className,
3174
3224
  color = 'primary',
3175
- 'data-pendoid': dataPendoId = rootClassName$1m,
3225
+ 'data-pendoid': dataPendoId = rootClassName$1l,
3176
3226
  'data-testid': dataTestId,
3177
3227
  href,
3178
3228
  onClick,
@@ -3185,7 +3235,7 @@ const DotLink = ({
3185
3235
  underline = 'always',
3186
3236
  variant = 'body1'
3187
3237
  }) => {
3188
- const rootClasses = useStylesWithRootClass(rootClassName$1m, className);
3238
+ const rootClasses = useStylesWithRootClass(rootClassName$1l, className);
3189
3239
  useEffect(() => {
3190
3240
  // Include a console warning if the link is not a string and no ariaLabel is provided
3191
3241
  if (!isString$2(children) && !ariaLabel) {
@@ -3236,7 +3286,7 @@ const CreateUUID = () => {
3236
3286
  });
3237
3287
  };
3238
3288
 
3239
- const rootClassName$1l = 'dot-list';
3289
+ const rootClassName$1k = 'dot-list';
3240
3290
  const listItemRootClass = 'dot-list-item';
3241
3291
  const nestedListClassName = 'dot-nested-list';
3242
3292
  const nestedDrawerClassName = 'dot-nested-drawer';
@@ -3244,7 +3294,7 @@ const StyledList = styled(List)`
3244
3294
  ${({
3245
3295
  theme
3246
3296
  }) => css`
3247
- &.${rootClassName$1l} {
3297
+ &.${rootClassName$1k} {
3248
3298
  background: ${theme.palette.figma.background.level0.componentsBackground};
3249
3299
 
3250
3300
  .dot-icon {
@@ -3338,13 +3388,13 @@ const DotListDivider = ({
3338
3388
  });
3339
3389
  };
3340
3390
 
3341
- const rootClassName$1k = 'dot-progress';
3391
+ const rootClassName$1j = 'dot-progress';
3342
3392
  const StyledProgress = styled.div`
3343
3393
  ${({
3344
3394
  theme,
3345
3395
  $aiProgressGradientId
3346
3396
  }) => css`
3347
- &.${rootClassName$1k} {
3397
+ &.${rootClassName$1j} {
3348
3398
  line-height: 0;
3349
3399
 
3350
3400
  .dot-progress-with-ai-wrapper {
@@ -3444,7 +3494,7 @@ const DotProgress = ({
3444
3494
  value,
3445
3495
  variant = 'indeterminate'
3446
3496
  }) => {
3447
- const rootClasses = useStylesWithRootClass(rootClassName$1k, className);
3497
+ const rootClasses = useStylesWithRootClass(rootClassName$1j, className);
3448
3498
  const calculatedSize = ai ? AI_PROGRESS_SIZE : size;
3449
3499
  const calculatedThickness = ai ? AI_PROGRESS_THICKNESS : thickness;
3450
3500
  useEffect(() => {
@@ -3533,13 +3583,13 @@ var variables = /*#__PURE__*/Object.freeze({
3533
3583
  levelTop: levelTop
3534
3584
  });
3535
3585
 
3536
- const rootClassName$1j = 'dot-popper';
3586
+ const rootClassName$1i = 'dot-popper';
3537
3587
  const arrowClassName = 'MuiPopper-arrow';
3538
3588
  const StyledPopper$1 = styled(Popper)`
3539
3589
  ${({
3540
3590
  theme
3541
3591
  }) => css`
3542
- &.${rootClassName$1j} {
3592
+ &.${rootClassName$1i} {
3543
3593
  font-family: ${theme.typography.fontFamily};
3544
3594
  font-size: ${theme.typography.body1.fontSize}px;
3545
3595
 
@@ -3598,7 +3648,7 @@ const StyledPopper$1 = styled(Popper)`
3598
3648
  }
3599
3649
  }
3600
3650
 
3601
- &.${rootClassName$1j}, &.${rootClassName$1j} > .dot-popper-paper {
3651
+ &.${rootClassName$1i}, &.${rootClassName$1i} > .dot-popper-paper {
3602
3652
  background-color: ${theme.palette.figma.background.level1.white};
3603
3653
  }
3604
3654
  `}
@@ -3628,12 +3678,12 @@ const StyledArrow = styled('span')`
3628
3678
  `;
3629
3679
 
3630
3680
  const flyoutMenuClassName = 'dot-flyout-menu';
3631
- const rootClassName$1i = 'dot-menu';
3681
+ const rootClassName$1h = 'dot-menu';
3632
3682
  const StyledPopper = styled(Popper)`
3633
3683
  ${({
3634
3684
  theme
3635
3685
  }) => css`
3636
- &.${rootClassName$1j} {
3686
+ &.${rootClassName$1i} {
3637
3687
  font-family: ${theme.typography.fontFamily};
3638
3688
  font-size: ${theme.typography.body1.fontSize}px;
3639
3689
 
@@ -3643,7 +3693,7 @@ const StyledPopper = styled(Popper)`
3643
3693
  }) => $zIndex === undefined ? `z-index: ${levelSecond};` : `z-index: ${$zIndex};`}
3644
3694
  }
3645
3695
  }
3646
- &.${rootClassName$1i}, &.${rootClassName$1j} {
3696
+ &.${rootClassName$1h}, &.${rootClassName$1i} {
3647
3697
  .MuiPaper-root:not(:empty) {
3648
3698
  border: 1px solid ${theme.palette.layer.n100};
3649
3699
  }
@@ -3723,14 +3773,14 @@ const MENU_ITEM_HEIGHT_NORMAL = 48;
3723
3773
  const MENU_ITEM_HEIGHT_DENSE = 36;
3724
3774
  const DEFAULT_MAX_VISIBLE_ITEMS = 7;
3725
3775
 
3726
- const rootClassName$1h = 'dot-ul';
3776
+ const rootClassName$1g = 'dot-ul';
3727
3777
  const listItemClassName$1 = 'dot-li';
3728
3778
  const listItemWithSubmenuClassName = 'dot-li-with-submenu';
3729
3779
  const StyledMenuList = styled(MenuList)`
3730
3780
  ${({
3731
3781
  theme
3732
3782
  }) => css`
3733
- &.${rootClassName$1h} {
3783
+ &.${rootClassName$1g} {
3734
3784
  background: ${theme.palette.figma.background.level1.white};
3735
3785
 
3736
3786
  .dot-li {
@@ -3832,7 +3882,7 @@ const DotMenuList = forwardRef(({
3832
3882
  onSubMenuCreate,
3833
3883
  selectedKey
3834
3884
  }, ref) => {
3835
- const rootClasses = useStylesWithRootClass(rootClassName$1h, className);
3885
+ const rootClasses = useStylesWithRootClass(rootClassName$1g, className);
3836
3886
  const [activeSubmenu, setActiveSubmenu] = useState(null);
3837
3887
  const [subItemAnchorEl, setSubItemAnchorEl] = useState(null);
3838
3888
  const openSubmenu = (target, itemKey) => {
@@ -3944,7 +3994,7 @@ const DotMenu = ({
3944
3994
  open = false,
3945
3995
  selectedKey
3946
3996
  }) => {
3947
- const rootClasses = useStylesWithRootClass(rootClassName$1i, className, loading ? 'loading' : '');
3997
+ const rootClasses = useStylesWithRootClass(rootClassName$1h, className, loading ? 'loading' : '');
3948
3998
  const isSubmenu = checkIfSubmenu(anchorEl);
3949
3999
  const hasSubItems = checkForSubItems(menuItems);
3950
4000
  // Timeout object is customizable when Menu component is either submenu
@@ -4032,12 +4082,12 @@ const DotMenu = ({
4032
4082
  });
4033
4083
  };
4034
4084
 
4035
- const rootClassName$1g = 'dot-drawer';
4085
+ const rootClassName$1f = 'dot-drawer';
4036
4086
  const StyledDrawer = styled(Drawer)`
4037
4087
  ${({
4038
4088
  theme
4039
4089
  }) => css`
4040
- &.${rootClassName$1g} .MuiBackdrop-root {
4090
+ &.${rootClassName$1f} .MuiBackdrop-root {
4041
4091
  background-color: ${theme.palette.figma.overlay.default};
4042
4092
  }
4043
4093
 
@@ -4056,12 +4106,12 @@ const StyledDrawer = styled(Drawer)`
4056
4106
  `}
4057
4107
  `;
4058
4108
 
4059
- const rootClassName$1f = 'dot-drawer-header';
4109
+ const rootClassName$1e = 'dot-drawer-header';
4060
4110
  const StyleDrawerHeader = styled.div`
4061
4111
  ${({
4062
4112
  theme
4063
4113
  }) => css`
4064
- &.${rootClassName$1f} {
4114
+ &.${rootClassName$1e} {
4065
4115
  padding: ${theme.spacing(0, 0, 2)};
4066
4116
  display: flex;
4067
4117
  align-items: center;
@@ -4072,13 +4122,13 @@ const StyleDrawerHeader = styled.div`
4072
4122
  `}
4073
4123
  `;
4074
4124
 
4075
- const rootClassName$1e = 'dot-icon-btn';
4125
+ const rootClassName$1d = 'dot-icon-btn';
4076
4126
  const StyledIconButton = styled(IconButton)`
4077
4127
  ${({
4078
4128
  theme,
4079
4129
  color
4080
4130
  }) => css`
4081
- &.${rootClassName$1e} {
4131
+ &.${rootClassName$1d} {
4082
4132
  ${color === 'inherit' ? css`
4083
4133
  color: inherit;
4084
4134
  ` : ''}
@@ -4164,7 +4214,7 @@ const DotIconButton = ({
4164
4214
  ariaRole = 'button',
4165
4215
  className,
4166
4216
  color = 'inherit',
4167
- 'data-pendoid': dataPendoId = rootClassName$1e,
4217
+ 'data-pendoid': dataPendoId = rootClassName$1d,
4168
4218
  'data-testid': dataTestId,
4169
4219
  disableInteractive,
4170
4220
  disableRipple = false,
@@ -4178,7 +4228,7 @@ const DotIconButton = ({
4178
4228
  tooltipPlacement
4179
4229
  }) => {
4180
4230
  const rippleClassName = disableRipple ? 'ripple-disabled' : '';
4181
- const rootClasses = useStylesWithRootClass(rootClassName$1e, rippleClassName, `shape-${shape}`, className);
4231
+ const rootClasses = useStylesWithRootClass(rootClassName$1d, rippleClassName, `shape-${shape}`, className);
4182
4232
  return jsx(DotTooltip, {
4183
4233
  childrenDisplayStyle: "inline-block",
4184
4234
  "data-testid": "icon-button-tooltip",
@@ -4215,7 +4265,7 @@ const DotDrawerHeader = ({
4215
4265
  onClose,
4216
4266
  variant
4217
4267
  }) => {
4218
- const rootClasses = useStylesWithRootClass(rootClassName$1f, className);
4268
+ const rootClasses = useStylesWithRootClass(rootClassName$1e, className);
4219
4269
  return jsxs(StyleDrawerHeader, {
4220
4270
  "aria-label": ariaLabel,
4221
4271
  "aria-level": 2,
@@ -4232,10 +4282,10 @@ const DotDrawerHeader = ({
4232
4282
  });
4233
4283
  };
4234
4284
 
4235
- const rootClassName$1d = 'dot-drawer-body';
4285
+ const rootClassName$1c = 'dot-drawer-body';
4236
4286
  const StyleDrawerBody = styled.div`
4237
4287
  ${() => css`
4238
- &.${rootClassName$1d} {
4288
+ &.${rootClassName$1c} {
4239
4289
  display: flex;
4240
4290
  .dot-drawer-close-button {
4241
4291
  align-self: self-start;
@@ -4256,7 +4306,7 @@ const DotDrawerBody = ({
4256
4306
  onClose,
4257
4307
  variant
4258
4308
  }) => {
4259
- const rootClasses = useStylesWithRootClass(rootClassName$1d, className);
4309
+ const rootClasses = useStylesWithRootClass(rootClassName$1c, className);
4260
4310
  return jsxs(StyleDrawerBody, {
4261
4311
  "aria-label": ariaLabel,
4262
4312
  className: rootClasses,
@@ -4271,12 +4321,12 @@ const DotDrawerBody = ({
4271
4321
  });
4272
4322
  };
4273
4323
 
4274
- const rootClassName$1c = 'dot-drawer-footer';
4324
+ const rootClassName$1b = 'dot-drawer-footer';
4275
4325
  const StyleDrawerFooter = styled.div`
4276
4326
  ${({
4277
4327
  theme
4278
4328
  }) => css`
4279
- &.${rootClassName$1c} {
4329
+ &.${rootClassName$1b} {
4280
4330
  padding: ${theme.spacing(2, 0, 0)};
4281
4331
  }
4282
4332
  `}
@@ -4289,7 +4339,7 @@ const DotDrawerFooter = ({
4289
4339
  className,
4290
4340
  'data-testid': dataTestId
4291
4341
  }) => {
4292
- const rootClasses = useStylesWithRootClass(rootClassName$1c, className);
4342
+ const rootClasses = useStylesWithRootClass(rootClassName$1b, className);
4293
4343
  return jsx(StyleDrawerFooter, {
4294
4344
  "aria-label": ariaLabel,
4295
4345
  className: rootClasses,
@@ -4305,7 +4355,7 @@ const DotDrawer = ({
4305
4355
  ariaRole = 'dialog',
4306
4356
  className,
4307
4357
  children,
4308
- 'data-pendoid': dataPendoId = rootClassName$1g,
4358
+ 'data-pendoid': dataPendoId = rootClassName$1f,
4309
4359
  'data-testid': dataTestId,
4310
4360
  drawerBodyProps,
4311
4361
  drawerFooterProps,
@@ -4328,7 +4378,7 @@ const DotDrawer = ({
4328
4378
  onClose(event);
4329
4379
  }
4330
4380
  };
4331
- const rootClasses = useStylesWithRootClass(rootClassName$1g, className);
4381
+ const rootClasses = useStylesWithRootClass(rootClassName$1f, className);
4332
4382
  const backdropEnabled = variant === 'temporary' && !(ModalProps === null || ModalProps === void 0 ? void 0 : ModalProps.hideBackdrop);
4333
4383
  const headerExists = !!drawerHeaderProps;
4334
4384
  const bodyPendoId = drawerBodyProps ? drawerBodyProps['data-pendoid'] : 'drawer-body';
@@ -4803,7 +4853,7 @@ const DotList = ({
4803
4853
  nestedListType = 'expandable',
4804
4854
  width = 240
4805
4855
  }) => {
4806
- const rootClasses = useStylesWithRootClass(rootClassName$1l, className);
4856
+ const rootClasses = useStylesWithRootClass(rootClassName$1k, className);
4807
4857
  const listWidth = typeof width === 'number' ? `${width}px` : width;
4808
4858
  const listRef = useRef(undefined);
4809
4859
  const disableCloseOnClickAway = !nestedListCloseOnClickAway && nestedListType === 'expandable';
@@ -4903,12 +4953,12 @@ const DotList = ({
4903
4953
  });
4904
4954
  };
4905
4955
 
4906
- const rootClassName$1b = 'dot-copy-button';
4956
+ const rootClassName$1a = 'dot-copy-button';
4907
4957
  const StyledCopyButton = styled.span`
4908
4958
  ${({
4909
4959
  theme
4910
4960
  }) => css`
4911
- &.${rootClassName$1b} .copied-to-clipboard {
4961
+ &.${rootClassName$1a} .copied-to-clipboard {
4912
4962
  color: ${theme.palette.figma.success.normal};
4913
4963
 
4914
4964
  &.MuiIcon-fontSizeSmall.button-size-small {
@@ -4934,7 +4984,7 @@ const DotCopyButton = ({
4934
4984
  color = 'inherit',
4935
4985
  copiedTooltip = 'Copied!',
4936
4986
  copyTooltip = 'Copy to clipboard',
4937
- 'data-pendoid': dataPendoId = rootClassName$1b,
4987
+ 'data-pendoid': dataPendoId = rootClassName$1a,
4938
4988
  'data-testid': dataTestId = 'dot-copy-button',
4939
4989
  disableInteractive,
4940
4990
  disabled = false,
@@ -4983,7 +5033,7 @@ const DotCopyButton = ({
4983
5033
  return false;
4984
5034
  }, [value, showCopiedIcon, disabled, onClick]);
4985
5035
  return jsxs(StyledCopyButton, {
4986
- className: rootClassName$1b,
5036
+ className: rootClassName$1a,
4987
5037
  "data-testid": dataTestId,
4988
5038
  children: [!timedShowCopiedIcon && jsx(DotIconButton, {
4989
5039
  ariaLabel: ariaLabel,
@@ -5282,10 +5332,10 @@ const DotInputText = ({
5282
5332
  });
5283
5333
  };
5284
5334
 
5285
- const rootClassName$1a = 'dot-search-input';
5335
+ const rootClassName$19 = 'dot-search-input';
5286
5336
  const StyledSearchInput = styled.span`
5287
5337
  ${() => css`
5288
- &.${rootClassName$1a} {
5338
+ &.${rootClassName$19} {
5289
5339
  }
5290
5340
  `}
5291
5341
  `;
@@ -5302,7 +5352,7 @@ function SearchInput({
5302
5352
  tooltip = null,
5303
5353
  value
5304
5354
  }) {
5305
- const rootClasses = useStylesWithRootClass(rootClassName$1a, className);
5355
+ const rootClasses = useStylesWithRootClass(rootClassName$19, className);
5306
5356
  const [searchText, setSearchText] = useState(value);
5307
5357
  let previousSearchText = '';
5308
5358
  const handleChange = useCallback(event => {
@@ -5558,12 +5608,12 @@ const recentAppInstancesSetter = (latestInstance, maxRecentItems
5558
5608
  };
5559
5609
  };
5560
5610
 
5561
- const rootClassName$19 = 'dot-app-switcher';
5611
+ const rootClassName$18 = 'dot-app-switcher';
5562
5612
  const StyledAppSwitcher = styled(DotDrawer)`
5563
5613
  ${({
5564
5614
  theme
5565
5615
  }) => css`
5566
- &.${rootClassName$19} {
5616
+ &.${rootClassName$18} {
5567
5617
  .dot-drawer-paper {
5568
5618
  padding: 0;
5569
5619
  width: 382px;
@@ -5673,7 +5723,7 @@ const DotAppSwitcherView = ({
5673
5723
  if (dotCoreApiContext !== null) {
5674
5724
  setSelectedAppType = dotCoreApiContext.setSelectedAppSwitcherAppType;
5675
5725
  }
5676
- const rootClasses = useStylesWithRootClass(rootClassName$19, className);
5726
+ const rootClasses = useStylesWithRootClass(rootClassName$18, className);
5677
5727
  const [appTypeMap, setAppTypeMap] = useState();
5678
5728
  const [appTypeLabels, setAppTypeLabels] = useState();
5679
5729
  const [appTypeMenuItems, setAppTypeMenuItems] = useState();
@@ -6051,12 +6101,12 @@ var SvgLogoDigitalAiWhite = function SvgLogoDigitalAiWhite(_ref, ref) {
6051
6101
  };
6052
6102
  var ForwardRef = /*#__PURE__*/forwardRef(SvgLogoDigitalAiWhite);
6053
6103
 
6054
- const rootClassName$18 = 'dot-sidebar';
6104
+ const rootClassName$17 = 'dot-sidebar';
6055
6105
  const StyledSidebar = styled.aside`
6056
6106
  ${({
6057
6107
  theme
6058
6108
  }) => css`
6059
- &.${rootClassName$18} {
6109
+ &.${rootClassName$17} {
6060
6110
  align-items: stretch;
6061
6111
  background: ${theme.palette.figma.background.level1.white};
6062
6112
  border-width: 0 1px;
@@ -6350,10 +6400,10 @@ const StyledSidebar = styled.aside`
6350
6400
  `}
6351
6401
  `;
6352
6402
 
6353
- const rootClassName$17 = 'dot-truncate-with-tooltip';
6403
+ const rootClassName$16 = 'dot-truncate-with-tooltip';
6354
6404
  const StyledTruncateWithTooltip = styled(Tooltip)`
6355
6405
  ${() => css`
6356
- &.${rootClassName$17} {
6406
+ &.${rootClassName$16} {
6357
6407
  display: block;
6358
6408
  overflow: hidden;
6359
6409
  white-space: nowrap;
@@ -6384,7 +6434,7 @@ const DotTruncateWithTooltip = ({
6384
6434
  label,
6385
6435
  width
6386
6436
  }) => {
6387
- const rootClasses = useStylesWithRootClass(rootClassName$17, className, charactersLimit ? 'dot-characters-limit' : '');
6437
+ const rootClasses = useStylesWithRootClass(rootClassName$16, className, charactersLimit ? 'dot-characters-limit' : '');
6388
6438
  return jsx(StyledTruncateWithTooltip, {
6389
6439
  "aria-label": ariaLabel,
6390
6440
  arrow: arrow,
@@ -6498,7 +6548,7 @@ const DotSidebar = ({
6498
6548
  keys: collapseKeys
6499
6549
  }, toggleNavCollapseState, [isOpen, collapsable]);
6500
6550
  const sidebarClasses = useStylesWithRootClass('side-nav', openClass);
6501
- const rootClasses = useStylesWithRootClass(rootClassName$18, openClass, className);
6551
+ const rootClasses = useStylesWithRootClass(rootClassName$17, openClass, className);
6502
6552
  return jsxs(StyledSidebar, {
6503
6553
  "aria-label": ariaLabel,
6504
6554
  className: rootClasses,
@@ -6574,12 +6624,12 @@ const DotSidebar = ({
6574
6624
  });
6575
6625
  };
6576
6626
 
6577
- const rootClassName$16 = 'dot-badge';
6627
+ const rootClassName$15 = 'dot-badge';
6578
6628
  const StyledBadge = styled(Badge)`
6579
6629
  ${({
6580
6630
  theme
6581
6631
  }) => css`
6582
- &.${rootClassName$16} {
6632
+ &.${rootClassName$15} {
6583
6633
  color: ${theme.palette.figma.typography.black};
6584
6634
  word-break: normal;
6585
6635
 
@@ -6614,7 +6664,7 @@ const DotBadge = ({
6614
6664
  overlap,
6615
6665
  variant = 'dot'
6616
6666
  }) => {
6617
- const rootClasses = useStylesWithRootClass(rootClassName$16, className);
6667
+ const rootClasses = useStylesWithRootClass(rootClassName$15, className);
6618
6668
  return jsx(StyledBadge, {
6619
6669
  "$badgeColor": badgeColor,
6620
6670
  anchorOrigin: {
@@ -6636,7 +6686,7 @@ const DotBadge = ({
6636
6686
  });
6637
6687
  };
6638
6688
 
6639
- const rootClassName$15 = 'dot-app-toolbar';
6689
+ const rootClassName$14 = 'dot-app-toolbar';
6640
6690
  const denseClassName = 'dense';
6641
6691
  const StyledMainMenu = styled(DotDrawer)`
6642
6692
  ${({
@@ -6676,7 +6726,7 @@ const StyledAppToolbar = styled.header`
6676
6726
  ${({
6677
6727
  theme
6678
6728
  }) => css`
6679
- &.${rootClassName$15} {
6729
+ &.${rootClassName$14} {
6680
6730
  align-items: center;
6681
6731
  background: ${theme.palette.figma.appToolbar.background};
6682
6732
  border-bottom: 4px solid ${theme.palette.figma.border.default};
@@ -6805,7 +6855,7 @@ const DotAppToolbar = ({
6805
6855
  const displayAppLogo = appLogo || appLogoSmall;
6806
6856
  const mainMenuRef = useRef(null);
6807
6857
  const denseClass = dense ? denseClassName : '';
6808
- const rootClasses = useStylesWithRootClass(rootClassName$15, className, denseClass, showMainMenu ? '' : 'without-menu-icon');
6858
+ const rootClasses = useStylesWithRootClass(rootClassName$14, className, denseClass, showMainMenu ? '' : 'without-menu-icon');
6809
6859
  const mainMenuClasses = useStylesWithRootClass('dot-main-menu', denseClass, menuOpen ? 'open' : '');
6810
6860
  const targetBreakpoint = useMediaQuery(theme => theme.breakpoints.up('lg'));
6811
6861
  useEffect(() => {
@@ -6957,12 +7007,12 @@ const DotAppToolbar = ({
6957
7007
  }) : appToolbar;
6958
7008
  };
6959
7009
 
6960
- const rootClassName$14 = 'dot-chip';
7010
+ const rootClassName$13 = 'dot-chip';
6961
7011
  const StyledChip = styled(Chip)`
6962
7012
  ${({
6963
7013
  theme
6964
7014
  }) => css`
6965
- &.${rootClassName$14} {
7015
+ &.${rootClassName$13} {
6966
7016
  background: ${theme.palette.figma.neutral.normal};
6967
7017
  border-color: ${theme.palette.figma.border.darker};
6968
7018
  color: ${theme.palette.figma.typography.black};
@@ -7068,7 +7118,7 @@ const DotChip = ({
7068
7118
  charactersLimit = DEFAULT_CHARACTERS_LIMIT,
7069
7119
  children,
7070
7120
  className,
7071
- 'data-pendoid': dataPendoId = rootClassName$14,
7121
+ 'data-pendoid': dataPendoId = rootClassName$13,
7072
7122
  'data-testid': dataTestId,
7073
7123
  disabled = false,
7074
7124
  error = false,
@@ -7082,7 +7132,7 @@ const DotChip = ({
7082
7132
  tooltipProps
7083
7133
  }) => {
7084
7134
  const errorClass = error ? 'Mui-error' : '';
7085
- const rootClasses = useStylesWithRootClass(rootClassName$14, className, errorClass);
7135
+ const rootClasses = useStylesWithRootClass(rootClassName$13, className, errorClass);
7086
7136
  const isTruncated = charactersLimit > 0 && children.length > charactersLimit;
7087
7137
  const getChipLabelWithTooltip = label => jsx(DotTooltip, Object.assign({}, tooltipProps, {
7088
7138
  hoverVisibility: "always",
@@ -7118,7 +7168,7 @@ const DotChip = ({
7118
7168
  });
7119
7169
  };
7120
7170
 
7121
- const rootClassName$13 = 'dot-autocomplete';
7171
+ const rootClassName$12 = 'dot-autocomplete';
7122
7172
  const inputRootClassName = 'dot-input-root';
7123
7173
  const inputMediumClassName = 'dot-input-medium';
7124
7174
  const inputAiClassName = 'dot-input-ai';
@@ -7126,7 +7176,7 @@ const StyledAutocomplete = styled(Autocomplete)`
7126
7176
  ${({
7127
7177
  theme
7128
7178
  }) => css`
7129
- &.${rootClassName$13} {
7179
+ &.${rootClassName$12} {
7130
7180
  &.${inputMediumClassName} .dot-text-field .${inputRootClassName} {
7131
7181
  height: 56px;
7132
7182
  padding-left: ${theme.spacing(2)};
@@ -7225,7 +7275,7 @@ const isEmptyValue = value => {
7225
7275
  return !value;
7226
7276
  }
7227
7277
  };
7228
- const getRootClassNames = (className, size) => useStylesWithRootClass(rootClassName$13, size === 'medium' && inputMediumClassName, className);
7278
+ const getRootClassNames = (className, size) => useStylesWithRootClass(rootClassName$12, size === 'medium' && inputMediumClassName, className);
7229
7279
  const getTextFieldRootClassNames = (textFieldWarningClassName, isReadOnly) => useStylesWithRootClass(rootClassName$1u, isReadOnly && readOnlyClassName$1, textFieldWarningClassName);
7230
7280
  const getInputRootClassNames = isDense => useStylesWithRootClass(inputRootClassName, !isDense && inputMediumClassName);
7231
7281
  const getDefaultAutoCompleteValue = (hasMultiple, defaultValue) => hasMultiple && isString$2(defaultValue) ? [defaultValue] : defaultValue;
@@ -7248,7 +7298,7 @@ const DotAutoComplete = ({
7248
7298
  autoFocus,
7249
7299
  autoHighlight,
7250
7300
  className,
7251
- 'data-pendoid': dataPendoId = rootClassName$13,
7301
+ 'data-pendoid': dataPendoId = rootClassName$12,
7252
7302
  'data-testid': dataTestId,
7253
7303
  defaultValue,
7254
7304
  dense = true,
@@ -7318,7 +7368,7 @@ const DotAutoComplete = ({
7318
7368
  const rootClasses = useStylesWithRootClass(getRootClassNames(className, size), isAiEnabled ? inputAiClassName : '');
7319
7369
  const textFieldRootClasses = getTextFieldRootClassNames(textFieldWarningClassName, readOnly);
7320
7370
  const inputRootClasses = getInputRootClassNames(dense);
7321
- const popperClasses = useStylesWithRootClass(rootClassName$1j, popperClassName);
7371
+ const popperClasses = useStylesWithRootClass(rootClassName$1i, popperClassName);
7322
7372
  let highlightedOption = null;
7323
7373
  let textFieldInput;
7324
7374
  const textFieldRef = element => {
@@ -7668,21 +7718,8 @@ const DotAutoComplete = ({
7668
7718
  });
7669
7719
  };
7670
7720
 
7671
- const rootClassName$12 = 'dot-avatar-group';
7672
- const StyledAvatarGroup = styled(AvatarGroup)`
7673
- ${() => css`
7674
- &.${rootClassName$12} {
7675
- justify-content: flex-end;
7676
-
7677
- .MuiAvatar-root {
7678
- border: none;
7679
- }
7680
- }
7681
- }
7682
- `}
7683
- `;
7684
-
7685
7721
  const DotAvatarGroup = ({
7722
+ additionalAvatarsLabel = 'Additional Users',
7686
7723
  ariaLabel,
7687
7724
  avatars,
7688
7725
  className,
@@ -7690,7 +7727,53 @@ const DotAvatarGroup = ({
7690
7727
  max = 3,
7691
7728
  spacing = 'medium'
7692
7729
  }) => {
7693
- 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
+ };
7694
7777
  return jsx(StyledAvatarGroup, {
7695
7778
  "aria-label": ariaLabel,
7696
7779
  classes: {
@@ -7699,7 +7782,19 @@ const DotAvatarGroup = ({
7699
7782
  "data-testid": dataTestId,
7700
7783
  max: max,
7701
7784
  spacing: spacing,
7702
- 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, {
7703
7798
  key: index
7704
7799
  })))
7705
7800
  });
@@ -19211,7 +19306,7 @@ const DotPopper = ({
19211
19306
  placement
19212
19307
  }) => {
19213
19308
  const [arrowRef, setArrowRef] = useState(null);
19214
- const rootClasses = useStylesWithRootClass(rootClassName$1j, className);
19309
+ const rootClasses = useStylesWithRootClass(rootClassName$1i, className);
19215
19310
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19216
19311
  const handleClickAway = event => {
19217
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.12.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>;