@odx/foundation 1.0.0-beta.170 → 1.0.0-beta.171

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,22 @@
1
- import { CustomElement } from '../../lib/main.js';
1
+ import { CustomElement, ValuesOf } from '../../lib/main.js';
2
2
  import { TemplateResult } from 'lit';
3
3
  declare global {
4
4
  interface HTMLElementTagNameMap {
5
5
  'odx-header': OdxHeader;
6
6
  }
7
7
  }
8
+ export type HeaderSize = ValuesOf<typeof HeaderSize>;
9
+ export declare const HeaderSize: Pick<{
10
+ readonly XS: "xs";
11
+ readonly SM: "sm";
12
+ readonly MD: "md";
13
+ readonly LG: "lg";
14
+ readonly XL: "xl";
15
+ readonly XXL: "xxl";
16
+ }, "MD" | "LG">;
8
17
  export declare class OdxHeader extends CustomElement {
9
18
  #private;
19
+ size: HeaderSize;
10
20
  connectedCallback(): void;
11
21
  protected render(): TemplateResult;
12
22
  }
@@ -31,5 +31,5 @@ export declare class OdxText extends CustomElement {
31
31
  strong: boolean;
32
32
  inline: boolean;
33
33
  size?: TextSize;
34
- variant: TextVariant;
34
+ variant?: TextVariant;
35
35
  }
@@ -1648,28 +1648,38 @@ __decorateClass([
1648
1648
  ], _OdxGradientOverlay.prototype, "size", 2);
1649
1649
  let OdxGradientOverlay = _OdxGradientOverlay;
1650
1650
 
1651
- const styles$U = ":host{display:block;position:relative}.base{display:flex;position:relative;gap:var(--odx-spacing-75);place-items:center;z-index:1;background-color:var(--odx-color-background-level-1);padding-inline:var(--odx-spacing-150);block-size:var(--odx-size-300)}.background{position:absolute;inset:0;z-index:0;box-shadow:0 0 0 100vmax var(--odx-color-background-level-1);background-color:var(--odx-color-background-level-1);clip-path:inset(0 -100vmax)}odx-logo{flex:0 0 auto}::slotted(odx-title){margin-right:auto}::slotted(odx-separator){--size: var(--odx-size-150);--inner-spacing: 0px}::slotted(odx-search-bar){flex:1 1 auto}@media screen and (width <= 600px){odx-logo{display:none}}";
1651
+ const styles$U = ":host{display:block;position:relative;block-size:var(--odx-size-300)}.base{display:flex;position:relative;gap:var(--odx-spacing-75);place-items:center;z-index:1;padding-inline:var(--odx-spacing-150);block-size:100%}.background{position:absolute;inset:0;z-index:0;box-shadow:0 0 0 100vmax var(--odx-color-background-level-1);background-color:var(--odx-color-background-level-1);clip-path:inset(0 -100vmax)}odx-logo{flex:0 0 auto}::slotted(odx-search-bar){flex:1 1 auto;max-inline-size:25ch}::slotted(odx-separator){--size: var(--odx-size-150);--inner-spacing: 0px}.actions{flex:1 1 auto;flex-wrap:nowrap;justify-content:flex-end;margin-inline-start:auto}:host([size=\"lg\"]){block-size:var(--odx-size-500)}@media screen and (width <= 600px){odx-logo{display:none}}";
1652
1652
 
1653
- class OdxHeader extends CustomElement {
1653
+ const HeaderSize = pick(Size, ["MD", "LG"]);
1654
+ const _OdxHeader = class _OdxHeader extends CustomElement {
1655
+ constructor() {
1656
+ super(...arguments);
1657
+ this.size = HeaderSize.MD;
1658
+ this.#handleSlotChange = () => {
1659
+ const titleElement = getAssignedElement(this.renderRoot, { selector: OdxTitle.tagName });
1660
+ if (!titleElement) return;
1661
+ titleElement.ariaLevel = "1";
1662
+ titleElement.role = "heading";
1663
+ titleElement.size = TitleSize.XS;
1664
+ titleElement.classList.add("odx-no-overflow");
1665
+ };
1666
+ }
1654
1667
  static {
1655
- customElement("odx-header", styles$U)(OdxHeader);
1668
+ customElement("odx-header", styles$U)(_OdxHeader);
1656
1669
  }
1657
1670
  connectedCallback() {
1658
1671
  super.connectedCallback();
1659
1672
  this.role = "banner";
1660
1673
  }
1661
1674
  render() {
1662
- return html`<div class="base"><slot name="prefix"></slot><odx-logo size="sm"></odx-logo><slot @slotchange="${this.#handleSlotChange}"></slot><slot name="actions"></slot></div><div class="background"></div>`;
1663
- }
1664
- #handleSlotChange = () => {
1665
- const titleElement = getAssignedElement(this.renderRoot, { selector: OdxTitle.tagName });
1666
- if (!titleElement) return;
1667
- titleElement.ariaLevel = "1";
1668
- titleElement.role = "heading";
1669
- titleElement.size = TitleSize.XS;
1670
- titleElement.classList.add("odx-no-overflow");
1671
- };
1672
- }
1675
+ return html`<div class="base"><slot name="prefix"></slot><odx-logo size="sm"></odx-logo><slot @slotchange="${this.#handleSlotChange}"></slot>${optionalSlot(this, "actions", "odx-cluster")}</div><div class="background"></div>`;
1676
+ }
1677
+ #handleSlotChange;
1678
+ };
1679
+ __decorateClass([
1680
+ property({ reflect: true, useDefault: true })
1681
+ ], _OdxHeader.prototype, "size", 2);
1682
+ let OdxHeader = _OdxHeader;
1673
1683
 
1674
1684
  const styles$T = ":host{display:flex;gap:var(--odx-spacing-75);align-items:center;block-size:100%}::slotted(odx-separator){--size: var(--odx-size-150);--spacing: 0px}";
1675
1685
 
@@ -2178,7 +2188,7 @@ __decorateClass([
2178
2188
  ], _OdxInput.prototype, "value", 2);
2179
2189
  let OdxInput = _OdxInput;
2180
2190
 
2181
- const styles$N = ":host{--_label-color: inherit;--_value-color: var(--odx-color-foreground-rest);display:grid;grid-template:\"prefix .\" \"prefix .\" auto / auto 1fr;block-size:var(--odx-size-300)}.label{align-self:flex-end;line-height:var(--odx-breakpoint-line-height-p-base);font-size:var(--odx-breakpoint-font-size-p-base)}.value{color:var(--odx-color-foreground-rest);font-size:var(--odx-breakpoint-font-size-heading-4)}:host([size=\"sm\"]){block-size:var(--odx-size-225);.label{line-height:var(--odx-typography-line-height-1);font-size:var(--odx-typography-font-size-2)}.value{line-height:var(--odx-breakpoint-line-height-heading-6);font-size:var(--odx-breakpoint-font-size-heading-6)}}:host([size=\"lg\"]){column-gap:var(--odx-spacing-25);block-size:var(--odx-size-400);.value{line-height:var(--odx-breakpoint-line-height-heading-3);font-size:var(--odx-breakpoint-font-size-heading-3)}}.prefix{display:flex;grid-area:prefix;align-items:center;justify-content:center;block-size:100%;aspect-ratio:1}";
2191
+ const styles$N = ":host{--_label-color: inherit;--_value-color: var(--odx-color-foreground-rest);display:grid;grid-template:\"prefix .\" \"prefix .\" auto / auto 1fr;column-gap:var(--odx-spacing-50);align-items:center;block-size:var(--odx-size-300)}.label{align-self:flex-end;line-height:var(--odx-breakpoint-line-height-p-base);font-size:var(--odx-breakpoint-font-size-p-base)}.value{color:var(--odx-color-foreground-rest);font-size:var(--odx-breakpoint-font-size-heading-4)}:host([size=\"sm\"]){column-gap:var(--odx-spacing-25);block-size:var(--odx-size-225);.label{line-height:var(--odx-typography-line-height-1);font-size:var(--odx-typography-font-size-2)}.value{line-height:var(--odx-breakpoint-line-height-heading-6);font-size:var(--odx-breakpoint-font-size-heading-6)}}:host([size=\"lg\"]){column-gap:var(--odx-spacing-75);block-size:var(--odx-size-400);.value{line-height:var(--odx-breakpoint-line-height-heading-3);font-size:var(--odx-breakpoint-font-size-heading-3)}}::slotted([slot=\"prefix\"]){grid-area:prefix}";
2182
2192
 
2183
2193
  const KpiSize = pick(Size, ["SM", "MD", "LG"]);
2184
2194
  const KpiVariant = pick(Variant, ["NEUTRAL", "ACCENT", "DANGER", "SUCCESS"]);
@@ -2194,7 +2204,7 @@ const _OdxKpi = class _OdxKpi extends CustomElement {
2194
2204
  customElement("odx-kpi", styles$N)(_OdxKpi);
2195
2205
  }
2196
2206
  render() {
2197
- return html`${optionalSlot(this, "prefix")}<odx-text class="label odx-no-overflow">${this.label}</odx-text><odx-title class="value odx-no-overflow"><odx-text inline variant="${this.variant}">${this.value}</odx-text>${when(this.unit, (unit) => html`<odx-text inline size="md">${unit}</odx-text>`)}</odx-title>`;
2207
+ return html`<slot name="prefix" class="prefix"></slot><odx-text class="label odx-no-overflow">${this.label}</odx-text><odx-title class="value odx-no-overflow"><odx-text inline variant="${this.variant}">${this.value}</odx-text>${when(this.unit, (unit) => html`<odx-text inline size="md">${unit}</odx-text>`)}</odx-title>`;
2198
2208
  }
2199
2209
  };
2200
2210
  __decorateClass([
@@ -2861,7 +2871,7 @@ class OdxOption extends OptionControl {
2861
2871
  }
2862
2872
  }
2863
2873
 
2864
- const styles$z = ":host{--max-inline-size: var(--odx-page-max-inline-size, 100%);--scroll-margin-block-start: calc(var(--header-size, 0px) + var(--subheader-size, 0px));display:grid;grid-template:minmax(0,auto) minmax(0,auto) minmax(0,1fr) minmax(0,auto) / 100%;grid-template-areas:\"header\" \"subheader\" \"content\" \"footer\";min-block-size:100dvh}.header,.subheader{position:sticky;z-index:99}.subheader,.content{background-color:var(--odx-color-background-base);padding-inline:var(--odx-spacing-75);inline-size:100%;max-inline-size:var(--max-inline-size)}.header{inset-block-start:0;grid-area:header}.subheader{inset-block-start:var(--header-size, 0);grid-area:subheader}.content{grid-area:content;block-size:100%}.footer{grid-area:footer}::slotted(odx-page-layout){min-block-size:100%}:host([alignment=\"center\"]){.subheader,.content{margin-inline:auto}}:host([layout=\"narrow\"]){--max-inline-size: var(--odx-page-max-inline-size-narrow)}:host([layout=\"wide\"]){--max-inline-size: var(--odx-page-max-inline-size-wide)}";
2874
+ const styles$z = ":host{--max-inline-size: var(--odx-page-max-inline-size, 100%);--scroll-margin-block-start: calc(var(--header-size, 0px) + var(--subheader-size, 0px));display:grid;grid-template:minmax(0,auto) minmax(0,auto) minmax(0,1fr) minmax(0,auto) / 100%;grid-template-areas:\"header\" \"subheader\" \"content\" \"footer\";min-block-size:100dvh}.header,.subheader{position:sticky;z-index:99}.subheader,.content{background-color:var(--odx-color-background-base);padding-inline:var(--odx-spacing-75);inline-size:100%;max-inline-size:var(--max-inline-size)}.header{inset-block-start:0;grid-area:header}.subheader{inset-block-start:var(--header-size, 0);grid-area:subheader}.content{grid-area:content;block-size:100%}.footer{grid-area:footer}::slotted(odx-page-layout){min-block-size:100%}:host([alignment=\"center\"]){.header,.subheader,.content{margin-inline:auto}.header{inline-size:100%;max-inline-size:var(--max-inline-size)}}:host([layout=\"narrow\"]){--max-inline-size: var(--odx-page-max-inline-size-narrow)}:host([layout=\"wide\"]){--max-inline-size: var(--odx-page-max-inline-size-wide)}";
2865
2875
 
2866
2876
  const PageAlignment = pick(Alignment, ["START", "CENTER"]);
2867
2877
  const PageLayout = { AUTO: "auto", NARROW: "narrow", WIDE: "wide" };
@@ -3292,7 +3302,7 @@ __decorateClass([
3292
3302
  ], _OdxScrollContainer.prototype, "rightOverflow", 2);
3293
3303
  let OdxScrollContainer = _OdxScrollContainer;
3294
3304
 
3295
- const styles$p = ":host{display:block;transition:var(--odx-transition-default);min-inline-size:min(15ch,50dvw);max-inline-size:35ch}.input{inline-size:100%;min-inline-size:0}:host([collapsed]:not(:focus-within)){cursor:pointer;min-inline-size:0;max-inline-size:var(--odx-size-225);.input{gap:0;&::part(input){opacity:0}&:after{background-color:transparent}}}";
3305
+ const styles$p = ":host{display:block;transition:var(--odx-transition-default);min-inline-size:min(15ch,50dvw);max-inline-size:40ch}.input{inline-size:100%;min-inline-size:0}:host([collapsed]:not(:focus-within)){cursor:pointer;min-inline-size:0;max-inline-size:var(--odx-size-225);.input{gap:0;&::part(input){opacity:0}&:after{background-color:transparent}}}";
3296
3306
 
3297
3307
  const SearchBarBehavior = { INSTANT: "instant", SUBMIT: "submit" };
3298
3308
  class SearchEvent extends CustomEvent {
@@ -4384,7 +4394,7 @@ __decorateClass([
4384
4394
  ], _OdxTableHeaderCell.prototype, "sortable", 2);
4385
4395
  let OdxTableHeaderCell = _OdxTableHeaderCell;
4386
4396
 
4387
- const styles$6 = "@layer base{:host{display:block;text-decoration:inherit;line-height:inherit;color:inherit;font-size:inherit;font-weight:inherit}:host([inline]){display:inline-block}}@layer variant{:host([strong]){font-weight:var(--odx-typography-font-weight-medium)}:host([size=\"xs\"]){line-height:var(--odx-typography-line-height-1);font-size:var(--odx-typography-font-size-1)}:host([size=\"sm\"]){line-height:var(--odx-typography-line-height-2);font-size:var(--odx-typography-font-size-2)}:host([size=\"md\"]){line-height:var(--odx-typography-line-height-3);font-size:var(--odx-typography-font-size-3)}:host([size=\"lg\"]){line-height:var(--odx-typography-line-height-4);font-size:var(--odx-typography-font-size-4)}:host([variant=\"neutral-subtle\"]){color:var(--odx-color-foreground-rest-subtle)}:host([variant=\"accent\"]){color:var(--odx-color-background-accent-rest)}:host([variant=\"success\"]){color:var(--odx-color-background-success-rest)}:host([variant=\"danger\"]){color:var(--odx-color-foreground-danger-rest)}}";
4397
+ const styles$6 = "@layer base{:host{display:block;text-decoration:inherit;line-height:inherit;color:inherit;font-size:inherit;font-weight:inherit}:host([inline]){display:inline-block}}@layer variant{:host([strong]){font-weight:var(--odx-typography-font-weight-medium)}:host([size=\"xs\"]){line-height:var(--odx-typography-line-height-1);font-size:var(--odx-typography-font-size-1)}:host([size=\"sm\"]){line-height:var(--odx-typography-line-height-2);font-size:var(--odx-typography-font-size-2)}:host([size=\"md\"]){line-height:var(--odx-typography-line-height-3);font-size:var(--odx-typography-font-size-3)}:host([size=\"lg\"]){line-height:var(--odx-typography-line-height-4);font-size:var(--odx-typography-font-size-4)}:host([variant=\"neutral\"]){color:var(--odx-color-foreground-rest)}:host([variant=\"neutral-subtle\"]){color:var(--odx-color-foreground-rest-subtle)}:host([variant=\"accent\"]){color:var(--odx-color-background-accent-rest)}:host([variant=\"success\"]){color:var(--odx-color-background-success-rest)}:host([variant=\"danger\"]){color:var(--odx-color-foreground-danger-rest)}}";
4388
4398
 
4389
4399
  const TextSize = pick(Size, ["XS", "SM", "MD", "LG"]);
4390
4400
  const TextVariant = pick(Variant, ["NEUTRAL", "NEUTRAL_SUBTLE", "ACCENT", "SUCCESS", "DANGER"]);
@@ -4393,7 +4403,6 @@ const _OdxText = class _OdxText extends CustomElement {
4393
4403
  super(...arguments);
4394
4404
  this.strong = false;
4395
4405
  this.inline = false;
4396
- this.variant = TextVariant.NEUTRAL;
4397
4406
  }
4398
4407
  static {
4399
4408
  customElement("odx-text", styles$6)(_OdxText);
@@ -4409,7 +4418,7 @@ __decorateClass([
4409
4418
  property({ reflect: true })
4410
4419
  ], _OdxText.prototype, "size", 2);
4411
4420
  __decorateClass([
4412
- property({ reflect: true, useDefault: true })
4421
+ property({ reflect: true })
4413
4422
  ], _OdxText.prototype, "variant", 2);
4414
4423
  let OdxText = _OdxText;
4415
4424
 
@@ -4685,4 +4694,4 @@ __decorateClass([
4685
4694
  ], _OdxTranslate.prototype, "context", 2);
4686
4695
  let OdxTranslate = _OdxTranslate;
4687
4696
 
4688
- export { AccordionIndicatorPosition, AccordionItemSize, AreaHeaderAlignment, AreaHeaderSize, AutoGridMode, AvatarShape, AvatarSize, AvatarVariant, BadgeVariant, BaseFormat, ButtonSize, ButtonVariant, CheckboxGroupLayout, ChipVariant, DropdownPlacement, EmptyStateSize, EmptyStateVariant, GradientOverlaySize, HighlightVariant, InlineMessageVariant, KpiSize, KpiVariant, LOADING_OVERLAY_HOST_DIRECTIVE, ListItemSize, LogoSize, ModalLayout, NavigationItemSize, OdxAccordion, OdxAccordionItem, OdxAccordionPanel, OdxActionButton, OdxActionGroup, OdxAnchorNavigation, OdxAreaHeader, OdxAutoGrid, OdxAutocomplete, OdxAvatar, OdxBadge, OdxBreadcrumbs, OdxBreadcrumbsItem, OdxButton, OdxButtonGroup, OdxCard, OdxCheckbox, OdxCheckboxGroup, OdxChip, OdxContentBox, OdxDropdown, OdxEmptyState, OdxFormField, OdxFormatBytes, OdxFormatDate, OdxFormatNumber, OdxGradientOverlay, OdxHeader, OdxHeaderActions, OdxHighlight, OdxIconButton, OdxImage, OdxInlineMessage, OdxInput, OdxKpi, OdxLabel, OdxLineClamp, OdxLink, OdxList, OdxListItem, OdxLoadingOverlay, OdxLoadingSpinner, OdxLogo, OdxMainMenu, OdxMainMenuButton, OdxMainMenuSubtitle, OdxMainMenuTitle, OdxMenu, OdxMenuItem, OdxModal, OdxNavigationItem, OdxNavigationItemGroup, OdxOption, OdxPage, OdxPageLayout, OdxPagination, OdxPopover, OdxProgressBar, OdxProgressRing, OdxRadioButton, OdxRadioGroup, OdxRailNavigation, OdxRelativeTime, OdxScrollContainer, OdxSearchBar, OdxSelect, OdxSeparator, OdxSkeleton, OdxSlider, OdxSliderHandle, OdxSliderMarks, OdxSpacer, OdxSpinbox, OdxStatus, OdxSwitch, OdxTabBar, OdxTable, OdxTableBody, OdxTableCell, OdxTableCheckboxCell, OdxTableHeader, OdxTableHeaderCell, OdxTableRow, OdxText, OdxTile, OdxTitle, OdxToast, OdxToggleButton, OdxToggleButtonGroup, OdxToggleContent, OdxToolbar, OdxTooltip, OdxTranslate, PageAlignment, PageLayout, ProgressRingSize, RadioGroupLayout, SearchBarBehavior, SearchEvent, SeparatorAlignment, SkeletonShape, SkeletonSize, SliderLabelVisibility, SliderTrackVisibility, StatusVariant, SwitchIndicatorPosition, TextSize, TextVariant, TileAlignment, TileVariant, TitleSize, ToastVariant, ToggleButtonSize, ToggleButtonVariant, ToolbarSize, TooltipPlacement, TooltipSize, TooltipVariant, sliderContext, tableContext };
4697
+ export { AccordionIndicatorPosition, AccordionItemSize, AreaHeaderAlignment, AreaHeaderSize, AutoGridMode, AvatarShape, AvatarSize, AvatarVariant, BadgeVariant, BaseFormat, ButtonSize, ButtonVariant, CheckboxGroupLayout, ChipVariant, DropdownPlacement, EmptyStateSize, EmptyStateVariant, GradientOverlaySize, HeaderSize, HighlightVariant, InlineMessageVariant, KpiSize, KpiVariant, LOADING_OVERLAY_HOST_DIRECTIVE, ListItemSize, LogoSize, ModalLayout, NavigationItemSize, OdxAccordion, OdxAccordionItem, OdxAccordionPanel, OdxActionButton, OdxActionGroup, OdxAnchorNavigation, OdxAreaHeader, OdxAutoGrid, OdxAutocomplete, OdxAvatar, OdxBadge, OdxBreadcrumbs, OdxBreadcrumbsItem, OdxButton, OdxButtonGroup, OdxCard, OdxCheckbox, OdxCheckboxGroup, OdxChip, OdxContentBox, OdxDropdown, OdxEmptyState, OdxFormField, OdxFormatBytes, OdxFormatDate, OdxFormatNumber, OdxGradientOverlay, OdxHeader, OdxHeaderActions, OdxHighlight, OdxIconButton, OdxImage, OdxInlineMessage, OdxInput, OdxKpi, OdxLabel, OdxLineClamp, OdxLink, OdxList, OdxListItem, OdxLoadingOverlay, OdxLoadingSpinner, OdxLogo, OdxMainMenu, OdxMainMenuButton, OdxMainMenuSubtitle, OdxMainMenuTitle, OdxMenu, OdxMenuItem, OdxModal, OdxNavigationItem, OdxNavigationItemGroup, OdxOption, OdxPage, OdxPageLayout, OdxPagination, OdxPopover, OdxProgressBar, OdxProgressRing, OdxRadioButton, OdxRadioGroup, OdxRailNavigation, OdxRelativeTime, OdxScrollContainer, OdxSearchBar, OdxSelect, OdxSeparator, OdxSkeleton, OdxSlider, OdxSliderHandle, OdxSliderMarks, OdxSpacer, OdxSpinbox, OdxStatus, OdxSwitch, OdxTabBar, OdxTable, OdxTableBody, OdxTableCell, OdxTableCheckboxCell, OdxTableHeader, OdxTableHeaderCell, OdxTableRow, OdxText, OdxTile, OdxTitle, OdxToast, OdxToggleButton, OdxToggleButtonGroup, OdxToggleContent, OdxToolbar, OdxTooltip, OdxTranslate, PageAlignment, PageLayout, ProgressRingSize, RadioGroupLayout, SearchBarBehavior, SearchEvent, SeparatorAlignment, SkeletonShape, SkeletonSize, SliderLabelVisibility, SliderTrackVisibility, StatusVariant, SwitchIndicatorPosition, TextSize, TextVariant, TileAlignment, TileVariant, TitleSize, ToastVariant, ToggleButtonSize, ToggleButtonVariant, ToolbarSize, TooltipPlacement, TooltipSize, TooltipVariant, sliderContext, tableContext };
package/dist/main.js CHANGED
@@ -6,7 +6,7 @@ import { getAssignedElements as getAssignedElements$1 } from '@odx/foundation';
6
6
 
7
7
  const name = "@odx/foundation";
8
8
  const displayName = "ODX Design System Foundation";
9
- const version = "1.0.0-beta.170";
9
+ const version = "1.0.0-beta.171";
10
10
  const pkg = {
11
11
  name,
12
12
  displayName,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@odx/foundation",
3
3
  "displayName": "ODX Design System Foundation",
4
4
  "description": "A library of Web Component building blocks for ODX",
5
- "version": "1.0.0-beta.170",
5
+ "version": "1.0.0-beta.171",
6
6
  "author": "Drägerwerk AG & Co.KGaA",
7
7
  "license": "SEE LICENSE IN LICENSE",
8
8
  "homepage": "https://odx.draeger.com",