@warp-ds/elements 2.9.1-next.5 → 2.9.1-next.6

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 (118) hide show
  1. package/dist/custom-elements.json +25 -20
  2. package/dist/docs/slider/examples.md +30 -75
  3. package/dist/docs/slider/slider.md +30 -75
  4. package/dist/docs/step/api.md +11 -9
  5. package/dist/docs/step/step.md +11 -15
  6. package/dist/docs/step-indicator/api.md +4 -4
  7. package/dist/docs/step-indicator/examples.md +81 -0
  8. package/dist/docs/step-indicator/step-indicator.md +97 -6
  9. package/dist/docs/step-indicator/usage.md +12 -0
  10. package/dist/docs/switch/accessibility.md +2 -0
  11. package/dist/docs/switch/api.md +11 -17
  12. package/dist/docs/switch/examples.md +16 -0
  13. package/dist/docs/switch/switch.md +36 -18
  14. package/dist/docs/switch/usage.md +6 -0
  15. package/dist/index.d.ts +64 -56
  16. package/dist/packages/affix/affix.react.stories.d.ts +3 -1
  17. package/dist/packages/affix/affix.react.test.d.ts +1 -0
  18. package/dist/packages/affix/affix.react.test.js +3 -0
  19. package/dist/packages/affix/react.d.ts +4 -1
  20. package/dist/packages/affix/react.js +7 -1
  21. package/dist/packages/attention/attention.react.test.d.ts +1 -0
  22. package/dist/packages/attention/attention.react.test.js +8 -0
  23. package/dist/packages/attention/react.d.ts +2 -2
  24. package/dist/packages/attention/react.js +10 -1
  25. package/dist/packages/checkbox-group/checkbox-group.react.test.d.ts +1 -0
  26. package/dist/packages/checkbox-group/checkbox-group.react.test.js +5 -0
  27. package/dist/packages/checkbox-group/react.d.ts +4 -1
  28. package/dist/packages/checkbox-group/react.js +7 -1
  29. package/dist/packages/combobox/combobox.react.stories.d.ts +20 -8
  30. package/dist/packages/combobox/combobox.react.test.d.ts +1 -0
  31. package/dist/packages/combobox/combobox.react.test.js +9 -0
  32. package/dist/packages/combobox/react.d.ts +13 -6
  33. package/dist/packages/combobox/react.js +11 -1
  34. package/dist/packages/datepicker/datepicker.react.stories.d.ts +18 -10
  35. package/dist/packages/datepicker/datepicker.react.test.d.ts +1 -0
  36. package/dist/packages/datepicker/datepicker.react.test.js +7 -0
  37. package/dist/packages/datepicker/react.d.ts +13 -8
  38. package/dist/packages/datepicker/react.js +9 -1
  39. package/dist/packages/expandable/expandable.react.stories.d.ts +12 -2
  40. package/dist/packages/expandable/expandable.react.test.d.ts +1 -0
  41. package/dist/packages/expandable/expandable.react.test.js +8 -0
  42. package/dist/packages/expandable/react.d.ts +7 -1
  43. package/dist/packages/expandable/react.js +10 -1
  44. package/dist/packages/link/link.react.stories.d.ts +6 -2
  45. package/dist/packages/link/link.react.test.d.ts +1 -0
  46. package/dist/packages/link/link.react.test.js +3 -0
  47. package/dist/packages/link/react.d.ts +4 -1
  48. package/dist/packages/link/react.js +7 -1
  49. package/dist/packages/modal/modal.react.stories.d.ts +10 -6
  50. package/dist/packages/modal/modal.react.test.d.ts +1 -0
  51. package/dist/packages/modal/modal.react.test.js +6 -0
  52. package/dist/packages/modal/react.d.ts +10 -6
  53. package/dist/packages/modal/react.js +8 -1
  54. package/dist/packages/modal-header/modal-header.react.test.d.ts +1 -0
  55. package/dist/packages/modal-header/modal-header.react.test.js +3 -0
  56. package/dist/packages/modal-header/react.d.ts +7 -4
  57. package/dist/packages/modal-header/react.js +7 -1
  58. package/dist/packages/page-indicator/page-indicator.react.stories.d.ts +8 -2
  59. package/dist/packages/page-indicator/page-indicator.react.test.d.ts +1 -0
  60. package/dist/packages/page-indicator/page-indicator.react.test.js +6 -0
  61. package/dist/packages/page-indicator/react.d.ts +5 -1
  62. package/dist/packages/page-indicator/react.js +8 -1
  63. package/dist/packages/pagination/pagination.react.stories.d.ts +14 -6
  64. package/dist/packages/pagination/pagination.react.test.d.ts +1 -0
  65. package/dist/packages/pagination/pagination.react.test.js +7 -0
  66. package/dist/packages/pagination/react.d.ts +9 -4
  67. package/dist/packages/pagination/react.js +9 -1
  68. package/dist/packages/pill/pill.react.stories.d.ts +20 -8
  69. package/dist/packages/pill/pill.react.test.d.ts +1 -0
  70. package/dist/packages/pill/pill.react.test.js +9 -0
  71. package/dist/packages/pill/react.d.ts +13 -6
  72. package/dist/packages/pill/react.js +11 -1
  73. package/dist/packages/radio-group/radio-group.react.test.d.ts +1 -0
  74. package/dist/packages/radio-group/radio-group.react.test.js +5 -0
  75. package/dist/packages/radio-group/react.d.ts +9 -6
  76. package/dist/packages/radio-group/react.js +7 -1
  77. package/dist/packages/select/react.d.ts +9 -4
  78. package/dist/packages/select/react.js +9 -1
  79. package/dist/packages/select/select.react.stories.d.ts +14 -6
  80. package/dist/packages/select/select.react.test.d.ts +1 -0
  81. package/dist/packages/select/select.react.test.js +7 -0
  82. package/dist/packages/slider/react.d.ts +6 -1
  83. package/dist/packages/slider/react.js +9 -1
  84. package/dist/packages/slider/slider.react.stories.d.ts +6 -1
  85. package/dist/packages/slider/slider.react.test.d.ts +1 -0
  86. package/dist/packages/slider/slider.react.test.js +7 -0
  87. package/dist/packages/slider-thumb/react.d.ts +8 -5
  88. package/dist/packages/slider-thumb/react.js +8 -1
  89. package/dist/packages/slider-thumb/slider-thumb.react.test.d.ts +1 -0
  90. package/dist/packages/slider-thumb/slider-thumb.react.test.js +6 -0
  91. package/dist/packages/step/step.d.ts +8 -4
  92. package/dist/packages/step/step.js.map +2 -2
  93. package/dist/packages/step-indicator/step-indicator.d.ts +5 -6
  94. package/dist/packages/step-indicator/step-indicator.js.map +2 -2
  95. package/dist/packages/switch/switch.d.ts +21 -8
  96. package/dist/packages/switch/switch.js +1 -1
  97. package/dist/packages/switch/switch.js.map +2 -2
  98. package/dist/packages/tab/react.d.ts +9 -6
  99. package/dist/packages/tab/react.js +7 -1
  100. package/dist/packages/tab/tab.react.test.d.ts +1 -0
  101. package/dist/packages/tab/tab.react.test.js +3 -0
  102. package/dist/packages/textarea/react.d.ts +16 -10
  103. package/dist/packages/textarea/react.js +10 -1
  104. package/dist/packages/textarea/textarea.react.stories.d.ts +22 -12
  105. package/dist/packages/textarea/textarea.react.test.d.ts +1 -0
  106. package/dist/packages/textarea/textarea.react.test.js +8 -0
  107. package/dist/packages/textfield/react.d.ts +16 -10
  108. package/dist/packages/textfield/react.js +10 -1
  109. package/dist/packages/textfield/textfield.react.stories.d.ts +22 -12
  110. package/dist/packages/textfield/textfield.react.test.d.ts +1 -0
  111. package/dist/packages/textfield/textfield.react.test.js +8 -0
  112. package/dist/tests/react-ssr-attributes.d.ts +8 -0
  113. package/dist/tests/react-ssr-attributes.js +12 -0
  114. package/dist/web-types.json +73 -15
  115. package/package.json +1 -1
  116. package/dist/docs/step/accessibility.md +0 -1
  117. package/dist/docs/step/examples.md +0 -1
  118. package/dist/docs/step/usage.md +0 -1
@@ -4,7 +4,7 @@ import React from 'react';
4
4
  // decouple from CDN by providing a dummy class
5
5
  class Component extends LitElement {
6
6
  }
7
- export const Tab = createComponent({
7
+ const BaseTab = createComponent({
8
8
  tagName: 'w-tab',
9
9
  elementClass: Component,
10
10
  react: React,
@@ -15,3 +15,9 @@ export const Tab = createComponent({
15
15
  onclick: 'click',
16
16
  },
17
17
  });
18
+ export const Tab = React.forwardRef(({ ariaSelected, ...props }, ref) => React.createElement(BaseTab, {
19
+ ...props,
20
+ ...(ariaSelected !== undefined ? { 'aria-selected': ariaSelected } : {}),
21
+ ref,
22
+ }));
23
+ Tab.displayName = 'Tab';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { describeReactSsrAttributeMapping } from '../../tests/react-ssr-attributes';
2
+ import { Tab } from './react.js';
3
+ describeReactSsrAttributeMapping('Tab', Tab, [{ propName: 'ariaSelected', attrName: 'aria-selected', value: 'true' }]);
@@ -1,11 +1,17 @@
1
+ import React from 'react';
1
2
  import { WarpTextarea } from './textarea.js';
2
- export declare const Textarea: import("@lit/react").ReactWebComponent<WarpTextarea, {
3
- onBlur: string;
4
- onblur: string;
5
- onChange: string;
6
- onchange: string;
7
- onInput: string;
8
- oninput: string;
9
- onFocus: string;
10
- onfocus: string;
11
- }>;
3
+ export declare const Textarea: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<WarpTextarea>, "value" | "form" | "label" | "name" | "disabled" | "invalid" | "helpText" | "placeholder" | "readOnly" | "readonly" | "required" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "updated" | "firstUpdated" | "resetFormControl" | "_helptextstyles" | "_helpId" | "_id" | "_error" | "handler" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput" | "reportValidity" | "optional" | "setCustomValidity" | "maxRows" | "minRows" | "minHeight" | "maxHeight" | "_textareaStyles"> & {
4
+ onBlur?: (e: Event) => void;
5
+ onblur?: (e: Event) => void;
6
+ onChange?: (e: Event) => void;
7
+ onchange?: (e: Event) => void;
8
+ onInput?: (e: Event) => void;
9
+ oninput?: (e: Event) => void;
10
+ onFocus?: (e: Event) => void;
11
+ onfocus?: (e: Event) => void;
12
+ } & Partial<Omit<WarpTextarea, keyof HTMLElement>> & React.RefAttributes<WarpTextarea>, "ref">, "help-text" | "read-only" | "maximum-rows" | "minimum-rows"> & {
13
+ helpText?: string;
14
+ maxRows?: number;
15
+ minRows?: number;
16
+ readOnly?: boolean;
17
+ } & React.RefAttributes<WarpTextarea>>;
@@ -4,7 +4,7 @@ import React from 'react';
4
4
  // decouple from CDN by providing a dummy class
5
5
  class Component extends LitElement {
6
6
  }
7
- export const Textarea = createComponent({
7
+ const BaseTextarea = createComponent({
8
8
  tagName: 'w-textarea',
9
9
  elementClass: Component,
10
10
  react: React,
@@ -19,3 +19,12 @@ export const Textarea = createComponent({
19
19
  onfocus: 'focus',
20
20
  },
21
21
  });
22
+ export const Textarea = React.forwardRef(({ helpText, maxRows, minRows, readOnly, ...props }, ref) => React.createElement(BaseTextarea, {
23
+ ...props,
24
+ ...(helpText !== undefined ? { 'help-text': helpText } : {}),
25
+ ...(maxRows !== undefined ? { 'maximum-rows': maxRows } : {}),
26
+ ...(minRows !== undefined ? { 'minimum-rows': minRows } : {}),
27
+ ...(readOnly ? { 'read-only': true } : {}),
28
+ ref,
29
+ }));
30
+ Textarea.displayName = 'Textarea';
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { Textarea } from './react';
4
4
  declare const _default: {
5
5
  title: string;
6
- render(args: Omit<React.HTMLAttributes<import("./textarea").WarpTextarea>, "value" | "form" | "label" | "name" | "disabled" | "invalid" | "helpText" | "placeholder" | "readOnly" | "readonly" | "required" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "updated" | "firstUpdated" | "resetFormControl" | "_helptextstyles" | "_helpId" | "_id" | "_error" | "handler" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput" | "reportValidity" | "optional" | "setCustomValidity" | "maxRows" | "minRows" | "minHeight" | "maxHeight" | "_textareaStyles"> & {
6
+ render(args: Omit<Omit<Omit<React.HTMLAttributes<import("./textarea").WarpTextarea>, "value" | "form" | "label" | "name" | "disabled" | "invalid" | "helpText" | "placeholder" | "readOnly" | "readonly" | "required" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "updated" | "firstUpdated" | "resetFormControl" | "_helptextstyles" | "_helpId" | "_id" | "_error" | "handler" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput" | "reportValidity" | "optional" | "setCustomValidity" | "maxRows" | "minRows" | "minHeight" | "maxHeight" | "_textareaStyles"> & {
7
7
  onBlur?: (e: Event) => void;
8
8
  onblur?: (e: Event) => void;
9
9
  onChange?: (e: Event) => void;
@@ -12,17 +12,27 @@ declare const _default: {
12
12
  oninput?: (e: Event) => void;
13
13
  onFocus?: (e: Event) => void;
14
14
  onfocus?: (e: Event) => void;
15
- } & Partial<Omit<import("./textarea").WarpTextarea, keyof HTMLElement>> & React.RefAttributes<import("./textarea").WarpTextarea>): React.JSX.Element;
16
- component: import("@lit/react").ReactWebComponent<import("./textarea").WarpTextarea, {
17
- onBlur: string;
18
- onblur: string;
19
- onChange: string;
20
- onchange: string;
21
- onInput: string;
22
- oninput: string;
23
- onFocus: string;
24
- onfocus: string;
25
- }>;
15
+ } & Partial<Omit<import("./textarea").WarpTextarea, keyof HTMLElement>> & React.RefAttributes<import("./textarea").WarpTextarea>, "ref">, "help-text" | "read-only" | "maximum-rows" | "minimum-rows"> & {
16
+ helpText?: string;
17
+ maxRows?: number;
18
+ minRows?: number;
19
+ readOnly?: boolean;
20
+ } & React.RefAttributes<import("./textarea").WarpTextarea>): React.JSX.Element;
21
+ component: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<import("./textarea").WarpTextarea>, "value" | "form" | "label" | "name" | "disabled" | "invalid" | "helpText" | "placeholder" | "readOnly" | "readonly" | "required" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "updated" | "firstUpdated" | "resetFormControl" | "_helptextstyles" | "_helpId" | "_id" | "_error" | "handler" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput" | "reportValidity" | "optional" | "setCustomValidity" | "maxRows" | "minRows" | "minHeight" | "maxHeight" | "_textareaStyles"> & {
22
+ onBlur?: (e: Event) => void;
23
+ onblur?: (e: Event) => void;
24
+ onChange?: (e: Event) => void;
25
+ onchange?: (e: Event) => void;
26
+ onInput?: (e: Event) => void;
27
+ oninput?: (e: Event) => void;
28
+ onFocus?: (e: Event) => void;
29
+ onfocus?: (e: Event) => void;
30
+ } & Partial<Omit<import("./textarea").WarpTextarea, keyof HTMLElement>> & React.RefAttributes<import("./textarea").WarpTextarea>, "ref">, "help-text" | "read-only" | "maximum-rows" | "minimum-rows"> & {
31
+ helpText?: string;
32
+ maxRows?: number;
33
+ minRows?: number;
34
+ readOnly?: boolean;
35
+ } & React.RefAttributes<import("./textarea").WarpTextarea>>;
26
36
  };
27
37
  export default _default;
28
38
  export type Story = StoryObj<typeof Textarea>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { describeReactSsrAttributeMapping } from '../../tests/react-ssr-attributes';
2
+ import { Textarea } from './react.js';
3
+ describeReactSsrAttributeMapping('Textarea', Textarea, [
4
+ { propName: 'helpText', attrName: 'help-text', value: 'Help text' },
5
+ { propName: 'maxRows', attrName: 'maximum-rows', value: 5 },
6
+ { propName: 'minRows', attrName: 'minimum-rows', value: 2 },
7
+ { propName: 'readOnly', attrName: 'read-only' },
8
+ ]);
@@ -1,11 +1,17 @@
1
+ import React from 'react';
1
2
  import { WarpTextField } from './textfield.js';
2
- export declare const TextField: import("@lit/react").ReactWebComponent<WarpTextField, {
3
- onBlur: string;
4
- onblur: string;
5
- onChange: string;
6
- onchange: string;
7
- onInput: string;
8
- oninput: string;
9
- onFocus: string;
10
- onfocus: string;
11
- }>;
3
+ export declare const TextField: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<WarpTextField>, "value" | "form" | "label" | "mask" | "pattern" | "name" | "size" | "disabled" | "invalid" | "helpText" | "max" | "min" | "minLength" | "minlength" | "maxLength" | "maxlength" | "placeholder" | "readOnly" | "readonly" | "required" | "type" | "step" | "autocomplete" | "formatter" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "_hasPrefix" | "_hasSuffix" | "updated" | "firstUpdated" | "resetFormControl" | "_inputstyles" | "_helptextstyles" | "_label" | "_helpId" | "_id" | "_error" | "handler" | "prefixSlotChange" | "suffixSlotChange" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput"> & {
4
+ onBlur?: (e: Event) => void;
5
+ onblur?: (e: Event) => void;
6
+ onChange?: (e: Event) => void;
7
+ onchange?: (e: Event) => void;
8
+ onInput?: (e: Event) => void;
9
+ oninput?: (e: Event) => void;
10
+ onFocus?: (e: Event) => void;
11
+ onfocus?: (e: Event) => void;
12
+ } & Partial<Omit<WarpTextField, keyof HTMLElement>> & React.RefAttributes<WarpTextField>, "ref">, "help-text" | "min-length" | "max-length" | "read-only"> & {
13
+ helpText?: string;
14
+ minLength?: number;
15
+ maxLength?: number;
16
+ readOnly?: boolean;
17
+ } & React.RefAttributes<WarpTextField>>;
@@ -4,7 +4,7 @@ import React from 'react';
4
4
  // decouple from CDN by providing a dummy class
5
5
  class Component extends LitElement {
6
6
  }
7
- export const TextField = createComponent({
7
+ const BaseTextField = createComponent({
8
8
  tagName: 'w-textfield',
9
9
  elementClass: Component,
10
10
  react: React,
@@ -19,3 +19,12 @@ export const TextField = createComponent({
19
19
  onfocus: 'focus',
20
20
  },
21
21
  });
22
+ export const TextField = React.forwardRef(({ helpText, minLength, maxLength, readOnly, ...props }, ref) => React.createElement(BaseTextField, {
23
+ ...props,
24
+ ...(helpText !== undefined ? { 'help-text': helpText } : {}),
25
+ ...(minLength !== undefined ? { 'min-length': minLength } : {}),
26
+ ...(maxLength !== undefined ? { 'max-length': maxLength } : {}),
27
+ ...(readOnly ? { 'read-only': true } : {}),
28
+ ref,
29
+ }));
30
+ TextField.displayName = 'TextField';
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { TextField } from './react';
4
4
  declare const _default: {
5
5
  title: string;
6
- render(args: Omit<React.HTMLAttributes<import("./textfield").WarpTextField>, "value" | "form" | "label" | "mask" | "pattern" | "name" | "size" | "disabled" | "invalid" | "helpText" | "max" | "min" | "minLength" | "minlength" | "maxLength" | "maxlength" | "placeholder" | "readOnly" | "readonly" | "required" | "type" | "step" | "autocomplete" | "formatter" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "_hasPrefix" | "_hasSuffix" | "updated" | "firstUpdated" | "resetFormControl" | "_inputstyles" | "_helptextstyles" | "_label" | "_helpId" | "_id" | "_error" | "handler" | "prefixSlotChange" | "suffixSlotChange" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput"> & {
6
+ render(args: Omit<Omit<Omit<React.HTMLAttributes<import("./textfield").WarpTextField>, "value" | "form" | "label" | "mask" | "pattern" | "name" | "size" | "disabled" | "invalid" | "helpText" | "max" | "min" | "minLength" | "minlength" | "maxLength" | "maxlength" | "placeholder" | "readOnly" | "readonly" | "required" | "type" | "step" | "autocomplete" | "formatter" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "_hasPrefix" | "_hasSuffix" | "updated" | "firstUpdated" | "resetFormControl" | "_inputstyles" | "_helptextstyles" | "_label" | "_helpId" | "_id" | "_error" | "handler" | "prefixSlotChange" | "suffixSlotChange" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput"> & {
7
7
  onBlur?: (e: Event) => void;
8
8
  onblur?: (e: Event) => void;
9
9
  onChange?: (e: Event) => void;
@@ -12,17 +12,27 @@ declare const _default: {
12
12
  oninput?: (e: Event) => void;
13
13
  onFocus?: (e: Event) => void;
14
14
  onfocus?: (e: Event) => void;
15
- } & Partial<Omit<import("./textfield").WarpTextField, keyof HTMLElement>> & React.RefAttributes<import("./textfield").WarpTextField>): React.JSX.Element;
16
- component: import("@lit/react").ReactWebComponent<import("./textfield").WarpTextField, {
17
- onBlur: string;
18
- onblur: string;
19
- onChange: string;
20
- onchange: string;
21
- onInput: string;
22
- oninput: string;
23
- onFocus: string;
24
- onfocus: string;
25
- }>;
15
+ } & Partial<Omit<import("./textfield").WarpTextField, keyof HTMLElement>> & React.RefAttributes<import("./textfield").WarpTextField>, "ref">, "help-text" | "min-length" | "max-length" | "read-only"> & {
16
+ helpText?: string;
17
+ minLength?: number;
18
+ maxLength?: number;
19
+ readOnly?: boolean;
20
+ } & React.RefAttributes<import("./textfield").WarpTextField>): React.JSX.Element;
21
+ component: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<import("./textfield").WarpTextField>, "value" | "form" | "label" | "mask" | "pattern" | "name" | "size" | "disabled" | "invalid" | "helpText" | "max" | "min" | "minLength" | "minlength" | "maxLength" | "maxlength" | "placeholder" | "readOnly" | "readonly" | "required" | "type" | "step" | "autocomplete" | "formatter" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onblur" | "onchange" | "onfocus" | "oninput" | "_hasPrefix" | "_hasSuffix" | "updated" | "firstUpdated" | "resetFormControl" | "_inputstyles" | "_helptextstyles" | "_label" | "_helpId" | "_id" | "_error" | "handler" | "prefixSlotChange" | "suffixSlotChange" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onFocus" | "onBlur" | "onChange" | "onInput"> & {
22
+ onBlur?: (e: Event) => void;
23
+ onblur?: (e: Event) => void;
24
+ onChange?: (e: Event) => void;
25
+ onchange?: (e: Event) => void;
26
+ onInput?: (e: Event) => void;
27
+ oninput?: (e: Event) => void;
28
+ onFocus?: (e: Event) => void;
29
+ onfocus?: (e: Event) => void;
30
+ } & Partial<Omit<import("./textfield").WarpTextField, keyof HTMLElement>> & React.RefAttributes<import("./textfield").WarpTextField>, "ref">, "help-text" | "min-length" | "max-length" | "read-only"> & {
31
+ helpText?: string;
32
+ minLength?: number;
33
+ maxLength?: number;
34
+ readOnly?: boolean;
35
+ } & React.RefAttributes<import("./textfield").WarpTextField>>;
26
36
  };
27
37
  export default _default;
28
38
  export type Story = StoryObj<typeof TextField>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { describeReactSsrAttributeMapping } from '../../tests/react-ssr-attributes';
2
+ import { TextField } from './react.js';
3
+ describeReactSsrAttributeMapping('TextField', TextField, [
4
+ { propName: 'helpText', attrName: 'help-text', value: 'Help text' },
5
+ { propName: 'minLength', attrName: 'min-length', value: 2 },
6
+ { propName: 'maxLength', attrName: 'max-length', value: 10 },
7
+ { propName: 'readOnly', attrName: 'read-only' },
8
+ ]);
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ type SsrAttributeCase = {
3
+ attrName: string;
4
+ propName: string;
5
+ value?: unknown;
6
+ };
7
+ export declare function describeReactSsrAttributeMapping(componentName: string, Component: React.ElementType, cases: SsrAttributeCase[]): void;
8
+ export {};
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { renderToString } from 'react-dom/server';
3
+ import { describe, expect, test } from 'vitest';
4
+ export function describeReactSsrAttributeMapping(componentName, Component, cases) {
5
+ describe(`${componentName} React SSR`, () => {
6
+ test.each(cases)('renders $propName as the $attrName attribute', ({ attrName, propName, value = true }) => {
7
+ const html = renderToString(React.createElement(Component, { [propName]: value }, componentName));
8
+ expect(html).toContain(attrName);
9
+ expect(html).not.toContain(propName);
10
+ });
11
+ });
12
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@warp-ds/elements",
4
- "version": "2.9.1-next.4",
4
+ "version": "2.9.1-next.5",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -1983,70 +1983,128 @@
1983
1983
  "attributes": [
1984
1984
  {
1985
1985
  "name": "active",
1986
+ "description": "Whether this step is active.\n\nThe active step displays a filled indicator.",
1986
1987
  "value": { "type": "boolean", "default": "false" }
1987
1988
  },
1988
1989
  {
1989
1990
  "name": "completed",
1991
+ "description": "Whether this step is completed.\n\nCompleted steps display a checkmark icon and a filled indicator.",
1990
1992
  "value": { "type": "boolean", "default": "false" }
1991
1993
  }
1992
1994
  ],
1993
1995
  "events": [],
1994
1996
  "js": {
1995
1997
  "properties": [
1996
- { "name": "active", "type": "boolean" },
1997
- { "name": "completed", "type": "boolean" }
1998
+ {
1999
+ "name": "active",
2000
+ "description": "Whether this step is active.\n\nThe active step displays a filled indicator.",
2001
+ "type": "boolean"
2002
+ },
2003
+ {
2004
+ "name": "completed",
2005
+ "description": "Whether this step is completed.\n\nCompleted steps display a checkmark icon and a filled indicator.",
2006
+ "type": "boolean"
2007
+ }
1998
2008
  ],
1999
2009
  "events": []
2000
2010
  }
2001
2011
  },
2002
2012
  {
2003
2013
  "name": "w-step-indicator",
2004
- "description": "Steps are used to show progress through a process or to guide users through a multi-step task.\n\n[See Storybook for usage examples](https://warp-ds.github.io/elements/?path=/docs/components-steps--docs)\n---\n",
2014
+ "description": "Steps are used to show progress through a process or to guide users through a multi-step task.\n---\n",
2005
2015
  "doc-url": "",
2006
2016
  "attributes": [
2007
2017
  {
2008
2018
  "name": "horizontal",
2019
+ "description": "Display steps horizontally instead of vertically",
2009
2020
  "value": { "type": "boolean", "default": "false" }
2010
2021
  },
2011
2022
  {
2012
2023
  "name": "right",
2024
+ "description": "Align steps to the right (vertical layout only)",
2013
2025
  "value": { "type": "boolean", "default": "false" }
2014
2026
  }
2015
2027
  ],
2016
2028
  "events": [],
2017
2029
  "js": {
2018
2030
  "properties": [
2019
- { "name": "horizontal", "type": "boolean" },
2020
- { "name": "right", "type": "boolean" }
2031
+ {
2032
+ "name": "horizontal",
2033
+ "description": "Display steps horizontally instead of vertically",
2034
+ "type": "boolean"
2035
+ },
2036
+ {
2037
+ "name": "right",
2038
+ "description": "Align steps to the right (vertical layout only)",
2039
+ "type": "boolean"
2040
+ }
2021
2041
  ],
2022
2042
  "events": []
2023
2043
  }
2024
2044
  },
2025
2045
  {
2026
2046
  "name": "w-switch",
2027
- "description": "\n---\n\n\n### **Events:**\n - **change**",
2047
+ "description": "The Switch component allows users to toggle between two states.\n---\n\n\n### **Events:**\n - **change** - Dispatched when the switch toggles. Includes boolean `checked` and string/null `value` on `details`.",
2028
2048
  "doc-url": "",
2029
2049
  "attributes": [
2030
- { "name": "name", "value": { "type": "string" } },
2031
- { "name": "value", "value": { "type": "string" } },
2050
+ {
2051
+ "name": "name",
2052
+ "description": "Name used when submitting an HTML form.",
2053
+ "value": { "type": "string" }
2054
+ },
2055
+ {
2056
+ "name": "value",
2057
+ "description": "Value submitted when the switch is checked.\n\nThe component reports `null` as the value in the `change` event when `value` is an empty string.",
2058
+ "value": { "type": "string" }
2059
+ },
2032
2060
  {
2033
2061
  "name": "checked",
2062
+ "description": "Whether the switch is on (checked).",
2034
2063
  "value": { "type": "boolean", "default": "false" }
2035
2064
  },
2036
2065
  {
2037
2066
  "name": "disabled",
2067
+ "description": "Whether the switch is disabled.",
2038
2068
  "value": { "type": "boolean", "default": "false" }
2039
2069
  }
2040
2070
  ],
2041
- "events": [{ "name": "change", "type": "CustomEvent" }],
2071
+ "events": [
2072
+ {
2073
+ "name": "change",
2074
+ "type": "WarpSwitchChangeEvent",
2075
+ "description": "Dispatched when the switch toggles. Includes boolean `checked` and string/null `value` on `details`."
2076
+ }
2077
+ ],
2042
2078
  "js": {
2043
2079
  "properties": [
2044
- { "name": "name", "type": "string" },
2045
- { "name": "value", "type": "string" },
2046
- { "name": "checked", "type": "boolean" },
2047
- { "name": "disabled", "type": "boolean" }
2080
+ {
2081
+ "name": "name",
2082
+ "description": "Name used when submitting an HTML form.",
2083
+ "type": "string"
2084
+ },
2085
+ {
2086
+ "name": "value",
2087
+ "description": "Value submitted when the switch is checked.\n\nThe component reports `null` as the value in the `change` event when `value` is an empty string.",
2088
+ "type": "string"
2089
+ },
2090
+ {
2091
+ "name": "checked",
2092
+ "description": "Whether the switch is on (checked).",
2093
+ "type": "boolean"
2094
+ },
2095
+ {
2096
+ "name": "disabled",
2097
+ "description": "Whether the switch is disabled.",
2098
+ "type": "boolean"
2099
+ }
2048
2100
  ],
2049
- "events": [{ "name": "change", "type": "CustomEvent" }]
2101
+ "events": [
2102
+ {
2103
+ "name": "change",
2104
+ "type": "WarpSwitchChangeEvent",
2105
+ "description": "Dispatched when the switch toggles. Includes boolean `checked` and string/null `value` on `details`."
2106
+ }
2107
+ ]
2050
2108
  }
2051
2109
  },
2052
2110
  {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@warp-ds/elements",
3
3
  "type": "module",
4
- "version": "2.9.1-next.5",
4
+ "version": "2.9.1-next.6",
5
5
  "packageManager": "pnpm@10.33.2",
6
6
  "description": "Custom elements for Warp",
7
7
  "exports": {
@@ -1 +0,0 @@
1
- ## Accessibility
@@ -1 +0,0 @@
1
- ## Examples
@@ -1 +0,0 @@
1
- ## Usage