@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,1198 @@
1
+ import { A as I, b as t, i as f, n as c, a as m, t as x } from "./property-B5JHHBCF.js";
2
+ import { r as Z } from "./state-Ns9O6R8g.js";
3
+ /**
4
+ * @license
5
+ * Copyright 2018 Google LLC
6
+ * SPDX-License-Identifier: BSD-3-Clause
7
+ */
8
+ const b = (e) => e ?? I, S = t` <svg
9
+ width="20"
10
+ height="20"
11
+ viewBox="0 0 20 20"
12
+ fill="none"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ >
15
+ <path
16
+ d="M15 1.6665H5.00001C4.08334 1.6665 3.33334 2.4165 3.33334 3.33317V16.6665C3.33334 17.5832 4.08334 18.3332 5.00001 18.3332H15C15.9167 18.3332 16.6667 17.5832 16.6667 16.6665V3.33317C16.6667 2.4165 15.9167 1.6665 15 1.6665ZM5.00001 3.33317H9.16668V9.99984L7.08334 8.74984L5.00001 9.99984V3.33317Z"
17
+ fill="white"
18
+ />
19
+ </svg>`, E = t`<svg
20
+ width="20"
21
+ height="20"
22
+ viewBox="0 0 20 20"
23
+ fill="none"
24
+ xmlns="http://www.w3.org/2000/svg"
25
+ >
26
+ <path
27
+ d="M15.95 10.7833C15.9833 10.5333 16 10.275 16 10C16 9.73333 15.9833 9.46667 15.9417 9.21667L17.6333 7.9C17.7833 7.78333 17.825 7.55833 17.7333 7.39167L16.1333 4.625C16.0333 4.44167 15.825 4.38333 15.6417 4.44167L13.65 5.24167C13.2333 4.925 12.7917 4.65833 12.3 4.45833L12 2.34167C11.9667 2.14167 11.8 2 11.6 2H8.39999C8.19999 2 8.04166 2.14167 8.00832 2.34167L7.70832 4.45833C7.21666 4.65833 6.76666 4.93333 6.35832 5.24167L4.36666 4.44167C4.18332 4.375 3.97499 4.44167 3.87499 4.625L2.28332 7.39167C2.18332 7.56667 2.21666 7.78333 2.38332 7.9L4.07499 9.21667C4.03332 9.46667 3.99999 9.74167 3.99999 10C3.99999 10.2583 4.01666 10.5333 4.05832 10.7833L2.36666 12.1C2.21666 12.2167 2.17499 12.4417 2.26666 12.6083L3.86666 15.375C3.96666 15.5583 4.17499 15.6167 4.35832 15.5583L6.34999 14.7583C6.76666 15.075 7.20832 15.3417 7.69999 15.5417L7.99999 17.6583C8.04166 17.8583 8.19999 18 8.39999 18H11.6C11.8 18 11.9667 17.8583 11.9917 17.6583L12.2917 15.5417C12.7833 15.3417 13.2333 15.075 13.6417 14.7583L15.6333 15.5583C15.8167 15.625 16.025 15.5583 16.125 15.375L17.725 12.6083C17.825 12.425 17.7833 12.2167 17.625 12.1L15.95 10.7833ZM9.99999 13C8.34999 13 6.99999 11.65 6.99999 10C6.99999 8.35 8.34999 7 9.99999 7C11.65 7 13 8.35 13 10C13 11.65 11.65 13 9.99999 13Z"
28
+ fill="white"
29
+ />
30
+ </svg> `, T = t`<svg
31
+ width="20"
32
+ height="20"
33
+ viewBox="0 0 20 20"
34
+ fill="none"
35
+ xmlns="http://www.w3.org/2000/svg"
36
+ >
37
+ <path
38
+ d="M4.16668 10.9833V14.3167L10 17.5L15.8333 14.3167V10.9833L10 14.1667L4.16668 10.9833ZM10 2.5L0.833344 7.5L10 12.5L17.5 8.40833V14.1667H19.1667V7.5L10 2.5Z"
39
+ fill="white"
40
+ />
41
+ </svg> `, $ = t`<svg
42
+ width="20"
43
+ height="20"
44
+ viewBox="0 0 20 20"
45
+ fill="none"
46
+ xmlns="http://www.w3.org/2000/svg"
47
+ >
48
+ <path
49
+ d="M9.99999 1.6665C5.39999 1.6665 1.66666 5.39984 1.66666 9.99984C1.66666 14.5998 5.39999 18.3332 9.99999 18.3332C14.6 18.3332 18.3333 14.5998 18.3333 9.99984C18.3333 5.39984 14.6 1.6665 9.99999 1.6665ZM9.99999 4.1665C11.3833 4.1665 12.5 5.28317 12.5 6.6665C12.5 8.04984 11.3833 9.1665 9.99999 9.1665C8.61666 9.1665 7.49999 8.04984 7.49999 6.6665C7.49999 5.28317 8.61666 4.1665 9.99999 4.1665ZM9.99999 15.9998C7.91666 15.9998 6.07499 14.9332 4.99999 13.3165C5.02499 11.6582 8.33332 10.7498 9.99999 10.7498C11.6583 10.7498 14.975 11.6582 15 13.3165C13.925 14.9332 12.0833 15.9998 9.99999 15.9998Z"
50
+ fill="white"
51
+ />
52
+ </svg>`, B = t`<svg
53
+ width="20"
54
+ height="20"
55
+ viewBox="0 0 20 20"
56
+ fill="none"
57
+ xmlns="http://www.w3.org/2000/svg"
58
+ >
59
+ <path
60
+ d="M16.6667 15.4167C17.5833 15.4167 18.325 14.6667 18.325 13.7501L18.3333 4.58341C18.3333 3.66675 17.5833 2.91675 16.6667 2.91675H3.33333C2.41667 2.91675 1.66667 3.66675 1.66667 4.58341V13.7501C1.66667 14.6667 2.41667 15.4167 3.33333 15.4167H0C0 16.3334 0.75 17.0834 1.66667 17.0834H18.3333C19.25 17.0834 20 16.3334 20 15.4167H16.6667ZM3.33333 4.58341H16.6667V13.7501H3.33333V4.58341ZM10 16.2501C9.54167 16.2501 9.16667 15.8751 9.16667 15.4167C9.16667 14.9584 9.54167 14.5834 10 14.5834C10.4583 14.5834 10.8333 14.9584 10.8333 15.4167C10.8333 15.8751 10.4583 16.2501 10 16.2501Z"
61
+ fill="white"
62
+ />
63
+ </svg>`, N = t`<svg
64
+ width="8"
65
+ height="12"
66
+ viewBox="0 0 8 12"
67
+ fill="none"
68
+ xmlns="http://www.w3.org/2000/svg"
69
+ >
70
+ <path
71
+ d="M1.70687 0L0.296875 1.41L4.87687 6L0.296875 10.59L1.70687 12L7.70687 6L1.70687 0Z"
72
+ fill="white"
73
+ />
74
+ </svg>`, k = (e = "#505050") => t`<svg
75
+ width="14"
76
+ height="14"
77
+ viewBox="0 0 14 14"
78
+ fill="none"
79
+ xmlns="http://www.w3.org/2000/svg"
80
+ >
81
+ <path
82
+ d="M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z"
83
+ fill="${e}"
84
+ />
85
+ </svg>`, A = t`<svg
86
+ width="20"
87
+ height="20"
88
+ viewBox="0 0 20 20"
89
+ fill="none"
90
+ xmlns="http://www.w3.org/2000/svg"
91
+ >
92
+ <path
93
+ d="M15 9.16683V10.8335H18.3333V9.16683H15ZM13.3333 14.6752C14.1333 15.2668 15.175 16.0502 16 16.6668C16.3333 16.2252 16.6667 15.7752 17 15.3335C16.175 14.7168 15.1333 13.9335 14.3333 13.3335C14 13.7835 13.6667 14.2335 13.3333 14.6752ZM17 4.66683C16.6667 4.22516 16.3333 3.77516 16 3.3335C15.175 3.95016 14.1333 4.7335 13.3333 5.3335C13.6667 5.77516 14 6.22516 14.3333 6.66683C15.1333 6.06683 16.175 5.29183 17 4.66683ZM3.33332 7.50016C2.41666 7.50016 1.66666 8.25016 1.66666 9.16683V10.8335C1.66666 11.7502 2.41666 12.5002 3.33332 12.5002H4.16666V15.8335H5.83332V12.5002H6.66666L10.8333 15.0002V5.00016L6.66666 7.50016H3.33332ZM12.9167 10.0002C12.9167 8.89183 12.4333 7.89183 11.6667 7.2085V12.7835C12.4333 12.1085 12.9167 11.1085 12.9167 10.0002Z"
94
+ fill="white"
95
+ />
96
+ </svg> `, p = t`<svg
97
+ width="20"
98
+ height="20"
99
+ viewBox="0 0 20 20"
100
+ fill="none"
101
+ xmlns="http://www.w3.org/2000/svg"
102
+ >
103
+ <path
104
+ d="M15.95 10.7833C15.9833 10.5333 16 10.275 16 10C16 9.73333 15.9833 9.46667 15.9417 9.21667L17.6333 7.9C17.7833 7.78333 17.825 7.55833 17.7333 7.39167L16.1333 4.625C16.0333 4.44167 15.825 4.38333 15.6417 4.44167L13.65 5.24167C13.2333 4.925 12.7917 4.65833 12.3 4.45833L12 2.34167C11.9667 2.14167 11.8 2 11.6 2H8.39999C8.19999 2 8.04166 2.14167 8.00832 2.34167L7.70832 4.45833C7.21666 4.65833 6.76666 4.93333 6.35832 5.24167L4.36666 4.44167C4.18332 4.375 3.97499 4.44167 3.87499 4.625L2.28332 7.39167C2.18332 7.56667 2.21666 7.78333 2.38332 7.9L4.07499 9.21667C4.03332 9.46667 3.99999 9.74167 3.99999 10C3.99999 10.2583 4.01666 10.5333 4.05832 10.7833L2.36666 12.1C2.21666 12.2167 2.17499 12.4417 2.26666 12.6083L3.86666 15.375C3.96666 15.5583 4.17499 15.6167 4.35832 15.5583L6.34999 14.7583C6.76666 15.075 7.20832 15.3417 7.69999 15.5417L7.99999 17.6583C8.04166 17.8583 8.19999 18 8.39999 18H11.6C11.8 18 11.9667 17.8583 11.9917 17.6583L12.2917 15.5417C12.7833 15.3417 13.2333 15.075 13.6417 14.7583L15.6333 15.5583C15.8167 15.625 16.025 15.5583 16.125 15.375L17.725 12.6083C17.825 12.425 17.7833 12.2167 17.625 12.1L15.95 10.7833ZM9.99999 13C8.34999 13 6.99999 11.65 6.99999 10C6.99999 8.35 8.34999 7 9.99999 7C11.65 7 13 8.35 13 10C13 11.65 11.65 13 9.99999 13Z"
105
+ fill="white"
106
+ />
107
+ </svg> `, O = t`<svg
108
+ width="20"
109
+ height="20"
110
+ viewBox="0 0 20 20"
111
+ fill="none"
112
+ xmlns="http://www.w3.org/2000/svg"
113
+ >
114
+ <path
115
+ d="M9.99999 1.6665C5.39999 1.6665 1.66666 5.39984 1.66666 9.99984C1.66666 14.5998 5.39999 18.3332 9.99999 18.3332C14.6 18.3332 18.3333 14.5998 18.3333 9.99984C18.3333 5.39984 14.6 1.6665 9.99999 1.6665ZM10.7333 14.7998V15.8332H9.27499V14.7582C8.65832 14.6082 7.28332 14.1165 6.75832 12.2915L8.13332 11.7332C8.18332 11.9165 8.61666 13.4748 10.1333 13.4748C10.9083 13.4748 11.7833 13.0748 11.7833 12.1332C11.7833 11.3332 11.2 10.9165 9.88332 10.4415C8.96666 10.1165 7.09166 9.58317 7.09166 7.68317C7.09166 7.59984 7.09999 5.68317 9.27499 5.2165V4.1665H10.7333V5.19984C12.2667 5.4665 12.825 6.6915 12.95 7.05817L11.6333 7.6165C11.5417 7.32484 11.1417 6.49984 10.05 6.49984C9.46666 6.49984 8.54166 6.80817 8.54166 7.65817C8.54166 8.44984 9.25832 8.74984 10.7417 9.2415C12.7417 9.93317 13.25 10.9498 13.25 12.1165C13.25 14.3082 11.1667 14.7248 10.7333 14.7998Z"
116
+ fill="white"
117
+ />
118
+ </svg>`, H = t`<svg
119
+ width="20"
120
+ height="20"
121
+ viewBox="0 0 20 20"
122
+ fill="none"
123
+ xmlns="http://www.w3.org/2000/svg"
124
+ >
125
+ <path
126
+ d="M8.33332 17.0832V12.0832H11.6667V17.0832H15.8333V10.4165H18.3333L9.99999 2.9165L1.66666 10.4165H4.16666V17.0832H8.33332Z"
127
+ fill="white"
128
+ />
129
+ </svg>`, R = t`<svg
130
+ width="20"
131
+ height="20"
132
+ viewBox="0 0 20 20"
133
+ fill="none"
134
+ xmlns="http://www.w3.org/2000/svg"
135
+ >
136
+ <path
137
+ d="M16.6667 4.99984H13.3333V3.33317C13.3333 2.4165 12.5833 1.6665 11.6667 1.6665H8.33332C7.41666 1.6665 6.66666 2.4165 6.66666 3.33317V4.99984H3.33332C2.41666 4.99984 1.66666 5.74984 1.66666 6.6665V16.6665C1.66666 17.5832 2.41666 18.3332 3.33332 18.3332H16.6667C17.5833 18.3332 18.3333 17.5832 18.3333 16.6665V6.6665C18.3333 5.74984 17.5833 4.99984 16.6667 4.99984ZM8.33332 3.33317H11.6667V4.99984H8.33332V3.33317ZM13.3333 12.4998H10.8333V14.9998H9.16666V12.4998H6.66666V10.8332H9.16666V8.33317H10.8333V10.8332H13.3333V12.4998Z"
138
+ fill="white"
139
+ />
140
+ </svg> `, z = t` <svg
141
+ width="24"
142
+ height="24"
143
+ viewBox="0 0 24 24"
144
+ fill="none"
145
+ xmlns="http://www.w3.org/2000/svg"
146
+ >
147
+ <path
148
+ d="M3 18H16V16H3V18ZM3 13H13V11H3V13ZM3 6V8H16V6H3ZM21 15.59L17.42 12L21 8.41L19.59 7L14.59 12L19.59 17L21 15.59Z"
149
+ fill="white"
150
+ />
151
+ </svg>`, _ = t`<svg
152
+ width="24"
153
+ height="24"
154
+ viewBox="0 0 24 24"
155
+ fill="none"
156
+ xmlns="http://www.w3.org/2000/svg"
157
+ >
158
+ <path d="M3 18H21V16H3V18ZM3 13H21V11H3V13ZM3 6V8H21V6H3Z" fill="white" />
159
+ </svg>`, G = t`<svg
160
+ width="20"
161
+ height="20"
162
+ viewBox="0 0 20 20"
163
+ fill="none"
164
+ xmlns="http://www.w3.org/2000/svg"
165
+ >
166
+ <path
167
+ d="M12.5 2.5H4.16667C3.25 2.5 2.50833 3.25 2.50833 4.16667L2.5 15.8333C2.5 16.75 3.24167 17.5 4.15833 17.5H15.8333C16.75 17.5 17.5 16.75 17.5 15.8333V7.5L12.5 2.5ZM6.66667 14.1667C6.20833 14.1667 5.83333 13.7917 5.83333 13.3333C5.83333 12.875 6.20833 12.5 6.66667 12.5C7.125 12.5 7.5 12.875 7.5 13.3333C7.5 13.7917 7.125 14.1667 6.66667 14.1667ZM6.66667 10.8333C6.20833 10.8333 5.83333 10.4583 5.83333 10C5.83333 9.54167 6.20833 9.16667 6.66667 9.16667C7.125 9.16667 7.5 9.54167 7.5 10C7.5 10.4583 7.125 10.8333 6.66667 10.8333ZM6.66667 7.5C6.20833 7.5 5.83333 7.125 5.83333 6.66667C5.83333 6.20833 6.20833 5.83333 6.66667 5.83333C7.125 5.83333 7.5 6.20833 7.5 6.66667C7.5 7.125 7.125 7.5 6.66667 7.5ZM11.6667 8.33333V3.75L16.25 8.33333H11.6667Z"
168
+ fill="white"
169
+ />
170
+ </svg>`, P = t`<svg
171
+ width="20"
172
+ height="20"
173
+ viewBox="0 0 20 20"
174
+ fill="none"
175
+ xmlns="http://www.w3.org/2000/svg"
176
+ >
177
+ <path
178
+ d="M14.1667 10.8332H10V14.9998H14.1667V10.8332ZM13.3333 1.6665V3.33317H6.66667V1.6665H5V3.33317H4.16667C3.24167 3.33317 2.50833 4.08317 2.50833 4.99984L2.5 16.6665C2.5 17.5832 3.24167 18.3332 4.16667 18.3332H15.8333C16.75 18.3332 17.5 17.5832 17.5 16.6665V4.99984C17.5 4.08317 16.75 3.33317 15.8333 3.33317H15V1.6665H13.3333ZM15.8333 16.6665H4.16667V7.49984H15.8333V16.6665Z"
179
+ fill="white"
180
+ />
181
+ </svg> `, D = t`<svg
182
+ width="20"
183
+ height="20"
184
+ viewBox="0 0 20 20"
185
+ fill="none"
186
+ xmlns="http://www.w3.org/2000/svg"
187
+ >
188
+ <path
189
+ d="M16.6667 5.83317H12.5V3.33317C12.5 2.4165 11.75 1.6665 10.8333 1.6665H9.16666C8.24999 1.6665 7.49999 2.4165 7.49999 3.33317V5.83317H3.33332C2.41666 5.83317 1.66666 6.58317 1.66666 7.49984V16.6665C1.66666 17.5832 2.41666 18.3332 3.33332 18.3332H16.6667C17.5833 18.3332 18.3333 17.5832 18.3333 16.6665V7.49984C18.3333 6.58317 17.5833 5.83317 16.6667 5.83317ZM7.49999 9.99984C8.19166 9.99984 8.74999 10.5582 8.74999 11.2498C8.74999 11.9415 8.19166 12.4998 7.49999 12.4998C6.80832 12.4998 6.24999 11.9415 6.24999 11.2498C6.24999 10.5582 6.80832 9.99984 7.49999 9.99984ZM9.99999 14.9998H4.99999V14.3748C4.99999 13.5415 6.66666 13.1248 7.49999 13.1248C8.33332 13.1248 9.99999 13.5415 9.99999 14.3748V14.9998ZM10.8333 7.49984H9.16666V3.33317H10.8333V7.49984ZM15 13.7498H11.6667V12.4998H15V13.7498ZM15 11.2498H11.6667V9.99984H15V11.2498Z"
190
+ fill="white"
191
+ />
192
+ </svg> `, U = t`<svg
193
+ width="20"
194
+ height="20"
195
+ viewBox="0 0 20 20"
196
+ fill="none"
197
+ xmlns="http://www.w3.org/2000/svg"
198
+ >
199
+ <path
200
+ d="M10 2.0835C6.66668 2.0835 3.33334 2.50016 3.33334 5.41683V13.3335C3.33334 14.1252 3.65001 14.8418 4.16668 15.3668V17.0835C4.16668 17.5418 4.54168 17.9168 5.00001 17.9168H5.83334C6.29168 17.9168 6.66668 17.5418 6.66668 17.0835V16.2502H13.3333V17.0835C13.3333 17.5418 13.7083 17.9168 14.1667 17.9168H15C15.4583 17.9168 15.8333 17.5418 15.8333 17.0835V15.3668C16.35 14.8418 16.6667 14.1252 16.6667 13.3335V5.41683C16.6667 2.50016 13.6833 2.0835 10 2.0835ZM7.08334 13.7502C6.39168 13.7502 5.83334 13.1918 5.83334 12.5002C5.83334 11.8085 6.39168 11.2502 7.08334 11.2502C7.77501 11.2502 8.33334 11.8085 8.33334 12.5002C8.33334 13.1918 7.77501 13.7502 7.08334 13.7502ZM12.9167 13.7502C12.225 13.7502 11.6667 13.1918 11.6667 12.5002C11.6667 11.8085 12.225 11.2502 12.9167 11.2502C13.6083 11.2502 14.1667 11.8085 14.1667 12.5002C14.1667 13.1918 13.6083 13.7502 12.9167 13.7502ZM15 8.75016H5.00001V6.25016H15V8.75016Z"
201
+ fill="white"
202
+ />
203
+ </svg> `, j = t`<svg
204
+ width="24"
205
+ height="24"
206
+ viewBox="0 0 24 24"
207
+ fill="none"
208
+ xmlns="http://www.w3.org/2000/svg"
209
+ >
210
+ <path
211
+ d="M18 2H6C4.9 2 4 2.9 4 4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V4C20 2.9 19.1 2 18 2ZM6 4H11V12L8.5 10.5L6 12V4Z"
212
+ fill="#505050"
213
+ />
214
+ </svg>`, F = t`<svg
215
+ width="24"
216
+ height="24"
217
+ viewBox="0 0 24 24"
218
+ fill="none"
219
+ xmlns="http://www.w3.org/2000/svg"
220
+ >
221
+ <path
222
+ d="M19.1401 12.9399C19.1801 12.6399 19.2001 12.3299 19.2001 11.9999C19.2001 11.6799 19.1801 11.3599 19.1301 11.0599L21.1601 9.4799C21.3401 9.3399 21.3901 9.0699 21.2801 8.8699L19.3601 5.5499C19.2401 5.3299 18.9901 5.2599 18.7701 5.3299L16.3801 6.2899C15.8801 5.9099 15.3501 5.5899 14.7601 5.3499L14.4001 2.8099C14.3601 2.5699 14.1601 2.3999 13.9201 2.3999H10.0801C9.84011 2.3999 9.65011 2.5699 9.61011 2.8099L9.25011 5.3499C8.66011 5.5899 8.12011 5.9199 7.63011 6.2899L5.24011 5.3299C5.02011 5.2499 4.77011 5.3299 4.65011 5.5499L2.74011 8.8699C2.62011 9.0799 2.66011 9.3399 2.86011 9.4799L4.89011 11.0599C4.84011 11.3599 4.80011 11.6899 4.80011 11.9999C4.80011 12.3099 4.82011 12.6399 4.87011 12.9399L2.84011 14.5199C2.66011 14.6599 2.61011 14.9299 2.72011 15.1299L4.64011 18.4499C4.76011 18.6699 5.01011 18.7399 5.23011 18.6699L7.62011 17.7099C8.12011 18.0899 8.65011 18.4099 9.24011 18.6499L9.60011 21.1899C9.65011 21.4299 9.84011 21.5999 10.0801 21.5999H13.9201C14.1601 21.5999 14.3601 21.4299 14.3901 21.1899L14.7501 18.6499C15.3401 18.4099 15.8801 18.0899 16.3701 17.7099L18.7601 18.6699C18.9801 18.7499 19.2301 18.6699 19.3501 18.4499L21.2701 15.1299C21.3901 14.9099 21.3401 14.6599 21.1501 14.5199L19.1401 12.9399ZM12.0001 15.5999C10.0201 15.5999 8.40011 13.9799 8.40011 11.9999C8.40011 10.0199 10.0201 8.3999 12.0001 8.3999C13.9801 8.3999 15.6001 10.0199 15.6001 11.9999C15.6001 13.9799 13.9801 15.5999 12.0001 15.5999Z"
223
+ fill="#505050"
224
+ />
225
+ </svg>`, K = t`<svg
226
+ width="24"
227
+ height="24"
228
+ viewBox="0 0 24 24"
229
+ fill="none"
230
+ xmlns="http://www.w3.org/2000/svg"
231
+ >
232
+ <path
233
+ d="M5 13.18V17.18L12 21L19 17.18V13.18L12 17L5 13.18ZM12 3L1 9L12 15L21 10.09V17H23V9L12 3Z"
234
+ fill="#505050"
235
+ />
236
+ </svg>`, Y = t`<svg
237
+ width="24"
238
+ height="24"
239
+ viewBox="0 0 24 24"
240
+ fill="none"
241
+ xmlns="http://www.w3.org/2000/svg"
242
+ >
243
+ <path
244
+ d="M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 5C13.66 5 15 6.34 15 8C15 9.66 13.66 11 12 11C10.34 11 9 9.66 9 8C9 6.34 10.34 5 12 5ZM12 19.2C9.5 19.2 7.29 17.92 6 15.98C6.03 13.99 10 12.9 12 12.9C13.99 12.9 17.97 13.99 18 15.98C16.71 17.92 14.5 19.2 12 19.2Z"
245
+ fill="#505050"
246
+ />
247
+ </svg>`, W = t`<svg
248
+ width="20"
249
+ height="20"
250
+ viewBox="0 0 20 20"
251
+ fill="none"
252
+ xmlns="http://www.w3.org/2000/svg"
253
+ >
254
+ <path
255
+ d="M16.6667 15.4167C17.5833 15.4167 18.325 14.6667 18.325 13.7501L18.3333 4.58341C18.3333 3.66675 17.5833 2.91675 16.6667 2.91675H3.33333C2.41667 2.91675 1.66667 3.66675 1.66667 4.58341V13.7501C1.66667 14.6667 2.41667 15.4167 3.33333 15.4167H0C0 16.3334 0.75 17.0834 1.66667 17.0834H18.3333C19.25 17.0834 20 16.3334 20 15.4167H16.6667ZM3.33333 4.58341H16.6667V13.7501H3.33333V4.58341ZM10 16.2501C9.54167 16.2501 9.16667 15.8751 9.16667 15.4167C9.16667 14.9584 9.54167 14.5834 10 14.5834C10.4583 14.5834 10.8333 14.9584 10.8333 15.4167C10.8333 15.8751 10.4583 16.2501 10 16.2501Z"
256
+ fill="#505050"
257
+ />
258
+ </svg>`, q = t`<svg
259
+ width="24"
260
+ height="24"
261
+ viewBox="0 0 24 24"
262
+ fill="none"
263
+ xmlns="http://www.w3.org/2000/svg"
264
+ >
265
+ <path
266
+ d="M18 11V13H22V11H18ZM16 17.61C16.96 18.32 18.21 19.26 19.2 20C19.6 19.47 20 18.93 20.4 18.4C19.41 17.66 18.16 16.72 17.2 16C16.8 16.54 16.4 17.08 16 17.61ZM20.4 5.6C20 5.07 19.6 4.53 19.2 4C18.21 4.74 16.96 5.68 16 6.4C16.4 6.93 16.8 7.47 17.2 8C18.16 7.28 19.41 6.35 20.4 5.6ZM4 9C2.9 9 2 9.9 2 11V13C2 14.1 2.9 15 4 15H5V19H7V15H8L13 18V6L8 9H4ZM15.5 12C15.5 10.67 14.92 9.47 14 8.65V15.34C14.92 14.53 15.5 13.33 15.5 12Z"
267
+ fill="#505050"
268
+ />
269
+ </svg> `, u = t`<svg
270
+ width="24"
271
+ height="24"
272
+ viewBox="0 0 24 24"
273
+ fill="none"
274
+ xmlns="http://www.w3.org/2000/svg"
275
+ >
276
+ <path
277
+ d="M19.1401 12.9399C19.1801 12.6399 19.2001 12.3299 19.2001 11.9999C19.2001 11.6799 19.1801 11.3599 19.1301 11.0599L21.1601 9.4799C21.3401 9.3399 21.3901 9.0699 21.2801 8.8699L19.3601 5.5499C19.2401 5.3299 18.9901 5.2599 18.7701 5.3299L16.3801 6.2899C15.8801 5.9099 15.3501 5.5899 14.7601 5.3499L14.4001 2.8099C14.3601 2.5699 14.1601 2.3999 13.9201 2.3999H10.0801C9.84011 2.3999 9.65011 2.5699 9.61011 2.8099L9.25011 5.3499C8.66011 5.5899 8.12011 5.9199 7.63011 6.2899L5.24011 5.3299C5.02011 5.2499 4.77011 5.3299 4.65011 5.5499L2.74011 8.8699C2.62011 9.0799 2.66011 9.3399 2.86011 9.4799L4.89011 11.0599C4.84011 11.3599 4.80011 11.6899 4.80011 11.9999C4.80011 12.3099 4.82011 12.6399 4.87011 12.9399L2.84011 14.5199C2.66011 14.6599 2.61011 14.9299 2.72011 15.1299L4.64011 18.4499C4.76011 18.6699 5.01011 18.7399 5.23011 18.6699L7.62011 17.7099C8.12011 18.0899 8.65011 18.4099 9.24011 18.6499L9.60011 21.1899C9.65011 21.4299 9.84011 21.5999 10.0801 21.5999H13.9201C14.1601 21.5999 14.3601 21.4299 14.3901 21.1899L14.7501 18.6499C15.3401 18.4099 15.8801 18.0899 16.3701 17.7099L18.7601 18.6699C18.9801 18.7499 19.2301 18.6699 19.3501 18.4499L21.2701 15.1299C21.3901 14.9099 21.3401 14.6599 21.1501 14.5199L19.1401 12.9399ZM12.0001 15.5999C10.0201 15.5999 8.40011 13.9799 8.40011 11.9999C8.40011 10.0199 10.0201 8.3999 12.0001 8.3999C13.9801 8.3999 15.6001 10.0199 15.6001 11.9999C15.6001 13.9799 13.9801 15.5999 12.0001 15.5999Z"
278
+ fill="#505050"
279
+ />
280
+ </svg>`, X = t`<svg
281
+ width="24"
282
+ height="24"
283
+ viewBox="0 0 24 24"
284
+ fill="none"
285
+ xmlns="http://www.w3.org/2000/svg"
286
+ >
287
+ <path
288
+ d="M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12.88 17.76V19H11.13V17.71C10.39 17.53 8.74 16.94 8.11 14.75L9.76 14.08C9.82 14.3 10.34 16.17 12.16 16.17C13.09 16.17 14.14 15.69 14.14 14.56C14.14 13.6 13.44 13.1 11.86 12.53C10.76 12.14 8.51 11.5 8.51 9.22C8.51 9.12 8.52 6.82 11.13 6.26V5H12.88V6.24C14.72 6.56 15.39 8.03 15.54 8.47L13.96 9.14C13.85 8.79 13.37 7.8 12.06 7.8C11.36 7.8 10.25 8.17 10.25 9.19C10.25 10.14 11.11 10.5 12.89 11.09C15.29 11.92 15.9 13.14 15.9 14.54C15.9 17.17 13.4 17.67 12.88 17.76Z"
289
+ fill="#505050"
290
+ />
291
+ </svg> `, J = t`<svg
292
+ width="24"
293
+ height="24"
294
+ viewBox="0 0 24 24"
295
+ fill="none"
296
+ xmlns="http://www.w3.org/2000/svg"
297
+ >
298
+ <path
299
+ d="M20 6H16V4C16 2.9 15.1 2 14 2H10C8.9 2 8 2.9 8 4V6H4C2.9 6 2 6.9 2 8V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V8C22 6.9 21.1 6 20 6ZM10 4H14V6H10V4ZM16 15H13V18H11V15H8V13H11V10H13V13H16V15Z"
300
+ fill="#505050"
301
+ />
302
+ </svg> `, w = t`<svg
303
+ width="16"
304
+ height="16"
305
+ viewBox="0 0 16 16"
306
+ fill="none"
307
+ xmlns="http://www.w3.org/2000/svg"
308
+ >
309
+ <path
310
+ d="M12.6667 12.6667H3.33333V3.33333H8V2H3.33333C2.59333 2 2 2.6 2 3.33333V12.6667C2 13.4 2.59333 14 3.33333 14H12.6667C13.4 14 14 13.4 14 12.6667V8H12.6667V12.6667ZM9.33333 2V3.33333H11.7267L5.17333 9.88667L6.11333 10.8267L12.6667 4.27333V6.66667H14V2H9.33333Z"
311
+ fill="#282828"
312
+ />
313
+ </svg> `, Q = t`<svg
314
+ width="24"
315
+ height="24"
316
+ viewBox="0 0 24 24"
317
+ fill="none"
318
+ xmlns="http://www.w3.org/2000/svg"
319
+ >
320
+ <path
321
+ d="M15 3H5C3.9 3 3.01 3.9 3.01 5L3 19C3 20.1 3.89 21 4.99 21H19C20.1 21 21 20.1 21 19V9L15 3ZM8 17C7.45 17 7 16.55 7 16C7 15.45 7.45 15 8 15C8.55 15 9 15.45 9 16C9 16.55 8.55 17 8 17ZM8 13C7.45 13 7 12.55 7 12C7 11.45 7.45 11 8 11C8.55 11 9 11.45 9 12C9 12.55 8.55 13 8 13ZM8 9C7.45 9 7 8.55 7 8C7 7.45 7.45 7 8 7C8.55 7 9 7.45 9 8C9 8.55 8.55 9 8 9ZM14 10V4.5L19.5 10H14Z"
322
+ fill="#505050"
323
+ />
324
+ </svg> `, e1 = t`<svg
325
+ width="24"
326
+ height="24"
327
+ viewBox="0 0 24 24"
328
+ fill="none"
329
+ xmlns="http://www.w3.org/2000/svg"
330
+ >
331
+ <path
332
+ d="M17 13H12V18H17V13ZM16 2V4H8V2H6V4H5C3.89 4 3.01 4.9 3.01 6L3 20C3 21.1 3.89 22 5 22H19C20.1 22 21 21.1 21 20V6C21 4.9 20.1 4 19 4H18V2H16ZM19 20H5V9H19V20Z"
333
+ fill="#505050"
334
+ />
335
+ </svg> `, t1 = t`<svg
336
+ width="24"
337
+ height="24"
338
+ viewBox="0 0 24 24"
339
+ fill="none"
340
+ xmlns="http://www.w3.org/2000/svg"
341
+ >
342
+ <path
343
+ d="M20 7H15V4C15 2.9 14.1 2 13 2H11C9.9 2 9 2.9 9 4V7H4C2.9 7 2 7.9 2 9V20C2 21.1 2.9 22 4 22H20C21.1 22 22 21.1 22 20V9C22 7.9 21.1 7 20 7ZM9 12C9.83 12 10.5 12.67 10.5 13.5C10.5 14.33 9.83 15 9 15C8.17 15 7.5 14.33 7.5 13.5C7.5 12.67 8.17 12 9 12ZM12 18H6V17.25C6 16.25 8 15.75 9 15.75C10 15.75 12 16.25 12 17.25V18ZM13 9H11V4H13V9ZM18 16.5H14V15H18V16.5ZM18 13.5H14V12H18V13.5Z"
344
+ fill="#505050"
345
+ />
346
+ </svg> `, o1 = t`<svg
347
+ width="24"
348
+ height="24"
349
+ viewBox="0 0 24 24"
350
+ fill="none"
351
+ xmlns="http://www.w3.org/2000/svg"
352
+ >
353
+ <path
354
+ d="M12 2.5C8 2.5 4 3 4 6.5V16C4 16.95 4.38 17.81 5 18.44V20.5C5 21.05 5.45 21.5 6 21.5H7C7.55 21.5 8 21.05 8 20.5V19.5H16V20.5C16 21.05 16.45 21.5 17 21.5H18C18.55 21.5 19 21.05 19 20.5V18.44C19.62 17.81 20 16.95 20 16V6.5C20 3 16.42 2.5 12 2.5ZM8.5 16.5C7.67 16.5 7 15.83 7 15C7 14.17 7.67 13.5 8.5 13.5C9.33 13.5 10 14.17 10 15C10 15.83 9.33 16.5 8.5 16.5ZM15.5 16.5C14.67 16.5 14 15.83 14 15C14 14.17 14.67 13.5 15.5 13.5C16.33 13.5 17 14.17 17 15C17 15.83 16.33 16.5 15.5 16.5ZM18 10.5H6V7.5H18V10.5Z"
355
+ fill="#505050"
356
+ />
357
+ </svg>`, M = 248, V = 16, i1 = f`
358
+ /* ===== HOST-LEVEL CUSTOM PROPERTIES ===== */
359
+ :host {
360
+ /* '--cm-side-nav-width' is set on 'campminder-app-shell''s ':host'
361
+ * (packages/campminder/src/layout.ts is the source of truth) and
362
+ * pierces the shadow boundary, so it's readable here even though this
363
+ * package is portal-agnostic. It also switches to the collapsed
364
+ * width, which a literal '168px' can't — the fallback below is only
365
+ * for standalone rendering with no shell present.
366
+ * '100vw' is correct for production, where the shell fills the
367
+ * viewport and the nav starts at x=0; it reads over-wide in this
368
+ * harness only because the harness page has a 24px inset the shell
369
+ * doesn't have — a harness-geometry artifact, not a formula bug. */
370
+ --cm-mega-menu-max-width: calc(100vw - var(--cm-side-nav-width, 168px));
371
+ }
372
+
373
+ /* ===== CSS RESET ===== */
374
+ * {
375
+ margin: 0;
376
+ padding: 0;
377
+ box-sizing: border-box;
378
+ }
379
+
380
+ /* ===== ANIMATIONS ===== */
381
+ @keyframes fadeIn {
382
+ from {
383
+ opacity: 0;
384
+ }
385
+ to {
386
+ opacity: 1;
387
+ }
388
+ }
389
+
390
+ /* ===== MEGA MENU CONTAINER ===== */
391
+ .mega-menu {
392
+ position: absolute;
393
+ left: 100%;
394
+ top: 0;
395
+ max-width: var(--cm-mega-menu-max-width);
396
+ height: 100%;
397
+ border-radius: 4px;
398
+ background: #fff;
399
+ box-shadow: 0px 2px 16px 0px rgba(0, 0, 0, 0.12);
400
+ animation: fadeIn 0.5s ease;
401
+ }
402
+
403
+ /* ===== HEADER SECTION ===== */
404
+ .header {
405
+ display: flex;
406
+ align-items: center;
407
+ justify-content: space-between;
408
+ color: #505050;
409
+ border-bottom: 1px solid rgba(160, 160, 160, 1);
410
+ margin: 0 16px;
411
+ height: 56px;
412
+ }
413
+
414
+ .header-left {
415
+ display: flex;
416
+ align-items: center;
417
+ }
418
+
419
+ .header-title {
420
+ display: grid;
421
+ place-content: center;
422
+ }
423
+
424
+ .header-icon {
425
+ margin-right: 8px;
426
+ display: flex;
427
+ justify-content: center;
428
+ align-items: center;
429
+ }
430
+
431
+ /* ===== CLOSE BUTTON ===== */
432
+ .close-button {
433
+ display: flex;
434
+ width: 24px;
435
+ height: 24px;
436
+ justify-content: center;
437
+ align-items: center;
438
+ border-radius: 4px;
439
+ cursor: pointer;
440
+ transition: background 0.2s ease;
441
+ }
442
+
443
+ .close-button:hover {
444
+ background: rgba(119, 61, 189, 0.12);
445
+ }
446
+
447
+ /* ===== TYPOGRAPHY ===== */
448
+ .title-text {
449
+ color: #505050;
450
+ font-family: 'Inter', sans-serif;
451
+ font-size: 16px;
452
+ font-weight: 600;
453
+ line-height: 24px;
454
+ letter-spacing: 0.0025em;
455
+ }
456
+
457
+ /* ===== MENU ITEMS CONTAINER ===== */
458
+ .menu-items {
459
+ height: calc(100% - 56px);
460
+ max-width: var(--cm-mega-menu-max-width);
461
+ display: flex;
462
+ flex-flow: column wrap;
463
+ padding: 10px 16px 10px 0px;
464
+ overflow: auto;
465
+ }
466
+
467
+ /* ===== MENU ITEM ===== */
468
+ .menu-item {
469
+ width: ${M}px;
470
+ margin-left: ${V}px;
471
+ margin-bottom: 12px;
472
+ font-family: 'Inter', sans-serif;
473
+ font-size: 14px;
474
+ font-weight: 400;
475
+ line-height: 20px;
476
+ letter-spacing: -0.001em;
477
+ }
478
+
479
+ .menu-title {
480
+ display: flex;
481
+ width: 248px;
482
+ padding: 4px 12px;
483
+ align-items: center;
484
+ gap: 8px;
485
+ }
486
+
487
+ /* ===== MENU LINKS ===== */
488
+ .menu-url {
489
+ display: flex;
490
+ align-items: center;
491
+ width: 248px;
492
+ min-height: 32px;
493
+ padding: 6px 12px;
494
+ border-radius: 4px;
495
+ text-decoration: none;
496
+ color: #380f8c;
497
+ transition: background 0.2s ease;
498
+ }
499
+
500
+ .menu-url:hover,
501
+ .menu-url:focus {
502
+ background: rgba(119, 61, 189, 0.12);
503
+ outline: none;
504
+ cursor: pointer;
505
+ }
506
+
507
+ .new-tab-icon {
508
+ margin-left: 4px;
509
+ display: grid;
510
+ place-content: center;
511
+ }
512
+
513
+ /* ===== RESPONSIVE ===== */
514
+ @media (max-width: 1150px) {
515
+ .menu-items {
516
+ flex-wrap: nowrap;
517
+ }
518
+ }
519
+ `, y = {
520
+ AccountsSvgIcon: j,
521
+ AdminSvgIcon: F,
522
+ AlumniSvgIcon: K,
523
+ CamperSvgIcon: Y,
524
+ CommunicationSvgIcon: q,
525
+ CampInTouchSvgIcon: W,
526
+ FinancialSvgIcon: X,
527
+ MedicalSvgIcon: J,
528
+ ReportingSvgIcon: Q,
529
+ SchedulingSvgIcon: e1,
530
+ StaffSvgIcon: t1,
531
+ TravelSvgIcon: o1
532
+ };
533
+ function n1(e) {
534
+ return e ? e.id === "home" ? H : y[`${e.label}SvgIcon`] ?? u : u;
535
+ }
536
+ function w1(e) {
537
+ return e ? e.id === "home" ? !0 : `${e.label}SvgIcon` in y : !1;
538
+ }
539
+ function d(e) {
540
+ return e.startsWith("http") ? new URL(e).pathname + new URL(e).search : e;
541
+ }
542
+ function s1(e, o) {
543
+ const n = d(o);
544
+ for (const i of e) {
545
+ if (i.href && d(i.href) === n)
546
+ return i.id;
547
+ for (const s of i.subCategories)
548
+ if (s.href && d(s.href) === n || s.items.find((a) => d(a.href) === n)) return i.id;
549
+ }
550
+ }
551
+ function r1(e) {
552
+ return e.items.length > 0 || !!e.href;
553
+ }
554
+ function C(e) {
555
+ return e.subCategories.filter(r1);
556
+ }
557
+ function a1(e, o) {
558
+ const n = e.find((i) => i.id === o);
559
+ return !!n && C(n).length > 0;
560
+ }
561
+ function l1(e, o) {
562
+ return o === "/" ? "home" : s1(e, o) ?? "";
563
+ }
564
+ var h1 = Object.defineProperty, c1 = Object.getOwnPropertyDescriptor, v = (e, o, n, i) => {
565
+ for (var s = i > 1 ? void 0 : i ? c1(o, n) : o, r = e.length - 1, a; r >= 0; r--)
566
+ (a = e[r]) && (s = (i ? a(o, n, s) : a(s)) || s);
567
+ return i && s && h1(o, n, s), s;
568
+ };
569
+ let h = class extends m {
570
+ constructor() {
571
+ super(...arguments), this.tree = [], this.categoryId = "", this.handleKeyDown = (e) => {
572
+ var o, n;
573
+ if (e.key === "Escape")
574
+ this.handleCloseMegaMenu();
575
+ else if (e.key === "Tab") {
576
+ const i = (o = this.shadowRoot) == null ? void 0 : o.querySelectorAll("a.menu-title, .menu-url");
577
+ if (!i || i.length === 0) return;
578
+ const s = (n = this.shadowRoot) == null ? void 0 : n.activeElement;
579
+ e.shiftKey && s === i[0] ? (e.preventDefault(), this.handleCloseMegaMenu()) : !e.shiftKey && s === i[i.length - 1] && (e.preventDefault(), i[0].focus());
580
+ }
581
+ };
582
+ }
583
+ connectedCallback() {
584
+ super.connectedCallback(), this.addEventListener("keydown", this.handleKeyDown);
585
+ }
586
+ disconnectedCallback() {
587
+ super.disconnectedCallback(), this.removeEventListener("keydown", this.handleKeyDown);
588
+ }
589
+ get categoryData() {
590
+ return this.tree.find((e) => e.id === this.categoryId);
591
+ }
592
+ handleCloseMegaMenu() {
593
+ this.dispatchEvent(
594
+ new CustomEvent("cm-mega-menu-close", {
595
+ bubbles: !0,
596
+ composed: !0,
597
+ cancelable: !0
598
+ })
599
+ );
600
+ }
601
+ /**
602
+ * Packs menu items into as many 248px columns as the container's own
603
+ * measured height allows. The `getBoundingClientRect()` calls below are
604
+ * this component measuring its own shadow root, not a sibling, so they
605
+ * don't trip the one rule. The `window.innerWidth <= 1150` gate is a
606
+ * different thing and does not get the same pass: it's a page-viewport
607
+ * read uncorrelated with this component's actual available width, kept
608
+ * only because it's what upstream gated on. `window.innerWidth` is 1024
609
+ * under jsdom, so this early return fires on every test run and the
610
+ * packing logic below it was, until the test added for this floor,
611
+ * unexercised by the suite.
612
+ */
613
+ setMenuItemsContainerWidth() {
614
+ var s;
615
+ const e = (s = this.shadowRoot) == null ? void 0 : s.querySelector(".menu-items");
616
+ if (!e || window.innerWidth <= 1150) return;
617
+ const o = e.getBoundingClientRect().height - 20;
618
+ let n = 1, i = 0;
619
+ for (const r of e.children)
620
+ i + r.getBoundingClientRect().height + 12 > // 12 for bottom margin on item
621
+ o && (n += 1, i = 0), i += r.getBoundingClientRect().height + 12;
622
+ e.style.width = `${n * M + (n + 1) * V}px`;
623
+ }
624
+ updated(e) {
625
+ super.updated(e), this.setMenuItemsContainerWidth();
626
+ }
627
+ // 2026-09-04: `label` may carry an unresolved `{{Bunk:Proper:Default}}`-style
628
+ // terminology token, on both a sub-category header and a leaf. Rendered
629
+ // verbatim below on purpose — see AGENTS.md's "Never resolve a terminology
630
+ // token."
631
+ renderLeaf(e) {
632
+ return e.popup ? t`
633
+ <a
634
+ class="menu-url"
635
+ href="#nowhere"
636
+ @click=${() => {
637
+ const o = window.open(e.href, "", e.popupProperties);
638
+ return o && (o.opener = null), !1;
639
+ }}
640
+ target="_top"
641
+ >
642
+ ${e.label}
643
+ <span class="new-tab-icon">${w}</span>
644
+ </a>
645
+ ` : t`
646
+ <a
647
+ class="menu-url"
648
+ href="${e.href}"
649
+ target=${e.newTab ? "_blank" : "_self"}
650
+ rel=${b(e.newTab ? "noopener noreferrer" : void 0)}
651
+ >
652
+ ${e.label}
653
+ ${e.newTab ? t`<span class="new-tab-icon">${w}</span>` : null}
654
+ </a>
655
+ `;
656
+ }
657
+ render() {
658
+ const e = this.categoryData, o = e ? C(e) : [];
659
+ return !e || o.length === 0 ? null : t`
660
+ <section class="mega-menu">
661
+ <div class="header">
662
+ <div class="header-left">
663
+ <div class="header-icon">${n1(e)}</div>
664
+ <p class="header-title title-text">${e.label}</p>
665
+ </div>
666
+ <p class="close-button" @click=${this.handleCloseMegaMenu}>${k()}</p>
667
+ </div>
668
+ <div class="menu-items">
669
+ ${o.map(
670
+ (n) => t`
671
+ <div class="menu-item">
672
+ ${// Deliberate addition, not upstream parity — core-js's
673
+ // `sub_categories[]` never carried a `url`, so there's no parity to
674
+ // break. `MenuSubCategory.href?` lets a sub-category be a direct
675
+ // link, and `isRenderableSubCategory` (`Utils/helpers.ts`) already
676
+ // keeps such a node alive when it has no items. Rendering only
677
+ // `sub.items` left that node's header going nowhere — no live case
678
+ // in `campminder.json` today, but Floor 6's visibility filter can
679
+ // produce one: an `href`-bearing sub-category whose every leaf is
680
+ // gated off for the viewer.
681
+ n.href ? t`<a class="title-text menu-title" href="${n.href}">${n.label}</a>` : t`<p class="title-text menu-title">${n.label}</p>`}
682
+ ${n.items.map((i) => this.renderLeaf(i))}
683
+ </div>
684
+ `
685
+ )}
686
+ </div>
687
+ </section>
688
+ `;
689
+ }
690
+ };
691
+ h.styles = [i1];
692
+ v([
693
+ c({ attribute: !1 })
694
+ ], h.prototype, "tree", 2);
695
+ v([
696
+ c({ type: String, attribute: "category-id" })
697
+ ], h.prototype, "categoryId", 2);
698
+ h = v([
699
+ x("cm-mega-menu")
700
+ ], h);
701
+ const g1 = f`
702
+ /* ===== CSS CUSTOM PROPERTIES (DESIGN TOKENS) ===== */
703
+ :host {
704
+ display: block;
705
+ height: 100%;
706
+
707
+ --sidebar-header-height: 56px;
708
+ --category-height: 48px;
709
+ --overlay-menu-width: 90vw;
710
+ --overlay-menu-max-width: 400px;
711
+ --menu-item-min-height: 52px;
712
+
713
+ /* Color tokens */
714
+ --color-bg-gradient: linear-gradient(152.45deg, #851936 -26.73%, #590e39 5.17%, #25023d 42.09%);
715
+ --color-border: #ffffff29;
716
+ --color-border-gray: rgb(160, 160, 160);
717
+ --color-border-light: rgba(255, 255, 255, 0.05);
718
+ --color-border-medium: rgba(255, 255, 255, 0.2);
719
+ --color-text: white;
720
+ --color-hover: #773dbd3d;
721
+ --color-selected: #ffffff52;
722
+ --color-focus: #2266cc;
723
+ --color-backdrop: rgba(0, 0, 0, 0.5);
724
+ --color-section-bg: rgba(255, 255, 255, 0.08);
725
+
726
+ /* Animation tokens */
727
+ --duration-fast: 0.2s;
728
+ --duration-normal: 0.3s;
729
+ --duration-slow: 0.45s;
730
+ --easing-standard: cubic-bezier(0.2, 0, 0.38, 0.9);
731
+ --easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
732
+ --easing-exit: cubic-bezier(0.4, 0, 0.2, 1);
733
+
734
+ /* Typography tokens */
735
+ --font-family: 'Inter', sans-serif;
736
+ --font-size-base: 14px;
737
+ --font-size-medium: 15px;
738
+ --font-size-large: 16px;
739
+ --font-size-xl: 20px;
740
+ --line-height-base: 20px;
741
+
742
+ /* Spacing tokens */
743
+ --spacing-xs: 8px;
744
+ --spacing-sm: 12px;
745
+ --spacing-md: 16px;
746
+ --spacing-lg: 20px;
747
+ --spacing-xl: 24px;
748
+ --spacing-2xl: 28px;
749
+
750
+ /* Icon sizes */
751
+ --icon-size-small: 16px;
752
+ --icon-size-base: 24px;
753
+ --icon-size-large: 40px;
754
+ }
755
+
756
+ /* ===== RESET & BASE STYLES ===== */
757
+ :focus-visible {
758
+ outline: none !important;
759
+ }
760
+
761
+ * {
762
+ margin: 0;
763
+ padding: 0;
764
+ box-sizing: border-box;
765
+ }
766
+
767
+ /* ===== MENU TOGGLE BUTTON (mobile; unused until Floor 5D, kept for parity) ===== */
768
+ .menu-toggle {
769
+ width: var(--sidebar-header-height);
770
+ height: var(--sidebar-header-height);
771
+ cursor: pointer;
772
+ display: none;
773
+ background: white;
774
+ border: none;
775
+ border-bottom: 1px solid var(--color-border-gray);
776
+ justify-content: center;
777
+ align-items: center;
778
+ }
779
+
780
+ .toggle-mobile-btn {
781
+ width: var(--icon-size-base);
782
+ height: var(--icon-size-base);
783
+ }
784
+
785
+ /* ===== NAVIGATION CONTAINER ===== */
786
+ .nav-container {
787
+ display: flex;
788
+ height: 100%;
789
+ /* 2026-09-04, Floor 5: the positioning context for the mega-menu flyout,
790
+ * which is 'position: absolute; left: 100%' inside its own shadow root
791
+ * (MegaMenu.styles.ts). '.side-nav' below is already 'width: 100%' of
792
+ * this container, so 'left: 100%' lands the flyout at the column's right
793
+ * edge without widening the column itself. */
794
+ position: relative;
795
+ }
796
+
797
+ /* ===== SIDEBAR BASE STYLES ===== */
798
+ .side-nav {
799
+ width: 100%;
800
+ height: 100%;
801
+ color: var(--color-text);
802
+ background: var(--color-bg-gradient);
803
+ display: flex;
804
+ flex-direction: column;
805
+ position: relative;
806
+ will-change: transform;
807
+ -webkit-overflow-scrolling: touch;
808
+ transition:
809
+ width var(--duration-fast) var(--easing-standard),
810
+ transform var(--duration-fast) var(--easing-standard);
811
+ }
812
+
813
+ .collapsed-sidebar .category-name {
814
+ opacity: 0;
815
+ pointer-events: none;
816
+ }
817
+
818
+ /* ===== HEADER BUTTONS ===== */
819
+ .menu-close,
820
+ .sidebar-toggle {
821
+ width: 100%;
822
+ height: var(--sidebar-header-height);
823
+ background: transparent;
824
+ border: none;
825
+ cursor: pointer;
826
+ display: flex;
827
+ align-items: center;
828
+ }
829
+
830
+ .menu-close {
831
+ border-bottom: 1px solid var(--color-border-light);
832
+ justify-content: flex-end;
833
+ padding: 0 var(--spacing-lg);
834
+ }
835
+
836
+ .sidebar-toggle {
837
+ border-bottom: 1px solid var(--color-border);
838
+ justify-content: right;
839
+ color: var(--color-text);
840
+ padding: 14px 18px;
841
+ }
842
+
843
+ .sidebar-toggle:hover {
844
+ background: var(--color-hover);
845
+ }
846
+
847
+ .sidebar-toggle:focus {
848
+ border: 1px solid var(--color-focus);
849
+ background: var(--color-hover);
850
+ border-right: none;
851
+ outline: none;
852
+ }
853
+
854
+ .toggle-btn {
855
+ display: flex;
856
+ align-items: center;
857
+ }
858
+
859
+ /* ===== MAIN NAVIGATION CONTENT ===== */
860
+ .nav-main-content {
861
+ flex: 1;
862
+ display: flex;
863
+ flex-direction: column;
864
+ /* 2026-09-04, Floor 5: the shell's '[part=nav]' did drop its own
865
+ * 'overflow: hidden' so the flyout can escape the nav column
866
+ * (app-shell.ts), but that does not make this element the scroll
867
+ * boundary — '.categories-container' / '.categories-list' below has
868
+ * been that boundary since Floor 4 and this diff didn't touch it.
869
+ * Measured: '.nav-main-content' has zero overflow (scrollHeight ===
870
+ * clientHeight) in all three compositions; '.categories-container' is
871
+ * the one that actually scrolls. Leave this 'hidden' — an 'auto' on
872
+ * only the y-axis leaves the x-axis at its default 'visible', which
873
+ * per spec computes to 'auto' too (one axis 'auto' forces the other
874
+ * off 'visible'), opening a horizontal scrollbar in this 168px column
875
+ * that 'hidden' correctly suppresses on both axes. Don't "improve"
876
+ * this to 'overflow-y: auto' later. */
877
+ overflow: hidden;
878
+ }
879
+
880
+ /* ===== CATEGORIES CONTAINER ===== */
881
+ .categories-container,
882
+ .categories-list {
883
+ flex: 1;
884
+ overflow: auto;
885
+ scroll-behavior: smooth;
886
+ -webkit-overflow-scrolling: touch;
887
+ scrollbar-width: none;
888
+ -ms-overflow-style: none;
889
+ }
890
+
891
+ .categories-container::-webkit-scrollbar,
892
+ .categories-list::-webkit-scrollbar {
893
+ display: none;
894
+ }
895
+
896
+ .categories-list {
897
+ list-style: none;
898
+ margin: 0;
899
+ padding: 0;
900
+ }
901
+
902
+ .categories-list li {
903
+ display: contents;
904
+ }
905
+
906
+ .categories-list li:focus-within .category {
907
+ outline: 2px solid var(--color-focus);
908
+ }
909
+
910
+ /* ===== CATEGORY ITEMS ===== */
911
+ .category {
912
+ width: 100%;
913
+ height: var(--category-height);
914
+ display: flex;
915
+ align-items: center;
916
+ border: none;
917
+ border-bottom: 1px solid var(--color-border);
918
+ background: transparent;
919
+ text-decoration: none;
920
+ padding: var(--spacing-md);
921
+ color: var(--color-text);
922
+ cursor: pointer;
923
+ position: relative;
924
+
925
+ /* Typography */
926
+ font-family: var(--font-family);
927
+ font-size: var(--font-size-base);
928
+ font-weight: 400;
929
+ line-height: var(--line-height-base);
930
+ letter-spacing: -0.001em;
931
+ text-align: left;
932
+ overflow: hidden;
933
+ }
934
+
935
+ .category:focus {
936
+ border: 1px solid var(--color-focus);
937
+ background: var(--color-hover);
938
+ border-right: none;
939
+ outline: none;
940
+ }
941
+
942
+ .category.selected {
943
+ background: var(--color-selected);
944
+ }
945
+
946
+ /* Sidebar hover effects for categories */
947
+ .category-hovered,
948
+ .category:hover {
949
+ background: var(--color-hover);
950
+ }
951
+
952
+ .category-hovered::after {
953
+ content: '';
954
+ width: var(--icon-size-small);
955
+ height: var(--icon-size-small);
956
+ transform: rotate(-45deg);
957
+ border-radius: 2px;
958
+ background: #fff;
959
+ position: absolute;
960
+ top: calc(50% - var(--spacing-xs));
961
+ right: -10px;
962
+ }
963
+
964
+ .category-icon {
965
+ margin-right: var(--spacing-sm);
966
+ display: flex;
967
+ justify-content: center;
968
+ align-items: center;
969
+ min-width: var(--icon-size-base);
970
+ height: var(--icon-size-base);
971
+ }
972
+
973
+ .category-name {
974
+ flex: 1;
975
+ opacity: 1;
976
+ text-align: left;
977
+ }
978
+
979
+ .chevron-right {
980
+ margin-left: auto;
981
+ display: flex;
982
+ align-items: center;
983
+ }
984
+
985
+ /* ===== ACCESSIBILITY ===== */
986
+ @media (prefers-reduced-motion: reduce) {
987
+ *,
988
+ *::before,
989
+ *::after {
990
+ animation-duration: 0.01ms !important;
991
+ animation-iteration-count: 1 !important;
992
+ }
993
+ }
994
+ `, L = {
995
+ AccountsSvgIcon: S,
996
+ AdminSvgIcon: E,
997
+ AlumniSvgIcon: T,
998
+ CamperSvgIcon: $,
999
+ CommunicationSvgIcon: A,
1000
+ CampInTouchSvgIcon: B,
1001
+ FinancialSvgIcon: O,
1002
+ HomeSvgIcon: H,
1003
+ MedicalSvgIcon: R,
1004
+ ReportingSvgIcon: G,
1005
+ SchedulingSvgIcon: P,
1006
+ StaffSvgIcon: D,
1007
+ TravelSvgIcon: U
1008
+ };
1009
+ function d1(e) {
1010
+ return e ? L[`${e}SvgIcon`] ?? p : p;
1011
+ }
1012
+ function f1(e) {
1013
+ return !!e && `${e}SvgIcon` in L;
1014
+ }
1015
+ var C1 = Object.defineProperty, v1 = Object.getOwnPropertyDescriptor, g = (e, o, n, i) => {
1016
+ for (var s = i > 1 ? void 0 : i ? v1(o, n) : o, r = e.length - 1, a; r >= 0; r--)
1017
+ (a = e[r]) && (s = (i ? a(o, n, s) : a(s)) || s);
1018
+ return i && s && C1(o, n, s), s;
1019
+ };
1020
+ let l = class extends m {
1021
+ constructor() {
1022
+ super(...arguments), this.hoveredCategory = "", this.collapsed = !1, this.currentPath = "", this.tree = [], this.toggleSidenav = () => {
1023
+ this.dispatchEvent(
1024
+ new CustomEvent("cm-side-nav-toggle", {
1025
+ detail: { collapsed: !this.collapsed },
1026
+ bubbles: !0,
1027
+ composed: !0
1028
+ })
1029
+ );
1030
+ };
1031
+ }
1032
+ /**
1033
+ * Computed on render rather than cached in `@state` and refreshed from
1034
+ * `updated()` — core-js's shape. That pattern writes state from inside the
1035
+ * `updated()` lifecycle hook, which schedules a second update on top of the one
1036
+ * already in flight (Lit warns: "scheduled an update ... after an update
1037
+ * completed"). `selectedCategory` is a pure function of `tree` and
1038
+ * `currentPath`, both already reactive properties, so there is nothing this
1039
+ * getter needs to cache.
1040
+ */
1041
+ get selectedCategory() {
1042
+ return l1(this.tree, this.currentPath);
1043
+ }
1044
+ disconnectedCallback() {
1045
+ super.disconnectedCallback(), this.clearHoverTimeout();
1046
+ }
1047
+ setSelectedCategory(e) {
1048
+ this.handleMenuItemHover(e);
1049
+ }
1050
+ handleMenuItemHover(e) {
1051
+ this.hoveredCategory = e;
1052
+ }
1053
+ clearHoverTimeout() {
1054
+ this.hoverTimeout !== void 0 && (clearTimeout(this.hoverTimeout), this.hoverTimeout = void 0);
1055
+ }
1056
+ handleMouseEnter(e) {
1057
+ this.clearHoverTimeout(), this.hoverTimeout = window.setTimeout(() => {
1058
+ this.handleMenuItemHover(e);
1059
+ }, 300);
1060
+ }
1061
+ handleMouseLeave() {
1062
+ this.clearHoverTimeout();
1063
+ }
1064
+ // Utility Methods
1065
+ get hamburgerIcon() {
1066
+ return this.collapsed ? _ : z;
1067
+ }
1068
+ /**
1069
+ * The category the mega-menu flyout is open for, or `undefined` when none
1070
+ * is. Guards on `renderableSubCategories(category).length > 0` (the same
1071
+ * predicate `hasSubmenus` uses for the chevron above) rather than on
1072
+ * `hoveredCategory` alone — `hoveredCategory` can also be the literal
1073
+ * string `'sidebar-toggle'` (see `handleMouseEnter` call sites), and a
1074
+ * category with no renderable sub-categories must not open onto nothing.
1075
+ */
1076
+ get openCategory() {
1077
+ const e = this.tree.find((o) => o.id === this.hoveredCategory);
1078
+ if (!(!e || C(e).length === 0))
1079
+ return e;
1080
+ }
1081
+ buildCategoryClass(e) {
1082
+ const o = ["category"];
1083
+ return e.id === this.selectedCategory && o.push("selected"), e.id === this.hoveredCategory && o.push("category-hovered"), o.join(" ");
1084
+ }
1085
+ // 2026-09-02: `category.label` may still carry an unresolved `{{Bunk:Proper:Default}}`-style
1086
+ // terminology token — per-client substitution is a host concern, deferred by the plan (see
1087
+ // AGENTS.md's "Never resolve a terminology token"). Rendered verbatim below on purpose. A
1088
+ // future truncation, tooltip reformat, or `.trim()`/regex touch-up to `category.label` must
1089
+ // not assume it is plain text.
1090
+ getCategoryHtml(e) {
1091
+ const o = this.buildCategoryClass(e), n = a1(this.tree, e.id), i = d1(e.label);
1092
+ return n ? t`
1093
+ <button
1094
+ class="${o}"
1095
+ @mouseenter=${() => this.handleMouseEnter(e.id)}
1096
+ @mouseleave=${() => this.handleMouseLeave()}
1097
+ @click=${() => this.handleMenuItemHover(e.id)}
1098
+ >
1099
+ <div class="category-icon">${i}</div>
1100
+ <div class="category-name">${e.label}</div>
1101
+ <div class="chevron-right">${N}</div>
1102
+ </button>
1103
+ ` : t`
1104
+ <a
1105
+ class="${o}"
1106
+ @mouseenter=${() => this.handleMouseEnter(e.id)}
1107
+ @mouseleave=${() => this.handleMouseLeave()}
1108
+ @click=${() => this.setSelectedCategory(e.id)}
1109
+ href="${b(e.href)}"
1110
+ >
1111
+ <div class="category-icon">${i}</div>
1112
+ <div class="category-name">${e.label}</div>
1113
+ </a>
1114
+ `;
1115
+ }
1116
+ renderMainMenu() {
1117
+ return t`
1118
+ <nav class="categories-container" role="navigation" aria-label="Main categories">
1119
+ <ul class="categories-list" role="list">
1120
+ ${this.tree.map(
1121
+ (e) => t` <li role="listitem">${this.getCategoryHtml(e)}</li> `
1122
+ )}
1123
+ </ul>
1124
+ </nav>
1125
+ `;
1126
+ }
1127
+ render() {
1128
+ const e = this.openCategory;
1129
+ return t`
1130
+ <nav
1131
+ class="nav-container"
1132
+ role="navigation"
1133
+ aria-label="Main navigation"
1134
+ @mouseleave=${() => this.hoveredCategory = ""}
1135
+ >
1136
+ <aside
1137
+ class=${`side-nav ${this.collapsed ? "collapsed-sidebar" : ""}`}
1138
+ role="complementary"
1139
+ aria-label="Sidebar navigation"
1140
+ >
1141
+ <button
1142
+ @mouseenter=${() => this.handleMouseEnter("sidebar-toggle")}
1143
+ @mouseleave=${() => this.handleMouseLeave()}
1144
+ class="sidebar-toggle"
1145
+ @click=${this.toggleSidenav}
1146
+ aria-label="Toggle sidebar"
1147
+ aria-expanded=${this.collapsed ? "false" : "true"}
1148
+ >
1149
+ <span class="toggle-btn">${this.hamburgerIcon}</span>
1150
+ </button>
1151
+
1152
+ <main class="nav-main-content" role="main">${this.renderMainMenu()}</main>
1153
+ </aside>
1154
+
1155
+ <!--
1156
+ The flyout renders here, inside this component's own shadow root —
1157
+ as core-js did — rather than through a slot. A named flyout slot
1158
+ lived here through Floor 4; Floor 5 found it unpayable: filling it
1159
+ from light DOM would have forced hoveredCategory into public API
1160
+ and crossed the component's own encapsulation. cm-mega-menu gets
1161
+ the whole tree plus the open category's id (never a resolved node —
1162
+ see MegaMenu.ts's doc comment). Its close event resets
1163
+ hoveredCategory back to '' — it is the derived openCategory getter
1164
+ above, not hoveredCategory itself, that becomes undefined.
1165
+ -->
1166
+ ${e ? t`
1167
+ <cm-mega-menu
1168
+ .tree=${this.tree}
1169
+ category-id=${e.id}
1170
+ @cm-mega-menu-close=${() => this.hoveredCategory = ""}
1171
+ ></cm-mega-menu>
1172
+ ` : null}
1173
+ </nav>
1174
+ `;
1175
+ }
1176
+ };
1177
+ l.styles = [g1];
1178
+ g([
1179
+ Z()
1180
+ ], l.prototype, "hoveredCategory", 2);
1181
+ g([
1182
+ c({ type: Boolean, reflect: !0 })
1183
+ ], l.prototype, "collapsed", 2);
1184
+ g([
1185
+ c({ type: String, attribute: "current-path" })
1186
+ ], l.prototype, "currentPath", 2);
1187
+ g([
1188
+ c({ attribute: !1 })
1189
+ ], l.prototype, "tree", 2);
1190
+ l = g([
1191
+ x("cm-side-nav")
1192
+ ], l);
1193
+ export {
1194
+ h as MegaMenu,
1195
+ l as SideNav,
1196
+ f1 as hasIconFor,
1197
+ w1 as hasMegaMenuIconFor
1198
+ };