@warp-ds/elements 2.8.2-next.2 → 2.8.2-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/custom-elements.json +166 -69
  2. package/dist/index.d.ts +63 -11
  3. package/dist/packages/affix/affix.hydration.test.d.ts +1 -0
  4. package/dist/packages/affix/affix.hydration.test.js +33 -0
  5. package/dist/packages/affix/affix.js +3 -3
  6. package/dist/packages/affix/affix.js.map +3 -3
  7. package/dist/packages/alert/alert.hydration.test.d.ts +1 -0
  8. package/dist/packages/alert/alert.hydration.test.js +47 -0
  9. package/dist/packages/alert/alert.js +5 -5
  10. package/dist/packages/alert/alert.js.map +3 -3
  11. package/dist/packages/attention/attention.hydration.test.d.ts +1 -0
  12. package/dist/packages/attention/attention.hydration.test.js +66 -0
  13. package/dist/packages/attention/attention.js +11 -11
  14. package/dist/packages/attention/attention.js.map +3 -3
  15. package/dist/packages/badge/badge.hydration.test.d.ts +1 -0
  16. package/dist/packages/badge/badge.hydration.test.js +50 -0
  17. package/dist/packages/box/box.hydration.test.d.ts +1 -0
  18. package/dist/packages/box/box.hydration.test.js +37 -0
  19. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.d.ts +1 -0
  20. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.js +141 -0
  21. package/dist/packages/breadcrumbs/breadcrumbs.js.map +2 -2
  22. package/dist/packages/button/button.hydration.test.d.ts +1 -0
  23. package/dist/packages/button/button.hydration.test.js +43 -0
  24. package/dist/packages/button/button.js +3 -3
  25. package/dist/packages/button/button.js.map +3 -3
  26. package/dist/packages/button/button.react.stories.d.ts +1 -1
  27. package/dist/packages/card/card.hydration.test.d.ts +1 -0
  28. package/dist/packages/card/card.hydration.test.js +38 -0
  29. package/dist/packages/card/card.react.stories.d.ts +1 -1
  30. package/dist/packages/checkbox/checkbox.d.ts +17 -1
  31. package/dist/packages/checkbox/checkbox.hydration.test.d.ts +1 -0
  32. package/dist/packages/checkbox/checkbox.hydration.test.js +47 -0
  33. package/dist/packages/checkbox/checkbox.js +20 -19
  34. package/dist/packages/checkbox/checkbox.js.map +3 -3
  35. package/dist/packages/checkbox/styles.js +10 -9
  36. package/dist/packages/checkbox-group/checkbox-group.d.ts +7 -0
  37. package/dist/packages/checkbox-group/checkbox-group.hydration.test.d.ts +2 -0
  38. package/dist/packages/checkbox-group/checkbox-group.hydration.test.js +40 -0
  39. package/dist/packages/checkbox-group/checkbox-group.js +14 -14
  40. package/dist/packages/checkbox-group/checkbox-group.js.map +3 -3
  41. package/dist/packages/checkbox-group/checkbox-group.test.js +10 -0
  42. package/dist/packages/combobox/combobox.hydration.test.d.ts +1 -0
  43. package/dist/packages/combobox/combobox.hydration.test.js +43 -0
  44. package/dist/packages/combobox/combobox.react.stories.d.ts +1 -1
  45. package/dist/packages/datepicker/datepicker.hydration.test.d.ts +1 -0
  46. package/dist/packages/datepicker/datepicker.hydration.test.js +40 -0
  47. package/dist/packages/datepicker/datepicker.js +1 -1
  48. package/dist/packages/datepicker/datepicker.js.map +3 -3
  49. package/dist/packages/datepicker/datepicker.react.stories.d.ts +1 -1
  50. package/dist/packages/expandable/expandable.hydration.test.d.ts +1 -0
  51. package/dist/packages/expandable/expandable.hydration.test.js +47 -0
  52. package/dist/packages/expandable/expandable.js +3 -3
  53. package/dist/packages/expandable/expandable.js.map +3 -3
  54. package/dist/packages/icon/icon.hydration.test.d.ts +1 -0
  55. package/dist/packages/icon/icon.hydration.test.js +47 -0
  56. package/dist/packages/icon/icon.js +2 -2
  57. package/dist/packages/icon/icon.js.map +3 -3
  58. package/dist/packages/link/link.hydration.test.d.ts +1 -0
  59. package/dist/packages/link/link.hydration.test.js +54 -0
  60. package/dist/packages/modal/modal.hydration.test.d.ts +1 -0
  61. package/dist/packages/modal/modal.hydration.test.js +25 -0
  62. package/dist/packages/modal-header/modal-header.js +6 -6
  63. package/dist/packages/modal-header/modal-header.js.map +3 -3
  64. package/dist/packages/page-indicator/page-indicator.hydration.test.d.ts +1 -0
  65. package/dist/packages/page-indicator/page-indicator.hydration.test.js +41 -0
  66. package/dist/packages/pagination/pagination.hydration.test.d.ts +1 -0
  67. package/dist/packages/pagination/pagination.hydration.test.js +38 -0
  68. package/dist/packages/pagination/pagination.js +11 -11
  69. package/dist/packages/pagination/pagination.js.map +3 -3
  70. package/dist/packages/pill/pill.hydration.test.d.ts +1 -0
  71. package/dist/packages/pill/pill.hydration.test.js +32 -0
  72. package/dist/packages/pill/pill.js +1 -1
  73. package/dist/packages/pill/pill.js.map +3 -3
  74. package/dist/packages/radio/radio.d.ts +33 -1
  75. package/dist/packages/radio/radio.hydration.test.d.ts +1 -0
  76. package/dist/packages/radio/radio.hydration.test.js +29 -0
  77. package/dist/packages/radio/radio.js +7 -7
  78. package/dist/packages/radio/radio.js.map +3 -3
  79. package/dist/packages/radio/radio.test.js +15 -8
  80. package/dist/packages/radio-group/radio-group.a11y.test.js +4 -0
  81. package/dist/packages/radio-group/radio-group.hydration.test.d.ts +2 -0
  82. package/dist/packages/radio-group/radio-group.hydration.test.js +32 -0
  83. package/dist/packages/radio-group/radio-group.js +17 -17
  84. package/dist/packages/radio-group/radio-group.js.map +3 -3
  85. package/dist/packages/select/select.hydration.test.d.ts +1 -0
  86. package/dist/packages/select/select.hydration.test.js +37 -0
  87. package/dist/packages/select/select.js +1 -1
  88. package/dist/packages/select/select.js.map +3 -3
  89. package/dist/packages/select/select.react.stories.d.ts +1 -1
  90. package/dist/packages/slider/slider.hydration.test.d.ts +1 -0
  91. package/dist/packages/slider/slider.hydration.test.js +33 -0
  92. package/dist/packages/slider/slider.js +9 -9
  93. package/dist/packages/slider/slider.js.map +3 -3
  94. package/dist/packages/slider/slider.test.js +13 -0
  95. package/dist/packages/slider-thumb/slider-thumb.hydration.test.d.ts +1 -0
  96. package/dist/packages/slider-thumb/slider-thumb.hydration.test.js +35 -0
  97. package/dist/packages/slider-thumb/slider-thumb.js +16 -16
  98. package/dist/packages/slider-thumb/slider-thumb.js.map +3 -3
  99. package/dist/packages/step/step.hydration.test.d.ts +1 -0
  100. package/dist/packages/step/step.hydration.test.js +25 -0
  101. package/dist/packages/step/step.js +1 -1
  102. package/dist/packages/step/step.js.map +3 -3
  103. package/dist/packages/step-indicator/step-indicator.hydration.test.d.ts +1 -0
  104. package/dist/packages/step-indicator/step-indicator.hydration.test.js +25 -0
  105. package/dist/packages/switch/switch.a11y.test.js +13 -3
  106. package/dist/packages/switch/switch.d.ts +6 -0
  107. package/dist/packages/switch/switch.hydration.test.d.ts +1 -0
  108. package/dist/packages/switch/switch.hydration.test.js +54 -0
  109. package/dist/packages/switch/switch.js +7 -13
  110. package/dist/packages/switch/switch.js.map +2 -2
  111. package/dist/packages/tab/tab.d.ts +37 -2
  112. package/dist/packages/tab/tab.hydration.test.d.ts +1 -0
  113. package/dist/packages/tab/tab.hydration.test.js +25 -0
  114. package/dist/packages/tab/tab.js +22 -12
  115. package/dist/packages/tab/tab.js.map +3 -3
  116. package/dist/packages/tab-panel/tab-panel.d.ts +21 -0
  117. package/dist/packages/tab-panel/tab-panel.hydration.test.d.ts +1 -0
  118. package/dist/packages/tab-panel/tab-panel.hydration.test.js +21 -0
  119. package/dist/packages/tab-panel/tab-panel.js +16 -5
  120. package/dist/packages/tab-panel/tab-panel.js.map +3 -3
  121. package/dist/packages/tabs/tabs.a11y.test.js +45 -3
  122. package/dist/packages/tabs/tabs.hydration.test.d.ts +1 -0
  123. package/dist/packages/tabs/tabs.hydration.test.js +20 -0
  124. package/dist/packages/tabs/tabs.js +6 -6
  125. package/dist/packages/tabs/tabs.js.map +3 -3
  126. package/dist/packages/tabs/tabs.test.js +52 -4
  127. package/dist/packages/textarea/textarea.hydration.test.d.ts +1 -0
  128. package/dist/packages/textarea/textarea.hydration.test.js +43 -0
  129. package/dist/packages/textarea/textarea.react.stories.d.ts +1 -1
  130. package/dist/packages/textfield/textfield.hydration.test.d.ts +1 -0
  131. package/dist/packages/textfield/textfield.hydration.test.js +43 -0
  132. package/dist/packages/textfield/textfield.react.stories.d.ts +1 -1
  133. package/dist/packages/toast/toast.js +4 -4
  134. package/dist/packages/toast/toast.js.map +3 -3
  135. package/dist/setup-tests.d.ts +2 -1
  136. package/dist/setup-tests.js +4 -3
  137. package/dist/tests/react-hydration.d.ts +20 -0
  138. package/dist/tests/react-hydration.js +138 -0
  139. package/dist/web-types.json +59 -21
  140. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ import './index.js';
@@ -0,0 +1,25 @@
1
+ import { describe, expect, test, beforeEach, afterEach } from 'vitest';
2
+ import { setupHydrationWarningCapture, testHydration } from '../../tests/react-hydration';
3
+ import './index.js';
4
+ describe('w-step-indicator React SSR hydration', () => {
5
+ beforeEach(() => setupHydrationWarningCapture());
6
+ afterEach(() => {
7
+ window.__HYDRATION_WARNINGS__ = [];
8
+ });
9
+ test('default (no attributes) hydrates without warnings', async () => {
10
+ const warnings = await testHydration('w-step-indicator', {});
11
+ expect(warnings).toEqual([]);
12
+ });
13
+ test('horizontal step-indicator hydrates without warnings', async () => {
14
+ const warnings = await testHydration('w-step-indicator', {
15
+ horizontal: true,
16
+ });
17
+ expect(warnings).toEqual([]);
18
+ });
19
+ test('right-aligned step-indicator hydrates without warnings', async () => {
20
+ const warnings = await testHydration('w-step-indicator', {
21
+ right: true,
22
+ });
23
+ expect(warnings).toEqual([]);
24
+ });
25
+ });
@@ -3,19 +3,29 @@ import { html } from 'lit';
3
3
  import { describe, expect, test } from 'vitest';
4
4
  import { render } from 'vitest-browser-lit';
5
5
  import './switch.js';
6
+ // axe-core doesn't support ElementInternals for ARIA attributes.
7
+ // We use ElementInternals for role, aria-checked, and aria-disabled which works
8
+ // correctly with real assistive technologies, but axe-core can't detect them.
9
+ // Disable these rules as a workaround for this axe-core limitation.
10
+ const axeOptions = {
11
+ rules: {
12
+ 'aria-required-attr': { enabled: false },
13
+ 'aria-prohibited-attr': { enabled: false },
14
+ },
15
+ };
6
16
  describe('w-switch accessibility (WCAG 2.2)', () => {
7
17
  describe('axe-core automated checks', () => {
8
18
  test('default state has no violations', async () => {
9
19
  const page = render(html `<w-switch aria-label="Enable notifications"></w-switch>`);
10
- await expect(page).toHaveNoAxeViolations();
20
+ await expect(page).toHaveNoAxeViolations(axeOptions);
11
21
  });
12
22
  test('checked state has no violations', async () => {
13
23
  const page = render(html `<w-switch checked aria-label="Enable notifications"></w-switch>`);
14
- await expect(page).toHaveNoAxeViolations();
24
+ await expect(page).toHaveNoAxeViolations(axeOptions);
15
25
  });
16
26
  test('disabled state has no violations', async () => {
17
27
  const page = render(html `<w-switch disabled aria-label="Enable notifications"></w-switch>`);
18
- await expect(page).toHaveNoAxeViolations();
28
+ await expect(page).toHaveNoAxeViolations(axeOptions);
19
29
  });
20
30
  });
21
31
  describe('WCAG 1.3.1 - Info and Relationships', () => {
@@ -2,6 +2,12 @@ import { LitElement } from 'lit';
2
2
  declare const WarpSwitch_base: import("@open-wc/form-control").Constructor<import("@open-wc/form-control").FormControlInterface> & typeof LitElement;
3
3
  export declare class WarpSwitch extends WarpSwitch_base {
4
4
  #private;
5
+ static shadowRootOptions: {
6
+ delegatesFocus: boolean;
7
+ mode: ShadowRootMode;
8
+ serializable?: boolean;
9
+ slotAssignment?: SlotAssignmentMode;
10
+ };
5
11
  name: string;
6
12
  value: string;
7
13
  checked: boolean;
@@ -0,0 +1 @@
1
+ import './switch.js';
@@ -0,0 +1,54 @@
1
+ import { describe, expect, test, beforeEach, afterEach } from 'vitest';
2
+ import { setupHydrationWarningCapture, testHydration } from '../../tests/react-hydration';
3
+ // Import the custom element definition
4
+ import './switch.js';
5
+ // Switch uses ElementInternals for role/aria-checked/aria-disabled and
6
+ // delegatesFocus for keyboard accessibility. No host attributes needed.
7
+ describe('w-switch React SSR hydration', () => {
8
+ beforeEach(() => {
9
+ setupHydrationWarningCapture();
10
+ });
11
+ afterEach(() => {
12
+ window.__HYDRATION_WARNINGS__ = [];
13
+ });
14
+ test('default (no attributes) hydrates without warnings', async () => {
15
+ const warnings = await testHydration('w-switch', {});
16
+ expect(warnings).toEqual([]);
17
+ });
18
+ test('with aria-label hydrates without warnings', async () => {
19
+ const warnings = await testHydration('w-switch', {
20
+ 'aria-label': 'Toggle notifications',
21
+ });
22
+ expect(warnings).toEqual([]);
23
+ });
24
+ test('checked state hydrates without warnings', async () => {
25
+ const warnings = await testHydration('w-switch', {
26
+ checked: true,
27
+ 'aria-label': 'Toggle notifications',
28
+ });
29
+ expect(warnings).toEqual([]);
30
+ });
31
+ test('disabled state hydrates without warnings', async () => {
32
+ const warnings = await testHydration('w-switch', {
33
+ disabled: true,
34
+ 'aria-label': 'Toggle notifications',
35
+ });
36
+ expect(warnings).toEqual([]);
37
+ });
38
+ test('checked and disabled state hydrates without warnings', async () => {
39
+ const warnings = await testHydration('w-switch', {
40
+ checked: true,
41
+ disabled: true,
42
+ 'aria-label': 'Toggle notifications',
43
+ });
44
+ expect(warnings).toEqual([]);
45
+ });
46
+ test('with name and value hydrates without warnings', async () => {
47
+ const warnings = await testHydration('w-switch', {
48
+ name: 'notifications',
49
+ value: 'enabled',
50
+ 'aria-label': 'Toggle notifications',
51
+ });
52
+ expect(warnings).toEqual([]);
53
+ });
54
+ });
@@ -1,4 +1,4 @@
1
- var J=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var W=a=>{throw TypeError(a)};var F=(a,e,r,t)=>{for(var n=t>1?void 0:t?Q(e,r):e,p=a.length-1,w;p>=0;p--)(w=a[p])&&(n=(t?w(e,r,n):w(n))||n);return t&&n&&J(e,r,n),n};var K=(a,e,r)=>e.has(a)||W("Cannot "+r);var N=(a,e,r)=>(K(a,e,"read from private field"),r?r.call(a):e.get(a)),U=(a,e,r)=>e.has(a)?W("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(a):e.set(a,r),$=(a,e,r,t)=>(K(a,e,"write to private field"),t?t.call(a,r):e.set(a,r),r);var Y=function(){for(var a=[],e=arguments.length;e--;)a[e]=arguments[e];return a.reduce(function(r,t){return r.concat(typeof t=="string"?t:Array.isArray(t)?Y.apply(void 0,t):typeof t=="object"&&t?Object.keys(t).map(function(n){return t[n]?n:""}):"")},[]).join(" ")};var s=function(a,e,r,t){if(r==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?a!==e||!t:!e.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?t:r==="a"?t.call(a):t?t.value:e.get(a)},d=function(a,e,r,t,n){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?a!==e||!n:!e.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?n.call(a,r):n?n.value=r:e.set(a,r),r};function I(a){var e,r,t,n,p,w,m,B,k,j,X,Z,V,x,E,g,D,S,T;class H extends a{constructor(...o){var i,l,c;super(...o),e.add(this),this.internals=this.attachInternals(),r.set(this,!1),t.set(this,!1),n.set(this,!1),p.set(this,void 0),w.set(this,void 0),m.set(this,!0),k.set(this,""),j.set(this,()=>{d(this,n,!0,"f"),d(this,r,!0,"f"),s(this,e,"m",g).call(this)}),X.set(this,()=>{d(this,r,!1,"f"),s(this,e,"m",D).call(this,this.shouldFormValueUpdate()?s(this,k,"f"):""),!this.validity.valid&&s(this,n,"f")&&d(this,t,!0,"f");let v=s(this,e,"m",g).call(this);this.validationMessageCallback&&this.validationMessageCallback(v?this.internals.validationMessage:"")}),Z.set(this,()=>{var v;s(this,m,"f")&&this.validationTarget&&(this.internals.setValidity(this.validity,this.validationMessage,this.validationTarget),d(this,m,!1,"f")),d(this,n,!0,"f"),d(this,t,!0,"f"),s(this,e,"m",g).call(this),(v=this===null||this===void 0?void 0:this.validationMessageCallback)===null||v===void 0||v.call(this,this.showError?this.internals.validationMessage:"")}),V.set(this,void 0),x.set(this,!1),E.set(this,Promise.resolve()),(i=this.addEventListener)===null||i===void 0||i.call(this,"focus",s(this,j,"f")),(l=this.addEventListener)===null||l===void 0||l.call(this,"blur",s(this,X,"f")),(c=this.addEventListener)===null||c===void 0||c.call(this,"invalid",s(this,Z,"f")),this.setValue(null)}static get formAssociated(){return!0}static get validators(){return this.formControlValidators||[]}static get observedAttributes(){let o=this.validators.map(c=>c.attribute).flat(),i=super.observedAttributes||[];return[...new Set([...i,...o])]}static getValidator(o){return this.validators.find(i=>i.attribute===o)||null}static getValidators(o){return this.validators.filter(i=>{var l;if(i.attribute===o||!((l=i.attribute)===null||l===void 0)&&l.includes(o))return!0})}get form(){return this.internals.form}get showError(){return s(this,e,"m",g).call(this)}checkValidity(){return this.internals.checkValidity()}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}attributeChangedCallback(o,i,l){var c;(c=super.attributeChangedCallback)===null||c===void 0||c.call(this,o,i,l);let _=this.constructor.getValidators(o);_!=null&&_.length&&this.validationTarget&&this.setValue(s(this,k,"f"))}setValue(o){var i;d(this,t,!1,"f"),(i=this.validationMessageCallback)===null||i===void 0||i.call(this,""),d(this,k,o,"f");let c=this.shouldFormValueUpdate()?o:null;this.internals.setFormValue(c),s(this,e,"m",D).call(this,c),this.valueChangedCallback&&this.valueChangedCallback(c),s(this,e,"m",g).call(this)}shouldFormValueUpdate(){return!0}get validationComplete(){return new Promise(o=>o(s(this,E,"f")))}formResetCallback(){var o,i;d(this,n,!1,"f"),d(this,t,!1,"f"),s(this,e,"m",g).call(this),(o=this.resetFormControl)===null||o===void 0||o.call(this),(i=this.validationMessageCallback)===null||i===void 0||i.call(this,s(this,e,"m",g).call(this)?this.validationMessage:"")}}return r=new WeakMap,t=new WeakMap,n=new WeakMap,p=new WeakMap,w=new WeakMap,m=new WeakMap,k=new WeakMap,j=new WeakMap,X=new WeakMap,Z=new WeakMap,V=new WeakMap,x=new WeakMap,E=new WeakMap,e=new WeakSet,B=function(){let o=this.getRootNode(),i=`${this.localName}[name="${this.getAttribute("name")}"]`;return o.querySelectorAll(i)},g=function(){if(this.hasAttribute("disabled"))return!1;let o=s(this,t,"f")||s(this,n,"f")&&!this.validity.valid&&!s(this,r,"f");return o&&this.internals.states?this.internals.states.add("--show-error"):this.internals.states&&this.internals.states.delete("--show-error"),o},D=function(o){let i=this.constructor,l={},c=i.validators,v=[],_=c.some(h=>h.isValid instanceof Promise);s(this,x,"f")||(d(this,E,new Promise(h=>{d(this,V,h,"f")}),"f"),d(this,x,!0,"f")),s(this,p,"f")&&(s(this,p,"f").abort(),d(this,w,s(this,p,"f"),"f"));let z=new AbortController;d(this,p,z,"f");let C,O=!1;c.length&&(c.forEach(h=>{let P=h.key||"customError",f=h.isValid(this,o,z.signal);f instanceof Promise?(v.push(f),f.then(L=>{L!=null&&(l[P]=!L,C=s(this,e,"m",T).call(this,h,o),s(this,e,"m",S).call(this,l,C))})):(l[P]=!f,this.validity[P]!==!f&&(O=!0),!f&&!C&&(C=s(this,e,"m",T).call(this,h,o)))}),Promise.allSettled(v).then(()=>{var h;z!=null&&z.signal.aborted||(d(this,x,!1,"f"),(h=s(this,V,"f"))===null||h===void 0||h.call(this))}),(O||!_)&&s(this,e,"m",S).call(this,l,C))},S=function(o,i){if(this.validationTarget)this.internals.setValidity(o,i,this.validationTarget),d(this,m,!1,"f");else{if(this.internals.setValidity(o,i),this.internals.validity.valid)return;d(this,m,!0,"f")}},T=function(o,i){if(this.validityCallback){let l=this.validityCallback(o.key||"customError");if(l)return l}return o.message instanceof Function?o.message(this,i):o.message},H}import{css as re,html as oe,LitElement as te}from"lit";import{property as A}from"lit/decorators.js";import{css as G}from"lit";var R=G`
1
+ var Q=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var W=a=>{throw TypeError(a)};var F=(a,e,r,t)=>{for(var n=t>1?void 0:t?ee(e,r):e,p=a.length-1,w;p>=0;p--)(w=a[p])&&(n=(t?w(e,r,n):w(n))||n);return t&&n&&Q(e,r,n),n};var K=(a,e,r)=>e.has(a)||W("Cannot "+r);var N=(a,e,r)=>(K(a,e,"read from private field"),r?r.call(a):e.get(a)),$=(a,e,r)=>e.has(a)?W("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(a):e.set(a,r),U=(a,e,r,t)=>(K(a,e,"write to private field"),t?t.call(a,r):e.set(a,r),r);var Y=function(){for(var a=[],e=arguments.length;e--;)a[e]=arguments[e];return a.reduce(function(r,t){return r.concat(typeof t=="string"?t:Array.isArray(t)?Y.apply(void 0,t):typeof t=="object"&&t?Object.keys(t).map(function(n){return t[n]?n:""}):"")},[]).join(" ")};var s=function(a,e,r,t){if(r==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?a!==e||!t:!e.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?t:r==="a"?t.call(a):t?t.value:e.get(a)},d=function(a,e,r,t,n){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?a!==e||!n:!e.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?n.call(a,r):n?n.value=r:e.set(a,r),r};function R(a){var e,r,t,n,p,w,m,H,k,j,X,Z,V,x,E,u,D,S,T;class J extends a{constructor(...o){var i,l,c;super(...o),e.add(this),this.internals=this.attachInternals(),r.set(this,!1),t.set(this,!1),n.set(this,!1),p.set(this,void 0),w.set(this,void 0),m.set(this,!0),k.set(this,""),j.set(this,()=>{d(this,n,!0,"f"),d(this,r,!0,"f"),s(this,e,"m",u).call(this)}),X.set(this,()=>{d(this,r,!1,"f"),s(this,e,"m",D).call(this,this.shouldFormValueUpdate()?s(this,k,"f"):""),!this.validity.valid&&s(this,n,"f")&&d(this,t,!0,"f");let g=s(this,e,"m",u).call(this);this.validationMessageCallback&&this.validationMessageCallback(g?this.internals.validationMessage:"")}),Z.set(this,()=>{var g;s(this,m,"f")&&this.validationTarget&&(this.internals.setValidity(this.validity,this.validationMessage,this.validationTarget),d(this,m,!1,"f")),d(this,n,!0,"f"),d(this,t,!0,"f"),s(this,e,"m",u).call(this),(g=this===null||this===void 0?void 0:this.validationMessageCallback)===null||g===void 0||g.call(this,this.showError?this.internals.validationMessage:"")}),V.set(this,void 0),x.set(this,!1),E.set(this,Promise.resolve()),(i=this.addEventListener)===null||i===void 0||i.call(this,"focus",s(this,j,"f")),(l=this.addEventListener)===null||l===void 0||l.call(this,"blur",s(this,X,"f")),(c=this.addEventListener)===null||c===void 0||c.call(this,"invalid",s(this,Z,"f")),this.setValue(null)}static get formAssociated(){return!0}static get validators(){return this.formControlValidators||[]}static get observedAttributes(){let o=this.validators.map(c=>c.attribute).flat(),i=super.observedAttributes||[];return[...new Set([...i,...o])]}static getValidator(o){return this.validators.find(i=>i.attribute===o)||null}static getValidators(o){return this.validators.filter(i=>{var l;if(i.attribute===o||!((l=i.attribute)===null||l===void 0)&&l.includes(o))return!0})}get form(){return this.internals.form}get showError(){return s(this,e,"m",u).call(this)}checkValidity(){return this.internals.checkValidity()}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}attributeChangedCallback(o,i,l){var c;(c=super.attributeChangedCallback)===null||c===void 0||c.call(this,o,i,l);let _=this.constructor.getValidators(o);_!=null&&_.length&&this.validationTarget&&this.setValue(s(this,k,"f"))}setValue(o){var i;d(this,t,!1,"f"),(i=this.validationMessageCallback)===null||i===void 0||i.call(this,""),d(this,k,o,"f");let c=this.shouldFormValueUpdate()?o:null;this.internals.setFormValue(c),s(this,e,"m",D).call(this,c),this.valueChangedCallback&&this.valueChangedCallback(c),s(this,e,"m",u).call(this)}shouldFormValueUpdate(){return!0}get validationComplete(){return new Promise(o=>o(s(this,E,"f")))}formResetCallback(){var o,i;d(this,n,!1,"f"),d(this,t,!1,"f"),s(this,e,"m",u).call(this),(o=this.resetFormControl)===null||o===void 0||o.call(this),(i=this.validationMessageCallback)===null||i===void 0||i.call(this,s(this,e,"m",u).call(this)?this.validationMessage:"")}}return r=new WeakMap,t=new WeakMap,n=new WeakMap,p=new WeakMap,w=new WeakMap,m=new WeakMap,k=new WeakMap,j=new WeakMap,X=new WeakMap,Z=new WeakMap,V=new WeakMap,x=new WeakMap,E=new WeakMap,e=new WeakSet,H=function(){let o=this.getRootNode(),i=`${this.localName}[name="${this.getAttribute("name")}"]`;return o.querySelectorAll(i)},u=function(){if(this.hasAttribute("disabled"))return!1;let o=s(this,t,"f")||s(this,n,"f")&&!this.validity.valid&&!s(this,r,"f");return o&&this.internals.states?this.internals.states.add("--show-error"):this.internals.states&&this.internals.states.delete("--show-error"),o},D=function(o){let i=this.constructor,l={},c=i.validators,g=[],_=c.some(h=>h.isValid instanceof Promise);s(this,x,"f")||(d(this,E,new Promise(h=>{d(this,V,h,"f")}),"f"),d(this,x,!0,"f")),s(this,p,"f")&&(s(this,p,"f").abort(),d(this,w,s(this,p,"f"),"f"));let z=new AbortController;d(this,p,z,"f");let C,L=!1;c.length&&(c.forEach(h=>{let O=h.key||"customError",f=h.isValid(this,o,z.signal);f instanceof Promise?(g.push(f),f.then(P=>{P!=null&&(l[O]=!P,C=s(this,e,"m",T).call(this,h,o),s(this,e,"m",S).call(this,l,C))})):(l[O]=!f,this.validity[O]!==!f&&(L=!0),!f&&!C&&(C=s(this,e,"m",T).call(this,h,o)))}),Promise.allSettled(g).then(()=>{var h;z!=null&&z.signal.aborted||(d(this,x,!1,"f"),(h=s(this,V,"f"))===null||h===void 0||h.call(this))}),(L||!_)&&s(this,e,"m",S).call(this,l,C))},S=function(o,i){if(this.validationTarget)this.internals.setValidity(o,i,this.validationTarget),d(this,m,!1,"f");else{if(this.internals.setValidity(o,i),this.internals.validity.valid)return;d(this,m,!0,"f")}},T=function(o,i){if(this.validityCallback){let l=this.validityCallback(o.key||"customError");if(l)return l}return o.message instanceof Function?o.message(this,i):o.message},J}import{css as oe,html as te,LitElement as B}from"lit";import{property as A}from"lit/decorators.js";import{css as G}from"lit";var I=G`
2
2
  *,
3
3
  :before,
4
4
  :after {
@@ -2437,12 +2437,12 @@ var J=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var W=a=>{thro
2437
2437
  display: none
2438
2438
  }
2439
2439
  }
2440
- `;import{css as ee}from"lit";var q=ee`*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.bg-\\[--w-s-color-border-strong\\]{background-color:var(--w-s-color-border-strong)}.group:hover .group-hover\\:bg-\\[--w-s-color-border-strong-hover\\]{background-color:var(--w-s-color-border-strong-hover)}.border{border-width:1px}.rounded-full{border-radius:9999px}.block{display:block}.focusable:focus{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:focus-visible{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:not(:focus-visible){outline:none}.left-0{left:0}.left-4{left:.4rem}.top-0{top:0}.top-4{top:.4rem}.absolute{position:absolute}.relative{position:relative}.static{position:static}.s-bg{background-color:var(--w-s-color-background)}.s-bg-disabled{background-color:var(--w-s-color-background-disabled)}.s-bg-disabled-subtle{background-color:var(--w-s-color-background-disabled-subtle)}.s-bg-primary{background-color:var(--w-s-color-background-primary)}.group:hover .group-hover\\:s-bg-hover{background-color:var(--w-s-color-background-hover)}.group:hover .group-hover\\:s-bg-primary-hover{background-color:var(--w-s-color-background-primary-hover)}.s-border-disabled{border-color:var(--w-s-color-border-disabled)}.s-border-strong{border-color:var(--w-s-color-border-strong)}.group:hover .group-hover\\:s-border-strong-hover{border-color:var(--w-s-color-border-strong-hover)}.h-16{height:1.6rem}.h-24{height:2.4rem}.h-full{height:100%}.w-16{width:1.6rem}.w-44{width:4.4rem}.w-full{width:100%}.cursor-pointer{cursor:pointer}.pointer-events-none{pointer-events:none}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.translate-x-20{--w-translate-x:2rem;transform:translateX(var(--w-translate-x))translateY(var(--w-translate-y))translateZ(var(--w-translate-z))rotate(var(--w-rotate))rotateX(var(--w-rotate-x))rotateY(var(--w-rotate-y))rotateZ(var(--w-rotate-z))skewX(var(--w-skew-x))skewY(var(--w-skew-y))scaleX(var(--w-scale-x))scaleY(var(--w-scale-y))scaleZ(var(--w-scale-z))}.transform-gpu{transform:translate3d(var(--w-translate-x),var(--w-translate-y),var(--w-translate-z))rotate(var(--w-rotate))rotateX(var(--w-rotate-x))rotateY(var(--w-rotate-y))rotateZ(var(--w-rotate-z))skewX(var(--w-skew-x))skewY(var(--w-skew-y))scaleX(var(--w-scale-x))scaleY(var(--w-scale-y))scaleZ(var(--w-scale-z))}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}`;var b={base:"block relative h-24 w-44 cursor-pointer group focusable rounded-full",disabled:"pointer-events-none",track:"absolute top-0 left-0 h-full w-full rounded-full transition-colors",trackActive:"s-bg-primary group-hover:s-bg-primary-hover",trackInactive:"s-bg border s-border-strong group-hover:s-bg-hover group-hover:s-border-strong-hover",trackDisabledOn:"s-bg-disabled",trackDisabledOff:"s-bg-disabled-subtle border s-border-disabled",handle:"absolute transform-gpu h-16 w-16 top-4 left-4 rounded-full transition-transform",handleSelected:"translate-x-20",handleActive:"s-bg",handleNotDisabled:"bg-[--w-s-color-border-strong] group-hover:bg-[--w-s-color-border-strong-hover]",handleDisabledOn:"s-bg-disabled-subtle",handleDisabledOff:"s-bg-disabled",a11y:"sr-only"},M,u=class extends I(te){constructor(){super(...arguments);this.name="";this.value="";this.checked=!1;this.disabled=!1;U(this,M,null);this._handleHostClick=r=>{this.disabled||r.composedPath()[0]===this&&this._handleClick()};this._handleKeyDown=r=>{this.disabled||r.altKey||r.ctrlKey||r.metaKey||r.shiftKey||(r.key===" "||r.key==="Enter")&&(r.preventDefault(),this._handleClick())}}get _baseClasses(){return Y([b.base,this.disabled&&b.disabled])}get _trackClasses(){return Y([b.track,this.disabled?this.checked?b.trackDisabledOn:b.trackDisabledOff:this.checked?b.trackActive:b.trackInactive])}get _handleClasses(){return Y([b.handle,this.checked&&b.handleSelected,this.disabled?this.checked?b.handleDisabledOn:b.handleDisabledOff:this.checked?b.handleActive:b.handleNotDisabled])}_handleClick(){this.disabled||(this.checked=!this.checked,this.dispatchEvent(new CustomEvent("change",{detail:{checked:this.checked,value:this.value||null},bubbles:!0,composed:!0})))}_syncA11yState(){if(this.internals.ariaChecked=this.checked?"true":"false",this.tabIndex=this.disabled?-1:0,this.disabled){this.internals.ariaDisabled="true";return}this.internals.ariaDisabled=null}connectedCallback(){$(this,M,this.checked),super.connectedCallback(),this.internals.role="switch";let r=this.getAttribute("aria-label");r&&(this.internals.ariaLabel=r,this.removeAttribute("aria-label")),this.disabled||this.setValue(this.checked&&this.value?this.value:null),this._syncA11yState(),this.addEventListener("click",this._handleHostClick),this.addEventListener("keydown",this._handleKeyDown)}disconnectedCallback(){this.removeEventListener("click",this._handleHostClick),this.removeEventListener("keydown",this._handleKeyDown),super.disconnectedCallback()}willUpdate(r){r.has("checked")&&(this.disabled||this.setValue(this.checked&&this.value?this.value:null)),(r.has("checked")||r.has("disabled"))&&this._syncA11yState()}resetFormControl(){this.checked=N(this,M)}render(){return oe`
2440
+ `;import{css as re}from"lit";var q=re`*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.bg-\\[--w-s-color-border-strong\\]{background-color:var(--w-s-color-border-strong)}.group:hover .group-hover\\:bg-\\[--w-s-color-border-strong-hover\\]{background-color:var(--w-s-color-border-strong-hover)}.border{border-width:1px}.rounded-full{border-radius:9999px}.block{display:block}.focusable:focus{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:focus-visible{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:not(:focus-visible){outline:none}.left-0{left:0}.left-4{left:.4rem}.top-0{top:0}.top-4{top:.4rem}.absolute{position:absolute}.relative{position:relative}.static{position:static}.s-bg{background-color:var(--w-s-color-background)}.s-bg-disabled{background-color:var(--w-s-color-background-disabled)}.s-bg-disabled-subtle{background-color:var(--w-s-color-background-disabled-subtle)}.s-bg-primary{background-color:var(--w-s-color-background-primary)}.group:hover .group-hover\\:s-bg-hover{background-color:var(--w-s-color-background-hover)}.group:hover .group-hover\\:s-bg-primary-hover{background-color:var(--w-s-color-background-primary-hover)}.s-border-disabled{border-color:var(--w-s-color-border-disabled)}.s-border-strong{border-color:var(--w-s-color-border-strong)}.group:hover .group-hover\\:s-border-strong-hover{border-color:var(--w-s-color-border-strong-hover)}.h-16{height:1.6rem}.h-24{height:2.4rem}.h-full{height:100%}.w-16{width:1.6rem}.w-44{width:4.4rem}.w-full{width:100%}.cursor-pointer{cursor:pointer}.pointer-events-none{pointer-events:none}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.translate-x-20{--w-translate-x:2rem;transform:translateX(var(--w-translate-x))translateY(var(--w-translate-y))translateZ(var(--w-translate-z))rotate(var(--w-rotate))rotateX(var(--w-rotate-x))rotateY(var(--w-rotate-y))rotateZ(var(--w-rotate-z))skewX(var(--w-skew-x))skewY(var(--w-skew-y))scaleX(var(--w-scale-x))scaleY(var(--w-scale-y))scaleZ(var(--w-scale-z))}.transform-gpu{transform:translate3d(var(--w-translate-x),var(--w-translate-y),var(--w-translate-z))rotate(var(--w-rotate))rotateX(var(--w-rotate-x))rotateY(var(--w-rotate-y))rotateZ(var(--w-rotate-z))skewX(var(--w-skew-x))skewY(var(--w-skew-y))scaleX(var(--w-scale-x))scaleY(var(--w-scale-y))scaleZ(var(--w-scale-z))}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}`;var b={base:"block relative h-24 w-44 cursor-pointer group focusable rounded-full",disabled:"pointer-events-none",track:"absolute top-0 left-0 h-full w-full rounded-full transition-colors",trackActive:"s-bg-primary group-hover:s-bg-primary-hover",trackInactive:"s-bg border s-border-strong group-hover:s-bg-hover group-hover:s-border-strong-hover",trackDisabledOn:"s-bg-disabled",trackDisabledOff:"s-bg-disabled-subtle border s-border-disabled",handle:"absolute transform-gpu h-16 w-16 top-4 left-4 rounded-full transition-transform",handleSelected:"translate-x-20",handleActive:"s-bg",handleNotDisabled:"bg-[--w-s-color-border-strong] group-hover:bg-[--w-s-color-border-strong-hover]",handleDisabledOn:"s-bg-disabled-subtle",handleDisabledOff:"s-bg-disabled",a11y:"sr-only"},M,v=class extends R(B){constructor(){super(...arguments);this.checked=!1;this.disabled=!1;$(this,M,null);this._handleHostClick=r=>{this.disabled||r.composedPath()[0]===this&&this._handleClick()};this._handleKeyDown=r=>{this.disabled||r.altKey||r.ctrlKey||r.metaKey||r.shiftKey||(r.key===" "||r.key==="Enter")&&(r.preventDefault(),this._handleClick())}}get _baseClasses(){return Y([b.base,this.disabled&&b.disabled])}get _trackClasses(){return Y([b.track,this.disabled?this.checked?b.trackDisabledOn:b.trackDisabledOff:this.checked?b.trackActive:b.trackInactive])}get _handleClasses(){return Y([b.handle,this.checked&&b.handleSelected,this.disabled?this.checked?b.handleDisabledOn:b.handleDisabledOff:this.checked?b.handleActive:b.handleNotDisabled])}_handleClick(){this.disabled||(this.checked=!this.checked,this.dispatchEvent(new CustomEvent("change",{detail:{checked:this.checked,value:this.value||null},bubbles:!0,composed:!0})))}_syncA11yState(){this.internals.ariaChecked=this.checked?"true":"false",this.internals.ariaDisabled=this.disabled?"true":null}connectedCallback(){U(this,M,this.checked),super.connectedCallback(),this.internals.role="switch";let r=this.getAttribute("aria-label");r&&(this.internals.ariaLabel=r),this.disabled||this.setValue(this.checked&&this.value?this.value:null),this._syncA11yState(),this.addEventListener("click",this._handleHostClick),this.addEventListener("keydown",this._handleKeyDown)}disconnectedCallback(){this.removeEventListener("click",this._handleHostClick),this.removeEventListener("keydown",this._handleKeyDown),super.disconnectedCallback()}willUpdate(r){r.has("checked")&&(this.disabled||this.setValue(this.checked&&this.value?this.value:null)),(r.has("checked")||r.has("disabled"))&&this._syncA11yState()}resetFormControl(){this.checked=N(this,M)}render(){return te`
2441
2441
  <div>
2442
2442
  <button
2443
2443
  type="button"
2444
2444
  role="none"
2445
- tabindex="-1"
2445
+ tabindex=${this.disabled?-1:0}
2446
2446
  class=${this._baseClasses}
2447
2447
  ?disabled=${this.disabled}
2448
2448
  @click=${this._handleClick}
@@ -2451,24 +2451,18 @@ var J=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var W=a=>{thro
2451
2451
  <span data-testid="handle" class=${this._handleClasses}></span>
2452
2452
  </button>
2453
2453
  </div>
2454
- `}};M=new WeakMap,u.styles=[R,q,re`
2454
+ `}};M=new WeakMap,v.shadowRootOptions={...B.shadowRootOptions,delegatesFocus:!0},v.styles=[I,q,oe`
2455
2455
  :host {
2456
2456
  display: inline-block;
2457
2457
  }
2458
2458
 
2459
- :host(:focus),
2460
- :host(:focus-visible) {
2459
+ button:focus {
2461
2460
  outline: none;
2462
2461
  }
2463
2462
 
2464
- :host(:focus) button,
2465
- :host(:focus-visible) button {
2463
+ button:focus-visible {
2466
2464
  outline: 2px solid var(--w-s-color-border-focus);
2467
2465
  outline-offset: var(--w-outline-offset, 1px);
2468
2466
  }
2469
-
2470
- :host(:focus:not(:focus-visible)) button {
2471
- outline: none;
2472
- }
2473
- `],F([A({type:String,reflect:!0})],u.prototype,"name",2),F([A({type:String,reflect:!0})],u.prototype,"value",2),F([A({type:Boolean,reflect:!0})],u.prototype,"checked",2),F([A({type:Boolean,reflect:!0})],u.prototype,"disabled",2);customElements.get("w-switch")||customElements.define("w-switch",u);export{u as WarpSwitch};
2467
+ `],F([A({type:String,reflect:!0})],v.prototype,"name",2),F([A({type:String,reflect:!0})],v.prototype,"value",2),F([A({type:Boolean,reflect:!0})],v.prototype,"checked",2),F([A({type:Boolean,reflect:!0})],v.prototype,"disabled",2);customElements.get("w-switch")||customElements.define("w-switch",v);export{v as WarpSwitch};
2474
2468
  //# sourceMappingURL=switch.js.map