solid-ui 3.0.6 → 3.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 (129) hide show
  1. package/README.md +128 -2
  2. package/dist/acl/access-groups.js +1 -1
  3. package/dist/components/footer/index.d.ts +1 -0
  4. package/dist/components/footer/index.esm.js +24364 -0
  5. package/dist/components/footer/index.esm.js.map +1 -0
  6. package/dist/components/footer/index.esm.min.js +137 -0
  7. package/dist/components/footer/index.esm.min.js.map +1 -0
  8. package/dist/components/footer/index.js +23252 -0
  9. package/dist/components/footer/index.js.map +1 -0
  10. package/dist/components/footer/index.min.js +125 -0
  11. package/dist/components/footer/index.min.js.map +1 -0
  12. package/dist/components/header/index.d.ts +1 -0
  13. package/dist/components/header/index.esm.js +1894 -0
  14. package/dist/components/header/index.esm.js.map +1 -0
  15. package/dist/components/header/index.esm.min.js +1083 -0
  16. package/dist/components/header/index.esm.min.js.map +1 -0
  17. package/dist/components/header/index.js +1855 -0
  18. package/dist/components/header/index.js.map +1 -0
  19. package/dist/components/header/index.min.js +1084 -0
  20. package/dist/components/header/index.min.js.map +1 -0
  21. package/dist/components/loginButton/index.d.ts +1 -0
  22. package/dist/components/loginButton/index.esm.js +719 -0
  23. package/dist/components/loginButton/index.esm.js.map +1 -0
  24. package/dist/components/loginButton/index.esm.min.js +402 -0
  25. package/dist/components/loginButton/index.esm.min.js.map +1 -0
  26. package/dist/components/loginButton/index.js +701 -0
  27. package/dist/components/loginButton/index.js.map +1 -0
  28. package/dist/components/loginButton/index.min.js +402 -0
  29. package/dist/components/loginButton/index.min.js.map +1 -0
  30. package/dist/components/signupButton/index.d.ts +1 -0
  31. package/dist/components/signupButton/index.esm.js +270 -0
  32. package/dist/components/signupButton/index.esm.js.map +1 -0
  33. package/dist/components/signupButton/index.esm.min.js +82 -0
  34. package/dist/components/signupButton/index.esm.min.js.map +1 -0
  35. package/dist/components/signupButton/index.js +264 -0
  36. package/dist/components/signupButton/index.js.map +1 -0
  37. package/dist/components/signupButton/index.min.js +82 -0
  38. package/dist/components/signupButton/index.min.js.map +1 -0
  39. package/dist/footer/index.d.ts.map +1 -1
  40. package/dist/footer/index.js +8 -4
  41. package/dist/footer/index.js.map +1 -1
  42. package/dist/icons/v2/icons-svg/contactIcons.d.ts +3 -0
  43. package/dist/icons/v2/icons-svg/contactIcons.d.ts.map +1 -0
  44. package/dist/icons/v2/icons-svg/contactIcons.js +27 -0
  45. package/dist/icons/v2/icons-svg/contactIcons.js.map +1 -0
  46. package/dist/icons/v2/icons-svg/headerIcons.d.ts +18 -0
  47. package/dist/icons/v2/icons-svg/headerIcons.d.ts.map +1 -0
  48. package/dist/icons/v2/icons-svg/headerIcons.js +245 -0
  49. package/dist/icons/v2/icons-svg/headerIcons.js.map +1 -0
  50. package/dist/icons/v2/icons-svg/pngIcons.d.ts +3 -0
  51. package/dist/icons/v2/icons-svg/pngIcons.d.ts.map +1 -0
  52. package/dist/icons/v2/icons-svg/pngIcons.js +4 -0
  53. package/dist/icons/v2/icons-svg/pngIcons.js.map +1 -0
  54. package/dist/icons/v2/icons-svg/profileIcons.d.ts +23 -0
  55. package/dist/icons/v2/icons-svg/profileIcons.d.ts.map +1 -0
  56. package/dist/icons/v2/icons-svg/profileIcons.js +317 -0
  57. package/dist/icons/v2/icons-svg/profileIcons.js.map +1 -0
  58. package/dist/pad.d.ts.map +1 -1
  59. package/dist/pad.js +13 -13
  60. package/dist/pad.js.map +1 -1
  61. package/dist/solid-ui.esm.js +9560 -12181
  62. package/dist/solid-ui.esm.js.map +1 -1
  63. package/dist/solid-ui.esm.min.js +15 -14
  64. package/dist/solid-ui.esm.min.js.map +1 -1
  65. package/dist/solid-ui.js +12531 -14794
  66. package/dist/solid-ui.js.map +1 -1
  67. package/dist/solid-ui.min.js +23 -22
  68. package/dist/solid-ui.min.js.map +1 -1
  69. package/dist/utils/headerFooterHelpers.d.ts.map +1 -1
  70. package/dist/utils/headerFooterHelpers.js +11 -2
  71. package/dist/utils/headerFooterHelpers.js.map +1 -1
  72. package/dist/v2/components/footer/Footer.d.ts +60 -0
  73. package/dist/v2/components/footer/Footer.d.ts.map +1 -0
  74. package/dist/v2/components/footer/Footer.js +148 -0
  75. package/dist/v2/components/footer/Footer.js.map +1 -0
  76. package/dist/v2/components/footer/Footer.test.d.ts +2 -0
  77. package/dist/v2/components/footer/Footer.test.d.ts.map +1 -0
  78. package/dist/v2/components/footer/Footer.test.js +53 -0
  79. package/dist/v2/components/footer/Footer.test.js.map +1 -0
  80. package/dist/v2/components/footer/index.d.ts +3 -0
  81. package/dist/v2/components/footer/index.d.ts.map +1 -0
  82. package/dist/v2/components/footer/index.js +7 -0
  83. package/dist/v2/components/footer/index.js.map +1 -0
  84. package/dist/v2/components/header/Header.d.ts +155 -0
  85. package/dist/v2/components/header/Header.d.ts.map +1 -0
  86. package/dist/v2/components/header/Header.js +845 -0
  87. package/dist/v2/components/header/Header.js.map +1 -0
  88. package/dist/v2/components/header/header.test.d.ts +2 -0
  89. package/dist/v2/components/header/header.test.d.ts.map +1 -0
  90. package/dist/v2/components/header/header.test.js +242 -0
  91. package/dist/v2/components/header/header.test.js.map +1 -0
  92. package/dist/v2/components/header/index.d.ts +4 -0
  93. package/dist/v2/components/header/index.d.ts.map +1 -0
  94. package/dist/v2/components/header/index.js +7 -0
  95. package/dist/v2/components/header/index.js.map +1 -0
  96. package/dist/v2/components/loginButton/LoginButton.d.ts +62 -0
  97. package/dist/v2/components/loginButton/LoginButton.d.ts.map +1 -0
  98. package/dist/v2/components/loginButton/LoginButton.js +497 -0
  99. package/dist/v2/components/loginButton/LoginButton.js.map +1 -0
  100. package/dist/v2/components/loginButton/LoginButton.test.d.ts +2 -0
  101. package/dist/v2/components/loginButton/LoginButton.test.d.ts.map +1 -0
  102. package/dist/v2/components/loginButton/LoginButton.test.js +53 -0
  103. package/dist/v2/components/loginButton/LoginButton.test.js.map +1 -0
  104. package/dist/v2/components/loginButton/downArrow.d.ts +2 -0
  105. package/dist/v2/components/loginButton/downArrow.d.ts.map +1 -0
  106. package/dist/v2/components/loginButton/downArrow.js +10 -0
  107. package/dist/v2/components/loginButton/downArrow.js.map +1 -0
  108. package/dist/v2/components/loginButton/index.d.ts +3 -0
  109. package/dist/v2/components/loginButton/index.d.ts.map +1 -0
  110. package/dist/v2/components/loginButton/index.js +7 -0
  111. package/dist/v2/components/loginButton/index.js.map +1 -0
  112. package/dist/v2/components/signupButton/SignupButton.d.ts +36 -0
  113. package/dist/v2/components/signupButton/SignupButton.d.ts.map +1 -0
  114. package/dist/v2/components/signupButton/SignupButton.js +84 -0
  115. package/dist/v2/components/signupButton/SignupButton.js.map +1 -0
  116. package/dist/v2/components/signupButton/SignupButton.test.d.ts +2 -0
  117. package/dist/v2/components/signupButton/SignupButton.test.d.ts.map +1 -0
  118. package/dist/v2/components/signupButton/SignupButton.test.js +49 -0
  119. package/dist/v2/components/signupButton/SignupButton.test.js.map +1 -0
  120. package/dist/v2/components/signupButton/index.d.ts +3 -0
  121. package/dist/v2/components/signupButton/index.d.ts.map +1 -0
  122. package/dist/v2/components/signupButton/index.js +7 -0
  123. package/dist/v2/components/signupButton/index.js.map +1 -0
  124. package/dist/versionInfo.js +7 -7
  125. package/dist/widgets/buttons.d.ts +9 -3
  126. package/dist/widgets/buttons.d.ts.map +1 -1
  127. package/dist/widgets/buttons.js +68 -7
  128. package/dist/widgets/buttons.js.map +1 -1
  129. package/package.json +34 -7
@@ -0,0 +1,1894 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_solid_logic_bb75353e__ from "solid-logic";
2
+ /******/ var __webpack_modules__ = ({
3
+
4
+ /***/ 7423
5
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6
+
7
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8
+ /* harmony export */ Rm: () => (/* binding */ log)
9
+ /* harmony export */ });
10
+ /* unused harmony exports warn, error, trace */
11
+ function log(...args) {
12
+ console.log(...args);
13
+ }
14
+ function warn(...args) {
15
+ console.warn(...args);
16
+ }
17
+ function error(...args) {
18
+ console.error(...args);
19
+ }
20
+ function trace(...args) {
21
+ console.trace(...args);
22
+ }
23
+
24
+ /***/ },
25
+
26
+ /***/ 3378
27
+ (module, __webpack_exports__, __webpack_require__) {
28
+
29
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
30
+ /* harmony export */ Pt: () => (/* binding */ icons)
31
+ /* harmony export */ });
32
+ /* unused harmony exports iconBase, originalIconBase */
33
+ /* harmony import */ var _debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7423);
34
+ /* module decorator */ module = __webpack_require__.hmd(module);
35
+ // Works in FF extension - what about browserify??
36
+ // 2021-04-08 Convert to TS
37
+
38
+ /* The Firefox case is left for historical record, as we don't currenly
39
+ * have a FF extension for mashlib, but we could. This is sthepoint to
40
+ * hack the place it can find its icons internally
41
+ *
42
+ * The $SolidTestEnvironment is important and is used for
43
+ * example when testing on localhost to specify a place the icons be found
44
+ * in your test set up.
45
+ *
46
+ * You can also use it if you want to just run a mashlib whhich takes its
47
+ * icons seved by other than github.
48
+ */
49
+
50
+
51
+ // Do not export. Always us this module to find the icons, as they vary
52
+ const iconsOnGithub = 'https://solidos.github.io/solid-ui/src'; // changed org 2022-05
53
+
54
+ const icons = module.scriptURI // Firefox extension
55
+ ? {
56
+ iconBase: module.scriptURI.slice(0, module.scriptURI.lastIndexOf('/')) + '/icons/',
57
+ originalIconBase: module.scriptURI.slice(0, module.scriptURI.lastIndexOf('/')) + '/originalIcons/'
58
+ } : typeof $SolidTestEnvironment !== 'undefined' && $SolidTestEnvironment.iconBase // Test environemnt
59
+ ? {
60
+ iconBase: $SolidTestEnvironment.iconBase,
61
+ originalIconBase: $SolidTestEnvironment.originalIconBase
62
+ } : {
63
+ // Normal case:
64
+ iconBase: iconsOnGithub + '/icons/',
65
+ originalIconBase: iconsOnGithub + '/originalIcons/'
66
+ };
67
+ (0,_debug__WEBPACK_IMPORTED_MODULE_0__/* .log */ .Rm)(' icons.iconBase is set to : ' + icons.iconBase);
68
+
69
+ // allow tests etc named-import this directly from this module
70
+ const iconBase = icons.iconBase;
71
+ const originalIconBase = icons.originalIconBase;
72
+
73
+ /***/ },
74
+
75
+ /***/ 225
76
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
77
+
78
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
79
+ /* harmony export */ Y: () => (/* binding */ Header)
80
+ /* harmony export */ });
81
+ /* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6161);
82
+ /* harmony import */ var _iconBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3378);
83
+ /* harmony import */ var solid_logic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3138);
84
+ /* harmony import */ var _loginButton_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9140);
85
+ /* harmony import */ var _signupButton_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1291);
86
+ /* harmony import */ var lit_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1413);
87
+
88
+
89
+
90
+
91
+
92
+
93
+ const DEFAULT_HELP_MENU_ICON = '';
94
+ const DEFAULT_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg';
95
+ const DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod';
96
+ const DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR = _iconBase__WEBPACK_IMPORTED_MODULE_1__/* .icons */ .Pt.iconBase + 'emptyProfileAvatar.png';
97
+ class Header extends lit__WEBPACK_IMPORTED_MODULE_0__/* .LitElement */ .WF {
98
+ static properties = {
99
+ logo: {
100
+ type: String,
101
+ reflect: true
102
+ },
103
+ helpIcon: {
104
+ type: String,
105
+ attribute: 'help-icon',
106
+ reflect: true
107
+ },
108
+ layout: {
109
+ type: String,
110
+ reflect: true
111
+ },
112
+ theme: {
113
+ type: String,
114
+ reflect: true
115
+ },
116
+ brandLink: {
117
+ type: String,
118
+ attribute: 'brand-link',
119
+ reflect: true
120
+ },
121
+ authState: {
122
+ type: String,
123
+ attribute: 'auth-state',
124
+ reflect: true
125
+ },
126
+ loginAction: {
127
+ type: Object,
128
+ attribute: false
129
+ },
130
+ signUpAction: {
131
+ type: Object,
132
+ attribute: false
133
+ },
134
+ accountMenu: {
135
+ type: Array,
136
+ attribute: false
137
+ },
138
+ logoutLabel: {
139
+ type: String,
140
+ attribute: 'logout-label',
141
+ reflect: true
142
+ },
143
+ logoutIcon: {
144
+ type: String,
145
+ attribute: 'logout-icon',
146
+ reflect: true
147
+ },
148
+ accountIcon: {
149
+ type: String,
150
+ attribute: 'account-icon',
151
+ reflect: true
152
+ },
153
+ accountAvatar: {
154
+ type: String,
155
+ attribute: 'account-avatar',
156
+ reflect: true
157
+ },
158
+ accountAvatarFallback: {
159
+ type: String,
160
+ attribute: 'account-avatar-fallback',
161
+ reflect: true
162
+ },
163
+ loginIcon: {
164
+ type: String,
165
+ attribute: 'login-icon',
166
+ reflect: true
167
+ },
168
+ signUpIcon: {
169
+ type: String,
170
+ attribute: 'sign-up-icon',
171
+ reflect: true
172
+ },
173
+ helpMenuList: {
174
+ type: Array
175
+ },
176
+ accountMenuOpen: {
177
+ state: true
178
+ },
179
+ helpMenuOpen: {
180
+ state: true
181
+ },
182
+ hasSlottedAccountMenu: {
183
+ state: true
184
+ },
185
+ hasSlottedHelpMenu: {
186
+ state: true
187
+ }
188
+ };
189
+ static styles = (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .css */ .AH)`
190
+ :host { // default theme
191
+ display: block;
192
+ --header-bg: var(--color-header-row-bg, #332746);
193
+ --header-text: var(--color-header-text, #ffffff);
194
+ --header-border: var(--color-border, #efecf3);
195
+ --header-line: var(--color-header-menu-separator-line, #5e546d);
196
+ --header-link: var(--color-text-heading, #000000);
197
+ --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);
198
+ --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);
199
+ --header-menu-bg: var(--color-menu-bg, #f6f5f9);
200
+ --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);
201
+ --header-menu-text: var(--color-menu-item-text, #654d6c);
202
+ --header-border-radius: var(--border-radius-sm, 0.2rem);
203
+ --header-button-bg: var(--color-menu-bg, #ffffff);
204
+ --header-button-text: var(--color-header-button-text, #0F172B);
205
+ --header-button-detail-text: var(--color-header-button-detail-text, #99A1AF);
206
+ --header-shadow: var(--color-header-shadow, 2px 6px 10px 0 rgba(0, 0, 0, 0.4), 2px 8px 24px 0 rgba(0, 0, 0, 0.19));
207
+ font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);
208
+ }
209
+
210
+ // for now light and dark are the same
211
+ :host([theme='dark']) {
212
+ display: block;
213
+ --header-bg: var(--color-header-row-bg, #332746);
214
+ --header-text: var(--color-header-text, #ffffff);
215
+ --header-border: var(--color-border, #efecf3);
216
+ --header-line: var(--color-header-menu-separator-line, #5e546d);
217
+ --header-link: var(--color-text-heading, #000000);
218
+ --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);
219
+ --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);
220
+ --header-menu-bg: var(--color-menu-bg, #f6f5f9);
221
+ --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);
222
+ --header-menu-text: var(--color-menu-item-text, #654d6c);
223
+ --header-border-radius: var(--border-radius-sm, 0.2rem);
224
+ --header-button-bg: var(--color-menu-bg, #ffffff);
225
+ --header-button-text: var(--color-header-button-text, #0f172a);
226
+ --header-button-detail-text: var(--color-header-button-detail-text, #878192);
227
+ --header-icon-filter: invert(1) brightness(1.3); /* special way to invert SVG color of icons, from white to black */
228
+ --header-shadow: var(--color-header-shadow, 2px 6px 10px 0 rgba(0, 0, 0, 0.4), 2px 8px 24px 0 rgba(0, 0, 0, 0.19));
229
+ font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);
230
+ }
231
+
232
+ :host([layout='mobile']) .headerInner {
233
+ flex-wrap: wrap;
234
+ text-align: center;
235
+ gap: 0.5rem;
236
+ }
237
+
238
+ .headerInner {
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: space-between;
242
+ background: var(--header-bg);
243
+ color: var(--header-text);
244
+ padding: 0 1.5rem;
245
+ height: 3.75rem;
246
+ }
247
+
248
+ ::slotted([slot='navigation-toggle']) {
249
+ display: inline-flex;
250
+ align-items: center;
251
+ justify-content: center;
252
+ flex-shrink: 0;
253
+ margin-right: 0.75rem;
254
+ }
255
+
256
+ :host([layout='desktop']) ::slotted([slot='navigation-toggle']) {
257
+ display: none !important;
258
+ }
259
+
260
+ .brand {
261
+ display: flex;
262
+ align-items: center;
263
+ gap: 0.5rem;
264
+ text-decoration: none;
265
+ color: inherit;
266
+ }
267
+
268
+ .brand-not-displayed {
269
+ display: none;
270
+ }
271
+
272
+ .brand img {
273
+ height: 50px;
274
+ width: 55px;
275
+ object-fit: contain;
276
+ }
277
+
278
+ .menu {
279
+ display: flex;
280
+ align-items: center;
281
+ gap: 0.625rem;
282
+ margin-left: auto;
283
+ }
284
+
285
+ .auth-actions {
286
+ display: flex;
287
+ align-items: center;
288
+ gap: 0.625rem;
289
+ }
290
+
291
+ .auth-button {
292
+ display: inline-flex;
293
+ align-items: center;
294
+ justify-content: center;
295
+ gap: 0.5rem;
296
+ min-height: 2.25rem;
297
+ padding: 0.5rem 0.875rem;
298
+ border: 1px solid var(--header-border);
299
+ border-radius: 999px;
300
+ background: var(--header-menu-bg);
301
+ color: var(--header-button-text);
302
+ cursor: pointer;
303
+ font: inherit;
304
+ line-height: 1;
305
+ text-decoration: none;
306
+ box-sizing: border-box;
307
+ transition: border-color 0.2s ease, transform 0.2s ease;
308
+ }
309
+
310
+ .auth-button:hover {
311
+ border-color: var(--header-menu-item-hover);
312
+ }
313
+
314
+ .auth-button:active {
315
+ transform: translateY(1px);
316
+ }
317
+
318
+ .auth-button-sign-up {
319
+ background: color-mix(in srgb, var(--header-menu-bg) 78%, var(--header-menu-item-selected) 22%);
320
+ }
321
+
322
+ .header-menu-separator {
323
+ background: var(--header-line);
324
+ width: 1px;
325
+ height: 2.3rem;
326
+ }
327
+
328
+ .account-menu-container {
329
+ position: relative;
330
+ display: flex;
331
+ align-items: center;
332
+ }
333
+
334
+ .account-menu-trigger {
335
+ display: inline-flex;
336
+ align-items: center;
337
+ gap: 0.625rem;
338
+ min-height: 2.5rem;
339
+ border: 1px solid var(--header-menu-loggedin-bg);
340
+ border-radius: 999px;
341
+ background: var(--header-menu-loggedin-bg);
342
+ color: var(--header-button-text);
343
+ cursor: pointer;
344
+ font: inherit;
345
+ line-height: 1;
346
+ }
347
+
348
+ :host([layout='mobile']) .account-menu-trigger {
349
+ gap: 0;
350
+ min-height: auto;
351
+ padding: 0;
352
+ border: 1.5px solid var(--header-border);
353
+ background: var(--header-menu-loggedin-bg);
354
+ }
355
+
356
+ :host([layout='mobile']) .account-menu-trigger-label {
357
+ display: none;
358
+ }
359
+
360
+ .account-menu-trigger:disabled {
361
+ cursor: default;
362
+ opacity: 0.7;
363
+ }
364
+
365
+ .account-menu-trigger-icon {
366
+ width: 1rem;
367
+ height: 1rem;
368
+ object-fit: contain;
369
+ flex-shrink: 0;
370
+ }
371
+
372
+ .account-avatar,
373
+ .account-menu-avatar {
374
+ display: inline-flex;
375
+ align-items: center;
376
+ justify-content: center;
377
+ flex-shrink: 0;
378
+ overflow: hidden;
379
+ background: color-mix(in srgb, var(--header-bg) 18%, #ded8e7 82%);
380
+ color: var(--header-button-text);
381
+ font-size: 0.75rem;
382
+ font-weight: 600;
383
+ text-transform: uppercase;
384
+ }
385
+
386
+ .account-avatar {
387
+ width: 1.75rem;
388
+ height: 1.75rem;
389
+ border-radius: 999px;
390
+ border: 1.5px solid var(--header-border);
391
+ }
392
+
393
+ .account-menu-avatar {
394
+ width: 2rem;
395
+ height: 2rem;
396
+ border-radius: 0.5rem;
397
+ }
398
+
399
+ .account-avatar img,
400
+ .account-menu-avatar img {
401
+ width: 100%;
402
+ height: 100%;
403
+ object-fit: cover;
404
+ }
405
+
406
+ .account-avatar-img {
407
+ width: 1.75rem;
408
+ height: 1.75rem;
409
+ border-radius: 999px;
410
+ object-fit: cover;
411
+ background-color: var(--header-border);
412
+ }
413
+
414
+ .account-dropdown {
415
+ position: absolute;
416
+ top: calc(100% + 0.9rem);
417
+ right: 0;
418
+ min-width: 15rem;
419
+ padding: 0.5rem;
420
+ background: var(--header-button-bg);
421
+ border: 1px solid var(--header-border);
422
+ border-radius: var(--header-border-radius);
423
+ box-shadow: var(--header-shadow);
424
+ z-index: 10;
425
+ }
426
+
427
+ .account-dropdown[hidden] {
428
+ display: none;
429
+ }
430
+
431
+ .account-menu-list {
432
+ list-style: none;
433
+ margin: 0;
434
+ padding: 0;
435
+ display: flex;
436
+ flex-direction: column;
437
+ gap: 0.25rem;
438
+ }
439
+
440
+ .account-menu-item-link,
441
+ .account-menu-item-button,
442
+ ::slotted([slot='account-menu']) {
443
+ display: flex;
444
+ align-items: center;
445
+ gap: 0.625rem;
446
+ width: 100%;
447
+ box-sizing: border-box;
448
+ color: var(--header-link);
449
+ text-decoration: none;
450
+ background: transparent;
451
+ border: 1px solid transparent;
452
+ border-radius: 10px;
453
+ padding: 0.5rem;
454
+ cursor: pointer;
455
+ font: inherit;
456
+ text-align: left;
457
+ }
458
+
459
+ .account-menu-item-link:hover,
460
+ .account-menu-item-button:hover {
461
+ color: var(--header-link);
462
+ background: var(--header-menu-item-hover);
463
+ border-color: var(--header-menu-item-hover);
464
+ }
465
+
466
+ .account-menu-item-link:active,
467
+ .account-menu-item-button:active {
468
+ color: var(--header-link);
469
+ background: var(--header-menu-item-selected);
470
+ border-color: var(--header-menu-item-selected);
471
+ transform: translateY(1px);
472
+ }
473
+
474
+ .account-switch {
475
+ display: block;
476
+ width: 100%;
477
+ color: var(--header-menu-text);
478
+ text-align: left;
479
+ text-transform: uppercase;
480
+ font-size: 80%;
481
+ }
482
+
483
+ .dropdown-menu-separator {
484
+ display: block;
485
+ width: calc(100% + 1rem);
486
+ margin: 0.5rem -0.5rem;
487
+ border: 0;
488
+ border-top: 1px solid var(--header-border);
489
+ }
490
+
491
+ .account-menu-copy {
492
+ display: flex;
493
+ flex-direction: column;
494
+ min-width: 0;
495
+ }
496
+
497
+ .account-menu-label {
498
+ color: var(--header-button-text);
499
+ overflow: hidden;
500
+ text-overflow: ellipsis;
501
+ white-space: nowrap;
502
+ }
503
+
504
+ .account-menu-webid {
505
+ color: var(--header-button-detail-text);
506
+ font-size: 0.5rem;
507
+ overflow: hidden;
508
+ text-overflow: ellipsis;
509
+ white-space: nowrap;
510
+ }
511
+
512
+ .help-menu-container {
513
+ position: relative;
514
+ display: flex;
515
+ align-items: center;
516
+ background: transparent;
517
+ }
518
+
519
+ .help-menu-trigger {
520
+ display: inline-flex;
521
+ align-items: center;
522
+ justify-content: center;
523
+ padding: 0;
524
+ border: 0;
525
+ background: transparent;
526
+ cursor: pointer;
527
+ }
528
+
529
+ .help-menu-trigger:disabled {
530
+ cursor: default;
531
+ }
532
+
533
+ .help-dropdown {
534
+ position: absolute;
535
+ top: calc(100% + 0.9rem);
536
+ right: 0;
537
+ min-width: 12rem;
538
+ padding: 0.5rem;
539
+ background: var(--header-button-bg);
540
+ border: 1px solid var(--header-border);
541
+ border-radius: var(--header-border-radius);
542
+ box-shadow: var(--header-shadow);
543
+ z-index: 10;
544
+ }
545
+
546
+ .help-dropdown[hidden] {
547
+ display: none;
548
+ }
549
+
550
+ .help-dropdown-content {
551
+ display: flex;
552
+ flex-direction: column;
553
+ gap: 0.25rem;
554
+ }
555
+
556
+ .help-menu-list {
557
+ list-style: none;
558
+ margin: 0;
559
+ padding: 0;
560
+ display: flex;
561
+ flex-direction: column;
562
+ gap: 0.25rem;
563
+ }
564
+
565
+ .help-menu-list a,
566
+ .help-menu-list button,
567
+ ::slotted([slot='help-menu']) {
568
+ display: block;
569
+ width: 100%;
570
+ box-sizing: border-box;
571
+ color: var(--header-link);
572
+ text-decoration: none;
573
+ background: transparent;
574
+ border: 1px solid transparent;
575
+ border-radius: 4px;
576
+ padding: 0.375rem 0.5rem;
577
+ cursor: pointer;
578
+ font: inherit;
579
+ text-align: left;
580
+ }
581
+
582
+ .help-menu-list a:hover,
583
+ .help-menu-list button:hover {
584
+ color: var(--header-link);
585
+ background: var(--header-menu-item-hover);
586
+ border-color: var(--header-menu-item-hover);
587
+ }
588
+
589
+ .help-menu-list a:active,
590
+ .help-menu-list button:active {
591
+ color: var(--header-link);
592
+ background: var(--header-menu-item-selected);
593
+ border-color: var(--header-menu-item-selected);
594
+ transform: translateY(1px);
595
+ }
596
+
597
+ ::slotted(a), ::slotted(button) {
598
+ color: var(--header-link);
599
+ text-decoration: none;
600
+ background: var(--header-button-bg);
601
+ border: 1px solid var(--header-border);
602
+ border-radius: 4px;
603
+ padding: 0.25rem 0.5rem;
604
+ cursor: pointer;
605
+ font: inherit;
606
+ }
607
+
608
+ .help-icon {
609
+ width: 35px;
610
+ height: 35px;
611
+ cursor: pointer;
612
+ }
613
+
614
+ .help-text {
615
+ color: var(--header-text, #ffffff);
616
+ font: inherit;
617
+ }
618
+
619
+ .logout-action-icon {
620
+ width: 16px;
621
+ height: 16px;
622
+ display: inline-block;
623
+ object-fit: contain;
624
+ margin-right: 0.5rem;
625
+ }
626
+ `;
627
+ constructor() {
628
+ super();
629
+ this.logo = DEFAULT_SOLID_ICON_URL;
630
+ this.helpIcon = DEFAULT_HELP_MENU_ICON;
631
+ this.layout = 'desktop';
632
+ this.theme = 'light';
633
+ this.brandLink = '#';
634
+ this.authState = 'logged-out';
635
+ this.loginAction = {
636
+ label: 'Log In',
637
+ action: 'login'
638
+ };
639
+ this.signUpAction = {
640
+ label: 'Sign Up',
641
+ action: 'sign-up',
642
+ url: DEFAULT_SIGNUP_URL
643
+ };
644
+ this.accountMenu = [];
645
+ this.logoutLabel = 'Log Out';
646
+ this.logoutIcon = '';
647
+ this.accountIcon = '▼';
648
+ this.accountAvatar = '';
649
+ this.accountAvatarFallback = '';
650
+ this.loginIcon = '';
651
+ this.signUpIcon = '';
652
+ this.helpMenuList = [];
653
+ this.accountMenuOpen = false;
654
+ this.helpMenuOpen = false;
655
+ this.hasSlottedAccountMenu = false;
656
+ this.hasSlottedHelpMenu = false;
657
+ }
658
+ connectedCallback() {
659
+ super.connectedCallback();
660
+ document.addEventListener('click', this.handleDocumentClick);
661
+ window.addEventListener('keydown', this.handleWindowKeydown);
662
+ }
663
+ disconnectedCallback() {
664
+ document.removeEventListener('click', this.handleDocumentClick);
665
+ window.removeEventListener('keydown', this.handleWindowKeydown);
666
+ super.disconnectedCallback();
667
+ }
668
+ handleHelpMenuClick(item, event) {
669
+ event.preventDefault();
670
+ this.helpMenuOpen = false;
671
+ this.dispatchEvent(new CustomEvent('help-menu-select', {
672
+ detail: item,
673
+ bubbles: true,
674
+ composed: true
675
+ }));
676
+ if (item.url) {
677
+ const target = item.target || '_blank';
678
+ const features = target === '_blank' ? 'noopener,noreferrer' : undefined;
679
+ window.open(item.url, target, features);
680
+ }
681
+ }
682
+ handleAccountMenuClick(item) {
683
+ this.accountMenuOpen = false;
684
+ this.dispatchEvent(new CustomEvent('account-menu-select', {
685
+ detail: item,
686
+ bubbles: true,
687
+ composed: true
688
+ }));
689
+ }
690
+ handleDocumentClick = event => {
691
+ if (!event.composedPath().includes(this)) {
692
+ this.accountMenuOpen = false;
693
+ this.helpMenuOpen = false;
694
+ }
695
+ };
696
+ handleWindowKeydown = event => {
697
+ if (event.key === 'Escape' && (this.accountMenuOpen || this.helpMenuOpen)) {
698
+ this.accountMenuOpen = false;
699
+ this.helpMenuOpen = false;
700
+ }
701
+ };
702
+ handleAccountSlotChange(event) {
703
+ const slot = event.target;
704
+ this.hasSlottedAccountMenu = slot.assignedElements({
705
+ flatten: true
706
+ }).length > 0;
707
+ }
708
+ handleHelpSlotChange(event) {
709
+ const slot = event.target;
710
+ this.hasSlottedHelpMenu = slot.assignedElements({
711
+ flatten: true
712
+ }).length > 0;
713
+ }
714
+ toggleAccountMenu(event) {
715
+ event.preventDefault();
716
+ if (!this.hasAccountMenuItems()) return;
717
+ this.helpMenuOpen = false;
718
+ this.accountMenuOpen = !this.accountMenuOpen;
719
+ }
720
+ toggleHelpMenu(event) {
721
+ event.preventDefault();
722
+ if (!this.hasHelpMenuItems()) return;
723
+ this.accountMenuOpen = false;
724
+ this.helpMenuOpen = !this.helpMenuOpen;
725
+ }
726
+ hasAccountMenuItems() {
727
+ return Boolean(this.accountMenu?.length || this.hasSlottedAccountMenu || this.logoutLabel);
728
+ }
729
+ hasHelpMenuItems() {
730
+ return Boolean(this.helpMenuList?.length || this.hasSlottedHelpMenu);
731
+ }
732
+ shouldRenderHelpMenu() {
733
+ return this.layout !== 'mobile' && this.hasHelpMenuItems();
734
+ }
735
+ renderLoggedInAvatar(avatar, wrapperClass = 'account-avatar') {
736
+ const hasAvatar = Boolean(avatar);
737
+ const imageSrc = hasAvatar ? avatar : this.accountAvatarFallback || DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR;
738
+ const imageAlt = hasAvatar ? 'Profile Avatar' : 'Default Avatar';
739
+ if (this.layout === 'mobile' && wrapperClass === 'account-avatar') {
740
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<img class="account-avatar-img" src="${imageSrc}" alt="${imageAlt}" />`;
741
+ }
742
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
743
+ <span class="${wrapperClass}" aria-hidden="true">
744
+ <img src="${imageSrc}" alt="${imageAlt}" />
745
+ </span>
746
+ `;
747
+ }
748
+ renderLoggedOutActions() {
749
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
750
+ <div class="auth-actions" part="auth-actions">
751
+ <slot name="login-action">
752
+ <solid-ui-login-button
753
+ label="${this.loginAction.label}"
754
+ icon=${(0,lit_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_5__/* .ifDefined */ .J)(this.layout !== 'mobile' ? this.loginIcon || this.loginAction.icon : undefined)}
755
+ layout="${this.layout}"
756
+ theme="${this.theme}"
757
+ part="login-action"
758
+ @login-success="${() => this.handleLoginSuccess()}"
759
+ ></solid-ui-login-button>
760
+ </slot>
761
+ <slot name="sign-up-action">
762
+ <solid-ui-signup-button
763
+ label="${this.signUpAction.label}"
764
+ signup-url="${(0,lit_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_5__/* .ifDefined */ .J)(this.signUpAction.url)}"
765
+ layout="${this.layout}"
766
+ .icon=${(0,lit_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_5__/* .ifDefined */ .J)(this.layout !== 'mobile' ? this.signUpIcon || this.signUpAction.icon : undefined)}
767
+ theme="${this.theme}"
768
+ part="sign-up-action"
769
+ ></solid-ui-signup-button>
770
+ </slot>
771
+ </div>
772
+ `;
773
+ }
774
+ handleLoginSuccess() {
775
+ this.authState = 'logged-in';
776
+ this.dispatchEvent(new CustomEvent('auth-action-select', {
777
+ detail: {
778
+ role: 'login'
779
+ },
780
+ bubbles: true,
781
+ composed: true
782
+ }));
783
+ }
784
+ async handleLogout() {
785
+ this.accountMenuOpen = false;
786
+ try {
787
+ await solid_logic__WEBPACK_IMPORTED_MODULE_2__.authSession.logout();
788
+ } catch (_err) {
789
+ // logout errors are non-fatal — proceed to clear state
790
+ }
791
+ this.authState = 'logged-out';
792
+ this.dispatchEvent(new CustomEvent('logout-select', {
793
+ detail: {
794
+ role: 'logout'
795
+ },
796
+ bubbles: true,
797
+ composed: true
798
+ }));
799
+ }
800
+ renderAccountMenuItem(item) {
801
+ const content = (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
802
+ ${this.renderLoggedInAvatar(item.avatar, 'account-menu-avatar')}
803
+ <span class="account-menu-copy">
804
+ <span class="account-menu-label">${item.label}</span>
805
+ ${item.webid && this.layout !== 'mobile' ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<span class="account-menu-webid">${item.webid}</span>` : ''}
806
+ </span>
807
+ `;
808
+ if (item.url) {
809
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
810
+ <a
811
+ class="account-menu-item-link"
812
+ href="${item.url}"
813
+ @click="${() => this.handleAccountMenuClick(item)}"
814
+ part="account-menu-item"
815
+ role="menuitem"
816
+ >
817
+ ${content}
818
+ </a>
819
+ `;
820
+ }
821
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
822
+ <button
823
+ class="account-menu-item-button"
824
+ type="button"
825
+ @click="${() => this.handleAccountMenuClick(item)}"
826
+ part="account-menu-item"
827
+ role="menuitem"
828
+ >
829
+ ${content}
830
+ </button>
831
+ `;
832
+ }
833
+ renderLoggedInActions() {
834
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
835
+ <div class="account-menu-container" part="account-menu-container">
836
+ <slot name="account-trigger">
837
+ <button
838
+ id="accountMenuTrigger"
839
+ class="account-menu-trigger"
840
+ type="button"
841
+ aria-haspopup="menu"
842
+ aria-expanded="${this.accountMenuOpen ? 'true' : 'false'}"
843
+ ?disabled="${!this.hasAccountMenuItems()}"
844
+ @click="${e => this.toggleAccountMenu(e)}"
845
+ part="account-menu-trigger"
846
+ >
847
+ ${this.renderLoggedInAvatar(this.accountAvatar)}
848
+ ${this.layout !== 'mobile' && this.accountIcon ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
849
+ <img class="account-menu-trigger-icon" src="${this.accountIcon}" alt="" aria-hidden="true" />` : ''}
850
+ </button>
851
+ </slot>
852
+
853
+ <nav
854
+ id="accountMenu"
855
+ class="account-dropdown"
856
+ role="menu"
857
+ ?inert="${!this.accountMenuOpen || !this.hasAccountMenuItems()}"
858
+ ?hidden="${!this.accountMenuOpen || !this.hasAccountMenuItems()}"
859
+ part="account-dropdown"
860
+ >
861
+ <slot name="account-switch" class="account-switch">Switch account</slot>
862
+ <hr class="dropdown-menu-separator" />
863
+ <slot name="account-menu" @slotchange="${e => this.handleAccountSlotChange(e)}"></slot>
864
+ ${this.accountMenu && this.accountMenu.length ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
865
+ <ul class="account-menu-list">
866
+ ${this.accountMenu.map(item => (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
867
+ <li>${this.renderAccountMenuItem(item)}</li>
868
+ `)}
869
+ </ul>
870
+ ` : ''}
871
+ ${this.logoutLabel ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
872
+ <hr class="dropdown-menu-separator" />
873
+ <button
874
+ class="account-menu-item-button"
875
+ type="button"
876
+ @click="${() => this.handleLogout()}"
877
+ part="logout-action"
878
+ role="menuitem"
879
+ >
880
+ ${this.logoutIcon && this.layout !== 'mobile' ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<img class="logout-action-icon" src="${this.logoutIcon}" alt="" aria-hidden="true" part="logout-action-icon" />` : ''}
881
+ ${this.logoutLabel}
882
+ </button>
883
+ ` : ''}
884
+ </nav>
885
+ </div>
886
+ `;
887
+ }
888
+ renderUserArea() {
889
+ if (this.authState === 'logged-out') {
890
+ return this.renderLoggedOutActions();
891
+ }
892
+ return this.renderLoggedInActions();
893
+ }
894
+ firstUpdated() {
895
+ const brandLink = this.shadowRoot?.getElementById('brandLink');
896
+ if (brandLink) {
897
+ brandLink.classList.toggle('brand-not-displayed', this.layout === 'mobile');
898
+ }
899
+ }
900
+ updated(changedProperties) {
901
+ if (changedProperties.has('layout')) {
902
+ const brandLink = this.shadowRoot?.getElementById('brandLink');
903
+ if (brandLink) {
904
+ brandLink.classList.toggle('brand-not-displayed', this.layout === 'mobile');
905
+ }
906
+ }
907
+ }
908
+ render() {
909
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
910
+ <div class="headerInner">
911
+ <slot name="navigation-toggle"></slot>
912
+ <a
913
+ id="brandLink"
914
+ class="brand"
915
+ href="${this.brandLink}"
916
+ part="brand"
917
+ >
918
+ <img id="brandImg" src="${this.logo}" alt="Logo" part="logo" />
919
+ </a>
920
+
921
+ <div class="menu" part="menu">
922
+ ${this.renderUserArea()}
923
+
924
+ ${this.shouldRenderHelpMenu() ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
925
+ <div class="header-menu-separator" />` : ''}
926
+
927
+ ${this.shouldRenderHelpMenu() ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
928
+ <div class="help-menu-container" part="help-menu-container">
929
+ <button
930
+ id="helpMenuTrigger"
931
+ class="help-menu-trigger"
932
+ type="button"
933
+ aria-haspopup="menu"
934
+ aria-expanded="${this.helpMenuOpen ? 'true' : 'false'}"
935
+ ?disabled="${!this.hasHelpMenuItems()}"
936
+ @click="${e => this.toggleHelpMenu(e)}"
937
+ part="help-menu-trigger"
938
+ >
939
+ ${this.helpIcon ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<img id="helpIcon" class="help-icon" src="${this.helpIcon}" alt="Help" part="help-icon" />` : (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<span class="help-text" part="help-text">Help</span>`}
940
+ </button>
941
+
942
+ <nav
943
+ id="helpMenu"
944
+ class="help-dropdown"
945
+ role="menu"
946
+ ?inert="${!this.helpMenuOpen || !this.hasHelpMenuItems()}"
947
+ ?hidden="${!this.helpMenuOpen || !this.hasHelpMenuItems()}"
948
+ part="help-dropdown"
949
+ >
950
+ <div class="help-dropdown-content" @click="${() => {
951
+ this.helpMenuOpen = false;
952
+ }}">
953
+ <slot name="help-menu" @slotchange="${e => this.handleHelpSlotChange(e)}"></slot>
954
+ ${this.helpMenuList && this.helpMenuList.length ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
955
+ <ul class="help-menu-list">
956
+ ${this.helpMenuList.map(item => (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
957
+ <li>
958
+ ${item.url ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
959
+ <a
960
+ href="${item.url}"
961
+ target="${item.target || '_blank'}"
962
+ rel="${(0,lit_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_5__/* .ifDefined */ .J)((item.target || '_blank') === '_blank' ? 'noopener noreferrer' : undefined)}"
963
+ @click="${e => this.handleHelpMenuClick(item, e)}"
964
+ part="help-menu-item"
965
+ role="menuitem"
966
+ >
967
+ ${item.label}
968
+ </a>
969
+ ` : (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
970
+ <button
971
+ type="button"
972
+ @click="${e => this.handleHelpMenuClick(item, e)}"
973
+ part="help-menu-item"
974
+ role="menuitem"
975
+ >
976
+ ${item.label}
977
+ </button>
978
+ `}
979
+ </li>
980
+ `)}
981
+ </ul>
982
+ ` : ''}
983
+ </div>
984
+ </nav>
985
+ </div>` : ''}
986
+ </div>
987
+ </div>
988
+ `;
989
+ }
990
+ }
991
+
992
+ /***/ },
993
+
994
+ /***/ 1209
995
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
996
+
997
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
998
+ /* harmony export */ M: () => (/* binding */ LoginButton)
999
+ /* harmony export */ });
1000
+ /* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6161);
1001
+ /* harmony import */ var solid_logic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3138);
1002
+ /* harmony import */ var _downArrow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1353);
1003
+
1004
+
1005
+
1006
+ class LoginButton extends lit__WEBPACK_IMPORTED_MODULE_0__/* .LitElement */ .WF {
1007
+ static properties = {
1008
+ label: {
1009
+ type: String,
1010
+ reflect: true
1011
+ },
1012
+ theme: {
1013
+ type: String,
1014
+ reflect: true
1015
+ },
1016
+ issuerUrl: {
1017
+ type: String,
1018
+ attribute: 'issuer-url',
1019
+ reflect: true
1020
+ },
1021
+ icon: {
1022
+ type: String,
1023
+ reflect: true
1024
+ },
1025
+ layout: {
1026
+ type: String,
1027
+ reflect: true
1028
+ },
1029
+ _popupOpen: {
1030
+ state: true
1031
+ },
1032
+ _issuerInputValue: {
1033
+ state: true
1034
+ },
1035
+ _dropdownOpen: {
1036
+ state: true
1037
+ }
1038
+ };
1039
+ static styles = (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .css */ .AH)`
1040
+ :host { // default theme
1041
+ display: inline-block;
1042
+ position: relative;
1043
+ z-index: 400;
1044
+ --login-button-background: var(--lavender-900, #7c4cff);
1045
+ --login-button-text: var(--color-header-text, #ffffff);
1046
+ --popup-background: var(--color-background, #F8F9FB);
1047
+ --popup-text: var(--color-text, #1A1A1A);
1048
+ --popup-border: var(--color-border, #E5E7EB);
1049
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
1050
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
1051
+ --issuer-input-background: var(--color-background, #F8F9FB);
1052
+ --issuer-input-text: var(--color-text, #1A1A1A);
1053
+ --issuer-input-border: var(--color-text, #1A1A1A);
1054
+ --issuer-button-background: var(--color-background, #F8F9FB);
1055
+ --issuer-button-text: var(--color-text, #1A1A1A);
1056
+ --issuer-button-border: var(--color-border, #E5E7EB);
1057
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
1058
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
1059
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
1060
+ --error-text-color: var(--color-error, #B00020);
1061
+ }
1062
+
1063
+ :host([theme='dark']) {
1064
+ display: inline-block;
1065
+ position: relative;
1066
+ z-index: 900;
1067
+ --login-button-background: var(--lavender-900, #7c4cff);
1068
+ --login-button-text: var(--color-header-text, #ffffff);
1069
+ --popup-background: var(--color-background, #F8F9FB);
1070
+ --popup-text: var(--color-text, #1A1A1A);
1071
+ --popup-border: var(--color-border, #E5E7EB);
1072
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
1073
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
1074
+ --issuer-input-background: var(--color-background, #F8F9FB);
1075
+ --issuer-input-text: var(--color-text, #1A1A1A);
1076
+ --issuer-input-border: var(--color-text, #1A1A1A);
1077
+ --issuer-button-background: var(--color-background, #F8F9FB);
1078
+ --issuer-button-text: var(--color-text, #1A1A1A);
1079
+ --issuer-button-border: var(--color-text, #1A1A1A);
1080
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
1081
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
1082
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
1083
+ --error-text-color: var(--color-error, #B00020);
1084
+ }
1085
+
1086
+ .login-button {
1087
+ display: flex;
1088
+ height: 35px;
1089
+ padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);
1090
+ align-items: center;
1091
+ gap: var(--spacing-xxs, 0.3125rem);
1092
+ border-radius: var(--border-radius-base, 0.3125rem);
1093
+ background: var(--login-button-background);
1094
+ border: none;
1095
+ color: var(--login-button-text);
1096
+ cursor: pointer;
1097
+ font: inherit;
1098
+ line-height: 1;
1099
+ white-space: nowrap;
1100
+ text-decoration: none;
1101
+ box-sizing: border-box;
1102
+ transition: transform 0.2s ease;
1103
+ }
1104
+
1105
+ .login-button-icon {
1106
+ width: 16px;
1107
+ height: 16px;
1108
+ display: inline-block;
1109
+ object-fit: contain;
1110
+ }
1111
+
1112
+ .login-button:active {
1113
+ transform: translateY(1px);
1114
+ }
1115
+
1116
+ .popup-dialog {
1117
+ border: none;
1118
+ padding: 0;
1119
+ background: transparent;
1120
+ outline: none;
1121
+ overflow: visible;
1122
+ max-height: none;
1123
+ max-width: none;
1124
+ }
1125
+
1126
+ .popup-dialog::backdrop {
1127
+ background: var(--popup-overlay-background, rgba(0, 0, 0, 0.6));
1128
+ }
1129
+
1130
+ .popup-box {
1131
+ background: var(--popup-background);
1132
+ color: var(--popup-text);
1133
+ box-shadow: var(--popup-shadow);
1134
+ border: 1px solid var(--popup-border);
1135
+ border-radius: var(--border-radius-md, 0.5rem);
1136
+ min-width: 480px;
1137
+ z-index: 1001;
1138
+ }
1139
+
1140
+ .popup-top-menu {
1141
+ border-bottom: 1px solid #DDD;
1142
+ display: flex;
1143
+ flex-direction: row;
1144
+ align-items: center;
1145
+ justify-content: space-between;
1146
+ padding-bottom: 8px;
1147
+ margin-bottom: 8px;
1148
+ padding: 1rem;
1149
+ background: var(--gray-200, #E5E7EB);
1150
+ }
1151
+
1152
+ .popup-title {
1153
+ font-weight: 800;
1154
+ }
1155
+
1156
+ .popup-close {
1157
+ background: transparent;
1158
+ border: none;
1159
+ cursor: pointer;
1160
+ font-size: 1.25rem;
1161
+ line-height: 1;
1162
+ padding: 0 0.25rem;
1163
+ }
1164
+
1165
+ .issuer-text-section {
1166
+ display: flex;
1167
+ flex-direction: column;
1168
+ padding: 1rem 1rem 1.75rem;
1169
+ }
1170
+
1171
+ .issuer-text-label {
1172
+ color: var(--issuer-label-color);
1173
+ margin-bottom: 6px;
1174
+ }
1175
+
1176
+ .issuer-text-row {
1177
+ display: flex;
1178
+ flex-direction: row;
1179
+ gap: 6px;
1180
+ align-items: flex-start;
1181
+ }
1182
+
1183
+ .issuer-input-wrapper {
1184
+ flex: 1;
1185
+ display: flex;
1186
+ flex-direction: column;
1187
+ min-width: 0;
1188
+ position: relative;
1189
+ }
1190
+
1191
+ .issuer-input-field-row {
1192
+ display: flex;
1193
+ flex-direction: row;
1194
+ position: relative;
1195
+ }
1196
+
1197
+ .issuer-text-input {
1198
+ flex: 1;
1199
+ padding: 0.375rem 2.75rem 0.375rem 0.5rem;
1200
+ border: 1px solid var(--issuer-input-border);
1201
+ border-radius: var(--border-radius-base, 0.3125rem);
1202
+ background: var(--issuer-input-background);
1203
+ color: var(--issuer-input-text);
1204
+ font: inherit;
1205
+ min-width: 0;
1206
+ }
1207
+
1208
+ .issuer-text-input::placeholder {
1209
+ color: var(--issuer-placeholder-color);
1210
+ }
1211
+
1212
+ .issuer-dropdown-toggle {
1213
+ position: absolute;
1214
+ right: 6px;
1215
+ top: 50%;
1216
+ transform: translateY(-50%);
1217
+ width: 26px;
1218
+ height: 26px;
1219
+ padding: 0;
1220
+ border: none;
1221
+ background: transparent;
1222
+ cursor: pointer;
1223
+ display: flex;
1224
+ align-items: center;
1225
+ justify-content: center;
1226
+ flex-shrink: 0;
1227
+ border-radius: var(--border-radius-base, 0.3125rem);
1228
+ }
1229
+
1230
+ .issuer-dropdown-toggle:hover {
1231
+ background: var(--color-header-menu-item-hover, #e6dcff);
1232
+ }
1233
+
1234
+ .issuer-dropdown-toggle svg {
1235
+ width: 14px;
1236
+ height: 14px;
1237
+ display: block;
1238
+ }
1239
+
1240
+ .issuer-dropdown-list {
1241
+ position: absolute;
1242
+ top: calc(100% + 6px);
1243
+ left: 0;
1244
+ right: 0;
1245
+ border: 1px solid var(--color-border, #E5E7EB);
1246
+ border-top: none;
1247
+ border-radius: 0 0 var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem);
1248
+ background: var(--issuer-input-background);
1249
+ overflow: visible;
1250
+ z-index: 10;
1251
+ box-shadow: 0 4px 12px rgba(124, 77, 255, 0.12);
1252
+ }
1253
+
1254
+ .issuer-dropdown-item {
1255
+ display: block;
1256
+ width: 100%;
1257
+ padding: 0.625rem 0.75rem;
1258
+ border: none;
1259
+ border-bottom: 1px solid var(--color-border, #E5E7EB);
1260
+ background: transparent;
1261
+ color: var(--issuer-button-text);
1262
+ cursor: pointer;
1263
+ font: inherit;
1264
+ text-align: left;
1265
+ box-sizing: border-box;
1266
+ }
1267
+
1268
+ .issuer-dropdown-item:last-child {
1269
+ border-bottom: none;
1270
+ }
1271
+
1272
+ .issuer-dropdown-item:hover {
1273
+ background: var(--color-header-menu-item-hover, #e6dcff);
1274
+ border-radius: var(--border-radius-base-md, 0.5rem);
1275
+ }
1276
+
1277
+ .popup-footer {
1278
+ display: flex;
1279
+ flex-direction: row;
1280
+ justify-content: center;
1281
+ gap: 8px;
1282
+ padding: 0.75rem 1rem 1rem;
1283
+ }
1284
+
1285
+ .popup-footer-hr {
1286
+ margin: 0;
1287
+ border: none;
1288
+ border-top: 1px solid var(--popup-border, #E5E7EB);
1289
+ }
1290
+
1291
+ .popup-cancel-button {
1292
+ padding: 0.5rem 1.25rem;
1293
+ border: 1px solid #C0BFC7;
1294
+ border-radius: var(--border-radius-base, 0.3125rem);
1295
+ background: var(--popup-background);
1296
+ color: #314158;
1297
+ cursor: pointer;
1298
+ font: inherit;
1299
+ }
1300
+
1301
+ .popup-cancel-button:hover {
1302
+ background: #D1D5DB;
1303
+ }
1304
+
1305
+ .popup-login-button {
1306
+ padding: 0.5rem 1.25rem;
1307
+ border: none;
1308
+ border-radius: var(--border-radius-base, 0.3125rem);
1309
+ background: var(--lavender-900, #7c4cff);
1310
+ color: #ffffff;
1311
+ cursor: pointer;
1312
+ font: inherit;
1313
+ }
1314
+
1315
+ .popup-login-button:hover {
1316
+ background: #6a3de8;
1317
+ }
1318
+
1319
+ .popup-login-button:disabled {
1320
+ opacity: 0.5;
1321
+ cursor: not-allowed;
1322
+ }
1323
+
1324
+ .error-msg {
1325
+ color: var(--error-text-color);
1326
+ font-size: 0.875rem;
1327
+ margin-top: 8px;
1328
+ }
1329
+ `;
1330
+ _issuerInputId = `issuer-url-input-${Math.random().toString(36).slice(2, 10)}`;
1331
+ _errorMsg = '';
1332
+ constructor() {
1333
+ super();
1334
+ this.label = 'Log In';
1335
+ this.theme = 'light';
1336
+ this.issuerUrl = '';
1337
+ this.icon = '';
1338
+ this.layout = 'desktop';
1339
+ this._popupOpen = false;
1340
+ this._issuerInputValue = '';
1341
+ this._dropdownOpen = false;
1342
+ }
1343
+ connectedCallback() {
1344
+ super.connectedCallback();
1345
+ }
1346
+ disconnectedCallback() {
1347
+ super.disconnectedCallback();
1348
+ }
1349
+ _openPopup() {
1350
+ const offline = (0,solid_logic__WEBPACK_IMPORTED_MODULE_1__.offlineTestID)();
1351
+ if (offline) {
1352
+ this._loginComplete(offline.uri);
1353
+ return;
1354
+ }
1355
+ this._issuerInputValue = typeof localStorage !== 'undefined' && localStorage.getItem('loginIssuer') || this.issuerUrl || '';
1356
+ this._errorMsg = '';
1357
+ this._popupOpen = true;
1358
+ }
1359
+ _closePopup() {
1360
+ this._popupOpen = false;
1361
+ }
1362
+ updated() {
1363
+ const dialog = this.shadowRoot?.querySelector('dialog');
1364
+ if (!dialog) return;
1365
+ if (this._popupOpen && !dialog.open) {
1366
+ dialog.showModal();
1367
+ } else if (!this._popupOpen && dialog.open) {
1368
+ dialog.close();
1369
+ }
1370
+ }
1371
+ async _loginToIssuer(issuerUri) {
1372
+ if (!issuerUri) return;
1373
+ try {
1374
+ // clear authorization metadata from store
1375
+ ;
1376
+ solid_logic__WEBPACK_IMPORTED_MODULE_1__.solidLogicSingleton.store.updater.flagAuthorizationMetadata();
1377
+ const preLoginRedirectHash = new URL(window.location.href).hash;
1378
+ if (preLoginRedirectHash) {
1379
+ window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash);
1380
+ }
1381
+ window.localStorage.setItem('loginIssuer', issuerUri);
1382
+ const locationUrl = new URL(window.location.href);
1383
+ locationUrl.hash = '';
1384
+ await solid_logic__WEBPACK_IMPORTED_MODULE_1__.authSession.login({
1385
+ redirectUrl: locationUrl.href,
1386
+ oidcIssuer: issuerUri
1387
+ });
1388
+ } catch (err) {
1389
+ this._errorMsg = err.message || String(err);
1390
+ this.requestUpdate();
1391
+ }
1392
+ }
1393
+ _loginComplete(webIdUri) {
1394
+ solid_logic__WEBPACK_IMPORTED_MODULE_1__.authn.saveUser(webIdUri);
1395
+ this.dispatchEvent(new CustomEvent('login-success', {
1396
+ detail: {
1397
+ webId: webIdUri
1398
+ },
1399
+ bubbles: true,
1400
+ composed: true
1401
+ }));
1402
+ }
1403
+ _handleGoClick() {
1404
+ this._dropdownOpen = false;
1405
+ this._loginToIssuer(this._issuerInputValue);
1406
+ }
1407
+ _toggleDropdown() {
1408
+ this._dropdownOpen = !this._dropdownOpen;
1409
+ }
1410
+ _selectIssuerFromDropdown(uri) {
1411
+ this._issuerInputValue = uri;
1412
+ this._dropdownOpen = false;
1413
+ }
1414
+ _handleInputChange(e) {
1415
+ this._issuerInputValue = e.target.value;
1416
+ }
1417
+ _handleInputKeydown(e) {
1418
+ if (e.key === 'Enter') {
1419
+ this._loginToIssuer(this._issuerInputValue);
1420
+ }
1421
+ if (e.key === 'Escape') {
1422
+ this._closePopup();
1423
+ }
1424
+ }
1425
+ _renderPopup() {
1426
+ const suggestedIssuers = (0,solid_logic__WEBPACK_IMPORTED_MODULE_1__.getSuggestedIssuers)();
1427
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
1428
+ <div class="popup-box">
1429
+ <div class="popup-top-menu">
1430
+ <span class="popup-title">Select an identity provider</span>
1431
+ <button class="popup-close" type="button" aria-label="Close" @click="${() => this._closePopup()}">&#x2715;</button>
1432
+ </div>
1433
+
1434
+ <div class="issuer-text-section">
1435
+ <label class="issuer-text-label" for="${this._issuerInputId}">Solid Identity Provider</label>
1436
+ <div class="issuer-text-row">
1437
+ <div class="issuer-input-wrapper">
1438
+ <div class="issuer-input-field-row">
1439
+ <input
1440
+ id="${this._issuerInputId}"
1441
+ class="issuer-text-input"
1442
+ type="text"
1443
+ placeholder="https://example.com"
1444
+ .value="${this._issuerInputValue}"
1445
+ @input="${this._handleInputChange}"
1446
+ @keydown="${this._handleInputKeydown}"
1447
+ autocomplete="url"
1448
+ />
1449
+ ${suggestedIssuers.length ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
1450
+ <button
1451
+ class="issuer-dropdown-toggle"
1452
+ type="button"
1453
+ aria-label="Show identity provider suggestions"
1454
+ aria-expanded="${this._dropdownOpen}"
1455
+ @click="${() => this._toggleDropdown()}"
1456
+ >${_downArrow__WEBPACK_IMPORTED_MODULE_2__/* .phoneIcon */ .S}</button>
1457
+ ` : ''}
1458
+ </div>
1459
+ ${this._dropdownOpen && suggestedIssuers.length ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
1460
+ <div class="issuer-dropdown-list" role="listbox">
1461
+ ${suggestedIssuers.map(issuerInfo => (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
1462
+ <button
1463
+ class="issuer-dropdown-item"
1464
+ type="button"
1465
+ role="option"
1466
+ @click="${() => this._selectIssuerFromDropdown(issuerInfo.uri)}"
1467
+ >${issuerInfo.name}</button>
1468
+ `)}
1469
+ </div>
1470
+ ` : ''}
1471
+ </div>
1472
+ </div>
1473
+ ${this._errorMsg ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<div class="error-msg">${this._errorMsg}</div>` : ''}
1474
+ </div>
1475
+ <hr class="popup-footer-hr" />
1476
+ <div class="popup-footer">
1477
+ <button class="popup-cancel-button" type="button" @click="${() => this._closePopup()}">Cancel</button>
1478
+ <button
1479
+ class="popup-login-button"
1480
+ type="button"
1481
+ ?disabled="${!this._issuerInputValue}"
1482
+ @click="${() => this._handleGoClick()}"
1483
+ >Log In</button>
1484
+ </div>
1485
+ </div>
1486
+ `;
1487
+ }
1488
+ render() {
1489
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
1490
+ <button
1491
+ class="login-button"
1492
+ type="button"
1493
+ part="login-button"
1494
+ @click="${() => this._openPopup()}"
1495
+ >
1496
+ ${this.icon ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<img class="login-button-icon" src="${this.icon}" alt="" aria-hidden="true" part="login-button-icon" />` : ''}
1497
+ <slot>${this.label}</slot>
1498
+ </button>
1499
+
1500
+ <dialog
1501
+ class="popup-dialog"
1502
+ role="dialog"
1503
+ aria-modal="true"
1504
+ aria-label="Select an identity provider"
1505
+ @cancel="${e => {
1506
+ e.preventDefault();
1507
+ this._closePopup();
1508
+ }}"
1509
+ @click="${e => {
1510
+ if (e.target === e.currentTarget) this._closePopup();
1511
+ }}"
1512
+ >
1513
+ ${this._popupOpen ? this._renderPopup() : ''}
1514
+ </dialog>
1515
+ `;
1516
+ }
1517
+ }
1518
+
1519
+ /***/ },
1520
+
1521
+ /***/ 1353
1522
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1523
+
1524
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1525
+ /* harmony export */ S: () => (/* binding */ phoneIcon)
1526
+ /* harmony export */ });
1527
+ /* harmony import */ var lit_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6752);
1528
+
1529
+ const phoneIcon = (0,lit_html__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
1530
+ <svg xmlns="http://www.w3.org/2000/svg"
1531
+ viewBox="0 0 12 7"
1532
+ fill="none"
1533
+ >
1534
+ <path d="M0.679688 0.678955L5.50729 5.50656L10.3349 0.678955" stroke="#6A7282" stroke-width="1.35776" stroke-linecap="round" stroke-linejoin="round"/>
1535
+ </svg>
1536
+ `;
1537
+
1538
+ /***/ },
1539
+
1540
+ /***/ 9140
1541
+ (__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
1542
+
1543
+ /* harmony import */ var _LoginButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1209);
1544
+
1545
+
1546
+ const LOGIN_BUTTON_TAG_NAME = 'solid-ui-login-button';
1547
+ if (!customElements.get(LOGIN_BUTTON_TAG_NAME)) {
1548
+ customElements.define(LOGIN_BUTTON_TAG_NAME, _LoginButton__WEBPACK_IMPORTED_MODULE_0__/* .LoginButton */ .M);
1549
+ }
1550
+
1551
+ /***/ },
1552
+
1553
+ /***/ 3591
1554
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1555
+
1556
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1557
+ /* harmony export */ X: () => (/* binding */ SignupButton)
1558
+ /* harmony export */ });
1559
+ /* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6161);
1560
+
1561
+ const DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod';
1562
+ class SignupButton extends lit__WEBPACK_IMPORTED_MODULE_0__/* .LitElement */ .WF {
1563
+ static properties = {
1564
+ label: {
1565
+ type: String,
1566
+ reflect: true
1567
+ },
1568
+ theme: {
1569
+ type: String,
1570
+ reflect: true
1571
+ },
1572
+ signupUrl: {
1573
+ type: String,
1574
+ attribute: 'signup-url',
1575
+ reflect: true
1576
+ },
1577
+ icon: {
1578
+ type: String,
1579
+ reflect: true
1580
+ },
1581
+ layout: {
1582
+ type: String,
1583
+ reflect: true
1584
+ }
1585
+ };
1586
+ static styles = (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .css */ .AH)`
1587
+ :host {
1588
+ display: inline-block;
1589
+ --signup-button-background: transparent;
1590
+ --signup-button-border: var(--color-border, #E5E7EB);
1591
+ --signup-button-text: var(--color-header-text, #ffffff);
1592
+ }
1593
+
1594
+ :host([theme='dark']) {
1595
+ --signup-button-background: transparent;
1596
+ --signup-button-border: var(--color-border, #E5E7EB);
1597
+ --signup-button-text: var(--color-header-text, #ffffff);
1598
+ }
1599
+
1600
+ .signup-button {
1601
+ display: flex;
1602
+ height: 35px;
1603
+ padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);
1604
+ align-items: center;
1605
+ gap: var(--spacing-xxs, 0.3125rem);
1606
+ border-radius: var(--border-radius-base, 0.3125rem);
1607
+ background: var(--signup-button-background);
1608
+ border: 1px solid var(--signup-button-border);
1609
+ color: var(--signup-button-text);
1610
+ cursor: pointer;
1611
+ font: inherit;
1612
+ line-height: 1;
1613
+ white-space: nowrap;
1614
+ text-decoration: none;
1615
+ box-sizing: border-box;
1616
+ transition: transform 0.2s ease;
1617
+ }
1618
+
1619
+ :host([layout='mobile']) .signup-button {
1620
+ border: none;
1621
+ }
1622
+
1623
+ .signup-button-icon {
1624
+ width: 16px;
1625
+ height: 16px;
1626
+ display: inline-block;
1627
+ object-fit: contain;
1628
+ }
1629
+
1630
+ .signup-button:active {
1631
+ transform: translateY(1px);
1632
+ }
1633
+ `;
1634
+ constructor() {
1635
+ super();
1636
+ this.label = 'Sign Up';
1637
+ this.signupUrl = DEFAULT_SIGNUP_URL;
1638
+ this.theme = 'light';
1639
+ this.icon = '';
1640
+ this.layout = 'desktop';
1641
+ }
1642
+ _handleClick() {
1643
+ window.open(this.signupUrl, '_blank', 'noopener,noreferrer');
1644
+ }
1645
+ render() {
1646
+ return (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`
1647
+ <button
1648
+ class="signup-button"
1649
+ type="button"
1650
+ part="signup-button"
1651
+ @click="${() => this._handleClick()}"
1652
+ >
1653
+ ${this.icon ? (0,lit__WEBPACK_IMPORTED_MODULE_0__/* .html */ .qy)`<img class="signup-button-icon" src="${this.icon}" alt="" aria-hidden="true" part="signup-button-icon" />` : ''}
1654
+ <slot>${this.label}</slot>
1655
+ </button>
1656
+ `;
1657
+ }
1658
+ }
1659
+
1660
+ /***/ },
1661
+
1662
+ /***/ 1291
1663
+ (__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
1664
+
1665
+ /* harmony import */ var _SignupButton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3591);
1666
+
1667
+
1668
+ const SIGNUP_BUTTON_TAG_NAME = 'solid-ui-signup-button';
1669
+ if (!customElements.get(SIGNUP_BUTTON_TAG_NAME)) {
1670
+ customElements.define(SIGNUP_BUTTON_TAG_NAME, _SignupButton__WEBPACK_IMPORTED_MODULE_0__/* .SignupButton */ .X);
1671
+ }
1672
+
1673
+ /***/ },
1674
+
1675
+ /***/ 3138
1676
+ (module, __unused_webpack_exports, __webpack_require__) {
1677
+
1678
+ var x = (y) => {
1679
+ var x = {}; __webpack_require__.d(x, y); return x
1680
+ }
1681
+ var y = (x) => (() => (x))
1682
+ module.exports = x({ ["authSession"]: () => (__WEBPACK_EXTERNAL_MODULE_solid_logic_bb75353e__.authSession), ["authn"]: () => (__WEBPACK_EXTERNAL_MODULE_solid_logic_bb75353e__.authn), ["getSuggestedIssuers"]: () => (__WEBPACK_EXTERNAL_MODULE_solid_logic_bb75353e__.getSuggestedIssuers), ["offlineTestID"]: () => (__WEBPACK_EXTERNAL_MODULE_solid_logic_bb75353e__.offlineTestID), ["solidLogicSingleton"]: () => (__WEBPACK_EXTERNAL_MODULE_solid_logic_bb75353e__.solidLogicSingleton) });
1683
+
1684
+ /***/ },
1685
+
1686
+ /***/ 3826
1687
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1688
+
1689
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1690
+ /* harmony export */ AH: () => (/* binding */ i),
1691
+ /* harmony export */ Rf: () => (/* binding */ S),
1692
+ /* harmony export */ sk: () => (/* binding */ c)
1693
+ /* harmony export */ });
1694
+ /* unused harmony exports CSSResult, supportsAdoptingStyleSheets, unsafeCSS */
1695
+ /**
1696
+ * @license
1697
+ * Copyright 2019 Google LLC
1698
+ * SPDX-License-Identifier: BSD-3-Clause
1699
+ */
1700
+ const t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n("string"==typeof t?t:t+"",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement("style"),n=t.litNonce;void 0!==n&&o.setAttribute("nonce",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;
1701
+ //# sourceMappingURL=css-tag.js.map
1702
+
1703
+
1704
+ /***/ },
1705
+
1706
+ /***/ 8760
1707
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1708
+
1709
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1710
+ /* harmony export */ AH: () => (/* reexport safe */ _css_tag_js__WEBPACK_IMPORTED_MODULE_0__.AH),
1711
+ /* harmony export */ mN: () => (/* binding */ y)
1712
+ /* harmony export */ });
1713
+ /* unused harmony exports defaultConverter, notEqual */
1714
+ /* harmony import */ var _css_tag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3826);
1715
+
1716
+ /**
1717
+ * @license
1718
+ * Copyright 2017 Google LLC
1719
+ * SPDX-License-Identifier: BSD-3-Clause
1720
+ */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:"",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol("metadata"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d("elementProperties")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d("properties"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift((0,_css_tag_js__WEBPACK_IMPORTED_MODULE_0__/* .getCompatibleStyle */ .sk)(s))}else void 0!==s&&i.push((0,_css_tag_js__WEBPACK_IMPORTED_MODULE_0__/* .getCompatibleStyle */ .sk)(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return (0,_css_tag_js__WEBPACK_IMPORTED_MODULE_0__/* .adoptStyles */ .Rf)(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:"open"},y[d("elementProperties")]=new Map,y[d("finalized")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push("2.1.2");
1721
+ //# sourceMappingURL=reactive-element.js.map
1722
+
1723
+
1724
+ /***/ },
1725
+
1726
+ /***/ 5228
1727
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1728
+
1729
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1730
+ /* harmony export */ AH: () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.AH),
1731
+ /* harmony export */ WF: () => (/* binding */ i),
1732
+ /* harmony export */ qy: () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__.qy)
1733
+ /* harmony export */ });
1734
+ /* unused harmony export _$LE */
1735
+ /* harmony import */ var _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8760);
1736
+ /* harmony import */ var lit_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6752);
1737
+
1738
+ /**
1739
+ * @license
1740
+ * Copyright 2017 Google LLC
1741
+ * SPDX-License-Identifier: BSD-3-Clause
1742
+ */const s=globalThis;class i extends _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__/* .ReactiveElement */ .mN{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=(0,lit_html__WEBPACK_IMPORTED_MODULE_1__/* .render */ .XX)(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return lit_html__WEBPACK_IMPORTED_MODULE_1__/* .noChange */ .c0}}i._$litElement$=!0,i["finalized"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push("4.2.2");
1743
+ //# sourceMappingURL=lit-element.js.map
1744
+
1745
+
1746
+ /***/ },
1747
+
1748
+ /***/ 4765
1749
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1750
+
1751
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1752
+ /* harmony export */ J: () => (/* binding */ o)
1753
+ /* harmony export */ });
1754
+ /* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6752);
1755
+
1756
+ /**
1757
+ * @license
1758
+ * Copyright 2018 Google LLC
1759
+ * SPDX-License-Identifier: BSD-3-Clause
1760
+ */const o=o=>o??_lit_html_js__WEBPACK_IMPORTED_MODULE_0__/* .nothing */ .s6;
1761
+ //# sourceMappingURL=if-defined.js.map
1762
+
1763
+
1764
+ /***/ },
1765
+
1766
+ /***/ 6752
1767
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1768
+
1769
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1770
+ /* harmony export */ XX: () => (/* binding */ D),
1771
+ /* harmony export */ c0: () => (/* binding */ E),
1772
+ /* harmony export */ qy: () => (/* binding */ b),
1773
+ /* harmony export */ s6: () => (/* binding */ A)
1774
+ /* harmony export */ });
1775
+ /* unused harmony exports _$LH, mathml, svg */
1776
+ /**
1777
+ * @license
1778
+ * Copyright 2017 Google LLC
1779
+ * SPDX-License-Identifier: BSD-3-Clause
1780
+ */
1781
+ const t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy("lit-html",{createHTML:t=>t}):void 0,h="$lit$",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n="?"+o,r=`<${n}>`,l=document,c=()=>l.createComment(""),a=t=>null===t||"object"!=typeof t&&"function"!=typeof t,u=Array.isArray,d=t=>u(t)||"function"==typeof t?.[Symbol.iterator],f="[ \t\n\f\r]",v=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\s"'>=/]+)(${f}*=${f}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),g=/'/g,$=/"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for("lit-noChange"),A=Symbol.for("lit-nothing"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?"<svg>":3===i?"<math>":"",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?"!--"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp("</"+u[2],"g")),c=p):void 0!==u[3]&&(c=p):c===p?">"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith("/>")?" ":"";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||"<?>")+(2===i?"</svg>":3===i?"</math>":"")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:"."===e[1]?I:"?"===e[1]?L:"@"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:"";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement("template");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||""===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e="number"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??"")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push("3.3.2");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};
1782
+ //# sourceMappingURL=lit-html.js.map
1783
+
1784
+
1785
+ /***/ },
1786
+
1787
+ /***/ 1413
1788
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1789
+
1790
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1791
+ /* harmony export */ J: () => (/* reexport safe */ lit_html_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_0__.J)
1792
+ /* harmony export */ });
1793
+ /* harmony import */ var lit_html_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4765);
1794
+
1795
+ //# sourceMappingURL=if-defined.js.map
1796
+
1797
+
1798
+ /***/ },
1799
+
1800
+ /***/ 6161
1801
+ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
1802
+
1803
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1804
+ /* harmony export */ AH: () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.AH),
1805
+ /* harmony export */ WF: () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.WF),
1806
+ /* harmony export */ qy: () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.qy)
1807
+ /* harmony export */ });
1808
+ /* harmony import */ var _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8760);
1809
+ /* harmony import */ var lit_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6752);
1810
+ /* harmony import */ var lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5228);
1811
+
1812
+ //# sourceMappingURL=index.js.map
1813
+
1814
+
1815
+ /***/ }
1816
+
1817
+ /******/ });
1818
+ /************************************************************************/
1819
+ /******/ // The module cache
1820
+ /******/ var __webpack_module_cache__ = {};
1821
+ /******/
1822
+ /******/ // The require function
1823
+ /******/ function __webpack_require__(moduleId) {
1824
+ /******/ // Check if module is in cache
1825
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
1826
+ /******/ if (cachedModule !== undefined) {
1827
+ /******/ return cachedModule.exports;
1828
+ /******/ }
1829
+ /******/ // Create a new module (and put it into the cache)
1830
+ /******/ var module = __webpack_module_cache__[moduleId] = {
1831
+ /******/ id: moduleId,
1832
+ /******/ loaded: false,
1833
+ /******/ exports: {}
1834
+ /******/ };
1835
+ /******/
1836
+ /******/ // Execute the module function
1837
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1838
+ /******/
1839
+ /******/ // Flag the module as loaded
1840
+ /******/ module.loaded = true;
1841
+ /******/
1842
+ /******/ // Return the exports of the module
1843
+ /******/ return module.exports;
1844
+ /******/ }
1845
+ /******/
1846
+ /************************************************************************/
1847
+ /******/ /* webpack/runtime/define property getters */
1848
+ /******/ (() => {
1849
+ /******/ // define getter functions for harmony exports
1850
+ /******/ __webpack_require__.d = (exports, definition) => {
1851
+ /******/ for(var key in definition) {
1852
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1853
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1854
+ /******/ }
1855
+ /******/ }
1856
+ /******/ };
1857
+ /******/ })();
1858
+ /******/
1859
+ /******/ /* webpack/runtime/harmony module decorator */
1860
+ /******/ (() => {
1861
+ /******/ __webpack_require__.hmd = (module) => {
1862
+ /******/ module = Object.create(module);
1863
+ /******/ if (!module.children) module.children = [];
1864
+ /******/ Object.defineProperty(module, 'exports', {
1865
+ /******/ enumerable: true,
1866
+ /******/ set: () => {
1867
+ /******/ throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);
1868
+ /******/ }
1869
+ /******/ });
1870
+ /******/ return module;
1871
+ /******/ };
1872
+ /******/ })();
1873
+ /******/
1874
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
1875
+ /******/ (() => {
1876
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1877
+ /******/ })();
1878
+ /******/
1879
+ /************************************************************************/
1880
+ var __webpack_exports__ = {};
1881
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1882
+ /* harmony export */ Y: () => (/* reexport safe */ _Header__WEBPACK_IMPORTED_MODULE_0__.Y)
1883
+ /* harmony export */ });
1884
+ /* harmony import */ var _Header__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(225);
1885
+
1886
+
1887
+ const HEADER_TAG_NAME = 'solid-ui-header';
1888
+ if (!customElements.get(HEADER_TAG_NAME)) {
1889
+ customElements.define(HEADER_TAG_NAME, _Header__WEBPACK_IMPORTED_MODULE_0__/* .Header */ .Y);
1890
+ }
1891
+ const __webpack_exports__Header = __webpack_exports__.Y;
1892
+ export { __webpack_exports__Header as Header };
1893
+
1894
+ //# sourceMappingURL=index.esm.js.map