@proximus/lavender 1.4.1 → 1.4.2

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.
@@ -443,13 +443,8 @@ class WithExtraAttributes extends HTMLElement {
443
443
  this.setAttribute("order--desktop", value);
444
444
  }
445
445
  }
446
- class PxElement extends WithExtraAttributes {
447
- constructor(...adoptedStylesheets) {
448
- super(...adoptedStylesheets);
449
- this.accessorExclusions = [];
450
- this.nativeName = Object.getPrototypeOf(this).constructor.nativeName;
451
- this.accessorExclusions = Object.getPrototypeOf(this).constructor.accessorExclusions || [];
452
- }
446
+ const _PxElement = class _PxElement extends WithExtraAttributes {
447
+ // nativeName: string;
453
448
  static get observedAttributes() {
454
449
  return [
455
450
  ...super.observedAttributes,
@@ -464,9 +459,22 @@ class PxElement extends WithExtraAttributes {
464
459
  this.$el.setAttribute(name, newValue);
465
460
  }
466
461
  }
467
- connectedCallback() {
468
- for (const name of getSupportedPropertyNames(this.nativeName)) {
469
- if (name === "constructor" || this.accessorExclusions.includes(name)) {
462
+ get ctor() {
463
+ return Object.getPrototypeOf(this).constructor;
464
+ }
465
+ constructor(...adoptedStylesheets) {
466
+ super(...adoptedStylesheets);
467
+ if (!this.ctor.supportedPropertyNames) {
468
+ this.ctor.supportedPropertyNames = getSupportedPropertyNames(
469
+ this.ctor.nativeName
470
+ );
471
+ }
472
+ this.enhanceWithNativeProperties();
473
+ }
474
+ enhanceWithNativeProperties() {
475
+ var _a;
476
+ for (const name of this.ctor.supportedPropertyNames) {
477
+ if (name === "constructor" || (((_a = this.ctor) == null ? void 0 : _a.accessorExclusions) ?? []).includes(name)) {
470
478
  continue;
471
479
  }
472
480
  try {
@@ -484,13 +492,9 @@ class PxElement extends WithExtraAttributes {
484
492
  console.warn(`Could not create property ${name} for`, this.$el, e);
485
493
  }
486
494
  }
487
- if (this.isInsideGridOrStack) {
488
- this.$el.style.display = "block";
489
- this.$el.style.height = "100%";
490
- }
491
495
  }
492
496
  get $el() {
493
- return this.shadowRoot.querySelector(this.nativeName);
497
+ return this.shadowRoot.querySelector(this.ctor.nativeName);
494
498
  }
495
499
  _updateAttribute(name, value) {
496
500
  if (value) {
@@ -506,6 +510,16 @@ class PxElement extends WithExtraAttributes {
506
510
  this.removeAttribute(name);
507
511
  }
508
512
  }
513
+ };
514
+ _PxElement.accessorExclusions = [];
515
+ let PxElement = _PxElement;
516
+ class VerticallyExtendedElement extends PxElement {
517
+ connectedCallback() {
518
+ if (this.isInsideGridOrStack) {
519
+ this.$el.style.display = "block";
520
+ this.$el.style.height = "100%";
521
+ }
522
+ }
509
523
  }
510
524
  const gridGapValues = ["", "default", "none", "l"];
511
525
  const flexboxAlignSelfValues = [
@@ -1439,7 +1453,7 @@ class Spacer extends HTMLElement {
1439
1453
  this.isVertical = false;
1440
1454
  }
1441
1455
  static get observedAttributes() {
1442
- return ["grow"];
1456
+ return ["grow", "nogap"];
1443
1457
  }
1444
1458
  attributeChangedCallback(name, oldValue, newValue) {
1445
1459
  if (name === "grow") {
@@ -1453,12 +1467,14 @@ class Spacer extends HTMLElement {
1453
1467
  connectedCallback() {
1454
1468
  this.growValue = this.getAttribute("grow") || `${1}`;
1455
1469
  this.style.flexGrow = this.growValue;
1456
- this.resizeObserver = new ResizeObserver(() => {
1457
- this.handleSizeChange();
1458
- });
1459
- this.isVertical = this.parentElement.localName === "px-vstack" || this.parentElement.style.flexDirection === "column";
1460
- this.resizeObserver.observe(this);
1461
- this.scheduleRecheck();
1470
+ if (this.nogap) {
1471
+ this.resizeObserver = new ResizeObserver(() => {
1472
+ this.handleSizeChange();
1473
+ });
1474
+ this.isVertical = this.parentElement.localName === "px-vstack" || this.parentElement.style.flexDirection === "column";
1475
+ this.resizeObserver.observe(this);
1476
+ this.scheduleRecheck();
1477
+ }
1462
1478
  }
1463
1479
  disconnectedCallback() {
1464
1480
  var _a;
@@ -1509,6 +1525,16 @@ class Spacer extends HTMLElement {
1509
1525
  this.style.flexGrow = this.growValue;
1510
1526
  }
1511
1527
  }
1528
+ get nogap() {
1529
+ return this.hasAttribute("nogap");
1530
+ }
1531
+ set nogap(value) {
1532
+ if (value) {
1533
+ this.setAttribute("nogap", "");
1534
+ } else {
1535
+ this.removeAttribute("nogap");
1536
+ }
1537
+ }
1512
1538
  }
1513
1539
  if (!customElements.get("px-spacer")) {
1514
1540
  customElements.define("px-spacer", Spacer);
@@ -2199,56 +2225,56 @@ const containerStyles = new CSSStyleSheet();
2199
2225
  containerStyles.replaceSync(containerCss);
2200
2226
  const attributeBreakpointCSSSelector$3 = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .container`;
2201
2227
  const paddingPrefix$1 = "px-padding";
2202
- const _Container = class _Container extends PxElement {
2228
+ const containerBreakpoints = [
2229
+ cssTokenBreakpoints(
2230
+ "padding",
2231
+ attributeBreakpointCSSSelector$3,
2232
+ paddingValues,
2233
+ paddingPrefix$1,
2234
+ "--container-padding"
2235
+ ),
2236
+ cssTokenBreakpoints(
2237
+ "padding-inline",
2238
+ attributeBreakpointCSSSelector$3,
2239
+ paddingValues,
2240
+ paddingPrefix$1
2241
+ ),
2242
+ cssTokenBreakpoints(
2243
+ "padding-block",
2244
+ attributeBreakpointCSSSelector$3,
2245
+ paddingValues,
2246
+ paddingPrefix$1
2247
+ ),
2248
+ cssTokenBreakpoints(
2249
+ "padding-top",
2250
+ attributeBreakpointCSSSelector$3,
2251
+ paddingValues,
2252
+ paddingPrefix$1
2253
+ ),
2254
+ cssTokenBreakpoints(
2255
+ "padding-right",
2256
+ attributeBreakpointCSSSelector$3,
2257
+ paddingValues,
2258
+ paddingPrefix$1,
2259
+ "--container-padding-right"
2260
+ ),
2261
+ cssTokenBreakpoints(
2262
+ "padding-bottom",
2263
+ attributeBreakpointCSSSelector$3,
2264
+ paddingValues,
2265
+ paddingPrefix$1
2266
+ ),
2267
+ cssTokenBreakpoints(
2268
+ "padding-left",
2269
+ attributeBreakpointCSSSelector$3,
2270
+ paddingValues,
2271
+ paddingPrefix$1,
2272
+ "--container-padding-left"
2273
+ )
2274
+ ];
2275
+ const _Container = class _Container extends VerticallyExtendedElement {
2203
2276
  constructor() {
2204
- super(
2205
- containerStyles,
2206
- cssTokenBreakpoints(
2207
- "padding",
2208
- attributeBreakpointCSSSelector$3,
2209
- paddingValues,
2210
- paddingPrefix$1,
2211
- "--container-padding"
2212
- ),
2213
- cssTokenBreakpoints(
2214
- "padding-inline",
2215
- attributeBreakpointCSSSelector$3,
2216
- paddingValues,
2217
- paddingPrefix$1
2218
- ),
2219
- cssTokenBreakpoints(
2220
- "padding-block",
2221
- attributeBreakpointCSSSelector$3,
2222
- paddingValues,
2223
- paddingPrefix$1
2224
- ),
2225
- cssTokenBreakpoints(
2226
- "padding-top",
2227
- attributeBreakpointCSSSelector$3,
2228
- paddingValues,
2229
- paddingPrefix$1
2230
- ),
2231
- cssTokenBreakpoints(
2232
- "padding-right",
2233
- attributeBreakpointCSSSelector$3,
2234
- paddingValues,
2235
- paddingPrefix$1,
2236
- "--container-padding-right"
2237
- ),
2238
- cssTokenBreakpoints(
2239
- "padding-bottom",
2240
- attributeBreakpointCSSSelector$3,
2241
- paddingValues,
2242
- paddingPrefix$1
2243
- ),
2244
- cssTokenBreakpoints(
2245
- "padding-left",
2246
- attributeBreakpointCSSSelector$3,
2247
- paddingValues,
2248
- paddingPrefix$1,
2249
- "--container-padding-left"
2250
- )
2251
- );
2277
+ super(containerStyles, ...containerBreakpoints);
2252
2278
  this.template = () => `<div class="container">
2253
2279
  <slot></slot>
2254
2280
  <slot name="anchor-left"></slot>
@@ -2931,7 +2957,6 @@ const _ActionLink = class _ActionLink extends PxElement {
2931
2957
  }
2932
2958
  connectedCallback() {
2933
2959
  var _a;
2934
- super.connectedCallback();
2935
2960
  if (((_a = this.parentElement) == null ? void 0 : _a.localName) === "px-header") {
2936
2961
  this.setAttribute("slot", "header-actions");
2937
2962
  }
@@ -3043,7 +3068,6 @@ const _AgGridTableThButton = class _AgGridTableThButton extends PxElement {
3043
3068
  }
3044
3069
  connectedCallback() {
3045
3070
  var _a, _b, _c;
3046
- super.connectedCallback();
3047
3071
  if (!this.sorting) {
3048
3072
  this.sorting = "none";
3049
3073
  (_a = this.$columnHeader) == null ? void 0 : _a.setAttribute("aria-sort", "none");
@@ -3203,100 +3227,130 @@ if (!customElements.get("px-ag-grid-table-th-content")) {
3203
3227
  customElements.define("px-ag-grid-table-th-content", AgGridTableThContent);
3204
3228
  }
3205
3229
  const bannerCss = ':host{position:relative}:host,:host>*{display:block;box-sizing:border-box}.banner{position:relative;min-height:8em}.banner[reduced]{min-height:5em}px-container{height:100%}.banner-content{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,auto);row-gap:var(--px-spacing-s-mobile);z-index:2;position:relative}[reduced] .banner-content{grid-template-columns:min-content minmax(0,1fr);column-gap:var(--px-spacing-default-mobile)}::slotted([slot="tag"]){grid-area:tag}::slotted([slot="media"]){grid-area:media;align-self:start}::slotted([slot="title"]){grid-area:title}::slotted([slot="description"]){grid-area:description}::slotted([slot="content"]){grid-area:content}:host(:not([reduced])) ::slotted([slot="action"]){grid-area:action;margin-top:calc(var(--px-spacing-default-mobile) - var(--px-spacing-s-mobile))}.contrast-helper{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;display:none;border-radius:var(--px-radius-main)}[contrast-helper-gradient] .contrast-helper{display:block;background-image:linear-gradient(90deg,#fff 23.43%,#fff0 81.69%)}[inverted] :is([contrast-helper-gradient] .contrast-helper){background-image:linear-gradient(90deg,#000 23.43%,#0000 81.69%)}[contrast-helper-overlay] .contrast-helper{display:block;background-color:#ffffffb3}[inverted] :is([contrast-helper-overlay] .contrast-helper){background-color:#0006}@media only screen and (min-width: 48em){.banner-content{row-gap:var(--px-spacing-s-desktop)}[reduced] .banner-content{column-gap:var(--px-spacing-default-desktop)}.banner-content :host(:not([reduced])) ::slotted([slot="action"]){margin-top:calc(var(--px-spacing-default-desktop) - var(--px-spacing-s-desktop))}}@media only screen and (min-width: 64.0625em){.banner-content{row-gap:var(--px-spacing-s-desktop)}[reduced] .banner-content{column-gap:var(--px-spacing-default-desktop)}.banner-content :host(:not([reduced])) ::slotted([slot="action"]){margin-top:calc(var(--px-spacing-default-desktop) - var(--px-spacing-s-desktop))}}';
3206
- const bannerStyles = new CSSStyleSheet();
3207
- bannerStyles.replaceSync(bannerCss);
3208
- const _Banner = class _Banner extends PxElement {
3230
+ const gridCss = ":host{display:block;--grid-cols: initial;--grid-cols--mobile: initial;--grid-cols--tablet: initial;--grid-cols--laptop: initial;--grid-cols--desktop: initial;--justify-content: initial;--justify-items: initial;--align-content: initial;--align-items: initial}.grid{display:grid;grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));justify-content:var(--justify-content);justify-items:var(--justify-items);align-content:var(--align-content);align-items:var(--align-items)}.justify-content-normal{justify-content:normal}.justify-content-start{justify-content:start}.justify-content-end{justify-content:end}.justify-content-center{justify-content:center}.justify-content-space-between{justify-content:space-between}.justify-content-space-around{justify-content:space-around}.justify-content-space-evenly{justify-content:space-evenly}.justify-content-stretch{justify-content:stretch}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.align-content-normal{align-content:normal}.align-content-start{align-content:start}.align-content-end{align-content:end}.align-content-center{align-content:center}.align-content-space-between{align-content:space-between}.align-content-space-around{align-content:space-around}.align-content-space-evenly{align-content:space-evenly}.align-content-stretch{align-content:stretch}.align-items-start{align-items:start}.align-items-end{align-items:end}.align-items-center{align-items:center}.align-items-stretch{align-items:stretch}@media only screen and (max-width: 767px){.grid{grid-template-columns:repeat(var(--grid-cols--mobile, var(--grid-cols)),minmax(0,1fr))}.justify-content-normal-mobile{justify-content:normal}.justify-content-start-mobile{justify-content:start}.justify-content-end-mobile{justify-content:end}.justify-content-center-mobile{justify-content:center}.justify-content-space-between-mobile{justify-content:space-between}.justify-content-space-around-mobile{justify-content:space-around}.justify-content-space-evenly-mobile{justify-content:space-evenly}.justify-content-stretch-mobile{justify-content:stretch}.justify-items-start-mobile{justify-items:start}.justify-items-end-mobile{justify-items:end}.justify-items-center-mobile{justify-items:center}.justify-items-stretch-mobile{justify-items:stretch}.align-content-normal-mobile{align-content:normal}.align-content-start-mobile{align-content:start}.align-content-end-mobile{align-content:end}.align-content-center-mobile{align-content:center}.align-content-space-between-mobile{align-content:space-between}.align-content-space-around-mobile{align-content:space-around}.align-content-space-evenly-mobile{align-content:space-evenly}.align-content-stretch-mobile{align-content:stretch}.align-items-start-mobile{align-items:start}.align-items-end-mobile{align-items:end}.align-items-center-mobile{align-items:center}.align-items-stretch-mobile{align-items:stretch}}@media only screen and (min-width: 48em) and (max-width: 64em){.grid{grid-template-columns:repeat(var(--grid-cols--tablet, var(--grid-cols)),minmax(0,1fr))}.justify-content-normal-tablet{justify-content:normal}.justify-content-start-tablet{justify-content:start}.justify-content-end-tablet{justify-content:end}.justify-content-center-tablet{justify-content:center}.justify-content-space-between-tablet{justify-content:space-between}.justify-content-space-around-tablet{justify-content:space-around}.justify-content-space-evenly-tablet{justify-content:space-evenly}.justify-content-stretch-tablet{justify-content:stretch}.justify-items-start-tablet{justify-items:start}.justify-items-end-tablet{justify-items:end}.justify-items-center-tablet{justify-items:center}.justify-items-stretch-tablet{justify-items:stretch}.align-content-normal-tablet{align-content:normal}.align-content-start-tablet{align-content:start}.align-content-end-tablet{align-content:end}.align-content-center-tablet{align-content:center}.align-content-space-between-tablet{align-content:space-between}.align-content-space-around-tablet{align-content:space-around}.align-content-space-evenly-tablet{align-content:space-evenly}.align-content-stretch-tablet{align-content:stretch}.align-items-start-tablet{align-items:start}.align-items-end-tablet{align-items:end}.align-items-center-tablet{align-items:center}.align-items-stretch-tablet{align-items:stretch}}@media only screen and (min-width: 64.0625em){.grid{grid-template-columns:repeat(var(--grid-cols--laptop, var(--grid-cols)),minmax(0,1fr))}.justify-content-normal-laptop{justify-content:normal}.justify-content-start-laptop{justify-content:start}.justify-content-end-laptop{justify-content:end}.justify-content-center-laptop{justify-content:center}.justify-content-space-between-laptop{justify-content:space-between}.justify-content-space-around-laptop{justify-content:space-around}.justify-content-space-evenly-laptop{justify-content:space-evenly}.justify-content-stretch-laptop{justify-content:stretch}.justify-items-start-laptop{justify-items:start}.justify-items-end-laptop{justify-items:end}.justify-items-center-laptop{justify-items:center}.justify-items-stretch-laptop{justify-items:stretch}.align-content-normal-laptop{align-content:normal}.align-content-start-laptop{align-content:start}.align-content-end-laptop{align-content:end}.align-content-center-laptop{align-content:center}.align-content-space-between-laptop{align-content:space-between}.align-content-space-around-laptop{align-content:space-around}.align-content-space-evenly-laptop{align-content:space-evenly}.align-content-stretch-laptop{align-content:stretch}.align-items-start-laptop{align-items:start}.align-items-end-laptop{align-items:end}.align-items-center-laptop{align-items:center}.align-items-stretch-laptop{align-items:stretch}}";
3231
+ const gridStyles = new CSSStyleSheet();
3232
+ gridStyles.replaceSync(gridCss);
3233
+ const gridColsValues = [
3234
+ "1",
3235
+ "2",
3236
+ "3",
3237
+ "4",
3238
+ "5",
3239
+ "6",
3240
+ "7",
3241
+ "8",
3242
+ "9",
3243
+ "10",
3244
+ "11",
3245
+ "12"
3246
+ ];
3247
+ const contentAlignmentValues = [
3248
+ "",
3249
+ "start",
3250
+ "end",
3251
+ "center",
3252
+ "space-between",
3253
+ "space-around",
3254
+ "space-evenly",
3255
+ "stretch"
3256
+ ];
3257
+ const itemsAlignmentValues = ["", "start", "end", "center", "stretch"];
3258
+ const attributeBreakpointCSSSelector$2 = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .grid`;
3259
+ const gapPrefix$1 = "px-spacing";
3260
+ const gapCssTokenBreakpoints = cssTokenBreakpoints(
3261
+ "gap",
3262
+ attributeBreakpointCSSSelector$2,
3263
+ gapValues,
3264
+ gapPrefix$1,
3265
+ "--grid-gap"
3266
+ );
3267
+ const _Grid = class _Grid extends PxElement {
3209
3268
  constructor() {
3210
- super(bannerStyles);
3211
- this.template = () => `<div class="banner">
3212
- <div class="contrast-helper"></div>
3213
- <px-container class="banner-container" padding="${this.reduced ? "m" : "l"}" padding--mobile="m" border-radius="main" >
3214
- <px-grid gap="none">
3215
- <px-container padding="none" background-color="none">
3216
- <div class="banner-content">
3217
- <slot name="tag"></slot>
3218
- <slot name="media"></slot>
3219
- <slot name="title"></slot>
3220
- <slot name="description"></slot>
3221
- <slot name="content"></slot>
3222
- <slot name="action"></slot>
3223
- </div>
3224
- </px-container>
3225
- </px-grid>
3226
- </px-container>
3269
+ super(gridStyles, gapCssTokenBreakpoints);
3270
+ this.template = () => `<div class="grid">
3271
+ <slot></slot>
3227
3272
  </div>`;
3228
3273
  this.shadowRoot.innerHTML = this.template();
3229
3274
  }
3230
3275
  static get observedAttributes() {
3231
3276
  return [
3232
- "background-color",
3233
- "background-gradient",
3234
- "background-image",
3235
- "background-image--mobile",
3236
- "background-image--tablet",
3237
- "background-image--laptop",
3238
- "background-size",
3239
- "background-position",
3240
- "contrast-helper-gradient",
3241
- "contrast-helper-overlay",
3242
- "has-gridding",
3243
- "has-gridding--mobile",
3244
- "has-gridding--tablet",
3245
- "has-gridding--laptop",
3246
- "reduced",
3247
- "inverted"
3277
+ ...super.observedAttributes,
3278
+ "grid-cols",
3279
+ "grid-cols--mobile",
3280
+ "grid-cols--tablet",
3281
+ "grid-cols--laptop",
3282
+ "justify-content",
3283
+ "justify-items",
3284
+ "align-content",
3285
+ "align-items",
3286
+ "justify-content--mobile",
3287
+ "justify-items--mobile",
3288
+ "align-content--mobile",
3289
+ "align-items--mobile",
3290
+ "justify-content--tablet",
3291
+ "justify-items--tablet",
3292
+ "align-content--tablet",
3293
+ "align-items--tablet",
3294
+ "justify-content--laptop",
3295
+ "justify-items--laptop",
3296
+ "align-content--laptop",
3297
+ "align-items--laptop",
3298
+ "justify-content--desktop",
3299
+ "justify-items--desktop",
3300
+ "align-content--desktop",
3301
+ "align-items--desktop"
3248
3302
  ];
3249
3303
  }
3250
3304
  connectedCallback() {
3251
- var _a;
3252
- (_a = super.connectedCallback) == null ? void 0 : _a.call(this);
3253
- this.createGridTemplateAreas();
3254
- this.createGridding();
3305
+ if (!this.gap) {
3306
+ this.gap = "default";
3307
+ }
3308
+ if (!this.alignItems) {
3309
+ this.alignItems = "stretch";
3310
+ }
3255
3311
  }
3256
3312
  attributeChangedCallback(attrName, oldValue, newValue) {
3257
3313
  if (oldValue !== newValue) {
3258
3314
  switch (attrName) {
3259
- case "background-color":
3260
- this.$container.backgroundColor = backgroundColorValues.indexOf(newValue) > 0 ? newValue : "none";
3261
- break;
3262
- case "background-gradient":
3263
- this.$container.gradient = gradientValues.indexOf(newValue) > 0 ? newValue : "none";
3264
- break;
3265
- case "background-image":
3266
- this.$container.backgroundImage = newValue;
3267
- break;
3268
- case "background-image--mobile":
3269
- this.$container.backgroundImageMobile = newValue;
3270
- break;
3271
- case "background-image--tablet":
3272
- this.$container.backgroundImageTablet = newValue;
3273
- break;
3274
- case "background-image--laptop":
3275
- this.$container.backgroundImageLaptop = newValue;
3276
- break;
3277
- case "background-size":
3278
- this.$container.backgroundSize = backgroundSizeValues.indexOf(newValue) > 0 ? newValue : "";
3279
- break;
3280
- case "background-position":
3281
- this.$container.backgroundPosition = newValue;
3282
- break;
3283
- case "reduced":
3284
- this.$el.toggleAttribute("reduced", newValue !== null);
3285
- this.createGridTemplateAreas();
3315
+ case "grid-cols":
3316
+ case "grid-cols--mobile":
3317
+ case "grid-cols--tablet":
3318
+ case "grid-cols--laptop":
3319
+ this.updateAttribute(attrName, oldValue, newValue, gridColsValues);
3286
3320
  break;
3287
- case "has-gridding":
3288
- case "has-gridding--mobile":
3289
- case "has-gridding--tablet":
3290
- case "has-gridding--laptop":
3291
- this.createGridding();
3321
+ case "justify-content":
3322
+ case "align-content":
3323
+ case "justify-content--mobile":
3324
+ case "align-content--mobile":
3325
+ case "justify-content--tablet":
3326
+ case "align-content--tablet":
3327
+ case "justify-content--laptop":
3328
+ case "align-content--laptop":
3329
+ case "justify-content--desktop":
3330
+ case "align-content--desktop":
3331
+ this.updateAttribute(
3332
+ attrName,
3333
+ oldValue,
3334
+ newValue,
3335
+ contentAlignmentValues
3336
+ );
3292
3337
  break;
3293
- case "inverted":
3294
- for (let i = 0; i < this.$children.length; i++) {
3295
- if (!this.$children[i].hasAttribute("inverted")) {
3296
- this.$children[i].toggleAttribute("inverted");
3297
- }
3298
- }
3299
- this.$el.toggleAttribute("inverted", newValue !== null);
3338
+ case "justify-items":
3339
+ case "align-items":
3340
+ case "justify-items--mobile":
3341
+ case "align-items--mobile":
3342
+ case "justify-items--tablet":
3343
+ case "align-items--tablet":
3344
+ case "justify-items--laptop":
3345
+ case "align-items--laptop":
3346
+ case "justify-items--desktop":
3347
+ case "align-items--desktop":
3348
+ this.updateAttribute(
3349
+ attrName,
3350
+ oldValue,
3351
+ newValue,
3352
+ itemsAlignmentValues
3353
+ );
3300
3354
  break;
3301
3355
  default:
3302
3356
  super.attributeChangedCallback(attrName, oldValue, newValue);
@@ -3304,310 +3358,312 @@ const _Banner = class _Banner extends PxElement {
3304
3358
  }
3305
3359
  }
3306
3360
  }
3307
- createGridTemplateAreas() {
3308
- const grid = this.shadowRoot.querySelector(
3309
- ".banner-content"
3310
- );
3311
- const slots = ["tag", "media", "title", "description", "content", "action"];
3312
- let areas = "";
3313
- if (this.reduced) {
3314
- slots.forEach((name) => {
3315
- const slot = this.shadowRoot.querySelector(
3316
- `slot[name="${name}"]`
3317
- );
3318
- if (slot && slot.assignedElements().length > 0) {
3319
- if (name === "media") return;
3320
- areas += `'media ${name}'
3321
- `;
3322
- }
3323
- });
3324
- } else {
3325
- slots.forEach((name) => {
3326
- const slot = this.shadowRoot.querySelector(
3327
- `slot[name="${name}"]`
3328
- );
3329
- if (slot && slot.assignedElements().length > 0) {
3330
- areas += `'${name}'
3331
- `;
3332
- }
3333
- });
3361
+ updateGap(oldValue, newValue, attrValue) {
3362
+ if (!this.checkName(attrValue, newValue)) {
3363
+ console.error(`${newValue} is not a valid gap value`);
3364
+ return;
3334
3365
  }
3335
- if (!areas) areas = "'content'";
3336
- grid.style.gridTemplateAreas = areas;
3366
+ const updateGapStyle = (value) => {
3367
+ if (value !== null && value !== "" && value !== "default") {
3368
+ this.$el.style.setProperty(
3369
+ `--grid-gap--mobile`,
3370
+ `var(--px-spacing-${value}-mobile)`
3371
+ );
3372
+ this.$el.style.setProperty(
3373
+ `--grid-gap--tablet`,
3374
+ `var(--px-spacing-${value}-tablet)`
3375
+ );
3376
+ this.$el.style.setProperty(
3377
+ `--grid-gap--laptop`,
3378
+ `var(--px-spacing-${value}-laptop)`
3379
+ );
3380
+ }
3381
+ };
3382
+ updateGapStyle(oldValue);
3383
+ updateGapStyle(newValue);
3337
3384
  }
3338
- createGridding() {
3339
- const breakpoints = [
3340
- { prop: "hasGridding", gridProp: "gridCols", attr: "col-span" },
3341
- {
3342
- prop: "hasGriddingMobile",
3343
- gridProp: "gridColsMobile",
3344
- attr: "col-span--mobile"
3345
- },
3346
- {
3347
- prop: "hasGriddingTablet",
3348
- gridProp: "gridColsTablet",
3349
- attr: "col-span--tablet"
3350
- },
3351
- {
3352
- prop: "hasGriddingLaptop",
3353
- gridProp: "gridColsLaptop",
3354
- attr: "col-span--laptop"
3385
+ updateAttribute(attrName, oldValue, newValue, attrValues) {
3386
+ if (!this.checkName(attrValues, newValue)) {
3387
+ console.error(`${newValue} is not an allowed ${attrName} value`);
3388
+ } else if (attrName === "grid-cols" || attrName === "grid-cols--mobile" || attrName === "grid-cols--tablet" || attrName === "grid-cols--laptop" || attrName === "grid-cols--desktop") {
3389
+ this.$el.style.setProperty(`--${attrName}`, newValue);
3390
+ } else {
3391
+ if (oldValue !== null && oldValue !== "" && oldValue !== "default") {
3392
+ this.$el.classList.toggle(`${attrName}-${oldValue}`);
3355
3393
  }
3356
- ];
3357
- const spanElement = this.shadowRoot.querySelector(
3358
- "px-grid > px-container"
3359
- );
3360
- breakpoints.forEach(({ prop, gridProp, attr }) => {
3361
- if (this[prop]) {
3362
- this.$grid[gridProp] = "3";
3363
- spanElement.setAttribute(attr, "2");
3394
+ if (newValue !== null && newValue !== "" && newValue !== "default") {
3395
+ this.$el.classList.toggle(`${attrName}-${newValue}`);
3364
3396
  }
3365
- });
3397
+ }
3366
3398
  }
3367
- get $grid() {
3368
- return this.shadowRoot.querySelector("px-grid");
3399
+ get gap() {
3400
+ return this.getAttribute("gap");
3369
3401
  }
3370
- get $container() {
3371
- return this.shadowRoot.querySelector(".banner-container");
3402
+ set gap(value) {
3403
+ this.setAttribute("gap", value);
3372
3404
  }
3373
- get $children() {
3374
- return this.querySelectorAll("px-banner > *");
3405
+ get gapMobile() {
3406
+ return this.getAttribute("gap--mobile");
3375
3407
  }
3376
- get backgroundColor() {
3377
- return this.getAttribute("background-color");
3408
+ set gapMobile(value) {
3409
+ this.setAttribute("gap--mobile", value);
3378
3410
  }
3379
- set backgroundColor(value) {
3380
- this.setAttribute("background-color", value);
3411
+ get gapTablet() {
3412
+ return this.getAttribute("gap--tablet");
3381
3413
  }
3382
- get gradient() {
3383
- return this.getAttribute("background-gradient");
3414
+ set gapTablet(value) {
3415
+ this.setAttribute("gap--tablet", value);
3384
3416
  }
3385
- set gradient(value) {
3386
- this.setAttribute("background-gradient", value);
3417
+ get gapLaptop() {
3418
+ return this.getAttribute("gap--laptop");
3387
3419
  }
3388
- get backgroundImage() {
3389
- return this.getAttribute("background-image");
3420
+ set gapLaptop(value) {
3421
+ this.setAttribute("gap--laptop", value);
3390
3422
  }
3391
- set backgroundImage(value) {
3392
- this.setAttribute("background-image", value);
3423
+ get gridCols() {
3424
+ return this.getAttribute("grid-cols");
3393
3425
  }
3394
- get backgroundImageMobile() {
3395
- return this.getAttribute("background-image--mobile");
3426
+ set gridCols(value) {
3427
+ this.setAttribute("grid-cols", value);
3396
3428
  }
3397
- set backgroundImageMobile(value) {
3398
- this.setAttribute("background-image--mobile", value);
3429
+ get gridColsMobile() {
3430
+ return this.getAttribute("grid-cols--mobile");
3399
3431
  }
3400
- get backgroundImageTablet() {
3401
- return this.getAttribute("background-image--tablet");
3432
+ set gridColsMobile(value) {
3433
+ this.setAttribute("grid-cols--mobile", value);
3402
3434
  }
3403
- set backgroundImageTablet(value) {
3404
- this.setAttribute("background-image--tablet", value);
3435
+ get gridColsTablet() {
3436
+ return this.getAttribute("grid-cols--tablet");
3405
3437
  }
3406
- get backgroundImageLaptop() {
3407
- return this.getAttribute("background-image--laptop");
3438
+ set gridColsTablet(value) {
3439
+ this.setAttribute("grid-cols--tablet", value);
3408
3440
  }
3409
- set backgroundImageLaptop(value) {
3410
- this.setAttribute("background-image--laptop", value);
3441
+ get gridColsLaptop() {
3442
+ return this.getAttribute("grid-cols--laptop");
3411
3443
  }
3412
- get backgroundSize() {
3413
- return this.getAttribute("background-size");
3444
+ set gridColsLaptop(value) {
3445
+ this.setAttribute("grid-cols--laptop", value);
3414
3446
  }
3415
- set backgroundSize(value) {
3416
- this.setAttribute("background-size", value);
3447
+ get justifyContent() {
3448
+ return this.getAttribute("justify-content");
3417
3449
  }
3418
- get backgroundPosition() {
3419
- return this.getAttribute("background-position");
3450
+ set justifyContent(value) {
3451
+ this.setAttribute("justify-content", value);
3420
3452
  }
3421
- set backgroundPosition(value) {
3422
- this.setAttribute("background-position", value);
3453
+ get justifyItems() {
3454
+ return this.getAttribute("justify-items");
3423
3455
  }
3424
- get gradientContrastHelper() {
3425
- return this.hasAttribute("contrast-helper-gradient");
3456
+ set justifyItems(value) {
3457
+ this.setAttribute("justify-items", value);
3426
3458
  }
3427
- set gradientContrastHelper(value) {
3428
- if (value) {
3429
- this.setAttribute("contrast-helper-gradient", "");
3430
- } else {
3431
- this.removeAttribute("contrast-helper-gradient");
3432
- }
3459
+ get alignContent() {
3460
+ return this.getAttribute("align-content");
3433
3461
  }
3434
- get overlayContrastHelper() {
3435
- return this.hasAttribute("contrast-helper-overlay");
3462
+ set alignContent(value) {
3463
+ this.setAttribute("align-content", value);
3436
3464
  }
3437
- set overlayContrastHelper(value) {
3438
- if (value) {
3439
- this.setAttribute("contrast-helper-overlay", "");
3440
- } else {
3441
- this.removeAttribute("contrast-helper-overlay");
3442
- }
3465
+ get alignItems() {
3466
+ return this.getAttribute("align-items");
3443
3467
  }
3444
- get inverted() {
3445
- return this.hasAttribute("inverted");
3468
+ set alignItems(value) {
3469
+ this.setAttribute("align-items", value);
3446
3470
  }
3447
- set inverted(value) {
3448
- if (value) {
3449
- this.setAttribute("inverted", "");
3450
- } else {
3451
- this.removeAttribute("inverted");
3452
- }
3471
+ get justifyContentMobile() {
3472
+ return this.getAttribute("justify-content--mobile");
3453
3473
  }
3454
- get reduced() {
3455
- return this.hasAttribute("reduced");
3474
+ set justifyContentMobile(value) {
3475
+ this.setAttribute("justify-content--mobile", value);
3456
3476
  }
3457
- set reduced(value) {
3458
- if (value) {
3459
- this.setAttribute("reduced", "");
3460
- } else {
3461
- this.removeAttribute("reduced");
3462
- }
3477
+ get justifyItemsMobile() {
3478
+ return this.getAttribute("justify-items--mobile");
3463
3479
  }
3464
- get hasGridding() {
3465
- return this.hasAttribute("has-gridding");
3480
+ set justifyItemsMobile(value) {
3481
+ this.setAttribute("justify-items--mobile", value);
3466
3482
  }
3467
- set hasGridding(value) {
3468
- if (value) {
3469
- this.setAttribute("has-gridding", "");
3470
- } else {
3471
- this.removeAttribute("has-gridding");
3472
- }
3483
+ get alignContentMobile() {
3484
+ return this.getAttribute("align-content--mobile");
3473
3485
  }
3474
- get hasGriddingMobile() {
3475
- return this.hasAttribute("has-gridding--mobile");
3486
+ set alignContentMobile(value) {
3487
+ this.setAttribute("align-content--mobile", value);
3476
3488
  }
3477
- set hasGriddingMobile(value) {
3478
- if (value) {
3479
- this.setAttribute("has-gridding--mobile", "");
3480
- } else {
3481
- this.removeAttribute("has-gridding--mobile");
3482
- }
3489
+ get alignItemsMobile() {
3490
+ return this.getAttribute("align-items--mobile");
3483
3491
  }
3484
- get hasGriddingTablet() {
3485
- return this.hasAttribute("has-gridding--tablet");
3492
+ set alignItemsMobile(value) {
3493
+ this.setAttribute("align-items--mobile", value);
3486
3494
  }
3487
- set hasGriddingTablet(value) {
3488
- if (value) {
3489
- this.setAttribute("has-gridding--tablet", "");
3490
- } else {
3491
- this.removeAttribute("has-gridding--tablet");
3492
- }
3495
+ get justifyContentTablet() {
3496
+ return this.getAttribute("justify-content--tablet");
3493
3497
  }
3494
- get hasGriddingLaptop() {
3495
- return this.hasAttribute("has-gridding--laptop");
3498
+ set justifyContentTablet(value) {
3499
+ this.setAttribute("justify-content--tablet", value);
3496
3500
  }
3497
- set hasGriddingLaptop(value) {
3498
- if (value) {
3499
- this.setAttribute("has-gridding--laptop", "");
3500
- } else {
3501
- this.removeAttribute("has-gridding--laptop");
3502
- }
3501
+ get justifyItemsTablet() {
3502
+ return this.getAttribute("justify-items--tablet");
3503
3503
  }
3504
- };
3505
- _Banner.nativeName = "div";
3506
- let Banner = _Banner;
3507
- if (!customElements.get("px-banner")) {
3508
- customElements.define("px-banner", Banner);
3509
- }
3510
- const breadcrumbCss = `:host{display:block}:host *{box-sizing:border-box}.breadcrumb{font-family:var(--px-font-family);color:var(--px-color-text-neutral-default);margin:calc(var(--px-spacing-s-mobile) * -1) 0 0 0;padding:0}.breadcrumb div[role=list]{display:flex;flex-wrap:wrap;align-items:center}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-mobile)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){display:flex;align-items:center;margin-right:var(--px-spacing-xs-mobile)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{display:inline-block;content:"";width:16px;height:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-position:50% 50%;mask-position:50% 50%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.90255 3.61987C5.6515 3.8749 5.6515 4.2884 5.90255 4.54343L9.30512 8.00002L5.90255 11.4566C5.6515 11.7116 5.6515 12.1251 5.90255 12.3802C6.1536 12.6352 6.56063 12.6352 6.81169 12.3802L10.6688 8.4618C10.9199 8.20677 10.9199 7.79327 10.6688 7.53823L6.81169 3.61987C6.56063 3.36483 6.1536 3.36483 5.90255 3.61987Z' fill='%23252525'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.90255 3.61987C5.6515 3.8749 5.6515 4.2884 5.90255 4.54343L9.30512 8.00002L5.90255 11.4566C5.6515 11.7116 5.6515 12.1251 5.90255 12.3802C6.1536 12.6352 6.56063 12.6352 6.81169 12.3802L10.6688 8.4618C10.9199 8.20677 10.9199 7.79327 10.6688 7.53823L6.81169 3.61987C6.56063 3.36483 6.1536 3.36483 5.90255 3.61987Z' fill='%23252525'/%3E%3C/svg%3E");background-color:currentColor;color:var(--px-color-icon-neutral-default);margin-left:var(--px-spacing-xs-mobile)}@media only screen and (min-width: 48em){.breadcrumb{margin:calc(var(--px-spacing-s-tablet) * -1) 0 0 0}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-tablet)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){margin-right:var(--px-spacing-xs-tablet)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{margin-left:var(--px-spacing-xs-tablet)}}@media only screen and (min-width: 64.0625em){.breadcrumb{margin:calc(var(--px-spacing-s-laptop) * -1) 0 0 0}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-laptop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){margin-right:var(--px-spacing-xs-laptop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{margin-left:var(--px-spacing-xs-laptop)}}@media only screen and (min-width: 90.0625em){.breadcrumb{margin:calc(var(--px-spacing-s-desktop) * -1) 0 0 0}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-desktop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){margin-right:var(--px-spacing-xs-desktop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{margin-left:var(--px-spacing-xs-desktop)}}:host([inverted]) .breadcrumb{color:var(--px-color-text-neutral-inverted)}:host([inverted]) .breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{color:var(--px-color-icon-neutral-inverted)}`;
3511
- const breadcrumbStyles = new CSSStyleSheet();
3512
- breadcrumbStyles.replaceSync(breadcrumbCss);
3513
- class Breadcrumb extends WithExtraAttributes {
3514
- template() {
3515
- return `
3516
- <nav class="breadcrumb" aria-label="${this.ariaLabel || "Breadcrumb"}">
3517
- <div role="list">
3518
- <slot></slot>
3519
- </div>
3520
- </nav>
3521
- `;
3504
+ set justifyItemsTablet(value) {
3505
+ this.setAttribute("justify-items--tablet", value);
3522
3506
  }
3523
- constructor() {
3524
- super(breadcrumbStyles);
3525
- this.shadowRoot.innerHTML = this.template();
3507
+ get alignContentTablet() {
3508
+ return this.getAttribute("align-content--tablet");
3526
3509
  }
3527
- static get observedAttributes() {
3528
- return [...super.observedAttributes, "inverted", "aria-label"];
3510
+ set alignContentTablet(value) {
3511
+ this.setAttribute("align-content--tablet", value);
3529
3512
  }
3530
- attributeChangedCallback(attrName, oldValue, newValue) {
3531
- if (oldValue !== newValue) {
3532
- switch (attrName) {
3533
- case "aria-label":
3534
- this.$el.setAttribute("aria-label", this.ariaLabel);
3535
- break;
3536
- case "inverted":
3537
- for (let i = 0; i < this.$children.length; i++) {
3538
- if (!this.$children[i].hasAttribute("inverted")) {
3539
- this.$children[i].toggleAttribute("inverted");
3540
- }
3541
- }
3542
- break;
3543
- default:
3544
- super.attributeChangedCallback(attrName, oldValue, newValue);
3545
- break;
3546
- }
3547
- }
3513
+ get alignItemsTablet() {
3514
+ return this.getAttribute("align-items--tablet");
3548
3515
  }
3549
- get $el() {
3550
- return this.shadowRoot.querySelector(".breadcrumb");
3516
+ set alignItemsTablet(value) {
3517
+ this.setAttribute("align-items--tablet", value);
3551
3518
  }
3552
- get $children() {
3553
- return this.querySelectorAll("px-breadcrumb > *");
3519
+ get justifyContentLaptop() {
3520
+ return this.getAttribute("justify-content--laptop");
3554
3521
  }
3555
- get inverted() {
3556
- return this.hasAttribute("inverted");
3522
+ set justifyContentLaptop(value) {
3523
+ this.setAttribute("justify-content--laptop", value);
3557
3524
  }
3558
- set inverted(value) {
3559
- if (value) {
3560
- this.setAttribute("inverted", "");
3561
- } else {
3562
- this.removeAttribute("inverted");
3563
- }
3525
+ get justifyItemsLaptop() {
3526
+ return this.getAttribute("justify-items--laptop");
3564
3527
  }
3565
- get ariaLabel() {
3566
- return this.getAttribute("aria-label");
3528
+ set justifyItemsLaptop(value) {
3529
+ this.setAttribute("justify-items--laptop", value);
3567
3530
  }
3568
- set ariaLabel(value) {
3569
- if (value) {
3570
- this.setAttribute("aria-label", value);
3571
- } else {
3572
- this.removeAttribute("aria-label");
3573
- }
3531
+ get alignContentLaptop() {
3532
+ return this.getAttribute("align-content--laptop");
3574
3533
  }
3534
+ set alignContentLaptop(value) {
3535
+ this.setAttribute("align-content--laptop", value);
3536
+ }
3537
+ get alignItemsLaptop() {
3538
+ return this.getAttribute("align-items--laptop");
3539
+ }
3540
+ set alignItemsLaptop(value) {
3541
+ this.setAttribute("align-items--laptop", value);
3542
+ }
3543
+ get justifyContentDesktop() {
3544
+ return this.getAttribute("justify-content--desktop");
3545
+ }
3546
+ set justifyContentDesktop(value) {
3547
+ this.setAttribute("justify-content--desktop", value);
3548
+ }
3549
+ get justifyItemsDesktop() {
3550
+ return this.getAttribute("justify-items--desktop");
3551
+ }
3552
+ set justifyItemsDesktop(value) {
3553
+ this.setAttribute("justify-items--desktop", value);
3554
+ }
3555
+ get alignContentDesktop() {
3556
+ return this.getAttribute("align-content--desktop");
3557
+ }
3558
+ set alignContentDesktop(value) {
3559
+ this.setAttribute("align-content--desktop", value);
3560
+ }
3561
+ get alignItemsDesktop() {
3562
+ return this.getAttribute("align-items--desktop");
3563
+ }
3564
+ set alignItemsDesktop(value) {
3565
+ this.setAttribute("align-items--desktop", value);
3566
+ }
3567
+ };
3568
+ _Grid.nativeName = "div";
3569
+ let Grid = _Grid;
3570
+ if (!customElements.get("px-grid")) {
3571
+ customElements.define("px-grid", Grid);
3575
3572
  }
3576
- if (!customElements.get("px-breadcrumb")) {
3577
- customElements.define("px-breadcrumb", Breadcrumb);
3578
- }
3579
- const breadcrumbItemCss = ":host{display:block}:host *{box-sizing:border-box}.breadcrumb-item{display:flex}:host:has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item{color:var(--px-color-icon-accent-default)}:host:has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item:hover{color:var(--px-color-text-state-hover-default)}:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{line-height:var(--px-font-line-height-s);font-size:var(--px-text-size-link-s-mobile)}@media only screen and (min-width: 48em){:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{font-size:var(--px-text-size-link-s-tablet)}}@media only screen and (min-width: 64.0625em){:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{font-size:var(--px-text-size-link-s-laptop)}}@media only screen and (min-width: 90.0625em){:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{font-size:var(--px-text-size-link-s-desktop)}}:host([inverted]):has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item{color:var(--px-color-icon-accent-inverted)}:host([inverted]):has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item:hover{color:var(--px-color-text-state-hover-inverted)}";
3580
- const breadcrumbItemStyles = new CSSStyleSheet();
3581
- breadcrumbItemStyles.replaceSync(breadcrumbItemCss);
3582
- const _BreadcrumbItem = class _BreadcrumbItem extends PxElement {
3573
+ const bannerStyles = new CSSStyleSheet();
3574
+ bannerStyles.replaceSync(bannerCss);
3575
+ const _Banner = class _Banner extends VerticallyExtendedElement {
3583
3576
  constructor() {
3584
- super(breadcrumbItemStyles);
3585
- this.template = () => `<div class="breadcrumb-item" role="listitem"><slot></slot></div>`;
3586
- if (this.shadowRoot) {
3587
- this.shadowRoot.innerHTML = this.template();
3588
- }
3577
+ super(bannerStyles);
3578
+ this.template = () => `<div class="banner">
3579
+ <div class="contrast-helper"></div>
3580
+ <px-container class="banner-container" padding="${this.reduced ? "m" : "l"}" padding--mobile="m" border-radius="main" >
3581
+ <px-grid gap="none">
3582
+ <px-container padding="none" background-color="none">
3583
+ <div class="banner-content">
3584
+ <slot name="tag"></slot>
3585
+ <slot name="media"></slot>
3586
+ <slot name="title"></slot>
3587
+ <slot name="description"></slot>
3588
+ <slot name="content"></slot>
3589
+ <slot name="action"></slot>
3590
+ </div>
3591
+ </px-container>
3592
+ </px-grid>
3593
+ </px-container>
3594
+ </div>`;
3595
+ this.shadowRoot.innerHTML = this.template();
3589
3596
  }
3590
3597
  static get observedAttributes() {
3591
- return [...super.observedAttributes, "inverted"];
3598
+ return [
3599
+ "background-color",
3600
+ "background-gradient",
3601
+ "background-image",
3602
+ "background-image--mobile",
3603
+ "background-image--tablet",
3604
+ "background-image--laptop",
3605
+ "background-size",
3606
+ "background-position",
3607
+ "contrast-helper-gradient",
3608
+ "contrast-helper-overlay",
3609
+ "has-gridding",
3610
+ "has-gridding--mobile",
3611
+ "has-gridding--tablet",
3612
+ "has-gridding--laptop",
3613
+ "reduced",
3614
+ "inverted"
3615
+ ];
3592
3616
  }
3593
3617
  connectedCallback() {
3594
- super.connectedCallback();
3595
- if (this.$icon) {
3596
- this.$icon.setAttribute("size", "s");
3597
- }
3598
- if (!this.$link) {
3599
- this.$el.setAttribute("aria-current", "page");
3600
- }
3618
+ var _a;
3619
+ (_a = super.connectedCallback) == null ? void 0 : _a.call(this);
3620
+ this.createGridTemplateAreas();
3621
+ this.createGridding();
3601
3622
  }
3602
3623
  attributeChangedCallback(attrName, oldValue, newValue) {
3603
3624
  if (oldValue !== newValue) {
3604
3625
  switch (attrName) {
3626
+ case "background-color":
3627
+ this.$container.backgroundColor = backgroundColorValues.indexOf(newValue) > 0 ? newValue : "none";
3628
+ break;
3629
+ case "background-gradient":
3630
+ this.$container.gradient = gradientValues.indexOf(newValue) > 0 ? newValue : "none";
3631
+ break;
3632
+ case "background-image":
3633
+ this.$container.backgroundImage = newValue;
3634
+ break;
3635
+ case "background-image--mobile":
3636
+ this.$container.backgroundImageMobile = newValue;
3637
+ break;
3638
+ case "background-image--tablet":
3639
+ this.$container.backgroundImageTablet = newValue;
3640
+ break;
3641
+ case "background-image--laptop":
3642
+ this.$container.backgroundImageLaptop = newValue;
3643
+ break;
3644
+ case "background-size":
3645
+ this.$container.backgroundSize = backgroundSizeValues.indexOf(newValue) > 0 ? newValue : "";
3646
+ break;
3647
+ case "background-position":
3648
+ this.$container.backgroundPosition = newValue;
3649
+ break;
3650
+ case "reduced":
3651
+ this.$el.toggleAttribute("reduced", newValue !== null);
3652
+ this.createGridTemplateAreas();
3653
+ break;
3654
+ case "has-gridding":
3655
+ case "has-gridding--mobile":
3656
+ case "has-gridding--tablet":
3657
+ case "has-gridding--laptop":
3658
+ this.createGridding(newValue);
3659
+ break;
3605
3660
  case "inverted":
3606
3661
  for (let i = 0; i < this.$children.length; i++) {
3607
3662
  if (!this.$children[i].hasAttribute("inverted")) {
3608
3663
  this.$children[i].toggleAttribute("inverted");
3609
3664
  }
3610
3665
  }
3666
+ this.$el.toggleAttribute("inverted", newValue !== null);
3611
3667
  break;
3612
3668
  default:
3613
3669
  super.attributeChangedCallback(attrName, oldValue, newValue);
@@ -3615,19 +3671,336 @@ const _BreadcrumbItem = class _BreadcrumbItem extends PxElement {
3615
3671
  }
3616
3672
  }
3617
3673
  }
3618
- get $link() {
3619
- return this.querySelector("px-a");
3674
+ createGridTemplateAreas() {
3675
+ const grid = this.shadowRoot.querySelector(
3676
+ ".banner-content"
3677
+ );
3678
+ const slots = ["tag", "media", "title", "description", "content", "action"];
3679
+ let areas = "";
3680
+ if (this.reduced) {
3681
+ slots.forEach((name) => {
3682
+ const slot = this.shadowRoot.querySelector(
3683
+ `slot[name="${name}"]`
3684
+ );
3685
+ if (slot && slot.assignedElements().length > 0) {
3686
+ if (name === "media") return;
3687
+ areas += `'media ${name}'
3688
+ `;
3689
+ }
3690
+ });
3691
+ } else {
3692
+ slots.forEach((name) => {
3693
+ const slot = this.shadowRoot.querySelector(
3694
+ `slot[name="${name}"]`
3695
+ );
3696
+ if (slot && slot.assignedElements().length > 0) {
3697
+ areas += `'${name}'
3698
+ `;
3699
+ }
3700
+ });
3701
+ }
3702
+ if (!areas) areas = "'content'";
3703
+ grid.style.gridTemplateAreas = areas;
3620
3704
  }
3621
- get $icon() {
3622
- return this.querySelector("px-icon");
3705
+ createGridding(value) {
3706
+ const breakpoints = [
3707
+ { prop: "hasGridding", gridProp: "gridCols", attr: "col-span" },
3708
+ {
3709
+ prop: "hasGriddingMobile",
3710
+ gridProp: "gridColsMobile",
3711
+ attr: "col-span--mobile"
3712
+ },
3713
+ {
3714
+ prop: "hasGriddingTablet",
3715
+ gridProp: "gridColsTablet",
3716
+ attr: "col-span--tablet"
3717
+ },
3718
+ {
3719
+ prop: "hasGriddingLaptop",
3720
+ gridProp: "gridColsLaptop",
3721
+ attr: "col-span--laptop"
3722
+ }
3723
+ ];
3724
+ const spanElement = this.shadowRoot.querySelector(
3725
+ "px-grid > px-container"
3726
+ );
3727
+ if (value !== null) {
3728
+ breakpoints.forEach(({ prop, gridProp, attr }) => {
3729
+ if (this[prop]) {
3730
+ this.$grid[gridProp] = "3";
3731
+ spanElement.setAttribute(attr, "2");
3732
+ }
3733
+ });
3734
+ } else {
3735
+ breakpoints.forEach(({ gridProp, attr }) => {
3736
+ this.$grid[gridProp] = "1";
3737
+ spanElement.removeAttribute(attr);
3738
+ });
3739
+ }
3740
+ }
3741
+ get $grid() {
3742
+ return this.shadowRoot.querySelector("px-grid");
3743
+ }
3744
+ get $container() {
3745
+ return this.shadowRoot.querySelector(".banner-container");
3623
3746
  }
3624
3747
  get $children() {
3625
- return this.querySelectorAll("px-breadcrumb-item > *");
3748
+ return this.querySelectorAll("px-banner > *");
3626
3749
  }
3627
- get inverted() {
3628
- return this.hasAttribute("inverted");
3750
+ get backgroundColor() {
3751
+ return this.getAttribute("background-color");
3629
3752
  }
3630
- set inverted(value) {
3753
+ set backgroundColor(value) {
3754
+ this.setAttribute("background-color", value);
3755
+ }
3756
+ get gradient() {
3757
+ return this.getAttribute("background-gradient");
3758
+ }
3759
+ set gradient(value) {
3760
+ this.setAttribute("background-gradient", value);
3761
+ }
3762
+ get backgroundImage() {
3763
+ return this.getAttribute("background-image");
3764
+ }
3765
+ set backgroundImage(value) {
3766
+ this.setAttribute("background-image", value);
3767
+ }
3768
+ get backgroundImageMobile() {
3769
+ return this.getAttribute("background-image--mobile");
3770
+ }
3771
+ set backgroundImageMobile(value) {
3772
+ this.setAttribute("background-image--mobile", value);
3773
+ }
3774
+ get backgroundImageTablet() {
3775
+ return this.getAttribute("background-image--tablet");
3776
+ }
3777
+ set backgroundImageTablet(value) {
3778
+ this.setAttribute("background-image--tablet", value);
3779
+ }
3780
+ get backgroundImageLaptop() {
3781
+ return this.getAttribute("background-image--laptop");
3782
+ }
3783
+ set backgroundImageLaptop(value) {
3784
+ this.setAttribute("background-image--laptop", value);
3785
+ }
3786
+ get backgroundSize() {
3787
+ return this.getAttribute("background-size");
3788
+ }
3789
+ set backgroundSize(value) {
3790
+ this.setAttribute("background-size", value);
3791
+ }
3792
+ get backgroundPosition() {
3793
+ return this.getAttribute("background-position");
3794
+ }
3795
+ set backgroundPosition(value) {
3796
+ this.setAttribute("background-position", value);
3797
+ }
3798
+ get gradientContrastHelper() {
3799
+ return this.hasAttribute("contrast-helper-gradient");
3800
+ }
3801
+ set gradientContrastHelper(value) {
3802
+ if (value) {
3803
+ this.setAttribute("contrast-helper-gradient", "");
3804
+ } else {
3805
+ this.removeAttribute("contrast-helper-gradient");
3806
+ }
3807
+ }
3808
+ get overlayContrastHelper() {
3809
+ return this.hasAttribute("contrast-helper-overlay");
3810
+ }
3811
+ set overlayContrastHelper(value) {
3812
+ if (value) {
3813
+ this.setAttribute("contrast-helper-overlay", "");
3814
+ } else {
3815
+ this.removeAttribute("contrast-helper-overlay");
3816
+ }
3817
+ }
3818
+ get inverted() {
3819
+ return this.hasAttribute("inverted");
3820
+ }
3821
+ set inverted(value) {
3822
+ if (value) {
3823
+ this.setAttribute("inverted", "");
3824
+ } else {
3825
+ this.removeAttribute("inverted");
3826
+ }
3827
+ }
3828
+ get reduced() {
3829
+ return this.hasAttribute("reduced");
3830
+ }
3831
+ set reduced(value) {
3832
+ if (value) {
3833
+ this.setAttribute("reduced", "");
3834
+ } else {
3835
+ this.removeAttribute("reduced");
3836
+ }
3837
+ }
3838
+ get hasGridding() {
3839
+ return this.hasAttribute("has-gridding");
3840
+ }
3841
+ set hasGridding(value) {
3842
+ if (value) {
3843
+ this.setAttribute("has-gridding", "");
3844
+ } else {
3845
+ this.removeAttribute("has-gridding");
3846
+ }
3847
+ }
3848
+ get hasGriddingMobile() {
3849
+ return this.hasAttribute("has-gridding--mobile");
3850
+ }
3851
+ set hasGriddingMobile(value) {
3852
+ if (value) {
3853
+ this.setAttribute("has-gridding--mobile", "");
3854
+ } else {
3855
+ this.removeAttribute("has-gridding--mobile");
3856
+ }
3857
+ }
3858
+ get hasGriddingTablet() {
3859
+ return this.hasAttribute("has-gridding--tablet");
3860
+ }
3861
+ set hasGriddingTablet(value) {
3862
+ if (value) {
3863
+ this.setAttribute("has-gridding--tablet", "");
3864
+ } else {
3865
+ this.removeAttribute("has-gridding--tablet");
3866
+ }
3867
+ }
3868
+ get hasGriddingLaptop() {
3869
+ return this.hasAttribute("has-gridding--laptop");
3870
+ }
3871
+ set hasGriddingLaptop(value) {
3872
+ if (value) {
3873
+ this.setAttribute("has-gridding--laptop", "");
3874
+ } else {
3875
+ this.removeAttribute("has-gridding--laptop");
3876
+ }
3877
+ }
3878
+ };
3879
+ _Banner.nativeName = "div";
3880
+ let Banner = _Banner;
3881
+ if (!customElements.get("px-banner")) {
3882
+ customElements.define("px-banner", Banner);
3883
+ }
3884
+ const breadcrumbCss = `:host{display:block}:host *{box-sizing:border-box}.breadcrumb{font-family:var(--px-font-family);color:var(--px-color-text-neutral-default);margin:calc(var(--px-spacing-s-mobile) * -1) 0 0 0;padding:0}.breadcrumb div[role=list]{display:flex;flex-wrap:wrap;align-items:center}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-mobile)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){display:flex;align-items:center;margin-right:var(--px-spacing-xs-mobile)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{display:inline-block;content:"";width:16px;height:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-position:50% 50%;mask-position:50% 50%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.90255 3.61987C5.6515 3.8749 5.6515 4.2884 5.90255 4.54343L9.30512 8.00002L5.90255 11.4566C5.6515 11.7116 5.6515 12.1251 5.90255 12.3802C6.1536 12.6352 6.56063 12.6352 6.81169 12.3802L10.6688 8.4618C10.9199 8.20677 10.9199 7.79327 10.6688 7.53823L6.81169 3.61987C6.56063 3.36483 6.1536 3.36483 5.90255 3.61987Z' fill='%23252525'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.90255 3.61987C5.6515 3.8749 5.6515 4.2884 5.90255 4.54343L9.30512 8.00002L5.90255 11.4566C5.6515 11.7116 5.6515 12.1251 5.90255 12.3802C6.1536 12.6352 6.56063 12.6352 6.81169 12.3802L10.6688 8.4618C10.9199 8.20677 10.9199 7.79327 10.6688 7.53823L6.81169 3.61987C6.56063 3.36483 6.1536 3.36483 5.90255 3.61987Z' fill='%23252525'/%3E%3C/svg%3E");background-color:currentColor;color:var(--px-color-icon-neutral-default);margin-left:var(--px-spacing-xs-mobile)}@media only screen and (min-width: 48em){.breadcrumb{margin:calc(var(--px-spacing-s-tablet) * -1) 0 0 0}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-tablet)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){margin-right:var(--px-spacing-xs-tablet)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{margin-left:var(--px-spacing-xs-tablet)}}@media only screen and (min-width: 64.0625em){.breadcrumb{margin:calc(var(--px-spacing-s-laptop) * -1) 0 0 0}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-laptop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){margin-right:var(--px-spacing-xs-laptop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{margin-left:var(--px-spacing-xs-laptop)}}@media only screen and (min-width: 90.0625em){.breadcrumb{margin:calc(var(--px-spacing-s-desktop) * -1) 0 0 0}.breadcrumb ::slotted(px-breadcrumb-item){margin-top:var(--px-spacing-s-desktop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)){margin-right:var(--px-spacing-xs-desktop)}.breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{margin-left:var(--px-spacing-xs-desktop)}}:host([inverted]) .breadcrumb{color:var(--px-color-text-neutral-inverted)}:host([inverted]) .breadcrumb ::slotted(px-breadcrumb-item:not(:last-child)):after{color:var(--px-color-icon-neutral-inverted)}`;
3885
+ const breadcrumbStyles = new CSSStyleSheet();
3886
+ breadcrumbStyles.replaceSync(breadcrumbCss);
3887
+ class Breadcrumb extends WithExtraAttributes {
3888
+ template() {
3889
+ return `
3890
+ <nav class="breadcrumb" aria-label="${this.ariaLabel || "Breadcrumb"}">
3891
+ <div role="list">
3892
+ <slot></slot>
3893
+ </div>
3894
+ </nav>
3895
+ `;
3896
+ }
3897
+ constructor() {
3898
+ super(breadcrumbStyles);
3899
+ this.shadowRoot.innerHTML = this.template();
3900
+ }
3901
+ static get observedAttributes() {
3902
+ return [...super.observedAttributes, "inverted", "aria-label"];
3903
+ }
3904
+ attributeChangedCallback(attrName, oldValue, newValue) {
3905
+ if (oldValue !== newValue) {
3906
+ switch (attrName) {
3907
+ case "aria-label":
3908
+ this.$el.setAttribute("aria-label", this.ariaLabel);
3909
+ break;
3910
+ case "inverted":
3911
+ for (let i = 0; i < this.$children.length; i++) {
3912
+ if (!this.$children[i].hasAttribute("inverted")) {
3913
+ this.$children[i].toggleAttribute("inverted");
3914
+ }
3915
+ }
3916
+ break;
3917
+ default:
3918
+ super.attributeChangedCallback(attrName, oldValue, newValue);
3919
+ break;
3920
+ }
3921
+ }
3922
+ }
3923
+ get $el() {
3924
+ return this.shadowRoot.querySelector(".breadcrumb");
3925
+ }
3926
+ get $children() {
3927
+ return this.querySelectorAll("px-breadcrumb > *");
3928
+ }
3929
+ get inverted() {
3930
+ return this.hasAttribute("inverted");
3931
+ }
3932
+ set inverted(value) {
3933
+ if (value) {
3934
+ this.setAttribute("inverted", "");
3935
+ } else {
3936
+ this.removeAttribute("inverted");
3937
+ }
3938
+ }
3939
+ get ariaLabel() {
3940
+ return this.getAttribute("aria-label");
3941
+ }
3942
+ set ariaLabel(value) {
3943
+ if (value) {
3944
+ this.setAttribute("aria-label", value);
3945
+ } else {
3946
+ this.removeAttribute("aria-label");
3947
+ }
3948
+ }
3949
+ }
3950
+ if (!customElements.get("px-breadcrumb")) {
3951
+ customElements.define("px-breadcrumb", Breadcrumb);
3952
+ }
3953
+ const breadcrumbItemCss = ":host{display:block}:host *{box-sizing:border-box}.breadcrumb-item{display:flex}:host:has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item{color:var(--px-color-icon-accent-default)}:host:has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item:hover{color:var(--px-color-text-state-hover-default)}:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{line-height:var(--px-font-line-height-s);font-size:var(--px-text-size-link-s-mobile)}@media only screen and (min-width: 48em){:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{font-size:var(--px-text-size-link-s-tablet)}}@media only screen and (min-width: 64.0625em){:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{font-size:var(--px-text-size-link-s-laptop)}}@media only screen and (min-width: 90.0625em){:host:not(:has(px-a[variant=icon-link][color=inherit])) .breadcrumb-item{font-size:var(--px-text-size-link-s-desktop)}}:host([inverted]):has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item{color:var(--px-color-icon-accent-inverted)}:host([inverted]):has(px-a[variant=icon-link][color=inherit]) .breadcrumb-item:hover{color:var(--px-color-text-state-hover-inverted)}";
3954
+ const breadcrumbItemStyles = new CSSStyleSheet();
3955
+ breadcrumbItemStyles.replaceSync(breadcrumbItemCss);
3956
+ const _BreadcrumbItem = class _BreadcrumbItem extends PxElement {
3957
+ constructor() {
3958
+ super(breadcrumbItemStyles);
3959
+ this.template = () => `<div class="breadcrumb-item" role="listitem"><slot></slot></div>`;
3960
+ if (this.shadowRoot) {
3961
+ this.shadowRoot.innerHTML = this.template();
3962
+ }
3963
+ }
3964
+ static get observedAttributes() {
3965
+ return [...super.observedAttributes, "inverted"];
3966
+ }
3967
+ connectedCallback() {
3968
+ if (this.$icon) {
3969
+ this.$icon.setAttribute("size", "s");
3970
+ }
3971
+ if (!this.$link) {
3972
+ this.$el.setAttribute("aria-current", "page");
3973
+ }
3974
+ }
3975
+ attributeChangedCallback(attrName, oldValue, newValue) {
3976
+ if (oldValue !== newValue) {
3977
+ switch (attrName) {
3978
+ case "inverted":
3979
+ for (let i = 0; i < this.$children.length; i++) {
3980
+ if (!this.$children[i].hasAttribute("inverted")) {
3981
+ this.$children[i].toggleAttribute("inverted");
3982
+ }
3983
+ }
3984
+ break;
3985
+ default:
3986
+ super.attributeChangedCallback(attrName, oldValue, newValue);
3987
+ break;
3988
+ }
3989
+ }
3990
+ }
3991
+ get $link() {
3992
+ return this.querySelector("px-a");
3993
+ }
3994
+ get $icon() {
3995
+ return this.querySelector("px-icon");
3996
+ }
3997
+ get $children() {
3998
+ return this.querySelectorAll("px-breadcrumb-item > *");
3999
+ }
4000
+ get inverted() {
4001
+ return this.hasAttribute("inverted");
4002
+ }
4003
+ set inverted(value) {
3631
4004
  if (value) {
3632
4005
  this.setAttribute("inverted", "");
3633
4006
  } else {
@@ -3701,7 +4074,6 @@ const _Button = class _Button extends PxElement {
3701
4074
  ];
3702
4075
  }
3703
4076
  connectedCallback() {
3704
- super.connectedCallback();
3705
4077
  const icons = this.querySelectorAll("px-icon");
3706
4078
  if (icons) {
3707
4079
  icons.forEach((icon) => {
@@ -3954,7 +4326,7 @@ const _ButtonIcon = class _ButtonIcon extends PxElement {
3954
4326
  constructor() {
3955
4327
  super(buttonIconStyles);
3956
4328
  this.template = () => `<slot></slot>`;
3957
- const $root = document.createElement(this.nativeName);
4329
+ const $root = document.createElement(_ButtonIcon.nativeName);
3958
4330
  $root.classList.add("btn-icon");
3959
4331
  $root.innerHTML = this.template();
3960
4332
  this.shadowRoot.appendChild($root);
@@ -3970,7 +4342,6 @@ const _ButtonIcon = class _ButtonIcon extends PxElement {
3970
4342
  ];
3971
4343
  }
3972
4344
  connectedCallback() {
3973
- super.connectedCallback();
3974
4345
  const icon = this.querySelector("px-icon");
3975
4346
  if (icon) {
3976
4347
  const iconSize = icon.getAttribute("size");
@@ -4089,7 +4460,7 @@ let ButtonIcon = _ButtonIcon;
4089
4460
  if (!customElements.get("px-button-icon")) {
4090
4461
  customElements.define("px-button-icon", ButtonIcon);
4091
4462
  }
4092
- const styles$E = ':host{--card-background-color-default: var(--px-color-background-container-light-default);--card-media-left-size-s: 120px;--card-media-left-size-m: 250px;--card-media-left-size: var(--card-media-left-size-s);display:block}:host *{box-sizing:border-box}:host picture{display:none}:host([media-position="background"]) picture{display:none!important}:host(:not([media-position="background"])) picture:has(img[src]){display:block}.card{display:block;height:100%;position:relative;text-decoration:none;color:var(--px-color-text-neutral-default);--btn-transition: all .2s ease-in-out 0s;transition:var(--btn-transition);border-radius:var(--px-radius-main);outline-color:var(--px-color-border-focus-outline-default);outline-width:var(--px-focus-outline-mobile);overflow:hidden;border:var(--px-size-border-m) solid transparent}.card .contrast-helper{display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}:host([contrast-helper-gradient]) :is(.card .contrast-helper){display:block;background-image:linear-gradient(90deg,#fff 23.43%,#fff0 81.69%)}:host([contrast-helper-overlay]) :is(.card .contrast-helper){display:block;background-color:#ffffffb3}.card .card__content{position:relative;flex-grow:1;z-index:2}.card px-container{background-color:var(--card-background-color-default)}.card:focus-visible{outline-offset:var(--px-focus-offset-mobile);outline-style:solid}.card:hover{border-color:var(--px-color-border-state-hover-default)}.card:hover px-container{background-color:var(--px-color-background-state-hover-bordered-default)}px-container{height:100%}::slotted([slot="title"]){font-family:var(--px-font-family);line-height:var(--px-line-height-ratio-l);font-size:var(--px-text-size-heading-xl-mobile);font-weight:var(--px-font-weight-title);color:var(--px-color-text-brand-default)}::slotted([slot="content"]){font-family:var(--px-font-family);line-height:var(--px-font-line-height-m);font-size:var(--px-text-size-body-m-mobile);font-weight:var(--px-font-weight-body);color:var(--px-color-text-neutral-default)}:host([media-left-size="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-left-size="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}@media only screen and (max-width: 48em){.hidden--mobile,.shown--tablet,.shown--laptop{display:none}.hidden--tablet,.hidden--laptop,.shown--mobile{display:block}:host([media-left-size--mobile="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}:host([media-left-size--mobile="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-position--mobile="background"]) picture{display:none!important}:host(:not([media-position--mobile="background"],[media-position="background"])) picture:has(source:nth-child(1)[srcset]){display:block}:host([media-position="top"]) img,:host([media-position--mobile="top"]) img{display:block;height:100%;width:100%;aspect-ratio:initial;object-fit:initial}:host([media-position="left"]:not([media-position--mobile="top"])) img,:host([media-position--mobile="left"]) img{height:100%;aspect-ratio:1 / 1;width:var(--card-media-left-size);object-fit:cover}.media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile) px-container,.media-position-background--mobile px-container{background-color:transparent}.media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile):hover px-container,.media-position-background--mobile:hover px-container{background-color:transparent}}@media only screen and (min-width: 48em) and (max-width: 64em){.hidden--tablet,.shown--mobile,.shown--laptop{display:none}.hidden--mobile,.hidden--laptop,.shown--tablet{display:block}:host([media-left-size--tablet="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}:host([media-left-size--tablet="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-position--tablet="background"]) picture{display:none!important}:host(:not([media-position--mobile="background"],[media-position="background"])) picture:has(source:nth-child(2)[srcset]){display:block}:host([media-position="left"]:not([media-position--tablet="top"])) img,:host([media-position--tablet="left"]) img{height:100%;aspect-ratio:1 / 1;width:var(--card-media-left-size);object-fit:cover}:host([media-position="top"]) img,:host([media-position--tablet="top"]) img{display:block;height:100%;width:100%;aspect-ratio:initial;object-fit:initial}.media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet) px-container,.media-position-background--tablet px-container{background-color:transparent}.media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet):hover px-container,.media-position-background--tablet:hover px-container{background-color:transparent}}@media only screen and (min-width: 48em){.card{outline-width:var(--px-focus-outline-tablet)}.card:focus-visible{outline-offset:var(--px-focus-offset-tablet)}::slotted([slot="title"]){font-size:var(--px-text-size-heading-xl-tablet)}::slotted([slot="content"]){font-size:var(--px-text-size-body-m-tablet)}}@media only screen and (min-width: 64.0625em){.hidden--laptop,.shown--mobile,.shown--tablet{display:none}.hidden--mobile,.hidden--tablet,.shown--laptop{display:block}:host([media-left-size--laptop="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}:host([media-left-size--laptop="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-position--laptop="background"]) picture{display:none!important}:host(:not([media-position--mobile="background"],[media-position="background"])) picture:has(source:nth-child(3)[srcset]){display:block}:host([media-position="left"]:not([media-position--laptop="top"])) img,:host([media-position--laptop="left"]) img{height:100%;aspect-ratio:1 / 1;width:var(--card-media-left-size);object-fit:cover}:host([media-position="top"]) img,:host([media-position--laptop="top"]) img{display:block;height:100%;width:100%;aspect-ratio:initial;object-fit:initial}.card{outline-width:var(--px-focus-outline-laptop)}.card:focus-visible{outline-offset:var(--px-focus-offset-laptop)}::slotted([slot="title"]){font-size:var(--px-text-size-heading-xl-laptop)}::slotted([slot="content"]){font-size:var(--px-text-size-body-m-laptop)}img[src=null]{display:none}.media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop) px-container,.media-position-background--laptop px-container{background-color:transparent}.media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop):hover px-container,.media-position-background--laptop:hover px-container{background-color:transparent}}:host([inverted]){--card-background-color-inverted: var(--px-color-background-container-light-inverted)}:host([inverted]) .card{color:var(--px-color-text-neutral-inverted);outline-color:var(--px-color-border-focus-outline-inverted)}:host([contrast-helper-gradient]) :is(:host([inverted]) .card .contrast-helper){background-image:linear-gradient(90deg,#000 23.43%,#0000 81.69%)}:host([contrast-helper-overlay]) :is(:host([inverted]) .card .contrast-helper){background-color:#0006}:host([inverted]) .card px-container{background-color:var(--card-background-color-inverted)}:host([inverted]) .card:hover{border-color:var(--px-color-border-state-hover-inverted)}:host([inverted]) .card:hover px-container{background-color:var( --px-color-background-state-hover-bordered-inverted )}:host([inverted]) ::slotted([slot="title"]){color:var(--px-color-text-brand-inverted)}:host([inverted]) ::slotted([slot="content"]){color:var(--px-color-text-neutral-inverted)}@media only screen and (max-width: 47.938em){:host([inverted]) .media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile) px-container,:host([inverted]) .media-position-background--mobile px-container{background-color:transparent}:host([inverted]) .media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile):hover px-container,:host([inverted]) .media-position-background--mobile:hover px-container{background-color:transparent}}@media only screen and (min-width: 48em) and (max-width: 64em){:host([inverted]) .media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet) px-container,:host([inverted]) .media-position-background--tablet px-container{background-color:transparent}:host([inverted]) .media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet):hover px-container,:host([inverted]) .media-position-background--tablet:hover px-container{background-color:transparent}}@media only screen and (min-width: 64.0625em){:host([inverted]) .media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop) px-container,:host([inverted]) .media-position-background--laptop px-container{background-color:transparent}:host([inverted]) .media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop):hover px-container,:host([inverted]) .media-position-background--laptop:hover px-container{background-color:transparent}}';
4463
+ const styles$E = ':host{--card-background-color-default: var(--px-color-background-container-light-default);--card-media-left-size-s: 120px;--card-media-left-size-m: 250px;--card-media-left-size: var(--card-media-left-size-s);display:block}:host *{box-sizing:border-box}:host picture{display:none}:host([media-position="background"]) picture{display:none!important}:host(:not([media-position="background"])) picture:has(img[src]){display:block}.card{display:block;height:100%;position:relative;text-decoration:none;color:var(--px-color-text-neutral-default);--btn-transition: all .2s ease-in-out 0s;transition:var(--btn-transition);border-radius:var(--px-radius-main);outline-color:var(--px-color-border-focus-outline-default);outline-width:var(--px-focus-outline-mobile);overflow:hidden;border:var(--px-size-border-m) solid transparent}.card .contrast-helper{display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}:host([contrast-helper-gradient]) :is(.card .contrast-helper){display:block;background-image:linear-gradient(90deg,#fff 23.43%,#fff0 81.69%)}:host([contrast-helper-overlay]) :is(.card .contrast-helper){display:block;background-color:#ffffffb3}.card .card__content{position:relative;flex-grow:1;z-index:2}.card .card__content>px-vstack{height:100%}.card px-container{background-color:var(--card-background-color-default)}.card:focus-visible{outline-offset:var(--px-focus-offset-mobile);outline-style:solid}.card:hover{border-color:var(--px-color-border-state-hover-default)}.card:hover px-container{background-color:var(--px-color-background-state-hover-bordered-default)}px-container{height:100%}::slotted([slot="title"]){font-family:var(--px-font-family);line-height:var(--px-line-height-ratio-l);font-size:var(--px-text-size-heading-xl-mobile);font-weight:var(--px-font-weight-title);color:var(--px-color-text-brand-default);flex-grow:1}::slotted([slot="content"]){font-family:var(--px-font-family);line-height:var(--px-font-line-height-m);font-size:var(--px-text-size-body-m-mobile);font-weight:var(--px-font-weight-body);color:var(--px-color-text-neutral-default)}:host([media-left-size="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-left-size="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}@media only screen and (max-width: 48em){.hidden--mobile,.shown--tablet,.shown--laptop{display:none}.hidden--tablet,.hidden--laptop,.shown--mobile{display:block}:host([media-left-size--mobile="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}:host([media-left-size--mobile="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-position--mobile="background"]) picture{display:none!important}:host(:not([media-position--mobile="background"],[media-position="background"])) picture:has(source:nth-child(1)[srcset]){display:block}:host([media-position="top"]) img,:host([media-position--mobile="top"]) img{display:block;height:100%;width:100%;aspect-ratio:initial;object-fit:initial}:host([media-position="left"]:not([media-position--mobile="top"])) img,:host([media-position--mobile="left"]) img{height:100%;aspect-ratio:1 / 1;width:var(--card-media-left-size);object-fit:cover}.media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile) px-container,.media-position-background--mobile px-container{background-color:transparent}.media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile):hover px-container,.media-position-background--mobile:hover px-container{background-color:transparent}}@media only screen and (min-width: 48em) and (max-width: 64em){.hidden--tablet,.shown--mobile,.shown--laptop{display:none}.hidden--mobile,.hidden--laptop,.shown--tablet{display:block}:host([media-left-size--tablet="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}:host([media-left-size--tablet="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-position--tablet="background"]) picture{display:none!important}:host(:not([media-position--mobile="background"],[media-position="background"])) picture:has(source:nth-child(2)[srcset]){display:block}:host([media-position="left"]:not([media-position--tablet="top"])) img,:host([media-position--tablet="left"]) img{height:100%;aspect-ratio:1 / 1;width:var(--card-media-left-size);object-fit:cover}:host([media-position="top"]) img,:host([media-position--tablet="top"]) img{display:block;height:100%;width:100%;aspect-ratio:initial;object-fit:initial}.media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet) px-container,.media-position-background--tablet px-container{background-color:transparent}.media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet):hover px-container,.media-position-background--tablet:hover px-container{background-color:transparent}}@media only screen and (min-width: 48em){.card{outline-width:var(--px-focus-outline-tablet)}.card:focus-visible{outline-offset:var(--px-focus-offset-tablet)}::slotted([slot="title"]){font-size:var(--px-text-size-heading-xl-tablet)}::slotted([slot="content"]){font-size:var(--px-text-size-body-m-tablet)}}@media only screen and (min-width: 64.0625em){.hidden--laptop,.shown--mobile,.shown--tablet{display:none}.hidden--mobile,.hidden--tablet,.shown--laptop{display:block}:host([media-left-size--laptop="m"]) img{--card-media-left-size: var(--card-media-left-size-m)}:host([media-left-size--laptop="s"]) img{--card-media-left-size: var(--card-media-left-size-s)}:host([media-position--laptop="background"]) picture{display:none!important}:host(:not([media-position--mobile="background"],[media-position="background"])) picture:has(source:nth-child(3)[srcset]){display:block}:host([media-position="left"]:not([media-position--laptop="top"])) img,:host([media-position--laptop="left"]) img{height:100%;aspect-ratio:1 / 1;width:var(--card-media-left-size);object-fit:cover}:host([media-position="top"]) img,:host([media-position--laptop="top"]) img{display:block;height:100%;width:100%;aspect-ratio:initial;object-fit:initial}.card{outline-width:var(--px-focus-outline-laptop)}.card:focus-visible{outline-offset:var(--px-focus-offset-laptop)}::slotted([slot="title"]){font-size:var(--px-text-size-heading-xl-laptop)}::slotted([slot="content"]){font-size:var(--px-text-size-body-m-laptop)}img[src=null]{display:none}.media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop) px-container,.media-position-background--laptop px-container{background-color:transparent}.media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop):hover px-container,.media-position-background--laptop:hover px-container{background-color:transparent}}:host([inverted]){--card-background-color-inverted: var(--px-color-background-container-light-inverted)}:host([inverted]) .card{color:var(--px-color-text-neutral-inverted);outline-color:var(--px-color-border-focus-outline-inverted)}:host([contrast-helper-gradient]) :is(:host([inverted]) .card .contrast-helper){background-image:linear-gradient(90deg,#000 23.43%,#0000 81.69%)}:host([contrast-helper-overlay]) :is(:host([inverted]) .card .contrast-helper){background-color:#0006}:host([inverted]) .card px-container{background-color:var(--card-background-color-inverted)}:host([inverted]) .card:hover{border-color:var(--px-color-border-state-hover-inverted)}:host([inverted]) .card:hover px-container{background-color:var( --px-color-background-state-hover-bordered-inverted )}:host([inverted]) ::slotted([slot="title"]){color:var(--px-color-text-brand-inverted)}:host([inverted]) ::slotted([slot="content"]){color:var(--px-color-text-neutral-inverted)}@media only screen and (max-width: 47.938em){:host([inverted]) .media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile) px-container,:host([inverted]) .media-position-background--mobile px-container{background-color:transparent}:host([inverted]) .media-position-background:not(.media-position-top--mobile,.media-position-left--mobile,.media-position-none--mobile):hover px-container,:host([inverted]) .media-position-background--mobile:hover px-container{background-color:transparent}}@media only screen and (min-width: 48em) and (max-width: 64em){:host([inverted]) .media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet) px-container,:host([inverted]) .media-position-background--tablet px-container{background-color:transparent}:host([inverted]) .media-position-background:not(.media-position-top--tablet,.media-position-left--tablet,.media-position-none--tablet):hover px-container,:host([inverted]) .media-position-background--tablet:hover px-container{background-color:transparent}}@media only screen and (min-width: 64.0625em){:host([inverted]) .media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop) px-container,:host([inverted]) .media-position-background--laptop px-container{background-color:transparent}:host([inverted]) .media-position-background:not(.media-position-top--laptop,.media-position-left--laptop,.media-position-none--laptop):hover px-container,:host([inverted]) .media-position-background--laptop:hover px-container{background-color:transparent}}';
4093
4464
  const styleSheet$y = new CSSStyleSheet();
4094
4465
  styleSheet$y.replaceSync(styles$E);
4095
4466
  const cardBackgroundColorValues = [
@@ -4100,15 +4471,15 @@ const cardBackgroundColorValues = [
4100
4471
  const cardPaddingValues = ["", "s", "m", "l"];
4101
4472
  const cardMediaLeftSizeValues = ["", "s", "m"];
4102
4473
  const cardMediaPositionValues = ["", "top", "left", "background"];
4103
- const attributeBreakpointCSSSelector$2 = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .card__content`;
4474
+ const attributeBreakpointCSSSelector$1 = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .card__content`;
4104
4475
  const paddingPrefix = "px-padding";
4105
- const _Card = class _Card extends PxElement {
4476
+ const _Card = class _Card extends VerticallyExtendedElement {
4106
4477
  constructor() {
4107
4478
  super(
4108
4479
  styleSheet$y,
4109
4480
  cssTokenBreakpoints(
4110
4481
  "padding",
4111
- attributeBreakpointCSSSelector$2,
4482
+ attributeBreakpointCSSSelector$1,
4112
4483
  cardPaddingValues,
4113
4484
  paddingPrefix,
4114
4485
  "--card__content-padding"
@@ -4131,7 +4502,7 @@ const _Card = class _Card extends PxElement {
4131
4502
  </picture>
4132
4503
  <div class="card__content">
4133
4504
  <px-vstack gap="default">
4134
- <px-vstack gap="s">
4505
+ <px-vstack gap="s" grow="1">
4135
4506
  <slot name="title"></slot>
4136
4507
  <slot name="content"></slot>
4137
4508
  </px-vstack>
@@ -4718,7 +5089,7 @@ function throttle(func, wait, options) {
4718
5089
  }
4719
5090
  const styleSheet$w = new CSSStyleSheet();
4720
5091
  styleSheet$w.replaceSync(styles$D);
4721
- const attributeBreakpointCSSSelector$1 = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .carousel`;
5092
+ const attributeBreakpointCSSSelector = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .carousel`;
4722
5093
  const prefix = "px-spacing";
4723
5094
  const visibleItemCalcFunction = (spacingToken) => (numberOfItems, device) => `calc(((100% - ${Math.max(parseInt(numberOfItems), 2)} * ( var(--px-spacing-${spacingToken}-${device}))) / ${numberOfItems}) - ( 64px / ${Math.max(parseInt(numberOfItems), 2)}))`;
4724
5095
  class Carousel extends HTMLElement {
@@ -4785,7 +5156,7 @@ class Carousel extends HTMLElement {
4785
5156
  styleSheet$w,
4786
5157
  cssTokenBreakpoints(
4787
5158
  "gap",
4788
- attributeBreakpointCSSSelector$1,
5159
+ attributeBreakpointCSSSelector,
4789
5160
  gapValues,
4790
5161
  prefix
4791
5162
  )
@@ -5029,13 +5400,12 @@ const _Cell = class _Cell extends PxElement {
5029
5400
  }
5030
5401
  constructor() {
5031
5402
  super(styleSheet$v, commonStyleSheet$b);
5032
- const $root = document.createElement(this.nativeName);
5403
+ const $root = document.createElement("div");
5033
5404
  $root.classList.add("cell");
5034
5405
  $root.innerHTML = this.template();
5035
5406
  this.shadowRoot.appendChild($root);
5036
5407
  }
5037
5408
  connectedCallback() {
5038
- super.connectedCallback();
5039
5409
  if (this.$slotVisual) {
5040
5410
  const slotVisualImg = this.querySelector('px-img[slot="visual"]');
5041
5411
  if (slotVisualImg) {
@@ -5335,13 +5705,12 @@ const _CellLink = class _CellLink extends PxElement {
5335
5705
  }
5336
5706
  constructor() {
5337
5707
  super(styleSheet$u, commonStyleSheet$a);
5338
- const $root = document.createElement(this.nativeName);
5708
+ const $root = document.createElement(_CellLink.nativeName);
5339
5709
  $root.classList.add("cell-link");
5340
5710
  $root.innerHTML = this.template();
5341
5711
  this.shadowRoot.appendChild($root);
5342
5712
  }
5343
5713
  connectedCallback() {
5344
- super.connectedCallback();
5345
5714
  if (this.$slotVisual) {
5346
5715
  const slotVisualImg = this.querySelector('px-img[slot="visual"]');
5347
5716
  if (slotVisualImg) {
@@ -5574,13 +5943,12 @@ const _CellButton = class _CellButton extends PxElement {
5574
5943
  }
5575
5944
  constructor() {
5576
5945
  super(styleSheet$t, commonStyleSheet$9);
5577
- const $root = document.createElement(this.nativeName);
5946
+ const $root = document.createElement(_CellButton.nativeName);
5578
5947
  $root.classList.add("cell-button");
5579
5948
  $root.innerHTML = this.template();
5580
5949
  this.shadowRoot.appendChild($root);
5581
5950
  }
5582
5951
  connectedCallback() {
5583
- super.connectedCallback();
5584
5952
  if (this.$slotVisual) {
5585
5953
  const slotVisualImg = this.querySelector('px-img[slot="visual"]');
5586
5954
  if (slotVisualImg) {
@@ -5762,6 +6130,7 @@ const _CellButton = class _CellButton extends PxElement {
5762
6130
  }
5763
6131
  };
5764
6132
  _CellButton.nativeName = "button";
6133
+ _CellButton.accessorExclusions = ["disabled"];
5765
6134
  let CellButton = _CellButton;
5766
6135
  if (!customElements.get("px-cell-button")) {
5767
6136
  customElements.define("px-cell-button", CellButton);
@@ -6828,7 +7197,6 @@ class Radio extends RadioBase {
6828
7197
  return [...super.observedAttributes, "state", "variant", "inverted"];
6829
7198
  }
6830
7199
  connectedCallback() {
6831
- super.connectedCallback();
6832
7200
  this.addEventListener("keypress", (e) => {
6833
7201
  e.stopPropagation();
6834
7202
  e.preventDefault();
@@ -7713,14 +8081,11 @@ const _ColorOption = class _ColorOption extends PxElement {
7713
8081
  }
7714
8082
  constructor() {
7715
8083
  super(styleSheet$s);
7716
- const $root = document.createElement(this.nativeName);
8084
+ const $root = document.createElement("div");
7717
8085
  $root.classList.add("color-option");
7718
8086
  $root.innerHTML = this.template();
7719
8087
  this.shadowRoot.appendChild($root);
7720
8088
  }
7721
- connectedCallback() {
7722
- super.connectedCallback();
7723
- }
7724
8089
  static get observedAttributes() {
7725
8090
  return [...super.observedAttributes, "size", "device-color", "unavailable"];
7726
8091
  }
@@ -7810,13 +8175,12 @@ const _ColorOptionLink = class _ColorOptionLink extends PxElement {
7810
8175
  }
7811
8176
  constructor() {
7812
8177
  super(styleSheet$r);
7813
- const $root = document.createElement(this.nativeName);
8178
+ const $root = document.createElement(_ColorOptionLink.nativeName);
7814
8179
  $root.classList.add("color-option-link");
7815
8180
  $root.innerHTML = this.template();
7816
8181
  this.shadowRoot.appendChild($root);
7817
8182
  }
7818
8183
  connectedCallback() {
7819
- super.connectedCallback();
7820
8184
  this.addEventListener("click", (e) => {
7821
8185
  e.preventDefault();
7822
8186
  this.clickColorOptionLink();
@@ -8200,6 +8564,224 @@ class Section extends HTMLElement {
8200
8564
  if (!customElements.get("px-section")) {
8201
8565
  customElements.define("px-section", Section);
8202
8566
  }
8567
+ const headingCss = "h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{margin:0;font-family:var(--px-font-family);color:var(--heading-color-default, var(--px-color-text-brand-default));text-align:var(--heading-text-align--mobile, left);font-size:var(--px-text-size-heading-s-mobile);line-height:var(--px-line-height-ratio-l);font-weight:var(--px-font-weight-title)}::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-mobile)}:host([inverted]) h1,:host([inverted]) .style-title-4xl,:host([inverted]) ::slotted(h1),:host([inverted]) h2,:host([inverted]) .style-title-3xl,:host([inverted]) ::slotted(h2),:host([inverted]) h3,:host([inverted]) .style-title-2xl,:host([inverted]) ::slotted(h3),:host([inverted]) h4,:host([inverted]) .style-title-xl,:host([inverted]) ::slotted(h4),:host([inverted]) h5,:host([inverted]) .style-title-l,:host([inverted]) ::slotted(h5),:host([inverted]) h6,:host([inverted]) .style-title-m,:host([inverted]) ::slotted(h6),:host([inverted]) .style-title-s,:host([inverted]) .style-subtitle{color:var(--heading-color-inverted, var(--px-color-text-brand-inverted))}h1,.style-title-4xl,::slotted(h1){font-size:var(--px-text-size-heading-3xl-mobile);line-height:var(--px-line-height-ratio-s);font-weight:var(--px-font-weight-title-large)}h2,.style-title-3xl,::slotted(h2){font-size:var(--px-text-size-heading-2xl-mobile);line-height:var(--px-line-height-ratio-s);font-weight:var(--px-font-weight-title-large)}h3,.style-title-2xl,::slotted(h3){font-size:var(--px-text-size-heading-xl-mobile);line-height:var(--px-line-height-ratio-s)}h4,.style-title-xl,::slotted(h4){font-size:var(--px-text-size-heading-l-mobile)}h5,.style-title-l,::slotted(h5){font-size:var(--px-text-size-heading-m-mobile)}h6,.style-title-m,::slotted(h6){font-size:var(--px-text-size-heading-base-mobile)}.style-subtitle{font-size:var(--px-text-size-heading-l-mobile);font-weight:var(--px-font-weight-subtitle)}.style-title-s{font-size:var(--px-text-size-heading-s-mobile)}@media only screen and (min-width: 768px){::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-tablet)}h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{text-align:var(--heading-text-align--tablet, left)}h1,.style-title-4xl,::slotted(h1){font-size:var(--px-text-size-heading-5xl-desktop)}h2,.style-title-3xl,::slotted(h2){font-size:var(--px-text-size-heading-4xl-desktop)}h3,.style-title-2xl,::slotted(h3){font-size:var(--px-text-size-heading-2xl-desktop)}h4,.style-title-xl,::slotted(h4){font-size:var(--px-text-size-heading-xl-desktop)}h5,.style-title-l,::slotted(h5){font-size:var(--px-text-size-heading-l-desktop)}h6,.style-title-m,::slotted(h6){font-size:var(--px-text-size-heading-m-desktop)}.style-title-s{font-size:var(--px-text-size-heading-base-desktop)}.style-subtitle{font-size:var(--px-text-size-heading-xl-desktop)}}@media only screen and (min-width: 1025px){::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-laptop)}h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{text-align:var(--heading-text-align--laptop, left)}h1,.style-title-4xl,::slotted(h1){font-size:var(--px-text-size-heading-5xl-desktop)}h2,.style-title-3xl,::slotted(h2){font-size:var(--px-text-size-heading-4xl-desktop)}h3,.style-title-2xl,::slotted(h3){font-size:var(--px-text-size-heading-2xl-desktop)}h4,.style-title-xl,::slotted(h4){font-size:var(--px-text-size-heading-xl-desktop)}h5,.style-title-l,::slotted(h5){font-size:var(--px-text-size-heading-l-desktop)}h6,.style-title-m,::slotted(h6){font-size:var(--px-text-size-heading-m-desktop)}.style-title-s{font-size:var(--px-text-size-heading-base-desktop)}.style-subtitle{font-size:var(--px-text-size-heading-xl-desktop)}}@media screen and (min-width: 1441px){::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-desktop)}h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{text-align:var(--heading-text-align--desktop, left)}}";
8568
+ const headingStyles$2 = new CSSStyleSheet();
8569
+ headingStyles$2.replaceSync(headingCss);
8570
+ const typographyStyles$4 = new CSSStyleSheet();
8571
+ typographyStyles$4.replaceSync(typographyCss$1);
8572
+ class AbstractHeading extends PxElement {
8573
+ template() {
8574
+ return `<slot></slot>`;
8575
+ }
8576
+ constructor(tagName) {
8577
+ super(headingStyles$2, typographyStyles$4);
8578
+ const $root = document.createElement(tagName);
8579
+ $root.innerHTML = this.template();
8580
+ this.shadowRoot.appendChild($root);
8581
+ }
8582
+ static get observedAttributes() {
8583
+ return [
8584
+ ...super.observedAttributes,
8585
+ "variant",
8586
+ "color",
8587
+ "text-align",
8588
+ "text-align--mobile",
8589
+ "text-align--tablet",
8590
+ "text-align--laptop",
8591
+ "text-align--desktop",
8592
+ "inverted"
8593
+ ];
8594
+ }
8595
+ attributeChangedCallback(attrName, oldValue, newValue) {
8596
+ if (oldValue !== newValue) {
8597
+ switch (attrName) {
8598
+ case "variant":
8599
+ this.updateAttribute(attrName, oldValue, newValue, headingValues);
8600
+ break;
8601
+ case "color":
8602
+ this.updateColor(oldValue, newValue, colorValues);
8603
+ break;
8604
+ case "text-align":
8605
+ case "text-align--mobile":
8606
+ case "text-align--tablet":
8607
+ case "text-align--laptop":
8608
+ case "text-align--desktop":
8609
+ this.updateTextAlign(attrName, oldValue, newValue, textalignValues);
8610
+ break;
8611
+ default:
8612
+ super.attributeChangedCallback(attrName, oldValue, newValue);
8613
+ break;
8614
+ }
8615
+ }
8616
+ }
8617
+ toggleClass(oldValue, newValue) {
8618
+ if (oldValue !== null && oldValue !== "" && oldValue !== "default") {
8619
+ this.$el.classList.toggle(`style-${oldValue}`);
8620
+ }
8621
+ if (newValue !== null && newValue !== "" && newValue !== "default") {
8622
+ this.$el.classList.toggle(`style-${newValue}`);
8623
+ }
8624
+ }
8625
+ updateAttribute(attrName, oldValue, newValue, attrValue) {
8626
+ if (!this.checkName(attrValue, newValue)) {
8627
+ console.error(`${newValue} is not an allowed "${attrName}" value`);
8628
+ } else {
8629
+ this.toggleClass(oldValue, newValue);
8630
+ }
8631
+ }
8632
+ updateColor(oldValue, newValue, attrValue) {
8633
+ if (!this.checkName(attrValue, newValue)) {
8634
+ console.error(`${newValue} is not a valid color value`);
8635
+ return;
8636
+ }
8637
+ const updateColorStyle = (value) => {
8638
+ if (value !== null && value !== "" && value !== "default") {
8639
+ this.$el.style.setProperty(
8640
+ `--heading-color-default`,
8641
+ `var(--px-color-text-${value}-default)`
8642
+ );
8643
+ this.$el.style.setProperty(
8644
+ `--heading-color-inverted`,
8645
+ `var(--px-color-text-${value}-inverted)`
8646
+ );
8647
+ }
8648
+ };
8649
+ updateColorStyle(oldValue);
8650
+ updateColorStyle(newValue);
8651
+ }
8652
+ updateTextAlign(attrName, oldValue, newValue, attrValue) {
8653
+ if (!this.checkName(attrValue, newValue)) {
8654
+ console.error(`${newValue} is not a valid value for ${attrName}`);
8655
+ return;
8656
+ }
8657
+ const updateStyle = (breakpoint, value) => {
8658
+ if (value !== null && value !== "" && value !== "default") {
8659
+ this.$el.style.setProperty(
8660
+ `--heading-text-align--${breakpoint}`,
8661
+ value
8662
+ );
8663
+ }
8664
+ };
8665
+ if (attrName === "text-align") {
8666
+ ["mobile", "tablet", "laptop", "desktop"].forEach((breakpoint) => {
8667
+ updateStyle(breakpoint, oldValue);
8668
+ updateStyle(breakpoint, newValue);
8669
+ });
8670
+ } else {
8671
+ const breakpoint = attrName.split("--")[1];
8672
+ updateStyle(breakpoint, oldValue);
8673
+ updateStyle(breakpoint, newValue);
8674
+ }
8675
+ }
8676
+ get variant() {
8677
+ return this.getAttribute("variant");
8678
+ }
8679
+ set variant(value) {
8680
+ this.setAttribute("variant", value);
8681
+ }
8682
+ get color() {
8683
+ return this.getAttribute("color");
8684
+ }
8685
+ set color(value) {
8686
+ this.setAttribute("color", value);
8687
+ }
8688
+ get textAlign() {
8689
+ return this.getAttribute("text-align");
8690
+ }
8691
+ set textAlign(value) {
8692
+ this.setAttribute("text-align", value);
8693
+ }
8694
+ get textAlignMobile() {
8695
+ return this.getAttribute("text-align--mobile");
8696
+ }
8697
+ set textAlignMobile(value) {
8698
+ this.setAttribute("text-align--mobile", value);
8699
+ }
8700
+ get textAlignTablet() {
8701
+ return this.getAttribute("text-align--tablet");
8702
+ }
8703
+ set textAlignTablet(value) {
8704
+ this.setAttribute("text-align--tablet", value);
8705
+ }
8706
+ get textAlignLaptop() {
8707
+ return this.getAttribute("text-align--laptop");
8708
+ }
8709
+ set textAlignLaptop(value) {
8710
+ this.setAttribute("text-align--laptop", value);
8711
+ }
8712
+ get textAlignDesktop() {
8713
+ return this.getAttribute("text-align--desktop");
8714
+ }
8715
+ set textAlignDesktop(value) {
8716
+ this.setAttribute("text-align--desktop", value);
8717
+ }
8718
+ get inverted() {
8719
+ return this.getAttribute("inverted");
8720
+ }
8721
+ set inverted(value) {
8722
+ this.setAttribute("inverted", value);
8723
+ }
8724
+ }
8725
+ const _H1 = class _H1 extends AbstractHeading {
8726
+ constructor() {
8727
+ super("h1");
8728
+ }
8729
+ };
8730
+ _H1.nativeName = "h1";
8731
+ let H1 = _H1;
8732
+ if (!customElements.get("px-h1")) {
8733
+ customElements.define("px-h1", H1);
8734
+ }
8735
+ const _H2 = class _H2 extends AbstractHeading {
8736
+ constructor() {
8737
+ super("h2");
8738
+ }
8739
+ };
8740
+ _H2.nativeName = "h2";
8741
+ let H2 = _H2;
8742
+ if (!customElements.get("px-h2")) {
8743
+ customElements.define("px-h2", H2);
8744
+ }
8745
+ const _H3 = class _H3 extends AbstractHeading {
8746
+ constructor() {
8747
+ super("h3");
8748
+ }
8749
+ };
8750
+ _H3.nativeName = "h3";
8751
+ let H3 = _H3;
8752
+ if (!customElements.get("px-h3")) {
8753
+ customElements.define("px-h3", H3);
8754
+ }
8755
+ const _H4 = class _H4 extends AbstractHeading {
8756
+ constructor() {
8757
+ super("h4");
8758
+ }
8759
+ };
8760
+ _H4.nativeName = "h4";
8761
+ let H4 = _H4;
8762
+ if (!customElements.get("px-h4")) {
8763
+ customElements.define("px-h4", H4);
8764
+ }
8765
+ const _H5 = class _H5 extends AbstractHeading {
8766
+ constructor() {
8767
+ super("h5");
8768
+ }
8769
+ };
8770
+ _H5.nativeName = "h5";
8771
+ let H5 = _H5;
8772
+ if (!customElements.get("px-h5")) {
8773
+ customElements.define("px-h5", H5);
8774
+ }
8775
+ const _H6 = class _H6 extends AbstractHeading {
8776
+ constructor() {
8777
+ super("h6");
8778
+ }
8779
+ };
8780
+ _H6.nativeName = "h6";
8781
+ let H6 = _H6;
8782
+ if (!customElements.get("px-h6")) {
8783
+ customElements.define("px-h6", H6);
8784
+ }
8203
8785
  const contentHeaderStyles = new CSSStyleSheet();
8204
8786
  contentHeaderStyles.replaceSync(contentHeaderCss);
8205
8787
  const _ContentHeader = class _ContentHeader extends PxElement {
@@ -8248,8 +8830,6 @@ const _ContentHeader = class _ContentHeader extends PxElement {
8248
8830
  ];
8249
8831
  }
8250
8832
  connectedCallback() {
8251
- var _a;
8252
- (_a = super.connectedCallback) == null ? void 0 : _a.call(this);
8253
8833
  if (this.$subtitleSlot) {
8254
8834
  this.$subtitleSlot.setAttribute("variant", "subtitle");
8255
8835
  }
@@ -8299,7 +8879,7 @@ const _ContentHeader = class _ContentHeader extends PxElement {
8299
8879
  case "has-gridding--mobile":
8300
8880
  case "has-gridding--tablet":
8301
8881
  case "has-gridding--laptop":
8302
- this.createGridding();
8882
+ this.createGridding(newValue);
8303
8883
  break;
8304
8884
  case "inverted":
8305
8885
  for (let i = 0; i < this.$children.length; i++) {
@@ -8316,7 +8896,7 @@ const _ContentHeader = class _ContentHeader extends PxElement {
8316
8896
  }
8317
8897
  }
8318
8898
  }
8319
- createGridding() {
8899
+ createGridding(value) {
8320
8900
  const breakpoints = [
8321
8901
  { prop: "hasGridding", gridProp: "gridCols", attr: "col-span" },
8322
8902
  {
@@ -8338,12 +8918,19 @@ const _ContentHeader = class _ContentHeader extends PxElement {
8338
8918
  const spanElement = this.shadowRoot.querySelector(
8339
8919
  "px-grid > px-container"
8340
8920
  );
8341
- breakpoints.forEach(({ prop, gridProp, attr }) => {
8342
- if (this[prop]) {
8343
- this.$grid[gridProp] = "3";
8344
- spanElement.setAttribute(attr, "2");
8345
- }
8346
- });
8921
+ if (value !== null) {
8922
+ breakpoints.forEach(({ prop, gridProp, attr }) => {
8923
+ if (this[prop]) {
8924
+ this.$grid[gridProp] = "3";
8925
+ spanElement.setAttribute(attr, "2");
8926
+ }
8927
+ });
8928
+ } else {
8929
+ breakpoints.forEach(({ gridProp, attr }) => {
8930
+ this.$grid[gridProp] = "1";
8931
+ spanElement.removeAttribute(attr);
8932
+ });
8933
+ }
8347
8934
  }
8348
8935
  get $grid() {
8349
8936
  return this.shadowRoot.querySelector("px-grid");
@@ -8527,7 +9114,7 @@ const _Separator = class _Separator extends PxElement {
8527
9114
  constructor() {
8528
9115
  var _a;
8529
9116
  super(styleSheet$p);
8530
- const $root = document.createElement(this.nativeName);
9117
+ const $root = document.createElement(_Separator.nativeName);
8531
9118
  $root.classList.add("separator");
8532
9119
  this.internals = (_a = this.attachInternals) == null ? void 0 : _a.call(this);
8533
9120
  this.shadowRoot.appendChild($root);
@@ -8696,225 +9283,7 @@ let Separator = _Separator;
8696
9283
  if (!customElements.get("px-separator")) {
8697
9284
  customElements.define("px-separator", Separator);
8698
9285
  }
8699
- const headingCss = "h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{margin:0;font-family:var(--px-font-family);color:var(--heading-color-default, var(--px-color-text-brand-default));text-align:var(--heading-text-align--mobile, left);font-size:var(--px-text-size-heading-s-mobile);line-height:var(--px-line-height-ratio-l);font-weight:var(--px-font-weight-title)}::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-mobile)}:host([inverted]) h1,:host([inverted]) .style-title-4xl,:host([inverted]) ::slotted(h1),:host([inverted]) h2,:host([inverted]) .style-title-3xl,:host([inverted]) ::slotted(h2),:host([inverted]) h3,:host([inverted]) .style-title-2xl,:host([inverted]) ::slotted(h3),:host([inverted]) h4,:host([inverted]) .style-title-xl,:host([inverted]) ::slotted(h4),:host([inverted]) h5,:host([inverted]) .style-title-l,:host([inverted]) ::slotted(h5),:host([inverted]) h6,:host([inverted]) .style-title-m,:host([inverted]) ::slotted(h6),:host([inverted]) .style-title-s,:host([inverted]) .style-subtitle{color:var(--heading-color-inverted, var(--px-color-text-brand-inverted))}h1,.style-title-4xl,::slotted(h1){font-size:var(--px-text-size-heading-3xl-mobile);line-height:var(--px-line-height-ratio-s);font-weight:var(--px-font-weight-title-large)}h2,.style-title-3xl,::slotted(h2){font-size:var(--px-text-size-heading-2xl-mobile);line-height:var(--px-line-height-ratio-s);font-weight:var(--px-font-weight-title-large)}h3,.style-title-2xl,::slotted(h3){font-size:var(--px-text-size-heading-xl-mobile);line-height:var(--px-line-height-ratio-s)}h4,.style-title-xl,::slotted(h4){font-size:var(--px-text-size-heading-l-mobile)}h5,.style-title-l,::slotted(h5){font-size:var(--px-text-size-heading-m-mobile)}h6,.style-title-m,::slotted(h6){font-size:var(--px-text-size-heading-base-mobile)}.style-subtitle{font-size:var(--px-text-size-heading-l-mobile);font-weight:var(--px-font-weight-subtitle)}.style-title-s{font-size:var(--px-text-size-heading-s-mobile)}@media only screen and (min-width: 768px){::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-tablet)}h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{text-align:var(--heading-text-align--tablet, left)}h1,.style-title-4xl,::slotted(h1){font-size:var(--px-text-size-heading-5xl-desktop)}h2,.style-title-3xl,::slotted(h2){font-size:var(--px-text-size-heading-4xl-desktop)}h3,.style-title-2xl,::slotted(h3){font-size:var(--px-text-size-heading-2xl-desktop)}h4,.style-title-xl,::slotted(h4){font-size:var(--px-text-size-heading-xl-desktop)}h5,.style-title-l,::slotted(h5){font-size:var(--px-text-size-heading-l-desktop)}h6,.style-title-m,::slotted(h6){font-size:var(--px-text-size-heading-m-desktop)}.style-title-s{font-size:var(--px-text-size-heading-base-desktop)}.style-subtitle{font-size:var(--px-text-size-heading-xl-desktop)}}@media only screen and (min-width: 1025px){::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-laptop)}h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{text-align:var(--heading-text-align--laptop, left)}h1,.style-title-4xl,::slotted(h1){font-size:var(--px-text-size-heading-5xl-desktop)}h2,.style-title-3xl,::slotted(h2){font-size:var(--px-text-size-heading-4xl-desktop)}h3,.style-title-2xl,::slotted(h3){font-size:var(--px-text-size-heading-2xl-desktop)}h4,.style-title-xl,::slotted(h4){font-size:var(--px-text-size-heading-xl-desktop)}h5,.style-title-l,::slotted(h5){font-size:var(--px-text-size-heading-l-desktop)}h6,.style-title-m,::slotted(h6){font-size:var(--px-text-size-heading-m-desktop)}.style-title-s{font-size:var(--px-text-size-heading-base-desktop)}.style-subtitle{font-size:var(--px-text-size-heading-xl-desktop)}}@media screen and (min-width: 1441px){::slotted(h1),::slotted(h2),::slotted(h3),::slotted(h4),::slotted(h5),::slotted(h6){margin-bottom:var(--px-spacing-heading-to-content-desktop)}h1,.style-title-4xl,::slotted(h1),h2,.style-title-3xl,::slotted(h2),h3,.style-title-2xl,::slotted(h3),h4,.style-title-xl,::slotted(h4),h5,.style-title-l,::slotted(h5),h6,.style-title-m,::slotted(h6),.style-title-s,.style-subtitle{text-align:var(--heading-text-align--desktop, left)}}";
8700
- const headingStyles$2 = new CSSStyleSheet();
8701
- headingStyles$2.replaceSync(headingCss);
8702
- const typographyStyles$4 = new CSSStyleSheet();
8703
- typographyStyles$4.replaceSync(typographyCss$1);
8704
- class AbstractHeading extends PxElement {
8705
- template() {
8706
- return `<slot></slot>`;
8707
- }
8708
- constructor(tagName) {
8709
- super(headingStyles$2, typographyStyles$4);
8710
- const $root = document.createElement(tagName);
8711
- $root.innerHTML = this.template();
8712
- this.shadowRoot.appendChild($root);
8713
- }
8714
- static get observedAttributes() {
8715
- return [
8716
- ...super.observedAttributes,
8717
- "variant",
8718
- "color",
8719
- "text-align",
8720
- "text-align--mobile",
8721
- "text-align--tablet",
8722
- "text-align--laptop",
8723
- "text-align--desktop",
8724
- "inverted"
8725
- ];
8726
- }
8727
- attributeChangedCallback(attrName, oldValue, newValue) {
8728
- if (oldValue !== newValue) {
8729
- switch (attrName) {
8730
- case "variant":
8731
- this.updateAttribute(attrName, oldValue, newValue, headingValues);
8732
- break;
8733
- case "color":
8734
- this.updateColor(oldValue, newValue, colorValues);
8735
- break;
8736
- case "text-align":
8737
- case "text-align--mobile":
8738
- case "text-align--tablet":
8739
- case "text-align--laptop":
8740
- case "text-align--desktop":
8741
- this.updateTextAlign(attrName, oldValue, newValue, textalignValues);
8742
- break;
8743
- default:
8744
- super.attributeChangedCallback(attrName, oldValue, newValue);
8745
- break;
8746
- }
8747
- }
8748
- }
8749
- toggleClass(oldValue, newValue) {
8750
- if (oldValue !== null && oldValue !== "" && oldValue !== "default") {
8751
- this.$el.classList.toggle(`style-${oldValue}`);
8752
- }
8753
- if (newValue !== null && newValue !== "" && newValue !== "default") {
8754
- this.$el.classList.toggle(`style-${newValue}`);
8755
- }
8756
- }
8757
- updateAttribute(attrName, oldValue, newValue, attrValue) {
8758
- if (!this.checkName(attrValue, newValue)) {
8759
- console.error(`${newValue} is not an allowed "${attrName}" value`);
8760
- } else {
8761
- this.toggleClass(oldValue, newValue);
8762
- }
8763
- }
8764
- updateColor(oldValue, newValue, attrValue) {
8765
- if (!this.checkName(attrValue, newValue)) {
8766
- console.error(`${newValue} is not a valid color value`);
8767
- return;
8768
- }
8769
- const updateColorStyle = (value) => {
8770
- if (value !== null && value !== "" && value !== "default") {
8771
- this.$el.style.setProperty(
8772
- `--heading-color-default`,
8773
- `var(--px-color-text-${value}-default)`
8774
- );
8775
- this.$el.style.setProperty(
8776
- `--heading-color-inverted`,
8777
- `var(--px-color-text-${value}-inverted)`
8778
- );
8779
- }
8780
- };
8781
- updateColorStyle(oldValue);
8782
- updateColorStyle(newValue);
8783
- }
8784
- updateTextAlign(attrName, oldValue, newValue, attrValue) {
8785
- if (!this.checkName(attrValue, newValue)) {
8786
- console.error(`${newValue} is not a valid value for ${attrName}`);
8787
- return;
8788
- }
8789
- const updateStyle = (breakpoint, value) => {
8790
- if (value !== null && value !== "" && value !== "default") {
8791
- this.$el.style.setProperty(
8792
- `--heading-text-align--${breakpoint}`,
8793
- value
8794
- );
8795
- }
8796
- };
8797
- if (attrName === "text-align") {
8798
- ["mobile", "tablet", "laptop", "desktop"].forEach((breakpoint) => {
8799
- updateStyle(breakpoint, oldValue);
8800
- updateStyle(breakpoint, newValue);
8801
- });
8802
- } else {
8803
- const breakpoint = attrName.split("--")[1];
8804
- updateStyle(breakpoint, oldValue);
8805
- updateStyle(breakpoint, newValue);
8806
- }
8807
- }
8808
- get variant() {
8809
- return this.getAttribute("variant");
8810
- }
8811
- set variant(value) {
8812
- this.setAttribute("variant", value);
8813
- }
8814
- get color() {
8815
- return this.getAttribute("color");
8816
- }
8817
- set color(value) {
8818
- this.setAttribute("color", value);
8819
- }
8820
- get textAlign() {
8821
- return this.getAttribute("text-align");
8822
- }
8823
- set textAlign(value) {
8824
- this.setAttribute("text-align", value);
8825
- }
8826
- get textAlignMobile() {
8827
- return this.getAttribute("text-align--mobile");
8828
- }
8829
- set textAlignMobile(value) {
8830
- this.setAttribute("text-align--mobile", value);
8831
- }
8832
- get textAlignTablet() {
8833
- return this.getAttribute("text-align--tablet");
8834
- }
8835
- set textAlignTablet(value) {
8836
- this.setAttribute("text-align--tablet", value);
8837
- }
8838
- get textAlignLaptop() {
8839
- return this.getAttribute("text-align--laptop");
8840
- }
8841
- set textAlignLaptop(value) {
8842
- this.setAttribute("text-align--laptop", value);
8843
- }
8844
- get textAlignDesktop() {
8845
- return this.getAttribute("text-align--desktop");
8846
- }
8847
- set textAlignDesktop(value) {
8848
- this.setAttribute("text-align--desktop", value);
8849
- }
8850
- get inverted() {
8851
- return this.getAttribute("inverted");
8852
- }
8853
- set inverted(value) {
8854
- this.setAttribute("inverted", value);
8855
- }
8856
- }
8857
- const _H1 = class _H1 extends AbstractHeading {
8858
- constructor() {
8859
- super("h1");
8860
- }
8861
- };
8862
- _H1.nativeName = "h1";
8863
- let H1 = _H1;
8864
- if (!customElements.get("px-h1")) {
8865
- customElements.define("px-h1", H1);
8866
- }
8867
- const _H2 = class _H2 extends AbstractHeading {
8868
- constructor() {
8869
- super("h2");
8870
- }
8871
- };
8872
- _H2.nativeName = "h2";
8873
- let H2 = _H2;
8874
- if (!customElements.get("px-h2")) {
8875
- customElements.define("px-h2", H2);
8876
- }
8877
- const _H3 = class _H3 extends AbstractHeading {
8878
- constructor() {
8879
- super("h3");
8880
- }
8881
- };
8882
- _H3.nativeName = "h3";
8883
- let H3 = _H3;
8884
- if (!customElements.get("px-h3")) {
8885
- customElements.define("px-h3", H3);
8886
- }
8887
- const _H4 = class _H4 extends AbstractHeading {
8888
- constructor() {
8889
- super("h4");
8890
- }
8891
- };
8892
- _H4.nativeName = "h4";
8893
- let H4 = _H4;
8894
- if (!customElements.get("px-h4")) {
8895
- customElements.define("px-h4", H4);
8896
- }
8897
- const _H5 = class _H5 extends AbstractHeading {
8898
- constructor() {
8899
- super("h5");
8900
- }
8901
- };
8902
- _H5.nativeName = "h5";
8903
- let H5 = _H5;
8904
- if (!customElements.get("px-h5")) {
8905
- customElements.define("px-h5", H5);
8906
- }
8907
- const _H6 = class _H6 extends AbstractHeading {
8908
- constructor() {
8909
- super("h6");
8910
- }
8911
- };
8912
- _H6.nativeName = "h6";
8913
- let H6 = _H6;
8914
- if (!customElements.get("px-h6")) {
8915
- customElements.define("px-h6", H6);
8916
- }
8917
- const styles$u = '#container{border:0;border-radius:var(--px-radius-main);background-color:var(--px-color-background-surface-default);box-sizing:border-box}:host([showfrom="bottom"]) #container{height:auto;margin-bottom:0;width:100%}px-button-icon{position:absolute;top:var(--px-padding-l-desktop);right:var(--px-padding-l-desktop)}dialog{background:transparent;border-radius:0;box-shadow:none;padding:0;border:0;box-sizing:border-box;width:75%}::backdrop{background:#0000004d;-webkit-backdrop-filter:saturate(180%) blur(15px);backdrop-filter:saturate(180%) blur(15px)}#content{overflow:auto}@media screen and (min-width: 1080px){#container{height:100%;padding:var(--px-padding-l-desktop)}:host([showfrom="right"]) px-button-icon{right:10.625em}:host([showfrom="right"]) #container{padding-right:10.625em;border-radius:var(--px-radius-main) 0 0 var(--px-radius-main)}:host([showfrom="left"]) px-button-icon{right:var(--px-padding-l-desktop)}:host([showfrom="left"]) #container{padding-left:10.625em;border-radius:0 var(--px-radius-main) var(--px-radius-main) 0}:host([showfrom="bottom"]) #container{box-sizing:border-box}:host([showfrom="left"])>dialog{margin-left:0;animation:dialog-fade-in-left .3s;height:100%}:host([showfrom="bottom"])>dialog{margin-bottom:0;margin-inline:0;width:100%;animation:dialog-fade-in-bottom .3s}:host([showfrom="right"])>dialog{margin-right:0;animation:dialog-fade-in-right .3s;height:100%}#content{max-height:calc(100dvh - 22.625em)}}@media only screen and (max-width: 67.563em){dialog{width:100%}:host([showfrom="left"])>dialog,:host([showfrom="right"])>dialog,:host([showfrom="bottom"])>dialog{margin-bottom:0;margin-inline:0;height:revert;animation:dialog-fade-in-bottom .3s}#container{width:100%;box-sizing:border-box;padding:var(--px-padding-m-mobile);border-radius:var(--px-radius-main) var(--px-radius-main) 0 0}px-button-icon{top:var(--px-padding-m-mobile);right:var(--px-padding-m-mobile)}#content{min-height:2.813em;max-height:50dvh}}@keyframes dialog-fade-in-right{0%{margin-right:-67.5em}to{margin-right:0}}@keyframes dialog-fade-in-left{0%{margin-left:-67.5em}to{margin-left:0}}@keyframes dialog-fade-in-bottom{0%{margin-bottom:-12.5em}to{margin-bottom:0}}';
9286
+ const styles$u = ':host *{box-sizing:border-box}::backdrop{background:#0000004d;-webkit-backdrop-filter:saturate(180%) blur(15px);backdrop-filter:saturate(180%) blur(15px)}dialog{box-shadow:none;padding:0;margin:auto 0 0;border:0;width:100%;animation:dialog-fade-in-bottom .3s;border-radius:var(--px-radius-main) var(--px-radius-main) 0 0;background-color:var(--px-color-background-surface-default)}#container{display:grid;grid-template:"header close" auto "content content" 1fr "footer footer" auto / 1fr auto;column-gap:var(--px-spacing-l-mobile);padding:var(--px-padding-l-mobile);max-height:90dvh}#header{grid-area:header;margin-bottom:var(--px-spacing-l-mobile)}#close{grid-area:close}#content{grid-area:content;overflow:hidden;overflow-y:auto}#footer{grid-area:footer;margin-top:var(--px-spacing-l-mobile)}@media only screen and (min-width: 48em){#container{column-gap:var(--px-spacing-l-tablet);padding:var(--px-padding-l-tablet)}#header{margin-bottom:var(--px-spacing-l-tablet)}#footer{margin-top:var(--px-spacing-l-tablet)}}@media only screen and (min-width: 64.0625em){#container{column-gap:var(--px-spacing-l-laptop);padding:var(--px-padding-l-laptop);max-width:var(--px-content-wrapper-max-width-laptop);margin:0 auto}#header{margin-bottom:var(--px-spacing-l-laptop)}#footer{margin-top:var(--px-spacing-l-laptop)}:host([showfrom="right"]) dialog{width:75%;height:100%;margin:0 0 0 auto;animation:dialog-fade-in-right .3s;border-radius:var(--px-radius-main) 0 0 var(--px-radius-main)}:host([showfrom="right"]) #container{max-height:100%;height:100%;margin:0 auto 0 0}:host([showfrom="left"]) dialog{width:75%;height:100%;margin:0 auto 0 0;animation:dialog-fade-in-left .3s;border-radius:0 var(--px-radius-main) var(--px-radius-main) 0}:host([showfrom="left"]) #container{margin:0 0 0 auto}}@media only screen and (min-width: 90.0625em){#container{column-gap:var(--px-spacing-l-desktop);padding:var(--px-padding-l-desktop)}#header{margin-bottom:var(--px-spacing-l-desktop)}#footer{margin-top:var(--px-spacing-l-desktop)}}@keyframes dialog-fade-in-right{0%{margin-right:-67.5em}to{margin-right:0}}@keyframes dialog-fade-in-left{0%{margin-left:-67.5em}to{margin-left:0}}@keyframes dialog-fade-in-bottom{0%{margin-bottom:-12.5em}to{margin-bottom:0}}';
8918
9287
  const styleSheet$o = new CSSStyleSheet();
8919
9288
  styleSheet$o.replaceSync(styles$u);
8920
9289
  const HIDE_EVENT = "px.lavender.drawer.hide";
@@ -8923,18 +9292,18 @@ class Drawer extends HTMLElement {
8923
9292
  super();
8924
9293
  this.template = `<dialog popover role="dialog" aria-modal="true" >
8925
9294
  <div id="container">
8926
- <px-vstack gap="l" >
8927
- <px-vstack gap="heading-to-subtitle">
8928
- <px-h1 variant="title-2xl">
8929
- <slot name="title"></slot>
8930
- </px-h1>
8931
- <px-h2 variant="subtitle" color="neutral">
8932
- <slot name="subtitle"></slot>
8933
- </px-h2>
8934
- </px-vstack>
8935
- <div id="content">
8936
- <slot></slot>
8937
- </div>
9295
+ <px-vstack gap="heading-to-subtitle" id="header">
9296
+ <px-h1 variant="title-2xl">
9297
+ <slot name="title"></slot>
9298
+ </px-h1>
9299
+ <px-h2 variant="subtitle" color="neutral">
9300
+ <slot name="subtitle"></slot>
9301
+ </px-h2>
9302
+ </px-vstack>
9303
+ <div id="content">
9304
+ <slot></slot>
9305
+ </div>
9306
+ <px-vstack gap="l" id="footer">
8938
9307
  <px-separator size="m"></px-separator>
8939
9308
  <px-stack
8940
9309
  gap="s"
@@ -8947,7 +9316,7 @@ class Drawer extends HTMLElement {
8947
9316
  <slot name="footer"></slot>
8948
9317
  </px-stack>
8949
9318
  </px-vstack>
8950
- <px-button-icon variant="secondary" size="small">
9319
+ <px-button-icon variant="secondary" size="small" id="close">
8951
9320
  <px-icon name="cross" from="lavender"></px-icon>
8952
9321
  </px-button-icon>
8953
9322
  </div>
@@ -8955,11 +9324,13 @@ class Drawer extends HTMLElement {
8955
9324
  this.attachShadow({ mode: "open" });
8956
9325
  this.shadowRoot.innerHTML = this.template;
8957
9326
  this.shadowRoot.adoptedStyleSheets = [styleSheet$o];
9327
+ this.toggleFooterVisibility = this.toggleFooterVisibility.bind(this);
8958
9328
  if (!this.hasAttribute("showfrom")) {
8959
9329
  this.setAttribute("showfrom", "bottom");
8960
9330
  }
8961
9331
  }
8962
9332
  connectedCallback() {
9333
+ var _a;
8963
9334
  if (this.hasAttribute("closedby")) {
8964
9335
  const $closer = document.querySelector(
8965
9336
  `#${this.getAttribute("closedby")}`
@@ -8979,9 +9350,11 @@ class Drawer extends HTMLElement {
8979
9350
  this.$closeButton.addEventListener("click", () => {
8980
9351
  this.hide();
8981
9352
  });
8982
- if (this.$buttons.length === 0) {
8983
- this.$separator.remove();
8984
- }
9353
+ this.toggleFooterVisibility();
9354
+ (_a = this.$slotFooter) == null ? void 0 : _a.addEventListener(
9355
+ "slotchange",
9356
+ this.toggleFooterVisibility
9357
+ );
8985
9358
  }
8986
9359
  static get observedAttributes() {
8987
9360
  return ["open", "aria-label-close-button"];
@@ -9006,6 +9379,13 @@ class Drawer extends HTMLElement {
9006
9379
  }
9007
9380
  }
9008
9381
  }
9382
+ disconnectedCallback() {
9383
+ var _a;
9384
+ (_a = this.$slotFooter) == null ? void 0 : _a.removeEventListener(
9385
+ "slotchange",
9386
+ this.toggleFooterVisibility
9387
+ );
9388
+ }
9009
9389
  show() {
9010
9390
  var _a, _b;
9011
9391
  (_b = (_a = this.$dialog).showPopover) == null ? void 0 : _b.call(_a);
@@ -9020,6 +9400,13 @@ class Drawer extends HTMLElement {
9020
9400
  })
9021
9401
  );
9022
9402
  }
9403
+ toggleFooterVisibility() {
9404
+ if (!this.$slottedFooter) {
9405
+ this.$footer.style.display = "none";
9406
+ } else {
9407
+ this.$footer.style.display = "block";
9408
+ }
9409
+ }
9023
9410
  get $closeButton() {
9024
9411
  return this.shadowRoot.querySelector("px-button-icon");
9025
9412
  }
@@ -9029,11 +9416,16 @@ class Drawer extends HTMLElement {
9029
9416
  get open() {
9030
9417
  return this.hasAttribute("open");
9031
9418
  }
9032
- get $buttons() {
9033
- return this.querySelectorAll('[slot="footer"]');
9419
+ get $slotFooter() {
9420
+ return this.shadowRoot.querySelector(
9421
+ 'slot[name="footer"]'
9422
+ );
9423
+ }
9424
+ get $slottedFooter() {
9425
+ return this.querySelector('[slot="footer"]');
9034
9426
  }
9035
- get $separator() {
9036
- return this.shadowRoot.querySelector("px-separator");
9427
+ get $footer() {
9428
+ return this.shadowRoot.querySelector("#footer");
9037
9429
  }
9038
9430
  set open(value) {
9039
9431
  if (value) {
@@ -9246,556 +9638,204 @@ class Dropdown extends WithExtraAttributes {
9246
9638
  }
9247
9639
  set anchorAlignment(value) {
9248
9640
  if (anchorAlignmentValues.includes(value)) {
9249
- this.setAttribute("anchoralignment", value);
9250
- } else {
9251
- console.warn(
9252
- `Invalid anchor alignment value: ${value}. Using default ${defaultAnchorAlignment}.`
9253
- );
9254
- this.setAttribute("anchoralignment", defaultAnchorAlignment);
9255
- }
9256
- }
9257
- get usePolyfill() {
9258
- return this.hasAttribute("use-polyfill");
9259
- }
9260
- set usePolyfill(value) {
9261
- if (value) {
9262
- this.setAttribute("use-polyfill", "");
9263
- } else {
9264
- this.removeAttribute("use-polyfill");
9265
- }
9266
- }
9267
- }
9268
- _Dropdown_instances = new WeakSet();
9269
- resetManualPopoverDisplay_fn = function() {
9270
- this.isAboutToClose = false;
9271
- this.$trigger.removeEventListener("click", __privateGet(this, _onTriggerClick));
9272
- this.$popoverElement.removeEventListener(
9273
- "beforetoggle",
9274
- __privateGet(this, _beforeToggle)
9275
- );
9276
- this.$popoverElement.removeEventListener("toggle", __privateGet(this, _onToggle));
9277
- };
9278
- _onTriggerClick = new WeakMap();
9279
- _beforeToggle = new WeakMap();
9280
- _onToggle = new WeakMap();
9281
- /**
9282
- * Handles the manual display of the popover when the trigger is clicked.
9283
- * This is necessary for cases where the trigger is not a button or input element.
9284
- * This method adds event listeners to the trigger element to toggle the popover.
9285
- * It also manages the state of whether the popover is about to close or not to avoid
9286
- * race conditions when the popover is toggled and the trigger click event is fired.
9287
- */
9288
- handleManualPopoverDisplay_fn = function() {
9289
- if (this.$trigger && !["button", "input"].includes(this.$trigger.localName)) {
9290
- this.$trigger.addEventListener("click", __privateGet(this, _onTriggerClick));
9291
- this.$popoverElement.addEventListener("beforetoggle", __privateGet(this, _beforeToggle));
9292
- this.$popoverElement.addEventListener("toggle", __privateGet(this, _onToggle));
9293
- }
9294
- };
9295
- if (!customElements.get("px-dropdown")) {
9296
- customElements.define("px-dropdown", Dropdown);
9297
- }
9298
- const fieldsetCss = ':host{display:block}:host *{box-sizing:border-box}fieldset{display:flex;flex-direction:column;margin:0;padding:0;border:0;font-family:var(--px-font-family)}fieldset legend{padding:0}fieldset ::slotted([slot="legend"]:not([shown--sr])){display:block;margin-bottom:var(--px-spacing-xs-mobile)}fieldset ::slotted([slot="error-text"]){display:none;font-size:var(--px-text-size-body-m-mobile);line-height:var(--px-line-height-ratio-l);color:var(--px-color-text-purpose-error-default);margin-bottom:var(--px-spacing-xs-mobile)}:host([state="error"]) ::slotted([slot="error-text"]){display:block}@media only screen and (min-width: 48em){fieldset ::slotted([slot="legend"]:not([shown--sr])){margin-bottom:var(--px-spacing-xs-tablet)}fieldset ::slotted([slot="error-text"]){font-size:var(--px-text-size-body-m-tablet)}}@media only screen and (min-width: 64.0625em){fieldset ::slotted([slot="legend"]:not([shown--sr])){margin-bottom:var(--px-spacing-xs-laptop)}fieldset ::slotted([slot="error-text"]){font-size:var(--px-text-size-body-m-laptop)}}@media only screen and (min-width: 90.0625em){fieldset ::slotted([slot="legend"]:not([shown--sr])){margin-bottom:var(--px-spacing-xs-desktop)}fieldset ::slotted([slot="error-text"]){font-size:var(--px-text-size-body-m-desktop)}}:host([inverted]) fieldset ::slotted([slot="error-text"]){color:var(--px-color-text-purpose-error-inverted)}';
9299
- const fieldsetStyles = new CSSStyleSheet();
9300
- fieldsetStyles.replaceSync(fieldsetCss);
9301
- const _Fieldset = class _Fieldset extends PxElement {
9302
- constructor() {
9303
- super(fieldsetStyles);
9304
- this.template = () => `<fieldset >
9305
- <legend><slot name="legend"></slot></legend>
9306
- <slot name="error-text"></slot>
9307
- <slot></slot>
9308
- </fieldset>`;
9309
- this.shadowRoot.innerHTML = this.template();
9310
- }
9311
- static get observedAttributes() {
9312
- return [
9313
- ...super.observedAttributes,
9314
- "inverted",
9315
- "role",
9316
- "aria-required",
9317
- "aria-disabled",
9318
- "state"
9319
- ];
9320
- }
9321
- connectedCallback() {
9322
- var _a;
9323
- const hasLegend = ((_a = this.$slotLegend) == null ? void 0 : _a.assignedNodes().length) > 0;
9324
- if (!hasLegend) {
9325
- console.error(
9326
- '<px-fieldset> requires a slot="legend" containing the description of the fieldset.'
9327
- );
9328
- }
9329
- this.setupErrorState();
9330
- transferAccessibilityAttributes(this, this.$el, false);
9331
- }
9332
- attributeChangedCallback(attrName, oldValue, newValue) {
9333
- if (oldValue !== newValue) {
9334
- switch (attrName) {
9335
- case "disabled": {
9336
- const children = this.querySelectorAll(
9337
- "px-radio-group, px-radio, px-checkbox, px-fileupload, px-input, px-textarea, px-select, px-switch"
9338
- );
9339
- children.forEach((child) => {
9340
- child.setAttribute(attrName, "true");
9341
- });
9342
- break;
9343
- }
9344
- case "role":
9345
- case "aria-required":
9346
- case "aria-disabled":
9347
- if (newValue !== null) {
9348
- this.$el.setAttribute(attrName, this.getAttribute(attrName));
9349
- this.removeAttribute(attrName);
9350
- }
9351
- break;
9352
- case "state":
9353
- this.setupErrorState();
9354
- break;
9355
- default:
9356
- super.attributeChangedCallback(attrName, oldValue, newValue);
9357
- break;
9358
- }
9359
- }
9360
- }
9361
- setupErrorState() {
9362
- var _a;
9363
- const hasErrorText = ((_a = this.$slotError) == null ? void 0 : _a.assignedNodes().length) > 0;
9364
- if (this.state === "error" && !hasErrorText) {
9365
- console.error(
9366
- '<px-fieldset> with state="error" requires a slot="error-text" containing the error description.'
9367
- );
9368
- }
9369
- if (this.state === "error" && hasErrorText) {
9370
- const id = Math.random().toString(36).substr(2, 9);
9371
- this.$el.setAttribute("id", id);
9372
- this.$el.setAttribute("aria-describedby", `${id}-error-text`);
9373
- this.$el.setAttribute("aria-invalid", "true");
9374
- this.$slotError.setAttribute("id", `${id}-error-text`);
9375
- } else {
9376
- this.$el.removeAttribute("id");
9377
- this.$el.removeAttribute("aria-describedby");
9378
- this.$el.removeAttribute("aria-invalid");
9379
- this.$slotError.removeAttribute("id");
9380
- }
9381
- }
9382
- get $slotLegend() {
9383
- return this.shadowRoot.querySelector(
9384
- 'slot[name="legend"]'
9385
- );
9386
- }
9387
- get $slotError() {
9388
- return this.shadowRoot.querySelector(
9389
- 'slot[name="error-text"]'
9390
- );
9391
- }
9392
- get inverted() {
9393
- return this.hasAttribute("inverted");
9394
- }
9395
- set inverted(value) {
9396
- if (value) {
9397
- this.setAttribute("inverted", "");
9398
- } else {
9399
- this.removeAttribute("inverted");
9400
- }
9401
- }
9402
- get role() {
9403
- return this.getAttribute("role");
9404
- }
9405
- set role(value) {
9406
- if (value) {
9407
- this.setAttribute("role", value);
9408
- } else {
9409
- this.removeAttribute("role");
9410
- }
9411
- }
9412
- get ariaRequired() {
9413
- return this.getAttribute("aria-required");
9414
- }
9415
- set ariaRequired(value) {
9416
- if (value) {
9417
- this.setAttribute("aria-required", value);
9418
- } else {
9419
- this.removeAttribute("aria-required");
9420
- }
9421
- }
9422
- get ariaDisabled() {
9423
- return this.getAttribute("aria-disabled");
9424
- }
9425
- set ariaDisabled(value) {
9426
- if (value) {
9427
- this.setAttribute("aria-disabled", value);
9428
- } else {
9429
- this.removeAttribute("aria-disabled");
9430
- }
9431
- }
9432
- get state() {
9433
- return this.getAttribute("state");
9434
- }
9435
- set state(value) {
9436
- if (value) {
9437
- this.setAttribute("state", value);
9438
- } else {
9439
- this.removeAttribute("state");
9440
- }
9441
- }
9442
- };
9443
- _Fieldset.nativeName = "fieldset";
9444
- let Fieldset = _Fieldset;
9445
- if (!customElements.get("px-fieldset")) {
9446
- customElements.define("px-fieldset", Fieldset);
9447
- }
9448
- const gridCss = ":host{display:block;--grid-cols: initial;--grid-cols--mobile: initial;--grid-cols--tablet: initial;--grid-cols--laptop: initial;--grid-cols--desktop: initial;--justify-content: initial;--justify-items: initial;--align-content: initial;--align-items: initial}.grid{display:grid;grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));justify-content:var(--justify-content);justify-items:var(--justify-items);align-content:var(--align-content);align-items:var(--align-items)}.justify-content-normal{justify-content:normal}.justify-content-start{justify-content:start}.justify-content-end{justify-content:end}.justify-content-center{justify-content:center}.justify-content-space-between{justify-content:space-between}.justify-content-space-around{justify-content:space-around}.justify-content-space-evenly{justify-content:space-evenly}.justify-content-stretch{justify-content:stretch}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.align-content-normal{align-content:normal}.align-content-start{align-content:start}.align-content-end{align-content:end}.align-content-center{align-content:center}.align-content-space-between{align-content:space-between}.align-content-space-around{align-content:space-around}.align-content-space-evenly{align-content:space-evenly}.align-content-stretch{align-content:stretch}.align-items-start{align-items:start}.align-items-end{align-items:end}.align-items-center{align-items:center}.align-items-stretch{align-items:stretch}@media only screen and (max-width: 767px){.grid{grid-template-columns:repeat(var(--grid-cols--mobile, var(--grid-cols)),minmax(0,1fr))}.justify-content-normal-mobile{justify-content:normal}.justify-content-start-mobile{justify-content:start}.justify-content-end-mobile{justify-content:end}.justify-content-center-mobile{justify-content:center}.justify-content-space-between-mobile{justify-content:space-between}.justify-content-space-around-mobile{justify-content:space-around}.justify-content-space-evenly-mobile{justify-content:space-evenly}.justify-content-stretch-mobile{justify-content:stretch}.justify-items-start-mobile{justify-items:start}.justify-items-end-mobile{justify-items:end}.justify-items-center-mobile{justify-items:center}.justify-items-stretch-mobile{justify-items:stretch}.align-content-normal-mobile{align-content:normal}.align-content-start-mobile{align-content:start}.align-content-end-mobile{align-content:end}.align-content-center-mobile{align-content:center}.align-content-space-between-mobile{align-content:space-between}.align-content-space-around-mobile{align-content:space-around}.align-content-space-evenly-mobile{align-content:space-evenly}.align-content-stretch-mobile{align-content:stretch}.align-items-start-mobile{align-items:start}.align-items-end-mobile{align-items:end}.align-items-center-mobile{align-items:center}.align-items-stretch-mobile{align-items:stretch}}@media only screen and (min-width: 48em) and (max-width: 64em){.grid{grid-template-columns:repeat(var(--grid-cols--tablet, var(--grid-cols)),minmax(0,1fr))}.justify-content-normal-tablet{justify-content:normal}.justify-content-start-tablet{justify-content:start}.justify-content-end-tablet{justify-content:end}.justify-content-center-tablet{justify-content:center}.justify-content-space-between-tablet{justify-content:space-between}.justify-content-space-around-tablet{justify-content:space-around}.justify-content-space-evenly-tablet{justify-content:space-evenly}.justify-content-stretch-tablet{justify-content:stretch}.justify-items-start-tablet{justify-items:start}.justify-items-end-tablet{justify-items:end}.justify-items-center-tablet{justify-items:center}.justify-items-stretch-tablet{justify-items:stretch}.align-content-normal-tablet{align-content:normal}.align-content-start-tablet{align-content:start}.align-content-end-tablet{align-content:end}.align-content-center-tablet{align-content:center}.align-content-space-between-tablet{align-content:space-between}.align-content-space-around-tablet{align-content:space-around}.align-content-space-evenly-tablet{align-content:space-evenly}.align-content-stretch-tablet{align-content:stretch}.align-items-start-tablet{align-items:start}.align-items-end-tablet{align-items:end}.align-items-center-tablet{align-items:center}.align-items-stretch-tablet{align-items:stretch}}@media only screen and (min-width: 64.0625em){.grid{grid-template-columns:repeat(var(--grid-cols--laptop, var(--grid-cols)),minmax(0,1fr))}.justify-content-normal-laptop{justify-content:normal}.justify-content-start-laptop{justify-content:start}.justify-content-end-laptop{justify-content:end}.justify-content-center-laptop{justify-content:center}.justify-content-space-between-laptop{justify-content:space-between}.justify-content-space-around-laptop{justify-content:space-around}.justify-content-space-evenly-laptop{justify-content:space-evenly}.justify-content-stretch-laptop{justify-content:stretch}.justify-items-start-laptop{justify-items:start}.justify-items-end-laptop{justify-items:end}.justify-items-center-laptop{justify-items:center}.justify-items-stretch-laptop{justify-items:stretch}.align-content-normal-laptop{align-content:normal}.align-content-start-laptop{align-content:start}.align-content-end-laptop{align-content:end}.align-content-center-laptop{align-content:center}.align-content-space-between-laptop{align-content:space-between}.align-content-space-around-laptop{align-content:space-around}.align-content-space-evenly-laptop{align-content:space-evenly}.align-content-stretch-laptop{align-content:stretch}.align-items-start-laptop{align-items:start}.align-items-end-laptop{align-items:end}.align-items-center-laptop{align-items:center}.align-items-stretch-laptop{align-items:stretch}}";
9449
- const gridStyles = new CSSStyleSheet();
9450
- gridStyles.replaceSync(gridCss);
9451
- const gridColsValues = [
9452
- "1",
9453
- "2",
9454
- "3",
9455
- "4",
9456
- "5",
9457
- "6",
9458
- "7",
9459
- "8",
9460
- "9",
9461
- "10",
9462
- "11",
9463
- "12"
9464
- ];
9465
- const contentAlignmentValues = [
9466
- "",
9467
- "start",
9468
- "end",
9469
- "center",
9470
- "space-between",
9471
- "space-around",
9472
- "space-evenly",
9473
- "stretch"
9474
- ];
9475
- const itemsAlignmentValues = ["", "start", "end", "center", "stretch"];
9476
- const attributeBreakpointCSSSelector = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .grid`;
9477
- const gapPrefix$1 = "px-spacing";
9478
- const _Grid = class _Grid extends PxElement {
9479
- constructor() {
9480
- super(
9481
- gridStyles,
9482
- cssTokenBreakpoints(
9483
- "gap",
9484
- attributeBreakpointCSSSelector,
9485
- gapValues,
9486
- gapPrefix$1,
9487
- "--grid-gap"
9488
- )
9489
- );
9490
- this.template = () => `<div class="grid">
9491
- <slot></slot>
9492
- </div>`;
9493
- this.gapAttributeDelegate = new AttributeBreakpointHandlerDelegate(
9494
- this,
9495
- "gap",
9496
- (newValue) => newValue,
9497
- "--gap"
9498
- );
9499
- this.shadowRoot.innerHTML = this.template();
9500
- }
9501
- static get observedAttributes() {
9502
- return [
9503
- ...super.observedAttributes,
9504
- "grid-cols",
9505
- "grid-cols--mobile",
9506
- "grid-cols--tablet",
9507
- "grid-cols--laptop",
9508
- "justify-content",
9509
- "justify-items",
9510
- "align-content",
9511
- "align-items",
9512
- "justify-content--mobile",
9513
- "justify-items--mobile",
9514
- "align-content--mobile",
9515
- "align-items--mobile",
9516
- "justify-content--tablet",
9517
- "justify-items--tablet",
9518
- "align-content--tablet",
9519
- "align-items--tablet",
9520
- "justify-content--laptop",
9521
- "justify-items--laptop",
9522
- "align-content--laptop",
9523
- "align-items--laptop",
9524
- "justify-content--desktop",
9525
- "justify-items--desktop",
9526
- "align-content--desktop",
9527
- "align-items--desktop"
9528
- ];
9529
- }
9530
- connectedCallback() {
9531
- super.connectedCallback();
9532
- if (!this.gap) {
9533
- this.gap = "default";
9534
- }
9535
- if (!this.alignItems) {
9536
- this.alignItems = "stretch";
9537
- }
9538
- }
9539
- attributeChangedCallback(attrName, oldValue, newValue) {
9540
- if (oldValue !== newValue) {
9541
- switch (attrName) {
9542
- case "grid-cols":
9543
- case "grid-cols--mobile":
9544
- case "grid-cols--tablet":
9545
- case "grid-cols--laptop":
9546
- this.updateAttribute(attrName, oldValue, newValue, gridColsValues);
9547
- break;
9548
- case "justify-content":
9549
- case "align-content":
9550
- case "justify-content--mobile":
9551
- case "align-content--mobile":
9552
- case "justify-content--tablet":
9553
- case "align-content--tablet":
9554
- case "justify-content--laptop":
9555
- case "align-content--laptop":
9556
- case "justify-content--desktop":
9557
- case "align-content--desktop":
9558
- this.updateAttribute(
9559
- attrName,
9560
- oldValue,
9561
- newValue,
9562
- contentAlignmentValues
9563
- );
9564
- break;
9565
- case "justify-items":
9566
- case "align-items":
9567
- case "justify-items--mobile":
9568
- case "align-items--mobile":
9569
- case "justify-items--tablet":
9570
- case "align-items--tablet":
9571
- case "justify-items--laptop":
9572
- case "align-items--laptop":
9573
- case "justify-items--desktop":
9574
- case "align-items--desktop":
9575
- this.updateAttribute(
9576
- attrName,
9577
- oldValue,
9578
- newValue,
9579
- itemsAlignmentValues
9580
- );
9581
- break;
9582
- default:
9583
- super.attributeChangedCallback(attrName, oldValue, newValue);
9584
- break;
9585
- }
9586
- }
9587
- }
9588
- updateGap(oldValue, newValue, attrValue) {
9589
- if (!this.checkName(attrValue, newValue)) {
9590
- console.error(`${newValue} is not a valid gap value`);
9591
- return;
9592
- }
9593
- const updateGapStyle = (value) => {
9594
- if (value !== null && value !== "" && value !== "default") {
9595
- this.$el.style.setProperty(
9596
- `--grid-gap--mobile`,
9597
- `var(--px-spacing-${value}-mobile)`
9598
- );
9599
- this.$el.style.setProperty(
9600
- `--grid-gap--tablet`,
9601
- `var(--px-spacing-${value}-tablet)`
9602
- );
9603
- this.$el.style.setProperty(
9604
- `--grid-gap--laptop`,
9605
- `var(--px-spacing-${value}-laptop)`
9606
- );
9607
- }
9608
- };
9609
- updateGapStyle(oldValue);
9610
- updateGapStyle(newValue);
9611
- }
9612
- updateAttribute(attrName, oldValue, newValue, attrValues) {
9613
- if (!this.checkName(attrValues, newValue)) {
9614
- console.error(`${newValue} is not an allowed ${attrName} value`);
9615
- } else if (attrName === "grid-cols" || attrName === "grid-cols--mobile" || attrName === "grid-cols--tablet" || attrName === "grid-cols--laptop" || attrName === "grid-cols--desktop") {
9616
- this.$el.style.setProperty(`--${attrName}`, newValue);
9617
- } else {
9618
- if (oldValue !== null && oldValue !== "" && oldValue !== "default") {
9619
- this.$el.classList.toggle(`${attrName}-${oldValue}`);
9620
- }
9621
- if (newValue !== null && newValue !== "" && newValue !== "default") {
9622
- this.$el.classList.toggle(`${attrName}-${newValue}`);
9623
- }
9624
- }
9625
- }
9626
- get gap() {
9627
- return this.getAttribute("gap");
9628
- }
9629
- set gap(value) {
9630
- this.setAttribute("gap", value);
9631
- }
9632
- get gapMobile() {
9633
- return this.getAttribute("gap--mobile");
9634
- }
9635
- set gapMobile(value) {
9636
- this.setAttribute("gap--mobile", value);
9637
- }
9638
- get gapTablet() {
9639
- return this.getAttribute("gap--tablet");
9640
- }
9641
- set gapTablet(value) {
9642
- this.setAttribute("gap--tablet", value);
9643
- }
9644
- get gapLaptop() {
9645
- return this.getAttribute("gap--laptop");
9646
- }
9647
- set gapLaptop(value) {
9648
- this.setAttribute("gap--laptop", value);
9649
- }
9650
- get gridCols() {
9651
- return this.getAttribute("grid-cols");
9652
- }
9653
- set gridCols(value) {
9654
- this.setAttribute("grid-cols", value);
9655
- }
9656
- get gridColsMobile() {
9657
- return this.getAttribute("grid-cols--mobile");
9658
- }
9659
- set gridColsMobile(value) {
9660
- this.setAttribute("grid-cols--mobile", value);
9661
- }
9662
- get gridColsTablet() {
9663
- return this.getAttribute("grid-cols--tablet");
9664
- }
9665
- set gridColsTablet(value) {
9666
- this.setAttribute("grid-cols--tablet", value);
9667
- }
9668
- get gridColsLaptop() {
9669
- return this.getAttribute("grid-cols--laptop");
9670
- }
9671
- set gridColsLaptop(value) {
9672
- this.setAttribute("grid-cols--laptop", value);
9673
- }
9674
- get justifyContent() {
9675
- return this.getAttribute("justify-content");
9676
- }
9677
- set justifyContent(value) {
9678
- this.setAttribute("justify-content", value);
9679
- }
9680
- get justifyItems() {
9681
- return this.getAttribute("justify-items");
9682
- }
9683
- set justifyItems(value) {
9684
- this.setAttribute("justify-items", value);
9685
- }
9686
- get alignContent() {
9687
- return this.getAttribute("align-content");
9688
- }
9689
- set alignContent(value) {
9690
- this.setAttribute("align-content", value);
9691
- }
9692
- get alignItems() {
9693
- return this.getAttribute("align-items");
9694
- }
9695
- set alignItems(value) {
9696
- this.setAttribute("align-items", value);
9697
- }
9698
- get justifyContentMobile() {
9699
- return this.getAttribute("justify-content--mobile");
9700
- }
9701
- set justifyContentMobile(value) {
9702
- this.setAttribute("justify-content--mobile", value);
9703
- }
9704
- get justifyItemsMobile() {
9705
- return this.getAttribute("justify-items--mobile");
9706
- }
9707
- set justifyItemsMobile(value) {
9708
- this.setAttribute("justify-items--mobile", value);
9709
- }
9710
- get alignContentMobile() {
9711
- return this.getAttribute("align-content--mobile");
9712
- }
9713
- set alignContentMobile(value) {
9714
- this.setAttribute("align-content--mobile", value);
9715
- }
9716
- get alignItemsMobile() {
9717
- return this.getAttribute("align-items--mobile");
9718
- }
9719
- set alignItemsMobile(value) {
9720
- this.setAttribute("align-items--mobile", value);
9721
- }
9722
- get justifyContentTablet() {
9723
- return this.getAttribute("justify-content--tablet");
9724
- }
9725
- set justifyContentTablet(value) {
9726
- this.setAttribute("justify-content--tablet", value);
9727
- }
9728
- get justifyItemsTablet() {
9729
- return this.getAttribute("justify-items--tablet");
9730
- }
9731
- set justifyItemsTablet(value) {
9732
- this.setAttribute("justify-items--tablet", value);
9641
+ this.setAttribute("anchoralignment", value);
9642
+ } else {
9643
+ console.warn(
9644
+ `Invalid anchor alignment value: ${value}. Using default ${defaultAnchorAlignment}.`
9645
+ );
9646
+ this.setAttribute("anchoralignment", defaultAnchorAlignment);
9647
+ }
9733
9648
  }
9734
- get alignContentTablet() {
9735
- return this.getAttribute("align-content--tablet");
9649
+ get usePolyfill() {
9650
+ return this.hasAttribute("use-polyfill");
9736
9651
  }
9737
- set alignContentTablet(value) {
9738
- this.setAttribute("align-content--tablet", value);
9652
+ set usePolyfill(value) {
9653
+ if (value) {
9654
+ this.setAttribute("use-polyfill", "");
9655
+ } else {
9656
+ this.removeAttribute("use-polyfill");
9657
+ }
9739
9658
  }
9740
- get alignItemsTablet() {
9741
- return this.getAttribute("align-items--tablet");
9659
+ }
9660
+ _Dropdown_instances = new WeakSet();
9661
+ resetManualPopoverDisplay_fn = function() {
9662
+ this.isAboutToClose = false;
9663
+ this.$trigger.removeEventListener("click", __privateGet(this, _onTriggerClick));
9664
+ this.$popoverElement.removeEventListener(
9665
+ "beforetoggle",
9666
+ __privateGet(this, _beforeToggle)
9667
+ );
9668
+ this.$popoverElement.removeEventListener("toggle", __privateGet(this, _onToggle));
9669
+ };
9670
+ _onTriggerClick = new WeakMap();
9671
+ _beforeToggle = new WeakMap();
9672
+ _onToggle = new WeakMap();
9673
+ /**
9674
+ * Handles the manual display of the popover when the trigger is clicked.
9675
+ * This is necessary for cases where the trigger is not a button or input element.
9676
+ * This method adds event listeners to the trigger element to toggle the popover.
9677
+ * It also manages the state of whether the popover is about to close or not to avoid
9678
+ * race conditions when the popover is toggled and the trigger click event is fired.
9679
+ */
9680
+ handleManualPopoverDisplay_fn = function() {
9681
+ if (this.$trigger && !["button", "input"].includes(this.$trigger.localName)) {
9682
+ this.$trigger.addEventListener("click", __privateGet(this, _onTriggerClick));
9683
+ this.$popoverElement.addEventListener("beforetoggle", __privateGet(this, _beforeToggle));
9684
+ this.$popoverElement.addEventListener("toggle", __privateGet(this, _onToggle));
9742
9685
  }
9743
- set alignItemsTablet(value) {
9744
- this.setAttribute("align-items--tablet", value);
9686
+ };
9687
+ if (!customElements.get("px-dropdown")) {
9688
+ customElements.define("px-dropdown", Dropdown);
9689
+ }
9690
+ const fieldsetCss = ':host{display:block}:host *{box-sizing:border-box}fieldset{display:flex;flex-direction:column;margin:0;padding:0;border:0;font-family:var(--px-font-family)}fieldset legend{padding:0}fieldset ::slotted([slot="legend"]:not([shown--sr])){display:block;margin-bottom:var(--px-spacing-xs-mobile)}fieldset ::slotted([slot="error-text"]){display:none;font-size:var(--px-text-size-body-m-mobile);line-height:var(--px-line-height-ratio-l);color:var(--px-color-text-purpose-error-default);margin-bottom:var(--px-spacing-xs-mobile)}:host([state="error"]) ::slotted([slot="error-text"]){display:block}@media only screen and (min-width: 48em){fieldset ::slotted([slot="legend"]:not([shown--sr])){margin-bottom:var(--px-spacing-xs-tablet)}fieldset ::slotted([slot="error-text"]){font-size:var(--px-text-size-body-m-tablet)}}@media only screen and (min-width: 64.0625em){fieldset ::slotted([slot="legend"]:not([shown--sr])){margin-bottom:var(--px-spacing-xs-laptop)}fieldset ::slotted([slot="error-text"]){font-size:var(--px-text-size-body-m-laptop)}}@media only screen and (min-width: 90.0625em){fieldset ::slotted([slot="legend"]:not([shown--sr])){margin-bottom:var(--px-spacing-xs-desktop)}fieldset ::slotted([slot="error-text"]){font-size:var(--px-text-size-body-m-desktop)}}:host([inverted]) fieldset ::slotted([slot="error-text"]){color:var(--px-color-text-purpose-error-inverted)}';
9691
+ const fieldsetStyles = new CSSStyleSheet();
9692
+ fieldsetStyles.replaceSync(fieldsetCss);
9693
+ const _Fieldset = class _Fieldset extends PxElement {
9694
+ constructor() {
9695
+ super(fieldsetStyles);
9696
+ this.template = () => `<fieldset >
9697
+ <legend><slot name="legend"></slot></legend>
9698
+ <slot name="error-text"></slot>
9699
+ <slot></slot>
9700
+ </fieldset>`;
9701
+ this.shadowRoot.innerHTML = this.template();
9745
9702
  }
9746
- get justifyContentLaptop() {
9747
- return this.getAttribute("justify-content--laptop");
9703
+ static get observedAttributes() {
9704
+ return [
9705
+ ...super.observedAttributes,
9706
+ "inverted",
9707
+ "role",
9708
+ "aria-required",
9709
+ "aria-disabled",
9710
+ "state"
9711
+ ];
9748
9712
  }
9749
- set justifyContentLaptop(value) {
9750
- this.setAttribute("justify-content--laptop", value);
9713
+ connectedCallback() {
9714
+ var _a;
9715
+ const hasLegend = ((_a = this.$slotLegend) == null ? void 0 : _a.assignedNodes().length) > 0;
9716
+ if (!hasLegend) {
9717
+ console.error(
9718
+ '<px-fieldset> requires a slot="legend" containing the description of the fieldset.'
9719
+ );
9720
+ }
9721
+ this.setupErrorState();
9722
+ transferAccessibilityAttributes(this, this.$el, false);
9751
9723
  }
9752
- get justifyItemsLaptop() {
9753
- return this.getAttribute("justify-items--laptop");
9724
+ attributeChangedCallback(attrName, oldValue, newValue) {
9725
+ if (oldValue !== newValue) {
9726
+ switch (attrName) {
9727
+ case "disabled": {
9728
+ const children = this.querySelectorAll(
9729
+ "px-radio-group, px-radio, px-checkbox, px-fileupload, px-input, px-textarea, px-select, px-switch"
9730
+ );
9731
+ children.forEach((child) => {
9732
+ child.setAttribute(attrName, "true");
9733
+ });
9734
+ break;
9735
+ }
9736
+ case "role":
9737
+ case "aria-required":
9738
+ case "aria-disabled":
9739
+ if (newValue !== null) {
9740
+ this.$el.setAttribute(attrName, this.getAttribute(attrName));
9741
+ this.removeAttribute(attrName);
9742
+ }
9743
+ break;
9744
+ case "state":
9745
+ this.setupErrorState();
9746
+ break;
9747
+ default:
9748
+ super.attributeChangedCallback(attrName, oldValue, newValue);
9749
+ break;
9750
+ }
9751
+ }
9754
9752
  }
9755
- set justifyItemsLaptop(value) {
9756
- this.setAttribute("justify-items--laptop", value);
9753
+ setupErrorState() {
9754
+ var _a;
9755
+ const hasErrorText = ((_a = this.$slotError) == null ? void 0 : _a.assignedNodes().length) > 0;
9756
+ if (this.state === "error" && !hasErrorText) {
9757
+ console.error(
9758
+ '<px-fieldset> with state="error" requires a slot="error-text" containing the error description.'
9759
+ );
9760
+ }
9761
+ if (this.state === "error" && hasErrorText) {
9762
+ const id = Math.random().toString(36).substr(2, 9);
9763
+ this.$el.setAttribute("id", id);
9764
+ this.$el.setAttribute("aria-describedby", `${id}-error-text`);
9765
+ this.$el.setAttribute("aria-invalid", "true");
9766
+ this.$slotError.setAttribute("id", `${id}-error-text`);
9767
+ } else {
9768
+ this.$el.removeAttribute("id");
9769
+ this.$el.removeAttribute("aria-describedby");
9770
+ this.$el.removeAttribute("aria-invalid");
9771
+ this.$slotError.removeAttribute("id");
9772
+ }
9757
9773
  }
9758
- get alignContentLaptop() {
9759
- return this.getAttribute("align-content--laptop");
9774
+ get $slotLegend() {
9775
+ return this.shadowRoot.querySelector(
9776
+ 'slot[name="legend"]'
9777
+ );
9760
9778
  }
9761
- set alignContentLaptop(value) {
9762
- this.setAttribute("align-content--laptop", value);
9779
+ get $slotError() {
9780
+ return this.shadowRoot.querySelector(
9781
+ 'slot[name="error-text"]'
9782
+ );
9763
9783
  }
9764
- get alignItemsLaptop() {
9765
- return this.getAttribute("align-items--laptop");
9784
+ get inverted() {
9785
+ return this.hasAttribute("inverted");
9766
9786
  }
9767
- set alignItemsLaptop(value) {
9768
- this.setAttribute("align-items--laptop", value);
9787
+ set inverted(value) {
9788
+ if (value) {
9789
+ this.setAttribute("inverted", "");
9790
+ } else {
9791
+ this.removeAttribute("inverted");
9792
+ }
9769
9793
  }
9770
- get justifyContentDesktop() {
9771
- return this.getAttribute("justify-content--desktop");
9794
+ get role() {
9795
+ return this.getAttribute("role");
9772
9796
  }
9773
- set justifyContentDesktop(value) {
9774
- this.setAttribute("justify-content--desktop", value);
9797
+ set role(value) {
9798
+ if (value) {
9799
+ this.setAttribute("role", value);
9800
+ } else {
9801
+ this.removeAttribute("role");
9802
+ }
9775
9803
  }
9776
- get justifyItemsDesktop() {
9777
- return this.getAttribute("justify-items--desktop");
9804
+ get ariaRequired() {
9805
+ return this.getAttribute("aria-required");
9778
9806
  }
9779
- set justifyItemsDesktop(value) {
9780
- this.setAttribute("justify-items--desktop", value);
9807
+ set ariaRequired(value) {
9808
+ if (value) {
9809
+ this.setAttribute("aria-required", value);
9810
+ } else {
9811
+ this.removeAttribute("aria-required");
9812
+ }
9781
9813
  }
9782
- get alignContentDesktop() {
9783
- return this.getAttribute("align-content--desktop");
9814
+ get ariaDisabled() {
9815
+ return this.getAttribute("aria-disabled");
9784
9816
  }
9785
- set alignContentDesktop(value) {
9786
- this.setAttribute("align-content--desktop", value);
9817
+ set ariaDisabled(value) {
9818
+ if (value) {
9819
+ this.setAttribute("aria-disabled", value);
9820
+ } else {
9821
+ this.removeAttribute("aria-disabled");
9822
+ }
9787
9823
  }
9788
- get alignItemsDesktop() {
9789
- return this.getAttribute("align-items--desktop");
9824
+ get state() {
9825
+ return this.getAttribute("state");
9790
9826
  }
9791
- set alignItemsDesktop(value) {
9792
- this.setAttribute("align-items--desktop", value);
9827
+ set state(value) {
9828
+ if (value) {
9829
+ this.setAttribute("state", value);
9830
+ } else {
9831
+ this.removeAttribute("state");
9832
+ }
9793
9833
  }
9794
9834
  };
9795
- _Grid.nativeName = "div";
9796
- let Grid = _Grid;
9797
- if (!customElements.get("px-grid")) {
9798
- customElements.define("px-grid", Grid);
9835
+ _Fieldset.nativeName = "fieldset";
9836
+ let Fieldset = _Fieldset;
9837
+ if (!customElements.get("px-fieldset")) {
9838
+ customElements.define("px-fieldset", Fieldset);
9799
9839
  }
9800
9840
  const linkStyles$1 = new CSSStyleSheet();
9801
9841
  const buttonStyles = new CSSStyleSheet();
@@ -9818,7 +9858,7 @@ const _Link = class _Link extends PxElement {
9818
9858
  constructor() {
9819
9859
  super(linkStyles$1, buttonStyles, typographyStyles$3);
9820
9860
  this.template = () => `<slot name="before"></slot><slot></slot><slot name="after"></slot>`;
9821
- const $root = document.createElement(this.nativeName);
9861
+ const $root = document.createElement(_Link.nativeName);
9822
9862
  $root.innerHTML = this.template();
9823
9863
  this.shadowRoot.appendChild($root);
9824
9864
  }
@@ -9845,7 +9885,6 @@ const _Link = class _Link extends PxElement {
9845
9885
  ];
9846
9886
  }
9847
9887
  connectedCallback() {
9848
- super.connectedCallback();
9849
9888
  if (this.$before && this.$before.localName === "px-icon") {
9850
9889
  this.configureBeforeAfterIcon(this.$before);
9851
9890
  }
@@ -10103,8 +10142,8 @@ headingStyles$1.replaceSync(headingCss);
10103
10142
  const _Paragraph = class _Paragraph extends PxElement {
10104
10143
  constructor() {
10105
10144
  super(typographyStyles$2, headingStyles$1, paragraphStyles$1);
10106
- this.template = () => `<p><slot></slot></p>`;
10107
- this.shadowRoot.innerHTML = this.template();
10145
+ this.template = `<p><slot></slot></p>`;
10146
+ this.shadowRoot.innerHTML = this.template;
10108
10147
  }
10109
10148
  static get observedAttributes() {
10110
10149
  return [
@@ -10338,7 +10377,6 @@ const _FooterSitemapItem = class _FooterSitemapItem extends PxElement {
10338
10377
  return [...super.observedAttributes, "inverted"];
10339
10378
  }
10340
10379
  connectedCallback() {
10341
- super.connectedCallback();
10342
10380
  this.loadTemplate();
10343
10381
  window.addEventListener("resize", this.throttledLoadTemplate);
10344
10382
  if (!this.$ul) {
@@ -10900,24 +10938,16 @@ const imageWidthValues = ["", "xs", "s", "m", "l", "xl"];
10900
10938
  const imageHeightValues = ["", "xs", "s", "m", "l", "xl"];
10901
10939
  const heightAttributeBreakpointCSSSelector = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) img`;
10902
10940
  const heightPrefix = "px-image";
10941
+ const imageCssTokenBreakpoints = cssTokenBreakpoints(
10942
+ "height",
10943
+ heightAttributeBreakpointCSSSelector,
10944
+ imageHeightValues,
10945
+ heightPrefix,
10946
+ "--img-height"
10947
+ );
10903
10948
  const _AbstractImage = class _AbstractImage extends PxElement {
10904
10949
  constructor() {
10905
- super(
10906
- styleSheet$m,
10907
- cssTokenBreakpoints(
10908
- "height",
10909
- heightAttributeBreakpointCSSSelector,
10910
- imageHeightValues,
10911
- heightPrefix,
10912
- "--img-height"
10913
- )
10914
- );
10915
- this.heightAttributeDelegate = new AttributeBreakpointHandlerDelegate(
10916
- this,
10917
- "height",
10918
- (newValue) => newValue,
10919
- "--img-height"
10920
- );
10950
+ super(styleSheet$m, imageCssTokenBreakpoints);
10921
10951
  }
10922
10952
  static get observedAttributes() {
10923
10953
  return [
@@ -11179,7 +11209,7 @@ let AbstractImage = _AbstractImage;
11179
11209
  const _Image = class _Image extends AbstractImage {
11180
11210
  constructor() {
11181
11211
  super();
11182
- const $root = document.createElement(this.nativeName);
11212
+ const $root = document.createElement(_Image.nativeName);
11183
11213
  this.shadowRoot.appendChild($root);
11184
11214
  }
11185
11215
  };
@@ -11209,7 +11239,7 @@ const _Picture = class _Picture extends AbstractImage {
11209
11239
  "tif",
11210
11240
  "tiff"
11211
11241
  ];
11212
- const $root = document.createElement(this.nativeName);
11242
+ const $root = document.createElement(_Picture.nativeName);
11213
11243
  this.shadowRoot.appendChild($root);
11214
11244
  }
11215
11245
  static get observedAttributes() {
@@ -11424,7 +11454,6 @@ class AbstractInputElement extends PxElement {
11424
11454
  }
11425
11455
  }
11426
11456
  connectedCallback() {
11427
- super.connectedCallback();
11428
11457
  ["change"].forEach((event) => {
11429
11458
  this.$el.addEventListener(event, () => {
11430
11459
  var _a;
@@ -11696,29 +11725,16 @@ if (!customElements.get("px-fileupload")) {
11696
11725
  const styles$o = ".list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}";
11697
11726
  const styleSheet$l = new CSSStyleSheet();
11698
11727
  styleSheet$l.replaceSync(styles$o);
11699
- const breakpointsValues = ["", "mobile", "tablet", "laptop"];
11700
11728
  const AttributeBreakpointCSSSelector = (attributeName, attributeValue, device) => `:host([${attributeName}${device ? `--${device}` : ""}='${attributeValue}']) .list`;
11701
11729
  const gapPrefix = "px-spacing";
11730
+ const listCssTokenBreakpoints = cssTokenBreakpoints(
11731
+ "gap",
11732
+ AttributeBreakpointCSSSelector,
11733
+ gapValues,
11734
+ gapPrefix,
11735
+ "--list-gap"
11736
+ );
11702
11737
  const _List = class _List extends PxElement {
11703
- constructor() {
11704
- super(
11705
- styleSheet$l,
11706
- cssTokenBreakpoints(
11707
- "gap",
11708
- AttributeBreakpointCSSSelector,
11709
- gapValues,
11710
- gapPrefix,
11711
- "--list-gap"
11712
- )
11713
- );
11714
- this.AttributeDelegate = new AttributeBreakpointHandlerDelegate(
11715
- this,
11716
- "gap",
11717
- (newValue) => newValue,
11718
- "--list-gap"
11719
- );
11720
- this.shadowRoot.innerHTML = this.template();
11721
- }
11722
11738
  template() {
11723
11739
  return `
11724
11740
  <div class="list" role="list">
@@ -11726,11 +11742,14 @@ const _List = class _List extends PxElement {
11726
11742
  </div>
11727
11743
  `;
11728
11744
  }
11745
+ constructor() {
11746
+ super(styleSheet$l, listCssTokenBreakpoints);
11747
+ this.shadowRoot.innerHTML = this.template();
11748
+ }
11729
11749
  static get observedAttributes() {
11730
11750
  return ["inverted"];
11731
11751
  }
11732
11752
  connectedCallback() {
11733
- super.connectedCallback();
11734
11753
  if (!this.gap) {
11735
11754
  this.gap = "xs";
11736
11755
  }
@@ -11837,6 +11856,7 @@ const _ListItem = class _ListItem extends PxElement {
11837
11856
  static get observedAttributes() {
11838
11857
  return ["inverted"];
11839
11858
  }
11859
+ // TODO: factorize code
11840
11860
  attributeChangedCallback(attrName, oldValue, newValue) {
11841
11861
  if (oldValue !== newValue) {
11842
11862
  switch (attrName) {
@@ -13905,7 +13925,6 @@ const _StatusCard = class _StatusCard extends PxElement {
13905
13925
  return ["state", "inverted", "status-icon-aria-label"];
13906
13926
  }
13907
13927
  connectedCallback() {
13908
- super.connectedCallback();
13909
13928
  this.$closeButtonSlot.addEventListener("click", () => {
13910
13929
  this.close();
13911
13930
  });
@@ -14235,6 +14254,7 @@ const _Switch = class _Switch extends PxElement {
14235
14254
  }
14236
14255
  };
14237
14256
  _Switch.nativeName = "input";
14257
+ _Switch.accessorExclusions = ["checked", "disabled"];
14238
14258
  let Switch = _Switch;
14239
14259
  if (!customElements.get("px-switch")) {
14240
14260
  customElements.define("px-switch", Switch);
@@ -14813,7 +14833,6 @@ const _Tag = class _Tag extends PxElement {
14813
14833
  this.shadowRoot.adoptedStyleSheets = [styleSheet$5];
14814
14834
  }
14815
14835
  connectedCallback() {
14816
- super.connectedCallback();
14817
14836
  if (this.$iconSlot) {
14818
14837
  this.$iconSlot.setAttribute("size", "xs");
14819
14838
  this.$iconSlot.setAttribute("color", "inherit");
@@ -14936,7 +14955,7 @@ const tileBackgroundColorValues = [
14936
14955
  "container-light",
14937
14956
  "container-default"
14938
14957
  ];
14939
- const _Tile = class _Tile extends PxElement {
14958
+ const _Tile = class _Tile extends VerticallyExtendedElement {
14940
14959
  template() {
14941
14960
  return `
14942
14961
  <px-hstack gap="s" align-items="center" class="tile__header">
@@ -14951,7 +14970,7 @@ const _Tile = class _Tile extends PxElement {
14951
14970
  }
14952
14971
  constructor() {
14953
14972
  super(commonStyleSheet$5, styleSheet$4);
14954
- const $root = document.createElement(this.nativeName);
14973
+ const $root = document.createElement(_Tile.nativeName);
14955
14974
  $root.classList.add("tile");
14956
14975
  $root.innerHTML = this.template();
14957
14976
  this.shadowRoot.appendChild($root);
@@ -15121,13 +15140,12 @@ const _TileButton = class _TileButton extends PxElement {
15121
15140
  }
15122
15141
  constructor() {
15123
15142
  super(commonStyleSheet$4, styleSheet$3);
15124
- const $root = document.createElement(this.nativeName);
15143
+ const $root = document.createElement(_TileButton.nativeName);
15125
15144
  $root.classList.add("tile-button");
15126
15145
  $root.innerHTML = this.template();
15127
15146
  this.shadowRoot.appendChild($root);
15128
15147
  }
15129
15148
  connectedCallback() {
15130
- super.connectedCallback();
15131
15149
  if (this.$slotPrefix) {
15132
15150
  const prefixImg = this.querySelector('px-img[slot="prefix"]');
15133
15151
  if (prefixImg) {
@@ -15231,6 +15249,7 @@ const _TileButton = class _TileButton extends PxElement {
15231
15249
  }
15232
15250
  };
15233
15251
  _TileButton.nativeName = "button";
15252
+ _TileButton.accessorExclusions = ["disabled"];
15234
15253
  let TileButton = _TileButton;
15235
15254
  if (!customElements.get("px-tile-button")) {
15236
15255
  customElements.define("px-tile-button", TileButton);
@@ -15824,13 +15843,12 @@ const _TileLink = class _TileLink extends PxElement {
15824
15843
  }
15825
15844
  constructor() {
15826
15845
  super(commonStyleSheet$1, styleSheet$2);
15827
- const $root = document.createElement(this.nativeName);
15846
+ const $root = document.createElement(_TileLink.nativeName);
15828
15847
  $root.classList.add("tile-link");
15829
15848
  $root.innerHTML = this.template();
15830
15849
  this.shadowRoot.appendChild($root);
15831
15850
  }
15832
15851
  connectedCallback() {
15833
- super.connectedCallback();
15834
15852
  if (this.$slotPrefix) {
15835
15853
  const prefixImg = this.querySelector('px-img[slot="prefix"]');
15836
15854
  if (prefixImg) {
@@ -16496,6 +16514,7 @@ export {
16496
16514
  Typography,
16497
16515
  Upload,
16498
16516
  VStack,
16517
+ VerticallyExtendedElement,
16499
16518
  WithExtraAttributes,
16500
16519
  accordionBackgroundColorValues,
16501
16520
  accordionVariantValues,
@@ -16509,7 +16528,6 @@ export {
16509
16528
  borderSideValues,
16510
16529
  borderValues,
16511
16530
  boxShadowValues,
16512
- breakpointsValues,
16513
16531
  buttonIconSizeValues,
16514
16532
  buttonIconVariantValues,
16515
16533
  cardBackgroundColorValues,