@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
@@ -6,13 +6,47 @@ import { LitElement, PropertyValues } from 'lit';
6
6
  */
7
7
  export declare class WarpTab extends LitElement {
8
8
  static styles: import("lit").CSSResult[];
9
+ static shadowRootOptions: {
10
+ delegatesFocus: boolean;
11
+ mode: ShadowRootMode;
12
+ serializable?: boolean;
13
+ slotAssignment?: SlotAssignmentMode;
14
+ };
9
15
  private _internals;
10
16
  private _handleClick;
11
17
  constructor();
12
18
  id: string;
13
19
  for: string;
14
- ariaSelected: 'true' | 'false';
15
- tabIndex: number;
20
+ private _ariaControlsAttr?;
21
+ /**
22
+ * Internal tabindex managed by parent w-tabs.
23
+ * Non-reflecting to avoid DOM changes during hydration.
24
+ * @internal
25
+ */
26
+ _parentTabIndex: number | undefined;
27
+ /**
28
+ * Internal aria-selected managed by parent w-tabs.
29
+ * Non-reflecting to avoid DOM changes during hydration.
30
+ * @internal
31
+ */
32
+ _parentAriaSelected: 'true' | 'false' | undefined;
33
+ /**
34
+ * Override tabIndex getter to return the computed internal tabIndex.
35
+ * This allows external code to check if the tab is focusable.
36
+ */
37
+ get tabIndex(): number;
38
+ /**
39
+ * Override tabIndex setter to set _parentTabIndex (for backwards compatibility).
40
+ */
41
+ set tabIndex(value: number);
42
+ /**
43
+ * Computed aria-selected: prefers parent-managed, falls back to own property
44
+ */
45
+ get _computedAriaSelected(): 'true' | 'false' | undefined;
46
+ private get _effectiveAriaControls();
47
+ set ariaSelected(value: 'true' | 'false');
48
+ get ariaSelected(): 'true' | 'false';
49
+ private _ownAriaSelected;
16
50
  /**
17
51
  * @deprecated Use `aria-selected="true"` instead
18
52
  */
@@ -23,5 +57,6 @@ export declare class WarpTab extends LitElement {
23
57
  connectedCallback(): void;
24
58
  disconnectedCallback(): void;
25
59
  updated(changedProperties: PropertyValues<this>): void;
60
+ private syncAriaControls;
26
61
  render(): import("lit").TemplateResult<1>;
27
62
  }
@@ -0,0 +1 @@
1
+ import './tab.js';
@@ -0,0 +1,25 @@
1
+ import { describe, expect, test, beforeEach, afterEach } from 'vitest';
2
+ import { setupHydrationWarningCapture, testHydration } from '../../tests/react-hydration';
3
+ import './tab.js';
4
+ describe('w-tab 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-tab', {});
11
+ expect(warnings).toEqual([]);
12
+ });
13
+ test('with for hydrates without warnings', async () => {
14
+ const warnings = await testHydration('w-tab', { for: 'panel1' });
15
+ expect(warnings).toEqual([]);
16
+ });
17
+ test('active tab hydrates without warnings', async () => {
18
+ const warnings = await testHydration('w-tab', { for: 'panel1', active: true });
19
+ expect(warnings).toEqual([]);
20
+ });
21
+ test('with id hydrates without warnings', async () => {
22
+ const warnings = await testHydration('w-tab', { for: 'panel1', id: 'tab1' });
23
+ expect(warnings).toEqual([]);
24
+ });
25
+ });
@@ -1,4 +1,4 @@
1
- var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var i=(l,a,e,r)=>{for(var o=r>1?void 0:r?m(a,e):a,c=l.length-1,b;c>=0;c--)(b=l[c])&&(o=(r?b(a,e,o):b(o))||o);return r&&o&&u(a,e,o),o};var p=function(){for(var l=[],a=arguments.length;a--;)l[a]=arguments[a];return l.reduce(function(e,r){return e.concat(typeof r=="string"?r:Array.isArray(r)?p.apply(void 0,r):typeof r=="object"&&r?Object.keys(r).map(function(o){return r[o]?o:""}):"")},[]).join(" ")};import{css as f,html as s,LitElement as x}from"lit";import{property as d}from"lit/decorators.js";import{css as g}from"lit";var v=g`
1
+ var f=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var i=(d,a,e,r)=>{for(var o=r>1?void 0:r?x(a,e):a,n=d.length-1,c;n>=0;n--)(c=d[n])&&(o=(r?c(a,e,o):c(o))||o);return r&&o&&f(a,e,o),o};var p=function(){for(var d=[],a=arguments.length;a--;)d[a]=arguments[a];return d.reduce(function(e,r){return e.concat(typeof r=="string"?r:Array.isArray(r)?p.apply(void 0,r):typeof r=="object"&&r?Object.keys(r).map(function(o){return r[o]?o:""}):"")},[]).join(" ")};import{css as y,html as b,LitElement as w}from"lit";import{property as l}from"lit/decorators.js";import{css as u}from"lit";var h=u`
2
2
  *,
3
3
  :before,
4
4
  :after {
@@ -271,7 +271,7 @@ var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var i=(l,a,e,r
271
271
  svg {
272
272
  pointer-events: none;
273
273
  }
274
- `,j=g`*, :before, :after {
274
+ `,A=u`*, :before, :after {
275
275
  --w-rotate: 0;
276
276
  --w-rotate-x: 0;
277
277
  --w-rotate-y: 0;
@@ -2437,26 +2437,36 @@ var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var i=(l,a,e,r
2437
2437
  display: none
2438
2438
  }
2439
2439
  }
2440
- `;import{css as w}from"lit";var h=w`*,: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}.border-b{border-bottom-width:1px}.border-b-4{border-bottom-width:4px}.inline-block{display:inline-block}.inline-grid{display:inline-grid}.hidden{display:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.-bottom-0{bottom:0}.absolute{position:absolute}.relative{position:relative}.static{position:static}.s-border{border-color:var(--w-s-color-border)}.s-border-selected{border-color:var(--w-s-color-border-selected)}.-mb-1{margin-bottom:-.1rem}.mb-32{margin-bottom:3.2rem}.resize{resize:both}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.bg-transparent{background-color:#0000}.appearance-none{-webkit-appearance:none;appearance:none}.border-0{border-width:0}.border-b-4{border-bottom-width:4px}.border-transparent{border-color:#0000}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.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}.gap-8{gap:.8rem}.focus\\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.items-center{align-items:center}.justify-center{justify-content:center}.static{position:static}.s-text-link{color:var(--w-s-color-text-link)}.s-text-subtle{color:var(--w-s-color-text-subtle)}.hover\\:s-text-link:hover{color:var(--w-s-color-text-link)}.s-border-selected{border-color:var(--w-s-color-border-selected)}.hover\\:s-border-primary:hover{border-color:var(--w-s-color-border-primary)}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.p-0{padding:0}.p-16{padding:1.6rem}.pb-8{padding-bottom:.8rem}.cursor-pointer{cursor:pointer}.font-bold{font-weight:700}.w-full{width: 100%;}`;var n={base:"grid w-full items-center font-bold gap-8 antialias p-16 pb-8 border-b-4 bg-transparent border-transparent hover:s-text-link hover:s-border-primary",inactive:"s-text-subtle",active:"s-text-link s-border-selected",icon:"mx-auto",content:"flex items-center justify-center gap-8",contentUnderlined:"content-underlined"},k="focus:outline-none appearance-none cursor-pointer bg-transparent border-0 m-0 p-0 inline-block",t=class extends x{constructor(){super();this._handleClick=e=>{e.tab||(e.tab=this)};this.id="";this.for="";this.active=!1;this.over=!1;this._internals=this.attachInternals()}get _classes(){return p([k,n.base,this.active||this.ariaSelected==="true"?n.active:n.inactive])}get _hasIcon(){return this.querySelector('[slot="icon"]')!==null}connectedCallback(){super.connectedCallback(),this._internals.role="tab",this.setAttribute("aria-controls",this.for),this.addEventListener("click",this._handleClick)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",this._handleClick)}updated(e){super.updated(e),e.has("ariaSelected")&&(this._internals.ariaSelected=this.ariaSelected),e.has("active")&&this.hasAttribute("active")&&(this._internals.ariaSelected=this.active?"true":"false"),e.has("for")&&this.setAttribute("aria-controls",this.for)}render(){let e=this._hasIcon;return s`
2440
+ `;import{css as k}from"lit";var m=k`*,: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}.border-b{border-bottom-width:1px}.border-b-4{border-bottom-width:4px}.inline-block{display:inline-block}.inline-grid{display:inline-grid}.hidden{display:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.-bottom-0{bottom:0}.absolute{position:absolute}.relative{position:relative}.static{position:static}.s-border{border-color:var(--w-s-color-border)}.s-border-selected{border-color:var(--w-s-color-border-selected)}.-mb-1{margin-bottom:-.1rem}.mb-32{margin-bottom:3.2rem}.resize{resize:both}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.bg-transparent{background-color:#0000}.appearance-none{-webkit-appearance:none;appearance:none}.border-0{border-width:0}.border-b-4{border-bottom-width:4px}.border-transparent{border-color:#0000}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.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}.gap-8{gap:.8rem}.focus\\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.items-center{align-items:center}.justify-center{justify-content:center}.static{position:static}.s-text-link{color:var(--w-s-color-text-link)}.s-text-subtle{color:var(--w-s-color-text-subtle)}.hover\\:s-text-link:hover{color:var(--w-s-color-text-link)}.s-border-selected{border-color:var(--w-s-color-border-selected)}.hover\\:s-border-primary:hover{border-color:var(--w-s-color-border-primary)}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.p-0{padding:0}.p-16{padding:1.6rem}.pb-8{padding-bottom:.8rem}.cursor-pointer{cursor:pointer}.font-bold{font-weight:700}.w-full{width: 100%;}`;var s={base:"grid w-full items-center font-bold gap-8 antialias p-16 pb-8 border-b-4 bg-transparent border-transparent hover:s-text-link hover:s-border-primary",inactive:"s-text-subtle",active:"s-text-link s-border-selected",icon:"mx-auto",content:"flex items-center justify-center gap-8",contentUnderlined:"content-underlined"},z="focusable appearance-none cursor-pointer bg-transparent border-0 m-0 p-0 inline-block",t=class extends w{constructor(){super();this._handleClick=e=>{e.tab||(e.tab=this)};this.active=!1;this.over=!1;this._internals=this.attachInternals()}get tabIndex(){var e;return(e=this._parentTabIndex)!=null?e:0}set tabIndex(e){this._parentTabIndex=e}get _computedAriaSelected(){var e;return(e=this._parentAriaSelected)!=null?e:this._ownAriaSelected}get _effectiveAriaControls(){return this._ariaControlsAttr||this.for||""}set ariaSelected(e){var o;let r=this._ownAriaSelected;this._ownAriaSelected=e,this._internals.ariaSelected=(o=this._computedAriaSelected)!=null?o:null,this.requestUpdate("ariaSelected",r)}get ariaSelected(){var e;return(e=this._computedAriaSelected)!=null?e:"false"}get _classes(){return p([z,s.base,this.active||this.ariaSelected==="true"?s.active:s.inactive])}get _hasIcon(){return this.querySelector('[slot="icon"]')!==null}connectedCallback(){super.connectedCallback(),this._internals.role="tab",this.syncAriaControls(),this.addEventListener("click",this._handleClick)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",this._handleClick)}updated(e){var o;super.updated(e);let r=e;e.has("_parentAriaSelected")&&(this._internals.ariaSelected=(o=this._computedAriaSelected)!=null?o:null),r.has("_ariaControlsAttr")&&this.syncAriaControls(),e.has("for")&&this.syncAriaControls(),e.has("active")&&this.hasAttribute("active")&&(this._internals.ariaSelected=this.active?"true":"false")}syncAriaControls(){var c,g,v;let e=this._effectiveAriaControls,r=this.closest("w-tabs"),o=(v=(g=r==null?void 0:r.querySelector(`w-tab-panel#${CSS.escape(e)}`))!=null?g:(c=this.ownerDocument)==null?void 0:c.getElementById(e))!=null?v:null,n=this._internals;if("ariaControlsElements"in n){n.ariaControlsElements=o?[o]:[];return}"ariaControls"in n&&(n.ariaControls=e||null)}render(){var r;let e=this._hasIcon;return b`
2441
2441
  <button
2442
2442
  type="button"
2443
2443
  role="none"
2444
2444
  id="warp-tab-${this.for}"
2445
2445
  class="${this._classes}"
2446
- tabindex="${-1}"
2447
- @click="${r=>{r.tab=this}}"
2446
+ tabindex="${(r=this._parentTabIndex)!=null?r:0}"
2447
+ aria-controls="${this._effectiveAriaControls}"
2448
+ @click="${o=>{o.tab=this}}"
2448
2449
  style="height: 100%">
2449
- ${e?this.over?s`
2450
- <span class="${n.icon}">
2450
+ ${e?this.over?b`
2451
+ <span class="${s.icon}">
2451
2452
  <slot name="icon"></slot>
2452
2453
  </span>
2453
- <span class="${n.contentUnderlined}"><slot></slot></span>
2454
- `:s`
2455
- <div class="${n.content}">
2454
+ <span class="${s.contentUnderlined}"><slot></slot></span>
2455
+ `:b`
2456
+ <div class="${s.content}">
2456
2457
  <slot name="icon"></slot>
2457
2458
  <slot></slot>
2458
2459
  </div>
2459
- `:s`<span class="${n.contentUnderlined}"><slot></slot></span>`}
2460
+ `:b`<span class="${s.contentUnderlined}"><slot></slot></span>`}
2460
2461
  </button>
2461
- `}};t.styles=[v,h,f`::slotted([slot="icon"]){display:flex}`],i([d({attribute:"id",reflect:!0})],t.prototype,"id",2),i([d({attribute:"for",reflect:!0})],t.prototype,"for",2),i([d({attribute:"aria-selected"})],t.prototype,"ariaSelected",2),i([d({attribute:"tabindex",type:Number,reflect:!0})],t.prototype,"tabIndex",2),i([d({type:Boolean,reflect:!0})],t.prototype,"active",2),i([d({type:Boolean,reflect:!0})],t.prototype,"over",2);customElements.get("w-tab")||customElements.define("w-tab",t);export{t as WarpTab};
2462
+ `}};t.styles=[h,m,y`
2463
+ ::slotted([slot='icon']) {
2464
+ display: flex;
2465
+ }
2466
+
2467
+ button.focusable:focus-visible {
2468
+ outline: 2px solid var(--w-s-color-border-focus, #1a73e8);
2469
+ outline-offset: var(--w-outline-offset, 1px);
2470
+ }
2471
+ `],t.shadowRootOptions={...w.shadowRootOptions,delegatesFocus:!0},i([l({attribute:"id",reflect:!0})],t.prototype,"id",2),i([l({attribute:"for",reflect:!0})],t.prototype,"for",2),i([l({attribute:"aria-controls"})],t.prototype,"_ariaControlsAttr",2),i([l({attribute:!1})],t.prototype,"_parentTabIndex",2),i([l({attribute:!1})],t.prototype,"_parentAriaSelected",2),i([l({attribute:"aria-selected"})],t.prototype,"ariaSelected",1),i([l({type:Boolean,reflect:!0})],t.prototype,"active",2),i([l({type:Boolean,reflect:!0})],t.prototype,"over",2);customElements.get("w-tab")||customElements.define("w-tab",t);export{t as WarpTab};
2462
2472
  //# sourceMappingURL=tab.js.map