@porsche-design-system/components-react 3.29.0-rc.3 → 3.29.0-rc.4

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 (148) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/lib/components/fieldset.wrapper.cjs +3 -3
  3. package/cjs/lib/components/flag.wrapper.cjs +26 -0
  4. package/cjs/lib/components/input-date.wrapper.cjs +29 -0
  5. package/cjs/lib/components/input-tel.wrapper.cjs +29 -0
  6. package/cjs/lib/components/input-time.wrapper.cjs +29 -0
  7. package/cjs/lib/components/input-url.wrapper.cjs +29 -0
  8. package/cjs/lib/components/multi-select.wrapper.cjs +3 -3
  9. package/cjs/lib/components/scroller.wrapper.cjs +1 -1
  10. package/cjs/lib/components/tabs-bar.wrapper.cjs +1 -1
  11. package/cjs/lib/components/tabs.wrapper.cjs +1 -1
  12. package/cjs/public-api.cjs +10 -0
  13. package/esm/lib/components/fieldset.wrapper.d.ts +9 -1
  14. package/esm/lib/components/fieldset.wrapper.mjs +3 -3
  15. package/esm/lib/components/flag.wrapper.d.ts +30 -0
  16. package/esm/lib/components/flag.wrapper.mjs +24 -0
  17. package/esm/lib/components/index.d.ts +5 -0
  18. package/esm/lib/components/input-date.wrapper.d.ts +176 -0
  19. package/esm/lib/components/input-date.wrapper.mjs +27 -0
  20. package/esm/lib/components/input-email.wrapper.d.ts +2 -2
  21. package/esm/lib/components/input-number.wrapper.d.ts +2 -2
  22. package/esm/lib/components/input-password.wrapper.d.ts +2 -2
  23. package/esm/lib/components/input-tel.wrapper.d.ts +192 -0
  24. package/esm/lib/components/input-tel.wrapper.mjs +27 -0
  25. package/esm/lib/components/input-time.wrapper.d.ts +176 -0
  26. package/esm/lib/components/input-time.wrapper.mjs +27 -0
  27. package/esm/lib/components/input-url.wrapper.d.ts +192 -0
  28. package/esm/lib/components/input-url.wrapper.mjs +27 -0
  29. package/esm/lib/components/multi-select.wrapper.d.ts +8 -0
  30. package/esm/lib/components/multi-select.wrapper.mjs +3 -3
  31. package/esm/lib/components/scroller.wrapper.d.ts +4 -4
  32. package/esm/lib/components/scroller.wrapper.mjs +1 -1
  33. package/esm/lib/components/tabs-bar.wrapper.d.ts +4 -4
  34. package/esm/lib/components/tabs-bar.wrapper.mjs +1 -1
  35. package/esm/lib/components/tabs.wrapper.d.ts +2 -2
  36. package/esm/lib/components/tabs.wrapper.mjs +1 -1
  37. package/esm/lib/types.d.ts +149 -14
  38. package/esm/public-api.mjs +5 -0
  39. package/package.json +2 -2
  40. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +532 -515
  41. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +46 -35
  42. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/fieldset.wrapper.cjs +4 -4
  43. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/flag.wrapper.cjs +36 -0
  44. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-date.wrapper.cjs +40 -0
  45. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-tel.wrapper.cjs +40 -0
  46. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-time.wrapper.cjs +40 -0
  47. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-url.wrapper.cjs +40 -0
  48. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select.wrapper.cjs +4 -4
  49. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/scroller.wrapper.cjs +1 -1
  50. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/tabs-bar.wrapper.cjs +1 -1
  51. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/tabs.wrapper.cjs +1 -1
  52. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.cjs +3 -2
  53. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.cjs +17 -0
  54. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.cjs +1 -1
  55. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +44 -0
  56. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.cjs +43 -0
  57. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +44 -0
  58. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.cjs +43 -0
  59. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +1 -1
  60. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +15 -6
  61. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.cjs +9 -0
  62. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.cjs +1 -5
  63. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +8 -5
  64. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +1 -1
  65. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/public-api.cjs +10 -0
  66. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +492 -481
  67. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +42 -34
  68. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/fieldset.wrapper.mjs +4 -4
  69. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/flag.wrapper.mjs +34 -0
  70. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-date.wrapper.mjs +38 -0
  71. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-tel.wrapper.mjs +38 -0
  72. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-time.wrapper.mjs +38 -0
  73. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-url.wrapper.mjs +38 -0
  74. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/multi-select.wrapper.mjs +4 -4
  75. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/scroller.wrapper.mjs +1 -1
  76. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/tabs-bar.wrapper.mjs +1 -1
  77. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/tabs.wrapper.mjs +1 -1
  78. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +2 -2
  79. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +2 -2
  80. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-group.mjs +2 -2
  81. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.mjs +2 -2
  82. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +2 -2
  83. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +2 -2
  84. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +2 -2
  85. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +2 -2
  86. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.mjs +2 -2
  87. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +2 -2
  88. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/content-wrapper.mjs +2 -2
  89. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.mjs +2 -2
  90. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.mjs +2 -2
  91. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.mjs +2 -2
  92. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-item.mjs +2 -2
  93. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-link.mjs +2 -2
  94. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.mjs +2 -2
  95. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset-wrapper.mjs +2 -2
  96. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.mjs +5 -4
  97. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.mjs +15 -0
  98. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex-item.mjs +2 -2
  99. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex.mjs +2 -2
  100. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +2 -2
  101. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid-item.mjs +2 -2
  102. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid.mjs +2 -2
  103. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.mjs +2 -2
  104. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/headline.mjs +2 -2
  105. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.mjs +2 -2
  106. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.mjs +2 -2
  107. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.mjs +1 -1
  108. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +42 -0
  109. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.mjs +2 -2
  110. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +2 -2
  111. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +2 -2
  112. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +2 -2
  113. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.mjs +41 -0
  114. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +2 -2
  115. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +42 -0
  116. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.mjs +41 -0
  117. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +1 -1
  118. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +18 -9
  119. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.mjs +7 -0
  120. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.mjs +2 -2
  121. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +1 -5
  122. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +9 -6
  123. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +1 -1
  124. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/public-api.mjs +5 -0
  125. package/ssr/esm/lib/components/fieldset.wrapper.d.ts +9 -1
  126. package/ssr/esm/lib/components/flag.wrapper.d.ts +30 -0
  127. package/ssr/esm/lib/components/index.d.ts +5 -0
  128. package/ssr/esm/lib/components/input-date.wrapper.d.ts +176 -0
  129. package/ssr/esm/lib/components/input-email.wrapper.d.ts +2 -2
  130. package/ssr/esm/lib/components/input-number.wrapper.d.ts +2 -2
  131. package/ssr/esm/lib/components/input-password.wrapper.d.ts +2 -2
  132. package/ssr/esm/lib/components/input-tel.wrapper.d.ts +192 -0
  133. package/ssr/esm/lib/components/input-time.wrapper.d.ts +176 -0
  134. package/ssr/esm/lib/components/input-url.wrapper.d.ts +192 -0
  135. package/ssr/esm/lib/components/multi-select.wrapper.d.ts +8 -0
  136. package/ssr/esm/lib/components/scroller.wrapper.d.ts +4 -4
  137. package/ssr/esm/lib/components/tabs-bar.wrapper.d.ts +4 -4
  138. package/ssr/esm/lib/components/tabs.wrapper.d.ts +2 -2
  139. package/ssr/esm/lib/dsr-components/flag.d.ts +5 -0
  140. package/ssr/esm/lib/dsr-components/input-base.d.ts +2 -2
  141. package/ssr/esm/lib/dsr-components/input-date.d.ts +19 -0
  142. package/ssr/esm/lib/dsr-components/input-tel.d.ts +19 -0
  143. package/ssr/esm/lib/dsr-components/input-time.d.ts +19 -0
  144. package/ssr/esm/lib/dsr-components/input-url.d.ts +19 -0
  145. package/ssr/esm/lib/dsr-components/multi-select.d.ts +5 -1
  146. package/ssr/esm/lib/dsr-components/no-results-option.d.ts +2 -0
  147. package/ssr/esm/lib/dsr-components/select.d.ts +4 -1
  148. package/ssr/esm/lib/types.d.ts +149 -14
package/CHANGELOG.md CHANGED
@@ -14,6 +14,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [3.29.0-rc.4] - 2025-08-15
18
+
19
+ ### Added
20
+
21
+ - `Flag`: ([#3964](https://github.com/porsche-design-system/porsche-design-system/pull/3964))
22
+ - `Input Url`: ([#3949](https://github.com/porsche-design-system/porsche-design-system/pull/3949))
23
+ - `Multi Select`: `compact` prop to enable a smaller, space-saving version for compact layouts
24
+ ([#3953](https://github.com/porsche-design-system/porsche-design-system/pull/3953))
25
+ - `Fieldset`: ARIA role `radiogroup` is now supported via `aria` prop. Internal ARIA attributes for `aria-invalid` and
26
+ `aria-required`. ([#3957](https://github.com/porsche-design-system/porsche-design-system/pull/3957))
27
+ - `Input Date`, `Input Time`: ([#3954](https://github.com/porsche-design-system/porsche-design-system/pull/3954))
28
+
29
+ ### Changed
30
+
31
+ - `Multi Select`, `Select`: `background` is now transparent to be aligned with other form fields
32
+ ([#3953](https://github.com/porsche-design-system/porsche-design-system/pull/3953))
33
+ - `Multi Select`, `Select`: improved a11y and highlight of options
34
+ ([#3953](https://github.com/porsche-design-system/porsche-design-system/pull/3953))
35
+ - `Multi Select`: aligned filter and keyboard behavior with `Select`
36
+ ([#3943](https://github.com/porsche-design-system/porsche-design-system/pull/3943))
37
+ - `Scroller`: Deprecation of prop `gradientColor` because gradient is now managed internally and adapts to all themes
38
+ and background colors automatically.
39
+ ([#3962](https://github.com/porsche-design-system/porsche-design-system/pull/3962))
40
+
17
41
  ## [3.29.0-rc.3] - 2025-07-29
18
42
 
19
43
  ### Fixed
@@ -38,6 +62,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
38
62
  - `Input Text`: `counter` prop functions independently of `max-length`, allowing character count display even when no
39
63
  limit is set ([#3901](https://github.com/porsche-design-system/porsche-design-system/pull/3901))
40
64
  - `Input Email`: ([#3927](https://github.com/porsche-design-system/porsche-design-system/pull/3927))
65
+ - `Input Tel`: ([#3928](https://github.com/porsche-design-system/porsche-design-system/pull/3928))
41
66
 
42
67
  ### Changed
43
68
 
@@ -6,13 +6,13 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PFieldset = /*#__PURE__*/ react.forwardRef(({ label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
9
+ const PFieldset = /*#__PURE__*/ react.forwardRef(({ aria, label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  const WebComponentTag = hooks.usePrefix('p-fieldset');
12
- const propsToSync = [label, labelSize, message, required, state, theme || hooks.useTheme()];
12
+ const propsToSync = [aria, label, labelSize, message, required, state, theme || hooks.useTheme()];
13
13
  hooks.useBrowserLayoutEffect(() => {
14
14
  const { current } = elementRef;
15
- ['label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
+ ['aria', 'label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
16
  }, propsToSync);
17
17
  const props = {
18
18
  ...rest,
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+ var hooks = require('../../hooks.cjs');
7
+ var utils = require('../../utils.cjs');
8
+
9
+ const PFlag = /*#__PURE__*/ react.forwardRef(({ aria, name = 'de', size = 'small', className, ...rest }, ref) => {
10
+ const elementRef = react.useRef(undefined);
11
+ const WebComponentTag = hooks.usePrefix('p-flag');
12
+ const propsToSync = [aria, name, size];
13
+ hooks.useBrowserLayoutEffect(() => {
14
+ const { current } = elementRef;
15
+ ['aria', 'name', 'size'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
+ }, propsToSync);
17
+ const props = {
18
+ ...rest,
19
+ class: hooks.useMergedClass(elementRef, className),
20
+ ref: utils.syncRef(elementRef, ref)
21
+ };
22
+ // @ts-ignore
23
+ return jsxRuntime.jsx(WebComponentTag, { ...props });
24
+ });
25
+
26
+ exports.PFlag = PFlag;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+ var hooks = require('../../hooks.cjs');
7
+ var utils = require('../../utils.cjs');
8
+
9
+ const PInputDate = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, label = '', loading = false, max, message = '', min, name, onBlur, onChange, onInput, readOnly = false, required = false, state = 'none', step = 1, theme, value = '', className, ...rest }, ref) => {
10
+ const elementRef = react.useRef(undefined);
11
+ hooks.useEventCallback(elementRef, 'blur', onBlur);
12
+ hooks.useEventCallback(elementRef, 'change', onChange);
13
+ hooks.useEventCallback(elementRef, 'input', onInput);
14
+ const WebComponentTag = hooks.usePrefix('p-input-date');
15
+ const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, label, loading, max, message, min, name, readOnly, required, state, step, theme || hooks.useTheme(), value];
16
+ hooks.useBrowserLayoutEffect(() => {
17
+ const { current } = elementRef;
18
+ ['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'label', 'loading', 'max', 'message', 'min', 'name', 'readOnly', 'required', 'state', 'step', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
19
+ }, propsToSync);
20
+ const props = {
21
+ ...rest,
22
+ class: hooks.useMergedClass(elementRef, className),
23
+ ref: utils.syncRef(elementRef, ref)
24
+ };
25
+ // @ts-ignore
26
+ return jsxRuntime.jsx(WebComponentTag, { ...props });
27
+ });
28
+
29
+ exports.PInputDate = PInputDate;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+ var hooks = require('../../hooks.cjs');
7
+ var utils = require('../../utils.cjs');
8
+
9
+ const PInputTel = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, indicator = false, label = '', loading = false, maxLength, message = '', minLength, name, onBlur, onChange, onInput, pattern, placeholder = '', readOnly = false, required = false, state = 'none', theme, value = '', className, ...rest }, ref) => {
10
+ const elementRef = react.useRef(undefined);
11
+ hooks.useEventCallback(elementRef, 'blur', onBlur);
12
+ hooks.useEventCallback(elementRef, 'change', onChange);
13
+ hooks.useEventCallback(elementRef, 'input', onInput);
14
+ const WebComponentTag = hooks.usePrefix('p-input-tel');
15
+ const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, indicator, label, loading, maxLength, message, minLength, name, pattern, placeholder, readOnly, required, state, theme || hooks.useTheme(), value];
16
+ hooks.useBrowserLayoutEffect(() => {
17
+ const { current } = elementRef;
18
+ ['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'indicator', 'label', 'loading', 'maxLength', 'message', 'minLength', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
19
+ }, propsToSync);
20
+ const props = {
21
+ ...rest,
22
+ class: hooks.useMergedClass(elementRef, className),
23
+ ref: utils.syncRef(elementRef, ref)
24
+ };
25
+ // @ts-ignore
26
+ return jsxRuntime.jsx(WebComponentTag, { ...props });
27
+ });
28
+
29
+ exports.PInputTel = PInputTel;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+ var hooks = require('../../hooks.cjs');
7
+ var utils = require('../../utils.cjs');
8
+
9
+ const PInputTime = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, label = '', loading = false, max, message = '', min, name, onBlur, onChange, onInput, readOnly = false, required = false, state = 'none', step = 60, theme, value = '', className, ...rest }, ref) => {
10
+ const elementRef = react.useRef(undefined);
11
+ hooks.useEventCallback(elementRef, 'blur', onBlur);
12
+ hooks.useEventCallback(elementRef, 'change', onChange);
13
+ hooks.useEventCallback(elementRef, 'input', onInput);
14
+ const WebComponentTag = hooks.usePrefix('p-input-time');
15
+ const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, label, loading, max, message, min, name, readOnly, required, state, step, theme || hooks.useTheme(), value];
16
+ hooks.useBrowserLayoutEffect(() => {
17
+ const { current } = elementRef;
18
+ ['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'label', 'loading', 'max', 'message', 'min', 'name', 'readOnly', 'required', 'state', 'step', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
19
+ }, propsToSync);
20
+ const props = {
21
+ ...rest,
22
+ class: hooks.useMergedClass(elementRef, className),
23
+ ref: utils.syncRef(elementRef, ref)
24
+ };
25
+ // @ts-ignore
26
+ return jsxRuntime.jsx(WebComponentTag, { ...props });
27
+ });
28
+
29
+ exports.PInputTime = PInputTime;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+ var hooks = require('../../hooks.cjs');
7
+ var utils = require('../../utils.cjs');
8
+
9
+ const PInputUrl = /*#__PURE__*/ react.forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, indicator = false, label = '', loading = false, maxLength, message = '', minLength, name, onBlur, onChange, onInput, pattern, placeholder = '', readOnly = false, required = false, state = 'none', theme, value = '', className, ...rest }, ref) => {
10
+ const elementRef = react.useRef(undefined);
11
+ hooks.useEventCallback(elementRef, 'blur', onBlur);
12
+ hooks.useEventCallback(elementRef, 'change', onChange);
13
+ hooks.useEventCallback(elementRef, 'input', onInput);
14
+ const WebComponentTag = hooks.usePrefix('p-input-url');
15
+ const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, indicator, label, loading, maxLength, message, minLength, name, pattern, placeholder, readOnly, required, state, theme || hooks.useTheme(), value];
16
+ hooks.useBrowserLayoutEffect(() => {
17
+ const { current } = elementRef;
18
+ ['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'indicator', 'label', 'loading', 'maxLength', 'message', 'minLength', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
19
+ }, propsToSync);
20
+ const props = {
21
+ ...rest,
22
+ class: hooks.useMergedClass(elementRef, className),
23
+ ref: utils.syncRef(elementRef, ref)
24
+ };
25
+ // @ts-ignore
26
+ return jsxRuntime.jsx(WebComponentTag, { ...props });
27
+ });
28
+
29
+ exports.PInputUrl = PInputUrl;
@@ -6,14 +6,14 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PMultiSelect = /*#__PURE__*/ react.forwardRef(({ description = '', disabled = false, dropdownDirection = 'auto', form, hideLabel = false, label = '', message = '', name, onUpdate, required = false, state = 'none', theme, value = [], className, ...rest }, ref) => {
9
+ const PMultiSelect = /*#__PURE__*/ react.forwardRef(({ compact = false, description = '', disabled = false, dropdownDirection = 'auto', form, hideLabel = false, label = '', message = '', name, onUpdate, required = false, state = 'none', theme, value = [], className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  hooks.useEventCallback(elementRef, 'update', onUpdate);
12
12
  const WebComponentTag = hooks.usePrefix('p-multi-select');
13
- const propsToSync = [description, disabled, dropdownDirection, form, hideLabel, label, message, name, required, state, theme || hooks.useTheme(), value];
13
+ const propsToSync = [compact, description, disabled, dropdownDirection, form, hideLabel, label, message, name, required, state, theme || hooks.useTheme(), value];
14
14
  hooks.useBrowserLayoutEffect(() => {
15
15
  const { current } = elementRef;
16
- ['description', 'disabled', 'dropdownDirection', 'form', 'hideLabel', 'label', 'message', 'name', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
+ ['compact', 'description', 'disabled', 'dropdownDirection', 'form', 'hideLabel', 'label', 'message', 'name', 'required', 'state', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
17
17
  }, propsToSync);
18
18
  const props = {
19
19
  ...rest,
@@ -6,7 +6,7 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PScroller = /*#__PURE__*/ react.forwardRef(({ alignScrollIndicator = 'center', aria, gradientColor = 'background-base', gradientColorScheme, scrollIndicatorPosition, scrollToPosition, scrollbar = false, theme, className, ...rest }, ref) => {
9
+ const PScroller = /*#__PURE__*/ react.forwardRef(({ alignScrollIndicator = 'center', aria, gradientColor, gradientColorScheme, scrollIndicatorPosition, scrollToPosition, scrollbar = false, theme, className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  const WebComponentTag = hooks.usePrefix('p-scroller');
12
12
  const propsToSync = [alignScrollIndicator, aria, gradientColor, gradientColorScheme, scrollIndicatorPosition, scrollToPosition, scrollbar, theme || hooks.useTheme()];
@@ -6,7 +6,7 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PTabsBar = /*#__PURE__*/ react.forwardRef(({ activeTabIndex, gradientColor = 'background-base', gradientColorScheme, onTabChange, onUpdate, size = 'small', theme, weight = 'regular', className, ...rest }, ref) => {
9
+ const PTabsBar = /*#__PURE__*/ react.forwardRef(({ activeTabIndex, gradientColor, gradientColorScheme, onTabChange, onUpdate, size = 'small', theme, weight = 'regular', className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  hooks.useEventCallback(elementRef, 'tabChange', onTabChange);
12
12
  hooks.useEventCallback(elementRef, 'update', onUpdate);
@@ -6,7 +6,7 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PTabs = /*#__PURE__*/ react.forwardRef(({ activeTabIndex = 0, gradientColor = 'background-base', gradientColorScheme, onTabChange, onUpdate, size = 'small', theme, weight = 'regular', className, ...rest }, ref) => {
9
+ const PTabs = /*#__PURE__*/ react.forwardRef(({ activeTabIndex = 0, gradientColor, gradientColorScheme, onTabChange, onUpdate, size = 'small', theme, weight = 'regular', className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  hooks.useEventCallback(elementRef, 'tabChange', onTabChange);
12
12
  hooks.useEventCallback(elementRef, 'update', onUpdate);
@@ -20,6 +20,7 @@ var drilldownItem_wrapper = require('./lib/components/drilldown-item.wrapper.cjs
20
20
  var drilldownLink_wrapper = require('./lib/components/drilldown-link.wrapper.cjs');
21
21
  var fieldset_wrapper = require('./lib/components/fieldset.wrapper.cjs');
22
22
  var fieldsetWrapper_wrapper = require('./lib/components/fieldset-wrapper.wrapper.cjs');
23
+ var flag_wrapper = require('./lib/components/flag.wrapper.cjs');
23
24
  var flex_wrapper = require('./lib/components/flex.wrapper.cjs');
24
25
  var flexItem_wrapper = require('./lib/components/flex-item.wrapper.cjs');
25
26
  var flyout_wrapper = require('./lib/components/flyout.wrapper.cjs');
@@ -29,11 +30,15 @@ var heading_wrapper = require('./lib/components/heading.wrapper.cjs');
29
30
  var headline_wrapper = require('./lib/components/headline.wrapper.cjs');
30
31
  var icon_wrapper = require('./lib/components/icon.wrapper.cjs');
31
32
  var inlineNotification_wrapper = require('./lib/components/inline-notification.wrapper.cjs');
33
+ var inputDate_wrapper = require('./lib/components/input-date.wrapper.cjs');
32
34
  var inputEmail_wrapper = require('./lib/components/input-email.wrapper.cjs');
33
35
  var inputNumber_wrapper = require('./lib/components/input-number.wrapper.cjs');
34
36
  var inputPassword_wrapper = require('./lib/components/input-password.wrapper.cjs');
35
37
  var inputSearch_wrapper = require('./lib/components/input-search.wrapper.cjs');
38
+ var inputTel_wrapper = require('./lib/components/input-tel.wrapper.cjs');
36
39
  var inputText_wrapper = require('./lib/components/input-text.wrapper.cjs');
40
+ var inputTime_wrapper = require('./lib/components/input-time.wrapper.cjs');
41
+ var inputUrl_wrapper = require('./lib/components/input-url.wrapper.cjs');
37
42
  var link_wrapper = require('./lib/components/link.wrapper.cjs');
38
43
  var linkPure_wrapper = require('./lib/components/link-pure.wrapper.cjs');
39
44
  var linkSocial_wrapper = require('./lib/components/link-social.wrapper.cjs');
@@ -110,6 +115,7 @@ exports.PDrilldownItem = drilldownItem_wrapper.PDrilldownItem;
110
115
  exports.PDrilldownLink = drilldownLink_wrapper.PDrilldownLink;
111
116
  exports.PFieldset = fieldset_wrapper.PFieldset;
112
117
  exports.PFieldsetWrapper = fieldsetWrapper_wrapper.PFieldsetWrapper;
118
+ exports.PFlag = flag_wrapper.PFlag;
113
119
  exports.PFlex = flex_wrapper.PFlex;
114
120
  exports.PFlexItem = flexItem_wrapper.PFlexItem;
115
121
  exports.PFlyout = flyout_wrapper.PFlyout;
@@ -119,11 +125,15 @@ exports.PHeading = heading_wrapper.PHeading;
119
125
  exports.PHeadline = headline_wrapper.PHeadline;
120
126
  exports.PIcon = icon_wrapper.PIcon;
121
127
  exports.PInlineNotification = inlineNotification_wrapper.PInlineNotification;
128
+ exports.PInputDate = inputDate_wrapper.PInputDate;
122
129
  exports.PInputEmail = inputEmail_wrapper.PInputEmail;
123
130
  exports.PInputNumber = inputNumber_wrapper.PInputNumber;
124
131
  exports.PInputPassword = inputPassword_wrapper.PInputPassword;
125
132
  exports.PInputSearch = inputSearch_wrapper.PInputSearch;
133
+ exports.PInputTel = inputTel_wrapper.PInputTel;
126
134
  exports.PInputText = inputText_wrapper.PInputText;
135
+ exports.PInputTime = inputTime_wrapper.PInputTime;
136
+ exports.PInputUrl = inputUrl_wrapper.PInputUrl;
127
137
  exports.PLink = link_wrapper.PLink;
128
138
  exports.PLinkPure = linkPure_wrapper.PLinkPure;
129
139
  exports.PLinkSocial = linkSocial_wrapper.PLinkSocial;
@@ -1,6 +1,10 @@
1
1
  import type { BaseProps } from '../../BaseProps';
2
- import type { FieldsetLabelSize, FieldsetState, Theme } from '../types';
2
+ import type { SelectedAriaRole, FieldsetLabelSize, FieldsetState, Theme } from '../types';
3
3
  export type PFieldsetProps = BaseProps & {
4
+ /**
5
+ * Add ARIA attributes.
6
+ */
7
+ aria?: SelectedAriaRole<"radiogroup">;
4
8
  /**
5
9
  * The label text.
6
10
  */
@@ -27,6 +31,10 @@ export type PFieldsetProps = BaseProps & {
27
31
  theme?: Theme;
28
32
  };
29
33
  export declare const PFieldset: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
34
+ /**
35
+ * Add ARIA attributes.
36
+ */
37
+ aria?: SelectedAriaRole<"radiogroup">;
30
38
  /**
31
39
  * The label text.
32
40
  */
@@ -4,13 +4,13 @@ import { forwardRef, useRef } from 'react';
4
4
  import { usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
5
  import { syncRef } from '../../utils.mjs';
6
6
 
7
- const PFieldset = /*#__PURE__*/ forwardRef(({ label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
7
+ const PFieldset = /*#__PURE__*/ forwardRef(({ aria, label = '', labelSize = 'medium', message = '', required = false, state = 'none', theme, className, ...rest }, ref) => {
8
8
  const elementRef = useRef(undefined);
9
9
  const WebComponentTag = usePrefix('p-fieldset');
10
- const propsToSync = [label, labelSize, message, required, state, theme || useTheme()];
10
+ const propsToSync = [aria, label, labelSize, message, required, state, theme || useTheme()];
11
11
  useBrowserLayoutEffect(() => {
12
12
  const { current } = elementRef;
13
- ['label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
13
+ ['aria', 'label', 'labelSize', 'message', 'required', 'state', 'theme'].forEach((propName, i) => (current[propName] = propsToSync[i]));
14
14
  }, propsToSync);
15
15
  const props = {
16
16
  ...rest,
@@ -0,0 +1,30 @@
1
+ import type { BaseProps } from '../../BaseProps';
2
+ import type { SelectedAriaAttributes, FlagAriaAttribute, FlagName, FlagSize } from '../types';
3
+ export type PFlagProps = BaseProps & {
4
+ /**
5
+ * A map of ARIA attributes to enhance the flag's accessibility. For example, use `{ 'aria-label': 'German flag' }` to provide a descriptive label for screen readers.
6
+ */
7
+ aria?: SelectedAriaAttributes<FlagAriaAttribute>;
8
+ /**
9
+ * Specifies the country flag to display. Use the two-letter ISO 3166-1 alpha-2 country code. For example, use `us` for the United States, `de` for Germany, `gb` for Great Britain.
10
+ */
11
+ name?: FlagName;
12
+ /**
13
+ * The size of the flag. Pre-defined sizes are aligned with the Porsche Next typescale. Available values are `small`, `medium`, `large`, etc.
14
+ */
15
+ size?: FlagSize;
16
+ };
17
+ export declare const PFlag: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
18
+ /**
19
+ * A map of ARIA attributes to enhance the flag's accessibility. For example, use `{ 'aria-label': 'German flag' }` to provide a descriptive label for screen readers.
20
+ */
21
+ aria?: SelectedAriaAttributes<FlagAriaAttribute>;
22
+ /**
23
+ * Specifies the country flag to display. Use the two-letter ISO 3166-1 alpha-2 country code. For example, use `us` for the United States, `de` for Germany, `gb` for Great Britain.
24
+ */
25
+ name?: FlagName;
26
+ /**
27
+ * The size of the flag. Pre-defined sizes are aligned with the Porsche Next typescale. Available values are `small`, `medium`, `large`, etc.
28
+ */
29
+ size?: FlagSize;
30
+ } & import("react").RefAttributes<HTMLElement>>;
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useRef } from 'react';
4
+ import { usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
+ import { syncRef } from '../../utils.mjs';
6
+
7
+ const PFlag = /*#__PURE__*/ forwardRef(({ aria, name = 'de', size = 'small', className, ...rest }, ref) => {
8
+ const elementRef = useRef(undefined);
9
+ const WebComponentTag = usePrefix('p-flag');
10
+ const propsToSync = [aria, name, size];
11
+ useBrowserLayoutEffect(() => {
12
+ const { current } = elementRef;
13
+ ['aria', 'name', 'size'].forEach((propName, i) => (current[propName] = propsToSync[i]));
14
+ }, propsToSync);
15
+ const props = {
16
+ ...rest,
17
+ class: useMergedClass(elementRef, className),
18
+ ref: syncRef(elementRef, ref)
19
+ };
20
+ // @ts-ignore
21
+ return jsx(WebComponentTag, { ...props });
22
+ });
23
+
24
+ export { PFlag };
@@ -17,6 +17,7 @@ export * from './drilldown-item.wrapper';
17
17
  export * from './drilldown-link.wrapper';
18
18
  export * from './fieldset.wrapper';
19
19
  export * from './fieldset-wrapper.wrapper';
20
+ export * from './flag.wrapper';
20
21
  export * from './flex.wrapper';
21
22
  export * from './flex-item.wrapper';
22
23
  export * from './flyout.wrapper';
@@ -26,11 +27,15 @@ export * from './heading.wrapper';
26
27
  export * from './headline.wrapper';
27
28
  export * from './icon.wrapper';
28
29
  export * from './inline-notification.wrapper';
30
+ export * from './input-date.wrapper';
29
31
  export * from './input-email.wrapper';
30
32
  export * from './input-number.wrapper';
31
33
  export * from './input-password.wrapper';
32
34
  export * from './input-search.wrapper';
35
+ export * from './input-tel.wrapper';
33
36
  export * from './input-text.wrapper';
37
+ export * from './input-time.wrapper';
38
+ export * from './input-url.wrapper';
34
39
  export * from './link.wrapper';
35
40
  export * from './link-pure.wrapper';
36
41
  export * from './link-social.wrapper';
@@ -0,0 +1,176 @@
1
+ import type { BaseProps } from '../../BaseProps';
2
+ import type { BreakpointCustomizable, InputDateBlurEventDetail, InputDateChangeEventDetail, InputDateInputEventDetail, InputDateState, Theme } from '../types';
3
+ export type PInputDateProps = BaseProps & {
4
+ /**
5
+ * Provides a hint to the browser about what type of data the field expects, which can assist with autofill features (e.g., auto-complete='bday' for a birthday).
6
+ */
7
+ autoComplete?: string;
8
+ /**
9
+ * A boolean value that, if present, renders the input field as a compact version.
10
+ */
11
+ compact?: boolean;
12
+ /**
13
+ * Supplementary text providing more context or explanation for the input.
14
+ */
15
+ description?: string;
16
+ /**
17
+ * A boolean value that, if present, makes the input field unusable and unclickable. The value will not be submitted with the form.
18
+ */
19
+ disabled?: boolean;
20
+ /**
21
+ * Specifies the id of the <form> element that the input belongs to (useful if the input is not a direct descendant of the form).
22
+ */
23
+ form?: string;
24
+ /**
25
+ * Controls the visibility of the label.
26
+ */
27
+ hideLabel?: BreakpointCustomizable<boolean>;
28
+ /**
29
+ * Text content for a user-facing label.
30
+ */
31
+ label?: string;
32
+ /**
33
+ * @experimental Shows a loading indicator.
34
+ */
35
+ loading?: boolean;
36
+ /**
37
+ * Specifies the latest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., max='2024-12-31').
38
+ */
39
+ max?: string;
40
+ /**
41
+ * Dynamic feedback text for validation or status.
42
+ */
43
+ message?: string;
44
+ /**
45
+ * Specifies the earliest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., min='2023-01-01').
46
+ */
47
+ min?: string;
48
+ /**
49
+ * The name of the input field, used when submitting the form data.
50
+ */
51
+ name: string;
52
+ /**
53
+ * Emitted when the number input has lost focus.
54
+ */
55
+ onBlur?: (event: CustomEvent<InputDateBlurEventDetail>) => void;
56
+ /**
57
+ * Emitted when the number input loses focus after its value was changed.
58
+ */
59
+ onChange?: (event: CustomEvent<InputDateChangeEventDetail>) => void;
60
+ /**
61
+ * Emitted when the value has been changed as a direct result of a user action.
62
+ */
63
+ onInput?: (event: CustomEvent<InputDateInputEventDetail>) => void;
64
+ /**
65
+ * A boolean value that, if present, makes the input field uneditable by the user, but its value will still be submitted with the form.
66
+ */
67
+ readOnly?: boolean;
68
+ /**
69
+ * A boolean value that, if present, indicates that the input field must be filled out before the form can be submitted.
70
+ */
71
+ required?: boolean;
72
+ /**
73
+ * Indicates the validation or overall status of the input component.
74
+ */
75
+ state?: InputDateState;
76
+ /**
77
+ * Defines the granularity of the date input. This value is given in days. The default is 1 (one day).
78
+ */
79
+ step?: number;
80
+ /**
81
+ * Controls the visual appearance of the component.
82
+ */
83
+ theme?: Theme;
84
+ /**
85
+ * The default date value for the input, in YYYY-MM-DD format (e.g., value='2025-07-02').
86
+ */
87
+ value?: string;
88
+ };
89
+ export declare const PInputDate: import("react").ForwardRefExoticComponent<import("react").DOMAttributes<{}> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
90
+ /**
91
+ * Provides a hint to the browser about what type of data the field expects, which can assist with autofill features (e.g., auto-complete='bday' for a birthday).
92
+ */
93
+ autoComplete?: string;
94
+ /**
95
+ * A boolean value that, if present, renders the input field as a compact version.
96
+ */
97
+ compact?: boolean;
98
+ /**
99
+ * Supplementary text providing more context or explanation for the input.
100
+ */
101
+ description?: string;
102
+ /**
103
+ * A boolean value that, if present, makes the input field unusable and unclickable. The value will not be submitted with the form.
104
+ */
105
+ disabled?: boolean;
106
+ /**
107
+ * Specifies the id of the <form> element that the input belongs to (useful if the input is not a direct descendant of the form).
108
+ */
109
+ form?: string;
110
+ /**
111
+ * Controls the visibility of the label.
112
+ */
113
+ hideLabel?: BreakpointCustomizable<boolean>;
114
+ /**
115
+ * Text content for a user-facing label.
116
+ */
117
+ label?: string;
118
+ /**
119
+ * @experimental Shows a loading indicator.
120
+ */
121
+ loading?: boolean;
122
+ /**
123
+ * Specifies the latest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., max='2024-12-31').
124
+ */
125
+ max?: string;
126
+ /**
127
+ * Dynamic feedback text for validation or status.
128
+ */
129
+ message?: string;
130
+ /**
131
+ * Specifies the earliest date that can be selected. The value must be a date string in YYYY-MM-DD format (e.g., min='2023-01-01').
132
+ */
133
+ min?: string;
134
+ /**
135
+ * The name of the input field, used when submitting the form data.
136
+ */
137
+ name: string;
138
+ /**
139
+ * Emitted when the number input has lost focus.
140
+ */
141
+ onBlur?: (event: CustomEvent<InputDateBlurEventDetail>) => void;
142
+ /**
143
+ * Emitted when the number input loses focus after its value was changed.
144
+ */
145
+ onChange?: (event: CustomEvent<InputDateChangeEventDetail>) => void;
146
+ /**
147
+ * Emitted when the value has been changed as a direct result of a user action.
148
+ */
149
+ onInput?: (event: CustomEvent<InputDateInputEventDetail>) => void;
150
+ /**
151
+ * A boolean value that, if present, makes the input field uneditable by the user, but its value will still be submitted with the form.
152
+ */
153
+ readOnly?: boolean;
154
+ /**
155
+ * A boolean value that, if present, indicates that the input field must be filled out before the form can be submitted.
156
+ */
157
+ required?: boolean;
158
+ /**
159
+ * Indicates the validation or overall status of the input component.
160
+ */
161
+ state?: InputDateState;
162
+ /**
163
+ * Defines the granularity of the date input. This value is given in days. The default is 1 (one day).
164
+ */
165
+ step?: number;
166
+ /**
167
+ * Controls the visual appearance of the component.
168
+ */
169
+ theme?: Theme;
170
+ /**
171
+ * The default date value for the input, in YYYY-MM-DD format (e.g., value='2025-07-02').
172
+ */
173
+ value?: string;
174
+ } & {
175
+ children?: import("react").ReactNode | undefined;
176
+ } & import("react").RefAttributes<HTMLElement>>;
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useRef } from 'react';
4
+ import { useEventCallback, usePrefix, useTheme, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
+ import { syncRef } from '../../utils.mjs';
6
+
7
+ const PInputDate = /*#__PURE__*/ forwardRef(({ autoComplete, compact = false, description = '', disabled = false, form, hideLabel = false, label = '', loading = false, max, message = '', min, name, onBlur, onChange, onInput, readOnly = false, required = false, state = 'none', step = 1, theme, value = '', className, ...rest }, ref) => {
8
+ const elementRef = useRef(undefined);
9
+ useEventCallback(elementRef, 'blur', onBlur);
10
+ useEventCallback(elementRef, 'change', onChange);
11
+ useEventCallback(elementRef, 'input', onInput);
12
+ const WebComponentTag = usePrefix('p-input-date');
13
+ const propsToSync = [autoComplete, compact, description, disabled, form, hideLabel, label, loading, max, message, min, name, readOnly, required, state, step, theme || useTheme(), value];
14
+ useBrowserLayoutEffect(() => {
15
+ const { current } = elementRef;
16
+ ['autoComplete', 'compact', 'description', 'disabled', 'form', 'hideLabel', 'label', 'loading', 'max', 'message', 'min', 'name', 'readOnly', 'required', 'state', 'step', 'theme', 'value'].forEach((propName, i) => (current[propName] = propsToSync[i]));
17
+ }, propsToSync);
18
+ const props = {
19
+ ...rest,
20
+ class: useMergedClass(elementRef, className),
21
+ ref: syncRef(elementRef, ref)
22
+ };
23
+ // @ts-ignore
24
+ return jsx(WebComponentTag, { ...props });
25
+ });
26
+
27
+ export { PInputDate };