@porsche-design-system/components-react 3.11.0 → 3.12.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 (32) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/esm/lib/components/icon.wrapper.d.ts +1 -1
  3. package/esm/lib/components/inline-notification.wrapper.d.ts +1 -1
  4. package/esm/lib/components/tag.wrapper.d.ts +1 -1
  5. package/esm/lib/types.d.ts +3 -0
  6. package/package.json +2 -2
  7. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +313 -515
  8. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +3 -5
  9. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.cjs +3 -1
  10. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.cjs +3 -1
  11. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.cjs +3 -1
  12. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/loading-message.cjs +11 -0
  13. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +4 -2
  14. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-button-wrapper.cjs +3 -1
  15. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.cjs +4 -1
  16. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +313 -516
  17. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +3 -5
  18. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.mjs +3 -1
  19. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +3 -1
  20. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.mjs +3 -1
  21. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/loading-message.mjs +8 -0
  22. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +4 -2
  23. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-button-wrapper.mjs +3 -1
  24. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.mjs +4 -1
  25. package/ssr/esm/lib/dsr-components/button-pure.d.ts +1 -0
  26. package/ssr/esm/lib/dsr-components/button.d.ts +1 -0
  27. package/ssr/esm/lib/dsr-components/checkbox-wrapper.d.ts +1 -0
  28. package/ssr/esm/lib/dsr-components/loading-message.d.ts +8 -0
  29. package/ssr/esm/lib/dsr-components/pin-code.d.ts +1 -0
  30. package/ssr/esm/lib/dsr-components/radio-button-wrapper.d.ts +1 -0
  31. package/ssr/esm/lib/dsr-components/switch.d.ts +1 -0
  32. package/ssr/esm/lib/types.d.ts +3 -0
@@ -3208,29 +3208,6 @@ const dropShadowHighStyle = {
3208
3208
  boxShadow: `0px 8px 40px ${_dropShadowBackgroundColor}`, // filter: drop-shadow() causes visual glitches in Firefox in combination with frostedGlassStyle
3209
3209
  };
3210
3210
 
3211
- const themeLightStateFocus = '#1A44EA';
3212
-
3213
- const getFocusStyle = (opts) => {
3214
- const { borderRadius = 'small', offset = '2px' } = opts || {};
3215
- const outlineOffset = offset === 'small' ? '2px' : offset === 'none' ? 0 : offset || '2px';
3216
- const borderRadiusValue = borderRadius === 'small'
3217
- ? borderRadiusSmall
3218
- : borderRadius === 'medium'
3219
- ? borderRadiusMedium
3220
- : borderRadius || borderRadiusSmall;
3221
- return {
3222
- borderRadius: borderRadiusValue, // it's visually being reflected on both (when placed here), element and focus outline
3223
- '&:focus': {
3224
- outline: `${borderWidthBase} solid ${themeLightStateFocus}`,
3225
- outlineOffset,
3226
- },
3227
- // why? have a look at this article https://www.tpgi.com/focus-visible-and-backwards-compatibility/
3228
- '&:focus:not(:focus-visible)': {
3229
- outlineColor: 'transparent',
3230
- },
3231
- };
3232
- };
3233
-
3234
3211
  const fontFamily = "'Porsche Next','Arial Narrow',Arial,'Heiti SC',SimHei,sans-serif";
3235
3212
 
3236
3213
  const fontHyphenationStyle = {
@@ -3825,8 +3802,9 @@ const motionEasingMap = {
3825
3802
  };
3826
3803
  const cssVariableTransitionDuration = '--p-transition-duration';
3827
3804
  const cssVariableAnimationDuration = '--p-animation-duration';
3828
- const getTransition = (cssProperty, duration = 'short', easing = 'base', delay) => `${cssProperty} var(${cssVariableTransitionDuration}, ${motionDurationMap[duration]}) ${motionEasingMap[easing]}${delay ? ` var(${cssVariableTransitionDuration}, ${motionDurationMap[delay]})` : ''}`;
3829
- const pxToRemWithUnit = (px) => `${px / 16}rem`;
3805
+ const getTransition = (cssProperty, duration = 'short', easing = 'base', delay) => {
3806
+ return `${cssProperty} var(${cssVariableTransitionDuration}, ${motionDurationMap[duration]}) ${motionEasingMap[easing]}${delay ? ` var(${cssVariableTransitionDuration}, ${motionDurationMap[delay]})` : ''}`;
3807
+ };
3830
3808
  const addImportantToRule = (value) => `${value} !important`;
3831
3809
  const addImportantToEachRule = (input) => {
3832
3810
  return Object.entries(input).reduce((result, [key, value]) => value === null
@@ -3840,13 +3818,25 @@ const addImportantToEachRule = (input) => {
3840
3818
  const doGetThemedColors = (theme = 'light') => {
3841
3819
  return getThemedColors(theme);
3842
3820
  };
3843
- const getInsetJssStyle = (value = 0) => {
3844
- value = value === 0 || value === 'auto' ? value : `${value}px`;
3821
+ const getFocusJssStyle = (theme, opts) => {
3822
+ const { offset = '2px', slotted = '', pseudo = false } = opts || {};
3823
+ const { focusColor } = getThemedColors(theme);
3824
+ const { focusColor: focusColorDark } = getThemedColors('dark');
3825
+ const slottedSelector = slotted && slotted !== true ? slotted : '';
3845
3826
  return {
3846
- top: value,
3847
- left: value,
3848
- right: value,
3849
- bottom: value,
3827
+ [`&${slotted ? '(' : ''}${slottedSelector}::-moz-focus-inner${slotted ? ')' : ''}`]: {
3828
+ border: 0, // reset ua-style (for FF)
3829
+ },
3830
+ [`&${slotted ? '(' : ''}${slottedSelector}:focus${slotted ? ')' : ''}`]: {
3831
+ outline: 0, // reset ua-style (for older browsers)
3832
+ },
3833
+ [`&${slotted ? '(' : ''}${slottedSelector}:focus-visible${slotted ? ')' : ''}${pseudo ? '::before' : ''}`]: {
3834
+ outline: `${borderWidthBase} solid ${focusColor}`,
3835
+ outlineOffset: offset,
3836
+ ...prefersColorSchemeDarkMediaQuery(theme, {
3837
+ outlineColor: focusColorDark,
3838
+ }),
3839
+ },
3850
3840
  };
3851
3841
  };
3852
3842
  // reset initial styles, e.g. in case link-pure is used with slotted anchor and nested within e.g. an accordion
@@ -3857,55 +3847,38 @@ const getResetInitialStylesForSlottedAnchor = {
3857
3847
  borderRadius: 0,
3858
3848
  background: 'transparent',
3859
3849
  };
3860
- const focusPseudoJssStyle = {
3861
- outline: 0,
3862
- '&::before': {
3863
- // needs to be defined always to have correct custom click area
3864
- content: '""',
3865
- position: 'absolute',
3866
- ...getInsetJssStyle(),
3867
- },
3868
- '&:focus::before': {
3869
- borderRadius: '1px', // TODO: why just 1px border-radius?
3870
- outline: `${borderWidthBase} solid ${themeLightStateFocus}`,
3871
- outlineOffset: '2px',
3872
- },
3873
- '&:focus:not(:focus-visible)::before': {
3874
- outline: 0,
3875
- },
3876
- };
3877
3850
  /**
3878
3851
  * Returns a JSS style object that can be used to visually hide text in the browser, while still allowing it to be accessed by screen readers.
3879
3852
  * @param {boolean} isHidden - A boolean value indicating whether the text should be hidden or not. Defaults to true.
3880
3853
  * @param {JssStyle} isShownJssStyle - Additional styles applied when isHidden = false
3881
3854
  * @returns {JssStyle} - A JSS style object containing styles depending on the value of isHidden and isShownJssStyle.
3882
3855
  */
3883
- const getHiddenTextJssStyle = (isHidden = true, isShownJssStyle) => isHidden
3884
- ? {
3885
- position: 'absolute',
3886
- width: '1px',
3887
- height: '1px',
3888
- padding: 0,
3889
- margin: '-1px',
3890
- overflow: 'hidden',
3891
- clip: 'rect(0,0,0,0)',
3892
- whiteSpace: 'nowrap',
3893
- }
3894
- : {
3895
- position: 'static',
3896
- width: 'auto',
3897
- height: 'auto',
3898
- padding: 0,
3899
- margin: 0,
3900
- overflow: 'visible',
3901
- clip: 'auto',
3902
- whiteSpace: 'normal',
3903
- ...isShownJssStyle,
3904
- };
3905
- const getBackfaceVisibilityJssStyle = () => ({
3906
- backfaceVisibility: 'hidden',
3907
- WebkitBackfaceVisibility: 'hidden',
3908
- });
3856
+ const getHiddenTextJssStyle = (isHidden = true, isShownJssStyle) => {
3857
+ return isHidden
3858
+ ? {
3859
+ position: 'absolute',
3860
+ width: '1px',
3861
+ height: '1px',
3862
+ padding: 0,
3863
+ margin: '-1px',
3864
+ overflow: 'hidden',
3865
+ clip: 'rect(0,0,0,0)',
3866
+ whiteSpace: 'nowrap',
3867
+ }
3868
+ : {
3869
+ position: 'static',
3870
+ width: 'auto',
3871
+ height: 'auto',
3872
+ padding: 0,
3873
+ margin: 0,
3874
+ overflow: 'visible',
3875
+ clip: 'auto',
3876
+ whiteSpace: 'normal',
3877
+ ...isShownJssStyle,
3878
+ };
3879
+ };
3880
+ // TODO: there should be a shared style util for modal, flyout and flyout-navigation instead of having this code in the
3881
+ // main bundle. Or don't share it at all, in case same transition concept isn't ideal to be shared from an UI point of view.
3909
3882
  /**
3910
3883
  * Generates JSS styles for a frosted glass background.
3911
3884
  * @param {boolean} isVisible - Determines if the frosted glass effect is visible.
@@ -3917,7 +3890,7 @@ const getBackfaceVisibilityJssStyle = () => ({
3917
3890
  const getBackdropJssStyle = (isVisible, zIndex, theme, duration = 'long') => {
3918
3891
  return {
3919
3892
  position: 'fixed',
3920
- ...getInsetJssStyle(),
3893
+ inset: 0,
3921
3894
  zIndex,
3922
3895
  // TODO: background shading is missing in getThemedColors(theme).backgroundShading
3923
3896
  background: isThemeDark(theme) ? themeDarkBackgroundShading : themeLightBackgroundShading,
@@ -4090,8 +4063,8 @@ const formatObjectOutput = (value) => {
4090
4063
  const HEADING_TAGS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
4091
4064
 
4092
4065
  const getComponentCss$13 = (size, compact, open, theme) => {
4093
- const { primaryColor, hoverColor, focusColor, contrastLowColor } = getThemedColors(theme);
4094
- const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, focusColor: focusColorDark, contrastLowColor: contrastLowColorDark, } = getThemedColors('dark');
4066
+ const { primaryColor, hoverColor, contrastLowColor } = getThemedColors(theme);
4067
+ const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, contrastLowColor: contrastLowColorDark, } = getThemedColors('dark');
4095
4068
  return getCss({
4096
4069
  '@global': {
4097
4070
  ':host': {
@@ -4118,7 +4091,6 @@ const getComponentCss$13 = (size, compact, open, theme) => {
4118
4091
  width: '100%',
4119
4092
  textDecoration: 'none',
4120
4093
  border: 0,
4121
- outline: 0,
4122
4094
  margin: 0, // Removes default button margin on safari 15
4123
4095
  gap: '24px',
4124
4096
  background: 'transparent',
@@ -4163,15 +4135,7 @@ const getComponentCss$13 = (size, compact, open, theme) => {
4163
4135
  }),
4164
4136
  },
4165
4137
  })),
4166
- '&:focus::before': {
4167
- border: `${borderWidthBase} solid ${focusColor}`,
4168
- ...prefersColorSchemeDarkMediaQuery(theme, {
4169
- borderColor: focusColorDark,
4170
- }),
4171
- },
4172
- '&:not(:focus-visible)::before': {
4173
- border: 0,
4174
- },
4138
+ ...getFocusJssStyle(theme, { pseudo: true, offset: '-2px' }),
4175
4139
  },
4176
4140
  },
4177
4141
  heading: {
@@ -4330,18 +4294,19 @@ const getFontSizeText = (size) => {
4330
4294
  return fontSizeTextMap[size];
4331
4295
  };
4332
4296
 
4297
+ // TODO: why not using getHiddenTextJssStyle()?
4333
4298
  // Needed for slotted anchor and hidden label, which then enlarges the hidden label to equal host size and indents the text to be visually hidden.
4334
4299
  const getVisibilityJssStyle = (hideLabel) => {
4335
4300
  return hideLabel
4336
4301
  ? {
4337
4302
  position: 'absolute',
4338
- ...getInsetJssStyle(),
4303
+ inset: 0,
4339
4304
  whiteSpace: 'nowrap',
4340
- textIndent: '-999999px',
4305
+ textIndent: '-999999px', // TODO: check if text-indent still works for RTL-mode in this case
4341
4306
  }
4342
4307
  : {
4343
4308
  position: 'relative',
4344
- ...getInsetJssStyle('auto'),
4309
+ inset: 'auto',
4345
4310
  whiteSpace: 'inherit',
4346
4311
  textIndent: 0,
4347
4312
  zIndex: 1, // fix Firefox bug on :hover (#2583)
@@ -4350,8 +4315,8 @@ const getVisibilityJssStyle = (hideLabel) => {
4350
4315
  const offsetVertical = '-2px';
4351
4316
  const offsetHorizontal = '-4px';
4352
4317
  const getLinkButtonPureStyles = (icon, iconSource, active, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, hasSlottedAnchor, theme) => {
4353
- const { primaryColor, disabledColor, hoverColor, focusColor } = getThemedColors(theme);
4354
- const { primaryColor: primaryColorDark, disabledColor: disabledColorDark, hoverColor: hoverColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
4318
+ const { primaryColor, disabledColor, hoverColor } = getThemedColors(theme);
4319
+ const { primaryColor: primaryColorDark, disabledColor: disabledColorDark, hoverColor: hoverColorDark, } = getThemedColors('dark');
4355
4320
  const hasIcon = hasVisibleIcon(icon, iconSource);
4356
4321
  return {
4357
4322
  '@global': {
@@ -4379,7 +4344,6 @@ const getLinkButtonPureStyles = (icon, iconSource, active, isDisabledOrLoading,
4379
4344
  ...prefersColorSchemeDarkMediaQuery(theme, {
4380
4345
  color: isDisabledOrLoading ? disabledColorDark : primaryColorDark,
4381
4346
  }),
4382
- outline: 0,
4383
4347
  ...textSmallStyle,
4384
4348
  ...mergeDeep(buildResponsiveStyles(stretch, (stretchValue) => ({
4385
4349
  justifyContent: stretchValue ? 'space-between' : 'flex-start',
@@ -4416,19 +4380,10 @@ const getLinkButtonPureStyles = (icon, iconSource, active, isDisabledOrLoading,
4416
4380
  }),
4417
4381
  },
4418
4382
  })),
4419
- ...(!hasSlottedAnchor && {
4420
- '&:focus::before': {
4421
- border: `${borderWidthBase} solid ${focusColor}`,
4422
- ...prefersColorSchemeDarkMediaQuery(theme, {
4423
- borderColor: focusColorDark,
4424
- }),
4425
- },
4426
- '&:not(:focus-visible)::before': {
4427
- border: 0,
4428
- },
4429
- }),
4383
+ ...(!hasSlottedAnchor && getFocusJssStyle(theme, { pseudo: true, offset: '-2px' })),
4430
4384
  },
4431
4385
  label: {
4386
+ transition: getTransition('opacity'),
4432
4387
  position: 'relative', // needed for hover state when icon="none" is set
4433
4388
  },
4434
4389
  ...(hasIcon && {
@@ -4452,6 +4407,12 @@ const getLinkButtonPureStyles = (icon, iconSource, active, isDisabledOrLoading,
4452
4407
  };
4453
4408
  };
4454
4409
 
4410
+ const getFunctionalComponentLoadingMessageStyles = () => {
4411
+ return {
4412
+ loading: getHiddenTextJssStyle(),
4413
+ };
4414
+ };
4415
+
4455
4416
  const getComponentCss$10 = (icon, iconSource, active, isLoading, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, theme) => {
4456
4417
  const hasIcon = hasVisibleIcon(icon, iconSource);
4457
4418
  return getCss(mergeDeep(getLinkButtonPureStyles(icon, iconSource, active, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, false, theme), {
@@ -4466,7 +4427,7 @@ const getComponentCss$10 = (icon, iconSource, active, isLoading, isDisabledOrLoa
4466
4427
  ...(!hasIcon &&
4467
4428
  isLoading && {
4468
4429
  label: {
4469
- visibility: 'hidden',
4430
+ opacity: 0, // use opacity for smooth transition between states and to keep accessible name available
4470
4431
  },
4471
4432
  icon: {
4472
4433
  position: 'absolute',
@@ -4476,6 +4437,8 @@ const getComponentCss$10 = (icon, iconSource, active, isLoading, isDisabledOrLoa
4476
4437
  height: fontLineHeight,
4477
4438
  },
4478
4439
  }),
4440
+ // .loading
4441
+ ...getFunctionalComponentLoadingMessageStyles(),
4479
4442
  }));
4480
4443
  };
4481
4444
 
@@ -4528,7 +4491,7 @@ const getTileBaseStyles = (aspectRatio, isDisabled) => {
4528
4491
  '::slotted': {
4529
4492
  '&(picture)': {
4530
4493
  position: 'absolute',
4531
- ...getInsetJssStyle(),
4494
+ inset: 0,
4532
4495
  },
4533
4496
  '&(img)': {
4534
4497
  height: '100%',
@@ -4556,8 +4519,8 @@ const getTileBaseStyles = (aspectRatio, isDisabled) => {
4556
4519
  },
4557
4520
  'image-container': {
4558
4521
  position: 'absolute',
4522
+ inset: 0,
4559
4523
  transition: getTransition('transform', 'moderate'),
4560
- ...getInsetJssStyle(),
4561
4524
  },
4562
4525
  content: {
4563
4526
  position: 'absolute',
@@ -4584,7 +4547,7 @@ background, align, compact, hasGradient, isDisabled) => {
4584
4547
  return mergeDeep(getTileBaseStyles(aspectRatio, isDisabled), {
4585
4548
  '@global': {
4586
4549
  p: {
4587
- maxWidth: pxToRemWithUnit(550), // in this case rem unit makes sense to scale up available space
4550
+ maxWidth: '34.375rem', // in this case rem unit makes sense to scale up available space
4588
4551
  margin: 0,
4589
4552
  ...textLargeStyle,
4590
4553
  hyphens: 'inherit',
@@ -4688,7 +4651,6 @@ const getLinkButtonStyles = (icon, iconSource, variant, hideLabel, isDisabledOrL
4688
4651
  minWidth: '54px', // ensure space is already reserved until icon component is loaded (ssr)
4689
4652
  minHeight: '54px', // ensure space is already reserved until icon component is loaded (ssr)
4690
4653
  boxSizing: 'border-box',
4691
- outline: 0,
4692
4654
  textAlign: 'start',
4693
4655
  WebkitAppearance: 'none', // iOS safari
4694
4656
  appearance: 'none',
@@ -4704,18 +4666,7 @@ const getLinkButtonStyles = (icon, iconSource, variant, hideLabel, isDisabledOrL
4704
4666
  padding: hideLabelValue ? '13px' : '13px 26px',
4705
4667
  gap: hideLabelValue ? 0 : spacingStaticSmall,
4706
4668
  })),
4707
- ...(!hasSlottedAnchor && {
4708
- '&:focus::before': {
4709
- content: '""',
4710
- position: 'fixed',
4711
- border: `${borderWidthBase} solid ${focusColor}`,
4712
- borderRadius: borderRadiusMedium,
4713
- ...getInsetJssStyle(-6),
4714
- },
4715
- '&:not(:focus-visible)::before': {
4716
- border: 0,
4717
- },
4718
- }),
4669
+ ...(!hasSlottedAnchor && getFocusJssStyle(theme)),
4719
4670
  ...(!isDisabledOrLoading &&
4720
4671
  hoverMediaQuery({
4721
4672
  '&:hover': {
@@ -4814,6 +4765,8 @@ const getComponentCss$_ = (icon, iconSource, variant, hideLabel, disabled, loadi
4814
4765
  opacity: 0, // use opacity for smooth transition between states
4815
4766
  }),
4816
4767
  },
4768
+ // .loading
4769
+ ...getFunctionalComponentLoadingMessageStyles(),
4817
4770
  }));
4818
4771
  };
4819
4772
 
@@ -4841,9 +4794,13 @@ const spacingMap = {
4841
4794
  basic: gridBasicOffset,
4842
4795
  extended: gridExtendedOffset,
4843
4796
  };
4797
+ const backfaceVisibilityJssStyle = {
4798
+ backfaceVisibility: 'hidden',
4799
+ WebkitBackfaceVisibility: 'hidden',
4800
+ };
4844
4801
  const getComponentCss$Z = (hasHeading, hasDescription, hasControlsSlot, headingSize, width, hasPagination, isInfinitePagination, alignHeader, theme) => {
4845
- const { primaryColor, contrastMediumColor, focusColor } = getThemedColors(theme);
4846
- const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
4802
+ const { primaryColor, contrastMediumColor } = getThemedColors(theme);
4803
+ const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark } = getThemedColors('dark');
4847
4804
  const { canvasTextColor } = getHighContrastColors();
4848
4805
  const isHeaderAlignCenter = alignHeader === 'center';
4849
4806
  return getCss({
@@ -4867,15 +4824,11 @@ const getComponentCss$Z = (hasHeading, hasDescription, hasControlsSlot, headingS
4867
4824
  },
4868
4825
  }),
4869
4826
  ...addImportantToEachRule({
4870
- '::slotted(*)': {
4871
- borderRadius: `var(--p-carousel-border-radius, ${borderRadiusLarge})`,
4872
- },
4873
- '::slotted(*:focus-visible)': {
4874
- outline: `${borderWidthBase} solid ${focusColor}`,
4875
- ...prefersColorSchemeDarkMediaQuery(theme, {
4876
- outlineColor: focusColorDark,
4877
- }),
4878
- outlineOffset: '2px',
4827
+ '::slotted': {
4828
+ '&(*)': {
4829
+ borderRadius: `var(--p-carousel-border-radius, ${borderRadiusLarge})`,
4830
+ },
4831
+ ...getFocusJssStyle(theme, { slotted: true }),
4879
4832
  },
4880
4833
  // TODO: maybe it's better to style with slot[name="heading"] and slot[name="description"] instead, then styles would be part of shadow dom
4881
4834
  // h2,::slotted([slot=heading]),p,::slotted([slot=description])
@@ -4939,7 +4892,7 @@ const getComponentCss$Z = (hasHeading, hasDescription, hasControlsSlot, headingS
4939
4892
  'skip-link': {
4940
4893
  opacity: 0,
4941
4894
  pointerEvents: 'none',
4942
- '&:focus': {
4895
+ '&:focus-visible': {
4943
4896
  opacity: 1,
4944
4897
  pointerEvents: 'all',
4945
4898
  },
@@ -4970,12 +4923,12 @@ const getComponentCss$Z = (hasHeading, hasDescription, hasControlsSlot, headingS
4970
4923
  },
4971
4924
  },
4972
4925
  '&__list': {
4926
+ ...backfaceVisibilityJssStyle,
4973
4927
  display: 'flex',
4974
- ...getBackfaceVisibilityJssStyle(),
4975
4928
  },
4976
4929
  '&__slide': {
4930
+ ...backfaceVisibilityJssStyle,
4977
4931
  flexShrink: 0,
4978
- ...getBackfaceVisibilityJssStyle(),
4979
4932
  transform: 'translateZ(0)', // fixes mobile safari flickering, https://github.com/nolimits4web/swiper/issues/3527#issuecomment-609088939
4980
4933
  },
4981
4934
  '&__sr': getHiddenTextJssStyle(), // appears in the DOM when sliding
@@ -5104,8 +5057,8 @@ const getThemedFormStateColors = (theme, state) => {
5104
5057
 
5105
5058
  // TODO: move to form-styles.ts
5106
5059
  const getSlottedCheckboxRadioButtonStyles = (state, isDisabled, isLoading, theme) => {
5107
- const { primaryColor, contrastMediumColor, contrastHighColor, disabledColor, focusColor } = getThemedColors(theme);
5108
- const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark, contrastHighColor: contrastHighColorDark, disabledColor: disabledColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
5060
+ const { primaryColor, contrastMediumColor, contrastHighColor, disabledColor } = getThemedColors(theme);
5061
+ const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark, contrastHighColor: contrastHighColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
5109
5062
  const { formStateColor, formStateHoverColor } = getThemedFormStateColors(theme, state);
5110
5063
  const { formStateColor: formStateColorDark, formStateHoverColor: formStateHoverColorDark } = getThemedFormStateColors('dark', state);
5111
5064
  const { canvasTextColor } = getHighContrastColors();
@@ -5130,7 +5083,6 @@ const getSlottedCheckboxRadioButtonStyles = (state, isDisabled, isLoading, theme
5130
5083
  return {
5131
5084
  '::slotted': {
5132
5085
  '&(input)': {
5133
- position: 'relative', // TODO: can be removed as soon as focus style was adjusted
5134
5086
  width: fontLineHeight,
5135
5087
  height: fontLineHeight,
5136
5088
  font: `${fontSizeTextSmall} ${fontFamily}`, // needed for correct width and height definition based on ex-unit
@@ -5142,8 +5094,8 @@ const getSlottedCheckboxRadioButtonStyles = (state, isDisabled, isLoading, theme
5142
5094
  boxSizing: 'content-box',
5143
5095
  background: `transparent 0% 0% / ${fontLineHeight}`,
5144
5096
  transition: `${getTransition('background-color')}, ${getTransition('border-color')}`,
5145
- border: `2px solid ${uncheckedColor}`,
5146
- outline: 0,
5097
+ border: `${borderWidthBase} solid ${uncheckedColor}`,
5098
+ outline: 0, // TODO: only relevant for VRT testing with forced states - prevents :focus style (in case getFocusJssStyle() condition is not matching)
5147
5099
  ...(disabledOrLoading
5148
5100
  ? {
5149
5101
  pointerEvents: 'none', // to prevent form element becomes clickable/toggleable
@@ -5185,21 +5137,7 @@ const getSlottedCheckboxRadioButtonStyles = (state, isDisabled, isLoading, theme
5185
5137
  transition: 'unset', // Fixes chrome bug where transition properties are stuck on hover
5186
5138
  }),
5187
5139
  })),
5188
- ...(!isDisabled && {
5189
- // TODO: can be done with getFocusStyle() in the meantime
5190
- '&(input:focus)::before': {
5191
- content: '""',
5192
- position: 'absolute',
5193
- ...getInsetJssStyle(-6),
5194
- border: `${borderWidthBase} solid ${focusColor}`,
5195
- ...prefersColorSchemeDarkMediaQuery(theme, {
5196
- borderColor: focusColorDark,
5197
- }),
5198
- },
5199
- '&(input:focus:not(:focus-visible))::before': {
5200
- borderColor: 'transparent',
5201
- },
5202
- }),
5140
+ ...(!isDisabled && getFocusJssStyle(theme, { slotted: 'input' })),
5203
5141
  },
5204
5142
  };
5205
5143
  };
@@ -5307,7 +5245,7 @@ const getComponentCss$Y = (hideLabel, state, isDisabled, isLoading, theme) => {
5307
5245
  gridArea: '1/1',
5308
5246
  borderRadius: borderRadiusSmall,
5309
5247
  },
5310
- // TODO: is it somehow useful possible to make following styles configurable by paramter?
5248
+ // TODO: is it somehow useful possible to make following styles configurable by parameter?
5311
5249
  ...(!isLoading && {
5312
5250
  '&(input:checked)': {
5313
5251
  backgroundImage: getCheckedSVGBackgroundImage$1(checkedIconColor),
@@ -5322,11 +5260,6 @@ const getComponentCss$Y = (hideLabel, state, isDisabled, isLoading, theme) => {
5322
5260
  }),
5323
5261
  },
5324
5262
  }),
5325
- ...(!isDisabled && {
5326
- '&(input:focus)::before': {
5327
- borderRadius: borderRadiusMedium,
5328
- },
5329
- }),
5330
5263
  },
5331
5264
  })),
5332
5265
  },
@@ -5367,6 +5300,8 @@ const getComponentCss$Y = (hideLabel, state, isDisabled, isLoading, theme) => {
5367
5300
  ...getFunctionalComponentStateMessageStyles(theme, state, {
5368
5301
  gridColumn: '1/3',
5369
5302
  }),
5303
+ // .loading
5304
+ ...getFunctionalComponentLoadingMessageStyles(),
5370
5305
  });
5371
5306
  };
5372
5307
 
@@ -5425,7 +5360,7 @@ const getComponentCss$W = () => {
5425
5360
  display: 'inline-block',
5426
5361
  verticalAlign: 'top',
5427
5362
  ...addImportantToEachRule({
5428
- outline: 0,
5363
+ outline: 0, // TODO: is it still necessary?
5429
5364
  boxSizing: 'content-box', // needed for correct height calculation when padding is set on host (e.g. custom click area)
5430
5365
  ...getDimensionStyle,
5431
5366
  ...colorSchemeStyles,
@@ -5436,7 +5371,14 @@ const getComponentCss$W = () => {
5436
5371
  display: 'block',
5437
5372
  textDecoration: 'none',
5438
5373
  ...getDimensionStyle,
5439
- ...focusPseudoJssStyle,
5374
+ '&::before': {
5375
+ // needs to be defined always to have correct custom click area
5376
+ content: '""',
5377
+ position: 'absolute',
5378
+ inset: 0,
5379
+ borderRadius: '1px',
5380
+ },
5381
+ ...getFocusJssStyle('light', { pseudo: true }), // TODO: we need to support theme
5440
5382
  },
5441
5383
  picture: {
5442
5384
  display: 'block',
@@ -5722,7 +5664,7 @@ const getComponentCss$P = (isPrimaryScrollerVisible, isSecondaryScrollerVisible,
5722
5664
  },
5723
5665
  dialog: {
5724
5666
  position: 'fixed',
5725
- ...getInsetJssStyle(),
5667
+ inset: 0,
5726
5668
  display: 'grid', // ua-style reset
5727
5669
  width: 'auto', // ua-style reset and to ensure transition duration works correctly
5728
5670
  height: '100vh', // ua-style reset
@@ -5734,6 +5676,7 @@ const getComponentCss$P = (isPrimaryScrollerVisible, isSecondaryScrollerVisible,
5734
5676
  visibility: 'inherit', // ua-style reset
5735
5677
  background: 'none', // ua-style reset
5736
5678
  overflow: 'hidden', // ua-style reset, dialog shall never become scrollable, it's handled by custom scroll areas
5679
+ outline: 0, // ua-style reset
5737
5680
  ...(isPrimaryScrollerVisible
5738
5681
  ? {
5739
5682
  transform: 'translate3d(0, 0, 0)',
@@ -5753,9 +5696,6 @@ const getComponentCss$P = (isPrimaryScrollerVisible, isSecondaryScrollerVisible,
5753
5696
  transform: 'translate3d(100%, 0, 0)', // use correct transitions in rtl mode
5754
5697
  }),
5755
5698
  },
5756
- '&:focus-visible': {
5757
- outline: 'none', // ua-style reset
5758
- },
5759
5699
  '&::backdrop': {
5760
5700
  // to improve browser backwards compatibility we visually style the backdrop on the :host,
5761
5701
  // although it's not on the #top-layer like it would be for modern browsers supporting ::backdrop
@@ -5849,8 +5789,8 @@ const getContentJssStyle = () => {
5849
5789
  const frostedGlassBackgroundColorLight = 'rgba(238, 239, 242, 0.79)';
5850
5790
  const frostedGlassBackgroundColorDark = 'rgba(33, 34, 37, 0.79)';
5851
5791
  const getComponentCss$O = (isSecondaryScrollerVisible, theme) => {
5852
- const { primaryColor, backgroundSurfaceColor, focusColor, hoverColor } = getThemedColors(theme);
5853
- const { primaryColor: primaryColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, focusColor: focusColorDark, hoverColor: hoverColorDark, } = getThemedColors('dark');
5792
+ const { primaryColor, backgroundSurfaceColor, hoverColor } = getThemedColors(theme);
5793
+ const { primaryColor: primaryColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, hoverColor: hoverColorDark, } = getThemedColors('dark');
5854
5794
  const frostedGlassBackgroundColor = isThemeDark(theme)
5855
5795
  ? frostedGlassBackgroundColorDark
5856
5796
  : frostedGlassBackgroundColorLight;
@@ -5886,56 +5826,49 @@ const getComponentCss$O = (isSecondaryScrollerVisible, theme) => {
5886
5826
  '::slotted(:is(h1, h2, h3, h4, h5, h6):not(:first-child))': addImportantToEachRule({
5887
5827
  margin: `calc(${spacingFluidMedium} - ${spacingFluidXSmall}) 0 0`, // spacingFluidXSmall to compensate default gap
5888
5828
  }),
5889
- '::slotted(p)': addImportantToEachRule({
5890
- ...textSmallStyle,
5891
- margin: 0,
5892
- color: primaryColor,
5893
- ...prefersColorSchemeDarkMediaQuery(theme, {
5894
- color: primaryColorDark,
5895
- }),
5896
- }),
5897
- // TODO: how can we easily re-use getHoverStyle() and getFocusStyle() with ::slotted(a) selector?
5898
- '::slotted(a)': {
5899
- ...addImportantToEachRule({
5829
+ '::slotted': addImportantToEachRule({
5830
+ '&(p)': {
5900
5831
  ...textSmallStyle,
5901
- alignSelf: 'flex-start',
5902
- display: 'block',
5903
- textDecoration: 'none',
5904
- cursor: 'pointer',
5832
+ margin: 0,
5905
5833
  color: primaryColor,
5906
- borderRadius: borderRadiusSmall,
5907
- marginLeft: `-${spacingStaticXSmall}`,
5908
- marginRight: `-${spacingStaticXSmall}`,
5909
- padding: `2px ${spacingStaticXSmall}`,
5910
- transition: `background var(${cssVariableTransitionDuration}, ${motionDurationShort}) ${motionEasingBase}`,
5911
5834
  ...prefersColorSchemeDarkMediaQuery(theme, {
5912
5835
  color: primaryColorDark,
5913
5836
  }),
5914
- }),
5915
- },
5916
- ...hoverMediaQuery({
5917
- '::slotted(a:hover)': addImportantToEachRule({
5837
+ },
5838
+ '&(a)': {
5839
+ ...{
5840
+ ...textSmallStyle,
5841
+ alignSelf: 'flex-start',
5842
+ display: 'block',
5843
+ textDecoration: 'none',
5844
+ cursor: 'pointer',
5845
+ color: primaryColor,
5846
+ borderRadius: borderRadiusSmall,
5847
+ marginLeft: `-${spacingStaticXSmall}`,
5848
+ marginRight: `-${spacingStaticXSmall}`,
5849
+ padding: `2px ${spacingStaticXSmall}`,
5850
+ transition: `background var(${cssVariableTransitionDuration}, ${motionDurationShort}) ${motionEasingBase}`,
5851
+ ...prefersColorSchemeDarkMediaQuery(theme, {
5852
+ color: primaryColorDark,
5853
+ }),
5854
+ },
5855
+ },
5856
+ '&(a[aria-current])': {
5918
5857
  background: hoverColor,
5919
5858
  ...prefersColorSchemeDarkMediaQuery(theme, {
5920
5859
  background: hoverColorDark,
5921
5860
  }),
5861
+ },
5862
+ ...hoverMediaQuery({
5863
+ // TODO: how can we easily re-use getHoverStyle() with ::slotted(a) selector?
5864
+ '&(a:hover)': {
5865
+ background: hoverColor,
5866
+ ...prefersColorSchemeDarkMediaQuery(theme, {
5867
+ background: hoverColorDark,
5868
+ }),
5869
+ },
5922
5870
  }),
5923
- }),
5924
- '::slotted(a[aria-current])': addImportantToEachRule({
5925
- background: hoverColor,
5926
- ...prefersColorSchemeDarkMediaQuery(theme, {
5927
- background: hoverColorDark,
5928
- }),
5929
- }),
5930
- '::slotted(a:focus)': addImportantToEachRule({
5931
- outline: `${borderWidthBase} solid ${focusColor}`,
5932
- outlineOffset: '-2px',
5933
- ...prefersColorSchemeDarkMediaQuery(theme, {
5934
- outlineColor: focusColorDark,
5935
- }),
5936
- }),
5937
- '::slotted(a:focus:not(:focus-visible))': addImportantToEachRule({
5938
- outlineColor: 'transparent',
5871
+ ...getFocusJssStyle(theme, { slotted: 'a', offset: '-2px' }),
5939
5872
  }),
5940
5873
  },
5941
5874
  button: {
@@ -5945,7 +5878,7 @@ const getComponentCss$O = (isSecondaryScrollerVisible, theme) => {
5945
5878
  },
5946
5879
  scroller: {
5947
5880
  position: 'fixed',
5948
- ...getInsetJssStyle(),
5881
+ inset: 0,
5949
5882
  // "cssVariableTransitionDuration" ensures closing animation of secondary scroller is given when whole flyout-navigation gets closed
5950
5883
  // "cssVariableVisibility" ensures secondary scroller is not tabbable when whole flyout-navigation is closed
5951
5884
  ...(isSecondaryScrollerVisible
@@ -6048,7 +5981,6 @@ const getComponentCss$N = (isOpen, position, hasFooter, hasSubFooter, theme) =>
6048
5981
  '--pds-internal-grid-outer-column': `calc(${spacingFluidLarge} - ${gridGap})`,
6049
5982
  '--pds-internal-grid-margin': `calc(${spacingFluidLarge} * -1)`,
6050
5983
  justifyContent: isPositionStart ? 'flex-start' : 'flex-end',
6051
- ...getInsetJssStyle(),
6052
5984
  ...getBackdropJssStyle(isOpen, FLYOUT_Z_INDEX, theme),
6053
5985
  ...colorSchemeStyles,
6054
5986
  ...hostHiddenStyles,
@@ -6385,6 +6317,7 @@ const getComponentCss$I = (name, source, color, size, theme) => {
6385
6317
  const isColorInherit = color === 'inherit';
6386
6318
  const isSizeInherit = size === 'inherit';
6387
6319
  const isDark = isThemeDark(theme);
6320
+ const animationName = `${isDark ? keyFramesDark : keyFramesLight}-${color}`;
6388
6321
  return getCss({
6389
6322
  '@global': {
6390
6323
  ':host': {
@@ -6411,7 +6344,7 @@ const getComponentCss$I = (name, source, color, size, theme) => {
6411
6344
  }, {
6412
6345
  filter: filterMap.dark[color],
6413
6346
  })),
6414
- WebkitAnimation: `${isDark ? keyFramesDark : keyFramesLight}-${color} 1ms`, // needed to enforce repaint in Safari if theme is switched programmatically.
6347
+ WebkitAnimation: `${animationName} 1ms`, // needed to enforce repaint in Safari if theme is switched programmatically
6415
6348
  }),
6416
6349
  ...(isSizeInherit
6417
6350
  ? {
@@ -6430,7 +6363,7 @@ const getComponentCss$I = (name, source, color, size, theme) => {
6430
6363
  }),
6431
6364
  },
6432
6365
  ...(!isColorInherit && {
6433
- [`@keyframes ${isDark ? keyFramesDark : keyFramesLight}-${color}`]: forceRerenderAnimationStyle,
6366
+ [`@keyframes ${animationName}`]: forceRerenderAnimationStyle,
6434
6367
  }),
6435
6368
  },
6436
6369
  });
@@ -6520,8 +6453,6 @@ const getComponentCss$H = (state, hasAction, hasClose, theme) => {
6520
6453
  };
6521
6454
 
6522
6455
  const getComponentCss$G = (icon, iconSource, active, stretch, size, hideLabel, alignLabel, underline, hasSlottedAnchor, theme) => {
6523
- const { focusColor } = getThemedColors(theme);
6524
- const { focusColor: focusColorDark } = getThemedColors('dark');
6525
6456
  return getCss(mergeDeep(getLinkButtonPureStyles(icon, iconSource, active, false, stretch, size, hideLabel, alignLabel, hasSlottedAnchor, theme), {
6526
6457
  root: {
6527
6458
  textDecoration: underline ? 'underline' : 'none',
@@ -6541,31 +6472,19 @@ const getComponentCss$G = (icon, iconSource, active, stretch, size, hideLabel, a
6541
6472
  '&(a)::before': {
6542
6473
  content: '""',
6543
6474
  position: 'fixed',
6544
- top: offsetVertical,
6545
- bottom: offsetVertical,
6475
+ insetBlock: offsetVertical,
6546
6476
  borderRadius: borderRadiusSmall,
6547
6477
  ...buildResponsiveStyles(hideLabel, (hideLabelValue) => ({
6548
- right: hideLabelValue ? offsetVertical : offsetHorizontal,
6549
- left: hideLabelValue ? offsetVertical : offsetHorizontal,
6478
+ insetInline: hideLabelValue ? offsetVertical : offsetHorizontal,
6550
6479
  })),
6551
6480
  },
6552
- '&(a:focus)::before': {
6553
- border: `${borderWidthBase} solid ${focusColor}`,
6554
- ...prefersColorSchemeDarkMediaQuery(theme, {
6555
- borderColor: focusColorDark,
6556
- }),
6557
- },
6558
- '&(a:focus:not(:focus-visible))::before': {
6559
- border: 0,
6560
- },
6481
+ ...getFocusJssStyle(theme, { slotted: 'a', pseudo: true, offset: '-2px' }),
6561
6482
  },
6562
6483
  }),
6563
6484
  }));
6564
6485
  };
6565
6486
 
6566
6487
  const getComponentCss$F = (icon, iconSource, variant, hideLabel, hasSlottedAnchor, theme) => {
6567
- const { focusColor } = getThemedColors(theme);
6568
- const { focusColor: focusColorDark } = getThemedColors('dark');
6569
6488
  const { linkColor } = getHighContrastColors();
6570
6489
  const isPrimary = variant === 'primary';
6571
6490
  return getCss(mergeDeep(getLinkButtonStyles(icon, iconSource, variant, hideLabel, false, hasSlottedAnchor, theme), {
@@ -6598,22 +6517,10 @@ const getComponentCss$F = (icon, iconSource, variant, hideLabel, hasSlottedAncho
6598
6517
  '&(a)::before': {
6599
6518
  content: '""',
6600
6519
  position: 'fixed',
6601
- borderRadius: borderRadiusMedium,
6602
- ...getInsetJssStyle(-6),
6603
- },
6604
- // TODO: combine link-social-styles with link-button-styles and tabs-bar-styles
6605
- '&(a::-moz-focus-inner)': {
6606
- border: 0,
6607
- },
6608
- '&(a:focus)::before': {
6609
- border: `${borderWidthBase} solid ${focusColor}`,
6610
- ...prefersColorSchemeDarkMediaQuery(theme, {
6611
- borderColor: focusColorDark,
6612
- }),
6613
- },
6614
- '&(a:focus:not(:focus-visible))::before': {
6615
- border: 0,
6520
+ inset: '-2px',
6521
+ borderRadius: borderRadiusSmall,
6616
6522
  },
6523
+ ...getFocusJssStyle(theme, { slotted: 'a', pseudo: true }),
6617
6524
  },
6618
6525
  }),
6619
6526
  }));
@@ -6669,7 +6576,7 @@ const getComponentCss$E = (aspectRatio, weight, direction, hasDescription) => {
6669
6576
  'link-overlay': {
6670
6577
  // covers entire tile, used for expanded click-area only
6671
6578
  position: 'fixed',
6672
- ...getInsetJssStyle(),
6579
+ inset: 0,
6673
6580
  },
6674
6581
  });
6675
6582
  };
@@ -6677,7 +6584,7 @@ const getComponentCss$E = (aspectRatio, weight, direction, hasDescription) => {
6677
6584
  const slottedAnchorSelector = `a[slot='${anchorSlot}']`;
6678
6585
  const anchorJssStyle = {
6679
6586
  position: 'absolute',
6680
- ...getInsetJssStyle(),
6587
+ inset: 0,
6681
6588
  zIndex: 1, // necessary to be on top of img
6682
6589
  borderRadius: borderRadiusMedium,
6683
6590
  };
@@ -6690,8 +6597,8 @@ const getMultilineEllipsis = (lineClamp) => {
6690
6597
  };
6691
6598
  };
6692
6599
  const getComponentCss$D = (hasLikeButton, hasSlottedAnchor, aspectRatio, theme) => {
6693
- const { primaryColor, contrastHighColor, backgroundSurfaceColor, focusColor } = getThemedColors(theme);
6694
- const { primaryColor: primaryColorDark, contrastHighColor: contrastHighColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
6600
+ const { primaryColor, contrastHighColor, backgroundSurfaceColor } = getThemedColors(theme);
6601
+ const { primaryColor: primaryColorDark, contrastHighColor: contrastHighColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, } = getThemedColors('dark');
6695
6602
  return getCss({
6696
6603
  '@global': {
6697
6604
  ':host': {
@@ -6712,17 +6619,7 @@ const getComponentCss$D = (hasLikeButton, hasSlottedAnchor, aspectRatio, theme)
6712
6619
  ...anchorJssStyle,
6713
6620
  textIndent: '-999999px', // hide anchor label visually but still usable for a11y (only works in RTL-mode because of `overflow: hidden;` parent)
6714
6621
  },
6715
- // TODO: Refactor getFocusStyles to support slotted selector
6716
- [`&(${slottedAnchorSelector}:focus)`]: {
6717
- outline: `${borderWidthBase} solid ${focusColor}`,
6718
- outlineOffset: '2px',
6719
- ...prefersColorSchemeDarkMediaQuery(theme, {
6720
- outlineColor: focusColorDark,
6721
- }),
6722
- },
6723
- [`&(${slottedAnchorSelector}:focus:not(:focus-visible))`]: {
6724
- outlineColor: 'transparent',
6725
- },
6622
+ ...getFocusJssStyle(theme, { slotted: slottedAnchorSelector }),
6726
6623
  }),
6727
6624
  [`&([slot="${headerSlot}"])`]: {
6728
6625
  display: 'flex',
@@ -6761,7 +6658,7 @@ const getComponentCss$D = (hasLikeButton, hasSlottedAnchor, aspectRatio, theme)
6761
6658
  ...(!hasSlottedAnchor && {
6762
6659
  anchor: {
6763
6660
  ...anchorJssStyle,
6764
- ...getFocusStyle({ borderRadius: 'medium' }),
6661
+ ...getFocusJssStyle(theme),
6765
6662
  },
6766
6663
  }),
6767
6664
  header: {
@@ -6825,7 +6722,7 @@ const getComponentCss$C = (...args) => {
6825
6722
  'link-overlay': {
6826
6723
  // covers entire tile, used for expanded click-area only
6827
6724
  position: 'fixed',
6828
- ...getInsetJssStyle(),
6725
+ inset: 0,
6829
6726
  },
6830
6727
  });
6831
6728
  };
@@ -6856,7 +6753,15 @@ const getComponentCss$B = (size) => {
6856
6753
  a: {
6857
6754
  display: 'block',
6858
6755
  textDecoration: 'none',
6859
- ...focusPseudoJssStyle,
6756
+ outline: 0,
6757
+ '&::before': {
6758
+ // needs to be defined always to have correct custom click area
6759
+ content: '""',
6760
+ position: 'absolute',
6761
+ inset: 0,
6762
+ borderRadius: '1px',
6763
+ },
6764
+ ...getFocusJssStyle('light', { pseudo: true }), // TODO: we need to support theme
6860
6765
  },
6861
6766
  picture: {
6862
6767
  display: 'block',
@@ -6919,7 +6824,7 @@ const getSlottedJssStyle = (marginValue, hasHeader, hasDismissButton) => {
6919
6824
  },
6920
6825
  ...(!hasHeader && {
6921
6826
  [`&(.${stretchToFullModalWidthClassName}:first-child)`]: {
6922
- marginTop: hasDismissButton ? pxToRemWithUnit(-marginValue) : marginPx,
6827
+ marginTop: hasDismissButton ? `${-marginValue / 16}rem` : marginPx,
6923
6828
  },
6924
6829
  }),
6925
6830
  [`&(.${stretchToFullModalWidthClassName}:last-child)`]: {
@@ -6965,7 +6870,7 @@ const getComponentCss$A = (isOpen, isFullscreen, hasDismissButton, hasHeader, ha
6965
6870
  },
6966
6871
  'scroll-container': {
6967
6872
  display: 'flex',
6968
- ...getInsetJssStyle(),
6873
+ inset: 0, // TODO: is this still needed?
6969
6874
  height: '100%',
6970
6875
  overflowY: 'inherit',
6971
6876
  alignItems: 'center',
@@ -6979,10 +6884,12 @@ const getComponentCss$A = (isOpen, isFullscreen, hasDismissButton, hasHeader, ha
6979
6884
  transform: isOpen ? 'translateY(0%)' : 'translateY(25%)',
6980
6885
  opacity: isOpen ? 1 : 0,
6981
6886
  transition: `${getTransition('opacity', duration, easing)}, ${getTransition('transform', duration, easing)}`,
6982
- paddingTop: hasDismissButton ? pxToRemWithUnit(32) : contentPadding, // rem value needed to prevent overlapping of close button and contents in scaling mode
6887
+ paddingTop: hasDismissButton ? '2rem' : contentPadding, // rem value needed to prevent overlapping of close button and contents in scaling mode
6983
6888
  ...(!hasFooter && { paddingBottom: contentPadding }),
6984
6889
  background: backgroundColor,
6985
6890
  outline: isHighContrastMode ? '1px solid transparent' : 0,
6891
+ // TODO: getFocusJssStyle() can't be re-used atm, but as soon as component is refactored to `<dialog />` then no
6892
+ // focus should be necessary at all because focus is auto forwarded to dismiss button.
6986
6893
  // ::after to be above sticky footer without z-index games
6987
6894
  '&:focus::after': {
6988
6895
  content: '""',
@@ -6992,7 +6899,7 @@ const getComponentCss$A = (isOpen, isFullscreen, hasDismissButton, hasHeader, ha
6992
6899
  ...buildResponsiveStyles(isFullscreen, (fullscreenValue) => ({
6993
6900
  borderRadius: fullscreenValue ? 0 : '12px',
6994
6901
  borderColor: fullscreenValue ? primaryColor : darkThemePrimaryColor,
6995
- ...getInsetJssStyle(fullscreenValue ? 0 : -4),
6902
+ inset: fullscreenValue ? 0 : '-4px',
6996
6903
  ...prefersColorSchemeDarkMediaQuery(theme, {
6997
6904
  borderColor: darkThemePrimaryColor,
6998
6905
  }),
@@ -7260,6 +7167,7 @@ const getSlottedTextFieldTextareaSelectStyles = (child, state, isLoading, theme,
7260
7167
  }),
7261
7168
  },
7262
7169
  })),
7170
+ // TODO: getFocusJssStyle() can't be re-used because focus style differs for form elements
7263
7171
  [`::slotted(${child}:focus)`]: {
7264
7172
  borderColor: primaryColor,
7265
7173
  ...prefersColorSchemeDarkMediaQuery(theme, {
@@ -7438,6 +7346,7 @@ const getInputStyles = (isDisabled, direction, isOpen, state, theme) => {
7438
7346
  },
7439
7347
  }),
7440
7348
  ...(!isDisabled && {
7349
+ // TODO: getFocusJssStyle() can't be re-used because focus style differs for form elements
7441
7350
  '&:focus': {
7442
7351
  borderColor: primaryColor,
7443
7352
  ...prefersColorSchemeDarkMediaQuery(theme, {
@@ -7525,8 +7434,8 @@ const disabledCursorStyle = {
7525
7434
  };
7526
7435
  const hiddenStyle = { display: 'none' };
7527
7436
  const getComponentCss$w = (activePage, pageTotal, showLastPage, theme) => {
7528
- const { primaryColor, disabledColor, hoverColor, focusColor } = getThemedColors(theme);
7529
- const { primaryColor: primaryColorDark, disabledColor: disabledColorDark, hoverColor: hoverColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
7437
+ const { primaryColor, disabledColor, hoverColor } = getThemedColors(theme);
7438
+ const { primaryColor: primaryColorDark, disabledColor: disabledColorDark, hoverColor: hoverColorDark, } = getThemedColors('dark');
7530
7439
  return getCss({
7531
7440
  '@global': {
7532
7441
  ':host': {
@@ -7604,9 +7513,9 @@ const getComponentCss$w = (activePage, pageTotal, showLastPage, theme) => {
7604
7513
  whiteSpace: 'nowrap',
7605
7514
  cursor: 'pointer',
7606
7515
  color: primaryColor,
7607
- outline: 0,
7608
7516
  borderRadius: borderRadiusSmall,
7609
7517
  borderColor: 'transparent', // default value is needed for smooth transition
7518
+ outline: 0, // TODO: only relevant for VRT testing with forced states - prevents :focus style
7610
7519
  ...prefersColorSchemeDarkMediaQuery(theme, {
7611
7520
  color: primaryColorDark,
7612
7521
  }),
@@ -7619,16 +7528,6 @@ const getComponentCss$w = (activePage, pageTotal, showLastPage, theme) => {
7619
7528
  }),
7620
7529
  },
7621
7530
  }),
7622
- '&:not(.ellipsis):focus:focus-visible::before': {
7623
- content: '""',
7624
- position: 'absolute',
7625
- ...getInsetJssStyle(-4),
7626
- border: `${borderWidthBase} solid ${focusColor}`,
7627
- borderRadius: borderRadiusMedium,
7628
- ...prefersColorSchemeDarkMediaQuery(theme, {
7629
- borderColor: focusColorDark,
7630
- }),
7631
- },
7632
7531
  '&[aria-current]': {
7633
7532
  ...disabledCursorStyle,
7634
7533
  color: primaryColor,
@@ -7637,7 +7536,6 @@ const getComponentCss$w = (activePage, pageTotal, showLastPage, theme) => {
7637
7536
  color: primaryColorDark,
7638
7537
  borderColor: primaryColorDark,
7639
7538
  }),
7640
- '&:not(.ellipsis):focus::before': getInsetJssStyle(-6), // adjust for missing 2px border
7641
7539
  },
7642
7540
  '&[aria-disabled]': {
7643
7541
  ...disabledCursorStyle,
@@ -7646,6 +7544,8 @@ const getComponentCss$w = (activePage, pageTotal, showLastPage, theme) => {
7646
7544
  color: disabledColorDark,
7647
7545
  }),
7648
7546
  },
7547
+ // TODO :not(.ellipsis) is only needed for VRT states tests to work properly
7548
+ '&:not(.ellipsis)': getFocusJssStyle(theme),
7649
7549
  },
7650
7550
  },
7651
7551
  ellipsis: {
@@ -7745,6 +7645,8 @@ const getComponentCss$v = (hideLabel, state, isDisabled, isLoading, isWithinForm
7745
7645
  ...getFunctionalComponentLabelStyles(isDisabled, hideLabel, theme),
7746
7646
  // .message
7747
7647
  ...getFunctionalComponentStateMessageStyles(theme, state),
7648
+ // .loading
7649
+ ...getFunctionalComponentLoadingMessageStyles(),
7748
7650
  });
7749
7651
  };
7750
7652
 
@@ -7848,8 +7750,8 @@ const getDirectionArrowMap = (theme) => {
7848
7750
  };
7849
7751
  };
7850
7752
  const getComponentCss$u = (direction, isNative, theme) => {
7851
- const { hoverColor, focusColor, backgroundColor, primaryColor, backgroundSurfaceColor } = getThemedColors(theme);
7852
- const { hoverColor: hoverColorDark, focusColor: focusColorDark, primaryColor: primaryColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, } = getThemedColors('dark');
7753
+ const { hoverColor, backgroundColor, primaryColor, backgroundSurfaceColor } = getThemedColors(theme);
7754
+ const { hoverColor: hoverColorDark, primaryColor: primaryColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, } = getThemedColors('dark');
7853
7755
  const shadowColor = 'rgba(0,0,0,0.3)';
7854
7756
  return getCss({
7855
7757
  '@global': {
@@ -7868,18 +7770,17 @@ const getComponentCss$u = (direction, isNative, theme) => {
7868
7770
  },
7869
7771
  button: {
7870
7772
  display: 'block',
7871
- position: 'relative',
7872
7773
  WebkitAppearance: 'none', // iOS safari
7873
7774
  appearance: 'none',
7874
7775
  background: 'transparent',
7875
7776
  border: 0,
7876
7777
  padding: 0,
7877
- outline: 0,
7878
7778
  cursor: 'pointer',
7879
7779
  ...textSmallStyle,
7880
7780
  width: fontLineHeight, // width needed to improve ssr support
7881
7781
  height: fontLineHeight, // height needed to improve ssr support
7882
7782
  borderRadius: '50%',
7783
+ // TODO: we should try to use getHoverStyle()
7883
7784
  ...hoverMediaQuery({
7884
7785
  transition: getTransition('background-color'),
7885
7786
  '&:hover': {
@@ -7890,22 +7791,7 @@ const getComponentCss$u = (direction, isNative, theme) => {
7890
7791
  }),
7891
7792
  },
7892
7793
  }),
7893
- '&::before': {
7894
- content: '""',
7895
- position: 'absolute',
7896
- ...getInsetJssStyle(-2),
7897
- border: `${borderWidthBase} solid transparent`,
7898
- borderRadius: '50%',
7899
- },
7900
- '&:focus::before': {
7901
- borderColor: focusColor,
7902
- ...prefersColorSchemeDarkMediaQuery(theme, {
7903
- borderColor: focusColorDark,
7904
- }),
7905
- },
7906
- '&:focus:not(:focus-visible)::before': {
7907
- borderColor: 'transparent',
7908
- },
7794
+ ...getFocusJssStyle(theme, { offset: 0 }),
7909
7795
  },
7910
7796
  },
7911
7797
  label: getHiddenTextJssStyle(),
@@ -7921,7 +7807,9 @@ const getComponentCss$u = (direction, isNative, theme) => {
7921
7807
  margin: 0,
7922
7808
  padding: 0,
7923
7809
  }
7924
- : getInsetJssStyle(-safeZonePx)),
7810
+ : {
7811
+ inset: `${-safeZonePx}px`,
7812
+ }),
7925
7813
  position: 'absolute',
7926
7814
  zIndex: POPOVER_Z_INDEX,
7927
7815
  filter: `drop-shadow(0 0 16px ${shadowColor})`,
@@ -8007,11 +7895,6 @@ const getComponentCss$t = (hideLabel, state, isDisabled, isLoading, theme) => {
8007
7895
  }),
8008
7896
  },
8009
7897
  }),
8010
- ...(!isDisabled && {
8011
- '&(input:focus)::before': {
8012
- borderRadius: '50%',
8013
- },
8014
- }),
8015
7898
  },
8016
7899
  })),
8017
7900
  },
@@ -8052,6 +7935,8 @@ const getComponentCss$t = (hideLabel, state, isDisabled, isLoading, theme) => {
8052
7935
  ...getFunctionalComponentStateMessageStyles(theme, state, {
8053
7936
  gridColumn: '1/3',
8054
7937
  }),
7938
+ // .loading
7939
+ ...getFunctionalComponentLoadingMessageStyles(),
8055
7940
  });
8056
7941
  };
8057
7942
 
@@ -8077,8 +7962,8 @@ const getGradient = (theme, gradientColorTheme) => {
8077
7962
  };
8078
7963
  const prevNextWrapperWidth = `calc(${fontLineHeight} + 24px)`;
8079
7964
  const getComponentCss$s = (gradientColor, isNextHidden, isPrevHidden, scrollIndicatorPosition, hasScrollbar, theme) => {
8080
- const { backgroundColor, backgroundSurfaceColor, focusColor, hoverColor } = getThemedColors(theme);
8081
- const { backgroundColor: backgroundColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, focusColor: focusColorDark, hoverColor: hoverColorDark, } = getThemedColors('dark');
7965
+ const { backgroundColor, backgroundSurfaceColor, hoverColor } = getThemedColors(theme);
7966
+ const { backgroundColor: backgroundColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, hoverColor: hoverColorDark, } = getThemedColors('dark');
8082
7967
  const backgroundColorLight = {
8083
7968
  'background-base': backgroundColor,
8084
7969
  'background-surface': backgroundSurfaceColor,
@@ -8171,24 +8056,8 @@ const getComponentCss$s = (gradientColor, isNextHidden, isPrevHidden, scrollIndi
8171
8056
  minHeight: '28px',
8172
8057
  minWidth: '100%',
8173
8058
  verticalAlign: 'top',
8174
- outline: 0,
8175
- '&::before': {
8176
- content: '""',
8177
- position: 'absolute',
8178
- ...getInsetJssStyle(-4),
8179
- border: `${borderWidthBase} solid transparent`,
8180
- borderRadius: borderRadiusSmall,
8181
- pointerEvents: 'none', // Needed to enable clicks inside of slot
8182
- },
8183
- '&:focus::before': {
8184
- borderColor: focusColor,
8185
- ...prefersColorSchemeDarkMediaQuery(theme, {
8186
- borderColor: focusColorDark,
8187
- }),
8188
- },
8189
- '&:focus:not(:focus-visible)::before': {
8190
- borderColor: 'transparent',
8191
- },
8059
+ borderRadius: borderRadiusSmall,
8060
+ ...getFocusJssStyle(theme),
8192
8061
  },
8193
8062
  trigger: {
8194
8063
  position: 'absolute',
@@ -8246,8 +8115,8 @@ const getComponentCss$s = (gradientColor, isNextHidden, isPrevHidden, scrollIndi
8246
8115
  };
8247
8116
 
8248
8117
  const ITEM_PADDING = '17px';
8249
- const ICON_SIZE = pxToRemWithUnit(24);
8250
- const ICON_MARGIN = pxToRemWithUnit(4);
8118
+ const ICON_SIZE = '1.5rem';
8119
+ const ICON_MARGIN = '.25rem';
8251
8120
  const getColors$2 = (isDisabled, isSelected, theme) => {
8252
8121
  const { primaryColor, contrastMediumColor, disabledColor, contrastLowColor } = getThemedColors(theme);
8253
8122
  const { highlightColor } = getHighContrastColors();
@@ -8260,8 +8129,6 @@ const getColors$2 = (isDisabled, isSelected, theme) => {
8260
8129
  };
8261
8130
  const getItemPadding = (hasIconAndSlottedContent) => hasIconAndSlottedContent ? `13px ${ITEM_PADDING} 13px 13px` : `13px ${ITEM_PADDING}`;
8262
8131
  const getComponentCss$r = (isDisabled, isSelected, hasIcon, hasSlottedContent, theme) => {
8263
- const { focusColor } = getThemedColors(theme);
8264
- const { focusColor: focusColorDark } = getThemedColors('dark');
8265
8132
  const { buttonColor, labelColor, borderColor, hoverBorderColor } = getColors$2(isDisabled, isSelected, theme);
8266
8133
  const { buttonColor: buttonColorDark, labelColor: labelColorDark, borderColor: borderColorDark, hoverBorderColor: hoverBorderColorDark, } = getColors$2(isDisabled, isSelected, 'dark');
8267
8134
  return getCss({
@@ -8283,30 +8150,9 @@ const getComponentCss$r = (isDisabled, isSelected, hasIcon, hasSlottedContent, t
8283
8150
  margin: 0, // Removes default button margin on safari 15
8284
8151
  border: `${borderWidthBase} solid ${borderColor}`,
8285
8152
  borderRadius: borderRadiusSmall,
8286
- outline: 0,
8287
8153
  background: 'transparent',
8288
8154
  color: buttonColor,
8289
8155
  ...textSmallStyle,
8290
- ...prefersColorSchemeDarkMediaQuery(theme, {
8291
- borderColor: borderColorDark,
8292
- color: buttonColorDark,
8293
- }),
8294
- '&::before': {
8295
- content: '""',
8296
- position: 'absolute',
8297
- ...getInsetJssStyle(-5),
8298
- border: `${borderWidthBase} solid transparent`,
8299
- borderRadius: '7px',
8300
- },
8301
- '&:focus::before': {
8302
- borderColor: focusColor,
8303
- ...prefersColorSchemeDarkMediaQuery(theme, {
8304
- borderColor: focusColorDark,
8305
- }),
8306
- },
8307
- '&:focus:not(:focus-visible)::before': {
8308
- borderColor: 'transparent',
8309
- },
8310
8156
  ...(isDisabled
8311
8157
  ? {
8312
8158
  cursor: 'not-allowed',
@@ -8324,6 +8170,11 @@ const getComponentCss$r = (isDisabled, isSelected, hasIcon, hasSlottedContent, t
8324
8170
  },
8325
8171
  })),
8326
8172
  }),
8173
+ ...prefersColorSchemeDarkMediaQuery(theme, {
8174
+ borderColor: borderColorDark,
8175
+ color: buttonColorDark,
8176
+ }),
8177
+ ...getFocusJssStyle(theme),
8327
8178
  },
8328
8179
  // label
8329
8180
  span: {
@@ -8382,7 +8233,7 @@ const getButtonStyles = (direction, isOpen, state, theme) => {
8382
8233
  // TODO: extract generic default button/anchor reset style
8383
8234
  button: {
8384
8235
  position: 'absolute',
8385
- ...getInsetJssStyle(),
8236
+ inset: 0,
8386
8237
  width: '100%', // fixes Firefox positioning issue
8387
8238
  height: '100%', // fixes Firefox positioning issue
8388
8239
  margin: 0,
@@ -8396,6 +8247,7 @@ const getButtonStyles = (direction, isOpen, state, theme) => {
8396
8247
  ...prefersColorSchemeDarkMediaQuery(theme, {
8397
8248
  borderColor: isOpen ? primaryColorDark : formStateColorDark || contrastMediumColorDark,
8398
8249
  }),
8250
+ // TODO: getFocusJssStyle() can't be re-used because focus style differs for form elements
8399
8251
  '&:focus, &:focus ~ ul': {
8400
8252
  borderColor: primaryColor,
8401
8253
  ...prefersColorSchemeDarkMediaQuery(theme, {
@@ -8444,7 +8296,7 @@ const getFilterStyles = (direction, isOpen, state, disabled, theme) => {
8444
8296
  input: {
8445
8297
  display: 'block',
8446
8298
  position: 'absolute',
8447
- ...getInsetJssStyle(2), // 2 = borderWidthBase
8299
+ inset: borderWidthBase,
8448
8300
  width: 'calc(100% - 4px)', // fixes Firefox positioning issue, 4px = 2 x borderWidthBase
8449
8301
  height: 'calc(100% - 4px)', // fixes Firefox positioning issue, 4px = 2 x borderWidthBase
8450
8302
  zIndex: 1,
@@ -8513,7 +8365,7 @@ const getFilterStyles = (direction, isOpen, state, disabled, theme) => {
8513
8365
  '&+span': {
8514
8366
  // for focus outline and clicking arrow since input ends left of the icon
8515
8367
  position: 'absolute',
8516
- ...getInsetJssStyle(),
8368
+ inset: 0,
8517
8369
  transition: getTransition('border-color'),
8518
8370
  pointerEvents: 'all',
8519
8371
  cursor: disabled ? 'not-allowed' : 'pointer',
@@ -8842,8 +8694,8 @@ const getSVGPath = (stepCount, numberedCircleColors, isStateCurrent) => {
8842
8694
  return svgNumberedCirclePaths[stepCount];
8843
8695
  };
8844
8696
  const getComponentCss$m = (state, disabled, theme) => {
8845
- const { primaryColor, hoverColor, disabledColor, focusColor } = getThemedColors(theme);
8846
- const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, disabledColor: disabledColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
8697
+ const { primaryColor, hoverColor, disabledColor } = getThemedColors(theme);
8698
+ const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
8847
8699
  const isStateCurrent = state === 'current';
8848
8700
  const isStateCurrentOrUndefined = !state || isStateCurrent;
8849
8701
  const isDisabled = !state || disabled;
@@ -8885,7 +8737,6 @@ const getComponentCss$m = (state, disabled, theme) => {
8885
8737
  margin: 0, // Removes default button margin on safari 15
8886
8738
  background: 0,
8887
8739
  border: 0,
8888
- outline: 0,
8889
8740
  ...textSmallStyle,
8890
8741
  fontSize: 'inherit',
8891
8742
  width: 'max-content',
@@ -8921,19 +8772,7 @@ const getComponentCss$m = (state, disabled, theme) => {
8921
8772
  width: fontLineHeight,
8922
8773
  },
8923
8774
  }),
8924
- '&:focus::after': {
8925
- content: '""',
8926
- position: 'absolute',
8927
- ...getInsetJssStyle(),
8928
- border: `${borderWidthBase} solid ${focusColor}`,
8929
- ...prefersColorSchemeDarkMediaQuery(theme, {
8930
- borderColor: focusColorDark,
8931
- }),
8932
- borderRadius: borderRadiusSmall,
8933
- },
8934
- '&:focus:not(:focus-visible)::after': {
8935
- borderColor: 'transparent',
8936
- },
8775
+ ...getFocusJssStyle(theme, { offset: '-2px' }),
8937
8776
  },
8938
8777
  },
8939
8778
  ...(!isStateCurrentOrUndefined && {
@@ -8996,128 +8835,105 @@ const getColors$1 = (checked, disabled, loading, theme) => {
8996
8835
  const getComponentCss$k = (alignLabel, hideLabel, stretch, checked, disabled, loading, theme) => {
8997
8836
  const { buttonBorderColor, buttonBorderColorHover, buttonBackgroundColor, buttonBackgroundColorHover, toggleBackgroundColor, toggleBackgroundColorHover, textColor, } = getColors$1(checked, disabled, loading, theme);
8998
8837
  const { buttonBorderColor: buttonBorderColorDark, buttonBorderColorHover: buttonBorderColorHoverDark, buttonBackgroundColor: buttonBackgroundColorDark, buttonBackgroundColorHover: buttonBackgroundColorHoverDark, toggleBackgroundColor: toggleBackgroundColorDark, toggleBackgroundColorHover: toggleBackgroundColorHoverDark, textColor: textColorDark, } = getColors$1(checked, disabled, loading, 'dark');
8999
- const { focusColor } = getThemedColors(theme);
9000
- const { focusColor: focusColorDark } = getThemedColors('dark');
9001
8838
  return getCss({
9002
8839
  '@global': {
9003
8840
  ':host': {
9004
8841
  ...buildResponsiveStyles(stretch, (stretchValue) => ({
9005
- display: stretchValue ? 'block' : 'inline-block',
8842
+ display: stretchValue ? 'flex' : 'inline-flex',
9006
8843
  })),
9007
8844
  ...addImportantToEachRule({
9008
8845
  outline: 0, // custom element is able to delegate the focus
8846
+ gap: spacingStaticSmall,
9009
8847
  ...colorSchemeStyles,
9010
8848
  ...hostHiddenStyles,
9011
8849
  ...buildResponsiveStyles(stretch, (stretchValue) => ({
8850
+ justifyContent: stretchValue ? 'space-between' : 'flex-start',
9012
8851
  width: stretchValue ? '100%' : 'auto', // prevents adjusting its size when used as flex or grid child
9013
8852
  ...(!stretchValue && { verticalAlign: 'top' }),
9014
8853
  })),
9015
8854
  }),
9016
8855
  },
9017
- },
9018
- root: {
9019
- display: 'flex',
9020
- alignItems: 'flex-start',
9021
- gap: spacingStaticSmall,
9022
- width: '100%',
9023
- padding: 0,
9024
- margin: 0, // Removes default button margin on safari 15
9025
- outline: 0,
9026
- border: 0,
9027
- textAlign: 'start',
9028
- background: 'transparent',
9029
- WebkitAppearance: 'none', // iOS safari
9030
- appearance: 'none',
9031
- cursor: isDisabledOrLoading(disabled, loading) ? 'auto' : 'pointer',
9032
- ...buildResponsiveStyles(stretch, (stretchValue) => ({
9033
- justifyContent: stretchValue ? 'space-between' : 'flex-start',
9034
- })),
9035
- ...(!isDisabledOrLoading(disabled, loading) &&
9036
- hoverMediaQuery({
9037
- '&:hover .switch': {
9038
- borderColor: buttonBorderColorHover,
9039
- backgroundColor: buttonBackgroundColorHover,
9040
- ...prefersColorSchemeDarkMediaQuery(theme, {
9041
- borderColor: buttonBorderColorHoverDark,
9042
- backgroundColor: buttonBackgroundColorHoverDark,
9043
- }),
9044
- '& .toggle': {
9045
- backgroundColor: toggleBackgroundColorHover,
8856
+ button: {
8857
+ display: 'flex',
8858
+ alignItems: 'center',
8859
+ flexShrink: 0,
8860
+ width: '48px',
8861
+ height: '28px',
8862
+ boxSizing: 'border-box',
8863
+ border: `${borderWidthBase} solid ${buttonBorderColor}`,
8864
+ borderRadius: '14px',
8865
+ backgroundColor: buttonBackgroundColor,
8866
+ cursor: isDisabledOrLoading(disabled, loading) ? 'not-allowed' : 'pointer',
8867
+ transition: `${getTransition('background-color')}, ${getTransition('border-color')}, ${getTransition('color')}`,
8868
+ ...prefersColorSchemeDarkMediaQuery(theme, {
8869
+ borderColor: buttonBorderColorDark,
8870
+ backgroundColor: buttonBackgroundColorDark,
8871
+ }),
8872
+ margin: 0, // Removes default button margin on safari 15
8873
+ padding: 0,
8874
+ WebkitAppearance: 'none', // iOS safari
8875
+ appearance: 'none',
8876
+ ...(!isDisabledOrLoading(disabled, loading) &&
8877
+ hoverMediaQuery({
8878
+ '&:hover': {
8879
+ borderColor: buttonBorderColorHover,
8880
+ backgroundColor: buttonBackgroundColorHover,
9046
8881
  ...prefersColorSchemeDarkMediaQuery(theme, {
9047
- backgroundColor: toggleBackgroundColorHoverDark,
8882
+ borderColor: buttonBorderColorHoverDark,
8883
+ backgroundColor: buttonBackgroundColorHoverDark,
9048
8884
  }),
8885
+ '& .toggle': {
8886
+ backgroundColor: toggleBackgroundColorHover,
8887
+ ...prefersColorSchemeDarkMediaQuery(theme, {
8888
+ backgroundColor: toggleBackgroundColorHoverDark,
8889
+ }),
8890
+ },
9049
8891
  },
9050
- },
9051
- })),
9052
- '&:focus .switch::before': {
9053
- content: '""',
9054
- position: 'absolute',
9055
- ...getInsetJssStyle(-6),
9056
- border: `${borderWidthBase} solid ${focusColor}`,
8892
+ })),
8893
+ ...getFocusJssStyle(theme),
8894
+ },
8895
+ label: {
8896
+ ...textSmallStyle,
8897
+ minWidth: 0, // prevents flex child to overflow max available parent size
8898
+ minHeight: 0, // prevents flex child to overflow max available parent size
8899
+ cursor: isDisabledOrLoading(disabled, loading) ? 'not-allowed' : 'pointer',
8900
+ color: textColor,
9057
8901
  ...prefersColorSchemeDarkMediaQuery(theme, {
9058
- borderColor: focusColorDark,
8902
+ color: textColorDark,
9059
8903
  }),
9060
- borderRadius: '18px',
9061
- },
9062
- '&:not(:focus-visible) .switch::before': {
9063
- borderColor: 'transparent',
8904
+ ...mergeDeep(buildResponsiveStyles(alignLabel, (alignLabelValue) => ({
8905
+ // TODO: we should remove 'left' here and map the value in the component class already to 'start' but might be difficult due to breakpoint customizable prop value
8906
+ order: alignLabelValue === 'left' || alignLabelValue === 'start' ? -1 : 0,
8907
+ })), buildResponsiveStyles(hideLabel, (isHidden) => getHiddenTextJssStyle(isHidden, {
8908
+ paddingTop: '2px', // currently, line-height of textSmall doesn't match height of switch
8909
+ }))),
9064
8910
  },
9065
8911
  },
9066
- switch: {
9067
- position: 'relative',
9068
- width: '48px',
9069
- height: '28px',
9070
- flexShrink: 0,
9071
- boxSizing: 'border-box',
9072
- border: `${borderWidthBase} solid ${buttonBorderColor}`,
9073
- borderRadius: '14px',
9074
- backgroundColor: buttonBackgroundColor,
9075
- cursor: isDisabledOrLoading(disabled, loading) ? 'not-allowed' : 'pointer',
9076
- transition: `${getTransition('background-color')}, ${getTransition('border-color')}, ${getTransition('color')}`,
9077
- ...prefersColorSchemeDarkMediaQuery(theme, {
9078
- borderColor: buttonBorderColorDark,
9079
- backgroundColor: buttonBackgroundColorDark,
9080
- }),
9081
- },
9082
8912
  toggle: {
9083
- position: 'absolute',
9084
- top: '2px',
9085
- left: '2px',
8913
+ display: 'flex',
8914
+ alignItems: 'center',
8915
+ justifyContent: 'center',
9086
8916
  width: '20px',
9087
8917
  height: '20px',
9088
- display: 'block',
9089
8918
  borderRadius: '50%',
9090
8919
  backgroundColor: toggleBackgroundColor,
8920
+ transition: `${getTransition('background-color')}, ${getTransition('transform')}`,
8921
+ transform: `translate3d(${checked ? '22px' : '2px'}, 0, 0)`,
8922
+ '&:dir(rtl)': {
8923
+ transform: `translate3d(${checked ? '-22px' : '-2px'}, 0, 0)`,
8924
+ },
9091
8925
  ...prefersColorSchemeDarkMediaQuery(theme, {
9092
8926
  backgroundColor: toggleBackgroundColorDark,
9093
8927
  }),
9094
- transform: `translate3d(${checked ? '20px' : '0'}, 0, 0)`,
9095
- transition: `${getTransition('background-color')}, ${getTransition('transform')}`,
9096
8928
  },
9097
8929
  ...(loading && {
9098
8930
  spinner: {
9099
- position: 'absolute',
9100
- top: '-4px',
9101
- left: '-4px',
9102
8931
  width: '28px',
9103
8932
  height: '28px',
9104
8933
  },
9105
8934
  }),
9106
- label: {
9107
- ...textSmallStyle,
9108
- minWidth: 0, // prevents flex child to overflow max available parent size
9109
- minHeight: 0, // prevents flex child to overflow max available parent size
9110
- color: textColor,
9111
- ...prefersColorSchemeDarkMediaQuery(theme, {
9112
- color: textColorDark,
9113
- }),
9114
- ...mergeDeep(buildResponsiveStyles(alignLabel, (alignLabelValue) => ({
9115
- // TODO: we should remove 'left' here and map the value in the component class already to 'start' but might be difficult due to breakpoint customizable prop value
9116
- order: alignLabelValue === 'left' || alignLabelValue === 'start' ? -1 : 0,
9117
- })), buildResponsiveStyles(hideLabel, (isHidden) => getHiddenTextJssStyle(isHidden, {
9118
- paddingTop: '2px', // currently, line-height of textSmall doesn't match height of switch
9119
- }))),
9120
- },
8935
+ // .loading
8936
+ ...getFunctionalComponentLoadingMessageStyles(),
9121
8937
  });
9122
8938
  };
9123
8939
 
@@ -9204,7 +9020,7 @@ const getComponentCss$h = (theme) => {
9204
9020
  });
9205
9021
  };
9206
9022
 
9207
- const { hoverColor, focusColor } = getThemedColors('light'); // hover color and focus color are the same for light and dark
9023
+ const { hoverColor } = getThemedColors('light'); // hover color and focus color are the same for light and dark
9208
9024
  const buttonBeforeOffsetVertical = '-2px';
9209
9025
  const buttonBeforeOffsetHorizontal = '-4px';
9210
9026
  const getComponentCss$g = (active, direction, hideLabel, multiline) => {
@@ -9231,7 +9047,6 @@ const getComponentCss$g = (active, direction, hideLabel, multiline) => {
9231
9047
  padding: 0,
9232
9048
  font: 'inherit',
9233
9049
  color: 'inherit',
9234
- outline: 0,
9235
9050
  alignItems: 'flex-end',
9236
9051
  WebkitAppearance: 'none', // iOS safari
9237
9052
  appearance: 'none',
@@ -9240,19 +9055,17 @@ const getComponentCss$g = (active, direction, hideLabel, multiline) => {
9240
9055
  border: 0,
9241
9056
  zIndex: 0,
9242
9057
  cursor: 'pointer',
9058
+ // TODO: re-think if ::before is still needed
9243
9059
  '&::before': {
9244
9060
  content: '""',
9245
9061
  position: 'absolute',
9246
- top: buttonBeforeOffsetVertical,
9247
- bottom: buttonBeforeOffsetVertical,
9248
- right: buttonBeforeOffsetHorizontal,
9249
- left: buttonBeforeOffsetHorizontal,
9062
+ inset: `${buttonBeforeOffsetVertical} ${buttonBeforeOffsetHorizontal}`,
9250
9063
  borderRadius: borderRadiusSmall,
9251
9064
  zIndex: -1, // needed so that text behind element is selectable and/or visible
9252
9065
  transition: getTransition('background-color'),
9253
9066
  },
9254
9067
  ...hoverMediaQuery({
9255
- '&:hover, &:focus': {
9068
+ '&:hover, &:focus-visible': {
9256
9069
  '& .icon': {
9257
9070
  opacity: 1,
9258
9071
  },
@@ -9262,12 +9075,8 @@ const getComponentCss$g = (active, direction, hideLabel, multiline) => {
9262
9075
  backgroundColor: hoverColor,
9263
9076
  },
9264
9077
  }),
9265
- '&:focus::before': {
9266
- border: `${borderWidthBase} solid ${focusColor}`,
9267
- },
9268
- '&:not(:focus-visible)::before': {
9269
- border: 0,
9270
- },
9078
+ // TODO: to be future proof, we need to pass theme parameter
9079
+ ...getFocusJssStyle('light', { pseudo: true, offset: '-2px' }),
9271
9080
  },
9272
9081
  }
9273
9082
  : hideLabel && {
@@ -9343,8 +9152,8 @@ const scrollerAnimatedCssClass = 'scroller--animated';
9343
9152
  const targetSelectors = ['a', 'button'];
9344
9153
  const transformSelector = (selector) => targetSelectors.map((tag) => selector.replace(/\[role]/g, tag)).join();
9345
9154
  const getComponentCss$c = (size, weight, theme) => {
9346
- const { primaryColor, hoverColor, focusColor } = getThemedColors(theme);
9347
- const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
9155
+ const { primaryColor, hoverColor } = getThemedColors(theme);
9156
+ const { primaryColor: primaryColorDark, hoverColor: hoverColorDark } = getThemedColors('dark');
9348
9157
  const barJssStyle = {
9349
9158
  position: 'absolute',
9350
9159
  height: '2px',
@@ -9371,6 +9180,12 @@ const getComponentCss$c = (size, weight, theme) => {
9371
9180
  }),
9372
9181
  },
9373
9182
  ...addImportantToEachRule({
9183
+ '::slotted': {
9184
+ // TODO: produces duplicated css code in SSR context, we should try to make use of multiple selector like
9185
+ // `::slotted(:is(a,button))`.
9186
+ ...getFocusJssStyle(theme, { slotted: 'a', offset: '1px' }),
9187
+ ...getFocusJssStyle(theme, { slotted: 'button', offset: '1px' }),
9188
+ },
9374
9189
  // would be nice to use shared selector like '::slotted([role])'
9375
9190
  // but this doesn't work reliably when rendering in browser
9376
9191
  [transformSelector('::slotted([role])')]: {
@@ -9379,6 +9194,7 @@ const getComponentCss$c = (size, weight, theme) => {
9379
9194
  position: 'relative',
9380
9195
  margin: '0 0 4px 0',
9381
9196
  verticalAlign: 'top',
9197
+ // TODO: can we use `all: 'inherit'` instead?
9382
9198
  fontFamily: 'inherit',
9383
9199
  fontStyle: 'inherit',
9384
9200
  fontVariant: 'inherit',
@@ -9432,13 +9248,6 @@ const getComponentCss$c = (size, weight, theme) => {
9432
9248
  bottom: isHighContrastMode ? '-4px' : '-6px',
9433
9249
  visibility: 'inherit',
9434
9250
  },
9435
- // TODO: combine link-social-styles with link-button-styles and tabs-bar-styles
9436
- [transformSelector('::slotted([role]:focus:focus-visible)::before')]: {
9437
- border: `${borderWidthBase} solid ${focusColor}`,
9438
- ...prefersColorSchemeDarkMediaQuery(theme, {
9439
- borderColor: focusColorDark,
9440
- }),
9441
- },
9442
9251
  [transformSelector('::slotted([role]:not(:last-child))')]: {
9443
9252
  marginInlineEnd: spacingStaticMedium,
9444
9253
  },
@@ -9474,30 +9283,20 @@ const getComponentCss$c = (size, weight, theme) => {
9474
9283
  };
9475
9284
 
9476
9285
  const getComponentCss$b = (theme) => {
9477
- const { primaryColor, focusColor } = getThemedColors(theme);
9478
- const { primaryColor: primaryColorDark, focusColor: focusColorDark } = getThemedColors('dark');
9286
+ const { primaryColor } = getThemedColors(theme);
9287
+ const { primaryColor: primaryColorDark } = getThemedColors('dark');
9479
9288
  return getCss({
9480
9289
  '@global': {
9481
9290
  ':host': {
9482
9291
  display: 'block',
9483
9292
  ...addImportantToEachRule({
9484
- position: 'relative',
9485
9293
  color: primaryColor, // enables color inheritance for e.g. slotted anchor
9486
- outline: 0,
9294
+ borderRadius: '2px',
9487
9295
  ...hostHiddenStyles,
9488
9296
  ...prefersColorSchemeDarkMediaQuery(theme, {
9489
9297
  color: primaryColorDark,
9490
9298
  }),
9491
- '&(:focus:focus-visible)::before': {
9492
- content: '""',
9493
- position: 'absolute',
9494
- ...getInsetJssStyle(-4),
9495
- border: `${borderWidthBase} solid ${focusColor}`,
9496
- borderRadius: borderRadiusSmall,
9497
- ...prefersColorSchemeDarkMediaQuery(theme, {
9498
- borderColor: focusColorDark,
9499
- }),
9500
- },
9299
+ ...getFocusJssStyle(theme, { slotted: true }),
9501
9300
  }),
9502
9301
  },
9503
9302
  },
@@ -9521,20 +9320,6 @@ const getComponentCss$a = () => {
9521
9320
  });
9522
9321
  };
9523
9322
 
9524
- const getTagFocusJssStyle = (themedColors) => {
9525
- return {
9526
- '&:focus::before': {
9527
- content: '""',
9528
- position: 'absolute',
9529
- ...getInsetJssStyle(-4),
9530
- border: `${borderWidthBase} solid ${themedColors.focusColor}`,
9531
- borderRadius: borderRadiusMedium,
9532
- },
9533
- '&:focus:not(:focus-visible)::before': {
9534
- borderColor: 'transparent',
9535
- },
9536
- };
9537
- };
9538
9323
  const getThemedBackgroundColor = (tagColor, themedColors) => {
9539
9324
  const colorMap = {
9540
9325
  'background-base': themedColors.backgroundColor,
@@ -9581,7 +9366,10 @@ const getComponentCss$9 = (color, hasLabel, theme) => {
9581
9366
  color: primaryColor,
9582
9367
  textAlign: 'start',
9583
9368
  ...textSmallStyle,
9584
- outline: isHighContrastMode ? '1px solid transparent' : 0,
9369
+ ...(isHighContrastMode && {
9370
+ // TODO: using border would increase the dimension but using outline interferes with the focus style
9371
+ outline: '1px solid transparent',
9372
+ }),
9585
9373
  ...prefersColorSchemeDarkMediaQuery(theme, {
9586
9374
  background: backgroundColorDark,
9587
9375
  color: primaryColorDark,
@@ -9594,7 +9382,7 @@ const getComponentCss$9 = (color, hasLabel, theme) => {
9594
9382
  }),
9595
9383
  },
9596
9384
  }),
9597
- ...getTagFocusJssStyle(themedColors),
9385
+ ...getFocusJssStyle(theme),
9598
9386
  },
9599
9387
  },
9600
9388
  ...(hasLabel && {
@@ -9637,7 +9425,6 @@ const getColors = (themedColors, tagColor, theme) => {
9637
9425
  const { primaryColor } = tagColor === 'primary' ? getInvertedThemedColors(theme) : themedColors;
9638
9426
  return {
9639
9427
  primaryColor,
9640
- focusColor: themedColors.focusColor,
9641
9428
  backgroundColor: getThemedBackgroundColor(tagColor, themedColors),
9642
9429
  backgroundHoverColor: getThemedBackgroundHoverColor(tagColor, themedColors, theme),
9643
9430
  };
@@ -9700,11 +9487,14 @@ const getComponentCss$8 = (tagColor, isFocusable, theme) => {
9700
9487
  border: 0,
9701
9488
  textAlign: 'start',
9702
9489
  },
9703
- // Transform selectors of getTagFocusJssStyle() to fit the ::slotted syntax
9704
- ...Object.entries(getTagFocusJssStyle(themedColors)).reduce((result, [key, value]) => {
9705
- result[key.replace(/^&([a-z:\-()]*)(::[a-z\-]+)$/, '&(a$1)$2, &(button$1)$2')] = value;
9706
- return result;
9707
- }, {}),
9490
+ '&(a)::before,&(button)::before': {
9491
+ content: '""',
9492
+ position: 'absolute',
9493
+ inset: 0,
9494
+ borderRadius: '4px',
9495
+ },
9496
+ ...getFocusJssStyle(theme, { slotted: 'a', pseudo: true }),
9497
+ ...getFocusJssStyle(theme, { slotted: 'button', pseudo: true }),
9708
9498
  '&(br)': {
9709
9499
  display: 'none',
9710
9500
  },
@@ -10081,7 +9871,14 @@ const getComponentCss = (size, theme) => {
10081
9871
  },
10082
9872
  a: {
10083
9873
  textDecoration: 'none',
10084
- ...focusPseudoJssStyle,
9874
+ '&::before': {
9875
+ // needs to be defined always to have correct custom click area
9876
+ content: '""',
9877
+ position: 'absolute',
9878
+ inset: 0,
9879
+ borderRadius: '1px',
9880
+ },
9881
+ ...getFocusJssStyle('light', { pseudo: true }), // TODO: we need to support theme
10085
9882
  },
10086
9883
  svg: isHighContrastMode
10087
9884
  ? {
@@ -10097,4 +9894,4 @@ const getComponentCss = (size, theme) => {
10097
9894
  });
10098
9895
  };
10099
9896
 
10100
- export { getComponentCss$13 as getAccordionCss, getComponentCss$12 as getBannerCss, getComponentCss$_ as getButtonCss, getComponentCss$11 as getButtonGroupCss, getComponentCss$10 as getButtonPureCss, getComponentCss$$ as getButtonTileCss, getComponentCss$Z as getCarouselCss, getComponentCss$Y as getCheckboxWrapperCss, getComponentCss$X as getContentWrapperCss, getComponentCss$W as getCrestCss, getComponentCss$V as getDisplayCss, getComponentCss$U as getDividerCss, getComponentCss$S as getFieldsetCss, getComponentCss$T as getFieldsetWrapperCss, getComponentCss$Q as getFlexCss, getComponentCss$R as getFlexItemCss, getComponentCss$N as getFlyoutCss, getComponentCss$P as getFlyoutNavigationCss, getComponentCss$O as getFlyoutNavigationItemCss, getFunctionalComponentLabelStyles, getFunctionalComponentRequiredStyles, getFunctionalComponentStateMessageStyles, getComponentCss$L as getGridCss, getComponentCss$M as getGridItemCss, getComponentCss$K as getHeadingCss, getComponentCss$J as getHeadlineCss, getComponentCss$I as getIconCss, getComponentCss$H as getInlineNotificationCss, getComponentCss$F as getLinkCss, getComponentCss$G as getLinkPureCss, getComponentCss$F as getLinkSocialCss, getComponentCss$C as getLinkTileCss, getComponentCss$E as getLinkTileModelSignatureCss, getComponentCss$D as getLinkTileProductCss, getComponentCss$B as getMarqueCss, getComponentCss$A as getModalCss, getComponentCss$z as getModelSignatureCss, getComponentCss$x as getMultiSelectCss, getComponentCss$y as getMultiSelectOptionCss, getComponentCss$w as getPaginationCss, getComponentCss$v as getPinCodeCss, getComponentCss$u as getPopoverCss, getComponentCss$t as getRadioButtonWrapperCss, getComponentCss$s as getScrollerCss, getComponentCss$q as getSegmentedControlCss, getComponentCss$r as getSegmentedControlItemCss, getComponentCss$o as getSelectWrapperCss, getComponentCss$p as getSelectWrapperDropdownCss, getComponentCss$n as getSpinnerCss, getComponentCss$l as getStepperHorizontalCss, getComponentCss$m as getStepperHorizontalItemCss, getComponentCss$k as getSwitchCss, getComponentCss$j as getTableBodyCss, getComponentCss$i as getTableCellCss, getComponentCss$h as getTableCss, getComponentCss$g as getTableHeadCellCss, getComponentCss$e as getTableHeadCss, getComponentCss$f as getTableHeadRowCss, getComponentCss$d as getTableRowCss, getComponentCss$c as getTabsBarCss, getComponentCss$a as getTabsCss, getComponentCss$b as getTabsItemCss, getComponentCss$8 as getTagCss, getComponentCss$9 as getTagDismissibleCss, getComponentCss$4 as getTextCss, getComponentCss$7 as getTextFieldWrapperCss, getComponentCss$6 as getTextListCss, getComponentCss$5 as getTextListItemCss, getComponentCss$3 as getTextareaWrapperCss, getComponentCss$1 as getToastCss, getComponentCss as getWordmarkCss };
9897
+ export { getComponentCss$13 as getAccordionCss, getComponentCss$12 as getBannerCss, getComponentCss$_ as getButtonCss, getComponentCss$11 as getButtonGroupCss, getComponentCss$10 as getButtonPureCss, getComponentCss$$ as getButtonTileCss, getComponentCss$Z as getCarouselCss, getComponentCss$Y as getCheckboxWrapperCss, getComponentCss$X as getContentWrapperCss, getComponentCss$W as getCrestCss, getComponentCss$V as getDisplayCss, getComponentCss$U as getDividerCss, getComponentCss$S as getFieldsetCss, getComponentCss$T as getFieldsetWrapperCss, getComponentCss$Q as getFlexCss, getComponentCss$R as getFlexItemCss, getComponentCss$N as getFlyoutCss, getComponentCss$P as getFlyoutNavigationCss, getComponentCss$O as getFlyoutNavigationItemCss, getFunctionalComponentLabelStyles, getFunctionalComponentLoadingMessageStyles, getFunctionalComponentRequiredStyles, getFunctionalComponentStateMessageStyles, getComponentCss$L as getGridCss, getComponentCss$M as getGridItemCss, getComponentCss$K as getHeadingCss, getComponentCss$J as getHeadlineCss, getComponentCss$I as getIconCss, getComponentCss$H as getInlineNotificationCss, getComponentCss$F as getLinkCss, getComponentCss$G as getLinkPureCss, getComponentCss$F as getLinkSocialCss, getComponentCss$C as getLinkTileCss, getComponentCss$E as getLinkTileModelSignatureCss, getComponentCss$D as getLinkTileProductCss, getComponentCss$B as getMarqueCss, getComponentCss$A as getModalCss, getComponentCss$z as getModelSignatureCss, getComponentCss$x as getMultiSelectCss, getComponentCss$y as getMultiSelectOptionCss, getComponentCss$w as getPaginationCss, getComponentCss$v as getPinCodeCss, getComponentCss$u as getPopoverCss, getComponentCss$t as getRadioButtonWrapperCss, getComponentCss$s as getScrollerCss, getComponentCss$q as getSegmentedControlCss, getComponentCss$r as getSegmentedControlItemCss, getComponentCss$o as getSelectWrapperCss, getComponentCss$p as getSelectWrapperDropdownCss, getComponentCss$n as getSpinnerCss, getComponentCss$l as getStepperHorizontalCss, getComponentCss$m as getStepperHorizontalItemCss, getComponentCss$k as getSwitchCss, getComponentCss$j as getTableBodyCss, getComponentCss$i as getTableCellCss, getComponentCss$h as getTableCss, getComponentCss$g as getTableHeadCellCss, getComponentCss$e as getTableHeadCss, getComponentCss$f as getTableHeadRowCss, getComponentCss$d as getTableRowCss, getComponentCss$c as getTabsBarCss, getComponentCss$a as getTabsCss, getComponentCss$b as getTabsItemCss, getComponentCss$8 as getTagCss, getComponentCss$9 as getTagDismissibleCss, getComponentCss$4 as getTextCss, getComponentCss$7 as getTextFieldWrapperCss, getComponentCss$6 as getTextListCss, getComponentCss$5 as getTextListItemCss, getComponentCss$3 as getTextareaWrapperCss, getComponentCss$1 as getToastCss, getComponentCss as getWordmarkCss };