@porsche-design-system/components-vue 3.28.0-rc.2 → 3.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -14,6 +14,40 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [3.28.0] - 2025-06-02
18
+
19
+ #### Added
20
+
21
+ - `Input Number`: ([#3855](https://github.com/porsche-design-system/porsche-design-system/pull/3855))
22
+
23
+ #### Fixed
24
+
25
+ - `Select Wrapper`: update of scroll position if dropdown is navigated with keyboard
26
+ ([#3858](https://github.com/porsche-design-system/porsche-design-system/pull/3858))
27
+ - `Select`, `Multi Select`: replacement of static (english) a11y announcement of active `option` with dynamic
28
+ announcement through `ariaActiveDescendantElement`
29
+ ([#3826](https://github.com/porsche-design-system/porsche-design-system/pull/3826))
30
+
31
+ ## [3.28.0-rc.3] - 2025-05-19
32
+
33
+ ### Added
34
+
35
+ - `Styles`: theme for `tailwindcss` including utilities available under
36
+ `import { … } from '@porsche-design-system/components-{js|angular|react|vue}/tailwindcss';`
37
+ ([#3849](https://github.com/porsche-design-system/porsche-design-system/pull/3849))
38
+
39
+ ### Changed
40
+
41
+ - Partials: `getInitialStyles` removed default styles for `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `p`, `b` and `strong`
42
+ ([#3849](https://github.com/porsche-design-system/porsche-design-system/pull/3849))
43
+
44
+ #### Fixed
45
+
46
+ - `Multi Select`: enable full a11y compliance
47
+ ([#3819](https://github.com/porsche-design-system/porsche-design-system/pull/3819))
48
+ - Accessibility: fix ARIA live announcements of form components status messages
49
+ ([#3796](https://github.com/porsche-design-system/porsche-design-system/pull/3796))
50
+
17
51
  ## [3.28.0-rc.2] - 2025-04-23
18
52
 
19
53
  ### Fixed
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),t=require("../../utils.cjs"),p=e.defineComponent({__name:"InputNumberWrapper",props:{autoComplete:{default:""},compact:{type:Boolean,default:!1},controls:{type:Boolean,default:!1},description:{default:""},disabled:{type:Boolean,default:!1},form:{},hideLabel:{default:!1},label:{default:""},max:{},message:{default:""},min:{},name:{},placeholder:{default:""},readOnly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},state:{default:"none"},step:{default:1},theme:{},value:{default:""}},emits:["blur","change","input"],setup(u,{emit:d}){const f=t.usePrefix("p-input-number"),o=u,n=e.ref(),a=d,s=e.inject(t.themeInjectionKey),r=()=>t.syncProperties(n,{...o,theme:o.theme||s.value});return e.onMounted(()=>{r(),t.addEventListenerToElementRef(n,"blur",a),t.addEventListenerToElementRef(n,"change",a),t.addEventListenerToElementRef(n,"input",a)}),e.onUpdated(r),e.watch(s,l=>{t.syncProperties(n,{theme:o.theme||l})}),(l,c)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(f)),{ref_key:"pdsComponentRef",ref:n},{default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},512))}});module.exports=p;
@@ -0,0 +1 @@
1
+ "use strict";const e=require("./InputNumberWrapper.vue.cjs");module.exports=e;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("@porsche-design-system/components-js"),t=require("./lib/components/AccordionWrapper.vue.cjs"),p=require("./lib/components/BannerWrapper.vue.cjs"),u=require("./lib/components/ButtonWrapper.vue.cjs"),s=require("./lib/components/ButtonGroupWrapper.vue.cjs"),i=require("./lib/components/ButtonPureWrapper.vue.cjs"),n=require("./lib/components/ButtonTileWrapper.vue.cjs"),a=require("./lib/components/CanvasWrapper.vue.cjs"),c=require("./lib/components/CarouselWrapper.vue.cjs"),o=require("./lib/components/CheckboxWrapper.vue.cjs"),l=require("./lib/components/CheckboxWrapperWrapper.vue.cjs"),v=require("./lib/components/ContentWrapperWrapper.vue.cjs"),g=require("./lib/components/CrestWrapper.vue.cjs"),P=require("./lib/components/DisplayWrapper.vue.cjs"),y=require("./lib/components/DividerWrapper.vue.cjs"),W=require("./lib/components/DrilldownWrapper.vue.cjs"),q=require("./lib/components/DrilldownItemWrapper.vue.cjs"),d=require("./lib/components/DrilldownLinkWrapper.vue.cjs"),T=require("./lib/components/FieldsetWrapper.vue.cjs"),S=require("./lib/components/FieldsetWrapperWrapper.vue.cjs"),m=require("./lib/components/FlexWrapper.vue.cjs"),b=require("./lib/components/FlexItemWrapper.vue.cjs"),C=require("./lib/components/FlyoutWrapper.vue.cjs"),I=require("./lib/components/GridWrapper.vue.cjs"),k=require("./lib/components/GridItemWrapper.vue.cjs"),x=require("./lib/components/HeadingWrapper.vue.cjs"),D=require("./lib/components/HeadlineWrapper.vue.cjs"),L=require("./lib/components/IconWrapper.vue.cjs"),h=require("./lib/components/InlineNotificationWrapper.vue.cjs"),B=require("./lib/components/InputPasswordWrapper.vue.cjs"),M=require("./lib/components/LinkWrapper.vue.cjs"),w=require("./lib/components/LinkPureWrapper.vue.cjs"),H=require("./lib/components/LinkSocialWrapper.vue.cjs"),F=require("./lib/components/LinkTileWrapper.vue.cjs"),O=require("./lib/components/LinkTileModelSignatureWrapper.vue.cjs"),R=require("./lib/components/LinkTileProductWrapper.vue.cjs"),G=require("./lib/components/MarqueWrapper.vue.cjs"),f=require("./lib/components/ModalWrapper.vue.cjs"),j=require("./lib/components/ModelSignatureWrapper.vue.cjs"),z=require("./lib/components/MultiSelectWrapper.vue.cjs"),A=require("./lib/components/MultiSelectOptionWrapper.vue.cjs"),K=require("./lib/components/OptgroupWrapper.vue.cjs"),N=require("./lib/components/PaginationWrapper.vue.cjs"),J=require("./lib/components/PinCodeWrapper.vue.cjs"),E=require("./lib/components/PopoverWrapper.vue.cjs"),Q=require("./lib/components/RadioButtonWrapperWrapper.vue.cjs"),U=require("./lib/components/ScrollerWrapper.vue.cjs"),V=require("./lib/components/SegmentedControlWrapper.vue.cjs"),X=require("./lib/components/SegmentedControlItemWrapper.vue.cjs"),Y=require("./lib/components/SelectWrapper.vue.cjs"),Z=require("./lib/components/SelectOptionWrapper.vue.cjs"),$=require("./lib/components/SelectWrapperWrapper.vue.cjs"),ee=require("./lib/components/SheetWrapper.vue.cjs"),re=require("./lib/components/SpinnerWrapper.vue.cjs"),_e=require("./lib/components/StepperHorizontalWrapper.vue.cjs"),te=require("./lib/components/StepperHorizontalItemWrapper.vue.cjs"),pe=require("./lib/components/SwitchWrapper.vue.cjs"),ue=require("./lib/components/TableWrapper.vue.cjs"),se=require("./lib/components/TableBodyWrapper.vue.cjs"),ie=require("./lib/components/TableCellWrapper.vue.cjs"),ne=require("./lib/components/TableHeadWrapper.vue.cjs"),ae=require("./lib/components/TableHeadCellWrapper.vue.cjs"),ce=require("./lib/components/TableHeadRowWrapper.vue.cjs"),oe=require("./lib/components/TableRowWrapper.vue.cjs"),le=require("./lib/components/TabsWrapper.vue.cjs"),ve=require("./lib/components/TabsBarWrapper.vue.cjs"),ge=require("./lib/components/TabsItemWrapper.vue.cjs"),Pe=require("./lib/components/TagWrapper.vue.cjs"),ye=require("./lib/components/TagDismissibleWrapper.vue.cjs"),We=require("./lib/components/TextWrapper.vue.cjs"),qe=require("./lib/components/TextFieldWrapperWrapper.vue.cjs"),de=require("./lib/components/TextListWrapper.vue.cjs"),Te=require("./lib/components/TextListItemWrapper.vue.cjs"),Se=require("./lib/components/TextareaWrapper.vue.cjs"),me=require("./lib/components/TextareaWrapperWrapper.vue.cjs"),be=require("./lib/components/ToastWrapper.vue.cjs"),Ce=require("./lib/components/WordmarkWrapper.vue.cjs"),e=require("./utils.cjs"),Ie=require("./PorscheDesignSystemProvider.vue.cjs"),r=require("./plugin.cjs");Object.defineProperty(exports,"componentsReady",{enumerable:!0,get:()=>_.componentsReady});exports.PAccordion=t;exports.PBanner=p;exports.PButton=u;exports.PButtonGroup=s;exports.PButtonPure=i;exports.PButtonTile=n;exports.PCanvas=a;exports.PCarousel=c;exports.PCheckbox=o;exports.PCheckboxWrapper=l;exports.PContentWrapper=v;exports.PCrest=g;exports.PDisplay=P;exports.PDivider=y;exports.PDrilldown=W;exports.PDrilldownItem=q;exports.PDrilldownLink=d;exports.PFieldset=T;exports.PFieldsetWrapper=S;exports.PFlex=m;exports.PFlexItem=b;exports.PFlyout=C;exports.PGrid=I;exports.PGridItem=k;exports.PHeading=x;exports.PHeadline=D;exports.PIcon=L;exports.PInlineNotification=h;exports.PInputPassword=B;exports.PLink=M;exports.PLinkPure=w;exports.PLinkSocial=H;exports.PLinkTile=F;exports.PLinkTileModelSignature=O;exports.PLinkTileProduct=R;exports.PMarque=G;exports.PModal=f;exports.PModelSignature=j;exports.PMultiSelect=z;exports.PMultiSelectOption=A;exports.POptgroup=K;exports.PPagination=N;exports.PPinCode=J;exports.PPopover=E;exports.PRadioButtonWrapper=Q;exports.PScroller=U;exports.PSegmentedControl=V;exports.PSegmentedControlItem=X;exports.PSelect=Y;exports.PSelectOption=Z;exports.PSelectWrapper=$;exports.PSheet=ee;exports.PSpinner=re;exports.PStepperHorizontal=_e;exports.PStepperHorizontalItem=te;exports.PSwitch=pe;exports.PTable=ue;exports.PTableBody=se;exports.PTableCell=ie;exports.PTableHead=ne;exports.PTableHeadCell=ae;exports.PTableHeadRow=ce;exports.PTableRow=oe;exports.PTabs=le;exports.PTabsBar=ve;exports.PTabsItem=ge;exports.PTag=Pe;exports.PTagDismissible=ye;exports.PText=We;exports.PTextFieldWrapper=qe;exports.PTextList=de;exports.PTextListItem=Te;exports.PTextarea=Se;exports.PTextareaWrapper=me;exports.PToast=be;exports.PWordmark=Ce;exports.themeInjectionKey=e.themeInjectionKey;exports.useToastManager=e.useToastManager;exports.PorscheDesignSystemProvider=Ie;exports.createPorscheDesignSystem=r.createPorscheDesignSystem;exports.usePorscheDesignSystemPlugin=r.usePorscheDesignSystemPlugin;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("@porsche-design-system/components-js"),t=require("./lib/components/AccordionWrapper.vue.cjs"),p=require("./lib/components/BannerWrapper.vue.cjs"),u=require("./lib/components/ButtonWrapper.vue.cjs"),s=require("./lib/components/ButtonGroupWrapper.vue.cjs"),i=require("./lib/components/ButtonPureWrapper.vue.cjs"),n=require("./lib/components/ButtonTileWrapper.vue.cjs"),a=require("./lib/components/CanvasWrapper.vue.cjs"),c=require("./lib/components/CarouselWrapper.vue.cjs"),o=require("./lib/components/CheckboxWrapper.vue.cjs"),l=require("./lib/components/CheckboxWrapperWrapper.vue.cjs"),v=require("./lib/components/ContentWrapperWrapper.vue.cjs"),g=require("./lib/components/CrestWrapper.vue.cjs"),P=require("./lib/components/DisplayWrapper.vue.cjs"),y=require("./lib/components/DividerWrapper.vue.cjs"),W=require("./lib/components/DrilldownWrapper.vue.cjs"),q=require("./lib/components/DrilldownItemWrapper.vue.cjs"),d=require("./lib/components/DrilldownLinkWrapper.vue.cjs"),T=require("./lib/components/FieldsetWrapper.vue.cjs"),S=require("./lib/components/FieldsetWrapperWrapper.vue.cjs"),m=require("./lib/components/FlexWrapper.vue.cjs"),b=require("./lib/components/FlexItemWrapper.vue.cjs"),I=require("./lib/components/FlyoutWrapper.vue.cjs"),C=require("./lib/components/GridWrapper.vue.cjs"),k=require("./lib/components/GridItemWrapper.vue.cjs"),x=require("./lib/components/HeadingWrapper.vue.cjs"),D=require("./lib/components/HeadlineWrapper.vue.cjs"),L=require("./lib/components/IconWrapper.vue.cjs"),h=require("./lib/components/InlineNotificationWrapper.vue.cjs"),B=require("./lib/components/InputNumberWrapper.vue.cjs"),M=require("./lib/components/InputPasswordWrapper.vue.cjs"),w=require("./lib/components/LinkWrapper.vue.cjs"),H=require("./lib/components/LinkPureWrapper.vue.cjs"),F=require("./lib/components/LinkSocialWrapper.vue.cjs"),O=require("./lib/components/LinkTileWrapper.vue.cjs"),R=require("./lib/components/LinkTileModelSignatureWrapper.vue.cjs"),G=require("./lib/components/LinkTileProductWrapper.vue.cjs"),f=require("./lib/components/MarqueWrapper.vue.cjs"),j=require("./lib/components/ModalWrapper.vue.cjs"),z=require("./lib/components/ModelSignatureWrapper.vue.cjs"),N=require("./lib/components/MultiSelectWrapper.vue.cjs"),A=require("./lib/components/MultiSelectOptionWrapper.vue.cjs"),K=require("./lib/components/OptgroupWrapper.vue.cjs"),J=require("./lib/components/PaginationWrapper.vue.cjs"),E=require("./lib/components/PinCodeWrapper.vue.cjs"),Q=require("./lib/components/PopoverWrapper.vue.cjs"),U=require("./lib/components/RadioButtonWrapperWrapper.vue.cjs"),V=require("./lib/components/ScrollerWrapper.vue.cjs"),X=require("./lib/components/SegmentedControlWrapper.vue.cjs"),Y=require("./lib/components/SegmentedControlItemWrapper.vue.cjs"),Z=require("./lib/components/SelectWrapper.vue.cjs"),$=require("./lib/components/SelectOptionWrapper.vue.cjs"),ee=require("./lib/components/SelectWrapperWrapper.vue.cjs"),re=require("./lib/components/SheetWrapper.vue.cjs"),_e=require("./lib/components/SpinnerWrapper.vue.cjs"),te=require("./lib/components/StepperHorizontalWrapper.vue.cjs"),pe=require("./lib/components/StepperHorizontalItemWrapper.vue.cjs"),ue=require("./lib/components/SwitchWrapper.vue.cjs"),se=require("./lib/components/TableWrapper.vue.cjs"),ie=require("./lib/components/TableBodyWrapper.vue.cjs"),ne=require("./lib/components/TableCellWrapper.vue.cjs"),ae=require("./lib/components/TableHeadWrapper.vue.cjs"),ce=require("./lib/components/TableHeadCellWrapper.vue.cjs"),oe=require("./lib/components/TableHeadRowWrapper.vue.cjs"),le=require("./lib/components/TableRowWrapper.vue.cjs"),ve=require("./lib/components/TabsWrapper.vue.cjs"),ge=require("./lib/components/TabsBarWrapper.vue.cjs"),Pe=require("./lib/components/TabsItemWrapper.vue.cjs"),ye=require("./lib/components/TagWrapper.vue.cjs"),We=require("./lib/components/TagDismissibleWrapper.vue.cjs"),qe=require("./lib/components/TextWrapper.vue.cjs"),de=require("./lib/components/TextFieldWrapperWrapper.vue.cjs"),Te=require("./lib/components/TextListWrapper.vue.cjs"),Se=require("./lib/components/TextListItemWrapper.vue.cjs"),me=require("./lib/components/TextareaWrapper.vue.cjs"),be=require("./lib/components/TextareaWrapperWrapper.vue.cjs"),Ie=require("./lib/components/ToastWrapper.vue.cjs"),Ce=require("./lib/components/WordmarkWrapper.vue.cjs"),e=require("./utils.cjs"),ke=require("./PorscheDesignSystemProvider.vue.cjs"),r=require("./plugin.cjs");Object.defineProperty(exports,"componentsReady",{enumerable:!0,get:()=>_.componentsReady});exports.PAccordion=t;exports.PBanner=p;exports.PButton=u;exports.PButtonGroup=s;exports.PButtonPure=i;exports.PButtonTile=n;exports.PCanvas=a;exports.PCarousel=c;exports.PCheckbox=o;exports.PCheckboxWrapper=l;exports.PContentWrapper=v;exports.PCrest=g;exports.PDisplay=P;exports.PDivider=y;exports.PDrilldown=W;exports.PDrilldownItem=q;exports.PDrilldownLink=d;exports.PFieldset=T;exports.PFieldsetWrapper=S;exports.PFlex=m;exports.PFlexItem=b;exports.PFlyout=I;exports.PGrid=C;exports.PGridItem=k;exports.PHeading=x;exports.PHeadline=D;exports.PIcon=L;exports.PInlineNotification=h;exports.PInputNumber=B;exports.PInputPassword=M;exports.PLink=w;exports.PLinkPure=H;exports.PLinkSocial=F;exports.PLinkTile=O;exports.PLinkTileModelSignature=R;exports.PLinkTileProduct=G;exports.PMarque=f;exports.PModal=j;exports.PModelSignature=z;exports.PMultiSelect=N;exports.PMultiSelectOption=A;exports.POptgroup=K;exports.PPagination=J;exports.PPinCode=E;exports.PPopover=Q;exports.PRadioButtonWrapper=U;exports.PScroller=V;exports.PSegmentedControl=X;exports.PSegmentedControlItem=Y;exports.PSelect=Z;exports.PSelectOption=$;exports.PSelectWrapper=ee;exports.PSheet=re;exports.PSpinner=_e;exports.PStepperHorizontal=te;exports.PStepperHorizontalItem=pe;exports.PSwitch=ue;exports.PTable=se;exports.PTableBody=ie;exports.PTableCell=ne;exports.PTableHead=ae;exports.PTableHeadCell=ce;exports.PTableHeadRow=oe;exports.PTableRow=le;exports.PTabs=ve;exports.PTabsBar=ge;exports.PTabsItem=Pe;exports.PTag=ye;exports.PTagDismissible=We;exports.PText=qe;exports.PTextFieldWrapper=de;exports.PTextList=Te;exports.PTextListItem=Se;exports.PTextarea=me;exports.PTextareaWrapper=be;exports.PToast=Ie;exports.PWordmark=Ce;exports.themeInjectionKey=e.themeInjectionKey;exports.useToastManager=e.useToastManager;exports.PorscheDesignSystemProvider=ke;exports.createPorscheDesignSystem=r.createPorscheDesignSystem;exports.usePorscheDesignSystemPlugin=r.usePorscheDesignSystemPlugin;
@@ -0,0 +1,113 @@
1
+ import type { InputNumberAutoComplete, BreakpointCustomizable, InputNumberState, Theme } from '../types';
2
+ type PInputNumberProps = {
3
+ /**
4
+ * Specifies whether the input can be autofilled by the browser
5
+ */
6
+ autoComplete?: InputNumberAutoComplete;
7
+ /**
8
+ * Displays as compact version.
9
+ */
10
+ compact?: boolean;
11
+ /**
12
+ * Show or hide the increment/decrement stepper controls.
13
+ */
14
+ controls?: boolean;
15
+ /**
16
+ * The description text.
17
+ */
18
+ description?: string;
19
+ /**
20
+ * Marks the number input as disabled.
21
+ */
22
+ disabled?: boolean;
23
+ /**
24
+ * The id of a form element the number input should be associated with.
25
+ */
26
+ form?: string;
27
+ /**
28
+ * Show or hide label and description text. For better accessibility it is recommended to show the label.
29
+ */
30
+ hideLabel?: BreakpointCustomizable<boolean>;
31
+ /**
32
+ * The label text.
33
+ */
34
+ label?: string;
35
+ /**
36
+ * The max value of the number input.
37
+ */
38
+ max?: number;
39
+ /**
40
+ * The message styled depending on validation state.
41
+ */
42
+ message?: string;
43
+ /**
44
+ * The min value of the number input.
45
+ */
46
+ min?: number;
47
+ /**
48
+ * The name of the number input.
49
+ */
50
+ name: string;
51
+ /**
52
+ * The placeholder text.
53
+ */
54
+ placeholder?: string;
55
+ /**
56
+ * Specifies whether the number input should be read-only.
57
+ */
58
+ readOnly?: boolean;
59
+ /**
60
+ * Marks the number input as required.
61
+ */
62
+ required?: boolean;
63
+ /**
64
+ * The validation state.
65
+ */
66
+ state?: InputNumberState;
67
+ /**
68
+ * The granularity that the value must adhere to.
69
+ */
70
+ step?: number;
71
+ /**
72
+ * Adapts the color depending on the theme.
73
+ */
74
+ theme?: Theme;
75
+ /**
76
+ * The number input value.
77
+ */
78
+ value?: string;
79
+ };
80
+ declare function __VLS_template(): {
81
+ default?(_: {}): any;
82
+ };
83
+ declare const __VLS_component: import("vue").DefineComponent<PInputNumberProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
84
+ blur: (value: Event) => void;
85
+ change: (value: Event) => void;
86
+ input: (value: InputEvent) => void;
87
+ }, string, import("vue").PublicProps, Readonly<PInputNumberProps> & Readonly<{
88
+ onBlur?: ((value: Event) => any) | undefined;
89
+ onChange?: ((value: Event) => any) | undefined;
90
+ onInput?: ((value: InputEvent) => any) | undefined;
91
+ }>, {
92
+ step: number;
93
+ label: string;
94
+ description: string;
95
+ disabled: boolean;
96
+ compact: boolean;
97
+ state: InputNumberState;
98
+ required: boolean;
99
+ hideLabel: BreakpointCustomizable<boolean>;
100
+ value: string;
101
+ message: string;
102
+ autoComplete: InputNumberAutoComplete;
103
+ controls: boolean;
104
+ placeholder: string;
105
+ readOnly: boolean;
106
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
107
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
108
+ export default _default;
109
+ type __VLS_WithTemplateSlots<T, S> = T & {
110
+ new (): {
111
+ $slots: S;
112
+ };
113
+ };
@@ -0,0 +1,46 @@
1
+ import { defineComponent as d, ref as m, inject as c, onMounted as i, onUpdated as h, watch as y, openBlock as b, createBlock as B, resolveDynamicComponent as C, unref as _, withCtx as g, renderSlot as v } from "vue";
2
+ import { usePrefix as x, themeInjectionKey as R, addEventListenerToElementRef as a, syncProperties as r } from "../../utils.mjs";
3
+ const j = /* @__PURE__ */ d({
4
+ __name: "InputNumberWrapper",
5
+ props: {
6
+ autoComplete: { default: "" },
7
+ compact: { type: Boolean, default: !1 },
8
+ controls: { type: Boolean, default: !1 },
9
+ description: { default: "" },
10
+ disabled: { type: Boolean, default: !1 },
11
+ form: {},
12
+ hideLabel: { default: !1 },
13
+ label: { default: "" },
14
+ max: {},
15
+ message: { default: "" },
16
+ min: {},
17
+ name: {},
18
+ placeholder: { default: "" },
19
+ readOnly: { type: Boolean, default: !1 },
20
+ required: { type: Boolean, default: !1 },
21
+ state: { default: "none" },
22
+ step: { default: 1 },
23
+ theme: {},
24
+ value: { default: "" }
25
+ },
26
+ emits: ["blur", "change", "input"],
27
+ setup(s, { emit: p }) {
28
+ const u = x("p-input-number"), t = s, e = m(), n = p, l = c(R), f = () => r(e, { ...t, theme: t.theme || l.value });
29
+ return i(() => {
30
+ f(), a(e, "blur", n), a(e, "change", n), a(e, "input", n);
31
+ }), h(f), y(l, (o) => {
32
+ r(e, { theme: t.theme || o });
33
+ }), (o, k) => (b(), B(C(_(u)), {
34
+ ref_key: "pdsComponentRef",
35
+ ref: e
36
+ }, {
37
+ default: g(() => [
38
+ v(o.$slots, "default")
39
+ ]),
40
+ _: 3
41
+ }, 512));
42
+ }
43
+ });
44
+ export {
45
+ j as default
46
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./InputNumberWrapper.vue.mjs";
2
+ export {
3
+ f as default
4
+ };
@@ -26,6 +26,7 @@ export { default as PHeading } from './HeadingWrapper.vue';
26
26
  export { default as PHeadline } from './HeadlineWrapper.vue';
27
27
  export { default as PIcon } from './IconWrapper.vue';
28
28
  export { default as PInlineNotification } from './InlineNotificationWrapper.vue';
29
+ export { default as PInputNumber } from './InputNumberWrapper.vue';
29
30
  export { default as PInputPassword } from './InputPasswordWrapper.vue';
30
31
  export { default as PLink } from './LinkWrapper.vue';
31
32
  export { default as PLinkPure } from './LinkPureWrapper.vue';
@@ -1088,13 +1088,23 @@ declare const ICON_COLORS: readonly [
1088
1088
  "state-disabled"
1089
1089
  ];
1090
1090
  export type IconColor = (typeof ICON_COLORS)[number];
1091
+ export type InputNumberState = FormState;
1092
+ declare const INPUT_NUMBER_AUTO_COMPLETE: readonly [
1093
+ "off",
1094
+ "on",
1095
+ ""
1096
+ ];
1097
+ export type InputNumberAutoComplete = (typeof INPUT_NUMBER_AUTO_COMPLETE)[number];
1098
+ export type InputNumberChangeEventDetail = Event;
1099
+ export type InputNumberBlurEventDetail = Event;
1100
+ export type InputNumberInputEventDetail = InputEvent;
1091
1101
  export type InputPasswordState = FormState;
1092
1102
  declare const INPUT_PASSWORD_AUTO_COMPLETE: readonly [
1093
1103
  "off",
1094
1104
  "on",
1105
+ "",
1095
1106
  "current-password",
1096
- "new-password",
1097
- ""
1107
+ "new-password"
1098
1108
  ];
1099
1109
  export type InputPasswordAutoComplete = (typeof INPUT_PASSWORD_AUTO_COMPLETE)[number];
1100
1110
  export type InputPasswordChangeEventDetail = Event;
@@ -1,4 +1,4 @@
1
- import { componentsReady as o } from "@porsche-design-system/components-js";
1
+ import { componentsReady as r } from "@porsche-design-system/components-js";
2
2
  import { default as a } from "./lib/components/AccordionWrapper.vue.mjs";
3
3
  import { default as l } from "./lib/components/BannerWrapper.vue.mjs";
4
4
  import { default as s } from "./lib/components/ButtonWrapper.vue.mjs";
@@ -7,8 +7,8 @@ import { default as x } from "./lib/components/ButtonPureWrapper.vue.mjs";
7
7
  import { default as i } from "./lib/components/ButtonTileWrapper.vue.mjs";
8
8
  import { default as T } from "./lib/components/CanvasWrapper.vue.mjs";
9
9
  import { default as S } from "./lib/components/CarouselWrapper.vue.mjs";
10
- import { default as b } from "./lib/components/CheckboxWrapper.vue.mjs";
11
- import { default as I } from "./lib/components/CheckboxWrapperWrapper.vue.mjs";
10
+ import { default as g } from "./lib/components/CheckboxWrapper.vue.mjs";
11
+ import { default as C } from "./lib/components/CheckboxWrapperWrapper.vue.mjs";
12
12
  import { default as D } from "./lib/components/ContentWrapperWrapper.vue.mjs";
13
13
  import { default as h } from "./lib/components/CrestWrapper.vue.mjs";
14
14
  import { default as B } from "./lib/components/DisplayWrapper.vue.mjs";
@@ -17,67 +17,68 @@ import { default as M } from "./lib/components/DrilldownWrapper.vue.mjs";
17
17
  import { default as v } from "./lib/components/DrilldownItemWrapper.vue.mjs";
18
18
  import { default as G } from "./lib/components/DrilldownLinkWrapper.vue.mjs";
19
19
  import { default as z } from "./lib/components/FieldsetWrapper.vue.mjs";
20
- import { default as q } from "./lib/components/FieldsetWrapperWrapper.vue.mjs";
21
- import { default as K } from "./lib/components/FlexWrapper.vue.mjs";
20
+ import { default as j } from "./lib/components/FieldsetWrapperWrapper.vue.mjs";
21
+ import { default as A } from "./lib/components/FlexWrapper.vue.mjs";
22
22
  import { default as E } from "./lib/components/FlexItemWrapper.vue.mjs";
23
23
  import { default as Q } from "./lib/components/FlyoutWrapper.vue.mjs";
24
24
  import { default as V } from "./lib/components/GridWrapper.vue.mjs";
25
25
  import { default as Y } from "./lib/components/GridItemWrapper.vue.mjs";
26
26
  import { default as _ } from "./lib/components/HeadingWrapper.vue.mjs";
27
27
  import { default as ee } from "./lib/components/HeadlineWrapper.vue.mjs";
28
- import { default as oe } from "./lib/components/IconWrapper.vue.mjs";
28
+ import { default as re } from "./lib/components/IconWrapper.vue.mjs";
29
29
  import { default as ae } from "./lib/components/InlineNotificationWrapper.vue.mjs";
30
- import { default as le } from "./lib/components/InputPasswordWrapper.vue.mjs";
31
- import { default as se } from "./lib/components/LinkWrapper.vue.mjs";
32
- import { default as ue } from "./lib/components/LinkPureWrapper.vue.mjs";
33
- import { default as xe } from "./lib/components/LinkSocialWrapper.vue.mjs";
34
- import { default as ie } from "./lib/components/LinkTileWrapper.vue.mjs";
35
- import { default as Te } from "./lib/components/LinkTileModelSignatureWrapper.vue.mjs";
36
- import { default as Se } from "./lib/components/LinkTileProductWrapper.vue.mjs";
37
- import { default as be } from "./lib/components/MarqueWrapper.vue.mjs";
38
- import { default as Ie } from "./lib/components/ModalWrapper.vue.mjs";
39
- import { default as De } from "./lib/components/ModelSignatureWrapper.vue.mjs";
40
- import { default as he } from "./lib/components/MultiSelectWrapper.vue.mjs";
41
- import { default as Be } from "./lib/components/MultiSelectOptionWrapper.vue.mjs";
42
- import { default as we } from "./lib/components/OptgroupWrapper.vue.mjs";
43
- import { default as Me } from "./lib/components/PaginationWrapper.vue.mjs";
44
- import { default as ve } from "./lib/components/PinCodeWrapper.vue.mjs";
45
- import { default as Ge } from "./lib/components/PopoverWrapper.vue.mjs";
46
- import { default as ze } from "./lib/components/RadioButtonWrapperWrapper.vue.mjs";
47
- import { default as qe } from "./lib/components/ScrollerWrapper.vue.mjs";
48
- import { default as Ke } from "./lib/components/SegmentedControlWrapper.vue.mjs";
49
- import { default as Ee } from "./lib/components/SegmentedControlItemWrapper.vue.mjs";
50
- import { default as Qe } from "./lib/components/SelectWrapper.vue.mjs";
51
- import { default as Ve } from "./lib/components/SelectOptionWrapper.vue.mjs";
52
- import { default as Ye } from "./lib/components/SelectWrapperWrapper.vue.mjs";
53
- import { default as _e } from "./lib/components/SheetWrapper.vue.mjs";
54
- import { default as et } from "./lib/components/SpinnerWrapper.vue.mjs";
55
- import { default as ot } from "./lib/components/StepperHorizontalWrapper.vue.mjs";
56
- import { default as at } from "./lib/components/StepperHorizontalItemWrapper.vue.mjs";
57
- import { default as lt } from "./lib/components/SwitchWrapper.vue.mjs";
58
- import { default as st } from "./lib/components/TableWrapper.vue.mjs";
59
- import { default as ut } from "./lib/components/TableBodyWrapper.vue.mjs";
60
- import { default as xt } from "./lib/components/TableCellWrapper.vue.mjs";
61
- import { default as it } from "./lib/components/TableHeadWrapper.vue.mjs";
62
- import { default as Tt } from "./lib/components/TableHeadCellWrapper.vue.mjs";
63
- import { default as St } from "./lib/components/TableHeadRowWrapper.vue.mjs";
64
- import { default as bt } from "./lib/components/TableRowWrapper.vue.mjs";
65
- import { default as It } from "./lib/components/TabsWrapper.vue.mjs";
66
- import { default as Dt } from "./lib/components/TabsBarWrapper.vue.mjs";
67
- import { default as ht } from "./lib/components/TabsItemWrapper.vue.mjs";
68
- import { default as Bt } from "./lib/components/TagWrapper.vue.mjs";
69
- import { default as wt } from "./lib/components/TagDismissibleWrapper.vue.mjs";
70
- import { default as Mt } from "./lib/components/TextWrapper.vue.mjs";
71
- import { default as vt } from "./lib/components/TextFieldWrapperWrapper.vue.mjs";
72
- import { default as Gt } from "./lib/components/TextListWrapper.vue.mjs";
73
- import { default as zt } from "./lib/components/TextListItemWrapper.vue.mjs";
74
- import { default as qt } from "./lib/components/TextareaWrapper.vue.mjs";
75
- import { default as Kt } from "./lib/components/TextareaWrapperWrapper.vue.mjs";
76
- import { default as Et } from "./lib/components/ToastWrapper.vue.mjs";
77
- import { default as Qt } from "./lib/components/WordmarkWrapper.vue.mjs";
78
- import { themeInjectionKey as Vt, useToastManager as Xt } from "./utils.mjs";
79
- import { default as Zt } from "./PorscheDesignSystemProvider.vue.mjs";
80
- import { createPorscheDesignSystem as $t, usePorscheDesignSystemPlugin as eo } from "./plugin.mjs";
30
+ import { default as le } from "./lib/components/InputNumberWrapper.vue.mjs";
31
+ import { default as se } from "./lib/components/InputPasswordWrapper.vue.mjs";
32
+ import { default as ue } from "./lib/components/LinkWrapper.vue.mjs";
33
+ import { default as xe } from "./lib/components/LinkPureWrapper.vue.mjs";
34
+ import { default as ie } from "./lib/components/LinkSocialWrapper.vue.mjs";
35
+ import { default as Te } from "./lib/components/LinkTileWrapper.vue.mjs";
36
+ import { default as Se } from "./lib/components/LinkTileModelSignatureWrapper.vue.mjs";
37
+ import { default as ge } from "./lib/components/LinkTileProductWrapper.vue.mjs";
38
+ import { default as Ce } from "./lib/components/MarqueWrapper.vue.mjs";
39
+ import { default as De } from "./lib/components/ModalWrapper.vue.mjs";
40
+ import { default as he } from "./lib/components/ModelSignatureWrapper.vue.mjs";
41
+ import { default as Be } from "./lib/components/MultiSelectWrapper.vue.mjs";
42
+ import { default as we } from "./lib/components/MultiSelectOptionWrapper.vue.mjs";
43
+ import { default as Me } from "./lib/components/OptgroupWrapper.vue.mjs";
44
+ import { default as ve } from "./lib/components/PaginationWrapper.vue.mjs";
45
+ import { default as Ge } from "./lib/components/PinCodeWrapper.vue.mjs";
46
+ import { default as ze } from "./lib/components/PopoverWrapper.vue.mjs";
47
+ import { default as je } from "./lib/components/RadioButtonWrapperWrapper.vue.mjs";
48
+ import { default as Ae } from "./lib/components/ScrollerWrapper.vue.mjs";
49
+ import { default as Ee } from "./lib/components/SegmentedControlWrapper.vue.mjs";
50
+ import { default as Qe } from "./lib/components/SegmentedControlItemWrapper.vue.mjs";
51
+ import { default as Ve } from "./lib/components/SelectWrapper.vue.mjs";
52
+ import { default as Ye } from "./lib/components/SelectOptionWrapper.vue.mjs";
53
+ import { default as _e } from "./lib/components/SelectWrapperWrapper.vue.mjs";
54
+ import { default as et } from "./lib/components/SheetWrapper.vue.mjs";
55
+ import { default as rt } from "./lib/components/SpinnerWrapper.vue.mjs";
56
+ import { default as at } from "./lib/components/StepperHorizontalWrapper.vue.mjs";
57
+ import { default as lt } from "./lib/components/StepperHorizontalItemWrapper.vue.mjs";
58
+ import { default as st } from "./lib/components/SwitchWrapper.vue.mjs";
59
+ import { default as ut } from "./lib/components/TableWrapper.vue.mjs";
60
+ import { default as xt } from "./lib/components/TableBodyWrapper.vue.mjs";
61
+ import { default as it } from "./lib/components/TableCellWrapper.vue.mjs";
62
+ import { default as Tt } from "./lib/components/TableHeadWrapper.vue.mjs";
63
+ import { default as St } from "./lib/components/TableHeadCellWrapper.vue.mjs";
64
+ import { default as gt } from "./lib/components/TableHeadRowWrapper.vue.mjs";
65
+ import { default as Ct } from "./lib/components/TableRowWrapper.vue.mjs";
66
+ import { default as Dt } from "./lib/components/TabsWrapper.vue.mjs";
67
+ import { default as ht } from "./lib/components/TabsBarWrapper.vue.mjs";
68
+ import { default as Bt } from "./lib/components/TabsItemWrapper.vue.mjs";
69
+ import { default as wt } from "./lib/components/TagWrapper.vue.mjs";
70
+ import { default as Mt } from "./lib/components/TagDismissibleWrapper.vue.mjs";
71
+ import { default as vt } from "./lib/components/TextWrapper.vue.mjs";
72
+ import { default as Gt } from "./lib/components/TextFieldWrapperWrapper.vue.mjs";
73
+ import { default as zt } from "./lib/components/TextListWrapper.vue.mjs";
74
+ import { default as jt } from "./lib/components/TextListItemWrapper.vue.mjs";
75
+ import { default as At } from "./lib/components/TextareaWrapper.vue.mjs";
76
+ import { default as Et } from "./lib/components/TextareaWrapperWrapper.vue.mjs";
77
+ import { default as Qt } from "./lib/components/ToastWrapper.vue.mjs";
78
+ import { default as Vt } from "./lib/components/WordmarkWrapper.vue.mjs";
79
+ import { themeInjectionKey as Yt, useToastManager as Zt } from "./utils.mjs";
80
+ import { default as $t } from "./PorscheDesignSystemProvider.vue.mjs";
81
+ import { createPorscheDesignSystem as tr, usePorscheDesignSystemPlugin as rr } from "./plugin.mjs";
81
82
  export {
82
83
  a as PAccordion,
83
84
  l as PBanner,
@@ -87,8 +88,8 @@ export {
87
88
  i as PButtonTile,
88
89
  T as PCanvas,
89
90
  S as PCarousel,
90
- b as PCheckbox,
91
- I as PCheckboxWrapper,
91
+ g as PCheckbox,
92
+ C as PCheckboxWrapper,
92
93
  D as PContentWrapper,
93
94
  h as PCrest,
94
95
  B as PDisplay,
@@ -97,68 +98,69 @@ export {
97
98
  v as PDrilldownItem,
98
99
  G as PDrilldownLink,
99
100
  z as PFieldset,
100
- q as PFieldsetWrapper,
101
- K as PFlex,
101
+ j as PFieldsetWrapper,
102
+ A as PFlex,
102
103
  E as PFlexItem,
103
104
  Q as PFlyout,
104
105
  V as PGrid,
105
106
  Y as PGridItem,
106
107
  _ as PHeading,
107
108
  ee as PHeadline,
108
- oe as PIcon,
109
+ re as PIcon,
109
110
  ae as PInlineNotification,
110
- le as PInputPassword,
111
- se as PLink,
112
- ue as PLinkPure,
113
- xe as PLinkSocial,
114
- ie as PLinkTile,
115
- Te as PLinkTileModelSignature,
116
- Se as PLinkTileProduct,
117
- be as PMarque,
118
- Ie as PModal,
119
- De as PModelSignature,
120
- he as PMultiSelect,
121
- Be as PMultiSelectOption,
122
- we as POptgroup,
123
- Me as PPagination,
124
- ve as PPinCode,
125
- Ge as PPopover,
126
- ze as PRadioButtonWrapper,
127
- qe as PScroller,
128
- Ke as PSegmentedControl,
129
- Ee as PSegmentedControlItem,
130
- Qe as PSelect,
131
- Ve as PSelectOption,
132
- Ye as PSelectWrapper,
133
- _e as PSheet,
134
- et as PSpinner,
135
- ot as PStepperHorizontal,
136
- at as PStepperHorizontalItem,
137
- lt as PSwitch,
138
- st as PTable,
139
- ut as PTableBody,
140
- xt as PTableCell,
141
- it as PTableHead,
142
- Tt as PTableHeadCell,
143
- St as PTableHeadRow,
144
- bt as PTableRow,
145
- It as PTabs,
146
- Dt as PTabsBar,
147
- ht as PTabsItem,
148
- Bt as PTag,
149
- wt as PTagDismissible,
150
- Mt as PText,
151
- vt as PTextFieldWrapper,
152
- Gt as PTextList,
153
- zt as PTextListItem,
154
- qt as PTextarea,
155
- Kt as PTextareaWrapper,
156
- Et as PToast,
157
- Qt as PWordmark,
158
- Zt as PorscheDesignSystemProvider,
159
- o as componentsReady,
160
- $t as createPorscheDesignSystem,
161
- Vt as themeInjectionKey,
162
- eo as usePorscheDesignSystemPlugin,
163
- Xt as useToastManager
111
+ le as PInputNumber,
112
+ se as PInputPassword,
113
+ ue as PLink,
114
+ xe as PLinkPure,
115
+ ie as PLinkSocial,
116
+ Te as PLinkTile,
117
+ Se as PLinkTileModelSignature,
118
+ ge as PLinkTileProduct,
119
+ Ce as PMarque,
120
+ De as PModal,
121
+ he as PModelSignature,
122
+ Be as PMultiSelect,
123
+ we as PMultiSelectOption,
124
+ Me as POptgroup,
125
+ ve as PPagination,
126
+ Ge as PPinCode,
127
+ ze as PPopover,
128
+ je as PRadioButtonWrapper,
129
+ Ae as PScroller,
130
+ Ee as PSegmentedControl,
131
+ Qe as PSegmentedControlItem,
132
+ Ve as PSelect,
133
+ Ye as PSelectOption,
134
+ _e as PSelectWrapper,
135
+ et as PSheet,
136
+ rt as PSpinner,
137
+ at as PStepperHorizontal,
138
+ lt as PStepperHorizontalItem,
139
+ st as PSwitch,
140
+ ut as PTable,
141
+ xt as PTableBody,
142
+ it as PTableCell,
143
+ Tt as PTableHead,
144
+ St as PTableHeadCell,
145
+ gt as PTableHeadRow,
146
+ Ct as PTableRow,
147
+ Dt as PTabs,
148
+ ht as PTabsBar,
149
+ Bt as PTabsItem,
150
+ wt as PTag,
151
+ Mt as PTagDismissible,
152
+ vt as PText,
153
+ Gt as PTextFieldWrapper,
154
+ zt as PTextList,
155
+ jt as PTextListItem,
156
+ At as PTextarea,
157
+ Et as PTextareaWrapper,
158
+ Qt as PToast,
159
+ Vt as PWordmark,
160
+ $t as PorscheDesignSystemProvider,
161
+ r as componentsReady,
162
+ tr as createPorscheDesignSystem,
163
+ Yt as themeInjectionKey,
164
+ rr as usePorscheDesignSystemPlugin,
165
+ Zt as useToastManager
164
166
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-vue",
3
- "version": "3.28.0-rc.2",
3
+ "version": "3.28.0",
4
4
  "description": "Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.",
5
5
  "keywords": [
6
6
  "porsche",
@@ -17,7 +17,7 @@
17
17
  "license": "SEE LICENSE IN LICENSE",
18
18
  "homepage": "https://designsystem.porsche.com",
19
19
  "dependencies": {
20
- "@porsche-design-system/components-js": "3.28.0-rc.2"
20
+ "@porsche-design-system/components-js": "3.28.0"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "ag-grid-enterprise": ">= 33.0.0 <34.0.0",
@@ -62,6 +62,9 @@
62
62
  "import": "./styles/vanilla-extract/esm/vanilla-extract/index.mjs",
63
63
  "default": "./styles/vanilla-extract/cjs/vanilla-extract/index.cjs"
64
64
  },
65
+ "./tailwindcss": {
66
+ "style": "./tailwindcss/index.css"
67
+ },
65
68
  "./ag-grid": {
66
69
  "types": "./ag-grid/esm/index.d.ts",
67
70
  "import": "./ag-grid/esm/index.mjs",
@@ -0,0 +1,409 @@
1
+ @custom-variant dark (&:where(.dark, .dark *));
2
+
3
+ @theme {
4
+ /* Color */
5
+ --color-primary: #010205;
6
+ --color-base: #FFF;
7
+ --color-surface: #EEEFF2;
8
+ --color-shading: rgba(1,2,5,.67);
9
+ --color-frosted: hsl(240 4% 85%/35%);
10
+ --color-contrast-low: #D8D8DB;
11
+ --color-contrast-medium: #6B6D70;
12
+ --color-contrast-high: #535457;
13
+ --color-success: #197E10;
14
+ --color-success-soft: #E4FFEC;
15
+ --color-warning: #F3BE00;
16
+ --color-warning-soft: #FFF4D2;
17
+ --color-error: #CC1922;
18
+ --color-error-soft: #FFE2E4;
19
+ --color-info: #2762EC;
20
+ --color-info-soft: #D3E1FF;
21
+ --color-hover: rgba(148,149,152,.18);
22
+ --color-active: rgba(148,149,152,.2);
23
+ --color-focus: #1A44EA;
24
+ --color-disabled: #949598;
25
+ --color-skeleton: #f7f7f7;
26
+
27
+ --color-primary-light: #010205;
28
+ --color-base-light: #FFF;
29
+ --color-surface-light: #EEEFF2;
30
+ --color-shading-light: rgba(1,2,5,.67);
31
+ --color-frosted-light: hsl(240 4% 85%/35%);
32
+ --color-contrast-low-light: #D8D8DB;
33
+ --color-contrast-medium-light: #6B6D70;
34
+ --color-contrast-high-light: #535457;
35
+ --color-success-light: #197E10;
36
+ --color-success-soft-light: #E4FFEC;
37
+ --color-warning-light: #F3BE00;
38
+ --color-warning-soft-light: #FFF4D2;
39
+ --color-error-light: #CC1922;
40
+ --color-error-soft-light: #FFE2E4;
41
+ --color-info-light: #2762EC;
42
+ --color-info-soft-light: #D3E1FF;
43
+ --color-hover-light: rgba(148,149,152,.18);
44
+ --color-active-light: rgba(148,149,152,.2);
45
+ --color-focus-light: #1A44EA;
46
+ --color-disabled-light: #949598;
47
+ --color-skeleton-light: #f7f7f7;
48
+
49
+ --color-primary-dark: #FBFCFF;
50
+ --color-base-dark: #0E0E12;
51
+ --color-surface-dark: #212225;
52
+ --color-shading-dark: rgba(38,38,41,.67);
53
+ --color-frosted-dark: hsl(240 3% 26%/35%);
54
+ --color-contrast-low-dark: #404044;
55
+ --color-contrast-medium-dark: #88898C;
56
+ --color-contrast-high-dark: #AFB0B3;
57
+ --color-success-dark: #09D087;
58
+ --color-success-soft-dark: #003320;
59
+ --color-warning-dark: #F7CB47;
60
+ --color-warning-soft-dark: #362B0A;
61
+ --color-error-dark: #FC4040;
62
+ --color-error-soft-dark: #3A0F0F;
63
+ --color-info-dark: #178BFF;
64
+ --color-info-soft-dark: #04294E;
65
+ --color-hover-dark: rgba(148,149,152,.18);
66
+ --color-active-dark: rgba(126,127,130,.2);
67
+ --color-focus-dark: #1A44EA;
68
+ --color-disabled-dark: #7E7F82;
69
+ --color-skeleton-dark: #1a1b1e;
70
+
71
+ /* Typography */
72
+ --font-porsche-next: 'Porsche Next','Arial Narrow',Arial,'Heiti SC',SimHei,sans-serif;
73
+
74
+ --font-weight-normal: 400;
75
+ --font-weight-semibold: 600;
76
+ --font-weight-bold: 700;
77
+
78
+ --leading-normal: calc(6px + 2.125ex);
79
+
80
+ --text-2xs: .75rem;
81
+ --text-2xs--line-height: calc(6px + 2.125ex);
82
+ --text-xs: clamp(0.81rem, 0.23vw + 0.77rem, 0.88rem);
83
+ --text-xs--line-height: calc(6px + 2.125ex);
84
+ --text-base: 1rem;
85
+ --text-base--line-height: calc(6px + 2.125ex);
86
+ --text-sm: 1rem;
87
+ --text-sm--line-height: calc(6px + 2.125ex);
88
+ --text-md: clamp(1.13rem, 0.21vw + 1.08rem, 1.33rem);
89
+ --text-md--line-height: calc(6px + 2.125ex);
90
+ --text-lg: clamp(1.27rem, 0.51vw + 1.16rem, 1.78rem);
91
+ --text-lg--line-height: calc(6px + 2.125ex);
92
+ --text-xl: clamp(1.42rem, 0.94vw + 1.23rem, 2.37rem);
93
+ --text-xl--line-height: calc(6px + 2.125ex);
94
+ --text-2xl: clamp(1.6rem, 1.56vw + 1.29rem, 3.16rem);
95
+ --text-2xl--line-height: calc(6px + 2.125ex);
96
+
97
+ /* Breakpoint */
98
+ --breakpoint-xs: 480px;
99
+ --breakpoint-sm: 760px;
100
+ --breakpoint-md: 1000px;
101
+ --breakpoint-lg: 1300px;
102
+ --breakpoint-xl: 1760px;
103
+ --breakpoint-2xl: 1920px;
104
+
105
+ /* Spacing */
106
+ --spacing: .25rem;
107
+
108
+ --spacing-fluid-xs: clamp(4px, 0.25vw + 3px, 8px);
109
+ --spacing-fluid-sm: clamp(8px, 0.5vw + 6px, 16px);
110
+ --spacing-fluid-md: clamp(16px, 1.25vw + 12px, 36px);
111
+ --spacing-fluid-lg: clamp(32px, 2.75vw + 23px, 76px);
112
+ --spacing-fluid-xl: clamp(48px, 3vw + 38px, 96px);
113
+ --spacing-fluid-2xl: clamp(80px, 7.5vw + 56px, 200px);
114
+
115
+ --spacing-static-xs: 4px;
116
+ --spacing-static-sm: 8px;
117
+ --spacing-static-md: 16px;
118
+ --spacing-static-lg: 32px;
119
+ --spacing-static-xl: 48px;
120
+ --spacing-static-2xl: 80px;
121
+
122
+ /* Border */
123
+ --radius-sm: 4px;
124
+ --radius-md: 8px;
125
+ --radius-lg: 12px;
126
+
127
+ --default-border-width: 2px;
128
+ --border-width-regular: 2px;
129
+ --border-width-thin: 1px;
130
+
131
+ /* Blur */
132
+ --blur-frosted: 32px;
133
+
134
+ /* Shadow */
135
+ --shadow-low: 0px 3px 8px rgba(0,0,0,.16);
136
+ --shadow-medium: 0px 4px 16px rgba(0,0,0,.16);
137
+ --shadow-high: 0px 8px 40px rgba(0,0,0,.16);
138
+
139
+ /* Outline */
140
+ --default-outline-width: 2px;
141
+
142
+ /* Motion */
143
+ --default-transition-timing-function: cubic-bezier(.25,.1,.25,1);
144
+ --ease-in-out: cubic-bezier(.25,.1,.25,1);
145
+ --ease-in: cubic-bezier(0,0,.2,1);
146
+ --ease-out: cubic-bezier(.4,0,.5,1);
147
+
148
+ --default-transition-duration: .25s;
149
+ --transition-duration-short: .25s;
150
+ --transition-duration-moderate: .4s;
151
+ --transition-duration-long: .6s;
152
+ --transition-duration-very-long: 1.2s;
153
+
154
+ /* Animation */
155
+ --animate-skeleton: skeleton var(--transition-duration-long) var(--ease-in-out) infinite;
156
+
157
+ @keyframes skeleton {
158
+ from {
159
+ background-position-x: 100%;
160
+ }
161
+ to {
162
+ background-position-x: -100%;
163
+ }
164
+ }
165
+ }
166
+
167
+ @layer theme {
168
+ .light {
169
+ --color-primary: #010205;
170
+ --color-base: #FFF;
171
+ --color-surface: #EEEFF2;
172
+ --color-shading: rgba(1,2,5,.67);
173
+ --color-frosted: hsl(240 4% 85%/35%);
174
+ --color-contrast-low: #D8D8DB;
175
+ --color-contrast-medium: #6B6D70;
176
+ --color-contrast-high: #535457;
177
+ --color-success: #197E10;
178
+ --color-success-soft: #E4FFEC;
179
+ --color-warning: #F3BE00;
180
+ --color-warning-soft: #FFF4D2;
181
+ --color-error: #CC1922;
182
+ --color-error-soft: #FFE2E4;
183
+ --color-info: #2762EC;
184
+ --color-info-soft: #D3E1FF;
185
+ --color-hover: rgba(148,149,152,.18);
186
+ --color-active: rgba(148,149,152,.2);
187
+ --color-focus: #1A44EA;
188
+ --color-disabled: #949598;
189
+ --color-skeleton: #f7f7f7;
190
+ }
191
+
192
+ .dark {
193
+ --color-primary: #FBFCFF;
194
+ --color-base: #0E0E12;
195
+ --color-surface: #212225;
196
+ --color-shading: rgba(38,38,41,.67);
197
+ --color-frosted: hsl(240 3% 26%/35%);
198
+ --color-contrast-low: #404044;
199
+ --color-contrast-medium: #88898C;
200
+ --color-contrast-high: #AFB0B3;
201
+ --color-success: #09D087;
202
+ --color-success-soft: #003320;
203
+ --color-warning: #F7CB47;
204
+ --color-warning-soft: #362B0A;
205
+ --color-error: #FC4040;
206
+ --color-error-soft: #3A0F0F;
207
+ --color-info: #178BFF;
208
+ --color-info-soft: #04294E;
209
+ --color-hover: rgba(148,149,152,.18);
210
+ --color-active: rgba(126,127,130,.2);
211
+ --color-focus: #1A44EA;
212
+ --color-disabled: #7E7F82;
213
+ --color-skeleton: #1a1b1e;
214
+ }
215
+
216
+ .auto {
217
+ @media (prefers-color-scheme: dark) {
218
+ --color-primary: #FBFCFF;
219
+ --color-base: #0E0E12;
220
+ --color-surface: #212225;
221
+ --color-shading: rgba(38,38,41,.67);
222
+ --color-frosted: hsl(240 3% 26%/35%);
223
+ --color-contrast-low: #404044;
224
+ --color-contrast-medium: #88898C;
225
+ --color-contrast-high: #AFB0B3;
226
+ --color-success: #09D087;
227
+ --color-success-soft: #003320;
228
+ --color-warning: #F7CB47;
229
+ --color-warning-soft: #362B0A;
230
+ --color-error: #FC4040;
231
+ --color-error-soft: #3A0F0F;
232
+ --color-info: #178BFF;
233
+ --color-info-soft: #04294E;
234
+ --color-hover: rgba(148,149,152,.18);
235
+ --color-active: rgba(126,127,130,.2);
236
+ --color-focus: #1A44EA;
237
+ --color-disabled: #7E7F82;
238
+ --color-skeleton: #1a1b1e;
239
+ }
240
+ }
241
+ }
242
+
243
+ /* Gradient */
244
+ @utility bg-fade-to-t {
245
+ @apply bg-linear-[to_top,hsla(0,0%,0%,.8)_0%,hsla(0,0%,0%,.8)_8.1%,hsla(0,0%,0%,.8)_15.5%,hsla(0,0%,0%,.8)_22.5%,hsla(0,0%,0%,.78)_29%,hsla(0,0%,0%,.73)_35.3%,hsla(0,0%,0%,.67)_41.2%,hsla(0,0%,0%,.6)_47.1%,hsla(0,0%,0%,.52)_52.9%,hsla(0,0%,0%,.44)_58.8%,hsla(0,0%,0%,.33)_64.7%,hsla(0,0%,0%,.22)_71%,hsla(0,0%,0%,.12)_77.5%,hsla(0,0%,0%,.05)_84.5%,hsla(0,0%,0%,.011)_91.9%,hsla(0,0%,0%,0)_100%];
246
+ }
247
+
248
+ @utility bg-fade-to-r {
249
+ @apply bg-linear-[to_right,hsla(0,0%,0%,.8)_0%,hsla(0,0%,0%,.8)_8.1%,hsla(0,0%,0%,.8)_15.5%,hsla(0,0%,0%,.8)_22.5%,hsla(0,0%,0%,.78)_29%,hsla(0,0%,0%,.73)_35.3%,hsla(0,0%,0%,.67)_41.2%,hsla(0,0%,0%,.6)_47.1%,hsla(0,0%,0%,.52)_52.9%,hsla(0,0%,0%,.44)_58.8%,hsla(0,0%,0%,.33)_64.7%,hsla(0,0%,0%,.22)_71%,hsla(0,0%,0%,.12)_77.5%,hsla(0,0%,0%,.05)_84.5%,hsla(0,0%,0%,.011)_91.9%,hsla(0,0%,0%,0)_100%];
250
+ }
251
+
252
+ @utility bg-fade-to-b {
253
+ @apply bg-linear-[to_bottom,hsla(0,0%,0%,.8)_0%,hsla(0,0%,0%,.8)_8.1%,hsla(0,0%,0%,.8)_15.5%,hsla(0,0%,0%,.8)_22.5%,hsla(0,0%,0%,.78)_29%,hsla(0,0%,0%,.73)_35.3%,hsla(0,0%,0%,.67)_41.2%,hsla(0,0%,0%,.6)_47.1%,hsla(0,0%,0%,.52)_52.9%,hsla(0,0%,0%,.44)_58.8%,hsla(0,0%,0%,.33)_64.7%,hsla(0,0%,0%,.22)_71%,hsla(0,0%,0%,.12)_77.5%,hsla(0,0%,0%,.05)_84.5%,hsla(0,0%,0%,.011)_91.9%,hsla(0,0%,0%,0)_100%];
254
+ }
255
+
256
+ @utility bg-fade-to-l {
257
+ @apply bg-linear-[to_left,hsla(0,0%,0%,.8)_0%,hsla(0,0%,0%,.8)_8.1%,hsla(0,0%,0%,.8)_15.5%,hsla(0,0%,0%,.8)_22.5%,hsla(0,0%,0%,.78)_29%,hsla(0,0%,0%,.73)_35.3%,hsla(0,0%,0%,.67)_41.2%,hsla(0,0%,0%,.6)_47.1%,hsla(0,0%,0%,.52)_52.9%,hsla(0,0%,0%,.44)_58.8%,hsla(0,0%,0%,.33)_64.7%,hsla(0,0%,0%,.22)_71%,hsla(0,0%,0%,.12)_77.5%,hsla(0,0%,0%,.05)_84.5%,hsla(0,0%,0%,.011)_91.9%,hsla(0,0%,0%,0)_100%];
258
+ }
259
+
260
+ /* Grid */
261
+ @utility grid-template {
262
+ @apply
263
+ [--pds-internal-grid-safe-zone:max(22px,10.625vw-12px)]
264
+ [--_pds-grid-col:minmax(0,var(--pds-internal-grid-outer-column,calc(var(--pds-internal-grid-safe-zone)-var(--spacing-fluid-md))))]
265
+ grid
266
+ grid-cols-[[full-start]_var(--_pds-grid-col)_[wide-start_extended-start_basic-start_narrow-start]_repeat(6,minmax(0,1fr))_[narrow-end_basic-end_extended-end_wide-end]_var(--_pds-grid-col)_[full-end]]
267
+ gap-(--spacing-fluid-md)
268
+ min-w-[var(--pds-internal-grid-width-min,320px)]
269
+ max-w-[var(--pds-internal-grid-width-max,2560px)]
270
+ box-content
271
+ mx-(--pds-internal-grid-margin,0)
272
+ px-[calc(50%-var(--pds-internal-grid-margin,0px)-2560px/2)]
273
+ sm:[--pds-internal-grid-safe-zone:calc(5vw-16px)]
274
+ sm:grid-cols-[[full-start]_var(--_pds-grid-col)_[wide-start]_minmax(0,1fr)_[extended-start]_minmax(0,1fr)_[basic-start]_repeat(2,minmax(0,1fr))_[narrow-start]_repeat(8,minmax(0,1fr))_[narrow-end]_repeat(2,minmax(0,1fr))_[basic-end]_minmax(0,1fr)_[extended-end]_minmax(0,1fr)_[wide-end]_var(--_pds-grid-col)[full-end]]
275
+ 2xl:[--pds-internal-grid-safe-zone:min(50vw-880px,400px)];
276
+ }
277
+
278
+ /* Grid: Area Narrow */
279
+ @utility col-narrow {
280
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:4] col-[narrow];
281
+ }
282
+
283
+ @utility col-start-narrow {
284
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:4] col-start-[narrow-start];
285
+ }
286
+
287
+ @utility col-end-narrow {
288
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:4] col-end-[narrow-end];
289
+ }
290
+
291
+ /* Grid: Area Basic */
292
+ @utility col-basic {
293
+ @apply [--_pds-grid-one-half:3] [--_pds-grid-one-third:2] [--_pds-grid-two-thirds:4] sm:[--_pds-grid-one-half:6] sm:[--_pds-grid-one-third:4] sm:[--_pds-grid-two-thirds:8] col-[basic];
294
+ }
295
+
296
+ @utility col-start-basic {
297
+ @apply [--_pds-grid-one-half:3] [--_pds-grid-one-third:2] [--_pds-grid-two-thirds:4] sm:[--_pds-grid-one-half:6] sm:[--_pds-grid-one-third:4] sm:[--_pds-grid-two-thirds:8] col-start-[basic-start];
298
+ }
299
+
300
+ @utility col-end-basic {
301
+ @apply [--_pds-grid-one-half:3] [--_pds-grid-one-third:2] [--_pds-grid-two-thirds:4] sm:[--_pds-grid-one-half:6] sm:[--_pds-grid-one-third:4] sm:[--_pds-grid-two-thirds:8] col-end-[basic-end];
302
+ }
303
+
304
+ /* Grid: Area Extended */
305
+ @utility col-extended {
306
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:7] col-[extended];
307
+ }
308
+
309
+ @utility col-start-extended {
310
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:7] col-start-[extended-start];
311
+ }
312
+
313
+ @utility col-end-extended {
314
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:7] col-end-[extended-end];
315
+ }
316
+
317
+ /* Grid: Area Wide */
318
+ @utility col-wide {
319
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:8] col-[wide];
320
+ }
321
+
322
+ @utility col-start-wide {
323
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:8] col-start-[wide-start];
324
+ }
325
+
326
+ @utility col-end-wide {
327
+ @apply [--_pds-grid-one-half:3] sm:[--_pds-grid-one-half:8] col-end-[wide-end];
328
+ }
329
+
330
+ /* Grid: Area Full */
331
+ @utility col-full {
332
+ @apply col-[full];
333
+ }
334
+
335
+ @utility col-start-full {
336
+ @apply col-start-[full-start];
337
+ }
338
+
339
+ @utility col-end-full {
340
+ @apply col-end-[full-end];
341
+ }
342
+
343
+ /* Grid: Division */
344
+ @utility col-span-one-half {
345
+ @apply col-span-(--_pds-grid-one-half,1);
346
+ }
347
+
348
+ @utility col-span-one-third {
349
+ @apply col-span-(--_pds-grid-one-third,1);
350
+ }
351
+
352
+ @utility col-span-two-thirds {
353
+ @apply col-span-(--_pds-grid-two-thirds,1);
354
+ }
355
+
356
+ /* Skeleton */
357
+ @utility skeleton {
358
+ @apply animate-skeleton;
359
+ @apply block rounded-sm;
360
+ @apply bg-surface bg-[linear-gradient(to_right,transparent_0%,var(--color-skeleton)_20%,transparent_50%)] bg-position-[0_0] bg-size-[200%_100%];
361
+ }
362
+
363
+ /* Typography: Text */
364
+ @utility prose-text-2xs {
365
+ @apply font-porsche-next not-italic font-normal text-2xs text-primary;
366
+ }
367
+ @utility prose-text-xs {
368
+ @apply font-porsche-next not-italic font-normal text-xs text-primary;
369
+ }
370
+ @utility prose-text-sm {
371
+ @apply font-porsche-next not-italic font-normal text-sm text-primary;
372
+ }
373
+ @utility prose-text-md {
374
+ @apply font-porsche-next not-italic font-normal text-md text-primary;
375
+ }
376
+ @utility prose-text-lg {
377
+ @apply font-porsche-next not-italic font-normal text-lg text-primary;
378
+ }
379
+ @utility prose-text-xl {
380
+ @apply font-porsche-next not-italic font-normal text-xl text-primary;
381
+ }
382
+
383
+ /* Typography: Heading */
384
+ @utility prose-heading-sm {
385
+ @apply font-porsche-next not-italic font-semibold text-sm text-primary;
386
+ }
387
+ @utility prose-heading-md {
388
+ @apply font-porsche-next not-italic font-semibold text-md text-primary;
389
+ }
390
+ @utility prose-heading-lg {
391
+ @apply font-porsche-next not-italic font-semibold text-lg text-primary;
392
+ }
393
+ @utility prose-heading-xl {
394
+ @apply font-porsche-next not-italic font-semibold text-xl text-primary;
395
+ }
396
+ @utility prose-heading-2xl {
397
+ @apply font-porsche-next not-italic font-semibold text-2xl text-primary;
398
+ }
399
+
400
+ /* Typography: Display */
401
+ @utility prose-display-sm {
402
+ @apply font-porsche-next not-italic font-normal leading-normal text-primary text-[clamp(1.8rem,2.41vw+1.32rem,4.21rem)];
403
+ }
404
+ @utility prose-display-md {
405
+ @apply font-porsche-next not-italic font-normal leading-normal text-primary text-[clamp(2.03rem,3.58vw+1.31rem,5.61rem)];
406
+ }
407
+ @utility prose-display-lg {
408
+ @apply font-porsche-next not-italic font-normal leading-normal text-primary text-[clamp(2.28rem,5.2vw+1.24rem,7.48rem)];
409
+ }