solid-ui 3.0.6 → 3.1.1-test.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 (243) hide show
  1. package/README.md +146 -2
  2. package/dist/acl/access-groups.js +1 -1
  3. package/dist/components/button/index.d.ts +1 -0
  4. package/dist/components/button/index.esm.js +546 -0
  5. package/dist/components/button/index.esm.js.map +1 -0
  6. package/dist/components/button/index.esm.min.js +268 -0
  7. package/dist/components/button/index.esm.min.js.map +1 -0
  8. package/dist/components/button/index.js +428 -0
  9. package/dist/components/button/index.js.map +1 -0
  10. package/dist/components/button/index.min.js +257 -0
  11. package/dist/components/button/index.min.js.map +1 -0
  12. package/dist/components/combobox/index.d.ts +1 -0
  13. package/dist/components/combobox/index.esm.js +953 -0
  14. package/dist/components/combobox/index.esm.js.map +1 -0
  15. package/dist/components/combobox/index.esm.min.js +339 -0
  16. package/dist/components/combobox/index.esm.min.js.map +1 -0
  17. package/dist/components/combobox/index.js +782 -0
  18. package/dist/components/combobox/index.js.map +1 -0
  19. package/dist/components/combobox/index.min.js +328 -0
  20. package/dist/components/combobox/index.min.js.map +1 -0
  21. package/dist/components/footer/index.d.ts +1 -0
  22. package/dist/components/footer/index.esm.js +24406 -0
  23. package/dist/components/footer/index.esm.js.map +1 -0
  24. package/dist/components/footer/index.esm.min.js +137 -0
  25. package/dist/components/footer/index.esm.min.js.map +1 -0
  26. package/dist/components/footer/index.js +23303 -0
  27. package/dist/components/footer/index.js.map +1 -0
  28. package/dist/components/footer/index.min.js +125 -0
  29. package/dist/components/footer/index.min.js.map +1 -0
  30. package/dist/components/header/index.d.ts +1 -0
  31. package/dist/components/header/index.esm.js +1936 -0
  32. package/dist/components/header/index.esm.js.map +1 -0
  33. package/dist/components/header/index.esm.min.js +1125 -0
  34. package/dist/components/header/index.esm.min.js.map +1 -0
  35. package/dist/components/header/index.js +1897 -0
  36. package/dist/components/header/index.js.map +1 -0
  37. package/dist/components/header/index.min.js +1126 -0
  38. package/dist/components/header/index.min.js.map +1 -0
  39. package/dist/components/loginButton/index.d.ts +1 -0
  40. package/dist/components/loginButton/index.esm.js +761 -0
  41. package/dist/components/loginButton/index.esm.js.map +1 -0
  42. package/dist/components/loginButton/index.esm.min.js +444 -0
  43. package/dist/components/loginButton/index.esm.min.js.map +1 -0
  44. package/dist/components/loginButton/index.js +743 -0
  45. package/dist/components/loginButton/index.js.map +1 -0
  46. package/dist/components/loginButton/index.min.js +444 -0
  47. package/dist/components/loginButton/index.min.js.map +1 -0
  48. package/dist/components/photoCapture/index.d.ts +1 -0
  49. package/dist/components/photoCapture/index.esm.js +966 -0
  50. package/dist/components/photoCapture/index.esm.js.map +1 -0
  51. package/dist/components/photoCapture/index.esm.min.js +304 -0
  52. package/dist/components/photoCapture/index.esm.min.js.map +1 -0
  53. package/dist/components/photoCapture/index.js +848 -0
  54. package/dist/components/photoCapture/index.js.map +1 -0
  55. package/dist/components/photoCapture/index.min.js +293 -0
  56. package/dist/components/photoCapture/index.min.js.map +1 -0
  57. package/dist/components/select/index.d.ts +1 -0
  58. package/dist/components/select/index.esm.js +939 -0
  59. package/dist/components/select/index.esm.js.map +1 -0
  60. package/dist/components/select/index.esm.min.js +370 -0
  61. package/dist/components/select/index.esm.min.js.map +1 -0
  62. package/dist/components/select/index.js +771 -0
  63. package/dist/components/select/index.js.map +1 -0
  64. package/dist/components/select/index.min.js +359 -0
  65. package/dist/components/select/index.min.js.map +1 -0
  66. package/dist/components/signupButton/index.d.ts +1 -0
  67. package/dist/components/signupButton/index.esm.js +270 -0
  68. package/dist/components/signupButton/index.esm.js.map +1 -0
  69. package/dist/components/signupButton/index.esm.min.js +82 -0
  70. package/dist/components/signupButton/index.esm.min.js.map +1 -0
  71. package/dist/components/signupButton/index.js +264 -0
  72. package/dist/components/signupButton/index.js.map +1 -0
  73. package/dist/components/signupButton/index.min.js +82 -0
  74. package/dist/components/signupButton/index.min.js.map +1 -0
  75. package/dist/footer/index.d.ts.map +1 -1
  76. package/dist/footer/index.js +8 -4
  77. package/dist/footer/index.js.map +1 -1
  78. package/dist/icons/v2/icons-svg/contactIcons.d.ts +3 -0
  79. package/dist/icons/v2/icons-svg/contactIcons.d.ts.map +1 -0
  80. package/dist/icons/v2/icons-svg/contactIcons.js +27 -0
  81. package/dist/icons/v2/icons-svg/contactIcons.js.map +1 -0
  82. package/dist/icons/v2/icons-svg/headerIcons.d.ts +18 -0
  83. package/dist/icons/v2/icons-svg/headerIcons.d.ts.map +1 -0
  84. package/dist/icons/v2/icons-svg/headerIcons.js +245 -0
  85. package/dist/icons/v2/icons-svg/headerIcons.js.map +1 -0
  86. package/dist/icons/v2/icons-svg/pngIcons.d.ts +3 -0
  87. package/dist/icons/v2/icons-svg/pngIcons.d.ts.map +1 -0
  88. package/dist/icons/v2/icons-svg/pngIcons.js +4 -0
  89. package/dist/icons/v2/icons-svg/pngIcons.js.map +1 -0
  90. package/dist/icons/v2/icons-svg/profileIcons.d.ts +23 -0
  91. package/dist/icons/v2/icons-svg/profileIcons.d.ts.map +1 -0
  92. package/dist/icons/v2/icons-svg/profileIcons.js +317 -0
  93. package/dist/icons/v2/icons-svg/profileIcons.js.map +1 -0
  94. package/dist/login/login.d.ts.map +1 -1
  95. package/dist/login/login.js +12 -2
  96. package/dist/login/login.js.map +1 -1
  97. package/dist/matrix/matrix.js.map +1 -1
  98. package/dist/pad.d.ts.map +1 -1
  99. package/dist/pad.js +13 -13
  100. package/dist/pad.js.map +1 -1
  101. package/dist/solid-ui.esm.js +9627 -12206
  102. package/dist/solid-ui.esm.js.map +1 -1
  103. package/dist/solid-ui.esm.min.js +15 -14
  104. package/dist/solid-ui.esm.min.js.map +1 -1
  105. package/dist/solid-ui.js +12621 -14833
  106. package/dist/solid-ui.js.map +1 -1
  107. package/dist/solid-ui.min.js +23 -22
  108. package/dist/solid-ui.min.js.map +1 -1
  109. package/dist/tabs.js +2 -2
  110. package/dist/tabs.js.map +1 -1
  111. package/dist/utils/headerFooterHelpers.d.ts.map +1 -1
  112. package/dist/utils/headerFooterHelpers.js +11 -2
  113. package/dist/utils/headerFooterHelpers.js.map +1 -1
  114. package/dist/v2/components/actions/button/Button.d.ts +97 -0
  115. package/dist/v2/components/actions/button/Button.d.ts.map +1 -0
  116. package/dist/v2/components/actions/button/Button.js +325 -0
  117. package/dist/v2/components/actions/button/Button.js.map +1 -0
  118. package/dist/v2/components/actions/button/Button.test.d.ts +2 -0
  119. package/dist/v2/components/actions/button/Button.test.d.ts.map +1 -0
  120. package/dist/v2/components/actions/button/Button.test.js +117 -0
  121. package/dist/v2/components/actions/button/Button.test.js.map +1 -0
  122. package/dist/v2/components/actions/button/index.d.ts +8 -0
  123. package/dist/v2/components/actions/button/index.d.ts.map +1 -0
  124. package/dist/v2/components/actions/button/index.js +7 -0
  125. package/dist/v2/components/actions/button/index.js.map +1 -0
  126. package/dist/v2/components/auth/loginButton/LoginButton.d.ts +62 -0
  127. package/dist/v2/components/auth/loginButton/LoginButton.d.ts.map +1 -0
  128. package/dist/v2/components/auth/loginButton/LoginButton.js +539 -0
  129. package/dist/v2/components/auth/loginButton/LoginButton.js.map +1 -0
  130. package/dist/v2/components/auth/loginButton/LoginButton.test.d.ts +2 -0
  131. package/dist/v2/components/auth/loginButton/LoginButton.test.d.ts.map +1 -0
  132. package/dist/v2/components/auth/loginButton/LoginButton.test.js +53 -0
  133. package/dist/v2/components/auth/loginButton/LoginButton.test.js.map +1 -0
  134. package/dist/v2/components/auth/loginButton/downArrow.d.ts +2 -0
  135. package/dist/v2/components/auth/loginButton/downArrow.d.ts.map +1 -0
  136. package/dist/v2/components/auth/loginButton/downArrow.js +10 -0
  137. package/dist/v2/components/auth/loginButton/downArrow.js.map +1 -0
  138. package/dist/v2/components/auth/loginButton/index.d.ts +3 -0
  139. package/dist/v2/components/auth/loginButton/index.d.ts.map +1 -0
  140. package/dist/v2/components/auth/loginButton/index.js +7 -0
  141. package/dist/v2/components/auth/loginButton/index.js.map +1 -0
  142. package/dist/v2/components/auth/signupButton/SignupButton.d.ts +36 -0
  143. package/dist/v2/components/auth/signupButton/SignupButton.d.ts.map +1 -0
  144. package/dist/v2/components/auth/signupButton/SignupButton.js +84 -0
  145. package/dist/v2/components/auth/signupButton/SignupButton.js.map +1 -0
  146. package/dist/v2/components/auth/signupButton/SignupButton.test.d.ts +2 -0
  147. package/dist/v2/components/auth/signupButton/SignupButton.test.d.ts.map +1 -0
  148. package/dist/v2/components/auth/signupButton/SignupButton.test.js +49 -0
  149. package/dist/v2/components/auth/signupButton/SignupButton.test.js.map +1 -0
  150. package/dist/v2/components/auth/signupButton/index.d.ts +3 -0
  151. package/dist/v2/components/auth/signupButton/index.d.ts.map +1 -0
  152. package/dist/v2/components/auth/signupButton/index.js +7 -0
  153. package/dist/v2/components/auth/signupButton/index.js.map +1 -0
  154. package/dist/v2/components/forms/combobox/Combobox.d.ts +82 -0
  155. package/dist/v2/components/forms/combobox/Combobox.d.ts.map +1 -0
  156. package/dist/v2/components/forms/combobox/Combobox.js +506 -0
  157. package/dist/v2/components/forms/combobox/Combobox.js.map +1 -0
  158. package/dist/v2/components/forms/combobox/Combobox.test.d.ts +2 -0
  159. package/dist/v2/components/forms/combobox/Combobox.test.d.ts.map +1 -0
  160. package/dist/v2/components/forms/combobox/Combobox.test.js +201 -0
  161. package/dist/v2/components/forms/combobox/Combobox.test.js.map +1 -0
  162. package/dist/v2/components/forms/combobox/comboboxTypes.d.ts +6 -0
  163. package/dist/v2/components/forms/combobox/comboboxTypes.d.ts.map +1 -0
  164. package/dist/v2/components/forms/combobox/comboboxTypes.js +2 -0
  165. package/dist/v2/components/forms/combobox/comboboxTypes.js.map +1 -0
  166. package/dist/v2/components/forms/combobox/index.d.ts +3 -0
  167. package/dist/v2/components/forms/combobox/index.d.ts.map +1 -0
  168. package/dist/v2/components/forms/combobox/index.js +7 -0
  169. package/dist/v2/components/forms/combobox/index.js.map +1 -0
  170. package/dist/v2/components/forms/select/Select.d.ts +68 -0
  171. package/dist/v2/components/forms/select/Select.d.ts.map +1 -0
  172. package/dist/v2/components/forms/select/Select.js +499 -0
  173. package/dist/v2/components/forms/select/Select.js.map +1 -0
  174. package/dist/v2/components/forms/select/Select.test.d.ts +2 -0
  175. package/dist/v2/components/forms/select/Select.test.d.ts.map +1 -0
  176. package/dist/v2/components/forms/select/Select.test.js +168 -0
  177. package/dist/v2/components/forms/select/Select.test.js.map +1 -0
  178. package/dist/v2/components/forms/select/index.d.ts +3 -0
  179. package/dist/v2/components/forms/select/index.d.ts.map +1 -0
  180. package/dist/v2/components/forms/select/index.js +7 -0
  181. package/dist/v2/components/forms/select/index.js.map +1 -0
  182. package/dist/v2/components/forms/shared/downArrow.d.ts +2 -0
  183. package/dist/v2/components/forms/shared/downArrow.d.ts.map +1 -0
  184. package/dist/v2/components/forms/shared/downArrow.js +10 -0
  185. package/dist/v2/components/forms/shared/downArrow.js.map +1 -0
  186. package/dist/v2/components/forms/shared/keyboard.d.ts +7 -0
  187. package/dist/v2/components/forms/shared/keyboard.d.ts.map +1 -0
  188. package/dist/v2/components/forms/shared/keyboard.js +56 -0
  189. package/dist/v2/components/forms/shared/keyboard.js.map +1 -0
  190. package/dist/v2/components/forms/shared/listboxStyles.d.ts +2 -0
  191. package/dist/v2/components/forms/shared/listboxStyles.d.ts.map +1 -0
  192. package/dist/v2/components/forms/shared/listboxStyles.js +96 -0
  193. package/dist/v2/components/forms/shared/listboxStyles.js.map +1 -0
  194. package/dist/v2/components/forms/shared/listboxTemplate.d.ts +11 -0
  195. package/dist/v2/components/forms/shared/listboxTemplate.d.ts.map +1 -0
  196. package/dist/v2/components/forms/shared/listboxTemplate.js +37 -0
  197. package/dist/v2/components/forms/shared/listboxTemplate.js.map +1 -0
  198. package/dist/v2/components/forms/shared/optionTypes.d.ts +6 -0
  199. package/dist/v2/components/forms/shared/optionTypes.d.ts.map +1 -0
  200. package/dist/v2/components/forms/shared/optionTypes.js +2 -0
  201. package/dist/v2/components/forms/shared/optionTypes.js.map +1 -0
  202. package/dist/v2/components/layout/footer/Footer.d.ts +60 -0
  203. package/dist/v2/components/layout/footer/Footer.d.ts.map +1 -0
  204. package/dist/v2/components/layout/footer/Footer.js +148 -0
  205. package/dist/v2/components/layout/footer/Footer.js.map +1 -0
  206. package/dist/v2/components/layout/footer/Footer.test.d.ts +2 -0
  207. package/dist/v2/components/layout/footer/Footer.test.d.ts.map +1 -0
  208. package/dist/v2/components/layout/footer/Footer.test.js +53 -0
  209. package/dist/v2/components/layout/footer/Footer.test.js.map +1 -0
  210. package/dist/v2/components/layout/footer/index.d.ts +3 -0
  211. package/dist/v2/components/layout/footer/index.d.ts.map +1 -0
  212. package/dist/v2/components/layout/footer/index.js +7 -0
  213. package/dist/v2/components/layout/footer/index.js.map +1 -0
  214. package/dist/v2/components/layout/header/Header.d.ts +155 -0
  215. package/dist/v2/components/layout/header/Header.d.ts.map +1 -0
  216. package/dist/v2/components/layout/header/Header.js +845 -0
  217. package/dist/v2/components/layout/header/Header.js.map +1 -0
  218. package/dist/v2/components/layout/header/header.test.d.ts +2 -0
  219. package/dist/v2/components/layout/header/header.test.d.ts.map +1 -0
  220. package/dist/v2/components/layout/header/header.test.js +242 -0
  221. package/dist/v2/components/layout/header/header.test.js.map +1 -0
  222. package/dist/v2/components/layout/header/index.d.ts +4 -0
  223. package/dist/v2/components/layout/header/index.d.ts.map +1 -0
  224. package/dist/v2/components/layout/header/index.js +7 -0
  225. package/dist/v2/components/layout/header/index.js.map +1 -0
  226. package/dist/v2/components/media/photoCapture/PhotoCapture.d.ts +200 -0
  227. package/dist/v2/components/media/photoCapture/PhotoCapture.d.ts.map +1 -0
  228. package/dist/v2/components/media/photoCapture/PhotoCapture.js +723 -0
  229. package/dist/v2/components/media/photoCapture/PhotoCapture.js.map +1 -0
  230. package/dist/v2/components/media/photoCapture/PhotoCapture.test.d.ts +2 -0
  231. package/dist/v2/components/media/photoCapture/PhotoCapture.test.d.ts.map +1 -0
  232. package/dist/v2/components/media/photoCapture/PhotoCapture.test.js +157 -0
  233. package/dist/v2/components/media/photoCapture/PhotoCapture.test.js.map +1 -0
  234. package/dist/v2/components/media/photoCapture/index.d.ts +3 -0
  235. package/dist/v2/components/media/photoCapture/index.d.ts.map +1 -0
  236. package/dist/v2/components/media/photoCapture/index.js +7 -0
  237. package/dist/v2/components/media/photoCapture/index.js.map +1 -0
  238. package/dist/versionInfo.js +15 -15
  239. package/dist/widgets/buttons.d.ts +10 -3
  240. package/dist/widgets/buttons.d.ts.map +1 -1
  241. package/dist/widgets/buttons.js +81 -7
  242. package/dist/widgets/buttons.js.map +1 -1
  243. package/package.json +139 -46
@@ -0,0 +1,1126 @@
1
+ (()=>{"use strict";var e={423(e,t,o){function r(...e){console.log(...e)}o.d(t,{Rm:()=>r})},378(e,t,o){o.d(t,{Pt:()=>i});var r=o(423);const n="https://solidos.github.io/solid-ui/src",i=(e=o.hmd(e)).scriptURI?{iconBase:e.scriptURI.slice(0,e.scriptURI.lastIndexOf("/"))+"/icons/",originalIconBase:e.scriptURI.slice(0,e.scriptURI.lastIndexOf("/"))+"/originalIcons/"}:"undefined"!=typeof $SolidTestEnvironment&&$SolidTestEnvironment.iconBase?{iconBase:$SolidTestEnvironment.iconBase,originalIconBase:$SolidTestEnvironment.originalIconBase}:{iconBase:n+"/icons/",originalIconBase:n+"/originalIcons/"};(0,r.Rm)(" icons.iconBase is set to : "+i.iconBase);i.iconBase,i.originalIconBase},463(e,t,o){var r=o(161),n=o(892);const i=o(752).qy`
2
+ <svg xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 12 7"
4
+ fill="none"
5
+ >
6
+ <path d="M0.679688 0.678955L5.50729 5.50656L10.3349 0.678955" stroke="#6A7282" stroke-width="1.35776" stroke-linecap="round" stroke-linejoin="round"/>
7
+ </svg>
8
+ `;class s extends r.WF{static properties={label:{type:String,reflect:!0},theme:{type:String,reflect:!0},issuerUrl:{type:String,attribute:"issuer-url",reflect:!0},icon:{type:String,reflect:!0},layout:{type:String,reflect:!0},_popupOpen:{state:!0},_issuerInputValue:{state:!0},_dropdownOpen:{state:!0}};static styles=r.AH`
9
+ :host { /* default theme */
10
+ display: inline-block;
11
+ position: relative;
12
+ z-index: 400;
13
+ --login-button-background: var(--lavender-900, #7c4cff);
14
+ --login-button-text: var(--color-header-text, #ffffff);
15
+ --popup-background: var(--color-background, #F8F9FB);
16
+ --popup-text: var(--color-text, #1A1A1A);
17
+ --popup-border: var(--color-border, #E5E7EB);
18
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
19
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
20
+ --issuer-input-background: var(--color-background, #F8F9FB);
21
+ --issuer-input-text: var(--color-text, #1A1A1A);
22
+ --issuer-input-border: var(--color-text, #1A1A1A);
23
+ --issuer-button-background: var(--color-background, #F8F9FB);
24
+ --issuer-button-text: var(--color-text, #1A1A1A);
25
+ --issuer-button-border: var(--color-border, #E5E7EB);
26
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
27
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
28
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
29
+ --error-text-color: var(--color-error, #B00020);
30
+ }
31
+
32
+ :host([theme='dark']) {
33
+ display: inline-block;
34
+ position: relative;
35
+ z-index: 900;
36
+ --login-button-background: var(--lavender-900, #7c4cff);
37
+ --login-button-text: var(--color-header-text, #ffffff);
38
+ --popup-background: var(--color-background, #F8F9FB);
39
+ --popup-text: var(--color-text, #1A1A1A);
40
+ --popup-border: var(--color-border, #E5E7EB);
41
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
42
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
43
+ --issuer-input-background: var(--color-background, #F8F9FB);
44
+ --issuer-input-text: var(--color-text, #1A1A1A);
45
+ --issuer-input-border: var(--color-text, #1A1A1A);
46
+ --issuer-button-background: var(--color-background, #F8F9FB);
47
+ --issuer-button-text: var(--color-text, #1A1A1A);
48
+ --issuer-button-border: var(--color-text, #1A1A1A);
49
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
50
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
51
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
52
+ --error-text-color: var(--color-error, #B00020);
53
+ }
54
+
55
+ .login-button {
56
+ display: flex;
57
+ height: 35px;
58
+ padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);
59
+ align-items: center;
60
+ gap: var(--spacing-xxs, 0.3125rem);
61
+ border-radius: var(--border-radius-base, 0.3125rem);
62
+ background: var(--login-button-background);
63
+ border: none;
64
+ color: var(--login-button-text);
65
+ cursor: pointer;
66
+ font: inherit;
67
+ line-height: 1;
68
+ white-space: nowrap;
69
+ text-decoration: none;
70
+ box-sizing: border-box;
71
+ transition: transform 0.2s ease;
72
+ }
73
+
74
+ .login-button-icon {
75
+ width: 16px;
76
+ height: 16px;
77
+ display: inline-block;
78
+ object-fit: contain;
79
+ }
80
+
81
+ .login-button:active {
82
+ transform: translateY(1px);
83
+ }
84
+
85
+ .popup-dialog {
86
+ border: none;
87
+ padding: 0;
88
+ background: transparent;
89
+ outline: none;
90
+ overflow: visible;
91
+ width: min(30rem, calc(100vw - 2rem));
92
+ max-width: calc(100vw - 2rem);
93
+ max-height: calc(100dvh - 2rem);
94
+ }
95
+
96
+ .popup-dialog::backdrop {
97
+ background: var(--popup-overlay-background, rgba(0, 0, 0, 0.6));
98
+ }
99
+
100
+ .popup-box {
101
+ background: var(--popup-background);
102
+ color: var(--popup-text);
103
+ box-shadow: var(--popup-shadow);
104
+ border: 1px solid var(--popup-border);
105
+ border-radius: var(--border-radius-md, 0.5rem);
106
+ width: min(30rem, calc(100vw - 2rem));
107
+ min-width: min(30rem, calc(100vw - 2rem));
108
+ max-width: calc(100vw - 2rem);
109
+ max-height: calc(100dvh - 2rem);
110
+ overflow: auto;
111
+ z-index: 1001;
112
+ }
113
+
114
+ .popup-top-menu {
115
+ border-bottom: 1px solid #DDD;
116
+ display: flex;
117
+ flex-direction: row;
118
+ align-items: center;
119
+ justify-content: space-between;
120
+ padding-bottom: 8px;
121
+ margin-bottom: 8px;
122
+ padding: 1rem;
123
+ background: var(--gray-200, #E5E7EB);
124
+ }
125
+
126
+ .popup-title {
127
+ font-weight: 800;
128
+ }
129
+
130
+ .popup-close {
131
+ background: transparent;
132
+ border: none;
133
+ cursor: pointer;
134
+ font-size: 1.25rem;
135
+ line-height: 1;
136
+ padding: 0 0.25rem;
137
+ }
138
+
139
+ .issuer-text-section {
140
+ display: flex;
141
+ flex-direction: column;
142
+ padding: 1rem 1rem 1.75rem;
143
+ }
144
+
145
+ .issuer-text-label {
146
+ color: var(--issuer-label-color);
147
+ margin-bottom: 6px;
148
+ }
149
+
150
+ .issuer-text-row {
151
+ display: flex;
152
+ flex-direction: row;
153
+ gap: 6px;
154
+ align-items: flex-start;
155
+ }
156
+
157
+ .issuer-input-wrapper {
158
+ flex: 1;
159
+ display: flex;
160
+ flex-direction: column;
161
+ min-width: 0;
162
+ position: relative;
163
+ }
164
+
165
+ .issuer-input-field-row {
166
+ display: flex;
167
+ flex-direction: row;
168
+ position: relative;
169
+ }
170
+
171
+ .issuer-text-input {
172
+ flex: 1;
173
+ padding: 0.375rem 2.75rem 0.375rem 0.5rem;
174
+ border: 1px solid var(--issuer-input-border);
175
+ border-radius: var(--border-radius-base, 0.3125rem);
176
+ background: var(--issuer-input-background);
177
+ color: var(--issuer-input-text);
178
+ font: inherit;
179
+ min-width: 0;
180
+ }
181
+
182
+ .issuer-text-input::placeholder {
183
+ color: var(--issuer-placeholder-color);
184
+ }
185
+
186
+ .issuer-dropdown-toggle {
187
+ position: absolute;
188
+ right: 6px;
189
+ top: 50%;
190
+ transform: translateY(-50%);
191
+ width: 26px;
192
+ height: 26px;
193
+ padding: 0;
194
+ border: none;
195
+ background: transparent;
196
+ cursor: pointer;
197
+ display: flex;
198
+ align-items: center;
199
+ justify-content: center;
200
+ flex-shrink: 0;
201
+ border-radius: var(--border-radius-base, 0.3125rem);
202
+ }
203
+
204
+ .issuer-dropdown-toggle:hover {
205
+ background: var(--color-header-menu-item-hover, #e6dcff);
206
+ }
207
+
208
+ .issuer-dropdown-toggle svg {
209
+ width: 14px;
210
+ height: 14px;
211
+ display: block;
212
+ }
213
+
214
+ .issuer-dropdown-list {
215
+ position: absolute;
216
+ top: calc(100% + 6px);
217
+ left: 0;
218
+ right: 0;
219
+ border: 1px solid var(--color-border, #E5E7EB);
220
+ border-top: none;
221
+ border-radius: 0 0 var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem);
222
+ background: var(--issuer-input-background);
223
+ overflow: visible;
224
+ z-index: 10;
225
+ box-shadow: 0 4px 12px rgba(124, 77, 255, 0.12);
226
+ }
227
+
228
+ .issuer-dropdown-item {
229
+ display: block;
230
+ width: 100%;
231
+ padding: 0.625rem 0.75rem;
232
+ border: none;
233
+ border-bottom: 1px solid var(--color-border, #E5E7EB);
234
+ background: transparent;
235
+ color: var(--issuer-button-text);
236
+ cursor: pointer;
237
+ font: inherit;
238
+ text-align: left;
239
+ box-sizing: border-box;
240
+ }
241
+
242
+ .issuer-dropdown-item:last-child {
243
+ border-bottom: none;
244
+ }
245
+
246
+ .issuer-dropdown-item:hover {
247
+ background: var(--color-header-menu-item-hover, #e6dcff);
248
+ border-radius: var(--border-radius-base-md, 0.5rem);
249
+ }
250
+
251
+ .popup-footer {
252
+ display: flex;
253
+ flex-direction: row;
254
+ justify-content: center;
255
+ gap: 8px;
256
+ padding: 0.75rem 1rem 1rem;
257
+ }
258
+
259
+ .popup-footer-hr {
260
+ margin: 0;
261
+ border: none;
262
+ border-top: 1px solid var(--popup-border, #E5E7EB);
263
+ }
264
+
265
+ .popup-cancel-button {
266
+ padding: 0.5rem 1.25rem;
267
+ border: 1px solid #C0BFC7;
268
+ border-radius: var(--border-radius-base, 0.3125rem);
269
+ background: var(--popup-background);
270
+ color: #314158;
271
+ cursor: pointer;
272
+ font: inherit;
273
+ }
274
+
275
+ .popup-cancel-button:hover {
276
+ background: #D1D5DB;
277
+ }
278
+
279
+ .popup-login-button {
280
+ padding: 0.5rem 1.25rem;
281
+ border: none;
282
+ border-radius: var(--border-radius-base, 0.3125rem);
283
+ background: var(--lavender-900, #7c4cff);
284
+ color: #ffffff;
285
+ cursor: pointer;
286
+ font: inherit;
287
+ }
288
+
289
+ .popup-login-button:hover {
290
+ background: #6a3de8;
291
+ }
292
+
293
+ .popup-login-button:disabled {
294
+ opacity: 0.5;
295
+ cursor: not-allowed;
296
+ }
297
+
298
+ .error-msg {
299
+ color: var(--error-text-color);
300
+ font-size: 0.875rem;
301
+ margin-top: 8px;
302
+ }
303
+
304
+ @media (max-width: 40rem) {
305
+ .popup-dialog {
306
+ width: calc(100vw - 1rem);
307
+ max-width: calc(100vw - 1rem);
308
+ max-height: calc(100dvh - 1rem);
309
+ }
310
+
311
+ .popup-box {
312
+ width: calc(100vw - 1rem);
313
+ min-width: 0;
314
+ max-width: calc(100vw - 1rem);
315
+ max-height: calc(100dvh - 1rem);
316
+ border-radius: var(--border-radius-base, 0.3125rem);
317
+ }
318
+
319
+ .popup-top-menu,
320
+ .issuer-text-section,
321
+ .popup-footer {
322
+ padding-left: 0.75rem;
323
+ padding-right: 0.75rem;
324
+ }
325
+
326
+ .popup-footer {
327
+ flex-wrap: wrap;
328
+ gap: 0.625rem;
329
+ }
330
+
331
+ .popup-footer > button {
332
+ flex: 1 1 100%;
333
+ }
334
+
335
+ .issuer-text-row,
336
+ .issuer-input-field-row {
337
+ width: 100%;
338
+ }
339
+ }
340
+ `;_issuerInputId=`issuer-url-input-${Math.random().toString(36).slice(2,10)}`;_errorMsg="";constructor(){super(),this.label="Log In",this.theme="light",this.issuerUrl="",this.icon="",this.layout="desktop",this._popupOpen=!1,this._issuerInputValue="",this._dropdownOpen=!1}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}_openPopup(){const e=(0,n.offlineTestID)();e?this._loginComplete(e.uri):(this._issuerInputValue="undefined"!=typeof localStorage&&localStorage.getItem("loginIssuer")||this.issuerUrl||"",this._errorMsg="",this._popupOpen=!0)}_closePopup(){this._popupOpen=!1}updated(){const e=this.shadowRoot?.querySelector("dialog");e&&(this._popupOpen&&!e.open?e.showModal():!this._popupOpen&&e.open&&e.close())}async _loginToIssuer(e){if(e)try{n.solidLogicSingleton.store.updater.flagAuthorizationMetadata();const t=new URL(window.location.href).hash;t&&window.localStorage.setItem("preLoginRedirectHash",t),window.localStorage.setItem("loginIssuer",e);const o=new URL(window.location.href);o.hash="",await n.authSession.login({redirectUrl:o.href,oidcIssuer:e})}catch(e){this._errorMsg=e.message||String(e),this.requestUpdate()}}_loginComplete(e){n.authn.saveUser(e),this.dispatchEvent(new CustomEvent("login-success",{detail:{webId:e},bubbles:!0,composed:!0}))}_handleGoClick(){this._dropdownOpen=!1,this._loginToIssuer(this._issuerInputValue)}_toggleDropdown(){this._dropdownOpen=!this._dropdownOpen}_selectIssuerFromDropdown(e){this._issuerInputValue=e,this._dropdownOpen=!1}_handleInputChange(e){this._issuerInputValue=e.target.value}_handleInputKeydown(e){"Enter"===e.key&&this._loginToIssuer(this._issuerInputValue),"Escape"===e.key&&this._closePopup()}_renderPopup(){const e=(0,n.getSuggestedIssuers)();return r.qy`
341
+ <div class="popup-box">
342
+ <div class="popup-top-menu">
343
+ <span class="popup-title">Select an identity provider</span>
344
+ <button class="popup-close" type="button" aria-label="Close" @click="${()=>this._closePopup()}">&#x2715;</button>
345
+ </div>
346
+
347
+ <div class="issuer-text-section">
348
+ <label class="issuer-text-label" for="${this._issuerInputId}">Solid Identity Provider</label>
349
+ <div class="issuer-text-row">
350
+ <div class="issuer-input-wrapper">
351
+ <div class="issuer-input-field-row">
352
+ <input
353
+ id="${this._issuerInputId}"
354
+ class="issuer-text-input"
355
+ type="text"
356
+ placeholder="https://example.com"
357
+ .value="${this._issuerInputValue}"
358
+ @input="${this._handleInputChange}"
359
+ @keydown="${this._handleInputKeydown}"
360
+ autocomplete="url"
361
+ />
362
+ ${e.length?r.qy`
363
+ <button
364
+ class="issuer-dropdown-toggle"
365
+ type="button"
366
+ aria-label="Show identity provider suggestions"
367
+ aria-expanded="${this._dropdownOpen}"
368
+ @click="${()=>this._toggleDropdown()}"
369
+ >${i}</button>
370
+ `:""}
371
+ </div>
372
+ ${this._dropdownOpen&&e.length?r.qy`
373
+ <div class="issuer-dropdown-list" role="listbox">
374
+ ${e.map(e=>r.qy`
375
+ <button
376
+ class="issuer-dropdown-item"
377
+ type="button"
378
+ role="option"
379
+ @click="${()=>this._selectIssuerFromDropdown(e.uri)}"
380
+ >${e.name}</button>
381
+ `)}
382
+ </div>
383
+ `:""}
384
+ </div>
385
+ </div>
386
+ ${this._errorMsg?r.qy`<div class="error-msg">${this._errorMsg}</div>`:""}
387
+ </div>
388
+ <hr class="popup-footer-hr" />
389
+ <div class="popup-footer">
390
+ <button class="popup-cancel-button" type="button" @click="${()=>this._closePopup()}">Cancel</button>
391
+ <button
392
+ class="popup-login-button"
393
+ type="button"
394
+ ?disabled="${!this._issuerInputValue}"
395
+ @click="${()=>this._handleGoClick()}"
396
+ >Log In</button>
397
+ </div>
398
+ </div>
399
+ `}render(){return r.qy`
400
+ <button
401
+ class="login-button"
402
+ type="button"
403
+ part="login-button"
404
+ @click="${()=>this._openPopup()}"
405
+ >
406
+ ${this.icon?r.qy`<img class="login-button-icon" src="${this.icon}" alt="" aria-hidden="true" part="login-button-icon" />`:""}
407
+ <slot>${this.label}</slot>
408
+ </button>
409
+
410
+ <dialog
411
+ class="popup-dialog"
412
+ role="dialog"
413
+ aria-modal="true"
414
+ aria-label="Select an identity provider"
415
+ @cancel="${e=>{e.preventDefault(),this._closePopup()}}"
416
+ @click="${e=>{e.target===e.currentTarget&&this._closePopup()}}"
417
+ >
418
+ ${this._popupOpen?this._renderPopup():""}
419
+ </dialog>
420
+ `}}const a="solid-ui-login-button";customElements.get(a)||customElements.define(a,s)},830(e,t,o){var r=o(161);class n extends r.WF{static properties={label:{type:String,reflect:!0},theme:{type:String,reflect:!0},signupUrl:{type:String,attribute:"signup-url",reflect:!0},icon:{type:String,reflect:!0},layout:{type:String,reflect:!0}};static styles=r.AH`
421
+ :host {
422
+ display: inline-block;
423
+ --signup-button-background: transparent;
424
+ --signup-button-border: var(--color-border, #E5E7EB);
425
+ --signup-button-text: var(--color-header-text, #ffffff);
426
+ }
427
+
428
+ :host([theme='dark']) {
429
+ --signup-button-background: transparent;
430
+ --signup-button-border: var(--color-border, #E5E7EB);
431
+ --signup-button-text: var(--color-header-text, #ffffff);
432
+ }
433
+
434
+ .signup-button {
435
+ display: flex;
436
+ height: 35px;
437
+ padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);
438
+ align-items: center;
439
+ gap: var(--spacing-xxs, 0.3125rem);
440
+ border-radius: var(--border-radius-base, 0.3125rem);
441
+ background: var(--signup-button-background);
442
+ border: 1px solid var(--signup-button-border);
443
+ color: var(--signup-button-text);
444
+ cursor: pointer;
445
+ font: inherit;
446
+ line-height: 1;
447
+ white-space: nowrap;
448
+ text-decoration: none;
449
+ box-sizing: border-box;
450
+ transition: transform 0.2s ease;
451
+ }
452
+
453
+ :host([layout='mobile']) .signup-button {
454
+ border: none;
455
+ }
456
+
457
+ .signup-button-icon {
458
+ width: 16px;
459
+ height: 16px;
460
+ display: inline-block;
461
+ object-fit: contain;
462
+ }
463
+
464
+ .signup-button:active {
465
+ transform: translateY(1px);
466
+ }
467
+ `;constructor(){super(),this.label="Sign Up",this.signupUrl="https://solidproject.org/get_a_pod",this.theme="light",this.icon="",this.layout="desktop"}_handleClick(){window.open(this.signupUrl,"_blank","noopener,noreferrer")}render(){return r.qy`
468
+ <button
469
+ class="signup-button"
470
+ type="button"
471
+ part="signup-button"
472
+ @click="${()=>this._handleClick()}"
473
+ >
474
+ ${this.icon?r.qy`<img class="signup-button-icon" src="${this.icon}" alt="" aria-hidden="true" part="signup-button-icon" />`:""}
475
+ <slot>${this.label}</slot>
476
+ </button>
477
+ `}}const i="solid-ui-signup-button";customElements.get(i)||customElements.define(i,n)},892(e){e.exports=SolidLogic},826(e,t,o){o.d(t,{AH:()=>l,Rf:()=>c,sk:()=>d});
478
+ /**
479
+ * @license
480
+ * Copyright 2019 Google LLC
481
+ * SPDX-License-Identifier: BSD-3-Clause
482
+ */
483
+ const r=globalThis,n=r.ShadowRoot&&(void 0===r.ShadyCSS||r.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),s=new WeakMap;class a{constructor(e,t,o){if(this._$cssResult$=!0,o!==i)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(n&&void 0===e){const o=void 0!==t&&1===t.length;o&&(e=s.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),o&&s.set(t,e))}return e}toString(){return this.cssText}}const l=(e,...t)=>{const o=1===e.length?e[0]:t.reduce((t,o,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(o)+e[r+1],e[0]);return new a(o,e,i)},c=(e,t)=>{if(n)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const o of t){const t=document.createElement("style"),n=r.litNonce;void 0!==n&&t.setAttribute("nonce",n),t.textContent=o.cssText,e.appendChild(t)}},d=n?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const o of e.cssRules)t+=o.cssText;return(e=>new a("string"==typeof e?e:e+"",void 0,i))(t)})(e):e},760(e,t,o){o.d(t,{AH:()=>r.AH,mN:()=>f});var r=o(826);
484
+ /**
485
+ * @license
486
+ * Copyright 2017 Google LLC
487
+ * SPDX-License-Identifier: BSD-3-Clause
488
+ */const{is:n,defineProperty:i,getOwnPropertyDescriptor:s,getOwnPropertyNames:a,getOwnPropertySymbols:l,getPrototypeOf:c}=Object,d=globalThis,u=d.trustedTypes,h=u?u.emptyScript:"",p=d.reactiveElementPolyfillSupport,g=(e,t)=>e,b={toAttribute(e,t){switch(t){case Boolean:e=e?h:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let o=e;switch(t){case Boolean:o=null!==e;break;case Number:o=null===e?null:Number(e);break;case Object:case Array:try{o=JSON.parse(e)}catch(e){o=null}}return o}},m=(e,t)=>!n(e,t),v={attribute:!0,type:String,converter:b,reflect:!1,useDefault:!1,hasChanged:m};Symbol.metadata??=Symbol("metadata"),d.litPropertyMetadata??=new WeakMap;class f extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=v){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){const o=Symbol(),r=this.getPropertyDescriptor(e,o,t);void 0!==r&&i(this.prototype,e,r)}}static getPropertyDescriptor(e,t,o){const{get:r,set:n}=s(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){const i=r?.call(this);n?.call(this,t),this.requestUpdate(e,i,o)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??v}static _$Ei(){if(this.hasOwnProperty(g("elementProperties")))return;const e=c(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(g("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(g("properties"))){const e=this.properties,t=[...a(e),...l(e)];for(const o of t)this.createProperty(o,e[o])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,o]of t)this.elementProperties.set(e,o)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const o=this._$Eu(e,t);void 0!==o&&this._$Eh.set(o,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const o=new Set(e.flat(1/0).reverse());for(const e of o)t.unshift((0,r.sk)(e))}else void 0!==e&&t.push((0,r.sk)(e));return t}static _$Eu(e,t){const o=t.attribute;return!1===o?void 0:"string"==typeof o?o:"string"==typeof e?e.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(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const o of t.keys())this.hasOwnProperty(o)&&(e.set(o,this[o]),delete this[o]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return(0,r.Rf)(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,o){this._$AK(e,o)}_$ET(e,t){const o=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,o);if(void 0!==r&&!0===o.reflect){const n=(void 0!==o.converter?.toAttribute?o.converter:b).toAttribute(t,o.type);this._$Em=e,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(e,t){const o=this.constructor,r=o._$Eh.get(e);if(void 0!==r&&this._$Em!==r){const e=o.getPropertyOptions(r),n="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:b;this._$Em=r;const i=n.fromAttribute(t,e.type);this[r]=i??this._$Ej?.get(r)??i,this._$Em=null}}requestUpdate(e,t,o,r=!1,n){if(void 0!==e){const i=this.constructor;if(!1===r&&(n=this[e]),o??=i.getPropertyOptions(e),!((o.hasChanged??m)(n,t)||o.useDefault&&o.reflect&&n===this._$Ej?.get(e)&&!this.hasAttribute(i._$Eu(e,o))))return;this.C(e,t,o)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:o,reflect:r,wrapped:n},i){o&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,i??t??this[e]),!0!==n||void 0!==i)||(this._$AL.has(e)||(this.hasUpdated||o||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,o]of e){const{wrapped:e}=o,r=this[t];!0!==e||this._$AL.has(t)||void 0===r||this.C(t,void 0,o,r)}}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}}f.elementStyles=[],f.shadowRootOptions={mode:"open"},f[g("elementProperties")]=new Map,f[g("finalized")]=new Map,p?.({ReactiveElement:f}),(d.reactiveElementVersions??=[]).push("2.1.2")},228(e,t,o){o.d(t,{AH:()=>r.AH,WF:()=>s,qy:()=>n.qy});var r=o(760),n=o(752);
489
+ /**
490
+ * @license
491
+ * Copyright 2017 Google LLC
492
+ * SPDX-License-Identifier: BSD-3-Clause
493
+ */
494
+ const i=globalThis;class s extends r.mN{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=(0,n.XX)(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return n.c0}}s._$litElement$=!0,s.finalized=!0,i.litElementHydrateSupport?.({LitElement:s});const a=i.litElementPolyfillSupport;a?.({LitElement:s});(i.litElementVersions??=[]).push("4.2.2")},752(e,t,o){o.d(t,{XX:()=>D,c0:()=>E,qy:()=>k,s6:()=>S});
495
+ /**
496
+ * @license
497
+ * Copyright 2017 Google LLC
498
+ * SPDX-License-Identifier: BSD-3-Clause
499
+ */
500
+ const r=globalThis,n=e=>e,i=r.trustedTypes,s=i?i.createPolicy("lit-html",{createHTML:e=>e}):void 0,a="$lit$",l=`lit$${Math.random().toFixed(9).slice(2)}$`,c="?"+l,d=`<${c}>`,u=document,h=()=>u.createComment(""),p=e=>null===e||"object"!=typeof e&&"function"!=typeof e,g=Array.isArray,b=e=>g(e)||"function"==typeof e?.[Symbol.iterator],m="[ \t\n\f\r]",v=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,f=/-->/g,y=/>/g,x=RegExp(`>|${m}(?:([^\\s"'>=/]+)(${m}*=${m}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),$=/'/g,w=/"/g,_=/^(?:script|style|textarea|title)$/i,A=e=>(t,...o)=>({_$litType$:e,strings:t,values:o}),k=A(1),E=(A(2),A(3),Symbol.for("lit-noChange")),S=Symbol.for("lit-nothing"),M=new WeakMap,I=u.createTreeWalker(u,129);function C(e,t){if(!g(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==s?s.createHTML(t):t}const O=(e,t)=>{const o=e.length-1,r=[];let n,i=2===t?"<svg>":3===t?"<math>":"",s=v;for(let t=0;t<o;t++){const o=e[t];let c,u,h=-1,p=0;for(;p<o.length&&(s.lastIndex=p,u=s.exec(o),null!==u);)p=s.lastIndex,s===v?"!--"===u[1]?s=f:void 0!==u[1]?s=y:void 0!==u[2]?(_.test(u[2])&&(n=RegExp("</"+u[2],"g")),s=x):void 0!==u[3]&&(s=x):s===x?">"===u[0]?(s=n??v,h=-1):void 0===u[1]?h=-2:(h=s.lastIndex-u[2].length,c=u[1],s=void 0===u[3]?x:'"'===u[3]?w:$):s===w||s===$?s=x:s===f||s===y?s=v:(s=x,n=void 0);const g=s===x&&e[t+1].startsWith("/>")?" ":"";i+=s===v?o+d:h>=0?(r.push(c),o.slice(0,h)+a+o.slice(h)+l+g):o+l+(-2===h?t:g)}return[C(e,i+(e[o]||"<?>")+(2===t?"</svg>":3===t?"</math>":"")),r]};class U{constructor({strings:e,_$litType$:t},o){let r;this.parts=[];let n=0,s=0;const d=e.length-1,u=this.parts,[p,g]=O(e,t);if(this.el=U.createElement(p,o),I.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(r=I.nextNode())&&u.length<d;){if(1===r.nodeType){if(r.hasAttributes())for(const e of r.getAttributeNames())if(e.endsWith(a)){const t=g[s++],o=r.getAttribute(e).split(l),i=/([.?@])?(.*)/.exec(t);u.push({type:1,index:n,name:i[2],strings:o,ctor:"."===i[1]?R:"?"===i[1]?q:"@"===i[1]?T:B}),r.removeAttribute(e)}else e.startsWith(l)&&(u.push({type:6,index:n}),r.removeAttribute(e));if(_.test(r.tagName)){const e=r.textContent.split(l),t=e.length-1;if(t>0){r.textContent=i?i.emptyScript:"";for(let o=0;o<t;o++)r.append(e[o],h()),I.nextNode(),u.push({type:2,index:++n});r.append(e[t],h())}}}else if(8===r.nodeType)if(r.data===c)u.push({type:2,index:n});else{let e=-1;for(;-1!==(e=r.data.indexOf(l,e+1));)u.push({type:7,index:n}),e+=l.length-1}n++}}static createElement(e,t){const o=u.createElement("template");return o.innerHTML=e,o}}function H(e,t,o=e,r){if(t===E)return t;let n=void 0!==r?o._$Co?.[r]:o._$Cl;const i=p(t)?void 0:t._$litDirective$;return n?.constructor!==i&&(n?._$AO?.(!1),void 0===i?n=void 0:(n=new i(e),n._$AT(e,o,r)),void 0!==r?(o._$Co??=[])[r]=n:o._$Cl=n),void 0!==n&&(t=H(e,n._$AS(e,t.values),n,r)),t}class P{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:t},parts:o}=this._$AD,r=(e?.creationScope??u).importNode(t,!0);I.currentNode=r;let n=I.nextNode(),i=0,s=0,a=o[0];for(;void 0!==a;){if(i===a.index){let t;2===a.type?t=new L(n,n.nextSibling,this,e):1===a.type?t=new a.ctor(n,a.name,a.strings,this,e):6===a.type&&(t=new j(n,this,e)),this._$AV.push(t),a=o[++s]}i!==a?.index&&(n=I.nextNode(),i++)}return I.currentNode=u,r}p(e){let t=0;for(const o of this._$AV)void 0!==o&&(void 0!==o.strings?(o._$AI(e,o,t),t+=o.strings.length-2):o._$AI(e[t])),t++}}class L{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,o,r){this.type=2,this._$AH=S,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=o,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return void 0!==t&&11===e?.nodeType&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=H(this,e,t),p(e)?e===S||null==e||""===e?(this._$AH!==S&&this._$AR(),this._$AH=S):e!==this._$AH&&e!==E&&this._(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):b(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==S&&p(this._$AH)?this._$AA.nextSibling.data=e:this.T(u.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:o}=e,r="number"==typeof o?this._$AC(e):(void 0===o.el&&(o.el=U.createElement(C(o.h,o.h[0]),this.options)),o);if(this._$AH?._$AD===r)this._$AH.p(t);else{const e=new P(r,this),o=e.u(this.options);e.p(t),this.T(o),this._$AH=e}}_$AC(e){let t=M.get(e.strings);return void 0===t&&M.set(e.strings,t=new U(e)),t}k(e){g(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let o,r=0;for(const n of e)r===t.length?t.push(o=new L(this.O(h()),this.O(h()),this,this.options)):o=t[r],o._$AI(n),r++;r<t.length&&(this._$AR(o&&o._$AB.nextSibling,r),t.length=r)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){const t=n(e).nextSibling;n(e).remove(),e=t}}setConnected(e){void 0===this._$AM&&(this._$Cv=e,this._$AP?.(e))}}class B{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,o,r,n){this.type=1,this._$AH=S,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=n,o.length>2||""!==o[0]||""!==o[1]?(this._$AH=Array(o.length-1).fill(new String),this.strings=o):this._$AH=S}_$AI(e,t=this,o,r){const n=this.strings;let i=!1;if(void 0===n)e=H(this,e,t,0),i=!p(e)||e!==this._$AH&&e!==E,i&&(this._$AH=e);else{const r=e;let s,a;for(e=n[0],s=0;s<n.length-1;s++)a=H(this,r[o+s],t,s),a===E&&(a=this._$AH[s]),i||=!p(a)||a!==this._$AH[s],a===S?e=S:e!==S&&(e+=(a??"")+n[s+1]),this._$AH[s]=a}i&&!r&&this.j(e)}j(e){e===S?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class R extends B{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===S?void 0:e}}class q extends B{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==S)}}class T extends B{constructor(e,t,o,r,n){super(e,t,o,r,n),this.type=5}_$AI(e,t=this){if((e=H(this,e,t,0)??S)===E)return;const o=this._$AH,r=e===S&&o!==S||e.capture!==o.capture||e.once!==o.once||e.passive!==o.passive,n=e!==S&&(o===S||r);r&&this.element.removeEventListener(this.name,this,o),n&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class j{constructor(e,t,o){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=o}get _$AU(){return this._$AM._$AU}_$AI(e){H(this,e)}}const N=r.litHtmlPolyfillSupport;N?.(U,L),(r.litHtmlVersions??=[]).push("3.3.2");const D=(e,t,o)=>{const r=o?.renderBefore??t;let n=r._$litPart$;if(void 0===n){const e=o?.renderBefore??null;r._$litPart$=n=new L(t.insertBefore(h(),e),e,void 0,o??{})}return n._$AI(e),n}},161(e,t,o){o.d(t,{AH:()=>r.AH,WF:()=>r.WF,qy:()=>r.qy});o(760),o(752);var r=o(228)}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={id:r,loaded:!1,exports:{}};return e[r](i,i.exports,o),i.loaded=!0,i.exports}o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r=o(161),n=o(378),i=o(892),s=(o(463),o(830),o(752));
501
+ /**
502
+ * @license
503
+ * Copyright 2018 Google LLC
504
+ * SPDX-License-Identifier: BSD-3-Clause
505
+ */
506
+ const a=e=>e??s.s6,l=n.Pt.iconBase+"emptyProfileAvatar.png";class c extends r.WF{static properties={logo:{type:String,reflect:!0},helpIcon:{type:String,attribute:"help-icon",reflect:!0},layout:{type:String,reflect:!0},theme:{type:String,reflect:!0},brandLink:{type:String,attribute:"brand-link",reflect:!0},authState:{type:String,attribute:"auth-state",reflect:!0},loginAction:{type:Object,attribute:!1},signUpAction:{type:Object,attribute:!1},accountMenu:{type:Array,attribute:!1},logoutLabel:{type:String,attribute:"logout-label",reflect:!0},logoutIcon:{type:String,attribute:"logout-icon",reflect:!0},accountIcon:{type:String,attribute:"account-icon",reflect:!0},accountAvatar:{type:String,attribute:"account-avatar",reflect:!0},accountAvatarFallback:{type:String,attribute:"account-avatar-fallback",reflect:!0},loginIcon:{type:String,attribute:"login-icon",reflect:!0},signUpIcon:{type:String,attribute:"sign-up-icon",reflect:!0},helpMenuList:{type:Array},accountMenuOpen:{state:!0},helpMenuOpen:{state:!0},hasSlottedAccountMenu:{state:!0},hasSlottedHelpMenu:{state:!0}};static styles=r.AH`
507
+ :host { /* default theme */
508
+ display: block;
509
+ --header-bg: var(--color-header-row-bg, #332746);
510
+ --header-text: var(--color-header-text, #ffffff);
511
+ --header-border: var(--color-border, #efecf3);
512
+ --header-line: var(--color-header-menu-separator-line, #5e546d);
513
+ --header-link: var(--color-text-heading, #000000);
514
+ --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);
515
+ --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);
516
+ --header-menu-bg: var(--color-menu-bg, #f6f5f9);
517
+ --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);
518
+ --header-menu-text: var(--color-menu-item-text, #654d6c);
519
+ --header-border-radius: var(--border-radius-sm, 0.2rem);
520
+ --header-button-bg: var(--color-menu-bg, #ffffff);
521
+ --header-button-text: var(--color-header-button-text, #0F172B);
522
+ --header-button-detail-text: var(--color-header-button-detail-text, #99A1AF);
523
+ --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));
524
+ font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);
525
+ }
526
+
527
+ /* for now light and dark are the same */
528
+ :host([theme='dark']) {
529
+ display: block;
530
+ --header-bg: var(--color-header-row-bg, #332746);
531
+ --header-text: var(--color-header-text, #ffffff);
532
+ --header-border: var(--color-border, #efecf3);
533
+ --header-line: var(--color-header-menu-separator-line, #5e546d);
534
+ --header-link: var(--color-text-heading, #000000);
535
+ --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);
536
+ --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);
537
+ --header-menu-bg: var(--color-menu-bg, #f6f5f9);
538
+ --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);
539
+ --header-menu-text: var(--color-menu-item-text, #654d6c);
540
+ --header-border-radius: var(--border-radius-sm, 0.2rem);
541
+ --header-button-bg: var(--color-menu-bg, #ffffff);
542
+ --header-button-text: var(--color-header-button-text, #0f172a);
543
+ --header-button-detail-text: var(--color-header-button-detail-text, #878192);
544
+ --header-icon-filter: invert(1) brightness(1.3); /* special way to invert SVG color of icons, from white to black */
545
+ --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));
546
+ font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);
547
+ }
548
+
549
+ :host([layout='mobile']) .headerInner {
550
+ flex-wrap: wrap;
551
+ text-align: center;
552
+ gap: 0.5rem;
553
+ }
554
+
555
+ .headerInner {
556
+ display: flex;
557
+ align-items: center;
558
+ justify-content: space-between;
559
+ background: var(--header-bg);
560
+ color: var(--header-text);
561
+ padding: 0 1.5rem;
562
+ height: 3.75rem;
563
+ }
564
+
565
+ ::slotted([slot='navigation-toggle']) {
566
+ display: inline-flex;
567
+ align-items: center;
568
+ justify-content: center;
569
+ flex-shrink: 0;
570
+ margin-right: 0.75rem;
571
+ }
572
+
573
+ :host([layout='desktop']) ::slotted([slot='navigation-toggle']) {
574
+ display: none !important;
575
+ }
576
+
577
+ .brand {
578
+ display: flex;
579
+ align-items: center;
580
+ gap: 0.5rem;
581
+ text-decoration: none;
582
+ color: inherit;
583
+ }
584
+
585
+ .brand-not-displayed {
586
+ display: none;
587
+ }
588
+
589
+ .brand img {
590
+ height: 50px;
591
+ width: 55px;
592
+ object-fit: contain;
593
+ }
594
+
595
+ .menu {
596
+ display: flex;
597
+ align-items: center;
598
+ gap: 0.625rem;
599
+ margin-left: auto;
600
+ }
601
+
602
+ .auth-actions {
603
+ display: flex;
604
+ align-items: center;
605
+ gap: 0.625rem;
606
+ }
607
+
608
+ .auth-button {
609
+ display: inline-flex;
610
+ align-items: center;
611
+ justify-content: center;
612
+ gap: 0.5rem;
613
+ min-height: 2.25rem;
614
+ padding: 0.5rem 0.875rem;
615
+ border: 1px solid var(--header-border);
616
+ border-radius: 999px;
617
+ background: var(--header-menu-bg);
618
+ color: var(--header-button-text);
619
+ cursor: pointer;
620
+ font: inherit;
621
+ line-height: 1;
622
+ text-decoration: none;
623
+ box-sizing: border-box;
624
+ transition: border-color 0.2s ease, transform 0.2s ease;
625
+ }
626
+
627
+ .auth-button:hover {
628
+ border-color: var(--header-menu-item-hover);
629
+ }
630
+
631
+ .auth-button:active {
632
+ transform: translateY(1px);
633
+ }
634
+
635
+ .auth-button-sign-up {
636
+ background: color-mix(in srgb, var(--header-menu-bg) 78%, var(--header-menu-item-selected) 22%);
637
+ }
638
+
639
+ .header-menu-separator {
640
+ background: var(--header-line);
641
+ width: 1px;
642
+ height: 2.3rem;
643
+ }
644
+
645
+ .account-menu-container {
646
+ position: relative;
647
+ display: flex;
648
+ align-items: center;
649
+ }
650
+
651
+ .account-menu-trigger {
652
+ display: inline-flex;
653
+ align-items: center;
654
+ gap: 0.625rem;
655
+ min-height: 2.5rem;
656
+ border: 1px solid var(--header-menu-loggedin-bg);
657
+ border-radius: 999px;
658
+ background: var(--header-menu-loggedin-bg);
659
+ color: var(--header-button-text);
660
+ cursor: pointer;
661
+ font: inherit;
662
+ line-height: 1;
663
+ }
664
+
665
+ :host([layout='mobile']) .account-menu-trigger {
666
+ gap: 0;
667
+ min-height: auto;
668
+ padding: 0;
669
+ border: 1.5px solid var(--header-border);
670
+ background: var(--header-menu-loggedin-bg);
671
+ }
672
+
673
+ :host([layout='mobile']) .account-menu-trigger-label {
674
+ display: none;
675
+ }
676
+
677
+ .account-menu-trigger:disabled {
678
+ cursor: default;
679
+ opacity: 0.7;
680
+ }
681
+
682
+ .account-menu-trigger-icon {
683
+ width: 1rem;
684
+ height: 1rem;
685
+ object-fit: contain;
686
+ flex-shrink: 0;
687
+ }
688
+
689
+ .account-avatar,
690
+ .account-menu-avatar {
691
+ display: inline-flex;
692
+ align-items: center;
693
+ justify-content: center;
694
+ flex-shrink: 0;
695
+ overflow: hidden;
696
+ background: color-mix(in srgb, var(--header-bg) 18%, #ded8e7 82%);
697
+ color: var(--header-button-text);
698
+ font-size: 0.75rem;
699
+ font-weight: 600;
700
+ text-transform: uppercase;
701
+ }
702
+
703
+ .account-avatar {
704
+ width: 1.75rem;
705
+ height: 1.75rem;
706
+ border-radius: 999px;
707
+ border: 1.5px solid var(--header-border);
708
+ }
709
+
710
+ .account-menu-avatar {
711
+ width: 2rem;
712
+ height: 2rem;
713
+ border-radius: 0.5rem;
714
+ }
715
+
716
+ .account-avatar img,
717
+ .account-menu-avatar img {
718
+ width: 100%;
719
+ height: 100%;
720
+ object-fit: cover;
721
+ }
722
+
723
+ .account-avatar-img {
724
+ width: 1.75rem;
725
+ height: 1.75rem;
726
+ border-radius: 999px;
727
+ object-fit: cover;
728
+ background-color: var(--header-border);
729
+ }
730
+
731
+ .account-dropdown {
732
+ position: absolute;
733
+ top: calc(100% + 0.9rem);
734
+ right: 0;
735
+ min-width: 15rem;
736
+ padding: 0.5rem;
737
+ background: var(--header-button-bg);
738
+ border: 1px solid var(--header-border);
739
+ border-radius: var(--header-border-radius);
740
+ box-shadow: var(--header-shadow);
741
+ z-index: 10;
742
+ }
743
+
744
+ .account-dropdown[hidden] {
745
+ display: none;
746
+ }
747
+
748
+ .account-menu-list {
749
+ list-style: none;
750
+ margin: 0;
751
+ padding: 0;
752
+ display: flex;
753
+ flex-direction: column;
754
+ gap: 0.25rem;
755
+ }
756
+
757
+ .account-menu-item-link,
758
+ .account-menu-item-button,
759
+ ::slotted([slot='account-menu']) {
760
+ display: flex;
761
+ align-items: center;
762
+ gap: 0.625rem;
763
+ width: 100%;
764
+ box-sizing: border-box;
765
+ color: var(--header-link);
766
+ text-decoration: none;
767
+ background: transparent;
768
+ border: 1px solid transparent;
769
+ border-radius: 10px;
770
+ padding: 0.5rem;
771
+ cursor: pointer;
772
+ font: inherit;
773
+ text-align: left;
774
+ }
775
+
776
+ .account-menu-item-link:hover,
777
+ .account-menu-item-button:hover {
778
+ color: var(--header-link);
779
+ background: var(--header-menu-item-hover);
780
+ border-color: var(--header-menu-item-hover);
781
+ }
782
+
783
+ .account-menu-item-link:active,
784
+ .account-menu-item-button:active {
785
+ color: var(--header-link);
786
+ background: var(--header-menu-item-selected);
787
+ border-color: var(--header-menu-item-selected);
788
+ transform: translateY(1px);
789
+ }
790
+
791
+ .account-switch {
792
+ display: block;
793
+ width: 100%;
794
+ color: var(--header-menu-text);
795
+ text-align: left;
796
+ text-transform: uppercase;
797
+ font-size: 80%;
798
+ }
799
+
800
+ .dropdown-menu-separator {
801
+ display: block;
802
+ width: calc(100% + 1rem);
803
+ margin: 0.5rem -0.5rem;
804
+ border: 0;
805
+ border-top: 1px solid var(--header-border);
806
+ }
807
+
808
+ .account-menu-copy {
809
+ display: flex;
810
+ flex-direction: column;
811
+ min-width: 0;
812
+ }
813
+
814
+ .account-menu-label {
815
+ color: var(--header-button-text);
816
+ overflow: hidden;
817
+ text-overflow: ellipsis;
818
+ white-space: nowrap;
819
+ }
820
+
821
+ .account-menu-webid {
822
+ color: var(--header-button-detail-text);
823
+ font-size: 0.5rem;
824
+ overflow: hidden;
825
+ text-overflow: ellipsis;
826
+ white-space: nowrap;
827
+ }
828
+
829
+ .help-menu-container {
830
+ position: relative;
831
+ display: flex;
832
+ align-items: center;
833
+ background: transparent;
834
+ }
835
+
836
+ .help-menu-trigger {
837
+ display: inline-flex;
838
+ align-items: center;
839
+ justify-content: center;
840
+ padding: 0;
841
+ border: 0;
842
+ background: transparent;
843
+ cursor: pointer;
844
+ }
845
+
846
+ .help-menu-trigger:disabled {
847
+ cursor: default;
848
+ }
849
+
850
+ .help-dropdown {
851
+ position: absolute;
852
+ top: calc(100% + 0.9rem);
853
+ right: 0;
854
+ min-width: 12rem;
855
+ padding: 0.5rem;
856
+ background: var(--header-button-bg);
857
+ border: 1px solid var(--header-border);
858
+ border-radius: var(--header-border-radius);
859
+ box-shadow: var(--header-shadow);
860
+ z-index: 10;
861
+ }
862
+
863
+ .help-dropdown[hidden] {
864
+ display: none;
865
+ }
866
+
867
+ .help-dropdown-content {
868
+ display: flex;
869
+ flex-direction: column;
870
+ gap: 0.25rem;
871
+ }
872
+
873
+ .help-menu-list {
874
+ list-style: none;
875
+ margin: 0;
876
+ padding: 0;
877
+ display: flex;
878
+ flex-direction: column;
879
+ gap: 0.25rem;
880
+ }
881
+
882
+ .help-menu-list a,
883
+ .help-menu-list button,
884
+ ::slotted([slot='help-menu']) {
885
+ display: block;
886
+ width: 100%;
887
+ box-sizing: border-box;
888
+ color: var(--header-link);
889
+ text-decoration: none;
890
+ background: transparent;
891
+ border: 1px solid transparent;
892
+ border-radius: 4px;
893
+ padding: 0.375rem 0.5rem;
894
+ cursor: pointer;
895
+ font: inherit;
896
+ text-align: left;
897
+ }
898
+
899
+ .help-menu-list a:hover,
900
+ .help-menu-list button:hover {
901
+ color: var(--header-link);
902
+ background: var(--header-menu-item-hover);
903
+ border-color: var(--header-menu-item-hover);
904
+ }
905
+
906
+ .help-menu-list a:active,
907
+ .help-menu-list button:active {
908
+ color: var(--header-link);
909
+ background: var(--header-menu-item-selected);
910
+ border-color: var(--header-menu-item-selected);
911
+ transform: translateY(1px);
912
+ }
913
+
914
+ ::slotted(a), ::slotted(button) {
915
+ color: var(--header-link);
916
+ text-decoration: none;
917
+ background: var(--header-button-bg);
918
+ border: 1px solid var(--header-border);
919
+ border-radius: 4px;
920
+ padding: 0.25rem 0.5rem;
921
+ cursor: pointer;
922
+ font: inherit;
923
+ }
924
+
925
+ .help-icon {
926
+ width: 35px;
927
+ height: 35px;
928
+ cursor: pointer;
929
+ }
930
+
931
+ .help-text {
932
+ color: var(--header-text, #ffffff);
933
+ font: inherit;
934
+ }
935
+
936
+ .logout-action-icon {
937
+ width: 16px;
938
+ height: 16px;
939
+ display: inline-block;
940
+ object-fit: contain;
941
+ margin-right: 0.5rem;
942
+ }
943
+ `;constructor(){super(),this.logo="https://solidproject.org/assets/img/solid-emblem.svg",this.helpIcon="",this.layout="desktop",this.theme="light",this.brandLink="#",this.authState="logged-out",this.loginAction={label:"Log In",action:"login"},this.signUpAction={label:"Sign Up",action:"sign-up",url:"https://solidproject.org/get_a_pod"},this.accountMenu=[],this.logoutLabel="Log Out",this.logoutIcon="",this.accountIcon="▼",this.accountAvatar="",this.accountAvatarFallback="",this.loginIcon="",this.signUpIcon="",this.helpMenuList=[],this.accountMenuOpen=!1,this.helpMenuOpen=!1,this.hasSlottedAccountMenu=!1,this.hasSlottedHelpMenu=!1}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.handleDocumentClick),window.addEventListener("keydown",this.handleWindowKeydown)}disconnectedCallback(){document.removeEventListener("click",this.handleDocumentClick),window.removeEventListener("keydown",this.handleWindowKeydown),super.disconnectedCallback()}handleHelpMenuClick(e,t){if(t.preventDefault(),this.helpMenuOpen=!1,this.dispatchEvent(new CustomEvent("help-menu-select",{detail:e,bubbles:!0,composed:!0})),e.url){const t=e.target||"_blank",o="_blank"===t?"noopener,noreferrer":void 0;window.open(e.url,t,o)}}handleAccountMenuClick(e){this.accountMenuOpen=!1,this.dispatchEvent(new CustomEvent("account-menu-select",{detail:e,bubbles:!0,composed:!0}))}handleDocumentClick=e=>{e.composedPath().includes(this)||(this.accountMenuOpen=!1,this.helpMenuOpen=!1)};handleWindowKeydown=e=>{"Escape"===e.key&&(this.accountMenuOpen||this.helpMenuOpen)&&(this.accountMenuOpen=!1,this.helpMenuOpen=!1)};handleAccountSlotChange(e){const t=e.target;this.hasSlottedAccountMenu=t.assignedElements({flatten:!0}).length>0}handleHelpSlotChange(e){const t=e.target;this.hasSlottedHelpMenu=t.assignedElements({flatten:!0}).length>0}toggleAccountMenu(e){e.preventDefault(),this.hasAccountMenuItems()&&(this.helpMenuOpen=!1,this.accountMenuOpen=!this.accountMenuOpen)}toggleHelpMenu(e){e.preventDefault(),this.hasHelpMenuItems()&&(this.accountMenuOpen=!1,this.helpMenuOpen=!this.helpMenuOpen)}hasAccountMenuItems(){return Boolean(this.accountMenu?.length||this.hasSlottedAccountMenu||this.logoutLabel)}hasHelpMenuItems(){return Boolean(this.helpMenuList?.length||this.hasSlottedHelpMenu)}shouldRenderHelpMenu(){return"mobile"!==this.layout&&this.hasHelpMenuItems()}renderLoggedInAvatar(e,t="account-avatar"){const o=Boolean(e),n=o?e:this.accountAvatarFallback||l,i=o?"Profile Avatar":"Default Avatar";return"mobile"===this.layout&&"account-avatar"===t?r.qy`<img class="account-avatar-img" src="${n}" alt="${i}" />`:r.qy`
944
+ <span class="${t}" aria-hidden="true">
945
+ <img src="${n}" alt="${i}" />
946
+ </span>
947
+ `}renderLoggedOutActions(){return r.qy`
948
+ <div class="auth-actions" part="auth-actions">
949
+ <slot name="login-action">
950
+ <solid-ui-login-button
951
+ label="${this.loginAction.label}"
952
+ icon=${a("mobile"!==this.layout?this.loginIcon||this.loginAction.icon:void 0)}
953
+ layout="${this.layout}"
954
+ theme="${this.theme}"
955
+ part="login-action"
956
+ @login-success="${()=>this.handleLoginSuccess()}"
957
+ ></solid-ui-login-button>
958
+ </slot>
959
+ <slot name="sign-up-action">
960
+ <solid-ui-signup-button
961
+ label="${this.signUpAction.label}"
962
+ signup-url="${a(this.signUpAction.url)}"
963
+ layout="${this.layout}"
964
+ .icon=${a("mobile"!==this.layout?this.signUpIcon||this.signUpAction.icon:void 0)}
965
+ theme="${this.theme}"
966
+ part="sign-up-action"
967
+ ></solid-ui-signup-button>
968
+ </slot>
969
+ </div>
970
+ `}handleLoginSuccess(){this.authState="logged-in",this.dispatchEvent(new CustomEvent("auth-action-select",{detail:{role:"login"},bubbles:!0,composed:!0}))}async handleLogout(){this.accountMenuOpen=!1;try{await i.authSession.logout()}catch(e){}this.authState="logged-out",this.dispatchEvent(new CustomEvent("logout-select",{detail:{role:"logout"},bubbles:!0,composed:!0}))}renderAccountMenuItem(e){const t=r.qy`
971
+ ${this.renderLoggedInAvatar(e.avatar,"account-menu-avatar")}
972
+ <span class="account-menu-copy">
973
+ <span class="account-menu-label">${e.label}</span>
974
+ ${e.webid&&"mobile"!==this.layout?r.qy`<span class="account-menu-webid">${e.webid}</span>`:""}
975
+ </span>
976
+ `;return e.url?r.qy`
977
+ <a
978
+ class="account-menu-item-link"
979
+ href="${e.url}"
980
+ @click="${()=>this.handleAccountMenuClick(e)}"
981
+ part="account-menu-item"
982
+ role="menuitem"
983
+ >
984
+ ${t}
985
+ </a>
986
+ `:r.qy`
987
+ <button
988
+ class="account-menu-item-button"
989
+ type="button"
990
+ @click="${()=>this.handleAccountMenuClick(e)}"
991
+ part="account-menu-item"
992
+ role="menuitem"
993
+ >
994
+ ${t}
995
+ </button>
996
+ `}renderLoggedInActions(){return r.qy`
997
+ <div class="account-menu-container" part="account-menu-container">
998
+ <slot name="account-trigger">
999
+ <button
1000
+ id="accountMenuTrigger"
1001
+ class="account-menu-trigger"
1002
+ type="button"
1003
+ aria-haspopup="menu"
1004
+ aria-expanded="${this.accountMenuOpen?"true":"false"}"
1005
+ ?disabled="${!this.hasAccountMenuItems()}"
1006
+ @click="${e=>this.toggleAccountMenu(e)}"
1007
+ part="account-menu-trigger"
1008
+ >
1009
+ ${this.renderLoggedInAvatar(this.accountAvatar)}
1010
+ ${"mobile"!==this.layout&&this.accountIcon?r.qy`
1011
+ <img class="account-menu-trigger-icon" src="${this.accountIcon}" alt="" aria-hidden="true" />`:""}
1012
+ </button>
1013
+ </slot>
1014
+
1015
+ <nav
1016
+ id="accountMenu"
1017
+ class="account-dropdown"
1018
+ role="menu"
1019
+ ?inert="${!this.accountMenuOpen||!this.hasAccountMenuItems()}"
1020
+ ?hidden="${!this.accountMenuOpen||!this.hasAccountMenuItems()}"
1021
+ part="account-dropdown"
1022
+ >
1023
+ <slot name="account-switch" class="account-switch">Switch account</slot>
1024
+ <hr class="dropdown-menu-separator" />
1025
+ <slot name="account-menu" @slotchange="${e=>this.handleAccountSlotChange(e)}"></slot>
1026
+ ${this.accountMenu&&this.accountMenu.length?r.qy`
1027
+ <ul class="account-menu-list">
1028
+ ${this.accountMenu.map(e=>r.qy`
1029
+ <li>${this.renderAccountMenuItem(e)}</li>
1030
+ `)}
1031
+ </ul>
1032
+ `:""}
1033
+ ${this.logoutLabel?r.qy`
1034
+ <hr class="dropdown-menu-separator" />
1035
+ <button
1036
+ class="account-menu-item-button"
1037
+ type="button"
1038
+ @click="${()=>this.handleLogout()}"
1039
+ part="logout-action"
1040
+ role="menuitem"
1041
+ >
1042
+ ${this.logoutIcon&&"mobile"!==this.layout?r.qy`<img class="logout-action-icon" src="${this.logoutIcon}" alt="" aria-hidden="true" part="logout-action-icon" />`:""}
1043
+ ${this.logoutLabel}
1044
+ </button>
1045
+ `:""}
1046
+ </nav>
1047
+ </div>
1048
+ `}renderUserArea(){return"logged-out"===this.authState?this.renderLoggedOutActions():this.renderLoggedInActions()}firstUpdated(){const e=this.shadowRoot?.getElementById("brandLink");e&&e.classList.toggle("brand-not-displayed","mobile"===this.layout)}updated(e){if(e.has("layout")){const e=this.shadowRoot?.getElementById("brandLink");e&&e.classList.toggle("brand-not-displayed","mobile"===this.layout)}}render(){return r.qy`
1049
+ <div class="headerInner">
1050
+ <slot name="navigation-toggle"></slot>
1051
+ <a
1052
+ id="brandLink"
1053
+ class="brand"
1054
+ href="${this.brandLink}"
1055
+ part="brand"
1056
+ >
1057
+ <img id="brandImg" src="${this.logo}" alt="Logo" part="logo" />
1058
+ </a>
1059
+
1060
+ <div class="menu" part="menu">
1061
+ ${this.renderUserArea()}
1062
+
1063
+ ${this.shouldRenderHelpMenu()?r.qy`
1064
+ <div class="header-menu-separator" />`:""}
1065
+
1066
+ ${this.shouldRenderHelpMenu()?r.qy`
1067
+ <div class="help-menu-container" part="help-menu-container">
1068
+ <button
1069
+ id="helpMenuTrigger"
1070
+ class="help-menu-trigger"
1071
+ type="button"
1072
+ aria-haspopup="menu"
1073
+ aria-expanded="${this.helpMenuOpen?"true":"false"}"
1074
+ ?disabled="${!this.hasHelpMenuItems()}"
1075
+ @click="${e=>this.toggleHelpMenu(e)}"
1076
+ part="help-menu-trigger"
1077
+ >
1078
+ ${this.helpIcon?r.qy`<img id="helpIcon" class="help-icon" src="${this.helpIcon}" alt="Help" part="help-icon" />`:r.qy`<span class="help-text" part="help-text">Help</span>`}
1079
+ </button>
1080
+
1081
+ <nav
1082
+ id="helpMenu"
1083
+ class="help-dropdown"
1084
+ role="menu"
1085
+ ?inert="${!this.helpMenuOpen||!this.hasHelpMenuItems()}"
1086
+ ?hidden="${!this.helpMenuOpen||!this.hasHelpMenuItems()}"
1087
+ part="help-dropdown"
1088
+ >
1089
+ <div class="help-dropdown-content" @click="${()=>{this.helpMenuOpen=!1}}">
1090
+ <slot name="help-menu" @slotchange="${e=>this.handleHelpSlotChange(e)}"></slot>
1091
+ ${this.helpMenuList&&this.helpMenuList.length?r.qy`
1092
+ <ul class="help-menu-list">
1093
+ ${this.helpMenuList.map(e=>r.qy`
1094
+ <li>
1095
+ ${e.url?r.qy`
1096
+ <a
1097
+ href="${e.url}"
1098
+ target="${e.target||"_blank"}"
1099
+ rel="${a("_blank"===(e.target||"_blank")?"noopener noreferrer":void 0)}"
1100
+ @click="${t=>this.handleHelpMenuClick(e,t)}"
1101
+ part="help-menu-item"
1102
+ role="menuitem"
1103
+ >
1104
+ ${e.label}
1105
+ </a>
1106
+ `:r.qy`
1107
+ <button
1108
+ type="button"
1109
+ @click="${t=>this.handleHelpMenuClick(e,t)}"
1110
+ part="help-menu-item"
1111
+ role="menuitem"
1112
+ >
1113
+ ${e.label}
1114
+ </button>
1115
+ `}
1116
+ </li>
1117
+ `)}
1118
+ </ul>
1119
+ `:""}
1120
+ </div>
1121
+ </nav>
1122
+ </div>`:""}
1123
+ </div>
1124
+ </div>
1125
+ `}}const d="solid-ui-header";customElements.get(d)||customElements.define(d,c)})();
1126
+ //# sourceMappingURL=index.min.js.map