scb-wc-test 0.1.1

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 (178) hide show
  1. package/README.md +130 -0
  2. package/all.js +54 -0
  3. package/dummy.png +0 -0
  4. package/index.d.ts +54 -0
  5. package/index.js +108 -0
  6. package/mvc/components/all.js +53 -0
  7. package/mvc/components/scb-accordion/scb-accordion-item.js +194 -0
  8. package/mvc/components/scb-accordion/scb-accordion.js +5 -0
  9. package/mvc/components/scb-app-bar/scb-app-bar.js +144 -0
  10. package/mvc/components/scb-avatar/scb-avatar.js +99 -0
  11. package/mvc/components/scb-breadcrumb/scb-breadcrumb-item.js +17 -0
  12. package/mvc/components/scb-breadcrumb/scb-breadcrumb.js +52 -0
  13. package/mvc/components/scb-button/scb-button.js +121 -0
  14. package/mvc/components/scb-calendar-card/scb-calendar-card.js +140 -0
  15. package/mvc/components/scb-card/scb-card.js +256 -0
  16. package/mvc/components/scb-checkbox/scb-checkbox-group.js +33 -0
  17. package/mvc/components/scb-checkbox/scb-checkbox.js +99 -0
  18. package/mvc/components/scb-chips/scb-chip.js +46 -0
  19. package/mvc/components/scb-dialog/scb-dialog.js +158 -0
  20. package/mvc/components/scb-divider/scb-divider.js +53 -0
  21. package/mvc/components/scb-drawer/scb-drawer-item.js +114 -0
  22. package/mvc/components/scb-drawer/scb-drawer-section.js +19 -0
  23. package/mvc/components/scb-drawer/scb-drawer.js +79 -0
  24. package/mvc/components/scb-drawer/scb-sub-drawer.js +10 -0
  25. package/mvc/components/scb-fact-card/scb-fact-card-content.js +44 -0
  26. package/mvc/components/scb-fact-card/scb-fact-card.js +66 -0
  27. package/mvc/components/scb-footer/scb-footer-section.js +3 -0
  28. package/mvc/components/scb-footer/scb-footer.js +205 -0
  29. package/mvc/components/scb-grid/scb-grid-item.js +9 -0
  30. package/mvc/components/scb-grid/scb-grid.js +81 -0
  31. package/mvc/components/scb-grid/scb-stack.js +16 -0
  32. package/mvc/components/scb-header/scb-header-drawer-group.js +1 -0
  33. package/mvc/components/scb-header/scb-header-drawer-item.js +1 -0
  34. package/mvc/components/scb-header/scb-header-tab.js +1 -0
  35. package/mvc/components/scb-header/scb-header-utility.js +1 -0
  36. package/mvc/components/scb-header/scb-header.js +240 -0
  37. package/mvc/components/scb-icon-button/scb-icon-button.js +95 -0
  38. package/mvc/components/scb-keyfigure-card/scb-keyfigure-card.js +69 -0
  39. package/mvc/components/scb-link/scb-link.js +31 -0
  40. package/mvc/components/scb-list/scb-list-item.js +38 -0
  41. package/mvc/components/scb-list/scb-list.js +10 -0
  42. package/mvc/components/scb-menu/scb-menu-item.js +44 -0
  43. package/mvc/components/scb-menu/scb-menu.js +17 -0
  44. package/mvc/components/scb-menu/scb-sub-menu.js +29 -0
  45. package/mvc/components/scb-notification/scb-notification.js +120 -0
  46. package/mvc/components/scb-progress-indicator/scb-progress-indicator.js +84 -0
  47. package/mvc/components/scb-radio-button/scb-radio-button.js +95 -0
  48. package/mvc/components/scb-radio-button/scb-radio-group.js +28 -0
  49. package/mvc/components/scb-search/scb-search.js +211 -0
  50. package/mvc/components/scb-snackbar/scb-snackbar.js +83 -0
  51. package/mvc/components/scb-status-pill/scb-status-pill.js +31 -0
  52. package/mvc/components/scb-switch/scb-switch.js +54 -0
  53. package/mvc/components/scb-tabs/scb-primary-tab.js +7 -0
  54. package/mvc/components/scb-tabs/scb-secondary-tab.js +7 -0
  55. package/mvc/components/scb-tabs/scb-tabs.js +23 -0
  56. package/mvc/components/scb-textfield/scb-textfield.js +135 -0
  57. package/mvc/components/scb-toc/scb-toc-item.js +84 -0
  58. package/mvc/components/scb-toc/scb-toc.js +6 -0
  59. package/mvc/components/scb-tooltip/scb-tooltip.js +216 -0
  60. package/mvc/scb-logo.svg +21 -0
  61. package/mvc/scb-wc-test.css +1 -0
  62. package/mvc/scb.svg +14 -0
  63. package/mvc/vendor/preload-helper.js +1 -0
  64. package/mvc/vendor/vendor-lit.js +1 -0
  65. package/mvc/vendor/vendor-material.js +764 -0
  66. package/mvc/vendor/vendor.js +68 -0
  67. package/package.json +248 -0
  68. package/scb-accordion/scb-accordion-item.d.ts +37 -0
  69. package/scb-accordion/scb-accordion-item.js +343 -0
  70. package/scb-accordion/scb-accordion.d.ts +6 -0
  71. package/scb-accordion/scb-accordion.js +33 -0
  72. package/scb-app-bar/scb-app-bar.d.ts +10 -0
  73. package/scb-app-bar/scb-app-bar.js +192 -0
  74. package/scb-avatar/scb-avatar.d.ts +30 -0
  75. package/scb-avatar/scb-avatar.js +169 -0
  76. package/scb-breadcrumb/scb-breadcrumb-item.d.ts +9 -0
  77. package/scb-breadcrumb/scb-breadcrumb-item.js +54 -0
  78. package/scb-breadcrumb/scb-breadcrumb.d.ts +16 -0
  79. package/scb-breadcrumb/scb-breadcrumb.js +105 -0
  80. package/scb-button/scb-button.d.ts +26 -0
  81. package/scb-button/scb-button.js +247 -0
  82. package/scb-calendar-card/scb-calendar-card.d.ts +20 -0
  83. package/scb-calendar-card/scb-calendar-card.js +191 -0
  84. package/scb-card/scb-card.d.ts +24 -0
  85. package/scb-card/scb-card.js +345 -0
  86. package/scb-checkbox/scb-checkbox-group.d.ts +17 -0
  87. package/scb-checkbox/scb-checkbox-group.js +80 -0
  88. package/scb-checkbox/scb-checkbox.d.ts +20 -0
  89. package/scb-checkbox/scb-checkbox.js +157 -0
  90. package/scb-chips/scb-chip.d.ts +24 -0
  91. package/scb-chips/scb-chip.js +150 -0
  92. package/scb-dialog/scb-dialog.d.ts +58 -0
  93. package/scb-dialog/scb-dialog.js +390 -0
  94. package/scb-divider/scb-divider.d.ts +9 -0
  95. package/scb-divider/scb-divider.js +85 -0
  96. package/scb-drawer/scb-drawer-item.d.ts +61 -0
  97. package/scb-drawer/scb-drawer-item.js +220 -0
  98. package/scb-drawer/scb-drawer-section.d.ts +7 -0
  99. package/scb-drawer/scb-drawer-section.js +44 -0
  100. package/scb-drawer/scb-drawer.d.ts +97 -0
  101. package/scb-drawer/scb-drawer.js +258 -0
  102. package/scb-drawer/scb-sub-drawer.d.ts +10 -0
  103. package/scb-drawer/scb-sub-drawer.js +43 -0
  104. package/scb-fact-card/scb-fact-card-content.d.ts +10 -0
  105. package/scb-fact-card/scb-fact-card-content.js +83 -0
  106. package/scb-fact-card/scb-fact-card.d.ts +15 -0
  107. package/scb-fact-card/scb-fact-card.js +110 -0
  108. package/scb-footer/scb-footer-section.d.ts +21 -0
  109. package/scb-footer/scb-footer-section.js +28 -0
  110. package/scb-footer/scb-footer.d.ts +27 -0
  111. package/scb-footer/scb-footer.js +326 -0
  112. package/scb-grid/scb-grid-item.d.ts +28 -0
  113. package/scb-grid/scb-grid-item.js +66 -0
  114. package/scb-grid/scb-grid.d.ts +33 -0
  115. package/scb-grid/scb-grid.js +152 -0
  116. package/scb-grid/scb-stack.d.ts +29 -0
  117. package/scb-grid/scb-stack.js +82 -0
  118. package/scb-header/scb-header-drawer-group.d.ts +13 -0
  119. package/scb-header/scb-header-drawer-group.js +28 -0
  120. package/scb-header/scb-header-drawer-item.d.ts +14 -0
  121. package/scb-header/scb-header-drawer-item.js +31 -0
  122. package/scb-header/scb-header-tab.d.ts +13 -0
  123. package/scb-header/scb-header-tab.js +28 -0
  124. package/scb-header/scb-header-utility.d.ts +14 -0
  125. package/scb-header/scb-header-utility.js +31 -0
  126. package/scb-header/scb-header.d.ts +105 -0
  127. package/scb-header/scb-header.js +618 -0
  128. package/scb-icon-button/scb-icon-button.d.ts +31 -0
  129. package/scb-icon-button/scb-icon-button.js +208 -0
  130. package/scb-keyfigure-card/scb-keyfigure-card.d.ts +13 -0
  131. package/scb-keyfigure-card/scb-keyfigure-card.js +119 -0
  132. package/scb-link/scb-link.d.ts +17 -0
  133. package/scb-link/scb-link.js +74 -0
  134. package/scb-list/scb-list-item.d.ts +32 -0
  135. package/scb-list/scb-list-item.js +144 -0
  136. package/scb-list/scb-list.d.ts +8 -0
  137. package/scb-list/scb-list.js +39 -0
  138. package/scb-logo.svg +21 -0
  139. package/scb-menu/scb-menu-item.d.ts +22 -0
  140. package/scb-menu/scb-menu-item.js +107 -0
  141. package/scb-menu/scb-menu.d.ts +21 -0
  142. package/scb-menu/scb-menu.js +98 -0
  143. package/scb-menu/scb-sub-menu.d.ts +12 -0
  144. package/scb-menu/scb-sub-menu.js +69 -0
  145. package/scb-notification/scb-notification.d.ts +16 -0
  146. package/scb-notification/scb-notification.js +187 -0
  147. package/scb-progress-indicator/scb-progress-indicator.d.ts +11 -0
  148. package/scb-progress-indicator/scb-progress-indicator.js +122 -0
  149. package/scb-radio-button/scb-radio-button.d.ts +19 -0
  150. package/scb-radio-button/scb-radio-button.js +176 -0
  151. package/scb-radio-button/scb-radio-group.d.ts +20 -0
  152. package/scb-radio-button/scb-radio-group.js +81 -0
  153. package/scb-search/scb-search.d.ts +45 -0
  154. package/scb-search/scb-search.js +410 -0
  155. package/scb-snackbar/scb-snackbar.d.ts +17 -0
  156. package/scb-snackbar/scb-snackbar.js +140 -0
  157. package/scb-status-pill/scb-status-pill.d.ts +9 -0
  158. package/scb-status-pill/scb-status-pill.js +62 -0
  159. package/scb-switch/scb-switch.d.ts +21 -0
  160. package/scb-switch/scb-switch.js +111 -0
  161. package/scb-tabs/scb-primary-tab.d.ts +17 -0
  162. package/scb-tabs/scb-primary-tab.js +93 -0
  163. package/scb-tabs/scb-secondary-tab.d.ts +17 -0
  164. package/scb-tabs/scb-secondary-tab.js +97 -0
  165. package/scb-tabs/scb-tabs.d.ts +10 -0
  166. package/scb-tabs/scb-tabs.js +66 -0
  167. package/scb-textfield/scb-textfield.d.ts +41 -0
  168. package/scb-textfield/scb-textfield.js +258 -0
  169. package/scb-toc/scb-toc-item.d.ts +21 -0
  170. package/scb-toc/scb-toc-item.js +196 -0
  171. package/scb-toc/scb-toc.d.ts +6 -0
  172. package/scb-toc/scb-toc.js +27 -0
  173. package/scb-tooltip/scb-tooltip.d.ts +32 -0
  174. package/scb-tooltip/scb-tooltip.js +329 -0
  175. package/scb-wc-test.bundle.js +5429 -0
  176. package/scb-wc-test.css +1 -0
  177. package/scb-wc-test.d.ts +106 -0
  178. package/scb.svg +14 -0
@@ -0,0 +1,618 @@
1
+ import { css as S, LitElement as M, html as c, nothing as u } from "lit";
2
+ import { property as n, state as p, customElement as A } from "lit/decorators.js";
3
+ import "../scb-grid/scb-grid-item.js";
4
+ import "../scb-grid/scb-grid.js";
5
+ import "../scb-link/scb-link.js";
6
+ import "../scb-search/scb-search.js";
7
+ import "../scb-tabs/scb-tabs.js";
8
+ import "../scb-tabs/scb-secondary-tab.js";
9
+ import "../scb-drawer/scb-drawer.js";
10
+ import "../scb-icon-button/scb-icon-button.js";
11
+ import "../scb-button/scb-button.js";
12
+ var k = Object.defineProperty, T = Object.getOwnPropertyDescriptor, i = (e, t, s, a) => {
13
+ for (var l = a > 1 ? void 0 : a ? T(t, s) : t, d = e.length - 1, o; d >= 0; d--)
14
+ (o = e[d]) && (l = (a ? o(t, s, l) : o(l)) || l);
15
+ return a && l && k(t, s, l), l;
16
+ };
17
+ const w = {
18
+ fromAttribute: (e) => e == null ? !0 : !/^(false|0|off|no)$/i.test(e),
19
+ toAttribute: (e) => String(!!e)
20
+ };
21
+ let r = class extends M {
22
+ constructor() {
23
+ super(...arguments), this.maxWidth = "1440px", this.logoText = "Statistikmyndigheten", this.logoHref = "/", this.banner = !1, this.tabs = [], this.activeTab = 0, this.utilityItems = [], this.showDrawer = !0, this.showSearch = !0, this.includeUtilityInDrawer = !1, this._drawerId = "main-drawer", this._paddingInline = "32px", this._drawerMounted = !1, this._drawerExpanded = !1, this._searchId = "header-search", this._slotTabs = [], this._slotUtils = [], this._slotMenu = [], this._measureScheduled = !1, this._scheduleMeasure = () => {
24
+ this._measureScheduled || (this._measureScheduled = !0, requestAnimationFrame(() => {
25
+ this._measureScheduled = !1, this._measure();
26
+ }));
27
+ }, this._onWindowResize = () => {
28
+ this._updatePadding(), this._scheduleMeasure();
29
+ }, this._onDrawerSelect = (e) => {
30
+ this.dispatchEvent(new CustomEvent("drawer-select", {
31
+ detail: e.detail,
32
+ bubbles: !0,
33
+ composed: !0
34
+ })), this._closeDrawerNow();
35
+ }, this._collapsed = !1, this._unlockAtWidth = 0, this._hideLogoText = !1, this._logoTextUnlockAt = 0, this._harvestPending = !1, this._harvest = () => {
36
+ const e = this._slotEl;
37
+ if (!e) return;
38
+ const t = e.assignedElements({ flatten: !0 }), s = [], a = [], l = [], d = (o) => ({
39
+ label: o.getAttribute("label") ?? "",
40
+ href: o.getAttribute("href") ?? void 0,
41
+ icon: o.getAttribute("icon") ?? void 0
42
+ });
43
+ for (const o of t) {
44
+ const h = o.tagName.toLowerCase();
45
+ if (h === "scb-header-tab") {
46
+ s.push({ label: o.getAttribute("label") ?? "", href: o.getAttribute("href") ?? "#" });
47
+ continue;
48
+ }
49
+ if (h === "scb-header-utility") {
50
+ a.push({
51
+ label: o.getAttribute("label") ?? "",
52
+ href: o.getAttribute("href") ?? "#",
53
+ target: o.getAttribute("target") ?? void 0
54
+ });
55
+ continue;
56
+ }
57
+ if (h === "scb-header-drawer-group") {
58
+ const b = {
59
+ label: o.getAttribute("label") ?? "",
60
+ icon: o.getAttribute("icon") ?? void 0,
61
+ children: []
62
+ };
63
+ o.querySelectorAll("scb-header-drawer-item").forEach((m) => b.children.push(d(m))), l.push(b);
64
+ continue;
65
+ }
66
+ h === "scb-header-drawer-item" && l.push(d(o));
67
+ }
68
+ this._slotTabs = s, this._slotUtils = a, this._slotMenu = l, queueMicrotask(() => {
69
+ this.updateComplete.then(() => {
70
+ this._applyActiveToTabs(), this._scheduleMeasure();
71
+ });
72
+ });
73
+ }, this._measure = () => {
74
+ var m, v, f;
75
+ const e = this._top, t = this._logoGroup;
76
+ if (!e || !t) return;
77
+ const s = window.innerWidth, a = e.clientWidth, l = this._overflows(this._util), d = this._overflows(this._tabsEl), o = s < this.BP_MD || l || d;
78
+ this._collapsed ? !o && a >= this._unlockAtWidth && this._setCollapsed(!1) : o && (this._unlockAtWidth = a + this._HYST, this._setCollapsed(!0));
79
+ let h = !1;
80
+ if (this.showSearch && s >= this.BP_SM && s < this.BP_MD && this._searchWrap) {
81
+ const _ = getComputedStyle(this._searchWrap), y = Math.max(
82
+ this._num(_.minWidth, this._tokenPx("--scb-header-search-min", 320)),
83
+ this._tokenPx("--scb-header-search-min", 320)
84
+ ), g = this._num(getComputedStyle(e).gap, this._tokenPx("--spacing-7", 24)), C = this.showDrawer && (s < this.BP_MD || this._collapsed) ? ((m = this._menuBtn) == null ? void 0 : m.getBoundingClientRect().width) || this._tokenPx("--icon-size-large", 48) : 0;
85
+ h = t.getBoundingClientRect().width + g + y + g + C + 8 > a + 0.5;
86
+ }
87
+ this._setHideSearch(h);
88
+ let b = !1;
89
+ if (this.showDrawer && (s < this.BP_MD || this._collapsed) && !this._visible(this._util) && !this._visible(this._searchWrap)) {
90
+ const _ = this._num(getComputedStyle(e).gap, this._tokenPx("--spacing-7", 24)), y = ((v = this._menuBtn) == null ? void 0 : v.getBoundingClientRect().width) || this._tokenPx("--icon-size-large", 48), g = (((f = this._logoGroup) == null ? void 0 : f.getBoundingClientRect().width) || 0) + _ + y;
91
+ this._hideLogoText ? b = !(a >= this._logoTextUnlockAt) : g > a + 0.5 && (b = !0, this._logoTextUnlockAt = a + this._HYST);
92
+ } else
93
+ b = !1, this._logoTextUnlockAt = 0;
94
+ this._setHideLogoText(b);
95
+ }, this._updatePadding = () => {
96
+ const e = window.innerWidth || 0;
97
+ e <= 360 ? this._paddingInline = "16px" : e < this.BP_SM ? this._paddingInline = "24px" : this._paddingInline = "32px";
98
+ }, this._onMenuClick = async (e) => {
99
+ e.preventDefault(), e.stopPropagation(), this.showDrawer && (this.dispatchEvent(new CustomEvent("menu-click", { bubbles: !0, composed: !0 })), await this._ensureDrawerMounted(), await r._nextFrame(), await r._nextFrame(), this._openDrawerNow());
100
+ }, this._onSearchClick = (e) => {
101
+ var a;
102
+ const t = this._searchEl;
103
+ if (t != null && t.submit && typeof t.submit == "function") {
104
+ t.submit();
105
+ return;
106
+ }
107
+ const s = (t == null ? void 0 : t.value) ?? void 0;
108
+ this.dispatchEvent(new CustomEvent("search-click", {
109
+ detail: { value: s },
110
+ bubbles: !0,
111
+ composed: !0
112
+ })), (a = t == null ? void 0 : t.focus) == null || a.call(t);
113
+ }, this._onTabsChange = (e) => {
114
+ var d, o, h;
115
+ const t = e, s = ((d = t == null ? void 0 : t.detail) == null ? void 0 : d.activeTabIndex) ?? ((o = e.target) == null ? void 0 : o.activeTabIndex) ?? 0;
116
+ this.activeTab = s;
117
+ const l = ((h = (this._slotTabs.length ? this._slotTabs : this.tabs)[s]) == null ? void 0 : h.href) ?? "";
118
+ this.dispatchEvent(new CustomEvent("tab-change", {
119
+ detail: { index: s, href: l },
120
+ bubbles: !0,
121
+ composed: !0
122
+ }));
123
+ };
124
+ }
125
+ /* Hysteresis för respons – läses som spacing-token */
126
+ get _HYST() {
127
+ return this._tokenPx("--spacing-11", 64);
128
+ }
129
+ get BP_SM() {
130
+ return this._tokenPx("--bp-sm", r.BP_SM_DEFAULT);
131
+ }
132
+ get BP_MD() {
133
+ return this._tokenPx("--bp-md", r.BP_MD_DEFAULT);
134
+ }
135
+ _scheduleHarvest() {
136
+ this._harvestPending || (this._harvestPending = !0, queueMicrotask(() => {
137
+ this._harvestPending = !1, this._harvest();
138
+ }));
139
+ }
140
+ /* Hjälp-getters för att nå element i renderRoot/Shadow DOM. */
141
+ get _slotEl() {
142
+ var e;
143
+ return ((e = this.shadowRoot) == null ? void 0 : e.querySelector("slot#data-slot")) ?? null;
144
+ }
145
+ get _top() {
146
+ return this.renderRoot.querySelector(".top-row");
147
+ }
148
+ get _util() {
149
+ return this.renderRoot.querySelector(".utility");
150
+ }
151
+ get _tabsEl() {
152
+ return this.renderRoot.querySelector("scb-tabs");
153
+ }
154
+ get _logoGroup() {
155
+ return this.renderRoot.querySelector(".logo-group");
156
+ }
157
+ get _searchWrap() {
158
+ return this.renderRoot.querySelector(".search");
159
+ }
160
+ get _menuBtn() {
161
+ return this.renderRoot.querySelector(".menu-trigger");
162
+ }
163
+ get _searchEl() {
164
+ return this.renderRoot.querySelector(`#${this._searchId}`);
165
+ }
166
+ /* Kopplar in MutationObserver för slot-innehållet. */
167
+ _attachSlotObservers() {
168
+ var t;
169
+ (t = this._slotMo) == null || t.disconnect();
170
+ const e = new MutationObserver((s) => {
171
+ this._scheduleHarvest();
172
+ });
173
+ this._slotMo = e, e.observe(this, {
174
+ subtree: !0,
175
+ childList: !0,
176
+ attributes: !0,
177
+ attributeFilter: ["label", "href", "icon", "target"]
178
+ });
179
+ }
180
+ /* Data-attribut för CSS (collapsed / hide-search / hide-logo-text). */
181
+ _setCollapsed(e) {
182
+ this._collapsed !== e && (this._collapsed = e, e ? this.setAttribute("data-collapsed", "") : this.removeAttribute("data-collapsed"));
183
+ }
184
+ _setHideSearch(e) {
185
+ e ? this.setAttribute("data-hide-search", "") : this.removeAttribute("data-hide-search");
186
+ }
187
+ _setHideLogoText(e) {
188
+ this._hideLogoText !== e && (this._hideLogoText = e, e ? this.setAttribute("data-hide-logo-text", "") : this.removeAttribute("data-hide-logo-text"));
189
+ }
190
+ /* Helpers: hämta numeriskt tokenvärde (px) */
191
+ _num(e, t) {
192
+ const s = Number.parseFloat(String(e ?? "").trim());
193
+ return Number.isFinite(s) ? s : t;
194
+ }
195
+ _tokenPx(e, t) {
196
+ const s = getComputedStyle(this);
197
+ return this._num(s.getPropertyValue(e), t);
198
+ }
199
+ _visible(e) {
200
+ return e ? getComputedStyle(e).display !== "none" : !1;
201
+ }
202
+ _overflows(e) {
203
+ return !e || !this._visible(e) ? !1 : e.scrollWidth > e.clientWidth + 1;
204
+ }
205
+ firstUpdated() {
206
+ this._updatePadding(), this.updateComplete.then(() => {
207
+ this._harvest(), this._attachSlotObservers();
208
+ });
209
+ const e = this._top;
210
+ e && (this._ro = new ResizeObserver(() => this._scheduleMeasure()), this._ro.observe(e)), window.addEventListener("resize", this._onWindowResize, { passive: !0 });
211
+ const t = this._menuBtn, s = () => this._ensureDrawerMounted();
212
+ t == null || t.addEventListener("pointerenter", s, { once: !0 }), t == null || t.addEventListener("focusin", s, { once: !0 }), t == null || t.addEventListener("touchstart", s, { once: !0, passive: !0 });
213
+ }
214
+ updated(e) {
215
+ e.has("searchMax") && this.style.setProperty("--scb-header-search-max", this.searchMax ?? "480px"), e.has("searchMin") && this.style.setProperty("--scb-header-search-min", this.searchMin ?? "320px"), (e.has("utilityItems") || e.has("tabs") || e.has("logoText") || e.has("activeTab") || e.has("_slotTabs") || e.has("_slotUtils") || e.has("_slotMenu") || e.has("showDrawer") || e.has("showSearch") || e.has("searchMax") || e.has("searchMin")) && this.updateComplete.then(() => {
216
+ this._scheduleMeasure(), this._applyActiveToTabs();
217
+ });
218
+ }
219
+ disconnectedCallback() {
220
+ var e, t;
221
+ (e = this._ro) == null || e.disconnect(), (t = this._slotMo) == null || t.disconnect(), window.removeEventListener("resize", this._onWindowResize), super.disconnectedCallback();
222
+ }
223
+ /* Säkerställ att <scb-drawer> finns i DOM innan vi öppnar. */
224
+ async _ensureDrawerMounted() {
225
+ this._drawerMounted || (this._drawerMounted = !0, await this.updateComplete);
226
+ }
227
+ /* Öppna/stäng drawer + aria-expanded (+ nya event) */
228
+ _openDrawerNow() {
229
+ var t, s;
230
+ const e = this.renderRoot.querySelector(`#${this._drawerId}`);
231
+ e && (e.open = !0, e.setAttribute("open", ""), (t = e.show) == null || t.call(e), (s = e.openDrawer) == null || s.call(e), this._drawerExpanded = !0, this._syncMenuBtnAria(), this.dispatchEvent(new CustomEvent("drawer-open", { bubbles: !0, composed: !0 })));
232
+ }
233
+ _closeDrawerNow() {
234
+ const e = this.renderRoot.querySelector(`#${this._drawerId}`);
235
+ e && (e.open = !1), this._drawerExpanded = !1, this._syncMenuBtnAria(), this.dispatchEvent(new CustomEvent("drawer-close", { bubbles: !0, composed: !0 }));
236
+ }
237
+ _syncMenuBtnAria() {
238
+ const e = this.renderRoot.querySelector(".menu-trigger");
239
+ e && e.setAttribute("aria-expanded", String(this._drawerExpanded));
240
+ }
241
+ /* Synca selected på scb-secondary-tab */
242
+ _applyActiveToTabs() {
243
+ const e = this._tabsEl;
244
+ if (!e) return;
245
+ e.activeTabIndex = this.activeTab, e.querySelectorAll("scb-secondary-tab").forEach((s, a) => {
246
+ s.selected = a === this.activeTab;
247
+ });
248
+ }
249
+ /* Rendera drawer-träd */
250
+ _renderDrawerNodes(e) {
251
+ return !e || e.length === 0 ? c`` : c`${e.map((t) => {
252
+ const s = Array.isArray(t.children) && t.children.length > 0;
253
+ return c`
254
+ <scb-drawer-item
255
+ label=${t.label}
256
+ ?selected=${!1}
257
+ leading-icon=${t.icon ?? ""}
258
+ item-href=${t.href ?? ""}
259
+ >
260
+ ${s ? c`
261
+ <scb-sub-drawer label=${t.label}>
262
+ ${t.children.map((a) => c`
263
+ <scb-drawer-item
264
+ label=${a.label}
265
+ item-href=${a.href ?? ""}
266
+ leading-icon=${a.icon ?? ""}
267
+ ></scb-drawer-item>
268
+ `)}
269
+ </scb-sub-drawer>
270
+ ` : u}
271
+ </scb-drawer-item>
272
+ `;
273
+ })}`;
274
+ }
275
+ /* Sätt data-attribut för layoutjusteringar (saknar utility / saknar sök). */
276
+ _syncFlags(e, t) {
277
+ this.toggleAttribute("data-no-utility", e), this.toggleAttribute("data-no-search", t);
278
+ }
279
+ render() {
280
+ const e = this._slotTabs.length ? this._slotTabs : this.tabs, t = this._slotUtils.length ? this._slotUtils : this.utilityItems, s = this._slotMenu.length ? this._slotMenu : this.menuData ?? [];
281
+ return this._syncFlags(t.length === 0, !this.showSearch), c`
282
+ <!-- Slot för wrapper-barn (osynliga; fungerar som datakällor) -->
283
+ <slot id="data-slot" @slotchange=${() => {
284
+ this._harvest(), this._attachSlotObservers();
285
+ }} hidden></slot>
286
+
287
+ <!-- Banner-landmark är opt-in och omsluter hela headerblocket -->
288
+ <div
289
+ class="header-landmark"
290
+ role=${this.banner ? "banner" : u}
291
+ aria-label=${this.banner && this.bannerLabel ? this.bannerLabel : u}
292
+ >
293
+ <scb-grid cols-compact="4" cols-medium="8" cols-expanded="12" padding-inline=${this._paddingInline} max-width=${this.maxWidth} gap="0">
294
+ <scb-grid-item col-span-compact="4" col-span-medium="8" col-span-expanded="12">
295
+ <div class="top-row">
296
+ <a class="logo-group" href=${this.logoHref} aria-label="Gå till startsidan">
297
+ ${this._renderLogo()} <span class="logo-text">${this.logoText}</span>
298
+ </a>
299
+
300
+ <div class="actions">
301
+ <nav class="utility" aria-label="Funktionslänkar">
302
+ ${t.map((a) => c`<scb-link .href=${a.href} .target=${a.target ?? void 0}>${a.label}</scb-link>`)}
303
+ </nav>
304
+
305
+ ${this.showSearch ? c`
306
+ <div class="search">
307
+ <scb-search
308
+ id=${this._searchId}
309
+ size="compact"
310
+ .supportingText=${this.searchPlaceholder ?? ""}
311
+ ></scb-search>
312
+ <scb-button
313
+ variant="filled-tonal"
314
+ label="Sök"
315
+ @click=${this._onSearchClick}
316
+ ></scb-button>
317
+ </div>
318
+ ` : u}
319
+ </div>
320
+
321
+ ${this.showDrawer ? c`
322
+ <scb-icon-button
323
+ class="menu-trigger"
324
+ aria-label="Meny"
325
+ icon="menu"
326
+ variant="outlined"
327
+ aria-controls=${this._drawerMounted ? this._drawerId : u}
328
+ aria-haspopup="dialog"
329
+ aria-expanded=${String(this._drawerExpanded)}
330
+ data-drawer-toggle=${this._drawerId}
331
+ title="Öppna meny"
332
+ @click=${this._onMenuClick}
333
+ ></scb-icon-button>
334
+ ` : u}
335
+ </div>
336
+ </scb-grid-item>
337
+
338
+ <scb-grid-item col-span-compact="4" col-span-medium="8" col-span-expanded="12">
339
+ <div class="tabs-inset">
340
+ <scb-tabs aria-label="Huvudnavigering" .activeTabIndex=${this.activeTab} @change=${this._onTabsChange}>
341
+ ${e.map((a, l) => c`<scb-secondary-tab ?selected=${l === this.activeTab}>${a.label}</scb-secondary-tab>`)}
342
+ </scb-tabs>
343
+ </div>
344
+ <div class="divider" role="presentation"></div>
345
+ </scb-grid-item>
346
+ </scb-grid>
347
+ </div>
348
+
349
+ ${this.showDrawer && this._drawerMounted ? c`
350
+ <scb-drawer
351
+ id=${this._drawerId}
352
+ .label=${this.drawerLabel ?? ""}
353
+ .subLabel=${this.drawerSubLabel ?? ""}
354
+ floating right overlay lock-scroll modal
355
+ @scb-drawer-select=${this._onDrawerSelect}
356
+ >
357
+ <div style="padding: var(--spacing-4, 12px);">
358
+ <scb-search size="compact" .supportingText=${this.drawerSearchPlaceholder ?? ""}></scb-search>
359
+ </div>
360
+
361
+ ${this.drawerSectionLabel ? c`<scb-drawer-section .label=${this.drawerSectionLabel}></scb-drawer-section>` : u}
362
+
363
+ ${this._renderDrawerNodes(s)}
364
+
365
+ ${this.includeUtilityInDrawer && ((t == null ? void 0 : t.length) ?? 0) > 0 ? c`
366
+ <scb-drawer-section label=''></scb-drawer-section>
367
+ ${t.map((a) => c`<scb-drawer-item label=${a.label} item-href=${a.href}></scb-drawer-item>`)}
368
+ ` : u}
369
+ </scb-drawer>
370
+ ` : u}
371
+ `;
372
+ }
373
+ /* SCB-logotypens SVG */
374
+ _renderLogo() {
375
+ return c`
376
+ <svg class="logo" viewBox="0 0 48 54" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
377
+ <g clip-path="url(#clip0_scb_header)">
378
+ <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"
379
+ d="M25.6527 6.07812C25.6527 5.15909 24.9076 4.41482 23.9877 4.41482C23.0677 4.41482 22.3226 5.15909 22.3226 6.07812V48.0391C22.3226 48.9601 23.0677 49.7061 23.9877 49.7061C24.9076 49.7061 25.6527 48.9601 25.6527 48.0391V32.9153C25.6527 32.8056 25.744 32.7163 25.8527 32.7163H31.3245C31.4342 32.7163 31.5245 32.8056 31.5245 32.9153V48.1711C31.5245 51.3899 28.1496 54 23.9877 54C19.8241 54 16.4501 51.3899 16.4501 48.1711V5.82708C16.4501 2.6103 19.8241 0 23.9877 0C28.1496 0 31.5245 2.6103 31.5245 5.82708V20.8893C31.5245 21.0009 31.4342 21.0883 31.3245 21.0883H25.8527C25.744 21.0883 25.6527 21.0009 25.6527 20.8893V6.07812Z" />
380
+ <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"
381
+ d="M0.198901 10.8446C-0.152687 13.293 -0.0290117 17.3078 0.49751 19.5627C1.07611 22.0203 4.41288 26.9878 5.91609 29.2948C7.42127 31.5999 9.42869 34.0073 9.39892 37.2185V44.9097C9.39892 45.8287 8.65375 46.5748 7.73382 46.5748C6.81659 46.5748 6.0715 45.8287 6.0715 44.9097V33.1217C6.0715 33.012 5.9803 32.9208 5.86868 32.9208H0.39893C0.287311 32.9208 0.198901 33.012 0.198901 33.1217V45.2613C0.198901 48.4798 3.57282 51.0901 7.73382 51.0901C11.8975 51.0901 15.2714 48.4798 15.2714 45.2613V37.2185C15.2463 31.7023 13.7412 30.8985 11.7877 27.5906C10.3886 25.2148 6.94682 20.3143 6.37003 17.8566C5.8417 15.6018 5.86491 12.9916 6.0715 10.6194C6.0715 9.70039 6.81659 8.95432 7.73382 8.95432C8.65375 8.95432 9.39892 9.70039 9.39892 10.6194V21.1032C9.39892 21.2129 9.48913 21.3022 9.60166 21.3022H15.0706C15.183 21.3022 15.2714 21.2129 15.2714 21.1032V10.8446C15.2714 7.62408 11.8975 5.01575 7.73382 5.01575C3.57282 5.01575 0.198901 7.62408 0.198901 10.8446Z" />
382
+ <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"
383
+ d="M32.8911 5.46411H41.2883C44.7561 5.46411 47.5674 8.27534 47.5674 11.7414V20.547C47.5674 23.0158 45.9488 25.0995 43.7161 25.8139V25.933C45.9488 26.6456 47.5674 28.7312 47.5674 31.2018V44.6438C47.5674 47.6988 45.0873 50.1768 42.0344 50.1768L32.8911 50.1823C32.7786 50.1823 32.6892 50.0911 32.6892 49.9832V5.66324C32.6892 5.55539 32.7786 5.46411 32.8911 5.46411ZM38.7636 9.83067C38.6502 9.83067 38.5608 9.92179 38.5608 10.0316V23.9255C38.5608 24.039 38.6502 24.1284 38.7636 24.1284H39.5898C40.6948 24.1284 41.5916 23.2297 41.5916 22.1246V11.8343C41.5916 10.7293 40.6948 9.83067 39.5898 9.83067H38.7636ZM38.7636 28.5432C38.6502 28.5432 38.5608 28.6325 38.5608 28.7423V45.7971C38.5608 45.9088 38.6502 46 38.7636 46H39.7514C40.8584 46 41.7534 45.1014 41.7534 43.9962V30.5469C41.7534 29.4381 40.8584 28.5432 39.7514 28.5432H38.7636Z" />
384
+ </g>
385
+ <defs><clipPath id="clip0_scb_header"><rect width="48" height="54" fill="white" /></clipPath></defs>
386
+ </svg>
387
+ `;
388
+ }
389
+ };
390
+ r._JSON_ARRAY = {
391
+ fromAttribute: (e) => {
392
+ if (e == null || e === "") return [];
393
+ try {
394
+ const t = JSON.parse(e);
395
+ return Array.isArray(t) ? t : [];
396
+ } catch {
397
+ return [];
398
+ }
399
+ },
400
+ toAttribute: (e) => e == null ? null : JSON.stringify(e)
401
+ };
402
+ r.BP_SM_DEFAULT = 600;
403
+ r.BP_MD_DEFAULT = 840;
404
+ r.styles = S`
405
+ :host {
406
+ display:block;
407
+ background:var(--md-sys-color-surface,#fff);
408
+ color:var(--md-sys-color-on-surface,#1b1b1f);
409
+ --scb-header-search-max: 380px;
410
+ --scb-header-search-min: 250px;
411
+
412
+ /* Overridebara logo-mått (knutna till tokens) */
413
+ --scb-header-logo-w: var(--icon-size-large, 40px);
414
+ --scb-header-logo-h: calc(var(--scb-header-logo-w) * 1.125);
415
+ }
416
+
417
+ .top-row { display:flex; align-items:center; gap:var(--spacing-7,24px); padding-block:var(--spacing-7,24px); min-width:0; }
418
+ .logo-group { display:inline-flex; align-items:center; gap:var(--spacing-5,16px); text-decoration:none; color:inherit; flex-shrink:0; min-width:0; }
419
+ .logo-group svg { width:var(--scb-header-logo-w); height:var(--scb-header-logo-h); display:block; color:var(--md-sys-color-on-surface); }
420
+ .logo-text{
421
+ font-family: var(--brand-font, Inter), sans-serif;
422
+ font-size: var(--md-sys-typescale-body-medium-size, 1rem);
423
+ line-height: var(--md-sys-typescale-body-medium-line-height, 1.5rem);
424
+ font-weight: var(--weight-regular, 400);
425
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking, -0.009375rem);
426
+ color: var(--md-sys-color-on-surface, var(--p-20));
427
+ white-space: nowrap;
428
+ }
429
+ @media (max-width:360px){ .logo-text{ margin-right: calc(var(--spacing-9, 40px) * -1); } }
430
+
431
+ .actions{ display:flex; align-items:center; gap:var(--spacing-7,24px); margin-left:auto; width:100%; justify-content:flex-end; min-width:0; }
432
+
433
+ .utility{ display:none; flex-wrap:nowrap; align-items:center; gap:var(--spacing-5,16px); min-width:0; }
434
+ .utility scb-link::part(anchor){
435
+ /* typografi och färg helt via tokens */
436
+ font-family: var(--md-sys-typescale-body-medium-font, var(--brand-font)), sans-serif;
437
+ font-size: var(--md-sys-typescale-body-medium-size);
438
+ line-height: var(--md-sys-typescale-body-medium-line-height);
439
+ font-weight: var(--md-sys-typescale-body-medium-weight);
440
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
441
+ color: var(--md-sys-color-primary);
442
+ text-decoration: underline;
443
+ text-underline-offset: 3px;
444
+ text-decoration-thickness: 2px;
445
+ white-space: nowrap;
446
+ }
447
+ @media (min-width:840px){ .utility{ display:flex; } }
448
+ :host([data-collapsed]) .utility{ display:none !important; }
449
+
450
+ .menu-trigger{ display:none; }
451
+ @media (max-width:839.98px){ .menu-trigger{ display:inline-flex; } }
452
+ :host([data-collapsed]) .menu-trigger{ display:inline-flex; }
453
+
454
+ .search{
455
+ display:none;
456
+ align-items:stretch;
457
+ gap: var(--spacing-3, 8px);
458
+ flex: 0 1 var(--scb-header-search-max);
459
+ max-width: var(--scb-header-search-max);
460
+ min-width: var(--scb-header-search-min);
461
+ }
462
+
463
+ .search scb-search{ flex:1 1 auto; width:auto; }
464
+ .search scb-button{
465
+ flex:0 0 auto;
466
+ --scb-button-block-size: var(--scb-search-height);
467
+ }
468
+
469
+ scb-search{ width:100%; }
470
+ @media (min-width:600px){ .search{ display:flex; } }
471
+ @media (min-width:600px) and (max-width:839.98px){ :host([data-hide-search]) .search{ display:none !important; } }
472
+
473
+ :host([data-no-utility]) .actions{ gap:var(--spacing-5,16px); }
474
+ :host([data-no-utility]) .search{
475
+ flex: 1 1 var(--scb-header-search-max);
476
+ max-width: var(--scb-header-search-max);
477
+ min-width: var(--scb-header-search-min);
478
+ }
479
+
480
+ .tabs-inset{ display:inline-block; width:fit-content; max-width:100%; }
481
+ @media (max-width:839.98px){ .tabs-inset{ display:none; } }
482
+ scb-tabs, scb-tabs::part(divider){
483
+ --md-tabs-divider-color:transparent; --md-primary-tab-divider-color:transparent; --md-secondary-tab-divider-color:transparent;
484
+ border-bottom:0; box-shadow:none;
485
+ }
486
+ scb-tabs::part(divider){ display:none; height:0; }
487
+ scb-tabs{ margin-bottom:0; }
488
+ .divider{ border-bottom: var(--stroke-border, 1px) solid var(--md-sys-color-outline-variant,#e0e0e0); }
489
+
490
+ scb-tabs{
491
+ --md-secondary-tab-active-indicator-color:var(--md-sys-color-primary);
492
+ --md-secondary-tab-active-indicator-height:3px;
493
+ --md-secondary-tab-label-text-color:var(--md-sys-color-on-surface);
494
+ --md-secondary-tab-active-label-text-color:var(--md-sys-color-primary);
495
+ --md-secondary-tab-text-color:var(--md-sys-color-on-surface);
496
+ --md-secondary-tab-active-text-color:var(--md-sys-color-primary);
497
+ --md-secondary-tab-hover-label-text-color: var(--md-sys-color-primary);
498
+ --md-secondary-tab-pressed-label-text-color: var(--md-sys-color-primary);
499
+ --md-secondary-tab-focus-label-text-color: var(--md-sys-color-primary);
500
+ --md-secondary-tab-active-hover-label-text-color: var(--md-sys-color-primary);
501
+ --md-secondary-tab-active-pressed-label-text-color: var(--md-sys-color-primary);
502
+ --md-secondary-tab-active-focus-label-text-color: var(--md-sys-color-primary);
503
+ --md-secondary-tab-state-layer-color: transparent;
504
+ --md-secondary-tab-active-state-layer-color: transparent;
505
+ }
506
+
507
+ @media (prefers-color-scheme: dark) {
508
+ .tabs-inset scb-tabs {
509
+ --nv-20: transparent;
510
+ --md-primary-tab-container-color: transparent;
511
+ --md-secondary-tab-container-color: transparent;
512
+ background-color: transparent !important;
513
+ }
514
+ .tabs-inset scb-tabs::part(container),
515
+ .tabs-inset scb-tabs::part(base),
516
+ .tabs-inset scb-tabs::part(tabbar) {
517
+ background: transparent !important;
518
+ }
519
+ }
520
+
521
+ :host([data-hide-logo-text]) .logo-text {
522
+ display: none;
523
+ }
524
+ `;
525
+ r._nextFrame = () => new Promise((e) => requestAnimationFrame(() => e()));
526
+ i([
527
+ n({ type: String, attribute: "max-width" })
528
+ ], r.prototype, "maxWidth", 2);
529
+ i([
530
+ n({ type: String, attribute: "logo-text" })
531
+ ], r.prototype, "logoText", 2);
532
+ i([
533
+ n({ type: String, attribute: "logo-href" })
534
+ ], r.prototype, "logoHref", 2);
535
+ i([
536
+ n({ type: Boolean, reflect: !0 })
537
+ ], r.prototype, "banner", 2);
538
+ i([
539
+ n({ type: String, attribute: "banner-label" })
540
+ ], r.prototype, "bannerLabel", 2);
541
+ i([
542
+ n({ attribute: "tabs", converter: r._JSON_ARRAY })
543
+ ], r.prototype, "tabs", 2);
544
+ i([
545
+ n({ type: Number, attribute: "active-tab" })
546
+ ], r.prototype, "activeTab", 2);
547
+ i([
548
+ n({ attribute: "utility-items", converter: r._JSON_ARRAY })
549
+ ], r.prototype, "utilityItems", 2);
550
+ i([
551
+ n({ type: String, attribute: "search-placeholder" })
552
+ ], r.prototype, "searchPlaceholder", 2);
553
+ i([
554
+ n({ type: String, attribute: "drawer-label" })
555
+ ], r.prototype, "drawerLabel", 2);
556
+ i([
557
+ n({ type: String, attribute: "drawer-sub-label" })
558
+ ], r.prototype, "drawerSubLabel", 2);
559
+ i([
560
+ n({ type: String, attribute: "drawer-section-label" })
561
+ ], r.prototype, "drawerSectionLabel", 2);
562
+ i([
563
+ n({ type: String, attribute: "drawer-search-placeholder" })
564
+ ], r.prototype, "drawerSearchPlaceholder", 2);
565
+ i([
566
+ n({ attribute: "menu-data", converter: r._JSON_ARRAY })
567
+ ], r.prototype, "menuData", 2);
568
+ i([
569
+ n({ attribute: "show-drawer", reflect: !0, converter: w })
570
+ ], r.prototype, "showDrawer", 2);
571
+ i([
572
+ n({ attribute: "show-search", reflect: !0, converter: w })
573
+ ], r.prototype, "showSearch", 2);
574
+ i([
575
+ n({ attribute: "include-utility-in-drawer", reflect: !0, converter: w })
576
+ ], r.prototype, "includeUtilityInDrawer", 2);
577
+ i([
578
+ n({ type: String, attribute: "search-max" })
579
+ ], r.prototype, "searchMax", 2);
580
+ i([
581
+ n({ type: String, attribute: "search-min" })
582
+ ], r.prototype, "searchMin", 2);
583
+ i([
584
+ p()
585
+ ], r.prototype, "_drawerId", 2);
586
+ i([
587
+ p()
588
+ ], r.prototype, "_paddingInline", 2);
589
+ i([
590
+ p()
591
+ ], r.prototype, "_drawerMounted", 2);
592
+ i([
593
+ p()
594
+ ], r.prototype, "_drawerExpanded", 2);
595
+ i([
596
+ p()
597
+ ], r.prototype, "_searchId", 2);
598
+ i([
599
+ p()
600
+ ], r.prototype, "_slotTabs", 2);
601
+ i([
602
+ p()
603
+ ], r.prototype, "_slotUtils", 2);
604
+ i([
605
+ p()
606
+ ], r.prototype, "_slotMenu", 2);
607
+ i([
608
+ p()
609
+ ], r.prototype, "_collapsed", 2);
610
+ i([
611
+ p()
612
+ ], r.prototype, "_hideLogoText", 2);
613
+ r = i([
614
+ A("scb-header")
615
+ ], r);
616
+ export {
617
+ r as ScbHeader
618
+ };
@@ -0,0 +1,31 @@
1
+ import { LitElement, TemplateResult, PropertyValues } from 'lit';
2
+
3
+ export declare class ScbIconButton extends LitElement {
4
+ /** Accessible name för knappen; om inte satt fallbackar vi till `icon` */
5
+ ariaLabel: string;
6
+ /** Variant: "filled" | "outlined" | "filled-tonal" | "standard" */
7
+ variant: 'filled' | 'outlined' | 'filled-tonal' | 'standard';
8
+ /** Ikon när inte i toggle-läge */
9
+ icon: string;
10
+ /** Om true används toggle-läge */
11
+ toggle: boolean;
12
+ /** Ikon när toggle är off */
13
+ toggleofficon: string;
14
+ /** Ikon när toggle är on */
15
+ toggleonicon: string;
16
+ /** Inaktiverar knappen */
17
+ disabled: boolean;
18
+ /** Error-state */
19
+ error: boolean;
20
+ private __loadedVariants;
21
+ private __iconLoaded;
22
+ private __lastBtn?;
23
+ private __onChange;
24
+ private __attachChangeListener;
25
+ protected firstUpdated(): Promise<void>;
26
+ protected updated(changed: PropertyValues): void;
27
+ disconnectedCallback(): void;
28
+ private __ensureDepsLoaded;
29
+ static styles: import('lit').CSSResult;
30
+ render(): TemplateResult;
31
+ }