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,191 @@
1
+ import { css as c, LitElement as h, html as d } from "lit";
2
+ import { property as s, customElement as g } from "lit/decorators.js";
3
+ var v = Object.defineProperty, f = Object.getOwnPropertyDescriptor, a = (i, n, o, r) => {
4
+ for (var t = r > 1 ? void 0 : r ? f(n, o) : n, l = i.length - 1, p; l >= 0; l--)
5
+ (p = i[l]) && (t = (r ? p(n, o, t) : p(t)) || t);
6
+ return r && t && v(n, o, t), t;
7
+ };
8
+ let e = class extends h {
9
+ constructor() {
10
+ super(...arguments), this.variant = "default", this.direction = "horizontal", this.header = "", this.subtitle = "", this.supportingText = "", this.cardHref = "", this.showMedia = null;
11
+ }
12
+ // Ladda in md-icon + md-ripple on-demand (första gången komponenten mountas)
13
+ async firstUpdated() {
14
+ e.__iconLoaded || (await import("@material/web/icon/icon.js"), e.__iconLoaded = !0), e.__rippleLoaded || (await import("@material/web/ripple/ripple.js"), e.__rippleLoaded = !0);
15
+ }
16
+ render() {
17
+ const i = this.variant ? `${this.variant.toLowerCase()}` : "", n = this.direction ? `${this.direction.toLowerCase()}` : "", o = this.cardHref ? "clickable" : "", r = (/* @__PURE__ */ new Date()).getDate(), t = (/* @__PURE__ */ new Date()).toLocaleString("default", { month: "short" }).replace(".", "");
18
+ return d`
19
+ <div
20
+ class="calendar-card ${n} ${o} ${i}"
21
+ role="${this.cardHref ? "link" : "group"}"
22
+ aria-label="${this.header || "Kalenderkort"}"
23
+ tabindex="${this.cardHref ? "0" : "-1"}"
24
+ @click="${this.cardHref ? () => window.open(this.cardHref, "_self") : null}"
25
+ @keydown="${this.cardHref ? this._onKeyDown : null}"
26
+ style="cursor: ${this.cardHref ? "pointer" : "default"};"
27
+ >
28
+ ${this.cardHref ? d`<md-ripple></md-ripple>` : ""}
29
+ ${this.showMedia ? d`
30
+ <div class="media" aria-label="Datum: ${r} ${t}">
31
+ <div class="day">${r}</div>
32
+ <div class="month">${t}</div>
33
+ </div>` : ""}
34
+ <div class="container">
35
+ <div class="header-container">
36
+ <div class="header">${this.header}</div>
37
+ ${this.cardHref ? d`<md-icon>arrow_forward</md-icon>` : ""}
38
+ </div>
39
+ ${this.subtitle ? d`<div class="subtitle">${this.subtitle}</div>` : ""}
40
+ ${this.supportingText ? d`<div class="supporting-text">${this.supportingText}</div>` : ""}
41
+ </div>
42
+ </div>
43
+ `;
44
+ }
45
+ _onKeyDown(i) {
46
+ (i.key === "Enter" || i.key === " ") && this.cardHref && (window.open(this.cardHref, "_self"), i.preventDefault());
47
+ }
48
+ };
49
+ e.__iconLoaded = !1;
50
+ e.__rippleLoaded = !1;
51
+ e.styles = c`
52
+ /* Grundläggande stilar för kortet */
53
+ :host {
54
+ .calendar-card {
55
+ position: relative;
56
+ display: flex;
57
+ color: var(--md-sys-color-on-surface, #0F0865);
58
+ font-family: var(--brand, Inter);
59
+ font-style: normal;
60
+ flex-direction: column;
61
+ align-items: flex-start;
62
+ gap: var(--spacing-spacing-3, 8px);
63
+ align-self: stretch;
64
+ cursor: pointer;
65
+
66
+ &.vertical {
67
+ max-width: 360px;
68
+ }
69
+
70
+ &.horizontal {
71
+ flex-direction: row;
72
+ max-width: 576px;
73
+ gap: var(--spacing-spacing-6, 20px);
74
+ }
75
+
76
+ &.outlined {
77
+ border-radius: var(--radius-large, 16px);
78
+ border: 1px solid var(--md-sys-color-outline-variant, #CCC);
79
+ background: var(--md-sys-color-surface, #FFF);
80
+ padding: var(--spacing-spacing-7, 24px) var(--spacing-spacing-6, 20px);
81
+ }
82
+
83
+ &.filled {
84
+ border-radius: var(--radius-large, 16px);
85
+ background: var(--md-sys-color-surface-dim, #F9F8EF);
86
+ padding: var(--spacing-spacing-7, 24px) var(--spacing-spacing-6, 20px);
87
+ .media {
88
+ background: var(--md-sys-color-surface, #FFF);
89
+ }
90
+ }
91
+ }
92
+ }
93
+
94
+ /* Media-del */
95
+ .media {
96
+ display: flex;
97
+ width: var(--spacing-spacing-11, 64px);
98
+ min-width: var(--spacing-spacing-11, 64px);
99
+ max-width: var(--spacing-spacing-11, 64px);
100
+ height: var(--spacing-spacing-11, 64px);
101
+ padding: var(--spacing-spacing-0, 0) 0;
102
+ flex-direction: column;
103
+ justify-content: center;
104
+ align-items: center;
105
+ gap: var(--spacing-spacing-2, 4px);
106
+ border-radius: var(--radius-small, 8px);
107
+ background: var(--md-sys-color-surface-dim, #F9F8EF);
108
+
109
+ .day {
110
+ font-size: var(--scale-07, 28px);
111
+ font-weight: var(--weight-bold, 700);
112
+ line-height: 100%;
113
+ letter-spacing: -0.6px;
114
+ }
115
+
116
+ .month {
117
+ font-size: var(--scale-02, 14px);
118
+ font-weight: var(--weight-regular, 400);
119
+ line-height: 100%;
120
+ }
121
+ }
122
+
123
+ md-ripple {
124
+ border-radius: var(--radius-l, 16px);
125
+ }
126
+
127
+ /* Textstilar */
128
+ .header-container {
129
+ width: 100%;
130
+ flex: 0 0 auto;
131
+ display: flex;
132
+ align-items: center;
133
+ gap: 10px;
134
+ padding-top: var(--spacing-pacing-1, 2px);
135
+ color:inherit;
136
+ text-decoration: none;
137
+ }
138
+
139
+ .header {
140
+ font-size: var(--md-sys-typescale-headline-small-size, 24px);
141
+ font-weight: var(--weight-bold, 700);
142
+ line-height: var(--md-sys-typescale-headline-small-line-height2, 30px);
143
+ letter-spacing: var(--md-sys-typescale-headline-small-tracking, -0.6px);
144
+ flex: 1 1 0;
145
+ min-width: 0;
146
+ overflow: hidden;
147
+ text-overflow: ellipsis;
148
+ white-space: nowrap;
149
+ }
150
+
151
+ .subtitle {
152
+ font-size: var(--md-sys-typescale-title-medium-size, 18px);
153
+ font-weight: var(--weight-semibold, 600);
154
+ line-height: var(--md-sys-typescale-title-medium-line-height, 26px);
155
+ letter-spacing: var(--md-sys-typescale-title-medium-tracking, -0.3px);
156
+ }
157
+
158
+ .supporting-text {
159
+ font-size: var(--md-sys-typescale-body-large-size, 18px);
160
+ font-weight: var(--weight-regular, 400);
161
+ line-height: var(--md-sys-typescale-body-large-line-height, 26px);
162
+ letter-spacing: var(--md-sys-typescale-body-large-tracking, -0.3px);
163
+ }
164
+ `;
165
+ a([
166
+ s({ type: String, reflect: !0 })
167
+ ], e.prototype, "variant", 2);
168
+ a([
169
+ s({ type: String, reflect: !0 })
170
+ ], e.prototype, "direction", 2);
171
+ a([
172
+ s({ type: String })
173
+ ], e.prototype, "header", 2);
174
+ a([
175
+ s({ type: String })
176
+ ], e.prototype, "subtitle", 2);
177
+ a([
178
+ s({ type: String, attribute: "supporting-text" })
179
+ ], e.prototype, "supportingText", 2);
180
+ a([
181
+ s({ type: String, attribute: "card-href" })
182
+ ], e.prototype, "cardHref", 2);
183
+ a([
184
+ s({ type: Boolean, reflect: !0, attribute: "show-media" })
185
+ ], e.prototype, "showMedia", 2);
186
+ e = a([
187
+ g("scb-calendar-card")
188
+ ], e);
189
+ export {
190
+ e as ScbCalendarCard
191
+ };
@@ -0,0 +1,24 @@
1
+ import { LitElement } from 'lit';
2
+
3
+ /**
4
+ * Enkel kort-komponent för SCB-designsystemet
5
+ */
6
+ export declare class ScbCard extends LitElement {
7
+ type: string;
8
+ variant: string;
9
+ direction: string;
10
+ mediaType: string;
11
+ mediaHref: string;
12
+ cardHref: string;
13
+ label: string;
14
+ subLabel: string;
15
+ supportingText: string;
16
+ date: Date;
17
+ commentsText: string;
18
+ comments: number;
19
+ likesText: string;
20
+ likes: number;
21
+ static styles: import('lit').CSSResult;
22
+ render(): import('lit-html').TemplateResult<1>;
23
+ firstUpdated(): void;
24
+ }
@@ -0,0 +1,345 @@
1
+ import { css as p, LitElement as h, html as t } from "lit";
2
+ import { property as e, customElement as v } from "lit/decorators.js";
3
+ import "@material/web/icon/icon.js";
4
+ import "@material/web/ripple/ripple.js";
5
+ import "../scb-list/scb-list.js";
6
+ import "../scb-button/scb-button.js";
7
+ var m = Object.defineProperty, b = Object.getOwnPropertyDescriptor, s = (a, r, l, d) => {
8
+ for (var c = d > 1 ? void 0 : d ? b(r, l) : r, n = a.length - 1, o; n >= 0; n--)
9
+ (o = a[n]) && (c = (d ? o(r, l, c) : o(c)) || c);
10
+ return d && c && m(r, l, c), c;
11
+ };
12
+ let i = class extends h {
13
+ constructor() {
14
+ super(...arguments), this.type = "", this.variant = "", this.direction = "", this.mediaType = "", this.mediaHref = "", this.cardHref = "", this.label = "", this.subLabel = "", this.supportingText = "", this.date = /* @__PURE__ */ new Date(), this.commentsText = "", this.comments = 0, this.likesText = "", this.likes = 0;
15
+ }
16
+ render() {
17
+ const a = this.variant ? `${this.variant.toLowerCase()}` : "", r = this.direction ? `${this.direction.toLowerCase()}` : "", l = this.cardHref ? "clickable" : "", d = this.mediaType ? `${this.mediaType.toLowerCase()}` : "";
18
+ switch (this.type) {
19
+ case "standard":
20
+ return t`
21
+ <div class="scb-card ${a} ${r} ${l}">
22
+ ${this.cardHref ? t`<md-ripple></md-ripple>` : ""}
23
+ ${this.mediaHref ? t`<img src="${this.mediaHref}" class="${d}" alt="" ?hidden=${!this.mediaHref} />` : ""}
24
+ <div class="full-content">
25
+ <div class="top-content">
26
+ ${this.label ? t`
27
+ <div class="header">
28
+ ${this.cardHref ? t`<a href="${this.cardHref}" tabindex="0">${this.label}</a><md-icon>arrow_forward</md-icon>` : this.label}
29
+ </div>` : ""}
30
+ ${this.subLabel ? t`<div class="sub-label">${this.subLabel}</div>` : ""}
31
+ ${this.supportingText ? t`<div class="supporting-text">${this.supportingText}</div>` : ""}
32
+ ${this.date ? t`<div class="date">${this.date}</div>` : ""}
33
+ </div>
34
+ </div>
35
+ </div>
36
+ `;
37
+ case "list":
38
+ return t`
39
+ <div class="scb-card ${a} vertical ${l}">
40
+ ${this.mediaHref ? t`<img src="${this.mediaHref}" class="${d}" alt="" ?hidden=${!this.mediaHref} />` : ""}
41
+ <div class="full-content">
42
+ <div class="top-content">
43
+ ${this.label ? t`
44
+ <div class="header">
45
+ ${this.label}
46
+ </div>` : ""}
47
+ ${this.subLabel ? t`<div class="sub-label">${this.subLabel}</div>` : ""}
48
+ ${this.supportingText ? t`<div class="supporting-text">${this.supportingText}</div>` : ""}
49
+ ${this.date ? t`<div class="date">${this.date}</div>` : ""}
50
+ </div>
51
+ <div class="content list">
52
+ <slot></slot>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ `;
57
+ case "social":
58
+ return t`
59
+ <div class="scb-card ${a} ${r} ${l}">
60
+ ${this.cardHref ? t`<md-ripple></md-ripple>` : ""}
61
+ ${this.mediaHref ? t`<img src="${this.mediaHref}" class="${d}" alt="" ?hidden=${!this.mediaHref} />` : ""}
62
+ <div class="full-content">
63
+ <div class="top-content">
64
+ ${this.label ? t`
65
+ <div class="header">
66
+ ${this.cardHref ? t`<a href="${this.cardHref}" tabindex="0">${this.label}</a><md-icon>arrow_forward</md-icon>` : this.label}
67
+ </div>` : ""}
68
+ ${this.subLabel ? t`<div class="sub-label">${this.subLabel}</div>` : ""}
69
+ ${this.supportingText ? t`<div class="supporting-text">${this.supportingText}</div>` : ""}
70
+ ${this.date ? t`<div class="date">${this.date}</div>` : ""}
71
+ </div>
72
+ <div class="content">
73
+ <div class="social-metrics">
74
+ <span class="comments"><md-icon>mode_comment</md-icon> <span>${this.commentsText}: ${this.comments}</span></span>
75
+ <span class="likes"><md-icon>thumb_up</md-icon> <span>${this.likesText}: ${this.likes}</span></span>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ `;
81
+ case "link":
82
+ return t`
83
+ <div class="scb-card ${a} ${r} ${l}">
84
+ ${this.mediaHref ? t`<img src="${this.mediaHref}" class="${d}" alt="" ?hidden=${!this.mediaHref} />` : ""}
85
+ <div class="full-content">
86
+ <div class="top-content">
87
+ ${this.label ? t`
88
+ <div class="header">
89
+ ${this.label}
90
+ </div>` : ""}
91
+ ${this.subLabel ? t`<div class="sub-label">${this.subLabel}</div>` : ""}
92
+ ${this.supportingText ? t`<div class="supporting-text">${this.supportingText}</div>` : ""}
93
+ ${this.date ? t`<div class="date">${this.date}</div>` : ""}
94
+ </div>
95
+ <div class="content links">
96
+ <slot></slot>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ `;
101
+ case "action":
102
+ return t`
103
+ <div class="scb-card ${a} ${r} ${l}">
104
+ ${this.mediaHref ? t`<img src="${this.mediaHref}" class="${d}" alt="" ?hidden=${!this.mediaHref} />` : ""}
105
+ <div class="full-content">
106
+ <div class="top-content">
107
+ ${this.label ? t`
108
+ <div class="header">
109
+ ${this.label}
110
+ </div>` : ""}
111
+ ${this.subLabel ? t`
112
+ <div class="sub-label">${this.subLabel}</div>` : ""}
113
+ ${this.supportingText ? t`
114
+ <div class="supporting-text">${this.supportingText}</div>` : ""}
115
+ ${this.date ? t`
116
+ <div class="date">${this.date}</div>` : ""}
117
+ </div>
118
+ <div class="content actions">
119
+ <slot></slot>
120
+ </div>
121
+ </div>
122
+ </div>
123
+ `;
124
+ default:
125
+ return t`
126
+ <div class="scb-card ${a} ${r} ${l}">
127
+ ${this.cardHref ? t`<md-ripple></md-ripple>` : ""}
128
+ ${this.mediaHref ? t`<img src="${this.mediaHref}" class="${d}" alt="" ?hidden=${!this.mediaHref} />` : ""}
129
+ <div class="full-content">
130
+ <div class="top-content">
131
+ ${this.label ? t`
132
+ <div class="header">
133
+ ${this.cardHref ? t`<a href="${this.cardHref}" tabindex="0">${this.label}</a><md-icon>arrow_forward</md-icon>` : this.label}
134
+ </div>` : ""}
135
+ ${this.subLabel ? t`<div class="sub-label">${this.subLabel}</div>` : ""}
136
+ ${this.supportingText ? t`<div class="supporting-text">${this.supportingText}</div>` : ""}
137
+ ${this.date ? t`<div class="date">${this.date}</div>` : ""}
138
+ </div>
139
+ </div>
140
+ </div>
141
+ `;
142
+ }
143
+ }
144
+ firstUpdated() {
145
+ if (this.cardHref) {
146
+ const a = this.renderRoot.querySelector(".scb-card");
147
+ a && a.addEventListener("click", (r) => {
148
+ r.target.closest("a") || (window.location.href = this.cardHref);
149
+ });
150
+ }
151
+ }
152
+ };
153
+ i.styles = p`
154
+ /* Min-bredder per variant (override-ningsbara via CSS custom props) */
155
+ :host{ --scb-card-min-w: 360px; }
156
+
157
+ :host {
158
+ max-width: var(--scb-card-min-w);
159
+ width: 100%;
160
+ display: block;
161
+ }
162
+ /* Grundläggande stilar för kortet */
163
+ .scb-card {
164
+ color: var(--md-sys-color-on-surface);
165
+ display: flex;
166
+ max-width: var(--scb-card-min-w);
167
+ position: relative;
168
+ background: transparent;
169
+ border-radius: var(--md-sys-shape-corner-large);
170
+ background: var(--md-sys-color-surface);
171
+ }
172
+ .social-metrics md-icon {
173
+ width: var(--scale-05);
174
+ height: var(--scale-05);
175
+ font-size: var(--md-sys-typescale-title-large-size);
176
+ vertical-align: middle;
177
+ }
178
+ .social-metrics {
179
+ display: flex;
180
+ margin-top: var(--spacing-4);
181
+ gap: var(--spacing-5);
182
+ flex-wrap: wrap;
183
+ }
184
+ .comments, .likes {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: var(--spacing-2);
188
+ }
189
+ .scb-card.outlined {
190
+ border: 1px solid var(--md-sys-color-outline-variant);
191
+ }
192
+ .scb-card.filled {
193
+ background: var(--md-sys-color-surface-dim);
194
+ }
195
+ .scb-card.vertical {
196
+ flex-direction: column;
197
+ }
198
+ .scb-card.clickable {
199
+ cursor: pointer;
200
+ }
201
+
202
+ /* Textstilar */
203
+ .header {
204
+ font-size: var(--md-sys-typescale-headline-small-size);
205
+ font-weight: var(--weight-bold);
206
+ line-height: var(--md-sys-typescale-headline-small-line-height);
207
+ letter-spacing: var(--md-sys-typescale-headline-small-Tracking);
208
+ display: flex;
209
+ justify-content: space-between;
210
+ align-items: center;
211
+ }
212
+ .header a {
213
+ color: inherit;
214
+ text-decoration: none;
215
+ }
216
+ .sub-label {
217
+ font-size: var(--md-sys-typescale-title-medium-size);
218
+ font-weight: var(--weight-semibold);
219
+ line-height: var(--md-sys-typescale-title-medium-line-height);
220
+ letter-spacing: var(--md-sys-typescale-title-medium-tracking);
221
+ }
222
+ .supporting-text {
223
+ font-size: var(--md-sys-typescale-body-large-size);
224
+ line-height: var(--md-sys-typescale-body-large-line-height);
225
+ letter-spacing: var(--md-sys-typescale-body-large-tracking);
226
+ }
227
+ .date {
228
+ font-size: var(--md-sys-typescale-body-medium-size);
229
+ line-height: var(--md-sys-typescale-body-medium-line-height);
230
+ letter-spacing: var(--md-sys-typescale-body-medium-Tracking);
231
+ }
232
+ .full-content {
233
+ padding: var(--spacing-7) var(--spacing-6);
234
+ }
235
+ md-ripple {
236
+ border-radius: var(--md-sys-shape-corner-large);
237
+ }
238
+ .top-content {
239
+ display: flex;
240
+ flex-direction: column;
241
+ gap: var(--spacing-3);
242
+
243
+ }
244
+ .scb-card img {
245
+ border-radius: var(--md-sys-shape-corner-large);
246
+ width: 100%;
247
+ object-fit: contain;
248
+ }
249
+ .scb-card img.avatar{
250
+ border-radius: var(--md-sys-shape-corner-full);
251
+ width: var(--icon-size-large);
252
+ height: var(--icon-size-large);
253
+ margin: var(--spacing-7) 0 0 var(--spacing-6);
254
+ }
255
+ .scb-card img.avatar + .full-content {
256
+ padding: var(--spacing-5) var(--spacing-6) var(--spacing-7) var(--spacing-6);
257
+ }
258
+
259
+ /* Horisontella kortspecifika stilar */
260
+ .scb-card.horizontal {
261
+ flex-direction: row;
262
+ width: 100%;
263
+ max-width: 576px;
264
+ }
265
+ .scb-card.horizontal .full-content {
266
+ padding: var(--spacing-6) var(--spacing-6) var(--spacing-6) 0;
267
+ width: 100%;
268
+ }
269
+ .scb-card.horizontal img{
270
+ width: auto;
271
+ height: 133px;
272
+ margin: var(--spacing-6);
273
+ }
274
+ .scb-card.horizontal img.avatar {
275
+ border-radius: var(--md-sys-shape-corner-full);
276
+ width: var(--icon-size-large);
277
+ height: var(--icon-size-large);
278
+ margin: var(--spacing-6) 0 var(--spacing-6) var(--spacing-6);
279
+ }
280
+
281
+ .scb-card .content.list{
282
+ margin-top: var(--spacing-7);
283
+ }
284
+ .scb-card .content.actions ::slotted(*) {
285
+ margin-top: var(--spacing-7);
286
+ display: flex;
287
+ flex-wrap: wrap;
288
+ gap: var(--spacing-3);
289
+ }
290
+ .scb-card .content.links ::slotted(*) {
291
+ margin-top: var(--spacing-3);
292
+ display: flex;
293
+ flex-direction: column;
294
+ gap: var(--spacing-3);
295
+ }
296
+
297
+ `;
298
+ s([
299
+ e({ type: String })
300
+ ], i.prototype, "type", 2);
301
+ s([
302
+ e({ type: String })
303
+ ], i.prototype, "variant", 2);
304
+ s([
305
+ e({ type: String })
306
+ ], i.prototype, "direction", 2);
307
+ s([
308
+ e({ type: String, attribute: "media-type" })
309
+ ], i.prototype, "mediaType", 2);
310
+ s([
311
+ e({ type: String, attribute: "media-href" })
312
+ ], i.prototype, "mediaHref", 2);
313
+ s([
314
+ e({ type: String, attribute: "card-href" })
315
+ ], i.prototype, "cardHref", 2);
316
+ s([
317
+ e({ type: String })
318
+ ], i.prototype, "label", 2);
319
+ s([
320
+ e({ type: String, attribute: "sub-label" })
321
+ ], i.prototype, "subLabel", 2);
322
+ s([
323
+ e({ type: String, attribute: "supporting-text" })
324
+ ], i.prototype, "supportingText", 2);
325
+ s([
326
+ e({ type: Date })
327
+ ], i.prototype, "date", 2);
328
+ s([
329
+ e({ type: String, attribute: "social-comments-text" })
330
+ ], i.prototype, "commentsText", 2);
331
+ s([
332
+ e({ type: Number, attribute: "social-comments", reflect: !0 })
333
+ ], i.prototype, "comments", 2);
334
+ s([
335
+ e({ type: String, attribute: "social-likes-text" })
336
+ ], i.prototype, "likesText", 2);
337
+ s([
338
+ e({ type: Number, attribute: "social-likes", reflect: !0 })
339
+ ], i.prototype, "likes", 2);
340
+ i = s([
341
+ v("scb-card")
342
+ ], i);
343
+ export {
344
+ i as ScbCard
345
+ };
@@ -0,0 +1,17 @@
1
+ import { LitElement } from 'lit';
2
+
3
+ export declare class ScbCheckboxGroup extends LitElement {
4
+ #private;
5
+ orientation: 'vertical' | 'horizontal';
6
+ disabled: boolean;
7
+ spacing: 'item' | 'group';
8
+ static styles: import('lit').CSSResult;
9
+ render(): import('lit-html').TemplateResult<1>;
10
+ firstUpdated(): void;
11
+ updated(changed: Map<string, unknown>): void;
12
+ }
13
+ declare global {
14
+ interface HTMLElementTagNameMap {
15
+ 'scb-checkbox-group': ScbCheckboxGroup;
16
+ }
17
+ }
@@ -0,0 +1,80 @@
1
+ import { css as d, LitElement as b, html as u } from "lit";
2
+ import { property as h, customElement as f } from "lit/decorators.js";
3
+ var v = Object.defineProperty, x = Object.getOwnPropertyDescriptor, g = (e) => {
4
+ throw TypeError(e);
5
+ }, n = (e, t, r, s) => {
6
+ for (var o = s > 1 ? void 0 : s ? x(t, r) : t, c = e.length - 1, l; c >= 0; c--)
7
+ (l = e[c]) && (o = (s ? l(t, r, o) : l(o)) || o);
8
+ return s && o && v(t, r, o), o;
9
+ }, y = (e, t, r) => t.has(e) || g("Cannot " + r), p = (e, t, r) => (y(e, t, "read from private field"), r ? r.call(e) : t.get(e)), m = (e, t, r) => t.has(e) ? g("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r), i;
10
+ let a = class extends b {
11
+ constructor() {
12
+ super(...arguments), this.orientation = "vertical", this.disabled = !1, this.spacing = "group", m(this, i, () => {
13
+ var r;
14
+ const e = (r = this.shadowRoot) == null ? void 0 : r.querySelector("slot");
15
+ if (!e) return;
16
+ const t = e.assignedElements({ flatten: !0 }).filter((s) => s.tagName.toLowerCase() === "scb-checkbox");
17
+ for (const s of t)
18
+ this.disabled ? s.setAttribute("disabled", "") : s.removeAttribute("disabled"), this.orientation === "horizontal" ? s.setAttribute("orientation", "horizontal") : s.removeAttribute("orientation"), this.spacing === "group" ? s.style.setProperty("--scb-checkbox-gap", "0") : s.style.removeProperty("--scb-checkbox-gap");
19
+ });
20
+ }
21
+ render() {
22
+ const e = this.orientation === "horizontal" ? "row" : "column";
23
+ return u`
24
+ <div class="g" role="group" aria-disabled=${String(this.disabled)} style=${`--_dir:${e}`}>
25
+ <slot @slotchange=${p(this, i)}></slot>
26
+ </div>
27
+ `;
28
+ }
29
+ firstUpdated() {
30
+ p(this, i).call(this);
31
+ }
32
+ updated(e) {
33
+ (e.has("disabled") || e.has("orientation") || e.has("spacing")) && p(this, i).call(this);
34
+ }
35
+ };
36
+ i = /* @__PURE__ */ new WeakMap();
37
+ a.styles = d`
38
+ /* Standardgap när group äger spacing. Kan överskridas via --scb-checkbox-gap. */
39
+ :host {
40
+ display: block;
41
+ --scb-checkbox-gap: 12px;
42
+ }
43
+
44
+ .g {
45
+ display: flex;
46
+ flex-direction: var(--_dir, column);
47
+ align-items: flex-start;
48
+ gap: 0; /* om spacing="item" */
49
+ }
50
+
51
+ /* spacing="group" → använder gap-variabeln */
52
+ :host([spacing="group"]) .g {
53
+ gap: var(--scb-checkbox-gap);
54
+ }
55
+
56
+ /* Öka gap när gruppen är horisontell */
57
+ :host([orientation="horizontal"]) {
58
+ --scb-checkbox-gap: 32px;
59
+ }
60
+
61
+ /* När gruppen äger spacing: nolla barnens egen högermarginal (horisontellt läge). */
62
+ :host([spacing="group"]) ::slotted(scb-checkbox) {
63
+ --scb-checkbox-gap: 0;
64
+ }
65
+ `;
66
+ n([
67
+ h({ type: String, reflect: !0 })
68
+ ], a.prototype, "orientation", 2);
69
+ n([
70
+ h({ type: Boolean, reflect: !0 })
71
+ ], a.prototype, "disabled", 2);
72
+ n([
73
+ h({ type: String, reflect: !0 })
74
+ ], a.prototype, "spacing", 2);
75
+ a = n([
76
+ f("scb-checkbox-group")
77
+ ], a);
78
+ export {
79
+ a as ScbCheckboxGroup
80
+ };
@@ -0,0 +1,20 @@
1
+ import { LitElement, TemplateResult, PropertyValues } from 'lit';
2
+
3
+ export declare class ScbCheckbox extends LitElement {
4
+ disabled: boolean;
5
+ indeterminate: boolean;
6
+ checked: boolean;
7
+ label: string;
8
+ supportingText: string;
9
+ private _checkboxId;
10
+ connectedCallback(): void;
11
+ protected firstUpdated(): void;
12
+ protected updated(changed: PropertyValues): void;
13
+ static styles: import('lit').CSSResult;
14
+ render(): TemplateResult;
15
+ }
16
+ declare global {
17
+ interface HTMLElementTagNameMap {
18
+ 'scb-checkbox': ScbCheckbox;
19
+ }
20
+ }