@campminder/components 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +198 -0
  2. package/dist/index.d.ts +16 -0
  3. package/dist/index.js +11 -0
  4. package/dist/menu-tree.upstream.test.d.ts +1 -0
  5. package/dist/property-B5JHHBCF.js +603 -0
  6. package/dist/side-nav/MegaMenu.d.ts +50 -0
  7. package/dist/side-nav/MegaMenu.styles.d.ts +33 -0
  8. package/dist/side-nav/SideNav.d.ts +89 -0
  9. package/dist/side-nav/SideNav.styles.d.ts +42 -0
  10. package/dist/side-nav/Utils/helpers.d.ts +57 -0
  11. package/dist/side-nav/assets/MegaMenuIcons/AccountsGrayIcon.d.ts +2 -0
  12. package/dist/side-nav/assets/MegaMenuIcons/AdminGrayIcon.d.ts +2 -0
  13. package/dist/side-nav/assets/MegaMenuIcons/AlumniGrayIcon.d.ts +2 -0
  14. package/dist/side-nav/assets/MegaMenuIcons/CampInTouchGrayIcon.d.ts +2 -0
  15. package/dist/side-nav/assets/MegaMenuIcons/CamperGrayIcon.d.ts +2 -0
  16. package/dist/side-nav/assets/MegaMenuIcons/CommunicationGrayIcon.d.ts +2 -0
  17. package/dist/side-nav/assets/MegaMenuIcons/DefaultMMIcon.d.ts +2 -0
  18. package/dist/side-nav/assets/MegaMenuIcons/FinancialGrayIcon.d.ts +2 -0
  19. package/dist/side-nav/assets/MegaMenuIcons/MedicalGrayIcon.d.ts +2 -0
  20. package/dist/side-nav/assets/MegaMenuIcons/OpenInNewIcon.d.ts +2 -0
  21. package/dist/side-nav/assets/MegaMenuIcons/ReportsGrayIcon.d.ts +2 -0
  22. package/dist/side-nav/assets/MegaMenuIcons/SchedulingGrayIcon.d.ts +2 -0
  23. package/dist/side-nav/assets/MegaMenuIcons/StaffGrayIcon.d.ts +2 -0
  24. package/dist/side-nav/assets/MegaMenuIcons/TravelGrayIcon.d.ts +2 -0
  25. package/dist/side-nav/assets/MegaMenuIcons/index.d.ts +16 -0
  26. package/dist/side-nav/assets/SideNavIcons/AccountsIcon.d.ts +2 -0
  27. package/dist/side-nav/assets/SideNavIcons/AdminIcon.d.ts +2 -0
  28. package/dist/side-nav/assets/SideNavIcons/AlumniIcon.d.ts +2 -0
  29. package/dist/side-nav/assets/SideNavIcons/CampInTouch.d.ts +2 -0
  30. package/dist/side-nav/assets/SideNavIcons/CamperIcon.d.ts +2 -0
  31. package/dist/side-nav/assets/SideNavIcons/ChevronRightIcon.d.ts +2 -0
  32. package/dist/side-nav/assets/SideNavIcons/CloseIcon.d.ts +2 -0
  33. package/dist/side-nav/assets/SideNavIcons/CommunicationIcon.d.ts +2 -0
  34. package/dist/side-nav/assets/SideNavIcons/DefaultNavIcon.d.ts +2 -0
  35. package/dist/side-nav/assets/SideNavIcons/FinancialIcon.d.ts +2 -0
  36. package/dist/side-nav/assets/SideNavIcons/HomeIcon.d.ts +2 -0
  37. package/dist/side-nav/assets/SideNavIcons/MedicalIcon.d.ts +2 -0
  38. package/dist/side-nav/assets/SideNavIcons/MenuCollapseIcon.d.ts +2 -0
  39. package/dist/side-nav/assets/SideNavIcons/MenuIcon.d.ts +10 -0
  40. package/dist/side-nav/assets/SideNavIcons/ReportsIcon.d.ts +2 -0
  41. package/dist/side-nav/assets/SideNavIcons/SchedulingIcon.d.ts +2 -0
  42. package/dist/side-nav/assets/SideNavIcons/StaffIcon.d.ts +2 -0
  43. package/dist/side-nav/assets/SideNavIcons/TravelIcon.d.ts +2 -0
  44. package/dist/side-nav/assets/SideNavIcons/index.d.ts +20 -0
  45. package/dist/side-nav/icon-map.d.ts +17 -0
  46. package/dist/side-nav/index.d.ts +5 -0
  47. package/dist/side-nav/mega-menu-icon-map.d.ts +20 -0
  48. package/dist/side-nav/mega-menu-layout.d.ts +9 -0
  49. package/dist/side-nav/mega-menu.test.d.ts +1 -0
  50. package/dist/side-nav/side-nav.test.d.ts +1 -0
  51. package/dist/side-nav.d.ts +1 -0
  52. package/dist/side-nav.js +1198 -0
  53. package/dist/state-Ns9O6R8g.js +12 -0
  54. package/dist/super-user-banner/SuperUserBanner.d.ts +43 -0
  55. package/dist/super-user-banner/SuperUserBanner.styles.d.ts +21 -0
  56. package/dist/super-user-banner/index.d.ts +2 -0
  57. package/dist/super-user-banner/super-user-banner.test.d.ts +1 -0
  58. package/dist/super-user-banner.d.ts +1 -0
  59. package/dist/super-user-banner.js +178 -0
  60. package/dist/top-bar/TopBar.d.ts +39 -0
  61. package/dist/top-bar/TopBar.styles.d.ts +1 -0
  62. package/dist/top-bar/Utils/helpers.d.ts +3 -0
  63. package/dist/top-bar/Utils/safe-url.d.ts +56 -0
  64. package/dist/top-bar/Utils/safe-url.test.d.ts +1 -0
  65. package/dist/top-bar/Utils/types.d.ts +50 -0
  66. package/dist/top-bar/assets/TopBarIcons/CheckIcon.d.ts +2 -0
  67. package/dist/top-bar/assets/TopBarIcons/CrossIcon.d.ts +2 -0
  68. package/dist/top-bar/assets/TopBarIcons/DropDownIcon.d.ts +2 -0
  69. package/dist/top-bar/assets/TopBarIcons/InfoIcon.d.ts +2 -0
  70. package/dist/top-bar/assets/TopBarIcons/OpenInNewIcon.d.ts +2 -0
  71. package/dist/top-bar/assets/TopBarIcons/index.d.ts +7 -0
  72. package/dist/top-bar/index.d.ts +3 -0
  73. package/dist/top-bar/top-bar.test.d.ts +1 -0
  74. package/dist/top-bar.d.ts +1 -0
  75. package/dist/top-bar.js +615 -0
  76. package/package.json +52 -0
@@ -0,0 +1,603 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */
6
+ const H = globalThis, I = H.ShadowRoot && (H.ShadyCSS === void 0 || H.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, B = Symbol(), W = /* @__PURE__ */ new WeakMap();
7
+ let it = class {
8
+ constructor(t, e, s) {
9
+ if (this._$cssResult$ = !0, s !== B) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
10
+ this.cssText = t, this.t = e;
11
+ }
12
+ get styleSheet() {
13
+ let t = this.o;
14
+ const e = this.t;
15
+ if (I && t === void 0) {
16
+ const s = e !== void 0 && e.length === 1;
17
+ s && (t = W.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && W.set(e, t));
18
+ }
19
+ return t;
20
+ }
21
+ toString() {
22
+ return this.cssText;
23
+ }
24
+ };
25
+ const at = (r) => new it(typeof r == "string" ? r : r + "", void 0, B), Ot = (r, ...t) => {
26
+ const e = r.length === 1 ? r[0] : t.reduce((s, i, o) => s + ((n) => {
27
+ if (n._$cssResult$ === !0) return n.cssText;
28
+ if (typeof n == "number") return n;
29
+ throw Error("Value passed to 'css' function must be a 'css' function result: " + n + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
30
+ })(i) + r[o + 1], r[0]);
31
+ return new it(e, r, B);
32
+ }, lt = (r, t) => {
33
+ if (I) r.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
34
+ else for (const e of t) {
35
+ const s = document.createElement("style"), i = H.litNonce;
36
+ i !== void 0 && s.setAttribute("nonce", i), s.textContent = e.cssText, r.appendChild(s);
37
+ }
38
+ }, Z = I ? (r) => r : (r) => r instanceof CSSStyleSheet ? ((t) => {
39
+ let e = "";
40
+ for (const s of t.cssRules) e += s.cssText;
41
+ return at(e);
42
+ })(r) : r;
43
+ /**
44
+ * @license
45
+ * Copyright 2017 Google LLC
46
+ * SPDX-License-Identifier: BSD-3-Clause
47
+ */
48
+ const { is: ct, defineProperty: dt, getOwnPropertyDescriptor: pt, getOwnPropertyNames: ut, getOwnPropertySymbols: $t, getPrototypeOf: _t } = Object, f = globalThis, J = f.trustedTypes, ft = J ? J.emptyScript : "", D = f.reactiveElementPolyfillSupport, w = (r, t) => r, N = { toAttribute(r, t) {
49
+ switch (t) {
50
+ case Boolean:
51
+ r = r ? ft : null;
52
+ break;
53
+ case Object:
54
+ case Array:
55
+ r = r == null ? r : JSON.stringify(r);
56
+ }
57
+ return r;
58
+ }, fromAttribute(r, t) {
59
+ let e = r;
60
+ switch (t) {
61
+ case Boolean:
62
+ e = r !== null;
63
+ break;
64
+ case Number:
65
+ e = r === null ? null : Number(r);
66
+ break;
67
+ case Object:
68
+ case Array:
69
+ try {
70
+ e = JSON.parse(r);
71
+ } catch {
72
+ e = null;
73
+ }
74
+ }
75
+ return e;
76
+ } }, q = (r, t) => !ct(r, t), K = { attribute: !0, type: String, converter: N, reflect: !1, useDefault: !1, hasChanged: q };
77
+ Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), f.litPropertyMetadata ?? (f.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
78
+ let v = class extends HTMLElement {
79
+ static addInitializer(t) {
80
+ this._$Ei(), (this.l ?? (this.l = [])).push(t);
81
+ }
82
+ static get observedAttributes() {
83
+ return this.finalize(), this._$Eh && [...this._$Eh.keys()];
84
+ }
85
+ static createProperty(t, e = K) {
86
+ 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) {
87
+ const s = Symbol(), i = this.getPropertyDescriptor(t, s, e);
88
+ i !== void 0 && dt(this.prototype, t, i);
89
+ }
90
+ }
91
+ static getPropertyDescriptor(t, e, s) {
92
+ const { get: i, set: o } = pt(this.prototype, t) ?? { get() {
93
+ return this[e];
94
+ }, set(n) {
95
+ this[e] = n;
96
+ } };
97
+ return { get: i, set(n) {
98
+ const a = i == null ? void 0 : i.call(this);
99
+ o == null || o.call(this, n), this.requestUpdate(t, a, s);
100
+ }, configurable: !0, enumerable: !0 };
101
+ }
102
+ static getPropertyOptions(t) {
103
+ return this.elementProperties.get(t) ?? K;
104
+ }
105
+ static _$Ei() {
106
+ if (this.hasOwnProperty(w("elementProperties"))) return;
107
+ const t = _t(this);
108
+ t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
109
+ }
110
+ static finalize() {
111
+ if (this.hasOwnProperty(w("finalized"))) return;
112
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(w("properties"))) {
113
+ const e = this.properties, s = [...ut(e), ...$t(e)];
114
+ for (const i of s) this.createProperty(i, e[i]);
115
+ }
116
+ const t = this[Symbol.metadata];
117
+ if (t !== null) {
118
+ const e = litPropertyMetadata.get(t);
119
+ if (e !== void 0) for (const [s, i] of e) this.elementProperties.set(s, i);
120
+ }
121
+ this._$Eh = /* @__PURE__ */ new Map();
122
+ for (const [e, s] of this.elementProperties) {
123
+ const i = this._$Eu(e, s);
124
+ i !== void 0 && this._$Eh.set(i, e);
125
+ }
126
+ this.elementStyles = this.finalizeStyles(this.styles);
127
+ }
128
+ static finalizeStyles(t) {
129
+ const e = [];
130
+ if (Array.isArray(t)) {
131
+ const s = new Set(t.flat(1 / 0).reverse());
132
+ for (const i of s) e.unshift(Z(i));
133
+ } else t !== void 0 && e.push(Z(t));
134
+ return e;
135
+ }
136
+ static _$Eu(t, e) {
137
+ const s = e.attribute;
138
+ return s === !1 ? void 0 : typeof s == "string" ? s : typeof t == "string" ? t.toLowerCase() : void 0;
139
+ }
140
+ constructor() {
141
+ super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
142
+ }
143
+ _$Ev() {
144
+ var t;
145
+ 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));
146
+ }
147
+ addController(t) {
148
+ var e;
149
+ (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));
150
+ }
151
+ removeController(t) {
152
+ var e;
153
+ (e = this._$EO) == null || e.delete(t);
154
+ }
155
+ _$E_() {
156
+ const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
157
+ for (const s of e.keys()) this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);
158
+ t.size > 0 && (this._$Ep = t);
159
+ }
160
+ createRenderRoot() {
161
+ const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
162
+ return lt(t, this.constructor.elementStyles), t;
163
+ }
164
+ connectedCallback() {
165
+ var t;
166
+ this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$EO) == null || t.forEach((e) => {
167
+ var s;
168
+ return (s = e.hostConnected) == null ? void 0 : s.call(e);
169
+ });
170
+ }
171
+ enableUpdating(t) {
172
+ }
173
+ disconnectedCallback() {
174
+ var t;
175
+ (t = this._$EO) == null || t.forEach((e) => {
176
+ var s;
177
+ return (s = e.hostDisconnected) == null ? void 0 : s.call(e);
178
+ });
179
+ }
180
+ attributeChangedCallback(t, e, s) {
181
+ this._$AK(t, s);
182
+ }
183
+ _$ET(t, e) {
184
+ var o;
185
+ const s = this.constructor.elementProperties.get(t), i = this.constructor._$Eu(t, s);
186
+ if (i !== void 0 && s.reflect === !0) {
187
+ const n = (((o = s.converter) == null ? void 0 : o.toAttribute) !== void 0 ? s.converter : N).toAttribute(e, s.type);
188
+ this._$Em = t, n == null ? this.removeAttribute(i) : this.setAttribute(i, n), this._$Em = null;
189
+ }
190
+ }
191
+ _$AK(t, e) {
192
+ var o, n;
193
+ const s = this.constructor, i = s._$Eh.get(t);
194
+ if (i !== void 0 && this._$Em !== i) {
195
+ const a = s.getPropertyOptions(i), h = typeof a.converter == "function" ? { fromAttribute: a.converter } : ((o = a.converter) == null ? void 0 : o.fromAttribute) !== void 0 ? a.converter : N;
196
+ this._$Em = i;
197
+ const c = h.fromAttribute(e, a.type);
198
+ this[i] = c ?? ((n = this._$Ej) == null ? void 0 : n.get(i)) ?? c, this._$Em = null;
199
+ }
200
+ }
201
+ requestUpdate(t, e, s, i = !1, o) {
202
+ var n;
203
+ if (t !== void 0) {
204
+ const a = this.constructor;
205
+ if (i === !1 && (o = this[t]), s ?? (s = a.getPropertyOptions(t)), !((s.hasChanged ?? q)(o, e) || s.useDefault && s.reflect && o === ((n = this._$Ej) == null ? void 0 : n.get(t)) && !this.hasAttribute(a._$Eu(t, s)))) return;
206
+ this.C(t, e, s);
207
+ }
208
+ this.isUpdatePending === !1 && (this._$ES = this._$EP());
209
+ }
210
+ C(t, e, { useDefault: s, reflect: i, wrapped: o }, n) {
211
+ s && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(t) && (this._$Ej.set(t, n ?? e ?? this[t]), o !== !0 || n !== 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));
212
+ }
213
+ async _$EP() {
214
+ this.isUpdatePending = !0;
215
+ try {
216
+ await this._$ES;
217
+ } catch (e) {
218
+ Promise.reject(e);
219
+ }
220
+ const t = this.scheduleUpdate();
221
+ return t != null && await t, !this.isUpdatePending;
222
+ }
223
+ scheduleUpdate() {
224
+ return this.performUpdate();
225
+ }
226
+ performUpdate() {
227
+ var s;
228
+ if (!this.isUpdatePending) return;
229
+ if (!this.hasUpdated) {
230
+ if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
231
+ for (const [o, n] of this._$Ep) this[o] = n;
232
+ this._$Ep = void 0;
233
+ }
234
+ const i = this.constructor.elementProperties;
235
+ if (i.size > 0) for (const [o, n] of i) {
236
+ const { wrapped: a } = n, h = this[o];
237
+ a !== !0 || this._$AL.has(o) || h === void 0 || this.C(o, void 0, n, h);
238
+ }
239
+ }
240
+ let t = !1;
241
+ const e = this._$AL;
242
+ try {
243
+ t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$EO) == null || s.forEach((i) => {
244
+ var o;
245
+ return (o = i.hostUpdate) == null ? void 0 : o.call(i);
246
+ }), this.update(e)) : this._$EM();
247
+ } catch (i) {
248
+ throw t = !1, this._$EM(), i;
249
+ }
250
+ t && this._$AE(e);
251
+ }
252
+ willUpdate(t) {
253
+ }
254
+ _$AE(t) {
255
+ var e;
256
+ (e = this._$EO) == null || e.forEach((s) => {
257
+ var i;
258
+ return (i = s.hostUpdated) == null ? void 0 : i.call(s);
259
+ }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
260
+ }
261
+ _$EM() {
262
+ this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
263
+ }
264
+ get updateComplete() {
265
+ return this.getUpdateComplete();
266
+ }
267
+ getUpdateComplete() {
268
+ return this._$ES;
269
+ }
270
+ shouldUpdate(t) {
271
+ return !0;
272
+ }
273
+ update(t) {
274
+ this._$Eq && (this._$Eq = this._$Eq.forEach((e) => this._$ET(e, this[e]))), this._$EM();
275
+ }
276
+ updated(t) {
277
+ }
278
+ firstUpdated(t) {
279
+ }
280
+ };
281
+ v.elementStyles = [], v.shadowRootOptions = { mode: "open" }, v[w("elementProperties")] = /* @__PURE__ */ new Map(), v[w("finalized")] = /* @__PURE__ */ new Map(), D == null || D({ ReactiveElement: v }), (f.reactiveElementVersions ?? (f.reactiveElementVersions = [])).push("2.1.2");
282
+ /**
283
+ * @license
284
+ * Copyright 2017 Google LLC
285
+ * SPDX-License-Identifier: BSD-3-Clause
286
+ */
287
+ const C = globalThis, F = (r) => r, R = C.trustedTypes, G = R ? R.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, rt = "$lit$", _ = `lit$${Math.random().toFixed(9).slice(2)}$`, nt = "?" + _, At = `<${nt}>`, g = document, P = () => g.createComment(""), U = (r) => r === null || typeof r != "object" && typeof r != "function", V = Array.isArray, mt = (r) => V(r) || typeof (r == null ? void 0 : r[Symbol.iterator]) == "function", j = `[
288
+ \f\r]`, b = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, Q = /-->/g, X = />/g, A = RegExp(`>|${j}(?:([^\\s"'>=/]+)(${j}*=${j}*(?:[^
289
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), Y = /'/g, tt = /"/g, ot = /^(?:script|style|textarea|title)$/i, yt = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), Ht = yt(1), E = Symbol.for("lit-noChange"), d = Symbol.for("lit-nothing"), et = /* @__PURE__ */ new WeakMap(), m = g.createTreeWalker(g, 129);
290
+ function ht(r, t) {
291
+ if (!V(r) || !r.hasOwnProperty("raw")) throw Error("invalid template strings array");
292
+ return G !== void 0 ? G.createHTML(t) : t;
293
+ }
294
+ const gt = (r, t) => {
295
+ const e = r.length - 1, s = [];
296
+ let i, o = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", n = b;
297
+ for (let a = 0; a < e; a++) {
298
+ const h = r[a];
299
+ let c, p, l = -1, u = 0;
300
+ for (; u < h.length && (n.lastIndex = u, p = n.exec(h), p !== null); ) u = n.lastIndex, n === b ? p[1] === "!--" ? n = Q : p[1] !== void 0 ? n = X : p[2] !== void 0 ? (ot.test(p[2]) && (i = RegExp("</" + p[2], "g")), n = A) : p[3] !== void 0 && (n = A) : n === A ? p[0] === ">" ? (n = i ?? b, l = -1) : p[1] === void 0 ? l = -2 : (l = n.lastIndex - p[2].length, c = p[1], n = p[3] === void 0 ? A : p[3] === '"' ? tt : Y) : n === tt || n === Y ? n = A : n === Q || n === X ? n = b : (n = A, i = void 0);
301
+ const $ = n === A && r[a + 1].startsWith("/>") ? " " : "";
302
+ o += n === b ? h + At : l >= 0 ? (s.push(c), h.slice(0, l) + rt + h.slice(l) + _ + $) : h + _ + (l === -2 ? a : $);
303
+ }
304
+ return [ht(r, o + (r[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
305
+ };
306
+ class x {
307
+ constructor({ strings: t, _$litType$: e }, s) {
308
+ let i;
309
+ this.parts = [];
310
+ let o = 0, n = 0;
311
+ const a = t.length - 1, h = this.parts, [c, p] = gt(t, e);
312
+ if (this.el = x.createElement(c, s), m.currentNode = this.el.content, e === 2 || e === 3) {
313
+ const l = this.el.content.firstChild;
314
+ l.replaceWith(...l.childNodes);
315
+ }
316
+ for (; (i = m.nextNode()) !== null && h.length < a; ) {
317
+ if (i.nodeType === 1) {
318
+ if (i.hasAttributes()) for (const l of i.getAttributeNames()) if (l.endsWith(rt)) {
319
+ const u = p[n++], $ = i.getAttribute(l).split(_), M = /([.?@])?(.*)/.exec(u);
320
+ h.push({ type: 1, index: o, name: M[2], strings: $, ctor: M[1] === "." ? Et : M[1] === "?" ? St : M[1] === "@" ? bt : k }), i.removeAttribute(l);
321
+ } else l.startsWith(_) && (h.push({ type: 6, index: o }), i.removeAttribute(l));
322
+ if (ot.test(i.tagName)) {
323
+ const l = i.textContent.split(_), u = l.length - 1;
324
+ if (u > 0) {
325
+ i.textContent = R ? R.emptyScript : "";
326
+ for (let $ = 0; $ < u; $++) i.append(l[$], P()), m.nextNode(), h.push({ type: 2, index: ++o });
327
+ i.append(l[u], P());
328
+ }
329
+ }
330
+ } else if (i.nodeType === 8) if (i.data === nt) h.push({ type: 2, index: o });
331
+ else {
332
+ let l = -1;
333
+ for (; (l = i.data.indexOf(_, l + 1)) !== -1; ) h.push({ type: 7, index: o }), l += _.length - 1;
334
+ }
335
+ o++;
336
+ }
337
+ }
338
+ static createElement(t, e) {
339
+ const s = g.createElement("template");
340
+ return s.innerHTML = t, s;
341
+ }
342
+ }
343
+ function S(r, t, e = r, s) {
344
+ var n, a;
345
+ if (t === E) return t;
346
+ let i = s !== void 0 ? (n = e._$Co) == null ? void 0 : n[s] : e._$Cl;
347
+ const o = U(t) ? void 0 : t._$litDirective$;
348
+ return (i == null ? void 0 : i.constructor) !== o && ((a = i == null ? void 0 : i._$AO) == null || a.call(i, !1), o === void 0 ? i = void 0 : (i = new o(r), i._$AT(r, e, s)), s !== void 0 ? (e._$Co ?? (e._$Co = []))[s] = i : e._$Cl = i), i !== void 0 && (t = S(r, i._$AS(r, t.values), i, s)), t;
349
+ }
350
+ class vt {
351
+ constructor(t, e) {
352
+ this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
353
+ }
354
+ get parentNode() {
355
+ return this._$AM.parentNode;
356
+ }
357
+ get _$AU() {
358
+ return this._$AM._$AU;
359
+ }
360
+ u(t) {
361
+ const { el: { content: e }, parts: s } = this._$AD, i = ((t == null ? void 0 : t.creationScope) ?? g).importNode(e, !0);
362
+ m.currentNode = i;
363
+ let o = m.nextNode(), n = 0, a = 0, h = s[0];
364
+ for (; h !== void 0; ) {
365
+ if (n === h.index) {
366
+ let c;
367
+ h.type === 2 ? c = new O(o, o.nextSibling, this, t) : h.type === 1 ? c = new h.ctor(o, h.name, h.strings, this, t) : h.type === 6 && (c = new wt(o, this, t)), this._$AV.push(c), h = s[++a];
368
+ }
369
+ n !== (h == null ? void 0 : h.index) && (o = m.nextNode(), n++);
370
+ }
371
+ return m.currentNode = g, i;
372
+ }
373
+ p(t) {
374
+ let e = 0;
375
+ 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
+ }
377
+ }
378
+ class O {
379
+ get _$AU() {
380
+ var t;
381
+ return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this._$Cv;
382
+ }
383
+ constructor(t, e, s, i) {
384
+ 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;
385
+ }
386
+ get parentNode() {
387
+ let t = this._$AA.parentNode;
388
+ const e = this._$AM;
389
+ return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;
390
+ }
391
+ get startNode() {
392
+ return this._$AA;
393
+ }
394
+ get endNode() {
395
+ return this._$AB;
396
+ }
397
+ _$AI(t, e = this) {
398
+ t = S(this, t, e), U(t) ? t === d || t == null || t === "" ? (this._$AH !== d && this._$AR(), this._$AH = d) : t !== this._$AH && t !== E && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : mt(t) ? this.k(t) : this._(t);
399
+ }
400
+ O(t) {
401
+ return this._$AA.parentNode.insertBefore(t, this._$AB);
402
+ }
403
+ T(t) {
404
+ this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
405
+ }
406
+ _(t) {
407
+ this._$AH !== d && U(this._$AH) ? this._$AA.nextSibling.data = t : this.T(g.createTextNode(t)), this._$AH = t;
408
+ }
409
+ $(t) {
410
+ var o;
411
+ const { values: e, _$litType$: s } = t, i = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = x.createElement(ht(s.h, s.h[0]), this.options)), s);
412
+ if (((o = this._$AH) == null ? void 0 : o._$AD) === i) this._$AH.p(e);
413
+ else {
414
+ const n = new vt(i, this), a = n.u(this.options);
415
+ n.p(e), this.T(a), this._$AH = n;
416
+ }
417
+ }
418
+ _$AC(t) {
419
+ let e = et.get(t.strings);
420
+ return e === void 0 && et.set(t.strings, e = new x(t)), e;
421
+ }
422
+ k(t) {
423
+ V(this._$AH) || (this._$AH = [], this._$AR());
424
+ const e = this._$AH;
425
+ let s, i = 0;
426
+ for (const o of t) i === e.length ? e.push(s = new O(this.O(P()), this.O(P()), this, this.options)) : s = e[i], s._$AI(o), i++;
427
+ i < e.length && (this._$AR(s && s._$AB.nextSibling, i), e.length = i);
428
+ }
429
+ _$AR(t = this._$AA.nextSibling, e) {
430
+ var s;
431
+ for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t !== this._$AB; ) {
432
+ const i = F(t).nextSibling;
433
+ F(t).remove(), t = i;
434
+ }
435
+ }
436
+ setConnected(t) {
437
+ var e;
438
+ this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));
439
+ }
440
+ }
441
+ class k {
442
+ get tagName() {
443
+ return this.element.tagName;
444
+ }
445
+ get _$AU() {
446
+ return this._$AM._$AU;
447
+ }
448
+ constructor(t, e, s, i, o) {
449
+ this.type = 1, this._$AH = d, this._$AN = void 0, this.element = t, this.name = e, this._$AM = i, this.options = o, s.length > 2 || s[0] !== "" || s[1] !== "" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = d;
450
+ }
451
+ _$AI(t, e = this, s, i) {
452
+ const o = this.strings;
453
+ let n = !1;
454
+ if (o === void 0) t = S(this, t, e, 0), n = !U(t) || t !== this._$AH && t !== E, n && (this._$AH = t);
455
+ else {
456
+ const a = t;
457
+ let h, c;
458
+ for (t = o[0], h = 0; h < o.length - 1; h++) c = S(this, a[s + h], e, h), c === E && (c = this._$AH[h]), n || (n = !U(c) || c !== this._$AH[h]), c === d ? t = d : t !== d && (t += (c ?? "") + o[h + 1]), this._$AH[h] = c;
459
+ }
460
+ n && !i && this.j(t);
461
+ }
462
+ j(t) {
463
+ t === d ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
464
+ }
465
+ }
466
+ class Et extends k {
467
+ constructor() {
468
+ super(...arguments), this.type = 3;
469
+ }
470
+ j(t) {
471
+ this.element[this.name] = t === d ? void 0 : t;
472
+ }
473
+ }
474
+ class St extends k {
475
+ constructor() {
476
+ super(...arguments), this.type = 4;
477
+ }
478
+ j(t) {
479
+ this.element.toggleAttribute(this.name, !!t && t !== d);
480
+ }
481
+ }
482
+ class bt extends k {
483
+ constructor(t, e, s, i, o) {
484
+ super(t, e, s, i, o), this.type = 5;
485
+ }
486
+ _$AI(t, e = this) {
487
+ if ((t = S(this, t, e, 0) ?? d) === E) return;
488
+ const s = this._$AH, i = t === d && s !== d || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, o = t !== d && (s === d || i);
489
+ i && this.element.removeEventListener(this.name, this, s), o && this.element.addEventListener(this.name, this, t), this._$AH = t;
490
+ }
491
+ handleEvent(t) {
492
+ var e;
493
+ typeof this._$AH == "function" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);
494
+ }
495
+ }
496
+ class wt {
497
+ constructor(t, e, s) {
498
+ this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
499
+ }
500
+ get _$AU() {
501
+ return this._$AM._$AU;
502
+ }
503
+ _$AI(t) {
504
+ S(this, t);
505
+ }
506
+ }
507
+ const z = C.litHtmlPolyfillSupport;
508
+ z == null || z(x, O), (C.litHtmlVersions ?? (C.litHtmlVersions = [])).push("3.3.3");
509
+ const Ct = (r, t, e) => {
510
+ const s = (e == null ? void 0 : e.renderBefore) ?? t;
511
+ let i = s._$litPart$;
512
+ if (i === void 0) {
513
+ const o = (e == null ? void 0 : e.renderBefore) ?? null;
514
+ s._$litPart$ = i = new O(t.insertBefore(P(), o), o, void 0, e ?? {});
515
+ }
516
+ return i._$AI(r), i;
517
+ };
518
+ /**
519
+ * @license
520
+ * Copyright 2017 Google LLC
521
+ * SPDX-License-Identifier: BSD-3-Clause
522
+ */
523
+ const y = globalThis;
524
+ class T extends v {
525
+ constructor() {
526
+ super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
527
+ }
528
+ createRenderRoot() {
529
+ var e;
530
+ const t = super.createRenderRoot();
531
+ return (e = this.renderOptions).renderBefore ?? (e.renderBefore = t.firstChild), t;
532
+ }
533
+ update(t) {
534
+ const e = this.render();
535
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = Ct(e, this.renderRoot, this.renderOptions);
536
+ }
537
+ connectedCallback() {
538
+ var t;
539
+ super.connectedCallback(), (t = this._$Do) == null || t.setConnected(!0);
540
+ }
541
+ disconnectedCallback() {
542
+ var t;
543
+ super.disconnectedCallback(), (t = this._$Do) == null || t.setConnected(!1);
544
+ }
545
+ render() {
546
+ return E;
547
+ }
548
+ }
549
+ var st;
550
+ T._$litElement$ = !0, T.finalized = !0, (st = y.litElementHydrateSupport) == null || st.call(y, { LitElement: T });
551
+ const L = y.litElementPolyfillSupport;
552
+ L == null || L({ LitElement: T });
553
+ (y.litElementVersions ?? (y.litElementVersions = [])).push("4.2.2");
554
+ /**
555
+ * @license
556
+ * Copyright 2017 Google LLC
557
+ * SPDX-License-Identifier: BSD-3-Clause
558
+ */
559
+ const Tt = (r) => (t, e) => {
560
+ e !== void 0 ? e.addInitializer(() => {
561
+ customElements.define(r, t);
562
+ }) : customElements.define(r, t);
563
+ };
564
+ /**
565
+ * @license
566
+ * Copyright 2017 Google LLC
567
+ * SPDX-License-Identifier: BSD-3-Clause
568
+ */
569
+ const Pt = { attribute: !0, type: String, converter: N, reflect: !1, hasChanged: q }, Ut = (r = Pt, t, e) => {
570
+ const { kind: s, metadata: i } = e;
571
+ let o = globalThis.litPropertyMetadata.get(i);
572
+ if (o === void 0 && globalThis.litPropertyMetadata.set(i, o = /* @__PURE__ */ new Map()), s === "setter" && ((r = Object.create(r)).wrapped = !0), o.set(e.name, r), s === "accessor") {
573
+ const { name: n } = e;
574
+ return { set(a) {
575
+ const h = t.get.call(this);
576
+ t.set.call(this, a), this.requestUpdate(n, h, r, !0, a);
577
+ }, init(a) {
578
+ return a !== void 0 && this.C(n, void 0, r, a), a;
579
+ } };
580
+ }
581
+ if (s === "setter") {
582
+ const { name: n } = e;
583
+ return function(a) {
584
+ const h = this[n];
585
+ t.call(this, a), this.requestUpdate(n, h, r, !0, a);
586
+ };
587
+ }
588
+ throw Error("Unsupported decorator location: " + s);
589
+ };
590
+ function Nt(r) {
591
+ return (t, e) => typeof e == "object" ? Ut(r, t, e) : ((s, i, o) => {
592
+ const n = i.hasOwnProperty(o);
593
+ return i.constructor.createProperty(o, s), n ? Object.getOwnPropertyDescriptor(i, o) : void 0;
594
+ })(r, t, e);
595
+ }
596
+ export {
597
+ d as A,
598
+ T as a,
599
+ Ht as b,
600
+ Ot as i,
601
+ Nt as n,
602
+ Tt as t
603
+ };
@@ -0,0 +1,50 @@
1
+ import { LitElement } from 'lit';
2
+ import { MenuTree } from '@campminder/menu-tree';
3
+
4
+ /**
5
+ * `<cm-mega-menu>` — the desktop hover flyout for a category with sub-categories.
6
+ *
7
+ * Ported 2026-09-04 from core-js's `MegaMenu.ts` (`<mega-menu>`), desktop path
8
+ * only — `MegaMenuMobile` is a separate dispatch and out of scope for this
9
+ * floor. Mounted inside `<cm-side-nav>`'s own shadow root (see that file's
10
+ * render-time seam comment), not slotted: the flyout only opens for whichever
11
+ * category is `hoveredCategory`, and that state is `@state() private` on the
12
+ * side nav — slotting from light DOM would have forced it into public API.
13
+ *
14
+ * `tree` + `categoryId` deliberately keep upstream's two-property shape
15
+ * (`categories` + `categoryName`) rather than having the caller resolve and
16
+ * pass a single node; only the match key changed, per the port's type table.
17
+ * `category.name === this.categoryName` becomes `category.id === this.categoryId` —
18
+ * matching on `id`, never on the terminology-resolved `label`.
19
+ */
20
+ export declare class MegaMenu extends LitElement {
21
+ static readonly styles: import('lit').CSSResult[];
22
+ tree: MenuTree;
23
+ categoryId: string;
24
+ connectedCallback(): void;
25
+ disconnectedCallback(): void;
26
+ private handleKeyDown;
27
+ private get categoryData();
28
+ private handleCloseMegaMenu;
29
+ /**
30
+ * Packs menu items into as many 248px columns as the container's own
31
+ * measured height allows. The `getBoundingClientRect()` calls below are
32
+ * this component measuring its own shadow root, not a sibling, so they
33
+ * don't trip the one rule. The `window.innerWidth <= 1150` gate is a
34
+ * different thing and does not get the same pass: it's a page-viewport
35
+ * read uncorrelated with this component's actual available width, kept
36
+ * only because it's what upstream gated on. `window.innerWidth` is 1024
37
+ * under jsdom, so this early return fires on every test run and the
38
+ * packing logic below it was, until the test added for this floor,
39
+ * unexercised by the suite.
40
+ */
41
+ private setMenuItemsContainerWidth;
42
+ updated(changedProperties: Map<string | number | symbol, unknown>): void;
43
+ private renderLeaf;
44
+ render(): import('lit').TemplateResult<1> | null;
45
+ }
46
+ declare global {
47
+ interface HTMLElementTagNameMap {
48
+ 'cm-mega-menu': MegaMenu;
49
+ }
50
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Styles for `<cm-mega-menu>`, ported 2026-09-04 from core-js's
3
+ * `MegaMenu.styles.ts`. Header, typography, menu-item and menu-url rules carry
4
+ * across unchanged. What changed, and why:
5
+ *
6
+ * - `.mega-menu` is `position: absolute; left: 100%; top: 0` instead of
7
+ * flowing in place. `<cm-side-nav>`'s `.side-nav` is `width: 100%` of
8
+ * `.nav-container` (its new `position: relative` positioning context — see
9
+ * `SideNav.styles.ts`), so `left: 100%` lands the flyout exactly at the
10
+ * column's right edge without widening the column itself.
11
+ * - `max-height: inherit` is gone. It inherited from an ancestor's inline
12
+ * `style="max-height: calc(100dvh - ${topOffsetPx}px)"` (core-js's
13
+ * `SideNav.ts:595`); `topOffsetPx` has no successor in this repo (Floor 4),
14
+ * so `inherit` resolved against nothing — a bug, not a port. `height: 100%`
15
+ * (kept from upstream) now does the sizing instead, resolving against the
16
+ * positioned `.nav-container` ancestor, which is itself bounded by the
17
+ * shell's grid cell.
18
+ * - `z-index: 999999 !important` is gone. It sat inside this component's own
19
+ * shadow root and stacking context, so it could only ever affect siblings
20
+ * inside `.mega-menu` — nothing outside its own shadow root reads it. The
21
+ * shell's `[part='nav'] { z-index: 1 }` (`app-shell.ts`) is what lifts the
22
+ * flyout above `[part='content']` now.
23
+ * - The `@import url(fonts.googleapis.com/...)` is gone, for the same reason
24
+ * Floor 4 dropped it from `SideNavStyles`: a network fetch from inside a
25
+ * shadow root for a font the shell should provide has no place in a
26
+ * component that renders itself and nothing else.
27
+ * - `.admin-menu` has no rule here — it never did upstream either (dead CSS
28
+ * selector target), and the class itself is not ported; see `MegaMenu.ts`.
29
+ *
30
+ * The `@media (max-width: 1150px)` `.menu-items { flex-wrap: nowrap }` rule is
31
+ * kept verbatim — it is the whole of "responsive" this floor owes.
32
+ */
33
+ export declare const MegaMenuStyles: import('lit').CSSResult;