@public-ui/hydrate 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +47 -76
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -8775,7 +8775,7 @@ function get() {
8775
8775
  },
8776
8776
  interpolation: {
8777
8777
  escapeValue: true,
8778
- format: (value, format, lng, options) => value,
8778
+ format: value => value,
8779
8779
  prefix: '{{',
8780
8780
  suffix: '}}',
8781
8781
  formatSeparator: ',',
@@ -9568,7 +9568,7 @@ const initKoliBri = () => {
9568
9568
  | . ' | .-. | | | ,--. | .-. \\ | .--' ,--.
9569
9569
  | |\\ \\ | '-' | | | | | | '--' / | | | |
9570
9570
  \`--' \`--´ \`---´ \`--' \`--' \`------´ \`--' \`--'
9571
- 🚹 The accessible HTML-Standard | 👉 https://public-ui.github.io | 2.0.2
9571
+ 🚹 The accessible HTML-Standard | 👉 https://public-ui.github.io | 2.0.3
9572
9572
  `, {
9573
9573
  forceLog: true,
9574
9574
  });
@@ -11444,19 +11444,13 @@ var locale_de = {
11444
11444
  'nav-maximize': 'Navigation maximieren',
11445
11445
  'nav-minimize': 'Navigation minimieren',
11446
11446
  'logo-description': 'Logo {{orgShort}}. Bundesadler mit Flaggenstab und Schriftzug {{orgLong}}',
11447
- 'open-link-in-tab': 'Der Link wird in einem neuen Tab geöffnet.',
11447
+ 'open-link-in-tab': 'Öffnet in neuem Tab.',
11448
11448
  'kolibri-logo': 'Logo von KoliBri',
11449
- 'sort-ascending': 'Die Spalte {{column}} ist aufsteigend{{multi}} sortiert.',
11450
- 'sort-descending': 'Die Spalte {{column}} ist absteigend{{multi}} sortiert.',
11451
- 'sort-then-ascending': ', dann die Spalte {{column}} aufsteigend',
11452
- 'sort-then-descending': ', dann die Spalte {{column}} absteigend',
11453
- 'sort-then-last-ascending': ' und dann die Spalte {{column}} aufsteigend',
11454
- 'sort-then-last-descending': ' und dann die Spalte {{column}} absteigend',
11455
- 'sort-none': 'Spalte {{column}} nicht sortiert',
11456
- 'table-sort-none': 'Keine Spalte ist sortiert.',
11457
11449
  'table-pagination-label': 'Paginierung für die Tabelle {{label}}',
11458
11450
  'avatar-alt': 'Avatar von {{name}}',
11459
11451
  'toast-close-all': 'Alle schließen',
11452
+ 'error-list': 'Fehlerliste',
11453
+ 'error-list-message': 'Bitte korrigieren Sie folgende Fehler:',
11460
11454
  };
11461
11455
 
11462
11456
  var locale_en = {
@@ -11486,19 +11480,13 @@ var locale_en = {
11486
11480
  'nav-maximize': 'Maximize navigation',
11487
11481
  'nav-minimize': 'Minimize navigation',
11488
11482
  'logo-description': 'Logo {{orgShort}}. Federal eagle with flag staff and lettering {{orgLong}}',
11489
- 'open-link-in-tab': 'The link will open in a new tab.',
11483
+ 'open-link-in-tab': 'Opens in new tab.',
11490
11484
  'kolibri-logo': 'KoliBri logo',
11491
- 'sort-descending': 'Sorted column {{column}} descending{{multi}}',
11492
- 'sort-ascending': 'Sorted column {{column}} ascending{{multi}}',
11493
- 'sort-then-ascending': ', then column {{column}} acending',
11494
- 'sort-then-descending': ', then column {{column}} descending',
11495
- 'sort-then-last-ascending': ' and then column {{column}} acending',
11496
- 'sort-then-last-descending': ' and then column {{column}} descending',
11497
- 'sort-none': 'column {{column}} not sorted',
11498
- 'table-sort-none': 'No column is sorted.',
11499
11485
  'table-pagination-label': 'Pagination for table {{label}}',
11500
11486
  'avatar-alt': 'Avatar of {{name}}',
11501
11487
  'toast-close-all': 'Close all',
11488
+ 'error-list': 'Error list',
11489
+ 'error-list-message': 'Please correct the following errors',
11502
11490
  };
11503
11491
 
11504
11492
  const mapLocaleKeys = (locale) => Object.keys(locale).reduce((a, c) => ((a[`${'kol'}-${c}`] = locale[c]), a), {});
@@ -13440,6 +13428,10 @@ class KolDetails {
13440
13428
  }; }
13441
13429
  }
13442
13430
 
13431
+ const validateErrorList = (component, value) => {
13432
+ watchValidator(component, 'errorList', (value) => typeof value === 'object', new Set(['Object']), value);
13433
+ };
13434
+
13443
13435
  class KolForm {
13444
13436
  constructor(hostRef) {
13445
13437
  registerInstance(this, hostRef);
@@ -13459,12 +13451,25 @@ class KolForm {
13459
13451
  (_b = this.state._on) === null || _b === void 0 ? void 0 : _b.onReset(event);
13460
13452
  }
13461
13453
  };
13454
+ this.handleLinkClick = (event) => {
13455
+ var _a;
13456
+ const href = (_a = event.target) === null || _a === void 0 ? void 0 : _a.href;
13457
+ if (href) {
13458
+ const hrefUrl = new URL(href);
13459
+ const targetElement = document.querySelector(hrefUrl.hash);
13460
+ if (targetElement && typeof targetElement.focus === 'function') {
13461
+ targetElement.scrollIntoView({ behavior: 'smooth' });
13462
+ targetElement.focus();
13463
+ }
13464
+ }
13465
+ };
13462
13466
  this._on = undefined;
13463
13467
  this._requiredText = true;
13468
+ this._errorList = undefined;
13464
13469
  this.state = {};
13465
13470
  }
13466
13471
  render() {
13467
- return (hAsync("form", { method: "post", onSubmit: this.onSubmit, onReset: this.onReset, autoComplete: "off", noValidate: true }, this.state._requiredText === true ? (hAsync("p", null, hAsync("kol-indented-text", null, translate('kol-form-description')))) : typeof this.state._requiredText === 'string' && this.state._requiredText.length > 0 ? (hAsync("p", null, hAsync("kol-indented-text", null, this.state._requiredText))) : null, hAsync("slot", null)));
13472
+ return (hAsync("form", { method: "post", onSubmit: this.onSubmit, onReset: this.onReset, autoComplete: "off", noValidate: true }, this._errorList && this._errorList.length > 0 && (hAsync("kol-alert", { _type: "error" }, translate('kol-error-list-message'), hAsync("nav", { "aria-label": translate('kol-error-list') }, hAsync("ul", null, this._errorList.map((error, index) => (hAsync("li", { key: index }, hAsync("kol-link", { _href: error.selector, _label: error.message, _on: { onClick: this.handleLinkClick } })))))))), this.state._requiredText === true ? (hAsync("p", null, hAsync("kol-indented-text", null, translate('kol-form-description')))) : typeof this.state._requiredText === 'string' && this.state._requiredText.length > 0 ? (hAsync("p", null, hAsync("kol-indented-text", null, this.state._requiredText))) : null, hAsync("slot", null)));
13468
13473
  }
13469
13474
  validateOn(value) {
13470
13475
  if (typeof value === 'object' && value !== null) {
@@ -13479,13 +13484,18 @@ class KolForm {
13479
13484
  watchString(this, '_requiredText', value);
13480
13485
  }
13481
13486
  }
13487
+ validateErrorList(value) {
13488
+ validateErrorList(this, value);
13489
+ }
13482
13490
  componentWillLoad() {
13483
13491
  this.validateOn(this._on);
13484
13492
  this.validateRequiredText(this._requiredText);
13493
+ this.validateErrorList(this._errorList);
13485
13494
  }
13486
13495
  static get watchers() { return {
13487
13496
  "_on": ["validateOn"],
13488
- "_requiredText": ["validateRequiredText"]
13497
+ "_requiredText": ["validateRequiredText"],
13498
+ "_errorList": ["validateErrorList"]
13489
13499
  }; }
13490
13500
  static get cmpMeta() { return {
13491
13501
  "$flags$": 9,
@@ -13493,6 +13503,7 @@ class KolForm {
13493
13503
  "$members$": {
13494
13504
  "_on": [16],
13495
13505
  "_requiredText": [8, "_required-text"],
13506
+ "_errorList": [16],
13496
13507
  "state": [32]
13497
13508
  },
13498
13509
  "$listeners$": undefined,
@@ -16937,11 +16948,10 @@ class KolLink {
16937
16948
  this._role = undefined;
16938
16949
  this._tabIndex = undefined;
16939
16950
  this._target = undefined;
16940
- this._targetDescription = 'Der Link wird in einem neuen Tab geöffnet.';
16941
16951
  this._tooltipAlign = 'right';
16942
16952
  }
16943
16953
  render() {
16944
- return (hAsync(Host, null, hAsync("kol-link-wc", { ref: this.catchRef, _accessKey: this._accessKey, _ariaCurrentValue: this._ariaCurrentValue, _download: this._download, _hideLabel: this._hideLabel, _href: this._href, _icons: this._icons, _label: this._label, _on: this._on, _role: this._role, _tabIndex: this._tabIndex, _target: this._target, _targetDescription: this._targetDescription, _tooltipAlign: this._tooltipAlign }, hAsync("slot", { name: "expert", slot: "expert" }))));
16954
+ return (hAsync(Host, null, hAsync("kol-link-wc", { ref: this.catchRef, _accessKey: this._accessKey, _ariaCurrentValue: this._ariaCurrentValue, _download: this._download, _hideLabel: this._hideLabel, _href: this._href, _icons: this._icons, _label: this._label, _on: this._on, _role: this._role, _tabIndex: this._tabIndex, _target: this._target, _tooltipAlign: this._tooltipAlign }, hAsync("slot", { name: "expert", slot: "expert" }))));
16945
16955
  }
16946
16956
  get host() { return getElement(this); }
16947
16957
  static get style() { return {
@@ -16962,7 +16972,6 @@ class KolLink {
16962
16972
  "_role": [1],
16963
16973
  "_tabIndex": [2, "_tab-index"],
16964
16974
  "_target": [1],
16965
- "_targetDescription": [1, "_target-description"],
16966
16975
  "_tooltipAlign": [1, "_tooltip-align"]
16967
16976
  },
16968
16977
  "$listeners$": undefined,
@@ -16991,7 +17000,6 @@ class KolLinkButton {
16991
17000
  this._role = undefined;
16992
17001
  this._tabIndex = undefined;
16993
17002
  this._target = undefined;
16994
- this._targetDescription = translate('kol-open-link-in-tab');
16995
17003
  this._tooltipAlign = 'right';
16996
17004
  this._variant = 'normal';
16997
17005
  }
@@ -17000,7 +17008,7 @@ class KolLinkButton {
17000
17008
  button: true,
17001
17009
  [this._variant]: this._variant !== 'custom',
17002
17010
  [this._customClass]: this._variant === 'custom' && typeof this._customClass === 'string' && this._customClass.length > 0,
17003
- }, _accessKey: this._accessKey, _ariaCurrentValue: this._ariaCurrentValue, _download: this._download, _hideLabel: this._hideLabel, _href: this._href, _icons: this._icons, _label: this._label, _on: this._on, _role: "button", _tabIndex: this._tabIndex, _target: this._target, _targetDescription: this._targetDescription, _tooltipAlign: this._tooltipAlign }, hAsync("slot", { name: "expert", slot: "expert" }))));
17011
+ }, _accessKey: this._accessKey, _ariaCurrentValue: this._ariaCurrentValue, _download: this._download, _hideLabel: this._hideLabel, _href: this._href, _icons: this._icons, _label: this._label, _on: this._on, _role: "button", _tabIndex: this._tabIndex, _target: this._target, _tooltipAlign: this._tooltipAlign }, hAsync("slot", { name: "expert", slot: "expert" }))));
17004
17012
  }
17005
17013
  get host() { return getElement(this); }
17006
17014
  static get style() { return {
@@ -17022,7 +17030,6 @@ class KolLinkButton {
17022
17030
  "_role": [1],
17023
17031
  "_tabIndex": [2, "_tab-index"],
17024
17032
  "_target": [1],
17025
- "_targetDescription": [1, "_target-description"],
17026
17033
  "_tooltipAlign": [1, "_tooltip-align"],
17027
17034
  "_variant": [1]
17028
17035
  },
@@ -17200,7 +17207,7 @@ class KolLinkWc {
17200
17207
  download: typeof this.state._download === 'string' ? this.state._download : undefined,
17201
17208
  };
17202
17209
  if (this.state._hideLabel === true && !this.state._label) {
17203
- devHint(`[KolLink] Es muss ein Aria-Label gesetzt werden _hide-label gesetzt ist.`);
17210
+ devHint(`[KolLink] Es muss ein Aria-Label gesetzt werden, wenn _hide-label gesetzt ist.`);
17204
17211
  }
17205
17212
  return { isExternal, tagAttrs };
17206
17213
  };
@@ -17215,7 +17222,6 @@ class KolLinkWc {
17215
17222
  this._role = undefined;
17216
17223
  this._tabIndex = undefined;
17217
17224
  this._target = undefined;
17218
- this._targetDescription = translate('kol-open-link-in-tab');
17219
17225
  this._tooltipAlign = 'right';
17220
17226
  this.state = {
17221
17227
  _href: '…',
@@ -17226,10 +17232,12 @@ class KolLinkWc {
17226
17232
  render() {
17227
17233
  const { isExternal, tagAttrs } = this.getRenderValues();
17228
17234
  const hasExpertSlot = showExpertSlot(this.state._label);
17229
- return (hAsync(Host, null, hAsync("a", Object.assign({ ref: this.catchRef }, tagAttrs, { accessKey: this.state._accessKey, "aria-current": this.state._ariaCurrent, "aria-label": this.state._hideLabel && typeof this.state._label === 'string' ? this.state._label : undefined, class: {
17235
+ return (hAsync(Host, null, hAsync("a", Object.assign({ ref: this.catchRef }, tagAttrs, { accessKey: this.state._accessKey, "aria-current": this.state._ariaCurrent, "aria-label": isExternal && this.state._hideLabel && typeof this.state._label === 'string'
17236
+ ? `${this.state._label} (${translate('kol-open-link-in-tab')})`
17237
+ : undefined, class: {
17230
17238
  'external-link': isExternal,
17231
17239
  'hide-label': this.state._hideLabel === true,
17232
- } }, this.state._on, { onClick: this.onClick, onKeyPress: this.onClick, role: this.state._role, tabIndex: this.state._tabIndex }), hAsync("kol-span-wc", { _accessKey: this.state._accessKey, _icons: this.state._icons, _hideLabel: this.state._hideLabel, _label: hasExpertSlot ? '' : this.state._label || this.state._href }, hAsync("slot", { name: "expert", slot: "expert" })), isExternal && hAsync("kol-icon", { class: "external-link-icon", _label: this.state._targetDescription, _icons: 'codicon codicon-link-external' })), hAsync("kol-tooltip-wc", { "aria-hidden": "true", hidden: hasExpertSlot || !this.state._hideLabel, _accessKey: this.state._accessKey, _align: this.state._tooltipAlign, _label: this.state._label || this.state._href })));
17240
+ } }, this.state._on, { onClick: this.onClick, onKeyPress: this.onClick, role: this.state._role, tabIndex: this.state._tabIndex }), hAsync("kol-span-wc", { _accessKey: this.state._accessKey, _icons: this.state._icons, _hideLabel: this.state._hideLabel, _label: hasExpertSlot ? '' : this.state._label || this.state._href }, hAsync("slot", { name: "expert", slot: "expert" })), isExternal && (hAsync("kol-icon", { class: "external-link-icon", _label: translate('kol-open-link-in-tab'), _icons: 'codicon codicon-link-external', "aria-hidden": this.state._hideLabel }))), hAsync("kol-tooltip-wc", { "aria-hidden": "true", hidden: hasExpertSlot || !this.state._hideLabel, _accessKey: this.state._accessKey, _align: this.state._tooltipAlign, _label: this.state._label || this.state._href })));
17233
17241
  }
17234
17242
  validateAccessKey(value) {
17235
17243
  validateAccessKey(this, value);
@@ -17264,9 +17272,6 @@ class KolLinkWc {
17264
17272
  validateTarget(value) {
17265
17273
  validateLinkTarget(this, value);
17266
17274
  }
17267
- validateTargetDescription(value) {
17268
- watchString(this, '_targetDescription', value);
17269
- }
17270
17275
  validateTooltipAlign(value) {
17271
17276
  validateTooltipAlign(this, value);
17272
17277
  }
@@ -17282,7 +17287,6 @@ class KolLinkWc {
17282
17287
  this.validateRole(this._role);
17283
17288
  this.validateTabIndex(this._tabIndex);
17284
17289
  this.validateTarget(this._target);
17285
- this.validateTargetDescription(this._targetDescription);
17286
17290
  this.validateTooltipAlign(this._tooltipAlign);
17287
17291
  this.unsubscribeOnLocationChange = onLocationChange((location) => {
17288
17292
  this.state._ariaCurrent = location === this.state._href ? this.state._ariaCurrentValue : undefined;
@@ -17306,7 +17310,6 @@ class KolLinkWc {
17306
17310
  "_role": ["validateRole"],
17307
17311
  "_tabIndex": ["validateTabIndex"],
17308
17312
  "_target": ["validateTarget"],
17309
- "_targetDescription": ["validateTargetDescription"],
17310
17313
  "_tooltipAlign": ["validateTooltipAlign"]
17311
17314
  }; }
17312
17315
  static get cmpMeta() { return {
@@ -17324,7 +17327,6 @@ class KolLinkWc {
17324
17327
  "_role": [1],
17325
17328
  "_tabIndex": [2, "_tab-index"],
17326
17329
  "_target": [1],
17327
- "_targetDescription": [1, "_target-description"],
17328
17330
  "_tooltipAlign": [1, "_tooltip-align"],
17329
17331
  "state": [32]
17330
17332
  },
@@ -19729,7 +19731,7 @@ class KolProcess {
19729
19731
  };
19730
19732
  }
19731
19733
  render() {
19732
- return (hAsync(Host, null, createProgressSVG(this.state), hAsync("progress", { "aria-busy": this.state._value < this.state._max ? 'true' : 'false', max: this.state._max, value: this.state._value }), hAsync("span", { "aria-live": "polite", "aria-relevant": "removals text", hidden: true }, this.state._liveValue, " von ", this.state._max, " ", this.state._unit)));
19734
+ return (hAsync(Host, null, createProgressSVG(this.state), hAsync("progress", { "aria-busy": this.state._value < this.state._max ? 'true' : 'false', max: this.state._max, value: this.state._value }), hAsync("span", { "aria-live": "polite", "aria-relevant": "removals text", class: "visually-hidden" }, this.state._liveValue, " von ", this.state._max, " ", this.state._unit)));
19733
19735
  }
19734
19736
  validateLabel(value) {
19735
19737
  validateLabel(this, value);
@@ -32755,7 +32757,7 @@ class KolSymbol {
32755
32757
  }; }
32756
32758
  }
32757
32759
 
32758
- const defaultStyleCss$4 = "@layer kol-global {\n\t.sc-kol-table-default-h {\n\t\t\n\t\t--a11y-min-size: 44px;\n\t\t\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t\n\t\thyphens: auto;\n\t\t\n\t\tletter-spacing: inherit;\n\t\t\n\t\tword-break: break-word;\n\t\t\n\t\tword-spacing: inherit;\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t\n\t\tfont-family: inherit;\n\t\t\n\t\tfont-size: inherit;\n\t}\n}\n\n\n/*!@.visually-hidden*/.visually-hidden.sc-kol-table-default {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; \n\t}\n\n\t\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t.sc-kol-table-default-h {\n\t\t\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t\n\t\tbox-sizing: border-box;\n\t}\n\n\t\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t\n\t.icon-only > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n}\n\n@layer kol-component {\n\t.sc-kol-table-default-h {\n\t\tdisplay: block;\n\t}\n}\n\n@layer kol-component {\n\t.sc-kol-table-default-h {\n\t\tdisplay: grid;\n\t}\n\n\t.sc-kol-table-default-h > div.table {\n\t\tmax-width: 100%;\n\t\torder: 1;\n\t\toverflow-x: auto;\n\t\toverflow-y: hidden;\n\t}\n\n\t.sc-kol-table-default-h > div.table table {\n\t\twidth: 100%;\n\t}\n\n\tth > div {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr auto;\n\t\tplace-items: center;\n\t}\n\n\tdiv.pagination {\n\t\torder: 2;\n\t}\n\n\tdiv.pagination,\n\tdiv.pagination > div:last-child {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t@media (min-width: 1024px) {\n\t\tdiv.pagination,\n\t\tdiv.pagination > div:last-child {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\n\t\tdiv.pagination kol-pagination {\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n}";
32760
+ const defaultStyleCss$4 = "@layer kol-global {\n\t.sc-kol-table-default-h {\n\t\t\n\t\t--a11y-min-size: 44px;\n\t\t\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t\n\t\thyphens: auto;\n\t\t\n\t\tletter-spacing: inherit;\n\t\t\n\t\tword-break: break-word;\n\t\t\n\t\tword-spacing: inherit;\n\t}\n\n\t\n\t\n\t\n\t\n\t\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t\n\t\tfont-family: inherit;\n\t\t\n\t\tfont-size: inherit;\n\t}\n}\n\n\n/*!@.visually-hidden*/.visually-hidden.sc-kol-table-default {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; \n\t}\n\n\t\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t.sc-kol-table-default-h {\n\t\t\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t\n\t\tbox-sizing: border-box;\n\t}\n\n\t\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t\n\t.icon-only > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n}\n\n@layer kol-component {\n\t.sc-kol-table-default-h {\n\t\tdisplay: block;\n\t}\n}\n\n@layer kol-component {\n\t.sc-kol-table-default-h {\n\t\tdisplay: grid;\n\t}\n\n\t.sc-kol-table-default-h > div.table {\n\t\tmax-width: 100%;\n\t\torder: 1;\n\t\toverflow-x: auto;\n\t\toverflow-y: hidden;\n\t}\n\n\t.sc-kol-table-default-h > div.table table {\n\t\twidth: 100%;\n\t}\n\n\t.table-sort-button .button {\n\t\tcolor: inherit;\n\t}\n\n\tth.align-left {\n\t\ttext-align: left;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: start;\n\t\t}\n\t}\n\tth.align-center {\n\t\ttext-align: center;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: center;\n\t\t}\n\t}\n\tth.align-right {\n\t\ttext-align: right;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: end;\n\t\t}\n\t}\n\n\tdiv.pagination {\n\t\torder: 2;\n\t}\n\n\tdiv.pagination kol-pagination {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\tdiv.pagination,\n\tdiv.pagination > div:last-child {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t@media (max-width: 1024px) {\n\t\tdiv.pagination kol-pagination {\n\t\t\tflex-direction: column;\n\t\t}\n\t}\n\n\t@media (min-width: 1024px) {\n\t\tdiv.pagination,\n\t\tdiv.pagination > div:last-child {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\n\t\tdiv.pagination kol-pagination {\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n}";
32759
32761
 
32760
32762
  const PAGINATION_OPTIONS = [10, 20, 50, 100];
32761
32763
  const CELL_REFS = new Map();
@@ -32770,7 +32772,6 @@ class KolTable {
32770
32772
  this.pageEndSlice = 10;
32771
32773
  this.disableSort = false;
32772
32774
  this.sortedColumnHead = { label: '', key: '', sortDirection: 'NOS' };
32773
- this.ariaLive = '';
32774
32775
  this.setSortDirection = (sort, direction) => {
32775
32776
  this.sortDirections.clear();
32776
32777
  this.sortDirections.set(sort, direction);
@@ -32822,47 +32823,23 @@ class KolTable {
32822
32823
  }
32823
32824
  return 0;
32824
32825
  });
32825
- if (this.sortData.length === 1) {
32826
- this.ariaLive = translate(`kol-sort-${this.sortData[0].direction === 'ASC' ? 'ascending' : 'descending'}`, {
32827
- placeholders: { column: this.sortData[0].label, multi: '' },
32828
- });
32829
- }
32830
- else {
32831
- let sortText = '';
32832
- for (let index = 1; index < this.sortData.length - 1; index++) {
32833
- const data = this.sortData[index];
32834
- sortText += translate(`kol-sort-then-${data.direction === 'ASC' ? 'ascending' : 'descending'}`, { placeholders: { column: data.label } });
32835
- }
32836
- sortText += translate(`kol-sort-then-last-${this.sortData[this.sortData.length - 1].direction === 'ASC' ? 'ascending' : 'descending'}`, {
32837
- placeholders: { column: this.sortData[this.sortData.length - 1].label },
32838
- });
32839
- this.ariaLive = translate(`kol-sort-${this.sortData[0].direction === 'ASC' ? 'ascending' : 'descending'}`, {
32840
- placeholders: { column: this.sortData[0].label, multi: sortText },
32841
- });
32842
- }
32843
32826
  }
32844
32827
  else if (typeof this.sortFunction === 'function') {
32845
32828
  switch (this.sortDirections.get(this.sortFunction)) {
32846
32829
  case 'ASC':
32847
32830
  sortedData = this.sortFunction([...this.state._data]);
32848
- this.ariaLive = translate('kol-sort-ascending', { placeholders: { column: cell.label } });
32849
32831
  this.sortedColumnHead = { label: cell.label, key: cell.key, sortDirection: 'ASC' };
32850
32832
  break;
32851
32833
  case 'DESC':
32852
32834
  sortedData = this.sortFunction([...this.state._data]).reverse();
32853
- this.ariaLive = translate('kol-sort-descending', { placeholders: { column: cell.label } });
32854
32835
  this.sortedColumnHead = { label: cell.label, key: cell.key, sortDirection: 'DESC' };
32855
32836
  break;
32856
32837
  case 'NOS':
32857
32838
  default:
32858
32839
  sortedData = [...this.state._data];
32859
32840
  this.sortedColumnHead = { label: '', key: '', sortDirection: 'NOS' };
32860
- this.ariaLive = translate('kol-sort-none', { placeholders: { column: cell.label } });
32861
32841
  }
32862
32842
  }
32863
- else {
32864
- this.ariaLive = translate('kol-table-sort-none');
32865
- }
32866
32843
  setState(this, '_sortedData', sortedData);
32867
32844
  };
32868
32845
  this.renderTableRow = (row, rowIndex) => {
@@ -33308,7 +33285,7 @@ class KolTable {
33308
33285
  var _a, _b;
33309
33286
  const displayedData = this.selectDisplayedData(this.state._sortedData, this.showPagination ? (_b = (_a = this.state._pagination) === null || _a === void 0 ? void 0 : _a._pageSize) !== null && _b !== void 0 ? _b : 10 : this.state._sortedData.length, this.state._pagination._page || 1);
33310
33287
  const dataField = this.createDataField(displayedData, this.state._headers);
33311
- return (hAsync(Host, null, hAsync("div", { style: { height: '0', width: '0', overflow: 'hidden' }, "aria-live": "assertive" }, this.ariaLive), this.pageEndSlice > 0 && this.showPagination && (hAsync("div", { class: "pagination" }, hAsync("span", null, "Eintr\u00E4ge ", this.pageEndSlice > 0 ? this.pageStartSlice + 1 : 0, " bis ", this.pageEndSlice, " von", ' ', this.state._pagination._max || (Array.isArray(this.state._data) ? this.state._data.length : 0), " angezeigt"), hAsync("div", null, hAsync("kol-pagination", { _boundaryCount: this.state._pagination._boundaryCount, _customClass: this.state._pagination._customClass, _on: this.handlePagination, _page: this.state._pagination._page, _pageSize: this.state._pagination._pageSize, _pageSizeOptions: this.state._pagination._pageSizeOptions || PAGINATION_OPTIONS, _siblingCount: this.state._pagination._siblingCount, _tooltipAlign: "bottom", _max: this.state._pagination._max || this.state._pagination._max || this.state._data.length, _label: translate('kol-table-pagination-label', { placeholders: { label: this.state._label } }) })))), hAsync("div", { class: "table", tabindex: "0" }, hAsync("table", { style: {
33288
+ return (hAsync(Host, null, this.pageEndSlice > 0 && this.showPagination && (hAsync("div", { class: "pagination" }, hAsync("span", null, "Eintr\u00E4ge ", this.pageEndSlice > 0 ? this.pageStartSlice + 1 : 0, " bis ", this.pageEndSlice, " von", ' ', this.state._pagination._max || (Array.isArray(this.state._data) ? this.state._data.length : 0), " angezeigt"), hAsync("div", null, hAsync("kol-pagination", { _boundaryCount: this.state._pagination._boundaryCount, _customClass: this.state._pagination._customClass, _on: this.handlePagination, _page: this.state._pagination._page, _pageSize: this.state._pagination._pageSize, _pageSizeOptions: this.state._pagination._pageSizeOptions || PAGINATION_OPTIONS, _siblingCount: this.state._pagination._siblingCount, _tooltipAlign: "bottom", _max: this.state._pagination._max || this.state._pagination._max || this.state._data.length, _label: translate('kol-table-pagination-label', { placeholders: { label: this.state._label } }) })))), hAsync("div", { class: "table", tabindex: "0" }, hAsync("table", { style: {
33312
33289
  minWidth: this.state._minWidth,
33313
33290
  } }, hAsync("caption", null, this.state._label), Array.isArray(this.state._headers.horizontal) && (hAsync("thead", null, this.state._headers.horizontal.map((cols, rowIndex) => (hAsync("tr", { key: `thead-${rowIndex}` }, cols.map((col, colIndex) => {
33314
33291
  if (col.asTd === true) {
@@ -33357,17 +33334,11 @@ class KolTable {
33357
33334
  break;
33358
33335
  }
33359
33336
  }
33360
- return (hAsync("th", { key: `thead-${rowIndex}-${colIndex}-${headerCell.label}`, scope: typeof headerCell.colSpan === 'number' && headerCell.colSpan > 1 ? 'colgroup' : 'col', colSpan: headerCell.colSpan, rowSpan: headerCell.rowSpan, style: {
33361
- textAlign: col.textAlign,
33337
+ return (hAsync("th", { class: col.textAlign ? `align-${col.textAlign}` : undefined, key: `thead-${rowIndex}-${colIndex}-${headerCell.label}`, scope: typeof headerCell.colSpan === 'number' && headerCell.colSpan > 1 ? 'colgroup' : 'col', colSpan: headerCell.colSpan, rowSpan: headerCell.rowSpan, style: {
33362
33338
  width: col.width,
33363
- }, "aria-sort": sortDirection, "data-sort": `sort-${shortSortDirection}` }, hAsync("div", { class: "w-full flex gap-1 items-center" }, hAsync("div", { class: {
33364
- 'w-full': true,
33365
- [col.textAlign]: typeof col.textAlign === 'string' && col.textAlign.length > 0,
33366
- }, style: {
33367
- textAlign: col.textAlign,
33368
- } }, col.label), !this.disableSort && (typeof headerCell.compareFn === 'function' || typeof headerCell.sort === 'function') && (hAsync("kol-button", { exportparts: "icon", _icons: sortButtonIcon, _hideLabel: true, _label: translate('kol-change-order', { placeholders: { colLabel: col.label } }), _on: {
33339
+ }, "aria-sort": sortDirection, "data-sort": `sort-${shortSortDirection}` }, !this.disableSort && (typeof headerCell.compareFn === 'function' || typeof headerCell.sort === 'function') ? (hAsync("kol-button-wc", { class: "table-sort-button", exportparts: "icon", _icons: { right: sortButtonIcon }, _label: col.label, _on: {
33369
33340
  onClick: () => this.changeCellSort(headerCell),
33370
- }, _variant: "ghost" })))));
33341
+ } })) : (col.label)));
33371
33342
  }
33372
33343
  })))))), hAsync("tbody", null, dataField.map(this.renderTableRow)), this.state._dataFoot.length > 0 ? this.renderFoot() : ''))));
33373
33344
  }
@@ -34060,7 +34031,7 @@ function hideOverlay(overlay) {
34060
34031
  }
34061
34032
  }
34062
34033
 
34063
- const styleCss = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * Minimum size of interactive elements.\n\t\t */\n\t\t--a11y-min-size: 44px;\n\t\t/*\n\t\t * No element should be used without a background and font color whose contrast ratio has\n\t\t * not been checked. By initially setting the background color to white and the font color\n\t\t * to black, the contrast ratio is ensured and explicit adjustment is forced.\n\t\t */\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t/*\n\t\t * Verdana is an accessible font that can be used without requiring additional loading time.\n\t\t */\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\thyphens: auto;\n\t\t/*\n\t\t * Letter spacing is required for all texts.\n\t\t */\n\t\tletter-spacing: inherit;\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\tword-break: break-word;\n\t\t/*\n\t\t * Word spacing is required for all texts.\n\t\t */\n\t\tword-spacing: inherit;\n\t}\n\n\t/*\n\t * All interactive elements should have a minimum size of 44px.\n\t */\n\t/* input:not([type='checkbox'], [type='radio'], [type='range']), */\n\t/* option, */\n\t/* select, */\n\t/* textarea, */\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t/*\n\t * Some interactive elements should not inherit the font-family and font-size.\n\t */\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t/*\n\t\t * All elements should inherit the font family from his parent element.\n\t\t */\n\t\tfont-family: inherit;\n\t\t/*\n\t\t * All elements should inherit the font size from his parent element.\n\t\t */\n\t\tfont-size: inherit;\n\t}\n}\n\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t/*\n\t * Dieses CSS stellt sicher, dass der Standard-Style\n\t * von A und Button resettet werden.\n\t */\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; /* 100% needed for custom width from outside */\n\t}\n\n\t/*\n\t * Ensure elements with hidden attribute to be actually not visible\n\t * @see https://meowni.ca/hidden.is.a.lie.html\n\t */\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * The max-width is needed to prevent the table from overflowing the\n\t\t * parent node, if the table is wider than the parent node.\n\t\t */\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t/*\n\t\t * We prefer to box-sizing: border-box for all elements.\n\t\t */\n\t\tbox-sizing: border-box;\n\t}\n\n\t/* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t/* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t/* This is the text label. */\n\t.icon-only > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n}\n\n@layer kol-component {\n\tkol-tooltip-wc {\n\t\tdisplay: contents;\n\t}\n\n\tkol-tooltip-wc .tooltip-floating {\n\t\tanimation-duration: 0.5s;\n\t\tanimation-iteration-count: 1;\n\t\tanimation-name: fadeInOpacity;\n\t\tanimation-timing-function: ease-in;\n\t\tbox-sizing: border-box;\n\t\tdisplay: none;\n\t\tposition: fixed;\n\t\tvisibility: hidden;\n\t\t/* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tmax-width: 90vw;\n\t\tmax-height: 90vh;\n\t\twidth: var(--kol-tooltip-width); /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n\t}\n\n\t/* Shared between content and arrow */\n\tkol-tooltip-wc .tooltip-area {\n\t\tbackground-color: #fff;\n\t\tcolor: #000;\n\t}\n\n\tkol-tooltip-wc .tooltip-arrow {\n\t\theight: 10px;\n\t\tposition: fixed;\n\t\ttransform: rotate(45deg);\n\t\twidth: 10px;\n\t\tz-index: 999;\n\t}\n\n\tkol-tooltip-wc .tooltip-content {\n\t\tposition: relative;\n\t\tz-index: 1000;\n\t}\n\n\t@keyframes fadeInOpacity {\n\t\t0% {\n\t\t\topacity: 0;\n\t\t}\n\t\t100% {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n";
34034
+ const styleCss = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * Minimum size of interactive elements.\n\t\t */\n\t\t--a11y-min-size: 44px;\n\t\t/*\n\t\t * No element should be used without a background and font color whose contrast ratio has\n\t\t * not been checked. By initially setting the background color to white and the font color\n\t\t * to black, the contrast ratio is ensured and explicit adjustment is forced.\n\t\t */\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t/*\n\t\t * Verdana is an accessible font that can be used without requiring additional loading time.\n\t\t */\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\thyphens: auto;\n\t\t/*\n\t\t * Letter spacing is required for all texts.\n\t\t */\n\t\tletter-spacing: inherit;\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\tword-break: break-word;\n\t\t/*\n\t\t * Word spacing is required for all texts.\n\t\t */\n\t\tword-spacing: inherit;\n\t}\n\n\t/*\n\t * All interactive elements should have a minimum size of 44px.\n\t */\n\t/* input:not([type='checkbox'], [type='radio'], [type='range']), */\n\t/* option, */\n\t/* select, */\n\t/* textarea, */\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t/*\n\t * Some interactive elements should not inherit the font-family and font-size.\n\t */\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t/*\n\t\t * All elements should inherit the font family from his parent element.\n\t\t */\n\t\tfont-family: inherit;\n\t\t/*\n\t\t * All elements should inherit the font size from his parent element.\n\t\t */\n\t\tfont-size: inherit;\n\t}\n}\n\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t/*\n\t * Dieses CSS stellt sicher, dass der Standard-Style\n\t * von A und Button resettet werden.\n\t */\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; /* 100% needed for custom width from outside */\n\t}\n\n\t/*\n\t * Ensure elements with hidden attribute to be actually not visible\n\t * @see https://meowni.ca/hidden.is.a.lie.html\n\t */\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * The max-width is needed to prevent the table from overflowing the\n\t\t * parent node, if the table is wider than the parent node.\n\t\t */\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t/*\n\t\t * We prefer to box-sizing: border-box for all elements.\n\t\t */\n\t\tbox-sizing: border-box;\n\t}\n\n\t/* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t/* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t/* This is the text label. */\n\t.icon-only > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n}\n\n@layer kol-component {\n\tkol-tooltip-wc {\n\t\tdisplay: contents;\n\t}\n\n\tkol-tooltip-wc .tooltip-floating {\n\t\tanimation-duration: 0.5s;\n\t\tanimation-iteration-count: 1;\n\t\tanimation-name: fadeInOpacity;\n\t\tanimation-timing-function: ease-in;\n\t\tbox-sizing: border-box;\n\t\tdisplay: none;\n\t\tposition: fixed;\n\t\tvisibility: hidden;\n\t\t/* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tmax-width: 90vw;\n\t\tmax-height: 90vh;\n\t\twidth: var(--kol-tooltip-width); /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n\t}\n\n\t/* Shared between content and arrow */\n\tkol-tooltip-wc .tooltip-area {\n\t\tbackground-color: #fff;\n\t\tcolor: #000;\n\t}\n\n\tkol-tooltip-wc .tooltip-arrow {\n\t\theight: 10px;\n\t\tposition: absolute;\n\t\ttransform: rotate(45deg);\n\t\twidth: 10px;\n\t\tz-index: 999;\n\t}\n\n\tkol-tooltip-wc .tooltip-content {\n\t\tposition: relative;\n\t\tz-index: 1000;\n\t}\n\n\t@keyframes fadeInOpacity {\n\t\t0% {\n\t\t\topacity: 0;\n\t\t}\n\t\t100% {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n";
34064
34035
 
34065
34036
  class KolTooltip {
34066
34037
  constructor(hostRef) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@public-ui/hydrate",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "license": "EUPL-1.2",
5
5
  "homepage": "https://public-ui.github.io",
6
6
  "repository": "https://github.com/public-ui/kolibri",
@@ -42,11 +42,11 @@
42
42
  "hydrate"
43
43
  ],
44
44
  "devDependencies": {
45
- "@public-ui/components": "2.0.2",
45
+ "@public-ui/components": "2.0.3",
46
46
  "rimraf": "3.0.2"
47
47
  },
48
48
  "peerDependencies": {
49
- "@public-ui/components": "2.0.2"
49
+ "@public-ui/components": "2.0.3"
50
50
  },
51
51
  "sideEffects": false,
52
52
  "type": "commonjs",