Browse code

Update

Benjamin Roth authored on05/02/2026 17:13:25
Showing1 changed files
... ...
@@ -1,265 +1,265 @@
1
-var mt = Object.defineProperty;
2
-var ft = (r, t, e) => t in r ? mt(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
-var b = (r, t, e) => ft(r, typeof t != "symbol" ? t + "" : t, e);
1
+var Ee = Object.defineProperty;
2
+var Se = (o, e, t) => e in o ? Ee(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
+var p = (o, e, t) => Se(o, typeof e != "symbol" ? e + "" : e, t);
4 4
 /**
5 5
  * @license
6 6
  * Copyright 2019 Google LLC
7 7
  * SPDX-License-Identifier: BSD-3-Clause
8 8
  */
9
-const T = globalThis, q = T.ShadowRoot && (T.ShadyCSS === void 0 || T.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, Z = Symbol(), K = /* @__PURE__ */ new WeakMap();
10
-let nt = class {
11
-  constructor(t, e, s) {
12
-    if (this._$cssResult$ = !0, s !== Z) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
13
-    this.cssText = t, this.t = e;
9
+const N = globalThis, te = N.ShadowRoot && (N.ShadyCSS === void 0 || N.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, ie = Symbol(), oe = /* @__PURE__ */ new WeakMap();
10
+let fe = class {
11
+  constructor(e, t, i) {
12
+    if (this._$cssResult$ = !0, i !== ie) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
13
+    this.cssText = e, this.t = t;
14 14
   }
15 15
   get styleSheet() {
16
-    let t = this.o;
17
-    const e = this.t;
18
-    if (q && t === void 0) {
19
-      const s = e !== void 0 && e.length === 1;
20
-      s && (t = K.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && K.set(e, t));
16
+    let e = this.o;
17
+    const t = this.t;
18
+    if (te && e === void 0) {
19
+      const i = t !== void 0 && t.length === 1;
20
+      i && (e = oe.get(t)), e === void 0 && ((this.o = e = new CSSStyleSheet()).replaceSync(this.cssText), i && oe.set(t, e));
21 21
     }
22
-    return t;
22
+    return e;
23 23
   }
24 24
   toString() {
25 25
     return this.cssText;
26 26
   }
27 27
 };
28
-const _t = (r) => new nt(typeof r == "string" ? r : r + "", void 0, Z), D = (r, ...t) => {
29
-  const e = r.length === 1 ? r[0] : t.reduce((s, i, n) => s + ((o) => {
30
-    if (o._$cssResult$ === !0) return o.cssText;
31
-    if (typeof o == "number") return o;
32
-    throw Error("Value passed to 'css' function must be a 'css' function result: " + o + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
33
-  })(i) + r[n + 1], r[0]);
34
-  return new nt(e, r, Z);
35
-}, gt = (r, t) => {
36
-  if (q) r.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
37
-  else for (const e of t) {
38
-    const s = document.createElement("style"), i = T.litNonce;
39
-    i !== void 0 && s.setAttribute("nonce", i), s.textContent = e.cssText, r.appendChild(s);
40
-  }
41
-}, F = q ? (r) => r : (r) => r instanceof CSSStyleSheet ? ((t) => {
42
-  let e = "";
43
-  for (const s of t.cssRules) e += s.cssText;
44
-  return _t(e);
45
-})(r) : r;
28
+const Ce = (o) => new fe(typeof o == "string" ? o : o + "", void 0, ie), f = (o, ...e) => {
29
+  const t = o.length === 1 ? o[0] : e.reduce((i, r, n) => i + ((s) => {
30
+    if (s._$cssResult$ === !0) return s.cssText;
31
+    if (typeof s == "number") return s;
32
+    throw Error("Value passed to 'css' function must be a 'css' function result: " + s + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
33
+  })(r) + o[n + 1], o[0]);
34
+  return new fe(t, o, ie);
35
+}, Me = (o, e) => {
36
+  if (te) o.adoptedStyleSheets = e.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
37
+  else for (const t of e) {
38
+    const i = document.createElement("style"), r = N.litNonce;
39
+    r !== void 0 && i.setAttribute("nonce", r), i.textContent = t.cssText, o.appendChild(i);
40
+  }
41
+}, se = te ? (o) => o : (o) => o instanceof CSSStyleSheet ? ((e) => {
42
+  let t = "";
43
+  for (const i of e.cssRules) t += i.cssText;
44
+  return Ce(t);
45
+})(o) : o;
46 46
 /**
47 47
  * @license
48 48
  * Copyright 2017 Google LLC
49 49
  * SPDX-License-Identifier: BSD-3-Clause
50 50
  */
51
-const { is: At, defineProperty: vt, getOwnPropertyDescriptor: yt, getOwnPropertyNames: bt, getOwnPropertySymbols: Et, getPrototypeOf: St } = Object, f = globalThis, G = f.trustedTypes, xt = G ? G.emptyScript : "", L = f.reactiveElementPolyfillSupport, C = (r, t) => r, V = { toAttribute(r, t) {
52
-  switch (t) {
51
+const { is: Te, defineProperty: ze, getOwnPropertyDescriptor: Pe, getOwnPropertyNames: Ue, getOwnPropertySymbols: Oe, getPrototypeOf: He } = Object, y = globalThis, ne = y.trustedTypes, Re = ne ? ne.emptyScript : "", j = y.reactiveElementPolyfillSupport, T = (o, e) => o, F = { toAttribute(o, e) {
52
+  switch (e) {
53 53
     case Boolean:
54
-      r = r ? xt : null;
54
+      o = o ? Re : null;
55 55
       break;
56 56
     case Object:
57 57
     case Array:
58
-      r = r == null ? r : JSON.stringify(r);
58
+      o = o == null ? o : JSON.stringify(o);
59 59
   }
60
-  return r;
61
-}, fromAttribute(r, t) {
62
-  let e = r;
63
-  switch (t) {
60
+  return o;
61
+}, fromAttribute(o, e) {
62
+  let t = o;
63
+  switch (e) {
64 64
     case Boolean:
65
-      e = r !== null;
65
+      t = o !== null;
66 66
       break;
67 67
     case Number:
68
-      e = r === null ? null : Number(r);
68
+      t = o === null ? null : Number(o);
69 69
       break;
70 70
     case Object:
71 71
     case Array:
72 72
       try {
73
-        e = JSON.parse(r);
73
+        t = JSON.parse(o);
74 74
       } catch {
75
-        e = null;
75
+        t = null;
76 76
       }
77 77
   }
78
-  return e;
79
-} }, at = (r, t) => !At(r, t), Q = { attribute: !0, type: String, converter: V, reflect: !1, useDefault: !1, hasChanged: at };
80
-Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), f.litPropertyMetadata ?? (f.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
78
+  return t;
79
+} }, ve = (o, e) => !Te(o, e), ae = { attribute: !0, type: String, converter: F, reflect: !1, useDefault: !1, hasChanged: ve };
80
+Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), y.litPropertyMetadata ?? (y.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
81 81
 let E = class extends HTMLElement {
82
-  static addInitializer(t) {
83
-    this._$Ei(), (this.l ?? (this.l = [])).push(t);
82
+  static addInitializer(e) {
83
+    this._$Ei(), (this.l ?? (this.l = [])).push(e);
84 84
   }
85 85
   static get observedAttributes() {
86 86
     return this.finalize(), this._$Eh && [...this._$Eh.keys()];
87 87
   }
88
-  static createProperty(t, e = Q) {
89
-    if (e.state && (e.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(t) && ((e = Object.create(e)).wrapped = !0), this.elementProperties.set(t, e), !e.noAccessor) {
90
-      const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
91
-      i !== void 0 && vt(this.prototype, t, i);
88
+  static createProperty(e, t = ae) {
89
+    if (t.state && (t.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(e) && ((t = Object.create(t)).wrapped = !0), this.elementProperties.set(e, t), !t.noAccessor) {
90
+      const i = Symbol(), r = this.getPropertyDescriptor(e, i, t);
91
+      r !== void 0 && ze(this.prototype, e, r);
92 92
     }
93 93
   }
94
-  static getPropertyDescriptor(t, e, s) {
95
-    const { get: i, set: n } = yt(this.prototype, t) ?? { get() {
96
-      return this[e];
97
-    }, set(o) {
98
-      this[e] = o;
94
+  static getPropertyDescriptor(e, t, i) {
95
+    const { get: r, set: n } = Pe(this.prototype, e) ?? { get() {
96
+      return this[t];
97
+    }, set(s) {
98
+      this[t] = s;
99 99
     } };
100
-    return { get: i, set(o) {
101
-      const l = i == null ? void 0 : i.call(this);
102
-      n == null || n.call(this, o), this.requestUpdate(t, l, s);
100
+    return { get: r, set(s) {
101
+      const l = r == null ? void 0 : r.call(this);
102
+      n == null || n.call(this, s), this.requestUpdate(e, l, i);
103 103
     }, configurable: !0, enumerable: !0 };
104 104
   }
105
-  static getPropertyOptions(t) {
106
-    return this.elementProperties.get(t) ?? Q;
105
+  static getPropertyOptions(e) {
106
+    return this.elementProperties.get(e) ?? ae;
107 107
   }
108 108
   static _$Ei() {
109
-    if (this.hasOwnProperty(C("elementProperties"))) return;
110
-    const t = St(this);
111
-    t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
109
+    if (this.hasOwnProperty(T("elementProperties"))) return;
110
+    const e = He(this);
111
+    e.finalize(), e.l !== void 0 && (this.l = [...e.l]), this.elementProperties = new Map(e.elementProperties);
112 112
   }
113 113
   static finalize() {
114
-    if (this.hasOwnProperty(C("finalized"))) return;
115
-    if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(C("properties"))) {
116
-      const e = this.properties, s = [...bt(e), ...Et(e)];
117
-      for (const i of s) this.createProperty(i, e[i]);
114
+    if (this.hasOwnProperty(T("finalized"))) return;
115
+    if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(T("properties"))) {
116
+      const t = this.properties, i = [...Ue(t), ...Oe(t)];
117
+      for (const r of i) this.createProperty(r, t[r]);
118 118
     }
119
-    const t = this[Symbol.metadata];
120
-    if (t !== null) {
121
-      const e = litPropertyMetadata.get(t);
122
-      if (e !== void 0) for (const [s, i] of e) this.elementProperties.set(s, i);
119
+    const e = this[Symbol.metadata];
120
+    if (e !== null) {
121
+      const t = litPropertyMetadata.get(e);
122
+      if (t !== void 0) for (const [i, r] of t) this.elementProperties.set(i, r);
123 123
     }
124 124
     this._$Eh = /* @__PURE__ */ new Map();
125
-    for (const [e, s] of this.elementProperties) {
126
-      const i = this._$Eu(e, s);
127
-      i !== void 0 && this._$Eh.set(i, e);
125
+    for (const [t, i] of this.elementProperties) {
126
+      const r = this._$Eu(t, i);
127
+      r !== void 0 && this._$Eh.set(r, t);
128 128
     }
129 129
     this.elementStyles = this.finalizeStyles(this.styles);
130 130
   }
131
-  static finalizeStyles(t) {
132
-    const e = [];
133
-    if (Array.isArray(t)) {
134
-      const s = new Set(t.flat(1 / 0).reverse());
135
-      for (const i of s) e.unshift(F(i));
136
-    } else t !== void 0 && e.push(F(t));
137
-    return e;
131
+  static finalizeStyles(e) {
132
+    const t = [];
133
+    if (Array.isArray(e)) {
134
+      const i = new Set(e.flat(1 / 0).reverse());
135
+      for (const r of i) t.unshift(se(r));
136
+    } else e !== void 0 && t.push(se(e));
137
+    return t;
138 138
   }
139
-  static _$Eu(t, e) {
140
-    const s = e.attribute;
141
-    return s === !1 ? void 0 : typeof s == "string" ? s : typeof t == "string" ? t.toLowerCase() : void 0;
139
+  static _$Eu(e, t) {
140
+    const i = t.attribute;
141
+    return i === !1 ? void 0 : typeof i == "string" ? i : typeof e == "string" ? e.toLowerCase() : void 0;
142 142
   }
143 143
   constructor() {
144 144
     super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
145 145
   }
146 146
   _$Ev() {
147
-    var t;
148
-    this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));
149
-  }
150
-  addController(t) {
151 147
     var e;
152
-    (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));
148
+    this._$ES = new Promise((t) => this.enableUpdating = t), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (e = this.constructor.l) == null || e.forEach((t) => t(this));
153 149
   }
154
-  removeController(t) {
155
-    var e;
156
-    (e = this._$EO) == null || e.delete(t);
150
+  addController(e) {
151
+    var t;
152
+    (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(e), this.renderRoot !== void 0 && this.isConnected && ((t = e.hostConnected) == null || t.call(e));
153
+  }
154
+  removeController(e) {
155
+    var t;
156
+    (t = this._$EO) == null || t.delete(e);
157 157
   }
158 158
   _$E_() {
159
-    const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
160
-    for (const s of e.keys()) this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);
161
-    t.size > 0 && (this._$Ep = t);
159
+    const e = /* @__PURE__ */ new Map(), t = this.constructor.elementProperties;
160
+    for (const i of t.keys()) this.hasOwnProperty(i) && (e.set(i, this[i]), delete this[i]);
161
+    e.size > 0 && (this._$Ep = e);
162 162
   }
163 163
   createRenderRoot() {
164
-    const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
165
-    return gt(t, this.constructor.elementStyles), t;
164
+    const e = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
165
+    return Me(e, this.constructor.elementStyles), e;
166 166
   }
167 167
   connectedCallback() {
168
-    var t;
169
-    this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$EO) == null || t.forEach((e) => {
170
-      var s;
171
-      return (s = e.hostConnected) == null ? void 0 : s.call(e);
168
+    var e;
169
+    this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (e = this._$EO) == null || e.forEach((t) => {
170
+      var i;
171
+      return (i = t.hostConnected) == null ? void 0 : i.call(t);
172 172
     });
173 173
   }
174
-  enableUpdating(t) {
174
+  enableUpdating(e) {
175 175
   }
176 176
   disconnectedCallback() {
177
-    var t;
178
-    (t = this._$EO) == null || t.forEach((e) => {
179
-      var s;
180
-      return (s = e.hostDisconnected) == null ? void 0 : s.call(e);
177
+    var e;
178
+    (e = this._$EO) == null || e.forEach((t) => {
179
+      var i;
180
+      return (i = t.hostDisconnected) == null ? void 0 : i.call(t);
181 181
     });
182 182
   }
183
-  attributeChangedCallback(t, e, s) {
184
-    this._$AK(t, s);
183
+  attributeChangedCallback(e, t, i) {
184
+    this._$AK(e, i);
185 185
   }
186
-  _$ET(t, e) {
186
+  _$ET(e, t) {
187 187
     var n;
188
-    const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);
189
-    if (i !== void 0 && s.reflect === !0) {
190
-      const o = (((n = s.converter) == null ? void 0 : n.toAttribute) !== void 0 ? s.converter : V).toAttribute(e, s.type);
191
-      this._$Em = t, o == null ? this.removeAttribute(i) : this.setAttribute(i, o), this._$Em = null;
188
+    const i = this.constructor.elementProperties.get(e), r = this.constructor._$Eu(e, i);
189
+    if (r !== void 0 && i.reflect === !0) {
190
+      const s = (((n = i.converter) == null ? void 0 : n.toAttribute) !== void 0 ? i.converter : F).toAttribute(t, i.type);
191
+      this._$Em = e, s == null ? this.removeAttribute(r) : this.setAttribute(r, s), this._$Em = null;
192 192
     }
193 193
   }
194
-  _$AK(t, e) {
195
-    var n, o;
196
-    const s = this.constructor, i = s._$Eh.get(t);
197
-    if (i !== void 0 && this._$Em !== i) {
198
-      const l = s.getPropertyOptions(i), a = typeof l.converter == "function" ? { fromAttribute: l.converter } : ((n = l.converter) == null ? void 0 : n.fromAttribute) !== void 0 ? l.converter : V;
199
-      this._$Em = i;
200
-      const c = a.fromAttribute(e, l.type);
201
-      this[i] = c ?? ((o = this._$Ej) == null ? void 0 : o.get(i)) ?? c, this._$Em = null;
194
+  _$AK(e, t) {
195
+    var n, s;
196
+    const i = this.constructor, r = i._$Eh.get(e);
197
+    if (r !== void 0 && this._$Em !== r) {
198
+      const l = i.getPropertyOptions(r), a = typeof l.converter == "function" ? { fromAttribute: l.converter } : ((n = l.converter) == null ? void 0 : n.fromAttribute) !== void 0 ? l.converter : F;
199
+      this._$Em = r;
200
+      const d = a.fromAttribute(t, l.type);
201
+      this[r] = d ?? ((s = this._$Ej) == null ? void 0 : s.get(r)) ?? d, this._$Em = null;
202 202
     }
203 203
   }
204
-  requestUpdate(t, e, s, i = !1, n) {
205
-    var o;
206
-    if (t !== void 0) {
204
+  requestUpdate(e, t, i, r = !1, n) {
205
+    var s;
206
+    if (e !== void 0) {
207 207
       const l = this.constructor;
208
-      if (i === !1 && (n = this[t]), s ?? (s = l.getPropertyOptions(t)), !((s.hasChanged ?? at)(n, e) || s.useDefault && s.reflect && n === ((o = this._$Ej) == null ? void 0 : o.get(t)) && !this.hasAttribute(l._$Eu(t, s)))) return;
209
-      this.C(t, e, s);
208
+      if (r === !1 && (n = this[e]), i ?? (i = l.getPropertyOptions(e)), !((i.hasChanged ?? ve)(n, t) || i.useDefault && i.reflect && n === ((s = this._$Ej) == null ? void 0 : s.get(e)) && !this.hasAttribute(l._$Eu(e, i)))) return;
209
+      this.C(e, t, i);
210 210
     }
211 211
     this.isUpdatePending === !1 && (this._$ES = this._$EP());
212 212
   }
213
-  C(t, e, { useDefault: s, reflect: i, wrapped: n }, o) {
214
-    s && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(t) && (this._$Ej.set(t, o ?? e ?? this[t]), n !== !0 || o !== void 0) || (this._$AL.has(t) || (this.hasUpdated || s || (e = void 0), this._$AL.set(t, e)), i === !0 && this._$Em !== t && (this._$Eq ?? (this._$Eq = /* @__PURE__ */ new Set())).add(t));
213
+  C(e, t, { useDefault: i, reflect: r, wrapped: n }, s) {
214
+    i && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(e) && (this._$Ej.set(e, s ?? t ?? this[e]), n !== !0 || s !== void 0) || (this._$AL.has(e) || (this.hasUpdated || i || (t = void 0), this._$AL.set(e, t)), r === !0 && this._$Em !== e && (this._$Eq ?? (this._$Eq = /* @__PURE__ */ new Set())).add(e));
215 215
   }
216 216
   async _$EP() {
217 217
     this.isUpdatePending = !0;
218 218
     try {
219 219
       await this._$ES;
220
-    } catch (e) {
221
-      Promise.reject(e);
220
+    } catch (t) {
221
+      Promise.reject(t);
222 222
     }
223
-    const t = this.scheduleUpdate();
224
-    return t != null && await t, !this.isUpdatePending;
223
+    const e = this.scheduleUpdate();
224
+    return e != null && await e, !this.isUpdatePending;
225 225
   }
226 226
   scheduleUpdate() {
227 227
     return this.performUpdate();
228 228
   }
229 229
   performUpdate() {
230
-    var s;
230
+    var i;
231 231
     if (!this.isUpdatePending) return;
232 232
     if (!this.hasUpdated) {
233 233
       if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
234
-        for (const [n, o] of this._$Ep) this[n] = o;
234
+        for (const [n, s] of this._$Ep) this[n] = s;
235 235
         this._$Ep = void 0;
236 236
       }
237
-      const i = this.constructor.elementProperties;
238
-      if (i.size > 0) for (const [n, o] of i) {
239
-        const { wrapped: l } = o, a = this[n];
240
-        l !== !0 || this._$AL.has(n) || a === void 0 || this.C(n, void 0, o, a);
237
+      const r = this.constructor.elementProperties;
238
+      if (r.size > 0) for (const [n, s] of r) {
239
+        const { wrapped: l } = s, a = this[n];
240
+        l !== !0 || this._$AL.has(n) || a === void 0 || this.C(n, void 0, s, a);
241 241
       }
242 242
     }
243
-    let t = !1;
244
-    const e = this._$AL;
243
+    let e = !1;
244
+    const t = this._$AL;
245 245
     try {
246
-      t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$EO) == null || s.forEach((i) => {
246
+      e = this.shouldUpdate(t), e ? (this.willUpdate(t), (i = this._$EO) == null || i.forEach((r) => {
247 247
         var n;
248
-        return (n = i.hostUpdate) == null ? void 0 : n.call(i);
249
-      }), this.update(e)) : this._$EM();
250
-    } catch (i) {
251
-      throw t = !1, this._$EM(), i;
248
+        return (n = r.hostUpdate) == null ? void 0 : n.call(r);
249
+      }), this.update(t)) : this._$EM();
250
+    } catch (r) {
251
+      throw e = !1, this._$EM(), r;
252 252
     }
253
-    t && this._$AE(e);
253
+    e && this._$AE(t);
254 254
   }
255
-  willUpdate(t) {
255
+  willUpdate(e) {
256 256
   }
257
-  _$AE(t) {
258
-    var e;
259
-    (e = this._$EO) == null || e.forEach((s) => {
260
-      var i;
261
-      return (i = s.hostUpdated) == null ? void 0 : i.call(s);
262
-    }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
257
+  _$AE(e) {
258
+    var t;
259
+    (t = this._$EO) == null || t.forEach((i) => {
260
+      var r;
261
+      return (r = i.hostUpdated) == null ? void 0 : r.call(i);
262
+    }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(e)), this.updated(e);
263 263
   }
264 264
   _$EM() {
265 265
     this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
... ...
@@ -270,89 +270,89 @@ let E = class extends HTMLElement {
270 270
   getUpdateComplete() {
271 271
     return this._$ES;
272 272
   }
273
-  shouldUpdate(t) {
273
+  shouldUpdate(e) {
274 274
     return !0;
275 275
   }
276
-  update(t) {
277
-    this._$Eq && (this._$Eq = this._$Eq.forEach((e) => this._$ET(e, this[e]))), this._$EM();
276
+  update(e) {
277
+    this._$Eq && (this._$Eq = this._$Eq.forEach((t) => this._$ET(t, this[t]))), this._$EM();
278 278
   }
279
-  updated(t) {
279
+  updated(e) {
280 280
   }
281
-  firstUpdated(t) {
281
+  firstUpdated(e) {
282 282
   }
283 283
 };
284
-E.elementStyles = [], E.shadowRootOptions = { mode: "open" }, E[C("elementProperties")] = /* @__PURE__ */ new Map(), E[C("finalized")] = /* @__PURE__ */ new Map(), L == null || L({ ReactiveElement: E }), (f.reactiveElementVersions ?? (f.reactiveElementVersions = [])).push("2.1.2");
284
+E.elementStyles = [], E.shadowRootOptions = { mode: "open" }, E[T("elementProperties")] = /* @__PURE__ */ new Map(), E[T("finalized")] = /* @__PURE__ */ new Map(), j == null || j({ ReactiveElement: E }), (y.reactiveElementVersions ?? (y.reactiveElementVersions = [])).push("2.1.2");
285 285
 /**
286 286
  * @license
287 287
  * Copyright 2017 Google LLC
288 288
  * SPDX-License-Identifier: BSD-3-Clause
289 289
  */
290
-const P = globalThis, X = (r) => r, k = P.trustedTypes, Y = k ? k.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, lt = "$lit$", m = `lit$${Math.random().toFixed(9).slice(2)}$`, ht = "?" + m, wt = `<${ht}>`, y = document, U = () => y.createComment(""), O = (r) => r === null || typeof r != "object" && typeof r != "function", J = Array.isArray, Ct = (r) => J(r) || typeof (r == null ? void 0 : r[Symbol.iterator]) == "function", j = `[ 	
291
-\f\r]`, w = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, tt = /-->/g, et = />/g, g = RegExp(`>|${j}(?:([^\\s"'>=/]+)(${j}*=${j}*(?:[^ 	
292
-\f\r"'\`<>=]|("|')|))|$)`, "g"), st = /'/g, it = /"/g, ct = /^(?:script|style|textarea|title)$/i, Pt = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), H = Pt(1), S = Symbol.for("lit-noChange"), d = Symbol.for("lit-nothing"), rt = /* @__PURE__ */ new WeakMap(), A = y.createTreeWalker(y, 129);
293
-function dt(r, t) {
294
-  if (!J(r) || !r.hasOwnProperty("raw")) throw Error("invalid template strings array");
295
-  return Y !== void 0 ? Y.createHTML(t) : t;
290
+const z = globalThis, le = (o) => o, B = z.trustedTypes, ce = B ? B.createPolicy("lit-html", { createHTML: (o) => o }) : void 0, be = "$lit$", x = `lit$${Math.random().toFixed(9).slice(2)}$`, xe = "?" + x, Ne = `<${xe}>`, k = document, P = () => k.createComment(""), U = (o) => o === null || typeof o != "object" && typeof o != "function", re = Array.isArray, Be = (o) => re(o) || typeof (o == null ? void 0 : o[Symbol.iterator]) == "function", L = `[ 	
291
+\f\r]`, M = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, de = /-->/g, he = />/g, $ = RegExp(`>|${L}(?:([^\\s"'>=/]+)(${L}*=${L}*(?:[^ 	
292
+\f\r"'\`<>=]|("|')|))|$)`, "g"), pe = /'/g, ue = /"/g, ye = /^(?:script|style|textarea|title)$/i, $e = (o) => (e, ...t) => ({ _$litType$: o, strings: e, values: t }), c = $e(1), w = $e(2), S = Symbol.for("lit-noChange"), m = Symbol.for("lit-nothing"), me = /* @__PURE__ */ new WeakMap(), _ = k.createTreeWalker(k, 129);
293
+function we(o, e) {
294
+  if (!re(o) || !o.hasOwnProperty("raw")) throw Error("invalid template strings array");
295
+  return ce !== void 0 ? ce.createHTML(e) : e;
296 296
 }
297
-const Ut = (r, t) => {
298
-  const e = r.length - 1, s = [];
299
-  let i, n = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", o = w;
300
-  for (let l = 0; l < e; l++) {
301
-    const a = r[l];
302
-    let c, u, h = -1, p = 0;
303
-    for (; p < a.length && (o.lastIndex = p, u = o.exec(a), u !== null); ) p = o.lastIndex, o === w ? u[1] === "!--" ? o = tt : u[1] !== void 0 ? o = et : u[2] !== void 0 ? (ct.test(u[2]) && (i = RegExp("</" + u[2], "g")), o = g) : u[3] !== void 0 && (o = g) : o === g ? u[0] === ">" ? (o = i ?? w, h = -1) : u[1] === void 0 ? h = -2 : (h = o.lastIndex - u[2].length, c = u[1], o = u[3] === void 0 ? g : u[3] === '"' ? it : st) : o === it || o === st ? o = g : o === tt || o === et ? o = w : (o = g, i = void 0);
304
-    const $ = o === g && r[l + 1].startsWith("/>") ? " " : "";
305
-    n += o === w ? a + wt : h >= 0 ? (s.push(c), a.slice(0, h) + lt + a.slice(h) + m + $) : a + m + (h === -2 ? l : $);
306
-  }
307
-  return [dt(r, n + (r[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
297
+const De = (o, e) => {
298
+  const t = o.length - 1, i = [];
299
+  let r, n = e === 2 ? "<svg>" : e === 3 ? "<math>" : "", s = M;
300
+  for (let l = 0; l < t; l++) {
301
+    const a = o[l];
302
+    let d, u, h = -1, v = 0;
303
+    for (; v < a.length && (s.lastIndex = v, u = s.exec(a), u !== null); ) v = s.lastIndex, s === M ? u[1] === "!--" ? s = de : u[1] !== void 0 ? s = he : u[2] !== void 0 ? (ye.test(u[2]) && (r = RegExp("</" + u[2], "g")), s = $) : u[3] !== void 0 && (s = $) : s === $ ? u[0] === ">" ? (s = r ?? M, h = -1) : u[1] === void 0 ? h = -2 : (h = s.lastIndex - u[2].length, d = u[1], s = u[3] === void 0 ? $ : u[3] === '"' ? ue : pe) : s === ue || s === pe ? s = $ : s === de || s === he ? s = M : (s = $, r = void 0);
304
+    const b = s === $ && o[l + 1].startsWith("/>") ? " " : "";
305
+    n += s === M ? a + Ne : h >= 0 ? (i.push(d), a.slice(0, h) + be + a.slice(h) + x + b) : a + x + (h === -2 ? l : b);
306
+  }
307
+  return [we(o, n + (o[t] || "<?>") + (e === 2 ? "</svg>" : e === 3 ? "</math>" : "")), i];
308 308
 };
309
-class M {
310
-  constructor({ strings: t, _$litType$: e }, s) {
311
-    let i;
309
+class O {
310
+  constructor({ strings: e, _$litType$: t }, i) {
311
+    let r;
312 312
     this.parts = [];
313
-    let n = 0, o = 0;
314
-    const l = t.length - 1, a = this.parts, [c, u] = Ut(t, e);
315
-    if (this.el = M.createElement(c, s), A.currentNode = this.el.content, e === 2 || e === 3) {
313
+    let n = 0, s = 0;
314
+    const l = e.length - 1, a = this.parts, [d, u] = De(e, t);
315
+    if (this.el = O.createElement(d, i), _.currentNode = this.el.content, t === 2 || t === 3) {
316 316
       const h = this.el.content.firstChild;
317 317
       h.replaceWith(...h.childNodes);
318 318
     }
319
-    for (; (i = A.nextNode()) !== null && a.length < l; ) {
320
-      if (i.nodeType === 1) {
321
-        if (i.hasAttributes()) for (const h of i.getAttributeNames()) if (h.endsWith(lt)) {
322
-          const p = u[o++], $ = i.getAttribute(h).split(m), R = /([.?@])?(.*)/.exec(p);
323
-          a.push({ type: 1, index: n, name: R[2], strings: $, ctor: R[1] === "." ? Ht : R[1] === "?" ? Mt : R[1] === "@" ? Nt : z }), i.removeAttribute(h);
324
-        } else h.startsWith(m) && (a.push({ type: 6, index: n }), i.removeAttribute(h));
325
-        if (ct.test(i.tagName)) {
326
-          const h = i.textContent.split(m), p = h.length - 1;
327
-          if (p > 0) {
328
-            i.textContent = k ? k.emptyScript : "";
329
-            for (let $ = 0; $ < p; $++) i.append(h[$], U()), A.nextNode(), a.push({ type: 2, index: ++n });
330
-            i.append(h[p], U());
319
+    for (; (r = _.nextNode()) !== null && a.length < l; ) {
320
+      if (r.nodeType === 1) {
321
+        if (r.hasAttributes()) for (const h of r.getAttributeNames()) if (h.endsWith(be)) {
322
+          const v = u[s++], b = r.getAttribute(h).split(x), R = /([.?@])?(.*)/.exec(v);
323
+          a.push({ type: 1, index: n, name: R[2], strings: b, ctor: R[1] === "." ? Le : R[1] === "?" ? Ie : R[1] === "@" ? Ve : D }), r.removeAttribute(h);
324
+        } else h.startsWith(x) && (a.push({ type: 6, index: n }), r.removeAttribute(h));
325
+        if (ye.test(r.tagName)) {
326
+          const h = r.textContent.split(x), v = h.length - 1;
327
+          if (v > 0) {
328
+            r.textContent = B ? B.emptyScript : "";
329
+            for (let b = 0; b < v; b++) r.append(h[b], P()), _.nextNode(), a.push({ type: 2, index: ++n });
330
+            r.append(h[v], P());
331 331
           }
332 332
         }
333
-      } else if (i.nodeType === 8) if (i.data === ht) a.push({ type: 2, index: n });
333
+      } else if (r.nodeType === 8) if (r.data === xe) a.push({ type: 2, index: n });
334 334
       else {
335 335
         let h = -1;
336
-        for (; (h = i.data.indexOf(m, h + 1)) !== -1; ) a.push({ type: 7, index: n }), h += m.length - 1;
336
+        for (; (h = r.data.indexOf(x, h + 1)) !== -1; ) a.push({ type: 7, index: n }), h += x.length - 1;
337 337
       }
338 338
       n++;
339 339
     }
340 340
   }
341
-  static createElement(t, e) {
342
-    const s = y.createElement("template");
343
-    return s.innerHTML = t, s;
341
+  static createElement(e, t) {
342
+    const i = k.createElement("template");
343
+    return i.innerHTML = e, i;
344 344
   }
345 345
 }
346
-function x(r, t, e = r, s) {
347
-  var o, l;
348
-  if (t === S) return t;
349
-  let i = s !== void 0 ? (o = e._$Co) == null ? void 0 : o[s] : e._$Cl;
350
-  const n = O(t) ? void 0 : t._$litDirective$;
351
-  return (i == null ? void 0 : i.constructor) !== n && ((l = i == null ? void 0 : i._$AO) == null || l.call(i, !1), n === void 0 ? i = void 0 : (i = new n(r), i._$AT(r, e, s)), s !== void 0 ? (e._$Co ?? (e._$Co = []))[s] = i : e._$Cl = i), i !== void 0 && (t = x(r, i._$AS(r, t.values), i, s)), t;
346
+function C(o, e, t = o, i) {
347
+  var s, l;
348
+  if (e === S) return e;
349
+  let r = i !== void 0 ? (s = t._$Co) == null ? void 0 : s[i] : t._$Cl;
350
+  const n = U(e) ? void 0 : e._$litDirective$;
351
+  return (r == null ? void 0 : r.constructor) !== n && ((l = r == null ? void 0 : r._$AO) == null || l.call(r, !1), n === void 0 ? r = void 0 : (r = new n(o), r._$AT(o, t, i)), i !== void 0 ? (t._$Co ?? (t._$Co = []))[i] = r : t._$Cl = r), r !== void 0 && (e = C(o, r._$AS(o, e.values), r, i)), e;
352 352
 }
353
-class Ot {
354
-  constructor(t, e) {
355
-    this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
353
+class je {
354
+  constructor(e, t) {
355
+    this._$AV = [], this._$AN = void 0, this._$AD = e, this._$AM = t;
356 356
   }
357 357
   get parentNode() {
358 358
     return this._$AM.parentNode;
... ...
@@ -360,36 +360,36 @@ class Ot {
360 360
   get _$AU() {
361 361
     return this._$AM._$AU;
362 362
   }
363
-  u(t) {
364
-    const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? y).importNode(e, !0);
365
-    A.currentNode = i;
366
-    let n = A.nextNode(), o = 0, l = 0, a = s[0];
363
+  u(e) {
364
+    const { el: { content: t }, parts: i } = this._$AD, r = ((e == null ? void 0 : e.creationScope) ?? k).importNode(t, !0);
365
+    _.currentNode = r;
366
+    let n = _.nextNode(), s = 0, l = 0, a = i[0];
367 367
     for (; a !== void 0; ) {
368
-      if (o === a.index) {
369
-        let c;
370
-        a.type === 2 ? c = new N(n, n.nextSibling, this, t) : a.type === 1 ? c = new a.ctor(n, a.name, a.strings, this, t) : a.type === 6 && (c = new Rt(n, this, t)), this._$AV.push(c), a = s[++l];
368
+      if (s === a.index) {
369
+        let d;
370
+        a.type === 2 ? d = new H(n, n.nextSibling, this, e) : a.type === 1 ? d = new a.ctor(n, a.name, a.strings, this, e) : a.type === 6 && (d = new Fe(n, this, e)), this._$AV.push(d), a = i[++l];
371 371
       }
372
-      o !== (a == null ? void 0 : a.index) && (n = A.nextNode(), o++);
372
+      s !== (a == null ? void 0 : a.index) && (n = _.nextNode(), s++);
373 373
     }
374
-    return A.currentNode = y, i;
374
+    return _.currentNode = k, r;
375 375
   }
376
-  p(t) {
377
-    let e = 0;
378
-    for (const s of this._$AV) s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;
376
+  p(e) {
377
+    let t = 0;
378
+    for (const i of this._$AV) i !== void 0 && (i.strings !== void 0 ? (i._$AI(e, i, t), t += i.strings.length - 2) : i._$AI(e[t])), t++;
379 379
   }
380 380
 }
381
-class N {
381
+class H {
382 382
   get _$AU() {
383
-    var t;
384
-    return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this._$Cv;
383
+    var e;
384
+    return ((e = this._$AM) == null ? void 0 : e._$AU) ?? this._$Cv;
385 385
   }
386
-  constructor(t, e, s, i) {
387
-    this.type = 2, this._$AH = d, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = i, this._$Cv = (i == null ? void 0 : i.isConnected) ?? !0;
386
+  constructor(e, t, i, r) {
387
+    this.type = 2, this._$AH = m, this._$AN = void 0, this._$AA = e, this._$AB = t, this._$AM = i, this.options = r, this._$Cv = (r == null ? void 0 : r.isConnected) ?? !0;
388 388
   }
389 389
   get parentNode() {
390
-    let t = this._$AA.parentNode;
391
-    const e = this._$AM;
392
-    return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;
390
+    let e = this._$AA.parentNode;
391
+    const t = this._$AM;
392
+    return t !== void 0 && (e == null ? void 0 : e.nodeType) === 11 && (e = t.parentNode), e;
393 393
   }
394 394
   get startNode() {
395 395
     return this._$AA;
... ...
@@ -397,167 +397,167 @@ class N {
397 397
   get endNode() {
398 398
     return this._$AB;
399 399
   }
400
-  _$AI(t, e = this) {
401
-    t = x(this, t, e), O(t) ? t === d || t == null || t === "" ? (this._$AH !== d && this._$AR(), this._$AH = d) : t !== this._$AH && t !== S && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : Ct(t) ? this.k(t) : this._(t);
400
+  _$AI(e, t = this) {
401
+    e = C(this, e, t), U(e) ? e === m || e == null || e === "" ? (this._$AH !== m && this._$AR(), this._$AH = m) : e !== this._$AH && e !== S && this._(e) : e._$litType$ !== void 0 ? this.$(e) : e.nodeType !== void 0 ? this.T(e) : Be(e) ? this.k(e) : this._(e);
402 402
   }
403
-  O(t) {
404
-    return this._$AA.parentNode.insertBefore(t, this._$AB);
403
+  O(e) {
404
+    return this._$AA.parentNode.insertBefore(e, this._$AB);
405 405
   }
406
-  T(t) {
407
-    this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
406
+  T(e) {
407
+    this._$AH !== e && (this._$AR(), this._$AH = this.O(e));
408 408
   }
409
-  _(t) {
410
-    this._$AH !== d && O(this._$AH) ? this._$AA.nextSibling.data = t : this.T(y.createTextNode(t)), this._$AH = t;
409
+  _(e) {
410
+    this._$AH !== m && U(this._$AH) ? this._$AA.nextSibling.data = e : this.T(k.createTextNode(e)), this._$AH = e;
411 411
   }
412
-  $(t) {
412
+  $(e) {
413 413
     var n;
414
-    const { values: e, _$litType$: s } = t, i = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = M.createElement(dt(s.h, s.h[0]), this.options)), s);
415
-    if (((n = this._$AH) == null ? void 0 : n._$AD) === i) this._$AH.p(e);
414
+    const { values: t, _$litType$: i } = e, r = typeof i == "number" ? this._$AC(e) : (i.el === void 0 && (i.el = O.createElement(we(i.h, i.h[0]), this.options)), i);
415
+    if (((n = this._$AH) == null ? void 0 : n._$AD) === r) this._$AH.p(t);
416 416
     else {
417
-      const o = new Ot(i, this), l = o.u(this.options);
418
-      o.p(e), this.T(l), this._$AH = o;
417
+      const s = new je(r, this), l = s.u(this.options);
418
+      s.p(t), this.T(l), this._$AH = s;
419 419
     }
420 420
   }
421
-  _$AC(t) {
422
-    let e = rt.get(t.strings);
423
-    return e === void 0 && rt.set(t.strings, e = new M(t)), e;
424
-  }
425
-  k(t) {
426
-    J(this._$AH) || (this._$AH = [], this._$AR());
427
-    const e = this._$AH;
428
-    let s, i = 0;
429
-    for (const n of t) i === e.length ? e.push(s = new N(this.O(U()), this.O(U()), this, this.options)) : s = e[i], s._$AI(n), i++;
430
-    i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);
431
-  }
432
-  _$AR(t = this._$AA.nextSibling, e) {
433
-    var s;
434
-    for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t !== this._$AB; ) {
435
-      const i = X(t).nextSibling;
436
-      X(t).remove(), t = i;
421
+  _$AC(e) {
422
+    let t = me.get(e.strings);
423
+    return t === void 0 && me.set(e.strings, t = new O(e)), t;
424
+  }
425
+  k(e) {
426
+    re(this._$AH) || (this._$AH = [], this._$AR());
427
+    const t = this._$AH;
428
+    let i, r = 0;
429
+    for (const n of e) r === t.length ? t.push(i = new H(this.O(P()), this.O(P()), this, this.options)) : i = t[r], i._$AI(n), r++;
430
+    r < t.length && (this._$AR(i && i._$AB.nextSibling, r), t.length = r);
431
+  }
432
+  _$AR(e = this._$AA.nextSibling, t) {
433
+    var i;
434
+    for ((i = this._$AP) == null ? void 0 : i.call(this, !1, !0, t); e !== this._$AB; ) {
435
+      const r = le(e).nextSibling;
436
+      le(e).remove(), e = r;
437 437
     }
438 438
   }
439
-  setConnected(t) {
440
-    var e;
441
-    this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));
439
+  setConnected(e) {
440
+    var t;
441
+    this._$AM === void 0 && (this._$Cv = e, (t = this._$AP) == null || t.call(this, e));
442 442
   }
443 443
 }
444
-class z {
444
+class D {
445 445
   get tagName() {
446 446
     return this.element.tagName;
447 447
   }
448 448
   get _$AU() {
449 449
     return this._$AM._$AU;
450 450
   }
451
-  constructor(t, e, s, i, n) {
452
-    this.type = 1, this._$AH = d, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = n, s.length > 2 || s[0] !== "" || s[1] !== "" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = d;
451
+  constructor(e, t, i, r, n) {
452
+    this.type = 1, this._$AH = m, this._$AN = void 0, this.element = e, this.name = t, this._$AM = r, this.options = n, i.length > 2 || i[0] !== "" || i[1] !== "" ? (this._$AH = Array(i.length - 1).fill(new String()), this.strings = i) : this._$AH = m;
453 453
   }
454
-  _$AI(t, e = this, s, i) {
454
+  _$AI(e, t = this, i, r) {
455 455
     const n = this.strings;
456
-    let o = !1;
457
-    if (n === void 0) t = x(this, t, e, 0), o = !O(t) || t !== this._$AH && t !== S, o && (this._$AH = t);
456
+    let s = !1;
457
+    if (n === void 0) e = C(this, e, t, 0), s = !U(e) || e !== this._$AH && e !== S, s && (this._$AH = e);
458 458
     else {
459
-      const l = t;
460
-      let a, c;
461
-      for (t = n[0], a = 0; a < n.length - 1; a++) c = x(this, l[s + a], e, a), c === S && (c = this._$AH[a]), o || (o = !O(c) || c !== this._$AH[a]), c === d ? t = d : t !== d && (t += (c ?? "") + n[a + 1]), this._$AH[a] = c;
459
+      const l = e;
460
+      let a, d;
461
+      for (e = n[0], a = 0; a < n.length - 1; a++) d = C(this, l[i + a], t, a), d === S && (d = this._$AH[a]), s || (s = !U(d) || d !== this._$AH[a]), d === m ? e = m : e !== m && (e += (d ?? "") + n[a + 1]), this._$AH[a] = d;
462 462
     }
463
-    o && !i && this.j(t);
463
+    s && !r && this.j(e);
464 464
   }
465
-  j(t) {
466
-    t === d ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
465
+  j(e) {
466
+    e === m ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, e ?? "");
467 467
   }
468 468
 }
469
-class Ht extends z {
469
+class Le extends D {
470 470
   constructor() {
471 471
     super(...arguments), this.type = 3;
472 472
   }
473
-  j(t) {
474
-    this.element[this.name] = t === d ? void 0 : t;
473
+  j(e) {
474
+    this.element[this.name] = e === m ? void 0 : e;
475 475
   }
476 476
 }
477
-class Mt extends z {
477
+class Ie extends D {
478 478
   constructor() {
479 479
     super(...arguments), this.type = 4;
480 480
   }
481
-  j(t) {
482
-    this.element.toggleAttribute(this.name, !!t && t !== d);
481
+  j(e) {
482
+    this.element.toggleAttribute(this.name, !!e && e !== m);
483 483
   }
484 484
 }
485
-class Nt extends z {
486
-  constructor(t, e, s, i, n) {
487
-    super(t, e, s, i, n), this.type = 5;
485
+class Ve extends D {
486
+  constructor(e, t, i, r, n) {
487
+    super(e, t, i, r, n), this.type = 5;
488 488
   }
489
-  _$AI(t, e = this) {
490
-    if ((t = x(this, t, e, 0) ?? d) === S) return;
491
-    const s = this._$AH, i = t === d && s !== d || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, n = t !== d && (s === d || i);
492
-    i && this.element.removeEventListener(this.name, this, s), n && this.element.addEventListener(this.name, this, t), this._$AH = t;
489
+  _$AI(e, t = this) {
490
+    if ((e = C(this, e, t, 0) ?? m) === S) return;
491
+    const i = this._$AH, r = e === m && i !== m || e.capture !== i.capture || e.once !== i.once || e.passive !== i.passive, n = e !== m && (i === m || r);
492
+    r && this.element.removeEventListener(this.name, this, i), n && this.element.addEventListener(this.name, this, e), this._$AH = e;
493 493
   }
494
-  handleEvent(t) {
495
-    var e;
496
-    typeof this._$AH == "function" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);
494
+  handleEvent(e) {
495
+    var t;
496
+    typeof this._$AH == "function" ? this._$AH.call(((t = this.options) == null ? void 0 : t.host) ?? this.element, e) : this._$AH.handleEvent(e);
497 497
   }
498 498
 }
499
-class Rt {
500
-  constructor(t, e, s) {
501
-    this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
499
+class Fe {
500
+  constructor(e, t, i) {
501
+    this.element = e, this.type = 6, this._$AN = void 0, this._$AM = t, this.options = i;
502 502
   }
503 503
   get _$AU() {
504 504
     return this._$AM._$AU;
505 505
   }
506
-  _$AI(t) {
507
-    x(this, t);
506
+  _$AI(e) {
507
+    C(this, e);
508 508
   }
509 509
 }
510
-const I = P.litHtmlPolyfillSupport;
511
-I == null || I(M, N), (P.litHtmlVersions ?? (P.litHtmlVersions = [])).push("3.3.2");
512
-const Tt = (r, t, e) => {
513
-  const s = (e == null ? void 0 : e.renderBefore) ?? t;
514
-  let i = s._$litPart$;
515
-  if (i === void 0) {
516
-    const n = (e == null ? void 0 : e.renderBefore) ?? null;
517
-    s._$litPart$ = i = new N(t.insertBefore(U(), n), n, void 0, e ?? {});
518
-  }
519
-  return i._$AI(r), i;
510
+const I = z.litHtmlPolyfillSupport;
511
+I == null || I(O, H), (z.litHtmlVersions ?? (z.litHtmlVersions = [])).push("3.3.2");
512
+const We = (o, e, t) => {
513
+  const i = (t == null ? void 0 : t.renderBefore) ?? e;
514
+  let r = i._$litPart$;
515
+  if (r === void 0) {
516
+    const n = (t == null ? void 0 : t.renderBefore) ?? null;
517
+    i._$litPart$ = r = new H(e.insertBefore(P(), n), n, void 0, t ?? {});
518
+  }
519
+  return r._$AI(o), r;
520 520
 };
521 521
 /**
522 522
  * @license
523 523
  * Copyright 2017 Google LLC
524 524
  * SPDX-License-Identifier: BSD-3-Clause
525 525
  */
526
-const v = globalThis;
527
-class _ extends E {
526
+const A = globalThis;
527
+class g extends E {
528 528
   constructor() {
529 529
     super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
530 530
   }
531 531
   createRenderRoot() {
532
-    var e;
533
-    const t = super.createRenderRoot();
534
-    return (e = this.renderOptions).renderBefore ?? (e.renderBefore = t.firstChild), t;
532
+    var t;
533
+    const e = super.createRenderRoot();
534
+    return (t = this.renderOptions).renderBefore ?? (t.renderBefore = e.firstChild), e;
535 535
   }
536
-  update(t) {
537
-    const e = this.render();
538
-    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = Tt(e, this.renderRoot, this.renderOptions);
536
+  update(e) {
537
+    const t = this.render();
538
+    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(e), this._$Do = We(t, this.renderRoot, this.renderOptions);
539 539
   }
540 540
   connectedCallback() {
541
-    var t;
542
-    super.connectedCallback(), (t = this._$Do) == null || t.setConnected(!0);
541
+    var e;
542
+    super.connectedCallback(), (e = this._$Do) == null || e.setConnected(!0);
543 543
   }
544 544
   disconnectedCallback() {
545
-    var t;
546
-    super.disconnectedCallback(), (t = this._$Do) == null || t.setConnected(!1);
545
+    var e;
546
+    super.disconnectedCallback(), (e = this._$Do) == null || e.setConnected(!1);
547 547
   }
548 548
   render() {
549 549
     return S;
550 550
   }
551 551
 }
552
-var ot;
553
-_._$litElement$ = !0, _.finalized = !0, (ot = v.litElementHydrateSupport) == null || ot.call(v, { LitElement: _ });
554
-const B = v.litElementPolyfillSupport;
555
-B == null || B({ LitElement: _ });
556
-(v.litElementVersions ?? (v.litElementVersions = [])).push("4.2.2");
557
-class W extends _ {
552
+var ge;
553
+g._$litElement$ = !0, g.finalized = !0, (ge = A.litElementHydrateSupport) == null || ge.call(A, { LitElement: g });
554
+const V = A.litElementPolyfillSupport;
555
+V == null || V({ LitElement: g });
556
+(A.litElementVersions ?? (A.litElementVersions = [])).push("4.2.2");
557
+class W extends g {
558 558
   render() {
559
-    return H`
560
-      ${this.imageUrl ? H`<img class="card-image" src="${this.imageUrl}" alt="${this.imageAlt || ""}" />` : ""}
559
+    return c`
560
+      ${this.imageUrl ? c`<img class="card-image" src="${this.imageUrl}" alt="${this.imageAlt || ""}" />` : ""}
561 561
 
562 562
       <slot name="header" class="card-header-slot"></slot>
563 563
 
... ...
@@ -569,7 +569,7 @@ class W extends _ {
569 569
     `;
570 570
   }
571 571
 }
572
-b(W, "styles", D`
572
+p(W, "styles", f`
573 573
     :host {
574 574
       --luumicore-card-bg: var(--luumicore-secondary, #fff);
575 575
       --luumicore-card-border-color: var(--luumicore-secondary, #fff);
... ...
@@ -611,21 +611,21 @@ b(W, "styles", D`
611 611
       border-top: 1px solid var(--luumicore-border-color, #ddd);
612 612
       background-color: var(--luumicore-footer-bg, #f8f9fa);
613 613
     }
614
-  `), b(W, "properties", {
614
+  `), p(W, "properties", {
615 615
   imageUrl: { type: String, attribute: "image-url" },
616 616
   imageAlt: { type: String, attribute: "image-alt" }
617 617
 });
618 618
 customElements.define("luumicore-card", W);
619
-class ut extends _ {
619
+class _e extends g {
620 620
   render() {
621
-    return H`
621
+    return c`
622 622
       <ul>
623 623
         <slot></slot>
624 624
       </ul>
625 625
     `;
626 626
   }
627 627
 }
628
-b(ut, "styles", D`
628
+p(_e, "styles", f`
629 629
     :host {
630 630
       display: block;
631 631
     }
... ...
@@ -639,10 +639,10 @@ b(ut, "styles", D`
639 639
       overflow: hidden;
640 640
     }
641 641
   `);
642
-customElements.define("luumicore-list", ut);
643
-class pt extends _ {
642
+customElements.define("luumicore-list", _e);
643
+class Ae extends g {
644 644
   render() {
645
-    return H`
645
+    return c`
646 646
       <div class="item-container">
647 647
         <div class="content">
648 648
           <slot></slot>
... ...
@@ -659,7 +659,7 @@ class pt extends _ {
659 659
     `;
660 660
   }
661 661
 }
662
-b(pt, "styles", D`
662
+p(Ae, "styles", f`
663 663
     :host {
664 664
       display: block;
665 665
       border-bottom: 1px solid var(--luumicore-border-color, #ddd);
... ...
@@ -692,14 +692,512 @@ b(pt, "styles", D`
692 692
       margin-left: auto;
693 693
     }
694 694
   `);
695
-customElements.define("luumicore-list-item", pt);
695
+customElements.define("luumicore-list-item", Ae);
696
+class q extends g {
697
+  _getIcon(e) {
698
+    const t = e.toLowerCase();
699
+    return t === "pdf" ? c`<svg class="type-pdf" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><path d="M9 15l3 3 3-3"></path><path d="M12 18v-6"></path><text x="6" y="22" font-size="6" font-weight="bold" fill="currentColor" stroke="none">PDF</text></svg>` : t === "docx" || t === "doc" ? c`<svg class="type-doc" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><line x1="10" y1="9" x2="8" y2="9"></line></svg>` : c`<svg class="type-default" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline></svg>`;
700
+  }
701
+  render() {
702
+    return c`
703
+            <div class="file-card ${this.file.isNew ? "has-new" : ""}">
704
+                ${this.file.isNew ? c`<div class="new-dot"></div>` : ""}
705
+
706
+                <div class="icon-container">
707
+                    ${this._getIcon(this.file.type)}
708
+                </div>
709
+
710
+                <div class="file-info">
711
+                    <div class="file-name">${this.file.name}</div>
712
+                    <div class="file-meta">${this.file.date} &nbsp; ${this.file.size}</div>
713
+                </div>
714
+
715
+                <div class="download-btn">
716
+                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
717
+                </div>
718
+            </div>
719
+        `;
720
+  }
721
+}
722
+p(q, "properties", {
723
+  file: { type: Object }
724
+  // { name, date, size, type, isNew }
725
+}), p(q, "styles", f`
726
+        :host {
727
+            display: block;
728
+            margin-bottom: 12px;
729
+        }
730
+        .file-card {
731
+            background-color: var(--bg-card); /* Standard: Grau für gelesene Dateien */
732
+            border-radius: var(--radius-sm);
733
+            padding: 12px 16px;
734
+            display: flex;
735
+            align-items: center;
736
+            border: 1px solid var(--border-color);
737
+            box-shadow: var(--shadow-sm);
738
+            position: relative;
739
+        }
740
+
741
+        /* UPDATE: Styling für neue Dateien (Weißer BG + Farbiger Rand) */
742
+        .file-card.has-new {
743
+            background-color: var(--bg-white);
744
+            border-color: var(--primary-color);
745
+        }
746
+
747
+        .icon-container {
748
+            width: 40px;
749
+            height: 40px;
750
+            display: flex;
751
+            align-items: center;
752
+            justify-content: center;
753
+            margin-right: 16px;
754
+            flex-shrink: 0;
755
+        }
756
+        .icon-container svg {
757
+            width: 32px;
758
+            height: 32px;
759
+        }
760
+        .file-info {
761
+            flex: 1;
762
+            min-width: 0; /* Text truncation fix */
763
+        }
764
+        .file-name {
765
+            font-weight: 400; /* UPDATE: Standard nicht fett */
766
+            font-size: 0.9rem;
767
+            color: var(--text-dark);
768
+            margin-bottom: 4px;
769
+            white-space: nowrap;
770
+            overflow: hidden;
771
+            text-overflow: ellipsis;
772
+        }
773
+        /* UPDATE: Fett nur wenn neu */
774
+        .has-new .file-name {
775
+            font-weight: 700;
776
+        }
777
+
778
+        .file-meta {
779
+            font-size: 0.75rem;
780
+            color: var(--text-muted);
781
+        }
782
+        .download-btn {
783
+            width: 36px;
784
+            height: 36px;
785
+            border: 1px solid var(--primary-color);
786
+            border-radius: 8px;
787
+            display: flex;
788
+            align-items: center;
789
+            justify-content: center;
790
+
791
+            /* UPDATE: Standard Button Style (Weiß) */
792
+            background-color: var(--bg-white);
793
+            color: var(--primary-color);
794
+
795
+            cursor: pointer;
796
+            margin-left: 12px;
797
+            flex-shrink: 0;
798
+
799
+            /* UPDATE: Transition angepasst an WinzerCard */
800
+            transition: transform 0.1s, background-color 0.2s;
801
+        }
802
+
803
+        /* UPDATE: Klick-Effekt hinzugefügt (wie bei WinzerCard) */
804
+        .download-btn:active {
805
+            transform: scale(0.95);
806
+        }
807
+
808
+        /* UPDATE: Button Style für neue Dateien (Primärfarbe) */
809
+        .has-new .download-btn {
810
+            background-color: var(--primary-color);
811
+            color: white;
812
+        }
813
+
814
+        .download-btn svg {
815
+            width: 20px;
816
+            height: 20px;
817
+        }
818
+
819
+        /* New Indicator Dot */
820
+        .new-dot {
821
+            position: absolute;
822
+            left: 6px; /* UPDATE: Position angepasst für fixe Ausrichtung */
823
+            top: 50%;
824
+            transform: translateY(-50%);
825
+            width: 6px;
826
+            height: 6px;
827
+            background-color: var(--primary-color);
828
+            border-radius: 50%;
829
+        }
830
+        /* UPDATE: Padding-Shift entfernt, damit Icons ausgerichtet bleiben */
831
+
832
+        /* Type Colors */
833
+        .type-pdf { color: var(--alert-color); }
834
+        .type-doc { color: #2b5797; } /* Word blueish */
835
+        .type-default { color: var(--text-muted); }
836
+    `);
837
+customElements.define("winzer-file-card", q);
838
+class G extends g {
839
+  _timeToGridRow(e) {
840
+    if (!e) return 1;
841
+    const [t, i] = e.split(":").map(Number);
842
+    return t * 4 + Math.floor(i / 15) + 1;
843
+  }
844
+  _formatNumber(e) {
845
+    return new Intl.NumberFormat("de-DE").format(e);
846
+  }
847
+  render() {
848
+    const e = Array.from({ length: 24 }, (t, i) => i);
849
+    return c`<div class="scroll-container"><div class="day-grid">${e.map((t) => c`<div class="time-label" style="grid-row: ${t * 4 + 1}">${t.toString().padStart(2, "0")}:00</div>`)}${this.events ? this.events.map((t) => {
850
+      const i = this._timeToGridRow(t.start), r = this._timeToGridRow(t.end), s = r - i <= 2, l = t.total && t.booked >= t.total;
851
+      let a = "", d = c``;
852
+      if (t.total && t.total > 0) {
853
+        const u = Math.min(100, Math.round(t.booked / t.total * 100));
854
+        a = `${this._formatNumber(t.booked)} / ${this._formatNumber(t.total)} kg`, d = c`<div class="progress-track"><div class="progress-fill" style="width: ${u}%;"></div></div>`;
855
+      }
856
+      return c`<div class="event-item ${s ? "short-event" : ""} ${l ? "fully-booked" : ""}" style="grid-row: ${i} / ${r};" title="${t.title}"><div class="event-title">${t.title}</div><div class="event-details-row">${l ? c`<span class="badge-booked-out">Ausgebucht</span>` : ""}${!s || !l ? c`<span class="capacity-text">${a}</span>` : ""}${s && a ? "" : c`<span style="margin-left:8px;">${t.start} - ${t.end}</span>`}</div>${d}</div>`;
857
+    }) : ""}<div class="grid-spacer"></div></div></div>`;
858
+  }
859
+}
860
+p(G, "properties", { events: { type: Array } }), p(G, "styles", f`
861
+        :host { display: block; background: var(--bg-white); border-radius: var(--radius-card); box-shadow: var(--shadow-sm); overflow: hidden; height: 600px; display: flex; flex-direction: column; }
862
+        .scroll-container { flex: 1; overflow-y: auto; position: relative; }
863
+        .day-grid { display: grid; grid-template-columns: 50px 1fr; grid-auto-rows: 20px; background-image: linear-gradient(to bottom, var(--border-color) 1px, transparent 1px); background-size: 100% 80px; background-attachment: local; }
864
+        .time-label { grid-column: 1; text-align: right; padding-right: 10px; font-size: 0.75rem; color: var(--text-muted); line-height: 1; transform: translateY(-50%); margin-top: 1px; }
865
+        .event-item { grid-column: 2; background-color: var(--primary-light); border-left: 4px solid var(--primary-color); border: 1px solid rgba(0,0,0,0.05); border-left-width: 4px; border-radius: 4px; padding: 6px 8px; font-size: 0.8rem; color: var(--primary-color); overflow: hidden; box-shadow: var(--shadow-sm); cursor: pointer; margin-right: 10px; margin-bottom: 2px; display: flex; flex-direction: column; justify-content: flex-start; gap: 4px; transition: transform 0.1s, filter 0.1s; }
866
+        .event-item:active { transform: scale(0.98); filter: brightness(0.95); }
867
+        .event-title { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; }
868
+        .event-details-row { display: flex; justify-content: space-between; align-items: center; font-size: 0.7rem; opacity: 0.8; line-height: 1.2; }
869
+        .capacity-text { font-weight: 600; }
870
+        .progress-track { width: 100%; height: 6px; background-color: rgba(255,255,255,0.6); border-radius: 3px; overflow: hidden; margin-top: auto; }
871
+        .progress-fill { height: 100%; background-color: var(--primary-color); border-radius: 3px; transition: width 0.3s ease; }
872
+        .event-item.fully-booked { border-color: var(--alert-color); border-left-width: 4px; background-color: var(--alert-light); color: #b71c1c; }
873
+        .event-item.fully-booked .progress-fill { background-color: var(--alert-color); }
874
+        .badge-booked-out { background-color: var(--alert-color); color: white; font-size: 0.6rem; padding: 2px 6px; border-radius: 4px; font-weight: bold; text-transform: uppercase; margin-right: 6px; display: inline-block; }
875
+        .event-item.short-event { flex-direction: row; align-items: center; justify-content: space-between; padding: 0 6px; padding-bottom: 4px; gap: 8px; position: relative; }
876
+        .event-item.short-event .event-title { flex: 1; min-width: 0; }
877
+        .event-item.short-event .event-details-row { flex-shrink: 0; display: flex; align-items: center; }
878
+        .event-item.short-event .progress-track { position: absolute; bottom: 0; left: 0; right: 0; width: 100%; height: 2px; margin-top: 0; border-radius: 0; background-color: rgba(0,0,0,0.05); }
879
+        .event-item.short-event .progress-fill { border-radius: 0; }
880
+        .grid-spacer { grid-column: 1 / -1; grid-row: 97; height: 20px; }
881
+    `);
882
+customElements.define("winzer-day-view", G);
883
+class Y extends g {
884
+  _handleItemClick(e) {
885
+    this.dispatchEvent(new CustomEvent("item-click", { detail: { action: e.action, label: e.label }, bubbles: !0, composed: !0 }));
886
+  }
887
+  render() {
888
+    return !this.items || this.items.length === 0 ? c`` : c`<div class="menu-group">${this.items.map((e) => c`<div class="menu-item" @click="${() => this._handleItemClick(e)}"><div class="menu-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${e.icon}</svg></div><span>${e.label}</span><svg class="chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>`)}</div>`;
889
+  }
890
+}
891
+p(Y, "properties", { items: { type: Array } }), p(Y, "styles", f`
892
+        :host { display: block; margin-bottom: 20px; }
893
+        .menu-group { background-color: var(--bg-card); border-radius: var(--radius-sm); overflow: hidden; box-shadow: var(--shadow-sm); }
894
+        .menu-item { display: flex; align-items: center; padding: 16px 20px; cursor: pointer; background: var(--bg-white); border-bottom: 1px solid var(--border-color); font-size: 0.95rem; font-weight: 600; color: var(--text-dark); }
895
+        .menu-item:last-child { border-bottom: none; }
896
+        .menu-item:active { background-color: #f9f9f9; }
897
+        .menu-icon { width: 24px; height: 24px; margin-right: 16px; color: var(--primary-color); display: flex; justify-content: center; align-items: center; }
898
+        .menu-icon svg { width: 100%; height: 100%; display: block; }
899
+        .chevron { margin-left: auto; color: var(--primary-color); width: 18px; height: 18px; }
900
+    `);
901
+customElements.define("winzer-menu-group", Y);
902
+class Z extends g {
903
+  _close() {
904
+    this.dispatchEvent(new CustomEvent("close"));
905
+  }
906
+  render() {
907
+    return c`<div class="backdrop" @click="${(e) => e.target.classList.contains("backdrop") && this._close()}"><div class="modal-container"><div class="modal-header"><span>${this.title}</span><div class="close-btn" @click="${this._close}"><svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></div></div><slot></slot></div></div>`;
908
+  }
909
+}
910
+p(Z, "properties", { open: { type: Boolean }, title: { type: String } }), p(Z, "styles", f`
911
+        :host { display: block; }
912
+        .backdrop { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(var(--primary-rgb), 0.85); backdrop-filter: blur(4px); z-index: 1000; display: flex; justify-content: center; align-items: flex-start; padding-top: 120px; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; }
913
+        :host([open]) .backdrop { opacity: 1; pointer-events: all; }
914
+        .modal-container { width: 90%; max-width: 400px; display: flex; flex-direction: column; gap: 16px; transform: translateY(20px); transition: transform 0.3s ease; }
915
+        :host([open]) .modal-container { transform: translateY(0); }
916
+        .modal-header { background-color: var(--primary-light); color: var(--primary-color); padding: 16px 20px; border-radius: var(--radius-sm); display: flex; justify-content: space-between; align-items: center; font-weight: 600; font-size: 0.95rem; text-transform: uppercase; box-shadow: var(--shadow-lg); }
917
+        .close-btn { cursor: pointer; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; }
918
+        .close-btn svg { width: 20px; height: 20px; stroke: var(--primary-color); stroke-width: 2; }
919
+    `);
920
+customElements.define("winzer-modal", Z);
921
+class K extends g {
922
+  render() {
923
+    return c`<div class="card"><div class="header"><span>${this.category}</span><span>${this.date}</span></div><h3>${this.title}</h3><p>${this.text}</p>${this.hasAttachment ? c`<div class="attachment-icon"><svg viewBox="0 0 24 24"><path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 0 1 5 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 0 0 5 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"/></svg></div>` : ""}<div class="action-btn"><svg viewBox="0 0 24 24"><path d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"/></svg></div></div>`;
924
+  }
925
+}
926
+p(K, "properties", { category: { type: String }, date: { type: String }, title: { type: String }, text: { type: String }, hasAttachment: { type: Boolean } }), p(K, "styles", f`
927
+        :host { display: block; margin-bottom: 35px; }
928
+        .card { background-color: var(--bg-card); border-radius: var(--radius-card); padding: 20px 20px 40px 20px; position: relative; color: var(--text-main); display: block; }
929
+        .header { display: flex; justify-content: space-between; font-size: 0.8rem; color: var(--text-muted); margin-bottom: 8px; }
930
+        h3 { color: var(--primary-color); margin: 0 0 8px 0; font-size: 1.1rem; font-weight: 600; }
931
+        p { margin: 0; font-size: 0.95rem; line-height: 1.4; color: var(--text-dark); padding-right: 25px; }
932
+        .attachment-icon { position: absolute; right: 20px; top: 50%; transform: translateY(-50%); color: var(--primary-color); }
933
+        .action-btn { position: absolute; bottom: -20px; right: 20px; background-color: var(--primary-color); color: var(--bg-white); width: 48px; height: 48px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-md); cursor: pointer; transition: transform 0.1s; z-index: 10; }
934
+        .action-btn:active { transform: scale(0.95); }
935
+        svg { width: 24px; height: 24px; fill: currentColor; }
936
+    `);
937
+customElements.define("winzer-card", K);
938
+class J extends g {
939
+  _handleUserClick() {
940
+    this.dispatchEvent(new CustomEvent("user-click", { bubbles: !0, composed: !0 }));
941
+  }
942
+  render() {
943
+    return c`<div class="top-bar"><div class="logo-placeholder"><span>luumi</span><span>CORE</span></div><div class="title-group"><div class="main-title">${this.mainTitle || ""}</div><div class="sub-title">${this.subTitle || ""}</div></div><svg class="user-icon" @click="${this._handleUserClick}" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4" fill="none" stroke="currentColor" stroke-width="2"/></svg></div>`;
944
+  }
945
+}
946
+p(J, "properties", { mainTitle: { type: String, attribute: "main-title" }, subTitle: { type: String, attribute: "sub-title" } }), p(J, "styles", f`
947
+        :host { display: block; background: var(--bg-white); padding: 10px 20px; border-bottom: 1px solid var(--border-color); }
948
+        .top-bar { display: flex; align-items: center; justify-content: space-between; height: 60px; }
949
+        .logo-placeholder { border: 1px solid var(--primary-color); width: 40px; height: 40px; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 8px; color: var(--primary-color); font-weight: bold; line-height: 1; }
950
+        .title-group { text-align: center; }
951
+        .main-title { color: var(--primary-color); font-weight: bold; font-size: 1rem; text-transform: uppercase; }
952
+        .sub-title { font-size: 0.9rem; color: var(--primary-color); }
953
+        .user-icon { width: 32px; height: 32px; color: var(--text-main); cursor: pointer; }
954
+    `);
955
+customElements.define("winzer-header", J);
956
+class X extends g {
957
+  constructor() {
958
+    super(), this.items = [];
959
+  }
960
+  render() {
961
+    return !this.items || this.items.length === 0 ? c`` : c`
962
+            <div class="nav-bar">
963
+                ${this.items.map((e) => c`
964
+                    <a href="${e.url || "#"}" class="nav-item ${this.activeTab === e.id ? "active" : ""}">
965
+                        ${e.icon}
966
+                        <span>${e.label}</span>
967
+                    </a>
968
+                `)}
969
+            </div>
970
+        `;
971
+  }
972
+}
973
+p(X, "properties", {
974
+  activeTab: { type: String },
975
+  items: { type: Array }
976
+  // [{ id: 'news', label: 'News', icon: '...', url: '/news' }]
977
+}), p(X, "styles", f`
978
+        :host { position: fixed; bottom: 0; left: 0; width: 100%; background: var(--bg-white); border-top: 1px solid var(--border-color); padding-bottom: env(safe-area-inset-bottom); z-index: 100; }
979
+        .nav-bar { display: flex; justify-content: space-around; padding: 10px 0; }
980
+        .nav-item { display: flex; flex-direction: column; align-items: center; font-size: 0.7rem; color: var(--text-main); cursor: pointer; width: 80px; text-decoration: none; }
981
+        .nav-item.active { color: var(--primary-color); }
982
+        .nav-item svg { width: 24px; height: 24px; margin-bottom: 4px; fill: none; stroke: currentColor; stroke-width: 2; }
983
+    `);
984
+customElements.define("winzer-nav", X);
985
+class Q extends g {
986
+  render() {
987
+    return c`<label class="switch"><input type="checkbox" ?checked="${this.checked}" @change="${(e) => this.checked = e.target.checked}"><span class="slider"></span></label>`;
988
+  }
989
+}
990
+p(Q, "properties", { checked: { type: Boolean } }), p(Q, "styles", f`
991
+        .switch { position: relative; display: inline-block; width: 44px; height: 24px; }
992
+        .switch input { opacity: 0; width: 0; height: 0; }
993
+        .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ddd; transition: .4s; border-radius: 24px; }
994
+        .slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 3px; bottom: 3px; background-color: var(--bg-white); transition: .4s; border-radius: 50%; }
995
+        input:checked + .slider { background-color: var(--primary-color); }
996
+        input:checked + .slider:before { transform: translateX(20px); }
997
+    `);
998
+customElements.define("toggle-switch", Q);
999
+class ee extends g {
1000
+  constructor() {
1001
+    super(), this.isUserModalOpen = !1, this.isFilterModalOpen = !1, this.currentTab = "news", this.appTitle = "WINZER-PORTAL", this.appSubtitle = "Badischer Winzerkeller", this.navItems = [
1002
+      {
1003
+        id: "news",
1004
+        label: "News",
1005
+        url: "/news",
1006
+        icon: w`<svg viewBox="0 0 24 24"><path d="M19 20H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2-2v1m2 13a2 2 0 0 1-2-2V7m2 13a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"/></svg>`
1007
+      },
1008
+      {
1009
+        id: "anlieferung",
1010
+        label: "Anlieferung",
1011
+        url: "/anlieferung",
1012
+        icon: w`<svg viewBox="0 0 24 24"><circle cx="12" cy="10" r="2"/><circle cx="15.5" cy="8" r="2"/><circle cx="8.5" cy="8" r="2"/><circle cx="12" cy="6" r="2"/><circle cx="10" cy="13" r="2"/><circle cx="14" cy="13" r="2"/><circle cx="12" cy="16" r="2"/><path d="M12 2v4" stroke-linecap="round"/></svg>`
1013
+      },
1014
+      {
1015
+        id: "tresor",
1016
+        label: "Datei-Tresor",
1017
+        url: "/tresor",
1018
+        icon: w`<svg viewBox="0 0 24 24"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/><path d="M12 12v3"/><path d="M12 12v-1"/></svg>`
1019
+      }
1020
+    ], this.menuAccount = [
1021
+      { label: "Persönliche Daten", icon: w`<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>`, action: "profile" },
1022
+      { label: "Sicherheits-Einstellungen", icon: w`<rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>`, action: "security" },
1023
+      { label: "Meine Buchungen", icon: w`<circle cx="12" cy="10" r="2"/><circle cx="15.5" cy="8" r="2"/><circle cx="8.5" cy="8" r="2"/><circle cx="12" cy="6" r="2"/><circle cx="10" cy="13" r="2"/><circle cx="14" cy="13" r="2"/><circle cx="12" cy="16" r="2"/><path d="M12 2v4"/>`, action: "bookings" }
1024
+    ], this.menuSession = [
1025
+      { label: "Abmelden", icon: w`<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/>`, action: "logout" }
1026
+    ];
1027
+  }
1028
+  render() {
1029
+    return c`
1030
+            <!-- Header -->
1031
+            <winzer-header
1032
+                    .mainTitle="${this.appTitle}"
1033
+                    .subTitle="${this.appSubtitle}"
1034
+                    @user-click="${() => this.isUserModalOpen = !0}">
1035
+            </winzer-header>
1036
+
1037
+            <div class="content">
1038
+                <!-- Dynamic Content Slot -->
1039
+                <!--
1040
+                   The main content is now injected via the default slot.
1041
+                   Contao renders the page content, and it gets placed here.
1042
+                -->
1043
+                <slot></slot>
1044
+            </div>
1045
+
1046
+            <!-- Bottom Nav -->
1047
+            <winzer-nav
1048
+                    .activeTab="${this.currentTab}"
1049
+                    .items="${this.navItems}">
1050
+            </winzer-nav>
1051
+
1052
+            <!-- MODAL: USER -->
1053
+            <winzer-modal title="Mein Benutzerkonto" ?open="${this.isUserModalOpen}" @close="${() => this.isUserModalOpen = !1}">
1054
+                <winzer-menu-group .items="${this.menuAccount}"></winzer-menu-group>
1055
+                <winzer-menu-group .items="${this.menuSession}"></winzer-menu-group>
1056
+            </winzer-modal>
1057
+
1058
+            <!-- MODAL: FILTER -->
1059
+            <winzer-modal title="FILTER - EINSTELLUNGEN" ?open="${this.isFilterModalOpen}" @close="${() => this.isFilterModalOpen = !1}">
1060
+                <div class="filter-content">
1061
+                    <div class="filter-row">
1062
+                        <label>
1063
+                            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect></svg>
1064
+                            Kategorie:
1065
+                        </label>
1066
+                        <select class="filter-select">
1067
+                            <option>Traubengeld</option>
1068
+                            <option>Rechnungen</option>
1069
+                        </select>
1070
+                    </div>
1071
+                    <div class="filter-row">
1072
+                        <label>
1073
+                            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
1074
+                            Zeitraum:
1075
+                        </label>
1076
+                        <select class="filter-select">
1077
+                            <option>Letzter Monat</option>
1078
+                            <option>Dieses Jahr</option>
1079
+                        </select>
1080
+                    </div>
1081
+                    <div class="filter-row" style="margin-top: 20px;">
1082
+                        <label>
1083
+                            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line><polyline points="18 20 21 23 24 20"></polyline></svg>
1084
+                            Sortierung:
1085
+                        </label>
1086
+                        <select class="filter-select">
1087
+                            <option>Datum absteigend</option>
1088
+                            <option>Datum aufsteigend</option>
1089
+                        </select>
1090
+                    </div>
1091
+
1092
+                    <button class="filter-btn" @click="${() => this.isFilterModalOpen = !1}">
1093
+                        Filtern
1094
+                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
1095
+                    </button>
1096
+                </div>
1097
+            </winzer-modal>
1098
+        `;
1099
+  }
1100
+}
1101
+p(ee, "properties", {
1102
+  isUserModalOpen: { type: Boolean },
1103
+  isFilterModalOpen: { type: Boolean },
1104
+  currentTab: { type: String },
1105
+  // Configurable properties
1106
+  appTitle: { type: String, attribute: "app-title" },
1107
+  appSubtitle: { type: String, attribute: "app-subtitle" },
1108
+  navItems: { type: Array },
1109
+  // [{ id, label, icon (svg string), url }]
1110
+  menuAccount: { type: Array },
1111
+  menuSession: { type: Array }
1112
+}), p(ee, "styles", f`
1113
+        :host {
1114
+            display: block;
1115
+            background-color: var(--bg-white);
1116
+            min-height: 100vh;
1117
+            width: 100%;
1118
+            position: relative;
1119
+        }
1120
+        .content { padding: 20px; padding-bottom: 90px; }
1121
+        .section-header { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
1122
+        h1 { font-size: 1.5rem; font-weight: 800; margin: 0; text-transform: uppercase; }
1123
+        .abo-label { font-size: 0.8rem; font-weight: 600; margin-left: auto; margin-right: 8px; }
1124
+
1125
+        /* Filter Bar */
1126
+        .filter-bar {
1127
+            display: flex;
1128
+            align-items: center;
1129
+            font-size: 0.9rem;
1130
+            font-weight: 600;
1131
+            margin-bottom: 16px;
1132
+            cursor: pointer;
1133
+        }
1134
+        .filter-icon {
1135
+            margin-left: 8px;
1136
+            width: 24px;
1137
+            height: 24px;
1138
+            color: var(--text-dark);
1139
+        }
1140
+
1141
+        /* Filter Modal Styles */
1142
+        .filter-content {
1143
+            background-color: var(--bg-white);
1144
+            padding: 16px;
1145
+            border-radius: var(--radius-card);
1146
+            box-shadow: var(--shadow-sm);
1147
+        }
1148
+        .filter-row {
1149
+            display: flex;
1150
+            align-items: center;
1151
+            justify-content: space-between;
1152
+            margin-bottom: 12px;
1153
+        }
1154
+        .filter-row label {
1155
+            display: flex;
1156
+            align-items: center;
1157
+            font-weight: 700;
1158
+            font-size: 0.9rem;
1159
+            color: var(--text-dark);
1160
+        }
1161
+        .filter-row label svg {
1162
+            width: 20px;
1163
+            height: 20px;
1164
+            margin-right: 8px;
1165
+            color: var(--primary-color);
1166
+        }
1167
+        .filter-select {
1168
+            background-color: var(--bg-white);
1169
+            border: 1px solid var(--border-color);
1170
+            border-radius: 8px;
1171
+            padding: 8px 12px;
1172
+            font-size: 0.9rem;
1173
+            color: var(--text-dark);
1174
+            width: 160px;
1175
+        }
1176
+        .filter-btn {
1177
+            width: 100%;
1178
+            background-color: var(--primary-color);
1179
+            color: white;
1180
+            border: none;
1181
+            border-radius: var(--radius-sm);
1182
+            padding: 12px;
1183
+            font-weight: 600;
1184
+            font-size: 1rem;
1185
+            margin-top: 20px;
1186
+            display: flex;
1187
+            align-items: center;
1188
+            justify-content: center;
1189
+            gap: 8px;
1190
+            cursor: pointer;
1191
+        }
1192
+    `);
1193
+customElements.define("winzer-app", ee);
696 1194
 console.log("luumiCORE Core Bundle initialized");
697
-class $t extends _ {
1195
+class ke extends g {
698 1196
   render() {
699
-    return H`<p>Hello from luumiCORE!</p>`;
1197
+    return c`<p>Hello from luumiCORE!</p>`;
700 1198
   }
701 1199
 }
702
-b($t, "styles", D`
1200
+p(ke, "styles", f`
703 1201
     :host {
704 1202
       display: block;
705 1203
       padding: 16px;
... ...
@@ -707,7 +1205,7 @@ b($t, "styles", D`
707 1205
       border: 1px solid var(--luumicore-primary, blue);
708 1206
     }
709 1207
   `);
710
-customElements.define("luumicore-element", $t);
1208
+customElements.define("luumicore-element", ke);
711 1209
 export {
712
-  $t as LuumicoreElement
1210
+  ke as LuumicoreElement
713 1211
 };
Browse code

Update

Benjamin Roth authored on04/02/2026 16:01:58
Showing1 changed files
... ...
@@ -1,6 +1,6 @@
1
-var ft = Object.defineProperty;
2
-var mt = (r, t, e) => t in r ? ft(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
-var b = (r, t, e) => mt(r, typeof t != "symbol" ? t + "" : t, e);
1
+var mt = Object.defineProperty;
2
+var ft = (r, t, e) => t in r ? mt(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
+var b = (r, t, e) => ft(r, typeof t != "symbol" ? t + "" : t, e);
4 4
 /**
5 5
  * @license
6 6
  * Copyright 2019 Google LLC
... ...
@@ -48,7 +48,7 @@ const _t = (r) => new nt(typeof r == "string" ? r : r + "", void 0, Z), D = (r,
48 48
  * Copyright 2017 Google LLC
49 49
  * SPDX-License-Identifier: BSD-3-Clause
50 50
  */
51
-const { is: At, defineProperty: yt, getOwnPropertyDescriptor: vt, getOwnPropertyNames: bt, getOwnPropertySymbols: Et, getPrototypeOf: St } = Object, m = globalThis, G = m.trustedTypes, xt = G ? G.emptyScript : "", L = m.reactiveElementPolyfillSupport, C = (r, t) => r, V = { toAttribute(r, t) {
51
+const { is: At, defineProperty: vt, getOwnPropertyDescriptor: yt, getOwnPropertyNames: bt, getOwnPropertySymbols: Et, getPrototypeOf: St } = Object, f = globalThis, G = f.trustedTypes, xt = G ? G.emptyScript : "", L = f.reactiveElementPolyfillSupport, C = (r, t) => r, V = { toAttribute(r, t) {
52 52
   switch (t) {
53 53
     case Boolean:
54 54
       r = r ? xt : null;
... ...
@@ -77,7 +77,7 @@ const { is: At, defineProperty: yt, getOwnPropertyDescriptor: vt, getOwnProperty
77 77
   }
78 78
   return e;
79 79
 } }, at = (r, t) => !At(r, t), Q = { attribute: !0, type: String, converter: V, reflect: !1, useDefault: !1, hasChanged: at };
80
-Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), m.litPropertyMetadata ?? (m.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
80
+Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), f.litPropertyMetadata ?? (f.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
81 81
 let E = class extends HTMLElement {
82 82
   static addInitializer(t) {
83 83
     this._$Ei(), (this.l ?? (this.l = [])).push(t);
... ...
@@ -88,11 +88,11 @@ let E = class extends HTMLElement {
88 88
   static createProperty(t, e = Q) {
89 89
     if (e.state && (e.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(t) && ((e = Object.create(e)).wrapped = !0), this.elementProperties.set(t, e), !e.noAccessor) {
90 90
       const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
91
-      i !== void 0 && yt(this.prototype, t, i);
91
+      i !== void 0 && vt(this.prototype, t, i);
92 92
     }
93 93
   }
94 94
   static getPropertyDescriptor(t, e, s) {
95
-    const { get: i, set: n } = vt(this.prototype, t) ?? { get() {
95
+    const { get: i, set: n } = yt(this.prototype, t) ?? { get() {
96 96
       return this[e];
97 97
     }, set(o) {
98 98
       this[e] = o;
... ...
@@ -281,15 +281,15 @@ let E = class extends HTMLElement {
281 281
   firstUpdated(t) {
282 282
   }
283 283
 };
284
-E.elementStyles = [], E.shadowRootOptions = { mode: "open" }, E[C("elementProperties")] = /* @__PURE__ */ new Map(), E[C("finalized")] = /* @__PURE__ */ new Map(), L == null || L({ ReactiveElement: E }), (m.reactiveElementVersions ?? (m.reactiveElementVersions = [])).push("2.1.2");
284
+E.elementStyles = [], E.shadowRootOptions = { mode: "open" }, E[C("elementProperties")] = /* @__PURE__ */ new Map(), E[C("finalized")] = /* @__PURE__ */ new Map(), L == null || L({ ReactiveElement: E }), (f.reactiveElementVersions ?? (f.reactiveElementVersions = [])).push("2.1.2");
285 285
 /**
286 286
  * @license
287 287
  * Copyright 2017 Google LLC
288 288
  * SPDX-License-Identifier: BSD-3-Clause
289 289
  */
290
-const P = globalThis, X = (r) => r, k = P.trustedTypes, Y = k ? k.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, lt = "$lit$", f = `lit$${Math.random().toFixed(9).slice(2)}$`, ht = "?" + f, wt = `<${ht}>`, v = document, U = () => v.createComment(""), O = (r) => r === null || typeof r != "object" && typeof r != "function", J = Array.isArray, Ct = (r) => J(r) || typeof (r == null ? void 0 : r[Symbol.iterator]) == "function", j = `[ 	
290
+const P = globalThis, X = (r) => r, k = P.trustedTypes, Y = k ? k.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, lt = "$lit$", m = `lit$${Math.random().toFixed(9).slice(2)}$`, ht = "?" + m, wt = `<${ht}>`, y = document, U = () => y.createComment(""), O = (r) => r === null || typeof r != "object" && typeof r != "function", J = Array.isArray, Ct = (r) => J(r) || typeof (r == null ? void 0 : r[Symbol.iterator]) == "function", j = `[ 	
291 291
 \f\r]`, w = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, tt = /-->/g, et = />/g, g = RegExp(`>|${j}(?:([^\\s"'>=/]+)(${j}*=${j}*(?:[^ 	
292
-\f\r"'\`<>=]|("|')|))|$)`, "g"), st = /'/g, it = /"/g, ct = /^(?:script|style|textarea|title)$/i, Pt = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), H = Pt(1), S = Symbol.for("lit-noChange"), d = Symbol.for("lit-nothing"), rt = /* @__PURE__ */ new WeakMap(), A = v.createTreeWalker(v, 129);
292
+\f\r"'\`<>=]|("|')|))|$)`, "g"), st = /'/g, it = /"/g, ct = /^(?:script|style|textarea|title)$/i, Pt = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), H = Pt(1), S = Symbol.for("lit-noChange"), d = Symbol.for("lit-nothing"), rt = /* @__PURE__ */ new WeakMap(), A = y.createTreeWalker(y, 129);
293 293
 function dt(r, t) {
294 294
   if (!J(r) || !r.hasOwnProperty("raw")) throw Error("invalid template strings array");
295 295
   return Y !== void 0 ? Y.createHTML(t) : t;
... ...
@@ -302,7 +302,7 @@ const Ut = (r, t) => {
302 302
     let c, u, h = -1, p = 0;
303 303
     for (; p < a.length && (o.lastIndex = p, u = o.exec(a), u !== null); ) p = o.lastIndex, o === w ? u[1] === "!--" ? o = tt : u[1] !== void 0 ? o = et : u[2] !== void 0 ? (ct.test(u[2]) && (i = RegExp("</" + u[2], "g")), o = g) : u[3] !== void 0 && (o = g) : o === g ? u[0] === ">" ? (o = i ?? w, h = -1) : u[1] === void 0 ? h = -2 : (h = o.lastIndex - u[2].length, c = u[1], o = u[3] === void 0 ? g : u[3] === '"' ? it : st) : o === it || o === st ? o = g : o === tt || o === et ? o = w : (o = g, i = void 0);
304 304
     const $ = o === g && r[l + 1].startsWith("/>") ? " " : "";
305
-    n += o === w ? a + wt : h >= 0 ? (s.push(c), a.slice(0, h) + lt + a.slice(h) + f + $) : a + f + (h === -2 ? l : $);
305
+    n += o === w ? a + wt : h >= 0 ? (s.push(c), a.slice(0, h) + lt + a.slice(h) + m + $) : a + m + (h === -2 ? l : $);
306 306
   }
307 307
   return [dt(r, n + (r[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
308 308
 };
... ...
@@ -319,11 +319,11 @@ class M {
319 319
     for (; (i = A.nextNode()) !== null && a.length < l; ) {
320 320
       if (i.nodeType === 1) {
321 321
         if (i.hasAttributes()) for (const h of i.getAttributeNames()) if (h.endsWith(lt)) {
322
-          const p = u[o++], $ = i.getAttribute(h).split(f), R = /([.?@])?(.*)/.exec(p);
322
+          const p = u[o++], $ = i.getAttribute(h).split(m), R = /([.?@])?(.*)/.exec(p);
323 323
           a.push({ type: 1, index: n, name: R[2], strings: $, ctor: R[1] === "." ? Ht : R[1] === "?" ? Mt : R[1] === "@" ? Nt : z }), i.removeAttribute(h);
324
-        } else h.startsWith(f) && (a.push({ type: 6, index: n }), i.removeAttribute(h));
324
+        } else h.startsWith(m) && (a.push({ type: 6, index: n }), i.removeAttribute(h));
325 325
         if (ct.test(i.tagName)) {
326
-          const h = i.textContent.split(f), p = h.length - 1;
326
+          const h = i.textContent.split(m), p = h.length - 1;
327 327
           if (p > 0) {
328 328
             i.textContent = k ? k.emptyScript : "";
329 329
             for (let $ = 0; $ < p; $++) i.append(h[$], U()), A.nextNode(), a.push({ type: 2, index: ++n });
... ...
@@ -333,13 +333,13 @@ class M {
333 333
       } else if (i.nodeType === 8) if (i.data === ht) a.push({ type: 2, index: n });
334 334
       else {
335 335
         let h = -1;
336
-        for (; (h = i.data.indexOf(f, h + 1)) !== -1; ) a.push({ type: 7, index: n }), h += f.length - 1;
336
+        for (; (h = i.data.indexOf(m, h + 1)) !== -1; ) a.push({ type: 7, index: n }), h += m.length - 1;
337 337
       }
338 338
       n++;
339 339
     }
340 340
   }
341 341
   static createElement(t, e) {
342
-    const s = v.createElement("template");
342
+    const s = y.createElement("template");
343 343
     return s.innerHTML = t, s;
344 344
   }
345 345
 }
... ...
@@ -361,7 +361,7 @@ class Ot {
361 361
     return this._$AM._$AU;
362 362
   }
363 363
   u(t) {
364
-    const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? v).importNode(e, !0);
364
+    const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? y).importNode(e, !0);
365 365
     A.currentNode = i;
366 366
     let n = A.nextNode(), o = 0, l = 0, a = s[0];
367 367
     for (; a !== void 0; ) {
... ...
@@ -371,7 +371,7 @@ class Ot {
371 371
       }
372 372
       o !== (a == null ? void 0 : a.index) && (n = A.nextNode(), o++);
373 373
     }
374
-    return A.currentNode = v, i;
374
+    return A.currentNode = y, i;
375 375
   }
376 376
   p(t) {
377 377
     let e = 0;
... ...
@@ -407,7 +407,7 @@ class N {
407 407
     this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
408 408
   }
409 409
   _(t) {
410
-    this._$AH !== d && O(this._$AH) ? this._$AA.nextSibling.data = t : this.T(v.createTextNode(t)), this._$AH = t;
410
+    this._$AH !== d && O(this._$AH) ? this._$AA.nextSibling.data = t : this.T(y.createTextNode(t)), this._$AH = t;
411 411
   }
412 412
   $(t) {
413 413
     var n;
... ...
@@ -523,7 +523,7 @@ const Tt = (r, t, e) => {
523 523
  * Copyright 2017 Google LLC
524 524
  * SPDX-License-Identifier: BSD-3-Clause
525 525
  */
526
-const y = globalThis;
526
+const v = globalThis;
527 527
 class _ extends E {
528 528
   constructor() {
529 529
     super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
... ...
@@ -550,10 +550,10 @@ class _ extends E {
550 550
   }
551 551
 }
552 552
 var ot;
553
-_._$litElement$ = !0, _.finalized = !0, (ot = y.litElementHydrateSupport) == null || ot.call(y, { LitElement: _ });
554
-const B = y.litElementPolyfillSupport;
553
+_._$litElement$ = !0, _.finalized = !0, (ot = v.litElementHydrateSupport) == null || ot.call(v, { LitElement: _ });
554
+const B = v.litElementPolyfillSupport;
555 555
 B == null || B({ LitElement: _ });
556
-(y.litElementVersions ?? (y.litElementVersions = [])).push("4.2.2");
556
+(v.litElementVersions ?? (v.litElementVersions = [])).push("4.2.2");
557 557
 class W extends _ {
558 558
   render() {
559 559
     return H`
... ...
@@ -571,12 +571,22 @@ class W extends _ {
571 571
 }
572 572
 b(W, "styles", D`
573 573
     :host {
574
+      --luumicore-card-bg: var(--luumicore-secondary, #fff);
575
+      --luumicore-card-border-color: var(--luumicore-secondary, #fff);
576
+      --luumicore-card-border-radius: var(--luumicore-border-radius, 1rem);
577
+      --luumicore-card-shadow: var(--luumicore-shadow, .25rem .25rem 1rem rgba(0,0,0,0.2));
578
+      --luumicore-card-spacing: var(--luumicore-element-spacing, 2rem);
579
+
574 580
       display: block;
575
-      border: 1px solid var(--luumicore-border-color, #ddd);
576
-      border-radius: var(--luumicore-border-radius, 8px);
581
+      border: 1px solid var(--luumicore-card-border-color);
582
+      border-radius: var(--luumicore-card-border-radius);
577 583
       overflow: hidden;
578
-      background-color: var(--luumicore-card-bg, #fff);
579
-      box-shadow: var(--luumicore-shadow, 0 2px 4px rgba(0,0,0,0.1));
584
+      background-color: var(--luumicore-card-bg);
585
+      box-shadow: var(--luumicore-card-shadow);
586
+    }
587
+
588
+    :host(:not(:last-child)) {
589
+      margin-bottom: var(--luumicore-card-spacing);
580 590
     }
581 591
 
582 592
     .card-image {
Browse code

Add some temporary lit test components for development purposes

Benjamin Roth authored on29/12/2025 19:27:44
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,703 @@
1
+var ft = Object.defineProperty;
2
+var mt = (r, t, e) => t in r ? ft(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
+var b = (r, t, e) => mt(r, typeof t != "symbol" ? t + "" : t, e);
4
+/**
5
+ * @license
6
+ * Copyright 2019 Google LLC
7
+ * SPDX-License-Identifier: BSD-3-Clause
8
+ */
9
+const T = globalThis, q = T.ShadowRoot && (T.ShadyCSS === void 0 || T.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, Z = Symbol(), K = /* @__PURE__ */ new WeakMap();
10
+let nt = class {
11
+  constructor(t, e, s) {
12
+    if (this._$cssResult$ = !0, s !== Z) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
13
+    this.cssText = t, this.t = e;
14
+  }
15
+  get styleSheet() {
16
+    let t = this.o;
17
+    const e = this.t;
18
+    if (q && t === void 0) {
19
+      const s = e !== void 0 && e.length === 1;
20
+      s && (t = K.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && K.set(e, t));
21
+    }
22
+    return t;
23
+  }
24
+  toString() {
25
+    return this.cssText;
26
+  }
27
+};
28
+const _t = (r) => new nt(typeof r == "string" ? r : r + "", void 0, Z), D = (r, ...t) => {
29
+  const e = r.length === 1 ? r[0] : t.reduce((s, i, n) => s + ((o) => {
30
+    if (o._$cssResult$ === !0) return o.cssText;
31
+    if (typeof o == "number") return o;
32
+    throw Error("Value passed to 'css' function must be a 'css' function result: " + o + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
33
+  })(i) + r[n + 1], r[0]);
34
+  return new nt(e, r, Z);
35
+}, gt = (r, t) => {
36
+  if (q) r.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
37
+  else for (const e of t) {
38
+    const s = document.createElement("style"), i = T.litNonce;
39
+    i !== void 0 && s.setAttribute("nonce", i), s.textContent = e.cssText, r.appendChild(s);
40
+  }
41
+}, F = q ? (r) => r : (r) => r instanceof CSSStyleSheet ? ((t) => {
42
+  let e = "";
43
+  for (const s of t.cssRules) e += s.cssText;
44
+  return _t(e);
45
+})(r) : r;
46
+/**
47
+ * @license
48
+ * Copyright 2017 Google LLC
49
+ * SPDX-License-Identifier: BSD-3-Clause
50
+ */
51
+const { is: At, defineProperty: yt, getOwnPropertyDescriptor: vt, getOwnPropertyNames: bt, getOwnPropertySymbols: Et, getPrototypeOf: St } = Object, m = globalThis, G = m.trustedTypes, xt = G ? G.emptyScript : "", L = m.reactiveElementPolyfillSupport, C = (r, t) => r, V = { toAttribute(r, t) {
52
+  switch (t) {
53
+    case Boolean:
54
+      r = r ? xt : null;
55
+      break;
56
+    case Object:
57
+    case Array:
58
+      r = r == null ? r : JSON.stringify(r);
59
+  }
60
+  return r;
61
+}, fromAttribute(r, t) {
62
+  let e = r;
63
+  switch (t) {
64
+    case Boolean:
65
+      e = r !== null;
66
+      break;
67
+    case Number:
68
+      e = r === null ? null : Number(r);
69
+      break;
70
+    case Object:
71
+    case Array:
72
+      try {
73
+        e = JSON.parse(r);
74
+      } catch {
75
+        e = null;
76
+      }
77
+  }
78
+  return e;
79
+} }, at = (r, t) => !At(r, t), Q = { attribute: !0, type: String, converter: V, reflect: !1, useDefault: !1, hasChanged: at };
80
+Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), m.litPropertyMetadata ?? (m.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
81
+let E = class extends HTMLElement {
82
+  static addInitializer(t) {
83
+    this._$Ei(), (this.l ?? (this.l = [])).push(t);
84
+  }
85
+  static get observedAttributes() {
86
+    return this.finalize(), this._$Eh && [...this._$Eh.keys()];
87
+  }
88
+  static createProperty(t, e = Q) {
89
+    if (e.state && (e.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(t) && ((e = Object.create(e)).wrapped = !0), this.elementProperties.set(t, e), !e.noAccessor) {
90
+      const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
91
+      i !== void 0 && yt(this.prototype, t, i);
92
+    }
93
+  }
94
+  static getPropertyDescriptor(t, e, s) {
95
+    const { get: i, set: n } = vt(this.prototype, t) ?? { get() {
96
+      return this[e];
97
+    }, set(o) {
98
+      this[e] = o;
99
+    } };
100
+    return { get: i, set(o) {
101
+      const l = i == null ? void 0 : i.call(this);
102
+      n == null || n.call(this, o), this.requestUpdate(t, l, s);
103
+    }, configurable: !0, enumerable: !0 };
104
+  }
105
+  static getPropertyOptions(t) {
106
+    return this.elementProperties.get(t) ?? Q;
107
+  }
108
+  static _$Ei() {
109
+    if (this.hasOwnProperty(C("elementProperties"))) return;
110
+    const t = St(this);
111
+    t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
112
+  }
113
+  static finalize() {
114
+    if (this.hasOwnProperty(C("finalized"))) return;
115
+    if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(C("properties"))) {
116
+      const e = this.properties, s = [...bt(e), ...Et(e)];
117
+      for (const i of s) this.createProperty(i, e[i]);
118
+    }
119
+    const t = this[Symbol.metadata];
120
+    if (t !== null) {
121
+      const e = litPropertyMetadata.get(t);
122
+      if (e !== void 0) for (const [s, i] of e) this.elementProperties.set(s, i);
123
+    }
124
+    this._$Eh = /* @__PURE__ */ new Map();
125
+    for (const [e, s] of this.elementProperties) {
126
+      const i = this._$Eu(e, s);
127
+      i !== void 0 && this._$Eh.set(i, e);
128
+    }
129
+    this.elementStyles = this.finalizeStyles(this.styles);
130
+  }
131
+  static finalizeStyles(t) {
132
+    const e = [];
133
+    if (Array.isArray(t)) {
134
+      const s = new Set(t.flat(1 / 0).reverse());
135
+      for (const i of s) e.unshift(F(i));
136
+    } else t !== void 0 && e.push(F(t));
137
+    return e;
138
+  }
139
+  static _$Eu(t, e) {
140
+    const s = e.attribute;
141
+    return s === !1 ? void 0 : typeof s == "string" ? s : typeof t == "string" ? t.toLowerCase() : void 0;
142
+  }
143
+  constructor() {
144
+    super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
145
+  }
146
+  _$Ev() {
147
+    var t;
148
+    this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));
149
+  }
150
+  addController(t) {
151
+    var e;
152
+    (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));
153
+  }
154
+  removeController(t) {
155
+    var e;
156
+    (e = this._$EO) == null || e.delete(t);
157
+  }
158
+  _$E_() {
159
+    const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
160
+    for (const s of e.keys()) this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);
161
+    t.size > 0 && (this._$Ep = t);
162
+  }
163
+  createRenderRoot() {
164
+    const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
165
+    return gt(t, this.constructor.elementStyles), t;
166
+  }
167
+  connectedCallback() {
168
+    var t;
169
+    this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$EO) == null || t.forEach((e) => {
170
+      var s;
171
+      return (s = e.hostConnected) == null ? void 0 : s.call(e);
172
+    });
173
+  }
174
+  enableUpdating(t) {
175
+  }
176
+  disconnectedCallback() {
177
+    var t;
178
+    (t = this._$EO) == null || t.forEach((e) => {
179
+      var s;
180
+      return (s = e.hostDisconnected) == null ? void 0 : s.call(e);
181
+    });
182
+  }
183
+  attributeChangedCallback(t, e, s) {
184
+    this._$AK(t, s);
185
+  }
186
+  _$ET(t, e) {
187
+    var n;
188
+    const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);
189
+    if (i !== void 0 && s.reflect === !0) {
190
+      const o = (((n = s.converter) == null ? void 0 : n.toAttribute) !== void 0 ? s.converter : V).toAttribute(e, s.type);
191
+      this._$Em = t, o == null ? this.removeAttribute(i) : this.setAttribute(i, o), this._$Em = null;
192
+    }
193
+  }
194
+  _$AK(t, e) {
195
+    var n, o;
196
+    const s = this.constructor, i = s._$Eh.get(t);
197
+    if (i !== void 0 && this._$Em !== i) {
198
+      const l = s.getPropertyOptions(i), a = typeof l.converter == "function" ? { fromAttribute: l.converter } : ((n = l.converter) == null ? void 0 : n.fromAttribute) !== void 0 ? l.converter : V;
199
+      this._$Em = i;
200
+      const c = a.fromAttribute(e, l.type);
201
+      this[i] = c ?? ((o = this._$Ej) == null ? void 0 : o.get(i)) ?? c, this._$Em = null;
202
+    }
203
+  }
204
+  requestUpdate(t, e, s, i = !1, n) {
205
+    var o;
206
+    if (t !== void 0) {
207
+      const l = this.constructor;
208
+      if (i === !1 && (n = this[t]), s ?? (s = l.getPropertyOptions(t)), !((s.hasChanged ?? at)(n, e) || s.useDefault && s.reflect && n === ((o = this._$Ej) == null ? void 0 : o.get(t)) && !this.hasAttribute(l._$Eu(t, s)))) return;
209
+      this.C(t, e, s);
210
+    }
211
+    this.isUpdatePending === !1 && (this._$ES = this._$EP());
212
+  }
213
+  C(t, e, { useDefault: s, reflect: i, wrapped: n }, o) {
214
+    s && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(t) && (this._$Ej.set(t, o ?? e ?? this[t]), n !== !0 || o !== void 0) || (this._$AL.has(t) || (this.hasUpdated || s || (e = void 0), this._$AL.set(t, e)), i === !0 && this._$Em !== t && (this._$Eq ?? (this._$Eq = /* @__PURE__ */ new Set())).add(t));
215
+  }
216
+  async _$EP() {
217
+    this.isUpdatePending = !0;
218
+    try {
219
+      await this._$ES;
220
+    } catch (e) {
221
+      Promise.reject(e);
222
+    }
223
+    const t = this.scheduleUpdate();
224
+    return t != null && await t, !this.isUpdatePending;
225
+  }
226
+  scheduleUpdate() {
227
+    return this.performUpdate();
228
+  }
229
+  performUpdate() {
230
+    var s;
231
+    if (!this.isUpdatePending) return;
232
+    if (!this.hasUpdated) {
233
+      if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
234
+        for (const [n, o] of this._$Ep) this[n] = o;
235
+        this._$Ep = void 0;
236
+      }
237
+      const i = this.constructor.elementProperties;
238
+      if (i.size > 0) for (const [n, o] of i) {
239
+        const { wrapped: l } = o, a = this[n];
240
+        l !== !0 || this._$AL.has(n) || a === void 0 || this.C(n, void 0, o, a);
241
+      }
242
+    }
243
+    let t = !1;
244
+    const e = this._$AL;
245
+    try {
246
+      t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$EO) == null || s.forEach((i) => {
247
+        var n;
248
+        return (n = i.hostUpdate) == null ? void 0 : n.call(i);
249
+      }), this.update(e)) : this._$EM();
250
+    } catch (i) {
251
+      throw t = !1, this._$EM(), i;
252
+    }
253
+    t && this._$AE(e);
254
+  }
255
+  willUpdate(t) {
256
+  }
257
+  _$AE(t) {
258
+    var e;
259
+    (e = this._$EO) == null || e.forEach((s) => {
260
+      var i;
261
+      return (i = s.hostUpdated) == null ? void 0 : i.call(s);
262
+    }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
263
+  }
264
+  _$EM() {
265
+    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
266
+  }
267
+  get updateComplete() {
268
+    return this.getUpdateComplete();
269
+  }
270
+  getUpdateComplete() {
271
+    return this._$ES;
272
+  }
273
+  shouldUpdate(t) {
274
+    return !0;
275
+  }
276
+  update(t) {
277
+    this._$Eq && (this._$Eq = this._$Eq.forEach((e) => this._$ET(e, this[e]))), this._$EM();
278
+  }
279
+  updated(t) {
280
+  }
281
+  firstUpdated(t) {
282
+  }
283
+};
284
+E.elementStyles = [], E.shadowRootOptions = { mode: "open" }, E[C("elementProperties")] = /* @__PURE__ */ new Map(), E[C("finalized")] = /* @__PURE__ */ new Map(), L == null || L({ ReactiveElement: E }), (m.reactiveElementVersions ?? (m.reactiveElementVersions = [])).push("2.1.2");
285
+/**
286
+ * @license
287
+ * Copyright 2017 Google LLC
288
+ * SPDX-License-Identifier: BSD-3-Clause
289
+ */
290
+const P = globalThis, X = (r) => r, k = P.trustedTypes, Y = k ? k.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, lt = "$lit$", f = `lit$${Math.random().toFixed(9).slice(2)}$`, ht = "?" + f, wt = `<${ht}>`, v = document, U = () => v.createComment(""), O = (r) => r === null || typeof r != "object" && typeof r != "function", J = Array.isArray, Ct = (r) => J(r) || typeof (r == null ? void 0 : r[Symbol.iterator]) == "function", j = `[ 	
291
+\f\r]`, w = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, tt = /-->/g, et = />/g, g = RegExp(`>|${j}(?:([^\\s"'>=/]+)(${j}*=${j}*(?:[^ 	
292
+\f\r"'\`<>=]|("|')|))|$)`, "g"), st = /'/g, it = /"/g, ct = /^(?:script|style|textarea|title)$/i, Pt = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), H = Pt(1), S = Symbol.for("lit-noChange"), d = Symbol.for("lit-nothing"), rt = /* @__PURE__ */ new WeakMap(), A = v.createTreeWalker(v, 129);
293
+function dt(r, t) {
294
+  if (!J(r) || !r.hasOwnProperty("raw")) throw Error("invalid template strings array");
295
+  return Y !== void 0 ? Y.createHTML(t) : t;
296
+}
297
+const Ut = (r, t) => {
298
+  const e = r.length - 1, s = [];
299
+  let i, n = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", o = w;
300
+  for (let l = 0; l < e; l++) {
301
+    const a = r[l];
302
+    let c, u, h = -1, p = 0;
303
+    for (; p < a.length && (o.lastIndex = p, u = o.exec(a), u !== null); ) p = o.lastIndex, o === w ? u[1] === "!--" ? o = tt : u[1] !== void 0 ? o = et : u[2] !== void 0 ? (ct.test(u[2]) && (i = RegExp("</" + u[2], "g")), o = g) : u[3] !== void 0 && (o = g) : o === g ? u[0] === ">" ? (o = i ?? w, h = -1) : u[1] === void 0 ? h = -2 : (h = o.lastIndex - u[2].length, c = u[1], o = u[3] === void 0 ? g : u[3] === '"' ? it : st) : o === it || o === st ? o = g : o === tt || o === et ? o = w : (o = g, i = void 0);
304
+    const $ = o === g && r[l + 1].startsWith("/>") ? " " : "";
305
+    n += o === w ? a + wt : h >= 0 ? (s.push(c), a.slice(0, h) + lt + a.slice(h) + f + $) : a + f + (h === -2 ? l : $);
306
+  }
307
+  return [dt(r, n + (r[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
308
+};
309
+class M {
310
+  constructor({ strings: t, _$litType$: e }, s) {
311
+    let i;
312
+    this.parts = [];
313
+    let n = 0, o = 0;
314
+    const l = t.length - 1, a = this.parts, [c, u] = Ut(t, e);
315
+    if (this.el = M.createElement(c, s), A.currentNode = this.el.content, e === 2 || e === 3) {
316
+      const h = this.el.content.firstChild;
317
+      h.replaceWith(...h.childNodes);
318
+    }
319
+    for (; (i = A.nextNode()) !== null && a.length < l; ) {
320
+      if (i.nodeType === 1) {
321
+        if (i.hasAttributes()) for (const h of i.getAttributeNames()) if (h.endsWith(lt)) {
322
+          const p = u[o++], $ = i.getAttribute(h).split(f), R = /([.?@])?(.*)/.exec(p);
323
+          a.push({ type: 1, index: n, name: R[2], strings: $, ctor: R[1] === "." ? Ht : R[1] === "?" ? Mt : R[1] === "@" ? Nt : z }), i.removeAttribute(h);
324
+        } else h.startsWith(f) && (a.push({ type: 6, index: n }), i.removeAttribute(h));
325
+        if (ct.test(i.tagName)) {
326
+          const h = i.textContent.split(f), p = h.length - 1;
327
+          if (p > 0) {
328
+            i.textContent = k ? k.emptyScript : "";
329
+            for (let $ = 0; $ < p; $++) i.append(h[$], U()), A.nextNode(), a.push({ type: 2, index: ++n });
330
+            i.append(h[p], U());
331
+          }
332
+        }
333
+      } else if (i.nodeType === 8) if (i.data === ht) a.push({ type: 2, index: n });
334
+      else {
335
+        let h = -1;
336
+        for (; (h = i.data.indexOf(f, h + 1)) !== -1; ) a.push({ type: 7, index: n }), h += f.length - 1;
337
+      }
338
+      n++;
339
+    }
340
+  }
341
+  static createElement(t, e) {
342
+    const s = v.createElement("template");
343
+    return s.innerHTML = t, s;
344
+  }
345
+}
346
+function x(r, t, e = r, s) {
347
+  var o, l;
348
+  if (t === S) return t;
349
+  let i = s !== void 0 ? (o = e._$Co) == null ? void 0 : o[s] : e._$Cl;
350
+  const n = O(t) ? void 0 : t._$litDirective$;
351
+  return (i == null ? void 0 : i.constructor) !== n && ((l = i == null ? void 0 : i._$AO) == null || l.call(i, !1), n === void 0 ? i = void 0 : (i = new n(r), i._$AT(r, e, s)), s !== void 0 ? (e._$Co ?? (e._$Co = []))[s] = i : e._$Cl = i), i !== void 0 && (t = x(r, i._$AS(r, t.values), i, s)), t;
352
+}
353
+class Ot {
354
+  constructor(t, e) {
355
+    this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
356
+  }
357
+  get parentNode() {
358
+    return this._$AM.parentNode;
359
+  }
360
+  get _$AU() {
361
+    return this._$AM._$AU;
362
+  }
363
+  u(t) {
364
+    const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? v).importNode(e, !0);
365
+    A.currentNode = i;
366
+    let n = A.nextNode(), o = 0, l = 0, a = s[0];
367
+    for (; a !== void 0; ) {
368
+      if (o === a.index) {
369
+        let c;
370
+        a.type === 2 ? c = new N(n, n.nextSibling, this, t) : a.type === 1 ? c = new a.ctor(n, a.name, a.strings, this, t) : a.type === 6 && (c = new Rt(n, this, t)), this._$AV.push(c), a = s[++l];
371
+      }
372
+      o !== (a == null ? void 0 : a.index) && (n = A.nextNode(), o++);
373
+    }
374
+    return A.currentNode = v, i;
375
+  }
376
+  p(t) {
377
+    let e = 0;
378
+    for (const s of this._$AV) s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;
379
+  }
380
+}
381
+class N {
382
+  get _$AU() {
383
+    var t;
384
+    return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this._$Cv;
385
+  }
386
+  constructor(t, e, s, i) {
387
+    this.type = 2, this._$AH = d, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = i, this._$Cv = (i == null ? void 0 : i.isConnected) ?? !0;
388
+  }
389
+  get parentNode() {
390
+    let t = this._$AA.parentNode;
391
+    const e = this._$AM;
392
+    return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;
393
+  }
394
+  get startNode() {
395
+    return this._$AA;
396
+  }
397
+  get endNode() {
398
+    return this._$AB;
399
+  }
400
+  _$AI(t, e = this) {
401
+    t = x(this, t, e), O(t) ? t === d || t == null || t === "" ? (this._$AH !== d && this._$AR(), this._$AH = d) : t !== this._$AH && t !== S && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : Ct(t) ? this.k(t) : this._(t);
402
+  }
403
+  O(t) {
404
+    return this._$AA.parentNode.insertBefore(t, this._$AB);
405
+  }
406
+  T(t) {
407
+    this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
408
+  }
409
+  _(t) {
410
+    this._$AH !== d && O(this._$AH) ? this._$AA.nextSibling.data = t : this.T(v.createTextNode(t)), this._$AH = t;
411
+  }
412
+  $(t) {
413
+    var n;
414
+    const { values: e, _$litType$: s } = t, i = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = M.createElement(dt(s.h, s.h[0]), this.options)), s);
415
+    if (((n = this._$AH) == null ? void 0 : n._$AD) === i) this._$AH.p(e);
416
+    else {
417
+      const o = new Ot(i, this), l = o.u(this.options);
418
+      o.p(e), this.T(l), this._$AH = o;
419
+    }
420
+  }
421
+  _$AC(t) {
422
+    let e = rt.get(t.strings);
423
+    return e === void 0 && rt.set(t.strings, e = new M(t)), e;
424
+  }
425
+  k(t) {
426
+    J(this._$AH) || (this._$AH = [], this._$AR());
427
+    const e = this._$AH;
428
+    let s, i = 0;
429
+    for (const n of t) i === e.length ? e.push(s = new N(this.O(U()), this.O(U()), this, this.options)) : s = e[i], s._$AI(n), i++;
430
+    i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);
431
+  }
432
+  _$AR(t = this._$AA.nextSibling, e) {
433
+    var s;
434
+    for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t !== this._$AB; ) {
435
+      const i = X(t).nextSibling;
436
+      X(t).remove(), t = i;
437
+    }
438
+  }
439
+  setConnected(t) {
440
+    var e;
441
+    this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));
442
+  }
443
+}
444
+class z {
445
+  get tagName() {
446
+    return this.element.tagName;
447
+  }
448
+  get _$AU() {
449
+    return this._$AM._$AU;
450
+  }
451
+  constructor(t, e, s, i, n) {
452
+    this.type = 1, this._$AH = d, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = n, s.length > 2 || s[0] !== "" || s[1] !== "" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = d;
453
+  }
454
+  _$AI(t, e = this, s, i) {
455
+    const n = this.strings;
456
+    let o = !1;
457
+    if (n === void 0) t = x(this, t, e, 0), o = !O(t) || t !== this._$AH && t !== S, o && (this._$AH = t);
458
+    else {
459
+      const l = t;
460
+      let a, c;
461
+      for (t = n[0], a = 0; a < n.length - 1; a++) c = x(this, l[s + a], e, a), c === S && (c = this._$AH[a]), o || (o = !O(c) || c !== this._$AH[a]), c === d ? t = d : t !== d && (t += (c ?? "") + n[a + 1]), this._$AH[a] = c;
462
+    }
463
+    o && !i && this.j(t);
464
+  }
465
+  j(t) {
466
+    t === d ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
467
+  }
468
+}
469
+class Ht extends z {
470
+  constructor() {
471
+    super(...arguments), this.type = 3;
472
+  }
473
+  j(t) {
474
+    this.element[this.name] = t === d ? void 0 : t;
475
+  }
476
+}
477
+class Mt extends z {
478
+  constructor() {
479
+    super(...arguments), this.type = 4;
480
+  }
481
+  j(t) {
482
+    this.element.toggleAttribute(this.name, !!t && t !== d);
483
+  }
484
+}
485
+class Nt extends z {
486
+  constructor(t, e, s, i, n) {
487
+    super(t, e, s, i, n), this.type = 5;
488
+  }
489
+  _$AI(t, e = this) {
490
+    if ((t = x(this, t, e, 0) ?? d) === S) return;
491
+    const s = this._$AH, i = t === d && s !== d || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, n = t !== d && (s === d || i);
492
+    i && this.element.removeEventListener(this.name, this, s), n && this.element.addEventListener(this.name, this, t), this._$AH = t;
493
+  }
494
+  handleEvent(t) {
495
+    var e;
496
+    typeof this._$AH == "function" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);
497
+  }
498
+}
499
+class Rt {
500
+  constructor(t, e, s) {
501
+    this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
502
+  }
503
+  get _$AU() {
504
+    return this._$AM._$AU;
505
+  }
506
+  _$AI(t) {
507
+    x(this, t);
508
+  }
509
+}
510
+const I = P.litHtmlPolyfillSupport;
511
+I == null || I(M, N), (P.litHtmlVersions ?? (P.litHtmlVersions = [])).push("3.3.2");
512
+const Tt = (r, t, e) => {
513
+  const s = (e == null ? void 0 : e.renderBefore) ?? t;
514
+  let i = s._$litPart$;
515
+  if (i === void 0) {
516
+    const n = (e == null ? void 0 : e.renderBefore) ?? null;
517
+    s._$litPart$ = i = new N(t.insertBefore(U(), n), n, void 0, e ?? {});
518
+  }
519
+  return i._$AI(r), i;
520
+};
521
+/**
522
+ * @license
523
+ * Copyright 2017 Google LLC
524
+ * SPDX-License-Identifier: BSD-3-Clause
525
+ */
526
+const y = globalThis;
527
+class _ extends E {
528
+  constructor() {
529
+    super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
530
+  }
531
+  createRenderRoot() {
532
+    var e;
533
+    const t = super.createRenderRoot();
534
+    return (e = this.renderOptions).renderBefore ?? (e.renderBefore = t.firstChild), t;
535
+  }
536
+  update(t) {
537
+    const e = this.render();
538
+    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = Tt(e, this.renderRoot, this.renderOptions);
539
+  }
540
+  connectedCallback() {
541
+    var t;
542
+    super.connectedCallback(), (t = this._$Do) == null || t.setConnected(!0);
543
+  }
544
+  disconnectedCallback() {
545
+    var t;
546
+    super.disconnectedCallback(), (t = this._$Do) == null || t.setConnected(!1);
547
+  }
548
+  render() {
549
+    return S;
550
+  }
551
+}
552
+var ot;
553
+_._$litElement$ = !0, _.finalized = !0, (ot = y.litElementHydrateSupport) == null || ot.call(y, { LitElement: _ });
554
+const B = y.litElementPolyfillSupport;
555
+B == null || B({ LitElement: _ });
556
+(y.litElementVersions ?? (y.litElementVersions = [])).push("4.2.2");
557
+class W extends _ {
558
+  render() {
559
+    return H`
560
+      ${this.imageUrl ? H`<img class="card-image" src="${this.imageUrl}" alt="${this.imageAlt || ""}" />` : ""}
561
+
562
+      <slot name="header" class="card-header-slot"></slot>
563
+
564
+      <div class="card-body">
565
+        <slot></slot>
566
+      </div>
567
+
568
+      <slot name="footer" class="card-footer-slot"></slot>
569
+    `;
570
+  }
571
+}
572
+b(W, "styles", D`
573
+    :host {
574
+      display: block;
575
+      border: 1px solid var(--luumicore-border-color, #ddd);
576
+      border-radius: var(--luumicore-border-radius, 8px);
577
+      overflow: hidden;
578
+      background-color: var(--luumicore-card-bg, #fff);
579
+      box-shadow: var(--luumicore-shadow, 0 2px 4px rgba(0,0,0,0.1));
580
+    }
581
+
582
+    .card-image {
583
+      width: 100%;
584
+      height: auto;
585
+      display: block;
586
+    }
587
+
588
+    .card-header {
589
+      padding: var(--luumicore-spacing, 16px);
590
+      border-bottom: 1px solid var(--luumicore-border-color, #ddd);
591
+      font-weight: bold;
592
+      background-color: var(--luumicore-header-bg, #f8f9fa);
593
+    }
594
+
595
+    .card-body {
596
+      padding: var(--luumicore-spacing, 16px);
597
+    }
598
+
599
+    .card-footer {
600
+      padding: var(--luumicore-spacing, 16px);
601
+      border-top: 1px solid var(--luumicore-border-color, #ddd);
602
+      background-color: var(--luumicore-footer-bg, #f8f9fa);
603
+    }
604
+  `), b(W, "properties", {
605
+  imageUrl: { type: String, attribute: "image-url" },
606
+  imageAlt: { type: String, attribute: "image-alt" }
607
+});
608
+customElements.define("luumicore-card", W);
609
+class ut extends _ {
610
+  render() {
611
+    return H`
612
+      <ul>
613
+        <slot></slot>
614
+      </ul>
615
+    `;
616
+  }
617
+}
618
+b(ut, "styles", D`
619
+    :host {
620
+      display: block;
621
+    }
622
+
623
+    ul {
624
+      list-style: none;
625
+      padding: 0;
626
+      margin: 0;
627
+      border: 1px solid var(--luumicore-border-color, #ddd);
628
+      border-radius: var(--luumicore-border-radius, 8px);
629
+      overflow: hidden;
630
+    }
631
+  `);
632
+customElements.define("luumicore-list", ut);
633
+class pt extends _ {
634
+  render() {
635
+    return H`
636
+      <div class="item-container">
637
+        <div class="content">
638
+          <slot></slot>
639
+        </div>
640
+
641
+        <div class="actions">
642
+          <slot name="actions"></slot>
643
+        </div>
644
+
645
+        <div class="main-action">
646
+          <slot name="main-action"></slot>
647
+        </div>
648
+      </div>
649
+    `;
650
+  }
651
+}
652
+b(pt, "styles", D`
653
+    :host {
654
+      display: block;
655
+      border-bottom: 1px solid var(--luumicore-border-color, #ddd);
656
+      background-color: var(--luumicore-list-bg, #fff);
657
+    }
658
+
659
+    :host(:last-child) {
660
+      border-bottom: none;
661
+    }
662
+
663
+    .item-container {
664
+      display: flex;
665
+      align-items: center;
666
+      padding: var(--luumicore-spacing, 12px) var(--luumicore-spacing, 16px);
667
+      gap: var(--luumicore-spacing, 16px);
668
+    }
669
+
670
+    .content {
671
+      flex: 1;
672
+      min-width: 0; /* Allow text truncation */
673
+    }
674
+
675
+    .actions {
676
+      display: flex;
677
+      align-items: center;
678
+      gap: 8px;
679
+    }
680
+
681
+    .main-action {
682
+      margin-left: auto;
683
+    }
684
+  `);
685
+customElements.define("luumicore-list-item", pt);
686
+console.log("luumiCORE Core Bundle initialized");
687
+class $t extends _ {
688
+  render() {
689
+    return H`<p>Hello from luumiCORE!</p>`;
690
+  }
691
+}
692
+b($t, "styles", D`
693
+    :host {
694
+      display: block;
695
+      padding: 16px;
696
+      color: var(--luumicore-text-color, black);
697
+      border: 1px solid var(--luumicore-primary, blue);
698
+    }
699
+  `);
700
+customElements.define("luumicore-element", $t);
701
+export {
702
+  $t as LuumicoreElement
703
+};