@porsche-design-system/components-react 3.22.0-rc.0 → 3.22.0-rc.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/cjs/lib/components/flyout-multilevel-item.wrapper.cjs +3 -3
  3. package/cjs/lib/components/segmented-control.wrapper.cjs +3 -3
  4. package/esm/lib/components/flyout-multilevel-item.wrapper.d.ts +24 -0
  5. package/esm/lib/components/flyout-multilevel-item.wrapper.mjs +3 -3
  6. package/esm/lib/components/segmented-control.wrapper.d.ts +24 -0
  7. package/esm/lib/components/segmented-control.wrapper.mjs +3 -3
  8. package/esm/lib/components/select.wrapper.d.ts +2 -2
  9. package/esm/lib/types.d.ts +3 -2
  10. package/package.json +2 -2
  11. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +432 -301
  12. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +41 -1
  13. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/flyout-multilevel-item.wrapper.cjs +4 -4
  14. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/segmented-control.wrapper.cjs +4 -4
  15. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.cjs +7 -3
  16. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel-item.cjs +9 -6
  17. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel.cjs +13 -5
  18. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.cjs +1 -1
  19. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.cjs +1 -2
  20. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +1 -0
  21. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +1 -1
  22. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.cjs +1 -1
  23. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.cjs +3 -2
  24. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +9 -0
  25. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.cjs +3 -2
  26. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +432 -301
  27. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +37 -2
  28. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/flyout-multilevel-item.wrapper.mjs +4 -4
  29. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/segmented-control.wrapper.mjs +4 -4
  30. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +7 -3
  31. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel-item.mjs +9 -6
  32. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout-multilevel.mjs +14 -6
  33. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +1 -1
  34. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.mjs +1 -2
  35. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +1 -0
  36. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +1 -1
  37. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.mjs +1 -1
  38. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.mjs +3 -2
  39. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +9 -0
  40. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +3 -2
  41. package/ssr/esm/lib/components/flyout-multilevel-item.wrapper.d.ts +24 -0
  42. package/ssr/esm/lib/components/segmented-control.wrapper.d.ts +24 -0
  43. package/ssr/esm/lib/components/select.wrapper.d.ts +2 -2
  44. package/ssr/esm/lib/dsr-components/canvas.d.ts +4 -0
  45. package/ssr/esm/lib/dsr-components/flyout-multilevel-item.d.ts +2 -1
  46. package/ssr/esm/lib/dsr-components/flyout-multilevel.d.ts +5 -0
  47. package/ssr/esm/lib/dsr-components/segmented-control.d.ts +5 -0
  48. package/ssr/esm/lib/types.d.ts +3 -2
@@ -3422,10 +3422,6 @@ const spacingFluidSmall = 'clamp(8px, 0.5vw + 6px, 16px)';
3422
3422
 
3423
3423
  const spacingFluidLarge = 'clamp(32px, 2.75vw + 23px, 76px)';
3424
3424
 
3425
- const themeLightBackgroundShading = 'rgba(1, 2, 5, 0.67)';
3426
-
3427
- const themeDarkBackgroundShading = 'rgba(38, 38, 41, 0.67)';
3428
-
3429
3425
  const _displayFontPartA = `${fontStyleNormal} ${fontVariant} ${fontWeightRegular} `;
3430
3426
  const _displayFontPartB = `/${fontLineHeight} ${fontFamily}`;
3431
3427
 
@@ -3627,8 +3623,11 @@ const dismissButtonJssStyle = {
3627
3623
  };
3628
3624
  const cssVariableTransitionDuration = '--p-transition-duration';
3629
3625
  const cssVariableAnimationDuration = '--p-animation-duration';
3626
+ const getAnimation = (name, duration = 'short', easing = 'base') => {
3627
+ return `${name} var(${cssVariableAnimationDuration}, ${motionDurationMap[duration]}) ${motionEasingMap[easing]}`;
3628
+ };
3630
3629
  const getTransition = (cssProperty, duration = 'short', easing = 'base', delay) => {
3631
- return `${cssProperty} var(${cssVariableTransitionDuration}, ${motionDurationMap[duration]}) ${motionEasingMap[easing]}${delay ? ` var(${cssVariableTransitionDuration}, ${motionDurationMap[delay]})` : ''}`;
3630
+ return `${cssProperty} var(${cssVariableTransitionDuration}, ${motionDurationMap[duration]}) ${motionEasingMap[easing]}${''}`;
3632
3631
  };
3633
3632
  const addImportantToRule = (value) => `${value} !important`;
3634
3633
  const addImportantToEachRule = (input) => {
@@ -3709,43 +3708,6 @@ const getHiddenTextJssStyle = (isHidden = true, isShownJssStyle) => {
3709
3708
  ...isShownJssStyle,
3710
3709
  };
3711
3710
  };
3712
- // TODO: migrate flyout-multilevel to use shared backdrop of dialog-styles.ts
3713
- /**
3714
- * Generates JSS styles for a frosted glass background.
3715
- * @param {boolean} isVisible - Determines if the frosted glass effect is visible.
3716
- * @param {number} zIndex - The z-index to be used.
3717
- * @param {Theme} theme - The theme to be used.
3718
- * @param {string} duration - The duration of the transition animation.
3719
- * @param {'blur' | 'shading'} backdrop - The backdrop variant.
3720
- * @returns {JssStyle} - The JSS styles for the frosted glass backdrop.
3721
- */
3722
- const getBackdropJssStyle = (isVisible, zIndex, theme, duration = 'long') => {
3723
- return {
3724
- position: 'fixed',
3725
- inset: 0,
3726
- zIndex,
3727
- // TODO: background shading is missing in getThemedColors(theme).backgroundShading
3728
- background: isThemeDark(theme) ? themeDarkBackgroundShading : themeLightBackgroundShading,
3729
- ...prefersColorSchemeDarkMediaQuery(theme, {
3730
- background: themeDarkBackgroundShading,
3731
- }),
3732
- ...(isVisible
3733
- ? {
3734
- visibility: 'inherit',
3735
- pointerEvents: 'auto',
3736
- ...frostedGlassStyle,
3737
- opacity: 1,
3738
- }
3739
- : {
3740
- visibility: 'hidden', // element shall not be tabbable after fade out transition has finished
3741
- pointerEvents: 'none',
3742
- WebkitBackdropFilter: 'blur(0px)',
3743
- backdropFilter: 'blur(0px)',
3744
- opacity: 0,
3745
- }),
3746
- transition: `${getTransition('opacity', duration)}, ${getTransition('backdrop-filter', duration)}, ${getTransition('-webkit-backdrop-filter', duration)}, visibility 0s linear var(${cssVariableTransitionDuration}, ${isVisible ? '0s' : motionDurationMap[duration]})`,
3747
- };
3748
- };
3749
3711
 
3750
3712
  const hostHiddenStyles = {
3751
3713
  '&([hidden])': {
@@ -4125,7 +4087,6 @@ const getComponentCss$19 = (size, compact, open, theme, sticky) => {
4125
4087
  };
4126
4088
 
4127
4089
  const TOAST_Z_INDEX = 999999;
4128
- const FLYOUT_Z_INDEX = 99998;
4129
4090
  const POPOVER_Z_INDEX = 9999;
4130
4091
  const BANNER_Z_INDEX = 99;
4131
4092
 
@@ -4900,6 +4861,9 @@ const getComponentCss$13 = (theme, isSidebarStartOpen, isSidebarEndOpen) => {
4900
4861
  display: 'none',
4901
4862
  },
4902
4863
  },
4864
+ '&:focus': {
4865
+ outline: 'none',
4866
+ },
4903
4867
  },
4904
4868
  blur: {
4905
4869
  zIndex: -1,
@@ -5061,6 +5025,9 @@ const getComponentCss$13 = (theme, isSidebarStartOpen, isSidebarEndOpen) => {
5061
5025
  display: 'block',
5062
5026
  padding: spacingBase,
5063
5027
  },
5028
+ '&:focus': {
5029
+ outline: 'none',
5030
+ },
5064
5031
  },
5065
5032
  'flyout-start': {
5066
5033
  '--p-flyout-width': '100dvw',
@@ -6252,337 +6219,493 @@ const getComponentCss$U = (inline, wrap, direction, justifyContent, alignItems,
6252
6219
  });
6253
6220
  };
6254
6221
 
6255
- const getFlyoutDialogResetJssStyle = () => {
6256
- return {
6257
- position: 'fixed',
6258
- height: '100dvh',
6259
- maxHeight: '100dvh',
6260
- margin: '0',
6261
- padding: '0',
6262
- border: '0',
6263
- visibility: 'inherit',
6264
- outline: '0',
6265
- };
6266
- };
6267
-
6268
- const cssVariableVisibility = '--p-internal-flyout-multilevel-visibility';
6269
- const cssVariableVisibilityTransitionDuration = '--p-internal-flyout-multilevel-visibility-transition-duration';
6270
- const frostedGlassHeaderHeight = '4rem';
6271
- const frostedGlassBackgroundColorLight$1 = 'rgba(255, 255, 255, 0.79)';
6272
- const frostedGlassBackgroundColorDark$1 = 'rgba(14, 14, 18, 0.79)';
6273
- const scrollerWidthEnhancedView = 'clamp(338px, 10.52vw + 258px, 460px)';
6274
- const mediaQueryEnhancedView = getMediaQueryMin('s');
6275
- const getComponentCss$T = (isPrimaryScrollerVisible, isSecondaryScrollerVisible, theme) => {
6276
- const { backgroundColor } = getThemedColors(theme);
6277
- const { backgroundColor: backgroundColorDark } = getThemedColors('dark');
6278
- const frostedGlassBackgroundColor = isThemeDark(theme)
6279
- ? frostedGlassBackgroundColorDark$1
6280
- : frostedGlassBackgroundColorLight$1;
6222
+ const scrollerWidthDesktop = 'clamp(338px, 210px + 18vw, 640px)';
6223
+ const mediaQueryMobile = getMediaQueryMax('s');
6224
+ const mediaQueryDesktop = getMediaQueryMin('s');
6225
+ const dialogDurationOpen = 'moderate';
6226
+ const backdropDurationOpen = 'long';
6227
+ const easingOpen = 'in';
6228
+ const dialogDurationClose = 'short';
6229
+ const backdropDurationClose = 'moderate';
6230
+ const easingClose = 'out';
6231
+ const getComponentCss$T = (isOpen, isPrimary, isSecondaryScrollerVisible, theme) => {
6232
+ const { backgroundColor, backgroundSurfaceColor, backgroundShadingColor } = getThemedColors(theme);
6233
+ const { backgroundColor: backgroundColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, backgroundShadingColor: backgroundShadingColorDark, } = getThemedColors('dark');
6281
6234
  return getCss({
6282
6235
  '@global': {
6236
+ '@keyframes slide-up-mobile': {
6237
+ from: { transform: `translate3d(0,${spacingFluidMedium},0)` },
6238
+ to: { transform: 'translate3d(0,0,0)' },
6239
+ },
6240
+ // unfortunately, it's not possible to use transform animation like in mobile view
6241
+ // because then a new stacking context within scroll container would be initialized
6242
+ // causing the slotted scroll container to become invisible
6243
+ '@keyframes slide-up-desktop': {
6244
+ from: { marginBlockStart: spacingFluidMedium },
6245
+ to: { marginBlockStart: '0px' },
6246
+ },
6283
6247
  ':host': {
6284
6248
  display: 'block',
6285
6249
  ...addImportantToEachRule({
6286
- ...(!isPrimaryScrollerVisible && {
6287
- [cssVariableVisibility]: 'hidden',
6288
- [cssVariableVisibilityTransitionDuration]: motionDurationLong,
6289
- }),
6290
- ...getBackdropJssStyle(isPrimaryScrollerVisible, FLYOUT_Z_INDEX, theme),
6291
6250
  ...colorSchemeStyles,
6292
6251
  ...hostHiddenStyles,
6293
6252
  }),
6294
6253
  },
6295
6254
  ...preventFoucOfNestedElementsStyles,
6296
6255
  dialog: {
6297
- ...getFlyoutDialogResetJssStyle(),
6298
- inset: '0',
6299
- display: 'grid',
6300
- overflow: 'hidden',
6301
- width: 'auto',
6302
- maxWidth: '100vw',
6303
- background: 'none',
6304
- ...(isPrimaryScrollerVisible
6256
+ all: 'unset',
6257
+ position: 'fixed',
6258
+ inset: 0,
6259
+ zIndex: 999999999, // fallback when dialog isn't rendered on #top-layer, e.g. relevant in ssr context or fade-out transition in Safari or Firefox
6260
+ outline: 0, // prevents outline in case dialog becomes focusable
6261
+ ...(isOpen
6305
6262
  ? {
6306
- transform: 'translate3d(0, 0, 0)',
6307
- transition: `${getTransition('transform', 'long', 'in')}`,
6263
+ visibility: 'inherit',
6264
+ ...frostedGlassStyle,
6265
+ background: backgroundShadingColor,
6266
+ transition: `${getTransition('background', backdropDurationOpen, easingOpen)}, ${getTransition('backdrop-filter', backdropDurationOpen, easingOpen)}, ${getTransition('-webkit-backdrop-filter', backdropDurationOpen, easingOpen)}`,
6267
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6268
+ background: backgroundShadingColorDark,
6269
+ }),
6308
6270
  }
6309
6271
  : {
6310
- transform: 'translate3d(-100%, 0, 0)',
6311
- transition: `${getTransition('transform', 'long', 'out')}`,
6272
+ visibility: 'hidden',
6273
+ transition: `visibility 0s linear var(${cssVariableTransitionDuration}, ${motionDurationMap[backdropDurationClose]}), ${getTransition('overlay', backdropDurationClose, easingClose)} allow-discrete, ${getTransition('background', backdropDurationClose, easingClose)}, ${getTransition('backdrop-filter', backdropDurationClose, easingClose)}, ${getTransition('-webkit-backdrop-filter', backdropDurationClose, easingClose)}`,
6312
6274
  }),
6313
- [mediaQueryEnhancedView]: {
6314
- gridTemplateColumns: `repeat(${isSecondaryScrollerVisible ? 2 : 1}, ${scrollerWidthEnhancedView}) auto`,
6315
- gridTemplateRows: '100vh',
6316
- insetInlineEnd: 'auto', // to have correct dialog dimensions for ideal transitions
6275
+ '&::backdrop': {
6276
+ display: 'none',
6317
6277
  },
6318
- '&:dir(rtl)': {
6319
- ...(!isPrimaryScrollerVisible && {
6320
- transform: 'translate3d(100%, 0, 0)', // use correct transitions in rtl mode
6278
+ },
6279
+ slot: {
6280
+ [mediaQueryMobile]: {
6281
+ display: 'contents',
6282
+ ...(!isSecondaryScrollerVisible && {
6283
+ zIndex: 0,
6284
+ display: 'flex',
6285
+ flexDirection: 'column',
6286
+ gap: spacingFluidXSmall,
6287
+ gridArea: '4/2/auto/-2',
6288
+ height: 'fit-content', // ensures padding bottom is added instead of subtracted because of grid context
6289
+ paddingBlockEnd: spacingFluidLarge,
6290
+ ...(isPrimary && {
6291
+ animation: getAnimation('slide-up-mobile', 'moderate', 'base'),
6292
+ }),
6321
6293
  }),
6322
6294
  },
6323
- '&::backdrop': {
6324
- // to improve browser backwards compatibility we visually style the backdrop on the :host,
6325
- // although it's not on the #top-layer like it would be for modern browsers supporting ::backdrop
6326
- opacity: 0, // to support backdrop click for modern browsers supporting ::backdrop
6295
+ [mediaQueryDesktop]: {
6296
+ display: 'flex',
6297
+ flexDirection: 'column',
6298
+ gap: isPrimary ? spacingFluidXSmall : spacingFluidMedium,
6299
+ gridArea: '2/2/auto/-2',
6300
+ height: 'fit-content', // ensures padding bottom is added instead of subtracted because of grid context
6301
+ paddingBlockEnd: spacingFluidLarge,
6302
+ ...(isPrimary && {
6303
+ animation: getAnimation('slide-up-desktop', 'moderate', 'base'),
6304
+ }),
6327
6305
  },
6328
6306
  },
6329
- },
6330
- scroller: {
6331
- gridArea: '1/1',
6332
- overflow: 'auto',
6333
- // cssVariableVisibility ensures secondary scroller is not tabbable when whole flyout-multilevel is closed
6334
- // on mobile we need to decide if secondary scroller needs to be visible or not, on desktop it's not necessary but also doesn't harm
6335
- visibility: `var(${cssVariableVisibility},${isSecondaryScrollerVisible ? 'hidden' : 'inherit'})`,
6336
- transition: `${getTransition('left', 'long', isSecondaryScrollerVisible ? 'in' : 'out')}, visibility 0s linear var(${cssVariableTransitionDuration}, ${!isPrimaryScrollerVisible || isSecondaryScrollerVisible ? motionDurationLong : '0s'})`,
6337
- // it's important to define background-color for each scroller to have correct scrollbar coloring
6338
- backgroundColor,
6339
- ...prefersColorSchemeDarkMediaQuery(theme, {
6340
- backgroundColor: backgroundColorDark,
6307
+ ...(isSecondaryScrollerVisible && {
6308
+ '::slotted(*:not([primary],[secondary],[cascade]))': {
6309
+ [mediaQueryMobile]: {
6310
+ display: 'none',
6311
+ },
6312
+ },
6313
+ '::slotted(*:not([primary],[cascade]))': {
6314
+ [mediaQueryDesktop]: {
6315
+ ...(!isPrimary && {
6316
+ display: 'none',
6317
+ }),
6318
+ },
6319
+ },
6341
6320
  }),
6342
- [mediaQueryEnhancedView]: {
6343
- visibility: 'inherit',
6344
- transition: 'initial',
6321
+ },
6322
+ drawer: {
6323
+ position: 'absolute',
6324
+ inset: 0,
6325
+ display: 'grid',
6326
+ ...(isOpen
6327
+ ? {
6328
+ opacity: 1,
6329
+ transform: 'translate3d(0,0,0)',
6330
+ transition: `${getTransition('opacity', dialogDurationOpen, easingOpen)}, ${getTransition('transform', dialogDurationOpen, easingOpen)}`,
6331
+ }
6332
+ : {
6333
+ opacity: 0,
6334
+ transform: 'translate3d(-100%,0,0)',
6335
+ transition: `${getTransition('opacity', dialogDurationClose, easingClose)}, ${getTransition('transform', dialogDurationClose, easingClose)}`,
6336
+ '&:dir(rtl)': {
6337
+ transform: 'translate3d(100%,0,0)',
6338
+ },
6339
+ }),
6340
+ [mediaQueryMobile]: {
6341
+ gridTemplate: `${spacingFluidMedium} auto ${spacingFluidLarge} minmax(0, 1fr)/${spacingFluidLarge} auto minmax(0, 1fr) auto ${spacingFluidLarge}`,
6342
+ background: backgroundColor,
6343
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6344
+ background: backgroundColorDark,
6345
+ }),
6345
6346
  },
6346
- // simulates frosted glass header, to be visually in sync with header of secondary scroller
6347
- '&::before': {
6348
- content: '""',
6349
- display: 'block',
6350
- position: 'sticky',
6351
- top: 0,
6352
- zIndex: 1,
6353
- height: frostedGlassHeaderHeight,
6354
- backgroundColor: frostedGlassBackgroundColor,
6355
- WebkitBackdropFilter: 'blur(8px)',
6356
- backdropFilter: 'blur(8px)', // with current frostedGlassStyle of blur(32px) scrolling becomes visually distracting
6347
+ [mediaQueryDesktop]: {
6348
+ width: isSecondaryScrollerVisible ? `calc(${scrollerWidthDesktop} * 2)` : scrollerWidthDesktop,
6349
+ gridTemplate: `${spacingFluidMedium} minmax(0, 1fr)/repeat(${isSecondaryScrollerVisible ? 2 : 1}, ${spacingFluidLarge} minmax(0, 1fr) ${spacingFluidLarge})`,
6350
+ background: backgroundColor,
6357
6351
  ...prefersColorSchemeDarkMediaQuery(theme, {
6358
- backgroundColor: frostedGlassBackgroundColorDark$1,
6352
+ background: backgroundColorDark,
6359
6353
  }),
6360
- [mediaQueryEnhancedView]: {
6361
- display: 'none',
6354
+ ...(isSecondaryScrollerVisible && {
6355
+ background: `linear-gradient(90deg,${backgroundColor} 0%,${backgroundColor} 50%,${backgroundSurfaceColor} 50%,${backgroundSurfaceColor} 100%)`,
6356
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6357
+ background: `linear-gradient(90deg,${backgroundColorDark} 0%,${backgroundColorDark} 50%,${backgroundSurfaceColorDark} 50%,${backgroundSurfaceColorDark} 100%)`,
6358
+ }),
6359
+ '&:dir(rtl)': {
6360
+ background: `linear-gradient(90deg,${backgroundSurfaceColor} 0%,${backgroundSurfaceColor} 50%,${backgroundColor} 50%,${backgroundColor} 100%)`,
6361
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6362
+ background: `linear-gradient(90deg,${backgroundSurfaceColorDark} 0%,${backgroundSurfaceColorDark} 50%,${backgroundColorDark} 50%,${backgroundColorDark} 100%)`,
6363
+ }),
6364
+ },
6365
+ }),
6366
+ },
6367
+ '&::before, &::after': {
6368
+ content: '""',
6369
+ position: 'relative',
6370
+ zIndex: 2,
6371
+ pointerEvents: 'none',
6372
+ opacity: 0,
6373
+ },
6374
+ '&::before': {
6375
+ [mediaQueryMobile]: {
6376
+ gridArea: '1/1/-1/-1',
6377
+ background: backgroundColor,
6378
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6379
+ background: backgroundColorDark,
6380
+ }),
6381
+ },
6382
+ [mediaQueryDesktop]: {
6383
+ gridArea: '1/1/-1/4',
6384
+ background: backgroundColor,
6385
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6386
+ background: backgroundColorDark,
6387
+ }),
6388
+ },
6389
+ },
6390
+ '&::after': {
6391
+ [mediaQueryMobile]: {
6392
+ gridArea: '1/1/-1/-1',
6393
+ background: backgroundColor,
6394
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6395
+ background: backgroundColorDark,
6396
+ }),
6397
+ },
6398
+ [mediaQueryDesktop]: {
6399
+ gridArea: '1/4/-1/-1',
6400
+ background: backgroundSurfaceColor,
6401
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6402
+ background: backgroundSurfaceColorDark,
6403
+ }),
6362
6404
  },
6363
6405
  },
6364
6406
  },
6365
- content: {
6366
- display: 'flex',
6367
- flexDirection: 'column',
6368
- gap: spacingFluidXSmall,
6369
- padding: `${spacingFluidSmall} ${spacingFluidLarge} ${spacingFluidLarge}`,
6370
- [mediaQueryEnhancedView]: {
6371
- padding: `${spacingFluidMedium} ${spacingFluidLarge} ${spacingFluidLarge}`,
6407
+ scroller: {
6408
+ [mediaQueryMobile]: {
6409
+ display: 'contents',
6410
+ ...(!isSecondaryScrollerVisible && {
6411
+ gridArea: '1/1/-1/-1',
6412
+ display: 'grid',
6413
+ gridTemplateRows: 'subgrid',
6414
+ gridTemplateColumns: 'subgrid',
6415
+ overflow: 'hidden auto',
6416
+ // overscrollBehaviorY: 'none', // when defined, rubber band effect on iOS 18 scroll is getting lost
6417
+ scrollBehavior: 'smooth',
6418
+ WebkitOverflowScrolling: 'touch',
6419
+ '&::before': {
6420
+ content: '""',
6421
+ position: 'sticky',
6422
+ top: 0,
6423
+ gridArea: '1/1/4/-1',
6424
+ zIndex: 1,
6425
+ background: `linear-gradient(180deg,${backgroundColor} 0%,${backgroundColor} 65%,transparent 100%)`,
6426
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6427
+ background: `linear-gradient(180deg,${backgroundColorDark} 0%,${backgroundColorDark} 65%,transparent 100%)`,
6428
+ }),
6429
+ },
6430
+ }),
6431
+ },
6432
+ [mediaQueryDesktop]: {
6433
+ gridArea: '1/1/-1/4',
6434
+ display: 'grid',
6435
+ gridTemplateRows: 'subgrid',
6436
+ gridTemplateColumns: 'subgrid',
6437
+ overflow: 'hidden auto',
6438
+ // overscrollBehaviorY: 'none', // when defined, rubber band effect on iOS 18 scroll is getting lost
6439
+ scrollBehavior: 'smooth',
6440
+ WebkitOverflowScrolling: 'touch',
6372
6441
  },
6373
6442
  },
6374
- // header is needed to keep position of dismiss button in sync with header of secondary scroller
6375
- header: {
6376
- position: 'relative',
6377
- zIndex: 3, // ensures dismiss button is visible on secondary drawer in mobile view
6378
- gridArea: '1/1',
6379
- alignSelf: 'flex-start',
6380
- justifySelf: 'flex-end',
6381
- marginInlineEnd: `calc(${spacingFluidLarge} - ${spacingFluidSmall})`,
6382
- height: frostedGlassHeaderHeight,
6383
- display: 'flex',
6384
- alignItems: 'center',
6385
- [mediaQueryEnhancedView]: {
6386
- marginInlineEnd: 0,
6387
- gridArea: '1/-1',
6388
- placeSelf: 'flex-start',
6443
+ 'dismiss-mobile': {
6444
+ [mediaQueryMobile]: {
6445
+ ...dismissButtonJssStyle,
6446
+ width: 'fit-content',
6447
+ height: 'fit-content',
6448
+ placeSelf: 'center flex-end',
6449
+ gridArea: '2/4',
6450
+ zIndex: 3, // ensures dismiss button is on top of opacity animation handled by ::before/::after
6451
+ marginInlineEnd: '-1px', // improve visual alignment and compensate white space of close icon
6452
+ },
6453
+ [mediaQueryDesktop]: {
6454
+ display: 'none',
6389
6455
  },
6390
6456
  },
6391
- dismiss: {
6392
- padding: spacingFluidSmall,
6393
- [mediaQueryEnhancedView]: {
6457
+ 'dismiss-desktop': {
6458
+ [mediaQueryMobile]: {
6459
+ display: 'none',
6460
+ },
6461
+ [mediaQueryDesktop]: {
6394
6462
  '--p-internal-icon-filter': 'invert(1)',
6395
- margin: spacingFluidSmall,
6463
+ position: 'absolute',
6464
+ insetInlineStart: `calc(100% + ${spacingFluidSmall})`,
6465
+ insetBlockStart: spacingFluidSmall,
6396
6466
  padding: spacingStaticSmall,
6397
6467
  },
6398
6468
  },
6399
- });
6400
- };
6401
- const getContentJssStyle = () => {
6402
- return {
6403
- display: 'flex',
6404
- flexDirection: 'column',
6405
- gap: spacingFluidXSmall,
6406
- padding: `${spacingFluidSmall} ${spacingFluidLarge} ${spacingFluidLarge}`,
6407
- [mediaQueryEnhancedView]: {
6408
- padding: `${spacingFluidMedium} ${spacingFluidLarge} ${spacingFluidLarge}`,
6469
+ back: {
6470
+ display: 'none',
6471
+ ...(isSecondaryScrollerVisible && {
6472
+ [mediaQueryMobile]: {
6473
+ display: 'block',
6474
+ gridArea: '2/2',
6475
+ width: 'fit-content',
6476
+ height: 'fit-content',
6477
+ placeSelf: 'center flex-start',
6478
+ zIndex: 2,
6479
+ },
6480
+ }),
6409
6481
  },
6410
- };
6482
+ });
6411
6483
  };
6412
6484
 
6413
- const frostedGlassBackgroundColorLight = 'rgba(238, 239, 242, 0.79)';
6414
- const frostedGlassBackgroundColorDark = 'rgba(33, 34, 37, 0.79)';
6415
- const getComponentCss$S = (isSecondaryScrollerVisible, theme) => {
6416
- const { primaryColor, backgroundSurfaceColor, hoverColor } = getThemedColors(theme);
6417
- const { primaryColor: primaryColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, hoverColor: hoverColorDark, } = getThemedColors('dark');
6418
- const frostedGlassBackgroundColor = isThemeDark(theme)
6419
- ? frostedGlassBackgroundColorDark
6420
- : frostedGlassBackgroundColorLight;
6421
- const fadeInOutTransition = isSecondaryScrollerVisible
6422
- ? {
6423
- opacity: 1,
6424
- transition: `${getTransition('opacity', 'veryLong', 'in', 'short')}`,
6425
- [mediaQueryEnhancedView]: {
6426
- transition: `${getTransition('opacity', 'veryLong', 'in')}`,
6427
- },
6428
- }
6429
- : {
6430
- opacity: 0,
6431
- transition: `${getTransition('opacity', 'short', 'out')}`,
6432
- };
6485
+ const getComponentCss$S = (isPrimary, isSecondary, isCascade, theme) => {
6486
+ const { primaryColor, backgroundColor } = getThemedColors(theme);
6487
+ const { primaryColor: primaryColorDark, backgroundColor: backgroundColorDark } = getThemedColors('dark');
6433
6488
  return getCss({
6434
6489
  '@global': {
6490
+ '@keyframes slide-up-mobile': {
6491
+ from: { transform: `translate3d(0,${spacingFluidMedium},0)` },
6492
+ to: { transform: 'translate3d(0,0,0)' },
6493
+ },
6494
+ '@keyframes slide-up-desktop-primary': {
6495
+ from: { marginBlockStart: spacingFluidMedium },
6496
+ to: { marginBlockStart: '0px' },
6497
+ },
6498
+ '@keyframes slide-up-desktop-secondary': {
6499
+ from: { marginBlockStart: spacingFluidMedium },
6500
+ to: { marginBlockStart: '0px' },
6501
+ },
6435
6502
  ':host': {
6436
- display: 'block',
6503
+ display: 'contents',
6437
6504
  ...addImportantToEachRule({
6438
6505
  ...colorSchemeStyles,
6439
6506
  ...hostHiddenStyles,
6440
6507
  }),
6441
6508
  },
6442
- ...preventFoucOfNestedElementsStyles,
6443
- '::slotted(:is(h1, h2, h3, h4, h5, h6))': addImportantToEachRule({
6444
- ...headingSmallStyle,
6445
- margin: 0,
6446
- color: primaryColor,
6447
- ...prefersColorSchemeDarkMediaQuery(theme, {
6448
- color: primaryColorDark,
6449
- }),
6450
- }),
6451
- '::slotted(:is(h1, h2, h3, h4, h5, h6):not(:first-child))': addImportantToEachRule({
6452
- margin: `calc(${spacingFluidMedium} - ${spacingFluidXSmall}) 0 0`, // spacingFluidXSmall to compensate default gap
6453
- }),
6454
- '::slotted': addImportantToEachRule({
6455
- '&(p)': {
6456
- ...textSmallStyle,
6457
- margin: 0,
6458
- color: primaryColor,
6459
- ...prefersColorSchemeDarkMediaQuery(theme, {
6460
- color: primaryColorDark,
6509
+ slot: {
6510
+ display: 'none',
6511
+ [mediaQueryMobile]: {
6512
+ ...(isSecondary && {
6513
+ zIndex: 0,
6514
+ display: 'flex',
6515
+ flexDirection: 'column',
6516
+ gap: spacingFluidXSmall,
6517
+ gridArea: '4/2/auto/-2',
6518
+ height: 'fit-content', // ensures padding bottom is added instead of subtracted because of grid context
6519
+ paddingBlockEnd: spacingFluidLarge,
6520
+ animation: getAnimation('slide-up-mobile', 'moderate', 'base'),
6521
+ }),
6522
+ ...((isPrimary || isCascade) && {
6523
+ display: 'contents',
6461
6524
  }),
6462
6525
  },
6463
- '&(a)': {
6464
- ...{
6465
- ...textSmallStyle,
6466
- alignSelf: 'flex-start',
6526
+ [mediaQueryDesktop]: {
6527
+ ...((isPrimary || isSecondary) && {
6528
+ display: 'flex',
6529
+ flexDirection: 'column',
6530
+ gap: spacingFluidXSmall,
6531
+ height: 'fit-content', // ensures padding bottom is added instead of subtracted because of grid context
6532
+ animation: getAnimation(`slide-up-desktop-${isPrimary ? 'primary' : 'secondary'}`, 'moderate', 'base'),
6533
+ }),
6534
+ ...(isSecondary && {
6535
+ gridArea: '2/2/auto/-2',
6536
+ paddingBlockEnd: spacingFluidLarge,
6537
+ }),
6538
+ ...(isCascade && {
6539
+ display: 'contents',
6540
+ }),
6541
+ },
6542
+ },
6543
+ h2: {
6544
+ display: 'none',
6545
+ [mediaQueryMobile]: {
6546
+ ...(isSecondary && {
6547
+ ...headingSmallStyle,
6467
6548
  display: 'block',
6468
- textDecoration: 'none',
6469
- cursor: 'pointer',
6470
- color: primaryColor,
6471
- borderRadius: borderRadiusSmall,
6472
- marginLeft: `-${spacingStaticXSmall}`,
6473
- marginRight: `-${spacingStaticXSmall}`,
6474
- padding: `2px ${spacingStaticXSmall}`,
6475
- transition: `background var(${cssVariableTransitionDuration}, ${motionDurationShort}) ${motionEasingBase}`,
6549
+ gridArea: '2/3',
6550
+ placeSelf: 'center',
6551
+ zIndex: 2,
6552
+ margin: 0,
6553
+ paddingInline: spacingStaticMedium,
6554
+ maxWidth: '100%',
6555
+ boxSizing: 'border-box',
6556
+ whiteSpace: 'nowrap',
6557
+ overflow: 'hidden',
6558
+ textOverflow: 'ellipsis',
6559
+ color: primaryColor, // enables color inheritance for slotted content
6476
6560
  ...prefersColorSchemeDarkMediaQuery(theme, {
6477
6561
  color: primaryColorDark,
6478
6562
  }),
6563
+ }),
6564
+ },
6565
+ },
6566
+ // If cascade we need to hide all children which are not primary or another cascade (e.g. all siblings of the primary or cascade item)
6567
+ ...(isCascade && {
6568
+ '::slotted(*:not([primary],[cascade]))': {
6569
+ display: 'none',
6570
+ },
6571
+ }),
6572
+ ...(isPrimary && {
6573
+ '::slotted(*:not([secondary]))': {
6574
+ [mediaQueryMobile]: {
6575
+ display: 'none',
6479
6576
  },
6480
6577
  },
6481
- '&(a[aria-current])': {
6482
- background: hoverColor,
6578
+ }),
6579
+ '::slotted': {
6580
+ '&(a)': {
6581
+ all: 'unset',
6582
+ alignSelf: 'flex-start',
6583
+ font: textMediumStyle.font,
6584
+ cursor: 'pointer',
6585
+ borderRadius: borderRadiusSmall,
6586
+ padding: addImportantToRule(spacingFluidSmall),
6587
+ marginInline: addImportantToRule(`calc(${spacingFluidSmall} * -1)`),
6588
+ color: primaryColor,
6589
+ textDecoration: 'underline',
6590
+ textDecorationColor: 'transparent',
6591
+ transition: `${getTransition('text-decoration-color')}`,
6483
6592
  ...prefersColorSchemeDarkMediaQuery(theme, {
6484
- background: hoverColorDark,
6593
+ color: primaryColorDark,
6485
6594
  }),
6486
6595
  },
6596
+ '&(a[aria-current])': {
6597
+ textDecoration: 'underline',
6598
+ },
6487
6599
  ...hoverMediaQuery({
6488
- // TODO: how can we easily re-use getHoverStyle() with ::slotted(a) selector?
6489
6600
  '&(a:hover)': {
6490
- background: hoverColor,
6491
- ...prefersColorSchemeDarkMediaQuery(theme, {
6492
- background: hoverColorDark,
6493
- }),
6601
+ textDecorationColor: 'inherit',
6494
6602
  },
6495
6603
  }),
6496
6604
  ...getFocusJssStyle(theme, { slotted: 'a', offset: '-2px' }),
6497
- }),
6605
+ },
6606
+ ...preventFoucOfNestedElementsStyles,
6498
6607
  },
6499
- button: {
6500
- width: 'auto',
6501
- padding: spacingFluidSmall,
6502
- margin: `0 calc(${spacingFluidSmall} * -1)`,
6608
+ // drawer subgrid in combination with scroller grid ensures no content squeezing during slide up animation, potentially caused by scrollbar
6609
+ drawer: {
6610
+ [mediaQueryMobile]: {
6611
+ display: 'none',
6612
+ ...((isPrimary || isSecondary || isCascade) && {
6613
+ display: 'contents',
6614
+ }),
6615
+ },
6616
+ [mediaQueryDesktop]: {
6617
+ display: 'none',
6618
+ ...(isSecondary && {
6619
+ position: 'absolute', // enables to break out of scroll area
6620
+ inset: 0,
6621
+ insetInlineStart: scrollerWidthDesktop,
6622
+ display: 'grid',
6623
+ gridTemplate: `${spacingFluidMedium} minmax(0, 1fr)/${spacingFluidLarge} minmax(0, 1fr) ${spacingFluidLarge}`,
6624
+ }),
6625
+ ...((isPrimary || isCascade) && {
6626
+ display: 'contents',
6627
+ }),
6628
+ },
6503
6629
  },
6504
6630
  scroller: {
6505
- position: 'fixed',
6506
- inset: 0,
6507
- // "cssVariableTransitionDuration" ensures closing animation of secondary scroller is given when whole flyout-multilevel gets closed
6508
- // "cssVariableVisibility" ensures secondary scroller is not tabbable when whole flyout-multilevel is closed
6509
- ...(isSecondaryScrollerVisible
6510
- ? {
6511
- zIndex: 2,
6512
- transform: 'translate3d(0, 0, 0)',
6513
- // TODO: Should be visibility: inherit to allow overwriting but currently not possible since it would inherit from the scroller of the p-flyout-multilevel itself, which is hidden on mobile
6514
- visibility: `var(${cssVariableVisibility},visible)`,
6515
- transition: `${getTransition('transform', 'long', 'in')}, visibility 0s linear var(${cssVariableTransitionDuration},var(${cssVariableVisibilityTransitionDuration},0s))`,
6516
- }
6517
- : {
6518
- zIndex: 1,
6519
- transform: 'translate3d(100%, 0, 0)',
6520
- visibility: `var(${cssVariableVisibility},hidden)`,
6521
- transition: `${getTransition('transform', 'long', 'out')}, visibility 0s linear var(${cssVariableTransitionDuration},var(${cssVariableVisibilityTransitionDuration},${motionDurationLong}))`,
6631
+ [mediaQueryMobile]: {
6632
+ display: 'none',
6633
+ ...(isSecondary && {
6634
+ display: 'grid',
6635
+ gridTemplateRows: 'subgrid',
6636
+ gridTemplateColumns: 'subgrid',
6637
+ gridArea: '1/1/-1/-1',
6638
+ overflow: 'hidden auto',
6639
+ // overscrollBehaviorY: 'none', // when defined, rubber band effect on iOS 18 scroll is getting lost
6640
+ scrollBehavior: 'smooth',
6641
+ WebkitOverflowScrolling: 'touch',
6642
+ '&::before': {
6643
+ zIndex: 1,
6644
+ content: '""',
6645
+ position: 'sticky',
6646
+ top: 0,
6647
+ gridArea: '1/1/4/-1',
6648
+ background: `linear-gradient(180deg,${backgroundColor} 0%,${backgroundColor} 65%,transparent 100%)`,
6649
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6650
+ background: `linear-gradient(180deg,${backgroundColorDark} 0%,${backgroundColorDark} 65%,transparent 100%)`,
6651
+ }),
6652
+ },
6653
+ }),
6654
+ ...((isPrimary || isCascade) && {
6655
+ display: 'contents',
6522
6656
  }),
6523
- width: '100vw',
6524
- boxSizing: 'border-box',
6525
- overflow: 'auto',
6526
- ...dropShadowHighStyle,
6527
- // it's important to define background-color for each scroller to have correct scrollbar coloring
6528
- backgroundColor: backgroundSurfaceColor,
6529
- ...prefersColorSchemeDarkMediaQuery(theme, {
6530
- backgroundColor: backgroundSurfaceColorDark,
6531
- }),
6532
- [mediaQueryEnhancedView]: {
6533
- boxShadow: 'none',
6534
- insetInlineStart: `calc(${scrollerWidthEnhancedView} - 1px)`, // -1px prevents possible visible background under certain circumstances between primary and secondary scroller
6535
- width: scrollerWidthEnhancedView,
6536
- transform: addImportantToRule('initial'), // to overrule :dir(rtl) selector
6537
- transition: `visibility 0s linear var(${cssVariableTransitionDuration},var(${cssVariableVisibilityTransitionDuration},0s))`,
6538
6657
  },
6539
- '&:dir(rtl)': {
6540
- ...(!isSecondaryScrollerVisible && {
6541
- transform: 'translate3d(-100%, 0, 0)', // use correct transitions in rtl mode for mobile view
6658
+ [mediaQueryDesktop]: {
6659
+ display: 'none',
6660
+ ...(isSecondary && {
6661
+ gridArea: '1/1/-1/-1',
6662
+ display: 'grid',
6663
+ gridTemplateRows: 'subgrid',
6664
+ gridTemplateColumns: 'subgrid',
6665
+ overflow: 'hidden auto',
6666
+ // overscrollBehaviorY: 'none', // when defined, rubber band effect on iOS 18 scroll is getting lost
6667
+ scrollBehavior: 'smooth',
6668
+ WebkitOverflowScrolling: 'touch',
6669
+ }),
6670
+ ...((isPrimary || isCascade) && {
6671
+ display: 'contents',
6542
6672
  }),
6543
6673
  },
6544
6674
  },
6545
- // header needs to be placed within scroller to ensure scrollbars are fully visible
6546
- header: {
6547
- position: 'sticky',
6548
- top: 0,
6549
- zIndex: 1,
6550
- height: frostedGlassHeaderHeight,
6551
- padding: `0 ${spacingFluidLarge}`,
6552
- display: 'grid',
6553
- gridTemplateColumns: '4rem minmax(0, 1fr) 4rem',
6554
- alignItems: 'center',
6555
- gap: spacingFluidSmall,
6556
- WebkitBackdropFilter: 'blur(8px)',
6557
- backdropFilter: 'blur(8px)', // with current frostedGlassStyle of blur(32px) scrolling becomes visually distracting
6558
- backgroundColor: frostedGlassBackgroundColor,
6559
- ...fadeInOutTransition,
6560
- ...prefersColorSchemeDarkMediaQuery(theme, {
6561
- backgroundColor: frostedGlassBackgroundColorDark,
6562
- }),
6563
- [mediaQueryEnhancedView]: {
6675
+ button: {
6676
+ ...((isPrimary || isCascade) && {
6564
6677
  display: 'none',
6678
+ }),
6679
+ [mediaQueryMobile]: {
6680
+ ...(isSecondary && {
6681
+ display: 'none',
6682
+ }),
6565
6683
  },
6684
+ ...(!isPrimary &&
6685
+ !isCascade && {
6686
+ padding: spacingFluidSmall,
6687
+ margin: `0 calc(${spacingFluidSmall} * -1)`,
6688
+ }),
6566
6689
  },
6567
6690
  back: {
6568
- justifySelf: 'flex-start',
6569
- padding: spacingFluidSmall,
6570
- marginInlineStart: `calc(${spacingFluidSmall} * -1)`,
6571
- },
6572
- heading: {
6573
- ...headingMediumStyle,
6574
- margin: 0,
6575
- padding: 0,
6576
- overflow: 'hidden',
6577
- textAlign: 'center',
6578
- whiteSpace: 'nowrap',
6579
- textOverflow: 'ellipsis',
6580
- color: primaryColor,
6581
- ...prefersColorSchemeDarkMediaQuery(theme, {
6582
- color: primaryColorDark,
6691
+ ...(!isPrimary && {
6692
+ display: 'none',
6693
+ }),
6694
+ ...(isPrimary && {
6695
+ [mediaQueryMobile]: {
6696
+ gridArea: '2/2',
6697
+ width: 'fit-content',
6698
+ height: 'fit-content',
6699
+ placeSelf: 'center flex-start',
6700
+ zIndex: 2,
6701
+ },
6702
+ [mediaQueryDesktop]: {
6703
+ width: 'fit-content',
6704
+ height: 'fit-content',
6705
+ marginInlineStart: '-4px', // improve visual alignment and compensate white space of arrow-left icon
6706
+ },
6583
6707
  }),
6584
6708
  },
6585
- content: mergeDeep(getContentJssStyle(), fadeInOutTransition),
6586
6709
  });
6587
6710
  };
6588
6711
 
@@ -8872,7 +8995,6 @@ const getComponentCss$w = (direction, isNativePopoverCase, theme) => {
8872
8995
  position: 'absolute',
8873
8996
  zIndex: POPOVER_Z_INDEX,
8874
8997
  filter: `drop-shadow(0 0 16px ${shadowColor})`,
8875
- backdropFilter: 'drop-shadow(0px 0px 0px transparent)', // fixes issues with Chrome >= 105 where filter: drop-shadow is not applied correctly after animation ends
8876
8998
  pointerEvents: 'none',
8877
8999
  animation: `${motionDurationShort} $fadeIn ${motionEasingBase} forwards`
8878
9000
  ,
@@ -9146,7 +9268,13 @@ const getColors$2 = (isDisabled, isSelected, theme) => {
9146
9268
  return {
9147
9269
  buttonColor: isDisabled ? disabledColor : primaryColor,
9148
9270
  labelColor: isDisabled ? disabledColor : contrastMediumColor,
9149
- borderColor: isSelected ? (isHighContrastMode ? highlightColor : primaryColor) : contrastLowColor,
9271
+ borderColor: isSelected
9272
+ ? isDisabled
9273
+ ? disabledColor
9274
+ : isHighContrastMode
9275
+ ? highlightColor
9276
+ : primaryColor
9277
+ : contrastLowColor,
9150
9278
  hoverBorderColor: primaryColor,
9151
9279
  };
9152
9280
  };
@@ -9412,7 +9540,7 @@ const getListStyles$1 = (direction, theme) => {
9412
9540
  const { highlightColor } = getHighContrastColors();
9413
9541
  return {
9414
9542
  '@global': {
9415
- ul: {
9543
+ '[role="listbox"]': {
9416
9544
  display: 'flex',
9417
9545
  flexDirection: 'column',
9418
9546
  gap: spacingStaticSmall,
@@ -10802,6 +10930,9 @@ const getComponentCss$8 = (isDisabled, hideLabel, state, hasUnitOrVisibleCounter
10802
10930
  '&(input:-internal-autofill-selected),&(input:-internal-autofill-previewed),&(input:-webkit-autofill),&(input:-webkit-autofill:focus)': {
10803
10931
  WebkitBackgroundClip: 'padding-box', // reset webkit autofill styles
10804
10932
  },
10933
+ '&(input[type="email"]),&(input[type="tel"])': {
10934
+ direction: 'ltr', // fixes specific input types in RTL mode. Should always be LTR. See https://rtlstyling.com/posts/rtl-styling#form-inputs
10935
+ },
10805
10936
  },
10806
10937
  }),
10807
10938
  },