@porsche-design-system/components-react 3.22.0-rc.0 → 3.22.0

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