@porsche-design-system/components-react 3.30.0 → 3.31.0-rc.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.
@@ -1,438 +1,727 @@
1
1
  'use strict';
2
2
 
3
- function _extends() {
4
- _extends = Object.assign ? Object.assign.bind() : function (target) {
5
- for (var i = 1; i < arguments.length; i++) {
6
- var source = arguments[i];
7
- for (var key in source) {
8
- if (Object.prototype.hasOwnProperty.call(source, key)) {
9
- target[key] = source[key];
10
- }
11
- }
12
- }
13
- return target;
14
- };
15
- return _extends.apply(this, arguments);
16
- }
3
+ const borderRadiusSmall = '4px';
17
4
 
18
- var _typeof$1 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5
+ const borderRadiusMedium = '8px';
19
6
 
20
- var isBrowser = (typeof window === "undefined" ? "undefined" : _typeof$1(window)) === "object" && (typeof document === "undefined" ? "undefined" : _typeof$1(document)) === 'object' && document.nodeType === 9;
7
+ const borderRadiusLarge = '12px';
21
8
 
22
- function _typeof(o) {
23
- "@babel/helpers - typeof";
9
+ const borderWidthBase = '2px';
24
10
 
25
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
26
- return typeof o;
27
- } : function (o) {
28
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
29
- }, _typeof(o);
30
- }
11
+ const _dropShadowBackgroundColor = 'rgba(0, 0, 0, 0.16)';
31
12
 
32
- function toPrimitive(t, r) {
33
- if ("object" != _typeof(t) || !t) return t;
34
- var e = t[Symbol.toPrimitive];
35
- if (void 0 !== e) {
36
- var i = e.call(t, r);
37
- if ("object" != _typeof(i)) return i;
38
- throw new TypeError("@@toPrimitive must return a primitive value.");
39
- }
40
- return (String )(t);
41
- }
13
+ const dropShadowLowStyle = {
14
+ boxShadow: `0px 3px 8px ${_dropShadowBackgroundColor}`, // filter: drop-shadow() causes visual glitches in Firefox in combination with frostedGlassStyle
15
+ };
42
16
 
43
- function toPropertyKey(t) {
44
- var i = toPrimitive(t, "string");
45
- return "symbol" == _typeof(i) ? i : i + "";
46
- }
17
+ const dropShadowHighStyle = {
18
+ boxShadow: `0px 8px 40px ${_dropShadowBackgroundColor}`, // filter: drop-shadow() causes visual glitches in Firefox in combination with frostedGlassStyle
19
+ };
47
20
 
48
- function _defineProperties(target, props) {
49
- for (var i = 0; i < props.length; i++) {
50
- var descriptor = props[i];
51
- descriptor.enumerable = descriptor.enumerable || false;
52
- descriptor.configurable = true;
53
- if ("value" in descriptor) descriptor.writable = true;
54
- Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
55
- }
56
- }
57
- function _createClass(Constructor, protoProps, staticProps) {
58
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
59
- Object.defineProperty(Constructor, "prototype", {
60
- writable: false
61
- });
62
- return Constructor;
63
- }
21
+ const fontFamily = "'Porsche Next','Arial Narrow',Arial,'Heiti SC',SimHei,sans-serif";
64
22
 
65
- function _setPrototypeOf(o, p) {
66
- _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
67
- o.__proto__ = p;
68
- return o;
69
- };
70
- return _setPrototypeOf(o, p);
71
- }
23
+ const fontHyphenationStyle = {
24
+ overflowWrap: 'break-word',
25
+ // @ts-ignore
26
+ hyphens: 'var(--p-hyphens, auto)',
27
+ };
72
28
 
73
- function _inheritsLoose(subClass, superClass) {
74
- subClass.prototype = Object.create(superClass.prototype);
75
- subClass.prototype.constructor = subClass;
76
- _setPrototypeOf(subClass, superClass);
77
- }
29
+ const fontLineHeight = 'calc(6px + 2.125ex)';
78
30
 
79
- function _assertThisInitialized(self) {
80
- if (self === void 0) {
81
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
82
- }
83
- return self;
84
- }
31
+ const fontSizeTextXXSmall = '.75rem';
85
32
 
86
- function _objectWithoutPropertiesLoose(source, excluded) {
87
- if (source == null) return {};
88
- var target = {};
89
- var sourceKeys = Object.keys(source);
90
- var key, i;
91
- for (i = 0; i < sourceKeys.length; i++) {
92
- key = sourceKeys[i];
93
- if (excluded.indexOf(key) >= 0) continue;
94
- target[key] = source[key];
95
- }
96
- return target;
97
- }
33
+ const fontSizeTextXSmall = 'clamp(0.81rem, 0.23vw + 0.77rem, 0.88rem)';
98
34
 
99
- var plainObjectConstrurctor = {}.constructor;
100
- function cloneStyle(style) {
101
- if (style == null || typeof style !== 'object') return style;
102
- if (Array.isArray(style)) return style.map(cloneStyle);
103
- if (style.constructor !== plainObjectConstrurctor) return style;
104
- var newStyle = {};
35
+ const fontSizeTextSmall = '1rem';
105
36
 
106
- for (var name in style) {
107
- newStyle[name] = cloneStyle(style[name]);
108
- }
37
+ const fontSizeTextMedium = 'clamp(1.13rem, 0.21vw + 1.08rem, 1.33rem)';
109
38
 
110
- return newStyle;
111
- }
39
+ const fontSizeTextLarge = 'clamp(1.27rem, 0.51vw + 1.16rem, 1.78rem)';
112
40
 
113
- /**
114
- * Create a rule instance.
115
- */
41
+ const fontSizeTextXLarge = 'clamp(1.42rem, 0.94vw + 1.23rem, 2.37rem)';
116
42
 
117
- function createRule(name, decl, options) {
118
- if (name === void 0) {
119
- name = 'unnamed';
120
- }
43
+ const fontSizeText = {
44
+ xxSmall: fontSizeTextXXSmall,
45
+ xSmall: fontSizeTextXSmall,
46
+ small: fontSizeTextSmall,
47
+ medium: fontSizeTextMedium,
48
+ large: fontSizeTextLarge,
49
+ xLarge: fontSizeTextXLarge,
50
+ };
121
51
 
122
- var jss = options.jss;
123
- var declCopy = cloneStyle(decl);
124
- var rule = jss.plugins.onCreateRule(name, declCopy, options);
125
- if (rule) return rule; // It is an at-rule and it has no instance.
52
+ const fontSizeHeadingSmall = fontSizeTextSmall;
126
53
 
127
- if (name[0] === '@') ;
54
+ const fontSizeHeadingMedium = fontSizeTextMedium;
128
55
 
129
- return null;
130
- }
56
+ const fontSizeHeadingLarge = fontSizeTextLarge;
131
57
 
132
- var join = function join(value, by) {
133
- var result = '';
58
+ const fontSizeHeadingXLarge = fontSizeTextXLarge;
134
59
 
135
- for (var i = 0; i < value.length; i++) {
136
- // Remove !important from the value, it will be readded later.
137
- if (value[i] === '!important') break;
138
- if (result) result += by;
139
- result += value[i];
140
- }
60
+ const fontSizeHeadingXXLarge = 'clamp(1.6rem, 1.56vw + 1.29rem, 3.16rem)';
141
61
 
142
- return result;
143
- };
144
- /**
145
- * Converts JSS array value to a CSS string.
146
- *
147
- * `margin: [['5px', '10px']]` > `margin: 5px 10px;`
148
- * `border: ['1px', '2px']` > `border: 1px, 2px;`
149
- * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`
150
- * `color: ['red', !important]` > `color: red !important;`
151
- */
62
+ const fontSizeDisplaySmall = 'clamp(1.8rem, 2.41vw + 1.32rem, 4.21rem)';
152
63
 
64
+ const fontSizeDisplayMedium = 'clamp(2.03rem, 3.58vw + 1.31rem, 5.61rem)';
153
65
 
154
- var toCssValue = function toCssValue(value) {
155
- if (!Array.isArray(value)) return value;
156
- var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.
66
+ const fontSizeDisplayLarge = 'clamp(2.28rem, 5.2vw + 1.24rem, 7.48rem)';
157
67
 
158
- if (Array.isArray(value[0])) {
159
- for (var i = 0; i < value.length; i++) {
160
- if (value[i] === '!important') break;
161
- if (cssValue) cssValue += ', ';
162
- cssValue += join(value[i], ' ');
163
- }
164
- } else cssValue = join(value, ', '); // Add !important, because it was ignored.
68
+ const fontWeightRegular = 400;
165
69
 
70
+ const fontWeightSemiBold = 600;
166
71
 
167
- if (value[value.length - 1] === '!important') {
168
- cssValue += ' !important';
169
- }
72
+ const fontWeightBold = 700;
170
73
 
171
- return cssValue;
172
- };
74
+ const fontStyleNormal = 'normal';
173
75
 
174
- function getWhitespaceSymbols(options) {
175
- if (options && options.format === false) {
176
- return {
177
- linebreak: '',
178
- space: ''
179
- };
180
- }
76
+ const fontVariant = 'normal';
181
77
 
182
- return {
183
- linebreak: '\n',
184
- space: ' '
185
- };
186
- }
78
+ const backdropFilter = 'blur(32px)';
79
+ const frostedGlassStyle = {
80
+ WebkitBackdropFilter: backdropFilter,
81
+ backdropFilter,
82
+ };
187
83
 
188
- /**
189
- * Indent a string.
190
- * http://jsperf.com/array-join-vs-for
191
- */
84
+ const _gradient = 'hsla(0, 0%, 0%, 0.80) 0%,' +
85
+ 'hsla(0, 0%, 0%, 0.80) 8.1%,' +
86
+ 'hsla(0, 0%, 0%, 0.80) 15.5%,' +
87
+ 'hsla(0, 0%, 0%, 0.80) 22.5%,' +
88
+ 'hsla(0, 0%, 0%, 0.78) 29%,' +
89
+ 'hsla(0, 0%, 0%, 0.73) 35.3%,' +
90
+ 'hsla(0, 0%, 0%, 0.67) 41.2%,' +
91
+ 'hsla(0, 0%, 0%, 0.60) 47.1%,' +
92
+ 'hsla(0, 0%, 0%, 0.52) 52.9%,' +
93
+ 'hsla(0, 0%, 0%, 0.44) 58.8%,' +
94
+ 'hsla(0, 0%, 0%, 0.33) 64.7%,' +
95
+ 'hsla(0, 0%, 0%, 0.22) 71%,' +
96
+ 'hsla(0, 0%, 0%, 0.12) 77.5%,' +
97
+ 'hsla(0, 0%, 0%, 0.05) 84.5%,' +
98
+ 'hsla(0, 0%, 0%, 0.011) 91.9%,' +
99
+ 'hsla(0, 0%, 0%, 0)';
192
100
 
193
- function indentStr(str, indent) {
194
- var result = '';
101
+ const gradientToBottomStyle = {
102
+ background: `linear-gradient(to bottom, ${_gradient} 100%);`,
103
+ };
195
104
 
196
- for (var index = 0; index < indent; index++) {
197
- result += ' ';
198
- }
105
+ const gradientToTopStyle = {
106
+ background: `linear-gradient(to top, ${_gradient} 100%);`,
107
+ };
199
108
 
200
- return result + str;
201
- }
202
- /**
203
- * Converts a Rule to CSS string.
204
- */
109
+ const breakpointBase = 0;
205
110
 
111
+ const breakpointXS = 480;
206
112
 
207
- function toCss(selector, style, options) {
208
- if (options === void 0) {
209
- options = {};
210
- }
113
+ const breakpointS = 760;
211
114
 
212
- var result = '';
213
- if (!style) return result;
214
- var _options = options,
215
- _options$indent = _options.indent,
216
- indent = _options$indent === void 0 ? 0 : _options$indent;
217
- var fallbacks = style.fallbacks;
115
+ const breakpointM = 1000;
218
116
 
219
- if (options.format === false) {
220
- indent = -Infinity;
221
- }
117
+ const breakpointL = 1300;
222
118
 
223
- var _getWhitespaceSymbols = getWhitespaceSymbols(options),
224
- linebreak = _getWhitespaceSymbols.linebreak,
225
- space = _getWhitespaceSymbols.space;
119
+ const breakpointXL = 1760;
226
120
 
227
- if (selector) indent++; // Apply fallbacks first.
121
+ const breakpointXXL = 1920;
228
122
 
229
- if (fallbacks) {
230
- // Array syntax {fallbacks: [{prop: value}]}
231
- if (Array.isArray(fallbacks)) {
232
- for (var index = 0; index < fallbacks.length; index++) {
233
- var fallback = fallbacks[index];
123
+ const breakpoint = {
124
+ base: breakpointBase,
125
+ xs: breakpointXS,
126
+ s: breakpointS,
127
+ m: breakpointM,
128
+ l: breakpointL,
129
+ xl: breakpointXL,
130
+ xxl: breakpointXXL,
131
+ };
234
132
 
235
- for (var prop in fallback) {
236
- var value = fallback[prop];
133
+ function getMediaQueryMin(min) {
134
+ return `@media(min-width:${breakpoint[min]}px)`;
135
+ }
237
136
 
238
- if (value != null) {
239
- if (result) result += linebreak;
240
- result += indentStr(prop + ":" + space + toCssValue(value) + ";", indent);
241
- }
242
- }
243
- }
244
- } else {
245
- // Object syntax {fallbacks: {prop: value}}
246
- for (var _prop in fallbacks) {
247
- var _value = fallbacks[_prop];
137
+ const spacingFluidMedium = 'clamp(16px, 1.25vw + 12px, 36px)';
248
138
 
249
- if (_value != null) {
250
- if (result) result += linebreak;
251
- result += indentStr(_prop + ":" + space + toCssValue(_value) + ";", indent);
252
- }
253
- }
254
- }
255
- }
139
+ const gridGap = spacingFluidMedium;
256
140
 
257
- for (var _prop2 in style) {
258
- var _value2 = style[_prop2];
141
+ const _gridWidthMax = '2560px';
142
+ // fluid sizing calculated by https://fluidtypography.com/#app-get-started
143
+ const _gridSafeZoneBase = 'max(22px, 10.625vw - 12px)'; // viewport-width range = 320 - 760px / size range = 22 - 68.75px
144
+ const _gridSafeZoneS = 'calc(5vw - 16px)'; // viewport-width range = 760 - 1920px / size range = 22(22.75) - 80(79.71)px
145
+ const _gridSafeZoneXXL = 'min(50vw - 880px, 400px)'; // viewport-width range = 1920 - 2560px / size range = 80(79.71)px - 400(399.71)px
259
146
 
260
- if (_value2 != null && _prop2 !== 'fallbacks') {
261
- if (result) result += linebreak;
262
- result += indentStr(_prop2 + ":" + space + toCssValue(_value2) + ";", indent);
263
- }
264
- } // Allow empty style in this case, because properties will be added dynamically.
147
+ const columnMap = {
148
+ narrow: 4,
149
+ basic: 2,
150
+ extended: 1,
151
+ };
152
+ const gridColumnWidthS = `calc((100vw - ${_gridSafeZoneS} * 2 - ${gridGap} * 15) / 16)`;
153
+ const gridColumnWidthXXL = `calc((min(100vw, ${_gridWidthMax}) - ${_gridSafeZoneXXL} * 2 - ${gridGap} * 15) / 16)`;
154
+ const _gridPadding = `max(0px, 50vw - ${_gridWidthMax} / 2)`;
155
+ const _getGridOffsetS = (width) => `calc(${_gridSafeZoneS} + (${gridGap} + ${gridColumnWidthS}) * ${columnMap[width]})`;
156
+ const _getGridOffsetXXL = (width) => `calc(${_gridPadding} + ${_gridSafeZoneXXL} + (${gridGap} + ${gridColumnWidthXXL}) * ${columnMap[width]})`;
265
157
 
158
+ const gridFullOffset = _gridPadding;
266
159
 
267
- if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.
160
+ const gridExtendedOffsetBase = _gridSafeZoneBase;
268
161
 
269
- if (!selector) return result;
270
- indent--;
271
- if (result) result = "" + linebreak + result + linebreak;
272
- return indentStr("" + selector + space + "{" + result, indent) + indentStr('}', indent);
273
- }
162
+ const gridExtendedOffsetS = _getGridOffsetS('extended');
274
163
 
275
- var escapeRegex = /([[\].#*$><+~=|^:(),"'`\s])/g;
276
- var nativeEscape = typeof CSS !== 'undefined' && CSS.escape;
277
- var escape = (function (str) {
278
- return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\$1');
279
- });
164
+ const gridExtendedOffsetXXL = _getGridOffsetXXL('extended');
280
165
 
281
- var BaseStyleRule =
282
- /*#__PURE__*/
283
- function () {
284
- function BaseStyleRule(key, style, options) {
285
- this.type = 'style';
286
- this.isProcessed = false;
287
- var sheet = options.sheet,
288
- Renderer = options.Renderer;
289
- this.key = key;
290
- this.options = options;
291
- this.style = style;
292
- if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();
293
- }
294
- /**
295
- * Get or set a style property.
296
- */
166
+ const gridExtendedOffset = {
167
+ base: gridExtendedOffsetBase,
168
+ s: gridExtendedOffsetS,
169
+ xxl: gridExtendedOffsetXXL,
170
+ };
297
171
 
172
+ const gridBasicOffsetBase = _gridSafeZoneBase;
298
173
 
299
- var _proto = BaseStyleRule.prototype;
174
+ const gridBasicOffsetS = _getGridOffsetS('basic');
300
175
 
301
- _proto.prop = function prop(name, value, options) {
302
- // It's a getter.
303
- if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.
176
+ const gridBasicOffsetXXL = _getGridOffsetXXL('basic');
304
177
 
305
- var force = options ? options.force : false;
306
- if (!force && this.style[name] === value) return this;
307
- var newValue = value;
178
+ const gridBasicOffset = {
179
+ base: gridBasicOffsetBase,
180
+ s: gridBasicOffsetS,
181
+ xxl: gridBasicOffsetXXL,
182
+ };
308
183
 
309
- if (!options || options.process !== false) {
310
- newValue = this.options.jss.plugins.onChangeValue(value, name, this);
311
- }
184
+ const gridNarrowOffsetBase = _gridSafeZoneBase;
312
185
 
313
- var isEmpty = newValue == null || newValue === false;
314
- var isDefined = name in this.style; // Value is empty and wasn't defined before.
186
+ const gridNarrowOffsetS = _getGridOffsetS('narrow');
315
187
 
316
- if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.
188
+ const gridNarrowOffsetXXL = _getGridOffsetXXL('narrow');
317
189
 
318
- var remove = isEmpty && isDefined;
319
- if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.
190
+ const gridNarrowOffset = {
191
+ base: gridNarrowOffsetBase,
192
+ s: gridNarrowOffsetS,
193
+ xxl: gridNarrowOffsetXXL,
194
+ };
320
195
 
321
- if (this.renderable && this.renderer) {
322
- if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);
323
- return this;
324
- }
196
+ const motionDurationShort = '0.25s';
325
197
 
326
- var sheet = this.options.sheet;
198
+ const motionEasingBase = 'cubic-bezier(0.25,0.1,0.25,1)';
327
199
 
328
- if (sheet && sheet.attached) ;
200
+ const breakpoints = ['base', 'xs', 's', 'm', 'l', 'xl', 'xxl'];
329
201
 
330
- return this;
331
- };
202
+ function getMediaQueryMax(max) {
203
+ return `@media(max-width:${breakpoint[max] - 1}px)`;
204
+ }
332
205
 
333
- return BaseStyleRule;
334
- }();
335
- var StyleRule =
336
- /*#__PURE__*/
337
- function (_BaseStyleRule) {
338
- _inheritsLoose(StyleRule, _BaseStyleRule);
206
+ const motionDurationLong = '0.6s';
339
207
 
340
- function StyleRule(key, style, options) {
341
- var _this;
208
+ const motionDurationModerate = '0.4s';
342
209
 
343
- _this = _BaseStyleRule.call(this, key, style, options) || this;
344
- var selector = options.selector,
345
- scoped = options.scoped,
346
- sheet = options.sheet,
347
- generateId = options.generateId;
210
+ const motionDurationVeryLong = '1.2s';
348
211
 
349
- if (selector) {
350
- _this.selectorText = selector;
351
- } else if (scoped !== false) {
352
- _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);
353
- _this.selectorText = "." + escape(_this.id);
354
- }
212
+ const motionEasingIn = 'cubic-bezier(0,0,0.2,1)';
355
213
 
356
- return _this;
357
- }
358
- /**
359
- * Set selector string.
360
- * Attention: use this with caution. Most browsers didn't implement
361
- * selectorText setter, so this may result in rerendering of entire Style Sheet.
362
- */
214
+ const motionEasingOut = 'cubic-bezier(0.4,0,0.5,1)';
363
215
 
216
+ const spacingStaticXSmall = '4px';
364
217
 
365
- var _proto2 = StyleRule.prototype;
218
+ const spacingStaticSmall = '8px';
366
219
 
367
- /**
368
- * Apply rule to an element inline.
369
- */
370
- _proto2.applyTo = function applyTo(renderable) {
371
- var renderer = this.renderer;
220
+ const spacingStaticMedium = '16px';
372
221
 
373
- if (renderer) {
374
- var json = this.toJSON();
222
+ const spacingStaticLarge = '32px';
375
223
 
376
- for (var prop in json) {
377
- renderer.setProperty(renderable, prop, json[prop]);
378
- }
379
- }
224
+ const spacingFluidXSmall = 'clamp(4px, 0.25vw + 3px, 8px)';
380
225
 
381
- return this;
382
- }
383
- /**
384
- * Returns JSON representation of the rule.
385
- * Fallbacks are not supported.
386
- * Useful for inline styles.
387
- */
388
- ;
226
+ const spacingFluidSmall = 'clamp(8px, 0.5vw + 6px, 16px)';
389
227
 
390
- _proto2.toJSON = function toJSON() {
391
- var json = {};
228
+ const spacingFluidLarge = 'clamp(32px, 2.75vw + 23px, 76px)';
392
229
 
393
- for (var prop in this.style) {
394
- var value = this.style[prop];
395
- if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);
396
- }
230
+ const _displayFontPartA = `${fontStyleNormal} ${fontVariant} ${fontWeightRegular} `;
231
+ const _displayFontPartB = `/${fontLineHeight} ${fontFamily}`;
397
232
 
398
- return json;
399
- }
400
- /**
401
- * Generates a CSS string.
402
- */
403
- ;
233
+ const displayMediumStyle = {
234
+ font: `${_displayFontPartA}${fontSizeDisplayMedium}${_displayFontPartB}`,
235
+ };
404
236
 
405
- _proto2.toString = function toString(options) {
406
- var sheet = this.options.sheet;
407
- var link = sheet ? sheet.options.link : false;
408
- var opts = link ? _extends({}, options, {
409
- allowEmpty: true
410
- }) : options;
411
- return toCss(this.selectorText, this.style, opts);
412
- };
237
+ const displayLargeStyle = {
238
+ font: `${_displayFontPartA}${fontSizeDisplayLarge}${_displayFontPartB}`,
239
+ };
413
240
 
414
- _createClass(StyleRule, [{
415
- key: "selector",
416
- set: function set(selector) {
417
- if (selector === this.selectorText) return;
418
- this.selectorText = selector;
419
- var renderer = this.renderer,
420
- renderable = this.renderable;
421
- if (!renderable || !renderer) return;
422
- var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.
241
+ const _headingFontPartA = `${fontStyleNormal} ${fontVariant} ${fontWeightSemiBold} `;
242
+ const _headingFontPartB = `/${fontLineHeight} ${fontFamily}`;
423
243
 
424
- if (!hasChanged) {
425
- renderer.replaceRule(renderable, this);
426
- }
427
- }
428
- /**
429
- * Get selector string.
430
- */
431
- ,
432
- get: function get() {
433
- return this.selectorText;
434
- }
435
- }]);
244
+ const headingSmallStyle = {
245
+ font: `${_headingFontPartA}${fontSizeHeadingSmall}${_headingFontPartB}`,
246
+ };
247
+
248
+ const headingMediumStyle = {
249
+ font: `${_headingFontPartA}${fontSizeHeadingMedium}${_headingFontPartB}`,
250
+ };
251
+
252
+ const headingLargeStyle = {
253
+ font: `${_headingFontPartA}${fontSizeHeadingLarge}${_headingFontPartB}`,
254
+ };
255
+
256
+ const headingXLargeStyle = {
257
+ font: `${_headingFontPartA}${fontSizeHeadingXLarge}${_headingFontPartB}`,
258
+ };
259
+
260
+ const headingXXLargeStyle = {
261
+ font: `${_headingFontPartA}${fontSizeHeadingXXLarge}${_headingFontPartB}`,
262
+ };
263
+
264
+ const _textFontPartA = `${fontStyleNormal} ${fontVariant} ${fontWeightRegular} `;
265
+ const _textFontPartB = `/${fontLineHeight} ${fontFamily}`;
266
+
267
+ const textXXSmallStyle = {
268
+ font: `${_textFontPartA}${fontSizeTextXXSmall}${_textFontPartB}`,
269
+ ...fontHyphenationStyle,
270
+ };
271
+
272
+ const textXSmallStyle = {
273
+ font: `${_textFontPartA}${fontSizeTextXSmall}${_textFontPartB}`,
274
+ ...fontHyphenationStyle,
275
+ };
276
+
277
+ const textSmallStyle = {
278
+ font: `${_textFontPartA}${fontSizeTextSmall}${_textFontPartB}`,
279
+ ...fontHyphenationStyle,
280
+ };
281
+
282
+ const textMediumStyle = {
283
+ font: `${_textFontPartA}${fontSizeTextMedium}${_textFontPartB}`,
284
+ ...fontHyphenationStyle,
285
+ };
286
+
287
+ const textLargeStyle = {
288
+ font: `${_textFontPartA}${fontSizeTextLarge}${_textFontPartB}`,
289
+ ...fontHyphenationStyle,
290
+ };
291
+
292
+ function _extends() {
293
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
294
+ for (var i = 1; i < arguments.length; i++) {
295
+ var source = arguments[i];
296
+ for (var key in source) {
297
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
298
+ target[key] = source[key];
299
+ }
300
+ }
301
+ }
302
+ return target;
303
+ };
304
+ return _extends.apply(this, arguments);
305
+ }
306
+
307
+ var _typeof$1 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
308
+
309
+ var isBrowser = (typeof window === "undefined" ? "undefined" : _typeof$1(window)) === "object" && (typeof document === "undefined" ? "undefined" : _typeof$1(document)) === 'object' && document.nodeType === 9;
310
+
311
+ function _typeof(o) {
312
+ "@babel/helpers - typeof";
313
+
314
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
315
+ return typeof o;
316
+ } : function (o) {
317
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
318
+ }, _typeof(o);
319
+ }
320
+
321
+ function toPrimitive(t, r) {
322
+ if ("object" != _typeof(t) || !t) return t;
323
+ var e = t[Symbol.toPrimitive];
324
+ if (void 0 !== e) {
325
+ var i = e.call(t, r);
326
+ if ("object" != _typeof(i)) return i;
327
+ throw new TypeError("@@toPrimitive must return a primitive value.");
328
+ }
329
+ return (String )(t);
330
+ }
331
+
332
+ function toPropertyKey(t) {
333
+ var i = toPrimitive(t, "string");
334
+ return "symbol" == _typeof(i) ? i : i + "";
335
+ }
336
+
337
+ function _defineProperties(target, props) {
338
+ for (var i = 0; i < props.length; i++) {
339
+ var descriptor = props[i];
340
+ descriptor.enumerable = descriptor.enumerable || false;
341
+ descriptor.configurable = true;
342
+ if ("value" in descriptor) descriptor.writable = true;
343
+ Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
344
+ }
345
+ }
346
+ function _createClass(Constructor, protoProps, staticProps) {
347
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
348
+ Object.defineProperty(Constructor, "prototype", {
349
+ writable: false
350
+ });
351
+ return Constructor;
352
+ }
353
+
354
+ function _setPrototypeOf(o, p) {
355
+ _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
356
+ o.__proto__ = p;
357
+ return o;
358
+ };
359
+ return _setPrototypeOf(o, p);
360
+ }
361
+
362
+ function _inheritsLoose(subClass, superClass) {
363
+ subClass.prototype = Object.create(superClass.prototype);
364
+ subClass.prototype.constructor = subClass;
365
+ _setPrototypeOf(subClass, superClass);
366
+ }
367
+
368
+ function _assertThisInitialized(self) {
369
+ if (self === void 0) {
370
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
371
+ }
372
+ return self;
373
+ }
374
+
375
+ function _objectWithoutPropertiesLoose(source, excluded) {
376
+ if (source == null) return {};
377
+ var target = {};
378
+ var sourceKeys = Object.keys(source);
379
+ var key, i;
380
+ for (i = 0; i < sourceKeys.length; i++) {
381
+ key = sourceKeys[i];
382
+ if (excluded.indexOf(key) >= 0) continue;
383
+ target[key] = source[key];
384
+ }
385
+ return target;
386
+ }
387
+
388
+ var plainObjectConstrurctor = {}.constructor;
389
+ function cloneStyle(style) {
390
+ if (style == null || typeof style !== 'object') return style;
391
+ if (Array.isArray(style)) return style.map(cloneStyle);
392
+ if (style.constructor !== plainObjectConstrurctor) return style;
393
+ var newStyle = {};
394
+
395
+ for (var name in style) {
396
+ newStyle[name] = cloneStyle(style[name]);
397
+ }
398
+
399
+ return newStyle;
400
+ }
401
+
402
+ /**
403
+ * Create a rule instance.
404
+ */
405
+
406
+ function createRule(name, decl, options) {
407
+ if (name === void 0) {
408
+ name = 'unnamed';
409
+ }
410
+
411
+ var jss = options.jss;
412
+ var declCopy = cloneStyle(decl);
413
+ var rule = jss.plugins.onCreateRule(name, declCopy, options);
414
+ if (rule) return rule; // It is an at-rule and it has no instance.
415
+
416
+ if (name[0] === '@') ;
417
+
418
+ return null;
419
+ }
420
+
421
+ var join = function join(value, by) {
422
+ var result = '';
423
+
424
+ for (var i = 0; i < value.length; i++) {
425
+ // Remove !important from the value, it will be readded later.
426
+ if (value[i] === '!important') break;
427
+ if (result) result += by;
428
+ result += value[i];
429
+ }
430
+
431
+ return result;
432
+ };
433
+ /**
434
+ * Converts JSS array value to a CSS string.
435
+ *
436
+ * `margin: [['5px', '10px']]` > `margin: 5px 10px;`
437
+ * `border: ['1px', '2px']` > `border: 1px, 2px;`
438
+ * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`
439
+ * `color: ['red', !important]` > `color: red !important;`
440
+ */
441
+
442
+
443
+ var toCssValue = function toCssValue(value) {
444
+ if (!Array.isArray(value)) return value;
445
+ var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.
446
+
447
+ if (Array.isArray(value[0])) {
448
+ for (var i = 0; i < value.length; i++) {
449
+ if (value[i] === '!important') break;
450
+ if (cssValue) cssValue += ', ';
451
+ cssValue += join(value[i], ' ');
452
+ }
453
+ } else cssValue = join(value, ', '); // Add !important, because it was ignored.
454
+
455
+
456
+ if (value[value.length - 1] === '!important') {
457
+ cssValue += ' !important';
458
+ }
459
+
460
+ return cssValue;
461
+ };
462
+
463
+ function getWhitespaceSymbols(options) {
464
+ if (options && options.format === false) {
465
+ return {
466
+ linebreak: '',
467
+ space: ''
468
+ };
469
+ }
470
+
471
+ return {
472
+ linebreak: '\n',
473
+ space: ' '
474
+ };
475
+ }
476
+
477
+ /**
478
+ * Indent a string.
479
+ * http://jsperf.com/array-join-vs-for
480
+ */
481
+
482
+ function indentStr(str, indent) {
483
+ var result = '';
484
+
485
+ for (var index = 0; index < indent; index++) {
486
+ result += ' ';
487
+ }
488
+
489
+ return result + str;
490
+ }
491
+ /**
492
+ * Converts a Rule to CSS string.
493
+ */
494
+
495
+
496
+ function toCss(selector, style, options) {
497
+ if (options === void 0) {
498
+ options = {};
499
+ }
500
+
501
+ var result = '';
502
+ if (!style) return result;
503
+ var _options = options,
504
+ _options$indent = _options.indent,
505
+ indent = _options$indent === void 0 ? 0 : _options$indent;
506
+ var fallbacks = style.fallbacks;
507
+
508
+ if (options.format === false) {
509
+ indent = -Infinity;
510
+ }
511
+
512
+ var _getWhitespaceSymbols = getWhitespaceSymbols(options),
513
+ linebreak = _getWhitespaceSymbols.linebreak,
514
+ space = _getWhitespaceSymbols.space;
515
+
516
+ if (selector) indent++; // Apply fallbacks first.
517
+
518
+ if (fallbacks) {
519
+ // Array syntax {fallbacks: [{prop: value}]}
520
+ if (Array.isArray(fallbacks)) {
521
+ for (var index = 0; index < fallbacks.length; index++) {
522
+ var fallback = fallbacks[index];
523
+
524
+ for (var prop in fallback) {
525
+ var value = fallback[prop];
526
+
527
+ if (value != null) {
528
+ if (result) result += linebreak;
529
+ result += indentStr(prop + ":" + space + toCssValue(value) + ";", indent);
530
+ }
531
+ }
532
+ }
533
+ } else {
534
+ // Object syntax {fallbacks: {prop: value}}
535
+ for (var _prop in fallbacks) {
536
+ var _value = fallbacks[_prop];
537
+
538
+ if (_value != null) {
539
+ if (result) result += linebreak;
540
+ result += indentStr(_prop + ":" + space + toCssValue(_value) + ";", indent);
541
+ }
542
+ }
543
+ }
544
+ }
545
+
546
+ for (var _prop2 in style) {
547
+ var _value2 = style[_prop2];
548
+
549
+ if (_value2 != null && _prop2 !== 'fallbacks') {
550
+ if (result) result += linebreak;
551
+ result += indentStr(_prop2 + ":" + space + toCssValue(_value2) + ";", indent);
552
+ }
553
+ } // Allow empty style in this case, because properties will be added dynamically.
554
+
555
+
556
+ if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.
557
+
558
+ if (!selector) return result;
559
+ indent--;
560
+ if (result) result = "" + linebreak + result + linebreak;
561
+ return indentStr("" + selector + space + "{" + result, indent) + indentStr('}', indent);
562
+ }
563
+
564
+ var escapeRegex = /([[\].#*$><+~=|^:(),"'`\s])/g;
565
+ var nativeEscape = typeof CSS !== 'undefined' && CSS.escape;
566
+ var escape = (function (str) {
567
+ return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\$1');
568
+ });
569
+
570
+ var BaseStyleRule =
571
+ /*#__PURE__*/
572
+ function () {
573
+ function BaseStyleRule(key, style, options) {
574
+ this.type = 'style';
575
+ this.isProcessed = false;
576
+ var sheet = options.sheet,
577
+ Renderer = options.Renderer;
578
+ this.key = key;
579
+ this.options = options;
580
+ this.style = style;
581
+ if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();
582
+ }
583
+ /**
584
+ * Get or set a style property.
585
+ */
586
+
587
+
588
+ var _proto = BaseStyleRule.prototype;
589
+
590
+ _proto.prop = function prop(name, value, options) {
591
+ // It's a getter.
592
+ if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.
593
+
594
+ var force = options ? options.force : false;
595
+ if (!force && this.style[name] === value) return this;
596
+ var newValue = value;
597
+
598
+ if (!options || options.process !== false) {
599
+ newValue = this.options.jss.plugins.onChangeValue(value, name, this);
600
+ }
601
+
602
+ var isEmpty = newValue == null || newValue === false;
603
+ var isDefined = name in this.style; // Value is empty and wasn't defined before.
604
+
605
+ if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.
606
+
607
+ var remove = isEmpty && isDefined;
608
+ if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.
609
+
610
+ if (this.renderable && this.renderer) {
611
+ if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);
612
+ return this;
613
+ }
614
+
615
+ var sheet = this.options.sheet;
616
+
617
+ if (sheet && sheet.attached) ;
618
+
619
+ return this;
620
+ };
621
+
622
+ return BaseStyleRule;
623
+ }();
624
+ var StyleRule =
625
+ /*#__PURE__*/
626
+ function (_BaseStyleRule) {
627
+ _inheritsLoose(StyleRule, _BaseStyleRule);
628
+
629
+ function StyleRule(key, style, options) {
630
+ var _this;
631
+
632
+ _this = _BaseStyleRule.call(this, key, style, options) || this;
633
+ var selector = options.selector,
634
+ scoped = options.scoped,
635
+ sheet = options.sheet,
636
+ generateId = options.generateId;
637
+
638
+ if (selector) {
639
+ _this.selectorText = selector;
640
+ } else if (scoped !== false) {
641
+ _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);
642
+ _this.selectorText = "." + escape(_this.id);
643
+ }
644
+
645
+ return _this;
646
+ }
647
+ /**
648
+ * Set selector string.
649
+ * Attention: use this with caution. Most browsers didn't implement
650
+ * selectorText setter, so this may result in rerendering of entire Style Sheet.
651
+ */
652
+
653
+
654
+ var _proto2 = StyleRule.prototype;
655
+
656
+ /**
657
+ * Apply rule to an element inline.
658
+ */
659
+ _proto2.applyTo = function applyTo(renderable) {
660
+ var renderer = this.renderer;
661
+
662
+ if (renderer) {
663
+ var json = this.toJSON();
664
+
665
+ for (var prop in json) {
666
+ renderer.setProperty(renderable, prop, json[prop]);
667
+ }
668
+ }
669
+
670
+ return this;
671
+ }
672
+ /**
673
+ * Returns JSON representation of the rule.
674
+ * Fallbacks are not supported.
675
+ * Useful for inline styles.
676
+ */
677
+ ;
678
+
679
+ _proto2.toJSON = function toJSON() {
680
+ var json = {};
681
+
682
+ for (var prop in this.style) {
683
+ var value = this.style[prop];
684
+ if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);
685
+ }
686
+
687
+ return json;
688
+ }
689
+ /**
690
+ * Generates a CSS string.
691
+ */
692
+ ;
693
+
694
+ _proto2.toString = function toString(options) {
695
+ var sheet = this.options.sheet;
696
+ var link = sheet ? sheet.options.link : false;
697
+ var opts = link ? _extends({}, options, {
698
+ allowEmpty: true
699
+ }) : options;
700
+ return toCss(this.selectorText, this.style, opts);
701
+ };
702
+
703
+ _createClass(StyleRule, [{
704
+ key: "selector",
705
+ set: function set(selector) {
706
+ if (selector === this.selectorText) return;
707
+ this.selectorText = selector;
708
+ var renderer = this.renderer,
709
+ renderable = this.renderable;
710
+ if (!renderable || !renderer) return;
711
+ var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.
712
+
713
+ if (!hasChanged) {
714
+ renderer.replaceRule(renderable, this);
715
+ }
716
+ }
717
+ /**
718
+ * Get selector string.
719
+ */
720
+ ,
721
+ get: function get() {
722
+ return this.selectorText;
723
+ }
724
+ }]);
436
725
 
437
726
  return StyleRule;
438
727
  }(BaseStyleRule);
@@ -2351,18 +2640,18 @@ function getDynamicStyles(styles) {
2351
2640
  var index = createJss();
2352
2641
 
2353
2642
  var jss_esm = /*#__PURE__*/Object.freeze({
2354
- __proto__: null,
2355
- RuleList: RuleList,
2356
- SheetsManager: SheetsManager,
2357
- SheetsRegistry: SheetsRegistry,
2358
- create: createJss,
2359
- createGenerateId: createGenerateId,
2360
- createRule: createRule,
2361
- default: index,
2362
- getDynamicStyles: getDynamicStyles,
2363
- hasCSSTOMSupport: hasCSSTOMSupport,
2364
- sheets: sheets,
2365
- toCssValue: toCssValue
2643
+ __proto__: null,
2644
+ RuleList: RuleList,
2645
+ SheetsManager: SheetsManager,
2646
+ SheetsRegistry: SheetsRegistry,
2647
+ create: createJss,
2648
+ createGenerateId: createGenerateId,
2649
+ createRule: createRule,
2650
+ default: index,
2651
+ getDynamicStyles: getDynamicStyles,
2652
+ hasCSSTOMSupport: hasCSSTOMSupport,
2653
+ sheets: sheets,
2654
+ toCssValue: toCssValue
2366
2655
  });
2367
2656
 
2368
2657
  var at = '@global';
@@ -3153,342 +3442,324 @@ function requireDist () {
3153
3442
  } else {
3154
3443
  for (var i_2 = 0; i_2 < group.length; i_2++) {
3155
3444
  var rule = this.index[group[i_2]];
3156
- var css = rule.toString(options);
3157
- if (!css && !link) continue;
3158
- if (str) str += '\n';
3159
- str += css;
3160
- }
3161
- }
3162
- }
3163
- return str;
3164
- };
3165
- }
3166
- }
3167
- function jssCombineAndSortMQ(options) {
3168
- if (options === void 0) {
3169
- options = {};
3170
- }
3171
- return {
3172
- onProcessSheet: function (sheet) {
3173
- recursive(options, sheet);
3174
- }
3175
- };
3176
- }
3177
-
3178
- dist = jssCombineAndSortMQ;
3179
- return dist;
3180
- }
3181
-
3182
- var distExports = requireDist();
3183
- var jssPluginSortMediaQueries = /*@__PURE__*/getDefaultExportFromCjs(distExports);
3184
-
3185
- const isDisabledOrLoading = (disabled, loading) => {
3186
- return disabled || loading;
3187
- };
3188
-
3189
- const hasWindow = typeof window !== 'undefined';
3190
-
3191
- const isHighContrastMode = hasWindow && window.matchMedia?.('(forced-colors: active)').matches;
3192
-
3193
- const lighten = (hsl) => {
3194
- return changeColor(hsl, 15);
3195
- };
3196
- const darken = (hsl) => {
3197
- return changeColor(hsl, -15);
3198
- };
3199
- const changeColor = (hsl, lightness) => {
3200
- return hsl.replace(/\s(\d+)(%?)\//, (_, p1, p2) => {
3201
- return ` ${Math.min(Math.max(Number.parseInt(p1, 10) + lightness, 0), 100)}${p2}/`;
3202
- });
3203
- };
3204
-
3205
- const borderRadiusSmall = '4px';
3206
-
3207
- const borderRadiusMedium = '8px';
3208
-
3209
- const borderRadiusLarge = '12px';
3210
-
3211
- const borderWidthBase = '2px';
3212
-
3213
- const _dropShadowBackgroundColor = 'rgba(0, 0, 0, 0.16)';
3214
-
3215
- const dropShadowLowStyle = {
3216
- boxShadow: `0px 3px 8px ${_dropShadowBackgroundColor}`, // filter: drop-shadow() causes visual glitches in Firefox in combination with frostedGlassStyle
3217
- };
3218
-
3219
- const dropShadowHighStyle = {
3220
- boxShadow: `0px 8px 40px ${_dropShadowBackgroundColor}`, // filter: drop-shadow() causes visual glitches in Firefox in combination with frostedGlassStyle
3221
- };
3222
-
3223
- const fontFamily = "'Porsche Next','Arial Narrow',Arial,'Heiti SC',SimHei,sans-serif";
3224
-
3225
- const fontHyphenationStyle = {
3226
- overflowWrap: 'break-word',
3227
- hyphens: 'auto',
3228
- };
3229
-
3230
- const fontLineHeight = 'calc(6px + 2.125ex)';
3231
-
3232
- const fontSizeTextXXSmall = '.75rem';
3233
-
3234
- const fontSizeTextXSmall = 'clamp(0.81rem, 0.23vw + 0.77rem, 0.88rem)';
3235
-
3236
- const fontSizeTextSmall = '1rem';
3237
-
3238
- const fontSizeTextMedium = 'clamp(1.13rem, 0.21vw + 1.08rem, 1.33rem)';
3239
-
3240
- const fontSizeTextLarge = 'clamp(1.27rem, 0.51vw + 1.16rem, 1.78rem)';
3241
-
3242
- const fontSizeTextXLarge = 'clamp(1.42rem, 0.94vw + 1.23rem, 2.37rem)';
3243
-
3244
- const fontSizeText = {
3245
- xxSmall: fontSizeTextXXSmall,
3246
- xSmall: fontSizeTextXSmall,
3247
- small: fontSizeTextSmall,
3248
- medium: fontSizeTextMedium,
3249
- large: fontSizeTextLarge,
3250
- xLarge: fontSizeTextXLarge,
3251
- };
3252
-
3253
- const fontSizeHeadingSmall = fontSizeTextSmall;
3254
-
3255
- const fontSizeHeadingMedium = fontSizeTextMedium;
3256
-
3257
- const fontSizeHeadingLarge = fontSizeTextLarge;
3258
-
3259
- const fontSizeHeadingXLarge = fontSizeTextXLarge;
3260
-
3261
- const fontSizeHeadingXXLarge = 'clamp(1.6rem, 1.56vw + 1.29rem, 3.16rem)';
3262
-
3263
- const fontSizeDisplaySmall = 'clamp(1.8rem, 2.41vw + 1.32rem, 4.21rem)';
3264
-
3265
- const fontSizeDisplayMedium = 'clamp(2.03rem, 3.58vw + 1.31rem, 5.61rem)';
3266
-
3267
- const fontSizeDisplayLarge = 'clamp(2.28rem, 5.2vw + 1.24rem, 7.48rem)';
3268
-
3269
- const fontWeightRegular = 400;
3270
-
3271
- const fontWeightSemiBold = 600;
3272
-
3273
- const fontWeightBold = 700;
3274
-
3275
- const fontStyleNormal = 'normal';
3276
-
3277
- const fontVariant = 'normal';
3278
-
3279
- const backdropFilter = 'blur(32px)';
3280
- const frostedGlassStyle = {
3281
- WebkitBackdropFilter: backdropFilter,
3282
- backdropFilter,
3283
- };
3284
-
3285
- const _gradient = 'hsla(0, 0%, 0%, 0.80) 0%,' +
3286
- 'hsla(0, 0%, 0%, 0.80) 8.1%,' +
3287
- 'hsla(0, 0%, 0%, 0.80) 15.5%,' +
3288
- 'hsla(0, 0%, 0%, 0.80) 22.5%,' +
3289
- 'hsla(0, 0%, 0%, 0.78) 29%,' +
3290
- 'hsla(0, 0%, 0%, 0.73) 35.3%,' +
3291
- 'hsla(0, 0%, 0%, 0.67) 41.2%,' +
3292
- 'hsla(0, 0%, 0%, 0.60) 47.1%,' +
3293
- 'hsla(0, 0%, 0%, 0.52) 52.9%,' +
3294
- 'hsla(0, 0%, 0%, 0.44) 58.8%,' +
3295
- 'hsla(0, 0%, 0%, 0.33) 64.7%,' +
3296
- 'hsla(0, 0%, 0%, 0.22) 71%,' +
3297
- 'hsla(0, 0%, 0%, 0.12) 77.5%,' +
3298
- 'hsla(0, 0%, 0%, 0.05) 84.5%,' +
3299
- 'hsla(0, 0%, 0%, 0.011) 91.9%,' +
3300
- 'hsla(0, 0%, 0%, 0)';
3301
-
3302
- const gradientToBottomStyle = {
3303
- background: `linear-gradient(to bottom, ${_gradient} 100%);`,
3304
- };
3305
-
3306
- const gradientToTopStyle = {
3307
- background: `linear-gradient(to top, ${_gradient} 100%);`,
3308
- };
3309
-
3310
- const breakpointBase = 0;
3311
-
3312
- const breakpointXS = 480;
3313
-
3314
- const breakpointS = 760;
3315
-
3316
- const breakpointM = 1000;
3317
-
3318
- const breakpointL = 1300;
3319
-
3320
- const breakpointXL = 1760;
3321
-
3322
- const breakpointXXL = 1920;
3323
-
3324
- const breakpoint = {
3325
- base: breakpointBase,
3326
- xs: breakpointXS,
3327
- s: breakpointS,
3328
- m: breakpointM,
3329
- l: breakpointL,
3330
- xl: breakpointXL,
3331
- xxl: breakpointXXL,
3332
- };
3333
-
3334
- function getMediaQueryMin(min) {
3335
- return `@media(min-width:${breakpoint[min]}px)`;
3336
- }
3337
-
3338
- const spacingFluidMedium = 'clamp(16px, 1.25vw + 12px, 36px)';
3339
-
3340
- const gridGap = spacingFluidMedium;
3341
-
3342
- const _gridWidthMax = '2560px';
3343
- // fluid sizing calculated by https://fluidtypography.com/#app-get-started
3344
- const _gridSafeZoneBase = 'max(22px, 10.625vw - 12px)'; // viewport-width range = 320 - 760px / size range = 22 - 68.75px
3345
- const _gridSafeZoneS = 'calc(5vw - 16px)'; // viewport-width range = 760 - 1920px / size range = 22(22.75) - 80(79.71)px
3346
- const _gridSafeZoneXXL = 'min(50vw - 880px, 400px)'; // viewport-width range = 1920 - 2560px / size range = 80(79.71)px - 400(399.71)px
3347
-
3348
- const columnMap = {
3349
- narrow: 4,
3350
- basic: 2,
3351
- extended: 1,
3352
- };
3353
- const gridColumnWidthS = `calc((100vw - ${_gridSafeZoneS} * 2 - ${gridGap} * 15) / 16)`;
3354
- const gridColumnWidthXXL = `calc((min(100vw, ${_gridWidthMax}) - ${_gridSafeZoneXXL} * 2 - ${gridGap} * 15) / 16)`;
3355
- const _gridPadding = `max(0px, 50vw - ${_gridWidthMax} / 2)`;
3356
- const _getGridOffsetS = (width) => `calc(${_gridSafeZoneS} + (${gridGap} + ${gridColumnWidthS}) * ${columnMap[width]})`;
3357
- const _getGridOffsetXXL = (width) => `calc(${_gridPadding} + ${_gridSafeZoneXXL} + (${gridGap} + ${gridColumnWidthXXL}) * ${columnMap[width]})`;
3358
-
3359
- const gridFullOffset = _gridPadding;
3360
-
3361
- const gridExtendedOffsetBase = _gridSafeZoneBase;
3362
-
3363
- const gridExtendedOffsetS = _getGridOffsetS('extended');
3364
-
3365
- const gridExtendedOffsetXXL = _getGridOffsetXXL('extended');
3366
-
3367
- const gridExtendedOffset = {
3368
- base: gridExtendedOffsetBase,
3369
- s: gridExtendedOffsetS,
3370
- xxl: gridExtendedOffsetXXL,
3371
- };
3372
-
3373
- const gridBasicOffsetBase = _gridSafeZoneBase;
3374
-
3375
- const gridBasicOffsetS = _getGridOffsetS('basic');
3376
-
3377
- const gridBasicOffsetXXL = _getGridOffsetXXL('basic');
3378
-
3379
- const gridBasicOffset = {
3380
- base: gridBasicOffsetBase,
3381
- s: gridBasicOffsetS,
3382
- xxl: gridBasicOffsetXXL,
3383
- };
3384
-
3385
- const gridNarrowOffsetBase = _gridSafeZoneBase;
3386
-
3387
- const gridNarrowOffsetS = _getGridOffsetS('narrow');
3388
-
3389
- const gridNarrowOffsetXXL = _getGridOffsetXXL('narrow');
3390
-
3391
- const gridNarrowOffset = {
3392
- base: gridNarrowOffsetBase,
3393
- s: gridNarrowOffsetS,
3394
- xxl: gridNarrowOffsetXXL,
3395
- };
3396
-
3397
- const motionDurationShort = '0.25s';
3398
-
3399
- const motionEasingBase = 'cubic-bezier(0.25,0.1,0.25,1)';
3400
-
3401
- const breakpoints = ['base', 'xs', 's', 'm', 'l', 'xl', 'xxl'];
3445
+ var css = rule.toString(options);
3446
+ if (!css && !link) continue;
3447
+ if (str) str += '\n';
3448
+ str += css;
3449
+ }
3450
+ }
3451
+ }
3452
+ return str;
3453
+ };
3454
+ }
3455
+ }
3456
+ function jssCombineAndSortMQ(options) {
3457
+ if (options === void 0) {
3458
+ options = {};
3459
+ }
3460
+ return {
3461
+ onProcessSheet: function (sheet) {
3462
+ recursive(options, sheet);
3463
+ }
3464
+ };
3465
+ }
3402
3466
 
3403
- function getMediaQueryMax(max) {
3404
- return `@media(max-width:${breakpoint[max] - 1}px)`;
3467
+ dist = jssCombineAndSortMQ;
3468
+ return dist;
3405
3469
  }
3406
3470
 
3407
- const motionDurationLong = '0.6s';
3471
+ var distExports = requireDist();
3472
+ var jssPluginSortMediaQueries = /*@__PURE__*/getDefaultExportFromCjs(distExports);
3408
3473
 
3409
- const motionDurationModerate = '0.4s';
3474
+ const isDisabledOrLoading = (disabled, loading) => {
3475
+ return disabled || loading;
3476
+ };
3410
3477
 
3411
- const motionDurationVeryLong = '1.2s';
3478
+ const hasWindow = typeof window !== 'undefined';
3412
3479
 
3413
- const motionEasingIn = 'cubic-bezier(0,0,0.2,1)';
3480
+ const isHighContrastMode = hasWindow && window.matchMedia?.('(forced-colors: active)').matches;
3414
3481
 
3415
- const motionEasingOut = 'cubic-bezier(0.4,0,0.5,1)';
3482
+ const lighten = (hsl) => {
3483
+ return changeColor(hsl, 15);
3484
+ };
3485
+ const darken = (hsl) => {
3486
+ return changeColor(hsl, -15);
3487
+ };
3488
+ const changeColor = (hsl, lightness) => {
3489
+ return hsl.replace(/\s(\d+)(%?)\//, (_, p1, p2) => {
3490
+ return ` ${Math.min(Math.max(Number.parseInt(p1, 10) + lightness, 0), 100)}${p2}/`;
3491
+ });
3492
+ };
3416
3493
 
3417
- const spacingStaticXSmall = '4px';
3494
+ const parseJSON = (prop) => {
3495
+ if (typeof prop === 'string') {
3496
+ try {
3497
+ // prop is potentially JSON parsable string, e.g. "{ base: 'block', l: 'inline' }" or "true" or "false"
3498
+ return JSON.parse(prop
3499
+ .replace(/'/g, '"') // convert single quotes to double quotes
3500
+ .replace(/[\s"]?([a-z]+)[\s"]?:([^//])/g, '"$1":$2') // wrap keys in double quotes if they don't have them but ignore potential urls
3501
+ );
3502
+ }
3503
+ catch {
3504
+ // prop is string, e.g. "block" or "inline"
3505
+ return prop;
3506
+ }
3507
+ }
3508
+ else {
3509
+ // prop is object, e.g. { base: 'block', l: 'inline' } or number, e.g. 123 or boolean, e.g. true
3510
+ return prop;
3511
+ }
3512
+ };
3418
3513
 
3419
- const spacingStaticSmall = '8px';
3514
+ // NOTE: handpicked selection of plugins from jss-preset-default
3515
+ const jss = createJss({
3516
+ plugins: [
3517
+ jssGlobal(),
3518
+ jssNested(),
3519
+ camelCase(),
3520
+ jssPluginSortMediaQueries({ combineMediaQueries: true }),
3521
+ ],
3522
+ });
3523
+ const getCss = (jssStyles) => jss
3524
+ .createStyleSheet(jssStyles, {
3525
+ generateId: (rule) => rule.key,
3526
+ })
3527
+ .toString();
3528
+ const supportsConstructableStylesheets = () => {
3529
+ try {
3530
+ return typeof new CSSStyleSheet().replaceSync === 'function';
3531
+ }
3532
+ catch {
3533
+ return false;
3534
+ }
3535
+ };
3536
+ // determine it once
3537
+ supportsConstructableStylesheets();
3538
+ const buildResponsiveStyles = (rawValue, getJssStyle) => {
3539
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3540
+ const value = parseJSON(rawValue);
3541
+ return typeof value === 'object'
3542
+ ? Object.keys(value)
3543
+ // base styles are applied on root object, responsive styles are nested within
3544
+ // hence it is used as the initial object within reduce function
3545
+ .filter((key) => key !== 'base')
3546
+ .reduce((result, breakpointValue) => ({
3547
+ ...result,
3548
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3549
+ [getMediaQueryMin(breakpointValue)]: getJssStyle(value[breakpointValue]),
3550
+ }), getJssStyle(value.base))
3551
+ : getJssStyle(value);
3552
+ };
3553
+ const isObject = (obj) => typeof obj === 'object' && !Array.isArray(obj);
3554
+ // NOTE: taken from https://stackoverflow.com/a/48218209
3555
+ const mergeDeep = (...objects) => {
3556
+ return objects.reduce((prev, obj) => {
3557
+ Object.keys(obj).forEach((key) => {
3558
+ const pVal = prev[key];
3559
+ const oVal = obj[key];
3560
+ if (isObject(pVal) && isObject(oVal)) {
3561
+ prev[key] = mergeDeep(pVal, oVal);
3562
+ }
3563
+ else {
3564
+ prev[key] = oVal;
3565
+ }
3566
+ });
3567
+ return prev;
3568
+ }, {});
3569
+ };
3420
3570
 
3421
- const spacingStaticMedium = '16px';
3571
+ // TODO: Use function from ./jss (Causes bundling issues)
3572
+ (() => {
3573
+ try {
3574
+ return typeof new CSSStyleSheet().replaceSync === 'function';
3575
+ }
3576
+ catch {
3577
+ return false;
3578
+ }
3579
+ })(); // determine it once
3422
3580
 
3423
- const spacingStaticLarge = '32px';
3581
+ const attributeMutationMap = new Map();
3582
+ hasWindow &&
3583
+ new MutationObserver((mutations) => {
3584
+ for (const mutation of mutations
3585
+ // reduce array to only entries that have really a changed value
3586
+ .filter((mutation) => mutation.oldValue !== mutation.target.getAttribute(mutation.attributeName))
3587
+ // remove duplicates so we execute callback only once per node
3588
+ .filter((mutation, idx, arr) => arr.findIndex((m) => m.target === mutation.target) === idx)) {
3589
+ attributeMutationMap.get(mutation.target)?.();
3590
+ }
3591
+ });
3424
3592
 
3425
- const spacingFluidXSmall = 'clamp(4px, 0.25vw + 3px, 8px)';
3593
+ const mediaQueries = Object.values(breakpoint).map((v) => `(min-width:${v}px)`);
3594
+ hasWindow && window.matchMedia ? mediaQueries.map(window.matchMedia) : [];
3426
3595
 
3427
- const spacingFluidSmall = 'clamp(8px, 0.5vw + 6px, 16px)';
3596
+ Object.entries(breakpoint).reduce((result, [key, val]) => ({ ...result, [`${val}px`]: key }), {});
3428
3597
 
3429
- const spacingFluidLarge = 'clamp(32px, 2.75vw + 23px, 76px)';
3598
+ const hasVisibleIcon = (iconName, iconSource) => {
3599
+ return iconName !== 'none' || !!iconSource;
3600
+ };
3430
3601
 
3431
- const _displayFontPartA = `${fontStyleNormal} ${fontVariant} ${fontWeightRegular} `;
3432
- const _displayFontPartB = `/${fontLineHeight} ${fontFamily}`;
3602
+ /**
3603
+ * Map of observed nodes and their corresponding callback functions.
3604
+ */
3605
+ const observedNodesMap = new Map();
3606
+ /**
3607
+ * Mutation observer for observing changes in the children of observed nodes.
3608
+ */
3609
+ hasWindow &&
3610
+ new MutationObserver((mutations) => {
3611
+ // there may be race conditions in jsdom-polyfill tests where the map is already empty when a mutation happens
3612
+ if (observedNodesMap.size > 0) {
3613
+ const observedNodes = Array.from(observedNodesMap.keys());
3614
+ // remove duplicates so we execute callback only once per node
3615
+ for (const mutation of mutations.filter((mutation, idx, arr) => arr.findIndex((m) => m.target === mutation.target) === idx)) {
3616
+ for (const node of observedNodes.filter((node) => node.contains(mutation.target))) {
3617
+ observedNodesMap.get(node)?.();
3618
+ }
3619
+ }
3620
+ }
3621
+ });
3433
3622
 
3434
- const displayMediumStyle = {
3435
- font: `${_displayFontPartA}${fontSizeDisplayMedium}${_displayFontPartB}`,
3436
- };
3623
+ const getCDNBaseURL = () => global.PORSCHE_DESIGN_SYSTEM_CDN_URL + "/porsche-design-system";
3437
3624
 
3438
- const displayLargeStyle = {
3439
- font: `${_displayFontPartA}${fontSizeDisplayLarge}${_displayFontPartB}`,
3440
- };
3625
+ // index.ts
3626
+ var MODEL_SIGNATURES_MANIFEST = { "718": { "src": "718.493a9e3.svg", "width": 79, "height": 26 }, "911": { "src": "911.b68f913.svg", "width": 94, "height": 25 }, "boxster": { "src": "boxster.c321738.svg", "width": 239, "height": 26 }, "cayenne": { "src": "cayenne.2556201.svg", "width": 245, "height": 35 }, "cayman": { "src": "cayman.cc89196.svg", "width": 229, "height": 35 }, "gt3-rs": { "src": "gt3-rs.03ac3ee.svg", "width": 238, "height": 25 }, "gt3": { "src": "gt3.bd3186c.svg", "width": 151, "height": 25 }, "gts": { "src": "gts.99bd35e.svg", "width": 121, "height": 25 }, "macan": { "src": "macan.a1844f4.svg", "width": 196, "height": 26 }, "panamera": { "src": "panamera.6dae809.svg", "width": 260, "height": 25 }, "taycan": { "src": "taycan.df444c6.svg", "width": 167, "height": 36 }, "turbo-s": { "src": "turbo-s.73f1e10.svg", "width": 199, "height": 25 }, "turbo": { "src": "turbo.6a4084a.svg", "width": 143, "height": 25 } };
3441
3627
 
3442
- const _headingFontPartA = `${fontStyleNormal} ${fontVariant} ${fontWeightSemiBold} `;
3443
- const _headingFontPartB = `/${fontLineHeight} ${fontFamily}`;
3628
+ const hasDocument = typeof document !== 'undefined';
3444
3629
 
3445
- const headingSmallStyle = {
3446
- font: `${_headingFontPartA}${fontSizeHeadingSmall}${_headingFontPartB}`,
3447
- };
3630
+ const hasShowPickerSupport = () => (hasDocument &&
3631
+ 'showPicker' in HTMLInputElement.prototype &&
3632
+ CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3448
3633
 
3449
- const headingMediumStyle = {
3450
- font: `${_headingFontPartA}${fontSizeHeadingMedium}${_headingFontPartB}`,
3634
+ const prefix = `[Porsche Design System v${"3.31.0-rc.0"}]` // this part isn't covered by unit tests
3635
+ ;
3636
+ const consoleError = (...messages) => {
3637
+ console.error(prefix, ...messages); // eslint-disable-line no-console
3451
3638
  };
3452
3639
 
3453
- const headingLargeStyle = {
3454
- font: `${_headingFontPartA}${fontSizeHeadingLarge}${_headingFontPartB}`,
3455
- };
3640
+ /**
3641
+ * Applies a style only on Chromium based browsers by using a media query which is only supported there.
3642
+ * https://browserstack.com/guide/create-browser-specific-css
3643
+ *
3644
+ * @param {JssStyle} style - The style to be applied when the Chromium media query is supported.
3645
+ * @returns {JssStyle} - The Chromium media query containing the style.
3646
+ */
3647
+ const supportsChromiumMediaQuery = (style) => ({
3648
+ '@media screen and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm)': style,
3649
+ });
3456
3650
 
3457
- const headingXLargeStyle = {
3458
- font: `${_headingFontPartA}${fontSizeHeadingXLarge}${_headingFontPartB}`,
3651
+ const isThemeAuto = (theme) => {
3652
+ return theme === 'auto';
3459
3653
  };
3460
3654
 
3461
- const headingXXLargeStyle = {
3462
- font: `${_headingFontPartA}${fontSizeHeadingXXLarge}${_headingFontPartB}`,
3655
+ const isThemeDark = (theme) => {
3656
+ return theme === 'dark';
3463
3657
  };
3464
3658
 
3465
- const _textFontPartA = `${fontStyleNormal} ${fontVariant} ${fontWeightRegular} `;
3466
- const _textFontPartB = `/${fontLineHeight} ${fontFamily}`;
3659
+ const HEADING_TAGS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
3467
3660
 
3468
- const textXXSmallStyle = {
3469
- font: `${_textFontPartA}${fontSizeTextXXSmall}${_textFontPartB}`,
3470
- ...fontHyphenationStyle,
3471
- };
3661
+ const headerSlot = 'header';
3662
+ const anchorSlot = 'anchor';
3472
3663
 
3473
- const textXSmallStyle = {
3474
- font: `${_textFontPartA}${fontSizeTextXSmall}${_textFontPartB}`,
3475
- ...fontHyphenationStyle,
3664
+ const formatObjectOutput = (value) => {
3665
+ return JSON.stringify(value)
3666
+ .replace(/"([a-zA-Z?]+)":/g, '$1:') // remove double quotes from keys
3667
+ .replace(/([,:{])/g, '$1 ') // add space after following: ,:{
3668
+ .replace(/(})/g, ' $1') // add space before following: }
3669
+ .replace(/^"(.+)"$/, '$1'); // remove wrapping double quotes
3476
3670
  };
3477
-
3478
- const textSmallStyle = {
3479
- font: `${_textFontPartA}${fontSizeTextSmall}${_textFontPartB}`,
3480
- ...fontHyphenationStyle,
3671
+ const formatArrayOutput = (value) => {
3672
+ return (
3673
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
3674
+ JSON.stringify(value.map((x) => (x === undefined ? `${x}` : x))) // wrap undefined in quotes to not convert it to null
3675
+ .replace(/'/g, '') // remove single quotes
3676
+ // eslint-disable-next-line @typescript-eslint/quotes
3677
+ .replace(/"/g, "'") // replace double quotes with single quotes
3678
+ .replace(/'(undefined)'/, '$1') // remove quotes around undefined
3679
+ .replace(/,/g, ', ') // add space after comma
3680
+ );
3681
+ };
3682
+ const printErrorMessage = ({ propName, propValue, // TODO: might be nicer if this is always a string
3683
+ propType, componentName, }) => {
3684
+ consoleError(`Invalid property '${propName}' with value '${internalValidateProps.formatObjectOutput(propValue)}' supplied to ${componentName}, expected one of: ${propType}`);
3685
+ };
3686
+ const isValueNotOfType = (propValue, propType) => {
3687
+ return propValue !== undefined && typeof propValue !== propType;
3688
+ };
3689
+ const validateValueOfType = (propName, propValue, propType) => {
3690
+ if (internalValidateProps.isValueNotOfType(propValue, propType)) {
3691
+ return { propName, propValue, propType };
3692
+ }
3693
+ return undefined;
3481
3694
  };
3482
-
3483
- const textMediumStyle = {
3484
- font: `${_textFontPartA}${fontSizeTextMedium}${_textFontPartB}`,
3485
- ...fontHyphenationStyle,
3695
+ const getBreakpointCustomizableStructure = (allowedValues) => {
3696
+ return breakpointCustomizableTemplate.replace(/value/g, allowedValues !== 'boolean' && allowedValues !== 'number'
3697
+ ? internalValidateProps
3698
+ .formatArrayOutput(allowedValues)
3699
+ .replace(/\[/g, '(') // starting inline type literal array
3700
+ .replace(/]/g, ')[]') // ending inline type literal array
3701
+ .replace(/,/g, ' |') // replace commas with a pipe
3702
+ : allowedValues);
3703
+ };
3704
+ const getAriaStructure = (allowedAriaAttributes) => {
3705
+ return (internalValidateProps
3706
+ .formatObjectOutput(allowedAriaAttributes.reduce((prev, key) => ({
3707
+ ...prev,
3708
+ [key]: 'value',
3709
+ }), {}))
3710
+ .replace(/":/g, '"?:') // add optional modifier on keys before colon
3711
+ // eslint-disable-next-line @typescript-eslint/quotes
3712
+ .replace(/"/g, "'") // replace double quotes with single quotes
3713
+ );
3714
+ };
3715
+ const getShapeStructure = (shapeStructure) => {
3716
+ return internalValidateProps
3717
+ .formatObjectOutput(Object.keys(shapeStructure).reduce((prev, key) => ({ ...prev, [key]: shapeStructure[key].name }), {}))
3718
+ .replace(/"/g, ''); // remove double quotes
3719
+ };
3720
+ const isBreakpointCustomizableValueInvalid = (value, allowedValues) => {
3721
+ return allowedValues === 'boolean' || allowedValues === 'number'
3722
+ ? internalValidateProps.isValueNotOfType(value, allowedValues)
3723
+ : !allowedValues.includes(value);
3486
3724
  };
3487
-
3488
- const textLargeStyle = {
3489
- font: `${_textFontPartA}${fontSizeTextLarge}${_textFontPartB}`,
3490
- ...fontHyphenationStyle,
3725
+ /**
3726
+ * Validates an array using a provided validator function and returns the first encountered validation error.
3727
+ *
3728
+ * @param {string} propName - The name of the property being validated.
3729
+ * @param {any} arr - The input to be validated.
3730
+ * @param {ValidatorFunction} validator - The validator function that checks each array item.
3731
+ * @returns {ValidationError | undefined} The first encountered validation error object, or undefined if the array is valid.
3732
+ */
3733
+ const isValidArray = (propName, arr, validator) => {
3734
+ const validationError = Array.isArray(arr)
3735
+ ? validator(propName, arr.find((item) => validator(propName, item)))
3736
+ : {
3737
+ propName,
3738
+ propValue: arr,
3739
+ propType: validator(propName, null).propType, // Get propType by passing in null which will always result in error
3740
+ };
3741
+ if (validationError) {
3742
+ return { ...validationError, propType: `${validationError.propType}[]` };
3743
+ }
3744
+ return undefined;
3491
3745
  };
3746
+ const internalValidateProps = {
3747
+ isValueNotOfType,
3748
+ formatArrayOutput,
3749
+ formatObjectOutput,
3750
+ printErrorMessage,
3751
+ validateValueOfType,
3752
+ isValidArray,
3753
+ isBreakpointCustomizableValueInvalid,
3754
+ getBreakpointCustomizableStructure,
3755
+ getAriaStructure,
3756
+ getShapeStructure,
3757
+ };
3758
+ const breakpointCustomizableTemplate = `value, ${internalValidateProps
3759
+ .formatObjectOutput(breakpoints.reduce((prev, key) => ({ ...prev, [key + (key !== 'base' ? '?' : '')]: 'value' }), {}))
3760
+ .replace(/"/g, '')}`;
3761
+
3762
+ const OPTION_LIST_SAFE_ZONE = 6;
3492
3763
 
3493
3764
  /* Auto Generated Start */
3494
3765
  const themeLight = {
@@ -3752,181 +4023,10 @@ const forcedColorsMediaQuery = (style) => {
3752
4023
  return { '@media (forced-colors: active)': style };
3753
4024
  };
3754
4025
 
3755
- const parseJSON = (prop) => {
3756
- if (typeof prop === 'string') {
3757
- try {
3758
- // prop is potentially JSON parsable string, e.g. "{ base: 'block', l: 'inline' }" or "true" or "false"
3759
- return JSON.parse(prop
3760
- .replace(/'/g, '"') // convert single quotes to double quotes
3761
- .replace(/[\s"]?([a-z]+)[\s"]?:([^//])/g, '"$1":$2') // wrap keys in double quotes if they don't have them but ignore potential urls
3762
- );
3763
- }
3764
- catch {
3765
- // prop is string, e.g. "block" or "inline"
3766
- return prop;
3767
- }
3768
- }
3769
- else {
3770
- // prop is object, e.g. { base: 'block', l: 'inline' } or number, e.g. 123 or boolean, e.g. true
3771
- return prop;
3772
- }
3773
- };
3774
-
3775
- // NOTE: handpicked selection of plugins from jss-preset-default
3776
- const jss = createJss({
3777
- plugins: [
3778
- jssGlobal(),
3779
- jssNested(),
3780
- camelCase(),
3781
- jssPluginSortMediaQueries({ combineMediaQueries: true }),
3782
- ],
3783
- });
3784
- const getCss = (jssStyles) => jss
3785
- .createStyleSheet(jssStyles, {
3786
- generateId: (rule) => rule.key,
3787
- })
3788
- .toString();
3789
- const supportsConstructableStylesheets = () => {
3790
- try {
3791
- return typeof new CSSStyleSheet().replaceSync === 'function';
3792
- }
3793
- catch {
3794
- return false;
3795
- }
3796
- };
3797
- // determine it once
3798
- supportsConstructableStylesheets();
3799
- const buildResponsiveStyles = (rawValue, getJssStyle) => {
3800
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3801
- const value = parseJSON(rawValue);
3802
- return typeof value === 'object'
3803
- ? Object.keys(value)
3804
- // base styles are applied on root object, responsive styles are nested within
3805
- // hence it is used as the initial object within reduce function
3806
- .filter((key) => key !== 'base')
3807
- .reduce((result, breakpointValue) => ({
3808
- ...result,
3809
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3810
- [getMediaQueryMin(breakpointValue)]: getJssStyle(value[breakpointValue]),
3811
- }), getJssStyle(value.base))
3812
- : getJssStyle(value);
3813
- };
3814
- const isObject = (obj) => typeof obj === 'object' && !Array.isArray(obj);
3815
- // NOTE: taken from https://stackoverflow.com/a/48218209
3816
- const mergeDeep = (...objects) => {
3817
- return objects.reduce((prev, obj) => {
3818
- Object.keys(obj).forEach((key) => {
3819
- const pVal = prev[key];
3820
- const oVal = obj[key];
3821
- if (isObject(pVal) && isObject(oVal)) {
3822
- prev[key] = mergeDeep(pVal, oVal);
3823
- }
3824
- else {
3825
- prev[key] = oVal;
3826
- }
3827
- });
3828
- return prev;
3829
- }, {});
3830
- };
3831
-
3832
- // TODO: Use function from ./jss (Causes bundling issues)
3833
- (() => {
3834
- try {
3835
- return typeof new CSSStyleSheet().replaceSync === 'function';
3836
- }
3837
- catch {
3838
- return false;
3839
- }
3840
- })(); // determine it once
3841
-
3842
- const attributeMutationMap = new Map();
3843
- hasWindow &&
3844
- new MutationObserver((mutations) => {
3845
- for (const mutation of mutations
3846
- // reduce array to only entries that have really a changed value
3847
- .filter((mutation) => mutation.oldValue !== mutation.target.getAttribute(mutation.attributeName))
3848
- // remove duplicates so we execute callback only once per node
3849
- .filter((mutation, idx, arr) => arr.findIndex((m) => m.target === mutation.target) === idx)) {
3850
- attributeMutationMap.get(mutation.target)?.();
3851
- }
3852
- });
3853
-
3854
- const mediaQueries = Object.values(breakpoint).map((v) => `(min-width:${v}px)`);
3855
- hasWindow && window.matchMedia ? mediaQueries.map(window.matchMedia) : [];
3856
-
3857
- Object.entries(breakpoint).reduce((result, [key, val]) => ({ ...result, [`${val}px`]: key }), {});
3858
-
3859
- const hasVisibleIcon = (iconName, iconSource) => {
3860
- return iconName !== 'none' || !!iconSource;
3861
- };
3862
-
3863
- /**
3864
- * Map of observed nodes and their corresponding callback functions.
3865
- */
3866
- const observedNodesMap = new Map();
3867
- /**
3868
- * Mutation observer for observing changes in the children of observed nodes.
3869
- */
3870
- hasWindow &&
3871
- new MutationObserver((mutations) => {
3872
- // there may be race conditions in jsdom-polyfill tests where the map is already empty when a mutation happens
3873
- if (observedNodesMap.size > 0) {
3874
- const observedNodes = Array.from(observedNodesMap.keys());
3875
- // remove duplicates so we execute callback only once per node
3876
- for (const mutation of mutations.filter((mutation, idx, arr) => arr.findIndex((m) => m.target === mutation.target) === idx)) {
3877
- for (const node of observedNodes.filter((node) => node.contains(mutation.target))) {
3878
- observedNodesMap.get(node)?.();
3879
- }
3880
- }
3881
- }
3882
- });
3883
-
3884
- const getCDNBaseURL = () => global.PORSCHE_DESIGN_SYSTEM_CDN_URL + "/porsche-design-system";
3885
-
3886
- // index.ts
3887
- var MODEL_SIGNATURES_MANIFEST = { "718": { "src": "718.493a9e3.svg", "width": 79, "height": 26 }, "911": { "src": "911.b68f913.svg", "width": 94, "height": 25 }, "boxster": { "src": "boxster.c321738.svg", "width": 239, "height": 26 }, "cayenne": { "src": "cayenne.2556201.svg", "width": 245, "height": 35 }, "cayman": { "src": "cayman.cc89196.svg", "width": 229, "height": 35 }, "gt3-rs": { "src": "gt3-rs.03ac3ee.svg", "width": 238, "height": 25 }, "gt3": { "src": "gt3.bd3186c.svg", "width": 151, "height": 25 }, "gts": { "src": "gts.99bd35e.svg", "width": 121, "height": 25 }, "macan": { "src": "macan.a1844f4.svg", "width": 196, "height": 26 }, "panamera": { "src": "panamera.6dae809.svg", "width": 260, "height": 25 }, "taycan": { "src": "taycan.df444c6.svg", "width": 167, "height": 36 }, "turbo-s": { "src": "turbo-s.73f1e10.svg", "width": 199, "height": 25 }, "turbo": { "src": "turbo.6a4084a.svg", "width": 143, "height": 25 } };
3888
-
3889
- const hasDocument = typeof document !== 'undefined';
3890
-
3891
- const hasShowPickerSupport = () => (hasDocument &&
3892
- 'showPicker' in HTMLInputElement.prototype &&
3893
- CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3894
-
4026
+ // CSS Variable defined in fontHyphenationStyle
3895
4027
  /**
3896
- * Applies a style only on Chromium based browsers by using a media query which is only supported there.
3897
- * https://browserstack.com/guide/create-browser-specific-css
3898
- *
3899
- * @param {JssStyle} style - The style to be applied when the Chromium media query is supported.
3900
- * @returns {JssStyle} - The Chromium media query containing the style.
4028
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
3901
4029
  */
3902
- const supportsChromiumMediaQuery = (style) => ({
3903
- '@media screen and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm)': style,
3904
- });
3905
-
3906
- const isThemeAuto = (theme) => {
3907
- return theme === 'auto';
3908
- };
3909
-
3910
- const isThemeDark = (theme) => {
3911
- return theme === 'dark';
3912
- };
3913
-
3914
- const HEADING_TAGS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
3915
-
3916
- const headerSlot = 'header';
3917
- const anchorSlot = 'anchor';
3918
-
3919
- const formatObjectOutput = (value) => {
3920
- return JSON.stringify(value)
3921
- .replace(/"([a-zA-Z?]+)":/g, '$1:') // remove double quotes from keys
3922
- .replace(/([,:{])/g, '$1 ') // add space after following: ,:{
3923
- .replace(/(})/g, ' $1') // add space before following: }
3924
- .replace(/^"(.+)"$/, '$1'); // remove wrapping double quotes
3925
- };
3926
- `value, ${formatObjectOutput(breakpoints.reduce((prev, key) => ({ ...prev, [key + (key !== 'base' ? '?' : '')]: 'value' }), {})).replace(/"/g, '')}`;
3927
-
3928
- const OPTION_LIST_SAFE_ZONE = 6;
3929
-
3930
4030
  const getComponentCss$1n = (size, compact, open, theme, sticky) => {
3931
4031
  const { primaryColor, hoverColor, contrastLowColor, backgroundColor } = getThemedColors(theme);
3932
4032
  const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, contrastLowColor: contrastLowColorDark, backgroundColor: backgroundColorDark, } = getThemedColors('dark');
@@ -4324,6 +4424,10 @@ const getFunctionalComponentLoadingMessageStyles = () => {
4324
4424
  };
4325
4425
  };
4326
4426
 
4427
+ // CSS Variable defined in fontHyphenationStyle
4428
+ /**
4429
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
4430
+ */
4327
4431
  const getComponentCss$1k = (icon, iconSource, active, isLoading, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, underline, theme) => {
4328
4432
  const hasIcon = hasVisibleIcon(icon, iconSource);
4329
4433
  return getCss(mergeDeep(getLinkButtonPureStyles(icon, iconSource, active, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, underline, false, theme), {
@@ -4362,6 +4466,10 @@ const getFontWeight = (weight) => {
4362
4466
  return fontWeightMap[weight];
4363
4467
  };
4364
4468
 
4469
+ // CSS Variable defined in fontHyphenationStyle
4470
+ /**
4471
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
4472
+ */
4365
4473
  const getComponentCss$1j = (isDisabledOrLoading, aspectRatio, size, weight, background, align, compact, hasGradient, hasFooterSlot, isDisabled) => {
4366
4474
  const isTopAligned = align === 'top';
4367
4475
  return getCss({
@@ -4651,6 +4759,10 @@ const getDisabledColors = (variant, loading, theme) => {
4651
4759
  };
4652
4760
  return colors[variant === 'tertiary' ? 'secondary' : variant];
4653
4761
  };
4762
+ // CSS Variable defined in fontHyphenationStyle
4763
+ /**
4764
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
4765
+ */
4654
4766
  const getComponentCss$1i = (icon, iconSource, variant, hideLabel, disabled, loading, compact, theme) => {
4655
4767
  const disabledOrLoading = isDisabledOrLoading(disabled, loading);
4656
4768
  const { textColor, borderColor, backgroundColor } = getDisabledColors(variant, loading, theme);
@@ -5106,6 +5218,10 @@ const getGradient = (theme, gradientColorTheme) => {
5106
5218
  `rgba(${gradientColor},0.3) 68%,` +
5107
5219
  `rgba(${gradientColor},0)`);
5108
5220
  };
5221
+ // CSS Variable defined in fontHyphenationStyle
5222
+ /**
5223
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
5224
+ */
5109
5225
  const getComponentCss$1g = (gradientColor, hasHeading, hasDescription, hasControlsSlot, headingSize, width, hasPagination, isInfinitePagination, alignHeader, theme, hasNavigation, alignControls) => {
5110
5226
  const { primaryColor, contrastMediumColor } = getThemedColors(theme);
5111
5227
  const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark } = getThemedColors('dark');
@@ -5564,6 +5680,10 @@ const getCheckedSVGBackgroundImage$3 = (fill) => {
5564
5680
  const getIndeterminateSVGBackgroundImage$1 = (fill) => {
5565
5681
  return getInlineSVGBackgroundImage(`<path fill="${fill}" d="m20,11v2H4v-2h16Z"/>`);
5566
5682
  };
5683
+ // CSS Variable defined in fontHyphenationStyle
5684
+ /**
5685
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
5686
+ */
5567
5687
  const getComponentCss$1f = (hideLabel, state, isDisabled, isLoading, theme) => {
5568
5688
  const checkedIconColor = escapeHashCharacter(getInvertedThemedColors(theme).primaryColor);
5569
5689
  const checkedIconColorDark = escapeHashCharacter(getInvertedThemedColors('dark').primaryColor);
@@ -5766,6 +5886,10 @@ const getCheckboxCheckedBaseStyles = (theme, isDisabled, isLoading, state) => {
5766
5886
  const getIndeterminateSVGBackgroundImage = (fill) => {
5767
5887
  return getInlineSVGBackgroundImage(`<path fill="${fill}" d="m20,11v2H4v-2h16Z"/>`);
5768
5888
  };
5889
+ // CSS Variable defined in fontHyphenationStyle
5890
+ /**
5891
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
5892
+ */
5769
5893
  const getComponentCss$1e = (hideLabel, state, isDisabled, isLoading, compact, theme) => {
5770
5894
  const { primaryColor, contrastMediumColor, contrastHighColor, disabledColor, focusColor } = getThemedColors(theme);
5771
5895
  const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark, contrastHighColor: contrastHighColorDark, disabledColor: disabledColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
@@ -7946,6 +8070,10 @@ const getHeadingJssStyle = (theme) => ({
7946
8070
  ...headingSmallStyle,
7947
8071
  ...getTextJssStyle(theme),
7948
8072
  });
8073
+ // CSS Variable defined in fontHyphenationStyle
8074
+ /**
8075
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8076
+ */
7949
8077
  const getComponentCss$X = (state, hasAction, hasClose, theme) => {
7950
8078
  return getCss({
7951
8079
  '@global': {
@@ -7993,6 +8121,10 @@ const getComponentCss$X = (state, hasAction, hasClose, theme) => {
7993
8121
  /**
7994
8122
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
7995
8123
  */
8124
+ // CSS Variable defined in fontHyphenationStyle
8125
+ /**
8126
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8127
+ */
7996
8128
  const getComponentCss$W = (disabled, loading, hideLabel, state, compact, readOnly, theme) => {
7997
8129
  return getCss({
7998
8130
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8016,6 +8148,10 @@ const getComponentCss$W = (disabled, loading, hideLabel, state, compact, readOnl
8016
8148
  /**
8017
8149
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8018
8150
  */
8151
+ // CSS Variable defined in fontHyphenationStyle
8152
+ /**
8153
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8154
+ */
8019
8155
  const getComponentCss$V = (disabled, loading, hideLabel, state, compact, readOnly, theme) => {
8020
8156
  return getCss({
8021
8157
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8036,6 +8172,10 @@ const getComponentCss$V = (disabled, loading, hideLabel, state, compact, readOnl
8036
8172
  /**
8037
8173
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8038
8174
  */
8175
+ // CSS Variable defined in fontHyphenationStyle
8176
+ /**
8177
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8178
+ */
8039
8179
  const getComponentCss$U = (disabled, loading, hideLabel, state, compact, readOnly, theme, controls) => {
8040
8180
  return getCss({
8041
8181
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8061,6 +8201,10 @@ const getComponentCss$U = (disabled, loading, hideLabel, state, compact, readOnl
8061
8201
  /**
8062
8202
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8063
8203
  */
8204
+ // CSS Variable defined in fontHyphenationStyle
8205
+ /**
8206
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8207
+ */
8064
8208
  const getComponentCss$T = (disabled, loading, hideLabel, state, toggle, compact, readOnly, theme) => {
8065
8209
  return getCss({
8066
8210
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8084,6 +8228,10 @@ const getComponentCss$T = (disabled, loading, hideLabel, state, toggle, compact,
8084
8228
  /**
8085
8229
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8086
8230
  */
8231
+ // CSS Variable defined in fontHyphenationStyle
8232
+ /**
8233
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8234
+ */
8087
8235
  const getComponentCss$S = (disabled, loading, hideLabel, state, compact, readOnly, theme, clear) => {
8088
8236
  return getCss({
8089
8237
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8108,6 +8256,10 @@ const getComponentCss$S = (disabled, loading, hideLabel, state, compact, readOnl
8108
8256
  /**
8109
8257
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8110
8258
  */
8259
+ // CSS Variable defined in fontHyphenationStyle
8260
+ /**
8261
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8262
+ */
8111
8263
  const getComponentCss$R = (disabled, loading, hideLabel, state, compact, readOnly, theme) => {
8112
8264
  return getCss({
8113
8265
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8128,6 +8280,10 @@ const getComponentCss$R = (disabled, loading, hideLabel, state, compact, readOnl
8128
8280
  /**
8129
8281
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8130
8282
  */
8283
+ // CSS Variable defined in fontHyphenationStyle
8284
+ /**
8285
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8286
+ */
8131
8287
  const getComponentCss$Q = (disabled, loading, hideLabel, state, compact, readOnly, theme, counter) => {
8132
8288
  return getCss({
8133
8289
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8154,6 +8310,10 @@ const getComponentCss$Q = (disabled, loading, hideLabel, state, compact, readOnl
8154
8310
  /**
8155
8311
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8156
8312
  */
8313
+ // CSS Variable defined in fontHyphenationStyle
8314
+ /**
8315
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8316
+ */
8157
8317
  const getComponentCss$P = (disabled, loading, hideLabel, state, compact, readOnly, theme) => {
8158
8318
  return getCss({
8159
8319
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8177,6 +8337,10 @@ const getComponentCss$P = (disabled, loading, hideLabel, state, compact, readOnl
8177
8337
  /**
8178
8338
  * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
8179
8339
  */
8340
+ // CSS Variable defined in fontHyphenationStyle
8341
+ /**
8342
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8343
+ */
8180
8344
  const getComponentCss$O = (disabled, loading, hideLabel, state, compact, readOnly, theme) => {
8181
8345
  return getCss({
8182
8346
  ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
@@ -8190,6 +8354,10 @@ const getComponentCss$O = (disabled, loading, hideLabel, state, compact, readOnl
8190
8354
  });
8191
8355
  };
8192
8356
 
8357
+ // CSS Variable defined in fontHyphenationStyle
8358
+ /**
8359
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8360
+ */
8193
8361
  const getComponentCss$N = (icon, iconSource, active, stretch, size, hideLabel, alignLabel, underline, hasSlottedAnchor, theme) => {
8194
8362
  return getCss(mergeDeep(getLinkButtonPureStyles(icon, iconSource, active, false, stretch, size, hideLabel, alignLabel, underline, hasSlottedAnchor, theme), hasSlottedAnchor && {
8195
8363
  '@global': addImportantToEachRule({
@@ -8219,6 +8387,10 @@ const getComponentCss$N = (icon, iconSource, active, stretch, size, hideLabel, a
8219
8387
  };
8220
8388
 
8221
8389
  const cssVariableInternalLinkScaling = '--p-internal-link-scaling';
8390
+ // CSS Variable defined in fontHyphenationStyle
8391
+ /**
8392
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8393
+ */
8222
8394
  const getComponentCss$M = (icon, iconSource, variant, hideLabel, hasSlottedAnchor, compact, theme) => {
8223
8395
  const { linkColor } = getHighContrastColors();
8224
8396
  const isPrimary = variant === 'primary';
@@ -8261,6 +8433,10 @@ const getComponentCss$M = (icon, iconSource, variant, hideLabel, hasSlottedAncho
8261
8433
  }));
8262
8434
  };
8263
8435
 
8436
+ // CSS Variable defined in fontHyphenationStyle
8437
+ /**
8438
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8439
+ */
8264
8440
  const getComponentCss$L = (aspectRatio, weight, // to get deprecated semibold typed
8265
8441
  direction, hasDescription) => {
8266
8442
  return getCss({
@@ -8403,6 +8579,10 @@ const getMultilineEllipsis = (lineClamp) => {
8403
8579
  overflow: 'hidden',
8404
8580
  };
8405
8581
  };
8582
+ // CSS Variable defined in fontHyphenationStyle
8583
+ /**
8584
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8585
+ */
8406
8586
  const getComponentCss$K = (hasLikeButton, hasSlottedAnchor, hasPriceOriginal, hasDescription, aspectRatio, theme) => {
8407
8587
  const { primaryColor, contrastHighColor, contrastMediumColor, backgroundSurfaceColor } = getThemedColors(theme);
8408
8588
  const { primaryColor: primaryColorDark, contrastHighColor: contrastHighColorDark, contrastMediumColor: contrastMediumColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, } = getThemedColors('dark');
@@ -8542,6 +8722,10 @@ const getComponentCss$K = (hasLikeButton, hasSlottedAnchor, hasPriceOriginal, ha
8542
8722
  });
8543
8723
  };
8544
8724
 
8725
+ // CSS Variable defined in fontHyphenationStyle
8726
+ /**
8727
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
8728
+ */
8545
8729
  const getComponentCss$J = (aspectRatio, size, weight, // to get deprecated semibold typed
8546
8730
  background, align, compact, hasGradient, hasFooterSlot, isDisabled) => {
8547
8731
  const isTopAligned = align === 'top';
@@ -8936,6 +9120,10 @@ const getComponentCss$G = (model, safeZone, size, color, theme) => {
8936
9120
  };
8937
9121
 
8938
9122
  const cssVarInternalMultiSelectOptionScaling = '--p-internal-multi-select-option-scaling';
9123
+ // CSS Variable defined in fontHyphenationStyle
9124
+ /**
9125
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
9126
+ */
8939
9127
  const getComponentCss$F = (theme, isDisabled, selected) => {
8940
9128
  return getCss({
8941
9129
  '@global': {
@@ -9009,6 +9197,10 @@ const getComponentCss$E = (isDisabled, theme) => {
9009
9197
  };
9010
9198
 
9011
9199
  const cssVarInternalMultiSelectScaling = '--p-internal-multi-select-scaling';
9200
+ // CSS Variable defined in fontHyphenationStyle
9201
+ /**
9202
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
9203
+ */
9012
9204
  const getComponentCss$D = (isOpen, isDisabled, hideLabel, state, compact, theme) => {
9013
9205
  const scalingVar = `var(${cssVarInternalMultiSelectScaling}, ${compact ? 0.5 : 1})`;
9014
9206
  return getCss({
@@ -9197,6 +9389,10 @@ const removeStyles = (selector, styles) => Object.fromEntries(Object.entries(sty
9197
9389
 
9198
9390
  const cssVarInternalPinCodeScaling = '--p-internal-pin-code-scaling';
9199
9391
  const getScalingVar$1 = (compact) => `var(${cssVarInternalPinCodeScaling}, ${compact ? 0.5 : 1})`;
9392
+ // CSS Variable defined in fontHyphenationStyle
9393
+ /**
9394
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
9395
+ */
9200
9396
  const getComponentCss$B = (hideLabel, state, isDisabled, isLoading, length, compact, theme) => {
9201
9397
  const scalingVar = getScalingVar$1(compact);
9202
9398
  const dimension = `max(${fontLineHeight}, ${scalingVar} * (${fontLineHeight} + 10px))`;
@@ -9266,6 +9462,10 @@ const getComponentCss$B = (hideLabel, state, isDisabled, isLoading, length, comp
9266
9462
  const POPOVER_SAFE_ZONE = 8;
9267
9463
 
9268
9464
  const { canvasTextColor } = getHighContrastColors();
9465
+ // CSS Variable defined in fontHyphenationStyle
9466
+ /**
9467
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
9468
+ */
9269
9469
  const getComponentCss$A = (theme) => {
9270
9470
  const { hoverColor, backgroundColor, primaryColor, backgroundSurfaceColor } = getThemedColors(theme);
9271
9471
  const { hoverColor: hoverColorDark, primaryColor: primaryColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, } = getThemedColors('dark');
@@ -9373,6 +9573,10 @@ const getComponentCss$A = (theme) => {
9373
9573
  const getCheckedSVGBackgroundImage$1 = (fill) => {
9374
9574
  return getInlineSVGBackgroundImage(`<circle fill="${fill}" cx="12" cy="12" r="6"/>`);
9375
9575
  };
9576
+ // CSS Variable defined in fontHyphenationStyle
9577
+ /**
9578
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
9579
+ */
9376
9580
  const getComponentCss$z = (hideLabel, state, isDisabled, isLoading, theme) => {
9377
9581
  const checkedIconColor = escapeHashCharacter(getInvertedThemedColors(theme).primaryColor);
9378
9582
  const checkedIconColorDark = escapeHashCharacter(getInvertedThemedColors('dark').primaryColor);
@@ -9458,6 +9662,10 @@ const cssVarInternalRadioGroupOptionScaling = '--p-internal-radio-group-option-s
9458
9662
  const getCheckedSVGBackgroundImage = (fill) => {
9459
9663
  return getInlineSVGBackgroundImage(`<circle fill="${fill}" cx="12" cy="12" r="6"/>`);
9460
9664
  };
9665
+ // CSS Variable defined in fontHyphenationStyle
9666
+ /**
9667
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
9668
+ */
9461
9669
  const getComponentCss$y = (disabled, loading, state, theme) => {
9462
9670
  const { primaryColor, contrastMediumColor, contrastHighColor, disabledColor, focusColor } = getThemedColors(theme);
9463
9671
  const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark, contrastHighColor: contrastHighColorDark, disabledColor: disabledColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
@@ -9650,6 +9858,10 @@ const groupRadioGroupDirectionJssStyles = {
9650
9858
  const getRadioGroupDirectionJssStyles = (direction) => {
9651
9859
  return groupRadioGroupDirectionJssStyles[direction];
9652
9860
  };
9861
+ // CSS Variable defined in fontHyphenationStyle
9862
+ /**
9863
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
9864
+ */
9653
9865
  const getComponentCss$x = (disabled, loading, hideLabel, state, compact, direction, theme) => {
9654
9866
  const scalingVar = `var(${cssVarInternalRadioGroupScaling}, ${compact ? 0.6668 : 1})`;
9655
9867
  const { primaryColor } = getThemedColors(theme);
@@ -9865,10 +10077,14 @@ const getScalableItemStyles = (hasIconAndSlottedContent, compact) => {
9865
10077
  const dimension = `calc(max(${fontLineHeight}, ${scalingVar} * (${fontLineHeight} + 10px)) + (${verticalPadding} + ${borderWidthBase}) * 2)`;
9866
10078
  return { padding, dimension };
9867
10079
  };
10080
+ // CSS Variable defined in fontHyphenationStyle
10081
+ /**
10082
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
10083
+ */
9868
10084
  const getComponentCss$v = (compact, isDisabled, isSelected, hasIcon, hasSlottedContent, theme) => {
9869
10085
  const { buttonColor, labelColor, borderColor, hoverBorderColor } = getColors$2(isDisabled, isSelected, theme);
9870
10086
  const { buttonColor: buttonColorDark, labelColor: labelColorDark, borderColor: borderColorDark, hoverBorderColor: hoverBorderColorDark, } = getColors$2(isDisabled, isSelected, 'dark');
9871
- const scalableItemStyles = getScalableItemStyles(hasIcon && hasSlottedContent, compact);
10087
+ const { dimension, padding } = getScalableItemStyles(hasIcon && hasSlottedContent, compact);
9872
10088
  return getCss({
9873
10089
  '@global': {
9874
10090
  ':host': {
@@ -9884,9 +10100,10 @@ const getComponentCss$v = (compact, isDisabled, isSelected, hasIcon, hasSlottedC
9884
10100
  position: 'relative',
9885
10101
  display: 'block',
9886
10102
  height: '100%',
9887
- minHeight: scalableItemStyles.dimension,
9888
10103
  width: '100%',
9889
- padding: scalableItemStyles.padding,
10104
+ minHeight: dimension,
10105
+ minWidth: dimension,
10106
+ padding: padding,
9890
10107
  margin: 0, // Removes default button margin on safari 15
9891
10108
  border: `${borderWidthBase} solid ${borderColor}`,
9892
10109
  borderRadius: borderRadiusSmall,
@@ -9938,7 +10155,7 @@ const getComponentCss$v = (compact, isDisabled, isSelected, hasIcon, hasSlottedC
9938
10155
  }),
9939
10156
  });
9940
10157
  };
9941
- const getComponentCss$u = (maxWidth, columns, compact) => {
10158
+ const getComponentCss$u = (minWidth, maxWidth, columns, compact) => {
9942
10159
  const scalingVar = getScalingVar(compact);
9943
10160
  return getCss({
9944
10161
  '@global': {
@@ -10180,6 +10397,10 @@ const getComponentCss$t = (isOpen, state, disabled, filter, theme) => {
10180
10397
  }, filter ? getFilterStyles(isOpen, state, disabled, theme) : getButtonStyles(isOpen, state, theme), getListStyles(isOpen, theme)));
10181
10398
  };
10182
10399
 
10400
+ // CSS Variable defined in fontHyphenationStyle
10401
+ /**
10402
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
10403
+ */
10183
10404
  const getComponentCss$s = (isDisabled, hasCustomDropdown, hideLabel, state, theme) => {
10184
10405
  return getCss({
10185
10406
  '@global': {
@@ -10239,6 +10460,10 @@ const getComponentCss$s = (isDisabled, hasCustomDropdown, hideLabel, state, them
10239
10460
  };
10240
10461
 
10241
10462
  const cssVarInternalSelectOptionScaling = '--p-internal-select-option-scaling';
10463
+ // CSS Variable defined in fontHyphenationStyle
10464
+ /**
10465
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
10466
+ */
10242
10467
  const getComponentCss$r = (theme) => {
10243
10468
  return getCss({
10244
10469
  '@global': {
@@ -10263,6 +10488,10 @@ const getComponentCss$r = (theme) => {
10263
10488
  };
10264
10489
 
10265
10490
  const cssVarInternalSelectScaling = '--p-internal-select-scaling';
10491
+ // CSS Variable defined in fontHyphenationStyle
10492
+ /**
10493
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
10494
+ */
10266
10495
  const getComponentCss$q = (isOpen, isDisabled, hideLabel, state, compact, theme) => {
10267
10496
  const scalingVar = `var(${cssVarInternalSelectScaling}, ${compact ? 0.5 : 1})`;
10268
10497
  return getCss({
@@ -10455,6 +10684,10 @@ const getSVGPath = (stepCount, numberedCircleColors, isStateCurrent) => {
10455
10684
  ];
10456
10685
  return svgNumberedCirclePaths[stepCount];
10457
10686
  };
10687
+ // CSS Variable defined in fontHyphenationStyle
10688
+ /**
10689
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
10690
+ */
10458
10691
  const getComponentCss$n = (state, disabled, theme) => {
10459
10692
  const { primaryColor, hoverColor, disabledColor } = getThemedColors(theme);
10460
10693
  const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
@@ -10597,6 +10830,10 @@ const getColors$1 = (checked, disabled, loading, theme) => {
10597
10830
  textColor: disabledOrLoadingColor || primaryColor,
10598
10831
  };
10599
10832
  };
10833
+ // CSS Variable defined in fontHyphenationStyle
10834
+ /**
10835
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
10836
+ */
10600
10837
  const getComponentCss$l = (alignLabel, hideLabel, stretch, checked, disabled, loading, compact, theme) => {
10601
10838
  const { buttonBorderColor, buttonBorderColorHover, buttonBackgroundColor, buttonBackgroundColorHover, toggleBackgroundColor, toggleBackgroundColorHover, textColor, } = getColors$1(checked, disabled, loading, theme);
10602
10839
  const { buttonBorderColor: buttonBorderColorDark, buttonBorderColorHover: buttonBorderColorHoverDark, buttonBackgroundColor: buttonBackgroundColorDark, buttonBackgroundColorHover: buttonBackgroundColorHoverDark, toggleBackgroundColor: toggleBackgroundColorDark, toggleBackgroundColorHover: toggleBackgroundColorHoverDark, textColor: textColorDark, } = getColors$1(checked, disabled, loading, 'dark');
@@ -11143,6 +11380,10 @@ const getThemedBackgroundColor = (tagColor, themedColors) => {
11143
11380
  return colorMap[tagColor];
11144
11381
  };
11145
11382
 
11383
+ // CSS Variable defined in fontHyphenationStyle
11384
+ /**
11385
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
11386
+ */
11146
11387
  const getComponentCss$a = (color, hasLabel, theme) => {
11147
11388
  const themedColors = getThemedColors(theme);
11148
11389
  const themedColorsDark = getThemedColors('dark');
@@ -11329,6 +11570,10 @@ const showCustomCalendarOrTimeIndicator = (isCalendar, isTime) => {
11329
11570
  const cssVariableInputPaddingStart = '--p-internal-text-field-input-padding-start';
11330
11571
  const cssVariableInputPaddingEnd = '--p-internal-text-field-input-padding-end';
11331
11572
  const cssVarInternalTextFieldScaling = '--p-internal-text-field-scaling';
11573
+ // CSS Variable defined in fontHyphenationStyle
11574
+ /**
11575
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
11576
+ */
11332
11577
  const getComponentCss$8 = (isDisabled, isReadonly, hideLabel, state, hasUnitOrVisibleCounter, unitPosition, inputType, showPasswordToggle, isWithinForm, hasSubmitButton, theme, unitLength) => {
11333
11578
  const isSearch = isType(inputType, 'search');
11334
11579
  const isPassword = isType(inputType, 'password');
@@ -11549,6 +11794,10 @@ const sizeMap = {
11549
11794
  large: fontSizeTextLarge,
11550
11795
  'x-large': fontSizeTextXLarge,
11551
11796
  };
11797
+ // CSS Variable defined in fontHyphenationStyle
11798
+ /**
11799
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
11800
+ */
11552
11801
  const getComponentCss$5 = (size, weight, align, color, ellipsis, theme) => {
11553
11802
  return getCss({
11554
11803
  '@global': {
@@ -11568,6 +11817,10 @@ const getComponentCss$5 = (size, weight, align, color, ellipsis, theme) => {
11568
11817
  });
11569
11818
  };
11570
11819
 
11820
+ // CSS Variable defined in fontHyphenationStyle
11821
+ /**
11822
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
11823
+ */
11571
11824
  const getComponentCss$4 = (isDisabled, isReadonly, hideLabel, state, hasCounter, theme) => {
11572
11825
  return getCss({
11573
11826
  '@global': {
@@ -11623,6 +11876,10 @@ const getComponentCss$4 = (isDisabled, isReadonly, hideLabel, state, hasCounter,
11623
11876
  });
11624
11877
  };
11625
11878
 
11879
+ // CSS Variable defined in fontHyphenationStyle
11880
+ /**
11881
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
11882
+ */
11626
11883
  const getComponentCss$3 = (isDisabled, isReadonly, hideLabel, state, counter, resize, theme) => {
11627
11884
  const { primaryColor, contrastLowColor, contrastMediumColor, disabledColor } = getThemedColors(theme);
11628
11885
  const { primaryColor: primaryColorDark, contrastLowColor: contrastLowColorDark, contrastMediumColor: contrastMediumColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
@@ -11750,6 +12007,10 @@ const getKeyframesMobile = (direction, bottomVar) => getKeyframes(direction, {
11750
12007
  transform: `translate3d(0,calc(var(${bottomVar}) + 100%),0)`, // space before and after "+" is crucial
11751
12008
  });
11752
12009
  const toastCloseClassName = 'close';
12010
+ // CSS Variable defined in fontHyphenationStyle
12011
+ /**
12012
+ * @css-variable {"name": "--p-hyphens", "description": "Sets the CSS `hyphens` property for text elements, controlling whether words can break and hyphenate automatically.", "defaultValue": "auto"}
12013
+ */
11753
12014
  const getComponentCss$1 = () => {
11754
12015
  return getCss({
11755
12016
  '@global': {