solid-ui 3.1.3-6 → 3.1.3-7
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.
- package/dist/_virtual/~icons/lucide/chevron-down.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/circle-user.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/log-in.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/log-out.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/user.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/user.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/x.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/x.esm.js +1 -0
- package/dist/_virtual/~icons/svg-spinners/180-ring.cjs.js +1 -1
- package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -0
- package/dist/acl/access-controller.cjs.js +1 -1
- package/dist/acl/access-controller.cjs.js.map +1 -1
- package/dist/acl/access-controller.esm.js.map +1 -1
- package/dist/acl/access-groups.cjs.js.map +1 -1
- package/dist/acl/access-groups.esm.js.map +1 -1
- package/dist/acl/acl-control.cjs.js +1 -1
- package/dist/acl/acl-control.cjs.js.map +1 -1
- package/dist/acl/acl-control.esm.js +1 -1
- package/dist/acl/acl-control.esm.js.map +1 -1
- package/dist/acl/acl.cjs.js.map +1 -1
- package/dist/acl/acl.esm.js.map +1 -1
- package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
- package/dist/acl/add-agent-buttons.esm.js.map +1 -1
- package/dist/chat/bookmarks.cjs.js +1 -1
- package/dist/chat/bookmarks.cjs.js.map +1 -1
- package/dist/chat/bookmarks.esm.js +1 -1
- package/dist/chat/bookmarks.esm.js.map +1 -1
- package/dist/chat/chatLogic.cjs.js.map +1 -1
- package/dist/chat/chatLogic.esm.js.map +1 -1
- package/dist/chat/dateFolder.cjs.js +1 -1
- package/dist/chat/dateFolder.cjs.js.map +1 -1
- package/dist/chat/dateFolder.esm.js +1 -1
- package/dist/chat/dateFolder.esm.js.map +1 -1
- package/dist/chat/infinite.cjs.js +1 -1
- package/dist/chat/infinite.cjs.js.map +1 -1
- package/dist/chat/infinite.esm.js +1 -1
- package/dist/chat/infinite.esm.js.map +1 -1
- package/dist/chat/keys.cjs.js +1 -1
- package/dist/chat/keys.cjs.js.map +1 -1
- package/dist/chat/keys.esm.js +1 -1
- package/dist/chat/keys.esm.js.map +1 -1
- package/dist/chat/message.cjs.js +1 -1
- package/dist/chat/message.cjs.js.map +1 -1
- package/dist/chat/message.esm.js +24 -24
- package/dist/chat/message.esm.js.map +1 -1
- package/dist/chat/messageTools.cjs.js.map +1 -1
- package/dist/chat/messageTools.esm.js.map +1 -1
- package/dist/chat/signature.cjs.js +1 -1
- package/dist/chat/signature.cjs.js.map +1 -1
- package/dist/chat/signature.esm.js +1 -1
- package/dist/chunks/{DialogProvider-DphduSXG.js → DialogProvider-Bt65G0Tk.js} +4 -4
- package/dist/chunks/DialogProvider-Bt65G0Tk.js.map +1 -0
- package/dist/chunks/{account-CFhrB0LO.js → account-BZ2rYQhV.js} +12 -12
- package/dist/chunks/account-BZ2rYQhV.js.map +1 -0
- package/dist/chunks/{auth-Cpf3HYqF.js → auth-RHyQ2iIl.js} +10 -10
- package/dist/chunks/{auth-Cpf3HYqF.js.map → auth-RHyQ2iIl.js.map} +1 -1
- package/dist/chunks/{avatar-D281qln0.js → avatar-Jx8xm2Op.js} +5 -5
- package/dist/chunks/avatar-Jx8xm2Op.js.map +1 -0
- package/dist/chunks/{button-DbKYu6-r.js → button-0s0lZdxm.js} +2 -2
- package/dist/chunks/{button-DbKYu6-r.js.map → button-0s0lZdxm.js.map} +1 -1
- package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js +1516 -0
- package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js.map +1 -0
- package/dist/chunks/combobox-Cxi8xUMn.js +473 -0
- package/dist/chunks/combobox-Cxi8xUMn.js.map +1 -0
- package/dist/chunks/{combobox-option-Ck0mu4Gc.js → combobox-option-DiR3VpyT.js} +2 -2
- package/dist/chunks/{combobox-option-Ck0mu4Gc.js.map → combobox-option-DiR3VpyT.js.map} +1 -1
- package/dist/chunks/{components-BlEGdx4i.js → components-C1LEhsaK.js} +5 -9
- package/dist/chunks/components-C1LEhsaK.js.map +1 -0
- package/dist/chunks/{context-DJ_8r7Oc.js → context-uE5jJlS0.js} +2 -2
- package/dist/chunks/{context-DJ_8r7Oc.js.map → context-uE5jJlS0.js.map} +1 -1
- package/dist/chunks/decorators-BiCkPd_3.js.map +1 -1
- package/dist/chunks/{dialog-DlBtmOm6.js → dialog-BAzrHJ8w.js} +6 -6
- package/dist/chunks/dialog-BAzrHJ8w.js.map +1 -0
- package/dist/chunks/{dialog-content-CMeH_BD7.js → dialog-content-fdJrkCyB.js} +2 -2
- package/dist/chunks/{dialog-content-CMeH_BD7.js.map → dialog-content-fdJrkCyB.js.map} +1 -1
- package/dist/chunks/{dialog-footer-D0zzIMlx.js → dialog-footer-Bs_p2Nn9.js} +2 -2
- package/dist/chunks/{dialog-footer-D0zzIMlx.js.map → dialog-footer-Bs_p2Nn9.js.map} +1 -1
- package/dist/chunks/{dialog-header-DeC1iiLD.js → dialog-header-CWIAAoDo.js} +2 -2
- package/dist/chunks/{dialog-header-DeC1iiLD.js.map → dialog-header-CWIAAoDo.js.map} +1 -1
- package/dist/chunks/{dialogs-root-BcUcRuAt.js → dialogs-root-Cv932Aqm.js} +3 -3
- package/dist/chunks/{dialogs-root-BcUcRuAt.js.map → dialogs-root-Cv932Aqm.js.map} +1 -1
- package/dist/chunks/{footer-Bxe4WPgl.js → footer-D64T6XLO.js} +3 -3
- package/dist/chunks/{footer-Bxe4WPgl.js.map → footer-D64T6XLO.js.map} +1 -1
- package/dist/chunks/{guard-Da3znlJI.js → guard-CjUBGVDk.js} +4 -4
- package/dist/chunks/{guard-Da3znlJI.js.map → guard-CjUBGVDk.js.map} +1 -1
- package/dist/chunks/{header-Bqd2CEK3.js → header-COBaJDdB.js} +4 -4
- package/dist/chunks/{header-Bqd2CEK3.js.map → header-COBaJDdB.js.map} +1 -1
- package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js → headerFooterHelpers-7O_ln1QD.js} +2 -2
- package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js.map → headerFooterHelpers-7O_ln1QD.js.map} +1 -1
- package/dist/chunks/{input-Bkzi4zSV.js → input-BF224Jid.js} +2 -2
- package/dist/chunks/{input-Bkzi4zSV.js.map → input-BF224Jid.js.map} +1 -1
- package/dist/chunks/{jsonld-DZG2v1pE.js → jsonld-DRZuoyoU.js} +54 -54
- package/dist/chunks/{jsonld-DZG2v1pE.js.map → jsonld-DRZuoyoU.js.map} +1 -1
- package/dist/chunks/lit-C4H1jI4q.js.map +1 -1
- package/dist/chunks/{login-button-C603hM0G.js → login-button-DPeMi00d.js} +5 -5
- package/dist/chunks/{login-button-C603hM0G.js.map → login-button-DPeMi00d.js.map} +1 -1
- package/dist/chunks/{logout-button-Cxzpq-C3.js → logout-button-CbiLE7jO.js} +5 -5
- package/dist/chunks/{logout-button-Cxzpq-C3.js.map → logout-button-CbiLE7jO.js.map} +1 -1
- package/dist/chunks/{menu-aQiqq1ET.js → menu-DNcuV-1J.js} +183 -1693
- package/dist/chunks/menu-DNcuV-1J.js.map +1 -0
- package/dist/chunks/{menu-item-DBy4o-M4.js → menu-item-Ck0l-uEI.js} +2 -2
- package/dist/chunks/{menu-item-DBy4o-M4.js.map → menu-item-Ck0l-uEI.js.map} +1 -1
- package/dist/chunks/photo-capture-tiBsdSbA.js.map +1 -1
- package/dist/chunks/{provider-DZmdgerD.js → provider-C4eSzopG.js} +5 -5
- package/dist/chunks/{provider-DZmdgerD.js.map → provider-C4eSzopG.js.map} +1 -1
- package/dist/chunks/{select-wczAzbZF.js → select-D8dW53pr.js} +2 -2
- package/dist/chunks/{select-wczAzbZF.js.map → select-D8dW53pr.js.map} +1 -1
- package/dist/chunks/{select-option-hd_d1RNj.js → select-option-B-6ULCpQ.js} +2 -2
- package/dist/chunks/{select-option-hd_d1RNj.js.map → select-option-B-6ULCpQ.js.map} +1 -1
- package/dist/chunks/{signup-button-CsRaOUI4.js → signup-button-BfIxbpwa.js} +5 -5
- package/dist/chunks/{signup-button-CsRaOUI4.js.map → signup-button-BfIxbpwa.js.map} +1 -1
- package/dist/chunks/{solid-logic.esm-7q6hmfIF.js → solid-logic.esm-T70qfHAr.js} +2521 -2504
- package/dist/chunks/solid-logic.esm-T70qfHAr.js.map +1 -0
- package/dist/chunks/{src-BOU-JwWx.js → src-Bx4GAnWq.js} +16 -16
- package/dist/chunks/{src-BOU-JwWx.js.map → src-Bx4GAnWq.js.map} +1 -1
- package/dist/components/account/Account.cjs.js +1 -1
- package/dist/components/account/Account.cjs.js.map +1 -1
- package/dist/components/account/Account.esm.js +1 -1
- package/dist/components/account/Account.styles.cjs.js +1 -1
- package/dist/components/account/Account.styles.cjs.js.map +1 -1
- package/dist/components/account/Account.styles.esm.js +1 -1
- package/dist/components/account/Account.styles.esm.js.map +1 -1
- package/dist/components/account/index.cjs.js +1 -1
- package/dist/components/account/index.esm.js +1 -1
- package/dist/components/account.js +1 -1
- package/dist/components/avatar/Avatar.cjs.js +1 -1
- package/dist/components/avatar/Avatar.cjs.js.map +1 -1
- package/dist/components/avatar/Avatar.esm.js +1 -1
- package/dist/components/avatar/Avatar.styles.cjs.js +1 -1
- package/dist/components/avatar/Avatar.styles.cjs.js.map +1 -1
- package/dist/components/avatar/Avatar.styles.esm.js +1 -1
- package/dist/components/avatar/Avatar.styles.esm.js.map +1 -1
- package/dist/components/avatar/index.cjs.js +1 -1
- package/dist/components/avatar/index.esm.js +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/button/Button.cjs.js +1 -1
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.esm.js +1 -1
- package/dist/components/button/Button.esm.js.map +1 -1
- package/dist/components/button/index.cjs.js +1 -1
- package/dist/components/button/index.esm.js +3 -3
- package/dist/components/button.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +57 -25
- package/dist/components/combobox/Combobox.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +22 -3
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.esm.js +220 -101
- package/dist/components/combobox/Combobox.esm.js.map +1 -1
- package/dist/components/combobox/Combobox.styles.cjs.js +1 -1
- package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.styles.esm.js +1 -1
- package/dist/components/combobox/Combobox.styles.esm.js.map +1 -1
- package/dist/components/combobox/index.cjs.js +1 -1
- package/dist/components/combobox/index.esm.js +1 -1
- package/dist/components/combobox-option/ComboboxOption.cjs.js +1 -1
- package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -1
- package/dist/components/combobox-option/ComboboxOption.esm.js +1 -1
- package/dist/components/combobox-option/index.cjs.js +1 -1
- package/dist/components/combobox-option/index.esm.js +1 -1
- package/dist/components/combobox-option.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog/Dialog.cjs.js +2 -2
- package/dist/components/dialog/Dialog.cjs.js.map +1 -1
- package/dist/components/dialog/Dialog.d.ts.map +1 -1
- package/dist/components/dialog/Dialog.esm.js +2 -2
- package/dist/components/dialog/Dialog.esm.js.map +1 -1
- package/dist/components/dialog/index.cjs.js +1 -1
- package/dist/components/dialog/index.esm.js +1 -1
- package/dist/components/dialog-content/DialogContent.cjs.js +1 -1
- package/dist/components/dialog-content/DialogContent.cjs.js.map +1 -1
- package/dist/components/dialog-content/DialogContent.esm.js +1 -1
- package/dist/components/dialog-content/DialogContent.esm.js.map +1 -1
- package/dist/components/dialog-content/index.cjs.js +1 -1
- package/dist/components/dialog-content/index.esm.js +1 -1
- package/dist/components/dialog-content.js +1 -1
- package/dist/components/dialog-footer/DialogFooter.cjs.js +1 -1
- package/dist/components/dialog-footer/DialogFooter.cjs.js.map +1 -1
- package/dist/components/dialog-footer/DialogFooter.esm.js +1 -1
- package/dist/components/dialog-footer/DialogFooter.esm.js.map +1 -1
- package/dist/components/dialog-footer/index.cjs.js +1 -1
- package/dist/components/dialog-footer/index.esm.js +1 -1
- package/dist/components/dialog-footer.js +1 -1
- package/dist/components/dialog-header/DialogHeader.cjs.js +1 -1
- package/dist/components/dialog-header/DialogHeader.cjs.js.map +1 -1
- package/dist/components/dialog-header/DialogHeader.esm.js +1 -1
- package/dist/components/dialog-header/DialogHeader.esm.js.map +1 -1
- package/dist/components/dialog-header/index.cjs.js +1 -1
- package/dist/components/dialog-header/index.esm.js +1 -1
- package/dist/components/dialog-header.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
- package/dist/components/dialog-provider/DialogProvider.esm.js +2 -2
- package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
- package/dist/components/dialog-provider/index.cjs.js +1 -1
- package/dist/components/dialog-provider/index.esm.js +1 -1
- package/dist/components/dialog-provider.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialogs-root/DialogsRoot.cjs.js +1 -1
- package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
- package/dist/components/dialogs-root/DialogsRoot.esm.js +1 -1
- package/dist/components/dialogs-root/index.cjs.js +1 -1
- package/dist/components/dialogs-root/index.esm.js +1 -1
- package/dist/components/dialogs-root.js +1 -1
- package/dist/components/footer.js +1 -1
- package/dist/components/guard/Guard.cjs.js +1 -1
- package/dist/components/guard/Guard.cjs.js.map +1 -1
- package/dist/components/guard/Guard.esm.js +1 -1
- package/dist/components/guard/index.cjs.js +1 -1
- package/dist/components/guard/index.esm.js +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/header.js +1 -1
- package/dist/components/input/Input.cjs.js +1 -1
- package/dist/components/input/Input.cjs.js.map +1 -1
- package/dist/components/input/Input.esm.js +1 -1
- package/dist/components/input/index.cjs.js +1 -1
- package/dist/components/input/index.esm.js +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/login-button/LoginButton.cjs.js +1 -1
- package/dist/components/login-button/LoginButton.cjs.js.map +1 -1
- package/dist/components/login-button/LoginButton.esm.js +1 -1
- package/dist/components/login-button/index.cjs.js +1 -1
- package/dist/components/login-button/index.esm.js +1 -1
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal/LoginModal.cjs.js +1 -1
- package/dist/components/login-modal/LoginModal.cjs.js.map +1 -1
- package/dist/components/login-modal/LoginModal.esm.js +1 -1
- package/dist/components/login-modal/index.cjs.js +1 -1
- package/dist/components/login-modal/index.esm.js +1 -1
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
- package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -1
- package/dist/components/logout-button/LogoutButton.esm.js +1 -1
- package/dist/components/logout-button/index.cjs.js +1 -1
- package/dist/components/logout-button/index.esm.js +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/menu/Menu.cjs.js +1 -1
- package/dist/components/menu/Menu.cjs.js.map +1 -1
- package/dist/components/menu/Menu.esm.js +1 -1
- package/dist/components/menu/Menu.esm.js.map +1 -1
- package/dist/components/menu/index.cjs.js +1 -1
- package/dist/components/menu/index.esm.js +1 -1
- package/dist/components/menu-item/MenuItem.cjs.js +1 -1
- package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
- package/dist/components/menu-item/MenuItem.esm.js +1 -1
- package/dist/components/menu-item/index.cjs.js +1 -1
- package/dist/components/menu-item/index.esm.js +1 -1
- package/dist/components/menu-item.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/provider/Provider.cjs.js +1 -1
- package/dist/components/provider/Provider.cjs.js.map +1 -1
- package/dist/components/provider/Provider.esm.js +1 -1
- package/dist/components/provider/index.cjs.js +1 -1
- package/dist/components/provider/index.esm.js +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/select/Select.cjs.js +1 -1
- package/dist/components/select/Select.cjs.js.map +1 -1
- package/dist/components/select/Select.esm.js +1 -1
- package/dist/components/select/Select.esm.js.map +1 -1
- package/dist/components/select/index.cjs.js +1 -1
- package/dist/components/select/index.esm.js +1 -1
- package/dist/components/select-option/SelectOption.cjs.js +1 -1
- package/dist/components/select-option/SelectOption.cjs.js.map +1 -1
- package/dist/components/select-option/SelectOption.esm.js +1 -1
- package/dist/components/select-option/index.cjs.js +1 -1
- package/dist/components/select-option/index.esm.js +1 -1
- package/dist/components/select-option.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/signup-button/SignupButton.cjs.js +1 -1
- package/dist/components/signup-button/SignupButton.cjs.js.map +1 -1
- package/dist/components/signup-button/SignupButton.esm.js +1 -1
- package/dist/components/signup-button/index.cjs.js +1 -1
- package/dist/components/signup-button/index.esm.js +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components.js +23 -23
- package/dist/create/create.cjs.js.map +1 -1
- package/dist/create/create.esm.js.map +1 -1
- package/dist/create/index.cjs.js.map +1 -1
- package/dist/footer/index.cjs.js +1 -1
- package/dist/footer/index.esm.js +1 -1
- package/dist/header/index.cjs.js +1 -1
- package/dist/header/index.cjs.js.map +1 -1
- package/dist/header/index.esm.js +1 -1
- package/dist/header/index.esm.js.map +1 -1
- package/dist/index.js +5 -5
- package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
- package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
- package/dist/lib/auth/context.cjs.js.map +1 -1
- package/dist/lib/auth/index.cjs.js +1 -1
- package/dist/lib/auth/index.esm.js +5 -4
- package/dist/lib/components/ids.cjs.js.map +1 -1
- package/dist/lib/components/ids.esm.js.map +1 -1
- package/dist/lib/components/index.cjs.js +1 -1
- package/dist/lib/components/index.esm.js +6 -5
- package/dist/lib/components/traits/DialogTrait.cjs.js.map +1 -1
- package/dist/lib/components/traits/DialogTrait.esm.js.map +1 -1
- package/dist/lib/components/traits/InputTrait.cjs.js +1 -1
- package/dist/lib/components/traits/InputTrait.cjs.js.map +1 -1
- package/dist/lib/components/traits/InputTrait.d.ts +1 -0
- package/dist/lib/components/traits/InputTrait.d.ts.map +1 -1
- package/dist/lib/components/traits/InputTrait.esm.js +3 -2
- package/dist/lib/components/traits/InputTrait.esm.js.map +1 -1
- package/dist/lib/components/traits/index.cjs.js +1 -1
- package/dist/lib/components/traits/index.esm.js +3 -2
- package/dist/lib/components/web-component/WebComponent.cjs.js +1 -1
- package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.d.ts.map +1 -1
- package/dist/lib/components/web-component/WebComponent.esm.js +1 -6
- package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.styles.cjs.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.styles.esm.js.map +1 -1
- package/dist/lib/components/web-component/index.cjs.js +1 -1
- package/dist/lib/components/web-component/index.esm.js +2 -1
- package/dist/lib/dialogs/context.cjs.js.map +1 -1
- package/dist/lib/dialogs/index.cjs.js +1 -1
- package/dist/lib/dialogs/index.esm.js +6 -5
- package/dist/lib/log.cjs.js +1 -1
- package/dist/lib/log.cjs.js.map +1 -1
- package/dist/lib/log.esm.js +1 -1
- package/dist/lib/log.esm.js.map +1 -1
- package/dist/lib/messageArea.cjs.js.map +1 -1
- package/dist/lib/messageArea.esm.js.map +1 -1
- package/dist/lib/ns.cjs.js.map +1 -1
- package/dist/lib/pad.cjs.js +1 -1
- package/dist/lib/pad.cjs.js.map +1 -1
- package/dist/lib/pad.esm.js +1 -1
- package/dist/lib/pad.esm.js.map +1 -1
- package/dist/lib/participation.cjs.js.map +1 -1
- package/dist/lib/participation.esm.js.map +1 -1
- package/dist/lib/preferences.cjs.js +1 -1
- package/dist/lib/preferences.cjs.js.map +1 -1
- package/dist/lib/preferences.esm.js +1 -1
- package/dist/lib/preferences.esm.js.map +1 -1
- package/dist/lib/table.cjs.js.map +1 -1
- package/dist/lib/table.esm.js.map +1 -1
- package/dist/lib/tabs.cjs.js +1 -1
- package/dist/lib/tabs.cjs.js.map +1 -1
- package/dist/lib/tabs.esm.js +1 -1
- package/dist/lib/tabs.esm.js.map +1 -1
- package/dist/loader.js +5 -5
- package/dist/login/login.cjs.js +1 -1
- package/dist/login/login.cjs.js.map +1 -1
- package/dist/login/login.esm.js +1 -1
- package/dist/login/login.esm.js.map +1 -1
- package/dist/matrix/index.cjs.js.map +1 -1
- package/dist/matrix/matrix.cjs.js.map +1 -1
- package/dist/matrix/matrix.esm.js.map +1 -1
- package/dist/media/media-capture.cjs.js.map +1 -1
- package/dist/media/media-capture.esm.js.map +1 -1
- package/dist/signup/signup.cjs.js.map +1 -1
- package/dist/signup/signup.esm.js.map +1 -1
- package/dist/solid-ui.js +307 -275
- package/dist/solid-ui.min.js +307 -275
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
- package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
- package/dist/utils/index.cjs.js +2 -2
- package/dist/utils/index.cjs.js.map +1 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
- package/dist/utils/keyHelpers/acl.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/acl.esm.js.map +1 -1
- package/dist/utils/keyHelpers/otherHelpers.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/otherHelpers.esm.js.map +1 -1
- package/dist/utils/label.cjs.js.map +1 -1
- package/dist/utils/label.esm.js.map +1 -1
- package/dist/v2/components/auth/loginButton/LoginButton.cjs.js.map +1 -1
- package/dist/v2/components/auth/loginButton/LoginButton.esm.js.map +1 -1
- package/dist/v2/components/auth/loginButton/downArrow.cjs.js.map +1 -1
- package/dist/v2/components/auth/loginButton/index.cjs.js +1 -1
- package/dist/v2/components/auth/loginButton/index.esm.js +1 -0
- package/dist/v2/components/auth/signupButton/index.cjs.js +1 -1
- package/dist/v2/components/auth/signupButton/index.esm.js +1 -0
- package/dist/v2/components/layout/footer/index.cjs.js +1 -1
- package/dist/v2/components/layout/footer/index.esm.js +1 -0
- package/dist/v2/components/layout/header/Header.cjs.js.map +1 -1
- package/dist/v2/components/layout/header/Header.esm.js.map +1 -1
- package/dist/v2/components/layout/header/index.cjs.js +1 -1
- package/dist/v2/components/layout/header/index.esm.js +1 -0
- package/dist/v2/components/media/photoCapture/PhotoCapture.cjs.js.map +1 -1
- package/dist/v2/components/media/photoCapture/PhotoCapture.esm.js.map +1 -1
- package/dist/v2/components/media/photoCapture/index.cjs.js +1 -1
- package/dist/v2/components/media/photoCapture/index.esm.js +1 -0
- package/dist/widgets/buttons/iconLinks.cjs.js.map +1 -1
- package/dist/widgets/buttons/iconLinks.esm.js.map +1 -1
- package/dist/widgets/buttons.cjs.js.map +1 -1
- package/dist/widgets/buttons.esm.js.map +1 -1
- package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
- package/dist/widgets/dragAndDrop.esm.js.map +1 -1
- package/dist/widgets/error.cjs.js.map +1 -1
- package/dist/widgets/error.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
- package/dist/widgets/forms/basic.cjs.js.map +1 -1
- package/dist/widgets/forms/basic.esm.js.map +1 -1
- package/dist/widgets/forms/fieldFunction.cjs.js.map +1 -1
- package/dist/widgets/forms/fieldParams.cjs.js.map +1 -1
- package/dist/widgets/forms/fieldParams.esm.js.map +1 -1
- package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
- package/dist/widgets/forms/formStyle.esm.js.map +1 -1
- package/dist/widgets/forms.cjs.js +1 -1
- package/dist/widgets/forms.cjs.js.map +1 -1
- package/dist/widgets/forms.esm.js +1 -1
- package/dist/widgets/forms.esm.js.map +1 -1
- package/dist/widgets/index.cjs.js +1 -1
- package/dist/widgets/index.esm.js +65 -65
- package/dist/widgets/multiSelect.cjs.js.map +1 -1
- package/dist/widgets/multiSelect.esm.js.map +1 -1
- package/dist/widgets/peoplePicker.cjs.js.map +1 -1
- package/dist/widgets/peoplePicker.esm.js.map +1 -1
- package/dist/widgets/widgetHelpers.cjs.js.map +1 -1
- package/dist/widgets/widgetHelpers.esm.js.map +1 -1
- package/package.json +8 -10
- package/dist/chunks/DialogProvider-DphduSXG.js.map +0 -1
- package/dist/chunks/account-CFhrB0LO.js.map +0 -1
- package/dist/chunks/avatar-D281qln0.js.map +0 -1
- package/dist/chunks/combobox-Dtgc8qqO.js +0 -354
- package/dist/chunks/combobox-Dtgc8qqO.js.map +0 -1
- package/dist/chunks/components-BlEGdx4i.js.map +0 -1
- package/dist/chunks/dialog-DlBtmOm6.js.map +0 -1
- package/dist/chunks/menu-aQiqq1ET.js.map +0 -1
- package/dist/chunks/solid-logic.esm-7q6hmfIF.js.map +0 -1
- package/dist/solid-ui.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-Bqd2CEK3.js","names":["html","phoneIcon","LitElement","html","css","authSession","authn","getSuggestedIssuers","offlineTestID","solidLogicSingleton","phoneIcon","downArrowIcon","LoginButton","properties","label","type","String","reflect","theme","issuerUrl","attribute","icon","layout","_popupOpen","state","_issuerInputValue","_dropdownOpen","styles","_issuerInputId","Math","random","toString","slice","_errorMsg","constructor","connectedCallback","disconnectedCallback","_openPopup","offline","_loginComplete","uri","localStorage","getItem","_closePopup","updated","dialog","shadowRoot","querySelector","open","showModal","close","_loginToIssuer","issuerUri","store","updater","flagAuthorizationMetadata","preLoginRedirectHash","URL","window","location","href","hash","setItem","locationUrl","login","err","message","requestUpdate","webIdUri","saveUser","dispatchEvent","CustomEvent","detail","webId","bubbles","composed","_handleGoClick","_toggleDropdown","_selectIssuerFromDropdown","_handleInputChange","e","target","value","_handleInputKeydown","key","_renderPopup","suggestedIssuers","length","map","issuerInfo","name","render","preventDefault","currentTarget","LoginButton","LOGIN_BUTTON_TAG_NAME","customElements","get","define","LitElement","html","css","DEFAULT_SIGNUP_URL","SignupButton","properties","label","type","String","reflect","theme","signupUrl","attribute","icon","layout","styles","constructor","_handleClick","window","open","render","SignupButton","SIGNUP_BUTTON_TAG_NAME","customElements","get","define","t","Features","DESIGN_SYSTEM_HEADER_ACCOUNT","LitElement","html","css","icons","authSession","authn","performServerSideLogout","ifDefined","Features","DEFAULT_HELP_MENU_ICON","DEFAULT_SOLID_ICON_URL","DEFAULT_SIGNUP_URL","DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR","iconBase","clearPersistedAuthState","window","explicitKeys","key","localStorage","removeItem","sessionStorage","indexedDB","databases","dbName","Promise","resolve","request","deleteDatabase","onsuccess","onerror","onblocked","_err","Header","properties","logo","type","String","reflect","helpIcon","attribute","layout","theme","brandLink","authState","loginAction","Object","signUpAction","accountMenu","Array","logoutLabel","logoutIcon","accountIcon","accountAvatar","accountAvatarFallback","loginIcon","signUpIcon","helpMenuList","accountMenuOpen","state","helpMenuOpen","hasSlottedAccountMenu","hasSlottedHelpMenu","authResolved","styles","_refreshPromise","handleAuthSessionChange","refreshAuthStateFromSession","catch","constructor","label","action","url","connectedCallback","document","addEventListener","handleDocumentClick","handleWindowKeydown","events","on","disconnectedCallback","removeEventListener","off","checkUser","currentUser","handleHelpMenuClick","item","event","preventDefault","dispatchEvent","CustomEvent","detail","bubbles","composed","target","features","undefined","open","handleAccountMenuClick","composedPath","includes","handleAccountSlotChange","slot","assignedElements","flatten","length","handleHelpSlotChange","toggleAccountMenu","hasAccountMenuItems","toggleHelpMenu","hasHelpMenuItems","Boolean","shouldRenderHelpMenu","renderLoggedInAvatar","avatar","wrapperClass","hasAvatar","imageSrc","imageAlt","renderLoggedOutActions","icon","handleLoginSuccess","role","handleLogout","issuer","getItem","logout","redirectedToServerLogout","postLogoutRedirectPath","renderAccountMenuItem","content","webid","renderLoggedInActions","e","map","renderUserArea","DESIGN_SYSTEM_HEADER_ACCOUNT","firstUpdated","shadowRoot","getElementById","classList","toggle","updated","changedProperties","has","render","Header","HEADER_TAG_NAME","customElements","get","define"],"sources":["../../src/v2/components/auth/loginButton/downArrow.ts","../../src/v2/components/auth/loginButton/LoginButton.ts","../../src/v2/components/auth/loginButton/index.ts","../../src/v2/components/auth/signupButton/SignupButton.ts","../../src/v2/components/auth/signupButton/index.ts","../../node_modules/lit-html/directives/if-defined.js","../../src/lib/features.ts","../../src/v2/components/layout/header/Header.ts","../../src/v2/components/layout/header/index.ts"],"sourcesContent":["import { html } from 'lit-html'\n\nexport const phoneIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n viewBox=\"0 0 12 7\" \n fill=\"none\"\n >\n <path d=\"M0.679688 0.678955L5.50729 5.50656L10.3349 0.678955\" stroke=\"#6A7282\" stroke-width=\"1.35776\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\n","import { LitElement, html, css } from 'lit'\nimport { authSession, authn, getSuggestedIssuers, offlineTestID, solidLogicSingleton } from 'solid-logic'\nimport { phoneIcon as downArrowIcon } from './downArrow'\n\nexport class LoginButton extends LitElement {\n static properties = {\n label: { type: String, reflect: true },\n theme: { type: String, reflect: true },\n issuerUrl: { type: String, attribute: 'issuer-url', reflect: true },\n icon: { type: String, reflect: true },\n layout: { type: String, reflect: true },\n _popupOpen: { state: true },\n _issuerInputValue: { state: true },\n _dropdownOpen: { state: true }\n }\n\n static styles = css`\n :host { /* default theme */\n display: inline-block;\n position: relative;\n z-index: 400;\n --login-button-background: var(--lavender-900, #7c4cff);\n --login-button-text: var(--color-header-text, #ffffff);\n --popup-background: var(--color-background, #F8F9FB);\n --popup-text: var(--color-text, #1A1A1A);\n --popup-border: var(--color-border, #E5E7EB);\n --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));\n --popup-overlay-background: rgba(0, 0, 0, 0.6);\n --issuer-input-background: var(--color-background, #F8F9FB);\n --issuer-input-text: var(--color-text, #1A1A1A);\n --issuer-input-border: var(--color-text, #1A1A1A);\n --issuer-button-background: var(--color-background, #F8F9FB);\n --issuer-button-text: var(--color-text, #1A1A1A);\n --issuer-button-border: var(--color-border, #E5E7EB);\n --issuer-button-hover-background: var(--lavender-900, #7c4cff);\n --issuer-label-color: var(--grey-purple-700, #1A1A1A);\n --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;\n --error-text-color: var(--color-error, #B00020);\n }\n\n :host([theme='dark']) {\n display: inline-block;\n position: relative;\n z-index: 900;\n --login-button-background: var(--lavender-900, #7c4cff);\n --login-button-text: var(--color-header-text, #ffffff);\n --popup-background: var(--color-background, #F8F9FB);\n --popup-text: var(--color-text, #1A1A1A);\n --popup-border: var(--color-border, #E5E7EB);\n --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));\n --popup-overlay-background: rgba(0, 0, 0, 0.6);\n --issuer-input-background: var(--color-background, #F8F9FB);\n --issuer-input-text: var(--color-text, #1A1A1A);\n --issuer-input-border: var(--color-text, #1A1A1A);\n --issuer-button-background: var(--color-background, #F8F9FB);\n --issuer-button-text: var(--color-text, #1A1A1A);\n --issuer-button-border: var(--color-text, #1A1A1A);\n --issuer-button-hover-background: var(--lavender-900, #7c4cff);\n --issuer-label-color: var(--grey-purple-700, #1A1A1A);\n --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;\n --error-text-color: var(--color-error, #B00020);\n }\n\n .login-button {\n display: flex;\n height: 35px;\n padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);\n align-items: center;\n gap: var(--spacing-xxs, 0.3125rem);\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--login-button-background);\n border: none;\n color: var(--login-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n white-space: nowrap;\n text-decoration: none;\n box-sizing: border-box;\n transition: transform 0.2s ease;\n }\n\n .login-button-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n object-fit: contain;\n }\n\n .login-button:active {\n transform: translateY(1px);\n }\n\n .popup-dialog {\n border: none;\n padding: 0;\n background: transparent;\n outline: none;\n overflow: visible;\n width: min(30rem, calc(100vw - 2rem));\n max-width: calc(100vw - 2rem);\n max-height: calc(100dvh - 2rem);\n }\n\n .popup-dialog::backdrop {\n background: var(--popup-overlay-background, rgba(0, 0, 0, 0.6));\n }\n\n .popup-box {\n background: var(--popup-background);\n color: var(--popup-text);\n box-shadow: var(--popup-shadow);\n border: 1px solid var(--popup-border);\n border-radius: var(--border-radius-md, 0.5rem);\n width: min(30rem, calc(100vw - 2rem));\n min-width: min(30rem, calc(100vw - 2rem));\n max-width: calc(100vw - 2rem);\n max-height: calc(100dvh - 2rem);\n overflow: auto;\n z-index: 1001;\n }\n\n .popup-top-menu {\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding-bottom: 8px;\n margin-bottom: 8px;\n padding: 1rem;\n background: var(--gray-200, #E5E7EB);\n }\n\n .popup-title {\n font-weight: 800;\n }\n\n .popup-close {\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 1.25rem;\n line-height: 1;\n padding: 0 0.25rem;\n }\n\n .issuer-text-section {\n display: flex;\n flex-direction: column;\n padding: 1rem 1rem 1.75rem;\n }\n\n .issuer-text-label {\n color: var(--issuer-label-color);\n margin-bottom: 6px;\n }\n\n .issuer-text-row {\n display: flex;\n flex-direction: row;\n gap: 6px;\n align-items: flex-start;\n }\n\n .issuer-input-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-width: 0;\n position: relative;\n }\n\n .issuer-input-field-row {\n display: flex;\n flex-direction: row;\n position: relative;\n }\n\n .issuer-text-input {\n flex: 1;\n padding: 0.375rem 2.75rem 0.375rem 0.5rem;\n border: 1px solid var(--issuer-input-border);\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--issuer-input-background);\n color: var(--issuer-input-text);\n font: inherit;\n min-width: 0;\n }\n\n .issuer-text-input::placeholder {\n color: var(--issuer-placeholder-color);\n }\n\n .issuer-dropdown-toggle {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 26px;\n height: 26px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border-radius: var(--border-radius-base, 0.3125rem);\n }\n\n .issuer-dropdown-toggle:hover {\n background: var(--color-header-menu-item-hover, #e6dcff);\n }\n\n .issuer-dropdown-toggle svg {\n width: 14px;\n height: 14px;\n display: block;\n }\n\n .issuer-dropdown-list {\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n right: 0;\n border: 1px solid var(--color-border, #E5E7EB);\n border-top: none;\n border-radius: 0 0 var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem);\n background: var(--issuer-input-background);\n overflow: visible;\n z-index: 10;\n box-shadow: 0 4px 12px rgba(124, 77, 255, 0.12);\n }\n\n .issuer-dropdown-item {\n display: block;\n width: 100%;\n padding: 0.625rem 0.75rem;\n border: none;\n border-bottom: 1px solid var(--color-border, #E5E7EB);\n background: transparent;\n color: var(--issuer-button-text);\n cursor: pointer;\n font: inherit;\n text-align: left;\n box-sizing: border-box;\n }\n\n .issuer-dropdown-item:last-child {\n border-bottom: none;\n }\n\n .issuer-dropdown-item:hover {\n background: var(--color-header-menu-item-hover, #e6dcff);\n border-radius: var(--border-radius-base-md, 0.5rem);\n }\n\n .popup-footer {\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 8px;\n padding: 0.75rem 1rem 1rem;\n }\n\n .popup-footer-hr {\n margin: 0;\n border: none;\n border-top: 1px solid var(--popup-border, #E5E7EB);\n }\n\n .popup-cancel-button {\n padding: 0.5rem 1.25rem;\n border: 1px solid #C0BFC7;\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--popup-background);\n color: #314158;\n cursor: pointer;\n font: inherit;\n }\n\n .popup-cancel-button:hover {\n background: #D1D5DB;\n }\n\n .popup-login-button {\n padding: 0.5rem 1.25rem;\n border: none;\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--lavender-900, #7c4cff);\n color: #ffffff;\n cursor: pointer;\n font: inherit;\n }\n\n .popup-login-button:hover {\n background: #6a3de8;\n }\n\n .popup-login-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .error-msg {\n color: var(--error-text-color);\n font-size: 0.875rem;\n margin-top: 8px;\n }\n\n @media (max-width: 40rem) {\n .popup-dialog {\n width: calc(100vw - 1rem);\n max-width: calc(100vw - 1rem);\n max-height: calc(100dvh - 1rem);\n }\n\n .popup-box {\n width: calc(100vw - 1rem);\n min-width: 0;\n max-width: calc(100vw - 1rem);\n max-height: calc(100dvh - 1rem);\n border-radius: var(--border-radius-base, 0.3125rem);\n }\n\n .popup-top-menu,\n .issuer-text-section,\n .popup-footer {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n }\n\n .popup-footer {\n flex-wrap: wrap;\n gap: 0.625rem;\n }\n\n .popup-footer > button {\n flex: 1 1 100%;\n }\n\n .issuer-text-row,\n .issuer-input-field-row {\n width: 100%;\n }\n }\n `\n\n declare label: string\n declare theme: 'light' | 'dark'\n declare issuerUrl: string\n declare icon: string\n declare layout: 'desktop' | 'mobile'\n declare _popupOpen: boolean\n declare _issuerInputValue: string\n declare _dropdownOpen: boolean\n\n private _issuerInputId = `issuer-url-input-${Math.random().toString(36).slice(2, 10)}`\n private _errorMsg = ''\n\n constructor () {\n super()\n this.label = 'Log In'\n this.theme = 'light'\n this.issuerUrl = ''\n this.icon = ''\n this.layout = 'desktop'\n this._popupOpen = false\n this._issuerInputValue = ''\n this._dropdownOpen = false\n }\n\n connectedCallback () {\n super.connectedCallback()\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n }\n\n private _openPopup () {\n const offline = offlineTestID()\n if (offline) {\n this._loginComplete(offline.uri)\n return\n }\n this._issuerInputValue = (typeof localStorage !== 'undefined' && localStorage.getItem('loginIssuer')) || this.issuerUrl || ''\n this._errorMsg = ''\n this._popupOpen = true\n }\n\n private _closePopup () {\n this._popupOpen = false\n }\n\n updated () {\n const dialog = this.shadowRoot?.querySelector('dialog') as HTMLDialogElement | null\n if (!dialog) return\n if (this._popupOpen && !dialog.open) {\n dialog.showModal()\n } else if (!this._popupOpen && dialog.open) {\n dialog.close()\n }\n }\n\n private async _loginToIssuer (issuerUri: string) {\n if (!issuerUri) return\n try {\n // clear authorization metadata from store\n ;(solidLogicSingleton.store.updater as any).flagAuthorizationMetadata()\n\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n window.localStorage.setItem('loginIssuer', issuerUri)\n\n const locationUrl = new URL(window.location.href)\n locationUrl.hash = ''\n await authSession.login(issuerUri, locationUrl.href)\n } catch (err: any) {\n this._errorMsg = err.message || String(err)\n this.requestUpdate()\n }\n }\n\n private _loginComplete (webIdUri: string) {\n authn.saveUser(webIdUri)\n this.dispatchEvent(new CustomEvent('login-success', {\n detail: { webId: webIdUri },\n bubbles: true,\n composed: true\n }))\n }\n\n private _handleGoClick () {\n this._dropdownOpen = false\n this._loginToIssuer(this._issuerInputValue)\n }\n\n private _toggleDropdown () {\n this._dropdownOpen = !this._dropdownOpen\n }\n\n private _selectIssuerFromDropdown (uri: string) {\n this._issuerInputValue = uri\n this._dropdownOpen = false\n }\n\n private _handleInputChange (e: Event) {\n this._issuerInputValue = (e.target as HTMLInputElement).value\n }\n\n private _handleInputKeydown (e: KeyboardEvent) {\n if (e.key === 'Enter') {\n this._loginToIssuer(this._issuerInputValue)\n }\n if (e.key === 'Escape') {\n this._closePopup()\n }\n }\n\n private _renderPopup () {\n const suggestedIssuers = getSuggestedIssuers()\n return html`\n <div class=\"popup-box\">\n <div class=\"popup-top-menu\">\n <span class=\"popup-title\">Select an identity provider</span>\n <button class=\"popup-close\" type=\"button\" aria-label=\"Close\" @click=\"${() => this._closePopup()}\">✕</button>\n </div>\n\n <div class=\"issuer-text-section\">\n <label class=\"issuer-text-label\" for=\"${this._issuerInputId}\">Solid Identity Provider</label>\n <div class=\"issuer-text-row\">\n <div class=\"issuer-input-wrapper\">\n <div class=\"issuer-input-field-row\">\n <input\n id=\"${this._issuerInputId}\"\n class=\"issuer-text-input\"\n type=\"text\"\n placeholder=\"https://example.com\"\n .value=\"${this._issuerInputValue}\"\n @input=\"${this._handleInputChange}\"\n @keydown=\"${this._handleInputKeydown}\"\n autocomplete=\"url\"\n />\n ${suggestedIssuers.length\n? html`\n <button\n class=\"issuer-dropdown-toggle\"\n type=\"button\"\n aria-label=\"Show identity provider suggestions\"\n aria-expanded=\"${this._dropdownOpen}\"\n @click=\"${() => this._toggleDropdown()}\"\n >${downArrowIcon}</button>\n `\n: ''}\n </div>\n ${this._dropdownOpen && suggestedIssuers.length\n? html`\n <div class=\"issuer-dropdown-list\" role=\"listbox\">\n ${suggestedIssuers.map(issuerInfo => html`\n <button\n class=\"issuer-dropdown-item\"\n type=\"button\"\n role=\"option\"\n @click=\"${() => this._selectIssuerFromDropdown(issuerInfo.uri)}\"\n >${issuerInfo.name}</button>\n `)}\n </div>\n `\n: ''}\n </div>\n </div>\n ${this._errorMsg ? html`<div class=\"error-msg\">${this._errorMsg}</div>` : ''}\n </div>\n <hr class=\"popup-footer-hr\" />\n <div class=\"popup-footer\">\n <button class=\"popup-cancel-button\" type=\"button\" @click=\"${() => this._closePopup()}\">Cancel</button>\n <button\n class=\"popup-login-button\"\n type=\"button\"\n ?disabled=\"${!this._issuerInputValue}\"\n @click=\"${() => this._handleGoClick()}\"\n >Log In</button>\n </div>\n </div>\n `\n }\n\n render () {\n return html`\n <button\n class=\"login-button\"\n type=\"button\"\n part=\"login-button\"\n @click=\"${() => this._openPopup()}\"\n >\n ${this.icon ? html`<img class=\"login-button-icon\" src=\"${this.icon}\" alt=\"\" aria-hidden=\"true\" part=\"login-button-icon\" />` : ''}\n <slot>${this.label}</slot>\n </button>\n\n <dialog\n class=\"popup-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Select an identity provider\"\n @cancel=\"${(e: Event) => { e.preventDefault(); this._closePopup() }}\"\n @click=\"${(e: MouseEvent) => { if (e.target === e.currentTarget) this._closePopup() }}\"\n >\n ${this._popupOpen ? this._renderPopup() : ''}\n </dialog>\n `\n }\n}\n","import { LoginButton } from './LoginButton'\n\nexport { LoginButton }\n\nconst LOGIN_BUTTON_TAG_NAME = 'solid-ui-login-button'\n\nif (!customElements.get(LOGIN_BUTTON_TAG_NAME)) {\n customElements.define(LOGIN_BUTTON_TAG_NAME, LoginButton)\n}\n","import { LitElement, html, css } from 'lit'\n\nconst DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod'\n\nexport class SignupButton extends LitElement {\n static properties = {\n label: { type: String, reflect: true },\n theme: { type: String, reflect: true },\n signupUrl: { type: String, attribute: 'signup-url', reflect: true },\n icon: { type: String, reflect: true },\n layout: { type: String, reflect: true }\n }\n\n static styles = css`\n :host {\n display: inline-block;\n --signup-button-background: transparent;\n --signup-button-border: var(--color-border, #E5E7EB);\n --signup-button-text: var(--color-header-text, #ffffff);\n }\n\n :host([theme='dark']) {\n --signup-button-background: transparent;\n --signup-button-border: var(--color-border, #E5E7EB);\n --signup-button-text: var(--color-header-text, #ffffff);\n }\n\n .signup-button {\n display: flex;\n height: 35px;\n padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);\n align-items: center;\n gap: var(--spacing-xxs, 0.3125rem);\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--signup-button-background);\n border: 1px solid var(--signup-button-border);\n color: var(--signup-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n white-space: nowrap;\n text-decoration: none;\n box-sizing: border-box;\n transition: transform 0.2s ease;\n }\n\n :host([layout='mobile']) .signup-button {\n border: none;\n }\n\n .signup-button-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n object-fit: contain;\n }\n\n .signup-button:active {\n transform: translateY(1px);\n }\n `\n\n declare label: string\n declare theme: 'light' | 'dark'\n declare signupUrl: string\n declare icon: string\n declare layout: 'desktop' | 'mobile'\n\n constructor () {\n super()\n this.label = 'Sign Up'\n this.signupUrl = DEFAULT_SIGNUP_URL\n this.theme = 'light'\n this.icon = ''\n this.layout = 'desktop'\n }\n\n private _handleClick () {\n window.open(this.signupUrl, '_blank', 'noopener,noreferrer')\n }\n\n render () {\n return html`\n <button\n class=\"signup-button\"\n type=\"button\"\n part=\"signup-button\"\n @click=\"${() => this._handleClick()}\"\n >\n ${this.icon ? html`<img class=\"signup-button-icon\" src=\"${this.icon}\" alt=\"\" aria-hidden=\"true\" part=\"signup-button-icon\" />` : ''}\n <slot>${this.label}</slot>\n </button>\n `\n }\n}\n","import { SignupButton } from './SignupButton'\n\nexport { SignupButton }\n\nconst SIGNUP_BUTTON_TAG_NAME = 'solid-ui-signup-button'\n\nif (!customElements.get(SIGNUP_BUTTON_TAG_NAME)) {\n customElements.define(SIGNUP_BUTTON_TAG_NAME, SignupButton)\n}\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","/**\n * This file is used to enable or disable experimental features using feature flags.\n */\n\nconst Features = {\n DESIGN_SYSTEM_HEADER_ACCOUNT: true,\n}\n\nexport default Features\n","import { LitElement, html, css } from 'lit'\nimport { icons } from '../../../../lib/iconBase'\nimport { authSession, authn, performServerSideLogout } from 'solid-logic'\nimport '../../auth/loginButton/index'\nimport '../../auth/signupButton/index'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport '@/components/account'\nimport '@/components/provider'\nimport Features from '../../../../lib/features'\n\nconst DEFAULT_HELP_MENU_ICON = ''\nconst DEFAULT_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\nconst DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod'\nconst DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR = icons.iconBase + 'emptyProfileAvatar.png'\n\nasync function clearPersistedAuthState (): Promise<void> {\n if (typeof window === 'undefined') {\n return\n }\n\n const explicitKeys = ['loginIssuer', 'preLoginRedirectHash']\n for (const key of explicitKeys) {\n window.localStorage.removeItem(key)\n window.sessionStorage.removeItem(key)\n }\n\n if (typeof indexedDB === 'undefined') {\n return\n }\n\n const databases = ['soidc', 'solid-client-authn-store', 'solid-client-authn']\n for (const dbName of databases) {\n await new Promise<void>((resolve) => {\n try {\n const request = indexedDB.deleteDatabase(dbName)\n request.onsuccess = () => resolve()\n request.onerror = () => resolve()\n request.onblocked = () => resolve()\n } catch (_err) {\n resolve()\n }\n })\n }\n}\n\nexport type HeaderAuthState = 'logged-out' | 'logged-in'\n\nexport type HeaderMenuItem = {\n label: string\n url?: string\n target?: string\n action?: string\n icon?: string\n}\n\nexport type HeaderAccountMenuItem = HeaderMenuItem & {\n avatar?: string\n webid?: string\n}\n\nexport class Header extends LitElement {\n static properties = {\n logo: { type: String, reflect: true },\n helpIcon: { type: String, attribute: 'help-icon', reflect: true },\n layout: { type: String, reflect: true },\n theme: { type: String, reflect: true },\n brandLink: { type: String, attribute: 'brand-link', reflect: true },\n authState: { type: String, attribute: 'auth-state', reflect: true },\n loginAction: { type: Object, attribute: false },\n signUpAction: { type: Object, attribute: false },\n accountMenu: { type: Array, attribute: false },\n logoutLabel: { type: String, attribute: 'logout-label', reflect: true },\n logoutIcon: { type: String, attribute: 'logout-icon', reflect: true },\n accountIcon: { type: String, attribute: 'account-icon', reflect: true },\n accountAvatar: { type: String, attribute: 'account-avatar', reflect: true },\n accountAvatarFallback: { type: String, attribute: 'account-avatar-fallback', reflect: true },\n loginIcon: { type: String, attribute: 'login-icon', reflect: true },\n signUpIcon: { type: String, attribute: 'sign-up-icon', reflect: true },\n helpMenuList: { type: Array },\n accountMenuOpen: { state: true },\n helpMenuOpen: { state: true },\n hasSlottedAccountMenu: { state: true },\n hasSlottedHelpMenu: { state: true },\n authResolved: { state: true }\n }\n\n static styles = css`\n :host { /* default theme */\n display: block;\n --header-bg: var(--color-header-row-bg, #332746);\n --header-text: var(--color-header-text, #ffffff);\n --header-border: var(--color-border, #efecf3);\n --header-line: var(--color-header-menu-separator-line, #5e546d);\n --header-link: var(--color-text-heading, #000000);\n --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);\n --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);\n --header-menu-bg: var(--color-menu-bg, #f6f5f9);\n --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);\n --header-menu-text: var(--color-menu-item-text, #654d6c);\n --header-border-radius: var(--border-radius-sm, 0.2rem);\n --header-button-bg: var(--color-menu-bg, #ffffff);\n --header-button-text: var(--color-header-button-text, #0F172B);\n --header-button-detail-text: var(--color-header-button-detail-text, #99A1AF);\n --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));\n font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);\n }\n\n /* for now light and dark are the same */\n :host([theme='dark']) {\n display: block;\n --header-bg: var(--color-header-row-bg, #332746);\n --header-text: var(--color-header-text, #ffffff);\n --header-border: var(--color-border, #efecf3);\n --header-line: var(--color-header-menu-separator-line, #5e546d);\n --header-link: var(--color-text-heading, #000000);\n --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);\n --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);\n --header-menu-bg: var(--color-menu-bg, #f6f5f9);\n --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);\n --header-menu-text: var(--color-menu-item-text, #654d6c);\n --header-border-radius: var(--border-radius-sm, 0.2rem);\n --header-button-bg: var(--color-menu-bg, #ffffff);\n --header-button-text: var(--color-header-button-text, #0f172a);\n --header-button-detail-text: var(--color-header-button-detail-text, #878192);\n --header-icon-filter: invert(1) brightness(1.3); /* special way to invert SVG color of icons, from white to black */\n --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));\n font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);\n }\n\n :host([layout='mobile']) .headerInner {\n flex-wrap: wrap;\n text-align: center;\n gap: 0.5rem;\n }\n\n .headerInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: var(--header-bg);\n color: var(--header-text);\n padding: 0 1.5rem;\n height: 3.75rem;\n }\n\n ::slotted([slot='navigation-toggle']) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin-right: 0.75rem;\n }\n\n :host([layout='desktop']) ::slotted([slot='navigation-toggle']) {\n display: none !important;\n }\n\n .brand {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n text-decoration: none;\n color: inherit;\n }\n\n .brand-not-displayed {\n display: none;\n }\n\n .brand img {\n height: 50px;\n width: 55px;\n object-fit: contain;\n }\n\n .menu {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n margin-left: auto;\n }\n\n .auth-actions {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n }\n\n .auth-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n min-height: 2.25rem;\n padding: 0.5rem 0.875rem;\n border: 1px solid var(--header-border);\n border-radius: 999px;\n background: var(--header-menu-bg);\n color: var(--header-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n text-decoration: none;\n box-sizing: border-box;\n transition: border-color 0.2s ease, transform 0.2s ease;\n }\n\n .auth-button:hover {\n border-color: var(--header-menu-item-hover);\n }\n\n .auth-button:active {\n transform: translateY(1px);\n }\n\n .auth-button-sign-up {\n background: color-mix(in srgb, var(--header-menu-bg) 78%, var(--header-menu-item-selected) 22%);\n }\n\n .header-menu-separator {\n background: var(--header-line);\n width: 1px;\n height: 2.3rem;\n }\n\n .account-menu-container {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .account-menu-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.625rem;\n min-height: 2.5rem;\n border: 1px solid var(--header-menu-loggedin-bg);\n border-radius: 999px;\n background: var(--header-menu-loggedin-bg);\n color: var(--header-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n }\n\n :host([layout='mobile']) .account-menu-trigger {\n gap: 0;\n min-height: auto;\n padding: 0;\n border: 1.5px solid var(--header-border);\n background: var(--header-menu-loggedin-bg);\n }\n\n :host([layout='mobile']) .account-menu-trigger-label {\n display: none;\n }\n\n .account-menu-trigger:disabled {\n cursor: default;\n opacity: 0.7;\n }\n\n .account-menu-trigger-icon {\n width: 1rem;\n height: 1rem;\n object-fit: contain;\n flex-shrink: 0;\n }\n\n .account-avatar,\n .account-menu-avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n background: color-mix(in srgb, var(--header-bg) 18%, #ded8e7 82%);\n color: var(--header-button-text);\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n }\n\n .account-avatar {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 999px;\n border: 1.5px solid var(--header-border);\n }\n\n .account-menu-avatar {\n width: 2rem;\n height: 2rem;\n border-radius: 0.5rem;\n }\n\n .account-avatar img,\n .account-menu-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .account-avatar-img {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 999px;\n object-fit: cover;\n background-color: var(--header-border);\n }\n\n .account-dropdown {\n position: absolute;\n top: calc(100% + 0.9rem);\n right: 0;\n min-width: 15rem;\n padding: 0.5rem;\n background: var(--header-button-bg);\n border: 1px solid var(--header-border);\n border-radius: var(--header-border-radius);\n box-shadow: var(--header-shadow);\n z-index: 10;\n }\n\n .account-dropdown[hidden] {\n display: none;\n }\n\n .account-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .account-menu-item-link,\n .account-menu-item-button,\n ::slotted([slot='account-menu']) {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n width: 100%;\n box-sizing: border-box;\n color: var(--header-link);\n text-decoration: none;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 10px;\n padding: 0.5rem;\n cursor: pointer;\n font: inherit;\n text-align: left;\n }\n\n .account-menu-item-link:hover,\n .account-menu-item-button:hover {\n color: var(--header-link);\n background: var(--header-menu-item-hover);\n border-color: var(--header-menu-item-hover);\n }\n\n .account-menu-item-link:active,\n .account-menu-item-button:active {\n color: var(--header-link);\n background: var(--header-menu-item-selected);\n border-color: var(--header-menu-item-selected);\n transform: translateY(1px);\n }\n\n .account-switch {\n display: block;\n width: 100%;\n color: var(--header-menu-text);\n text-align: left;\n text-transform: uppercase;\n font-size: 80%;\n }\n\n .dropdown-menu-separator {\n display: block;\n width: calc(100% + 1rem);\n margin: 0.5rem -0.5rem;\n border: 0;\n border-top: 1px solid var(--header-border);\n }\n\n .account-menu-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .account-menu-label {\n color: var(--header-button-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .account-menu-webid {\n color: var(--header-button-detail-text);\n font-size: 0.5rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .help-menu-container {\n position: relative;\n display: flex;\n align-items: center;\n background: transparent;\n }\n\n .help-menu-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n }\n\n .help-menu-trigger:disabled {\n cursor: default;\n }\n\n .help-dropdown {\n position: absolute;\n top: calc(100% + 0.9rem);\n right: 0;\n min-width: 12rem;\n padding: 0.5rem;\n background: var(--header-button-bg);\n border: 1px solid var(--header-border);\n border-radius: var(--header-border-radius);\n box-shadow: var(--header-shadow);\n z-index: 10;\n }\n\n .help-dropdown[hidden] {\n display: none;\n }\n\n .help-dropdown-content {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .help-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .help-menu-list a,\n .help-menu-list button,\n ::slotted([slot='help-menu']) {\n display: block;\n width: 100%;\n box-sizing: border-box;\n color: var(--header-link);\n text-decoration: none;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 4px;\n padding: 0.375rem 0.5rem;\n cursor: pointer;\n font: inherit;\n text-align: left;\n }\n\n .help-menu-list a:hover,\n .help-menu-list button:hover {\n color: var(--header-link);\n background: var(--header-menu-item-hover);\n border-color: var(--header-menu-item-hover);\n }\n\n .help-menu-list a:active,\n .help-menu-list button:active {\n color: var(--header-link);\n background: var(--header-menu-item-selected);\n border-color: var(--header-menu-item-selected);\n transform: translateY(1px);\n }\n\n ::slotted(a), ::slotted(button) {\n color: var(--header-link);\n text-decoration: none;\n background: var(--header-button-bg);\n border: 1px solid var(--header-border);\n border-radius: 4px;\n padding: 0.25rem 0.5rem;\n cursor: pointer;\n font: inherit;\n }\n\n .help-icon {\n width: 35px;\n height: 35px;\n cursor: pointer;\n }\n\n .help-text {\n color: var(--header-text, #ffffff);\n font: inherit;\n }\n\n .logout-action-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n object-fit: contain;\n margin-right: 0.5rem;\n }\n `\n\n declare logo: string\n declare helpIcon: string\n declare layout: 'desktop' | 'mobile'\n declare theme: 'light' | 'dark'\n declare brandLink: string\n declare authState: HeaderAuthState\n declare loginAction: HeaderMenuItem\n declare signUpAction: HeaderMenuItem\n declare accountMenu: HeaderAccountMenuItem[]\n declare logoutLabel: string | null\n declare logoutIcon: string\n declare accountIcon: string\n declare accountAvatar: string\n declare accountAvatarFallback: string\n declare loginIcon: string\n declare signUpIcon: string\n declare helpMenuList: HeaderMenuItem[]\n declare accountMenuOpen: boolean\n declare helpMenuOpen: boolean\n declare hasSlottedAccountMenu: boolean\n declare hasSlottedHelpMenu: boolean\n declare authResolved: boolean\n private _refreshPromise: Promise<void> | null = null\n\n private readonly handleAuthSessionChange = () => {\n this.refreshAuthStateFromSession().catch(() => {\n // Keep auth event handling resilient on transient refresh failures.\n })\n }\n\n constructor () {\n super()\n this.logo = DEFAULT_SOLID_ICON_URL\n this.helpIcon = DEFAULT_HELP_MENU_ICON\n this.layout = 'desktop'\n this.theme = 'light'\n this.brandLink = '#'\n this.authState = 'logged-out'\n this.loginAction = { label: 'Log In', action: 'login' }\n this.signUpAction = { label: 'Sign Up', action: 'sign-up', url: DEFAULT_SIGNUP_URL }\n this.accountMenu = []\n this.logoutLabel = 'Log Out'\n this.logoutIcon = ''\n this.accountIcon = '▼'\n this.accountAvatar = ''\n this.accountAvatarFallback = ''\n this.loginIcon = ''\n this.signUpIcon = ''\n this.helpMenuList = []\n this.accountMenuOpen = false\n this.helpMenuOpen = false\n this.hasSlottedAccountMenu = false\n this.hasSlottedHelpMenu = false\n this.authResolved = false\n }\n\n connectedCallback () {\n super.connectedCallback()\n document.addEventListener('click', this.handleDocumentClick)\n window.addEventListener('keydown', this.handleWindowKeydown)\n if (typeof authSession.events?.on === 'function') {\n authSession.events.on('login', this.handleAuthSessionChange)\n authSession.events.on('logout', this.handleAuthSessionChange)\n authSession.events.on('sessionRestore', this.handleAuthSessionChange)\n }\n this.refreshAuthStateFromSession().catch(() => {\n // Keep initial header render resilient on transient refresh failures.\n })\n }\n\n disconnectedCallback () {\n document.removeEventListener('click', this.handleDocumentClick)\n window.removeEventListener('keydown', this.handleWindowKeydown)\n if (typeof authSession.events?.off === 'function') {\n authSession.events.off('login', this.handleAuthSessionChange)\n authSession.events.off('logout', this.handleAuthSessionChange)\n authSession.events.off('sessionRestore', this.handleAuthSessionChange)\n }\n super.disconnectedCallback()\n }\n\n private async refreshAuthStateFromSession () {\n if (!this._refreshPromise) {\n this._refreshPromise = (async () => {\n try {\n await authn.checkUser()\n // Some auth stacks resolve session state asynchronously after first check.\n if (!authn.currentUser()) {\n await authn.checkUser()\n }\n } catch (_err) {\n // Keep rendering even if session refresh cannot complete.\n }\n })()\n }\n\n try {\n await this._refreshPromise\n } finally {\n this._refreshPromise = null\n }\n\n this.authState = authn.currentUser() ? 'logged-in' : 'logged-out'\n this.authResolved = true\n }\n\n private handleHelpMenuClick (item: HeaderMenuItem, event: MouseEvent) {\n event.preventDefault()\n this.helpMenuOpen = false\n this.dispatchEvent(new CustomEvent('help-menu-select', {\n detail: item,\n bubbles: true,\n composed: true\n }))\n if (item.url) {\n const target = item.target || '_blank'\n const features = target === '_blank' ? 'noopener,noreferrer' : undefined\n window.open(item.url, target, features)\n }\n }\n\n private handleAccountMenuClick (item: HeaderAccountMenuItem) {\n this.accountMenuOpen = false\n this.dispatchEvent(new CustomEvent('account-menu-select', {\n detail: item,\n bubbles: true,\n composed: true\n }))\n }\n\n private readonly handleDocumentClick = (event: MouseEvent) => {\n if (!event.composedPath().includes(this)) {\n this.accountMenuOpen = false\n this.helpMenuOpen = false\n }\n }\n\n private readonly handleWindowKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && (this.accountMenuOpen || this.helpMenuOpen)) {\n this.accountMenuOpen = false\n this.helpMenuOpen = false\n }\n }\n\n private handleAccountSlotChange (event: Event) {\n const slot = event.target as HTMLSlotElement\n this.hasSlottedAccountMenu = slot.assignedElements({ flatten: true }).length > 0\n }\n\n private handleHelpSlotChange (event: Event) {\n const slot = event.target as HTMLSlotElement\n this.hasSlottedHelpMenu = slot.assignedElements({ flatten: true }).length > 0\n }\n\n private toggleAccountMenu (event: MouseEvent) {\n event.preventDefault()\n if (!this.hasAccountMenuItems()) return\n this.helpMenuOpen = false\n this.accountMenuOpen = !this.accountMenuOpen\n }\n\n private toggleHelpMenu (event: MouseEvent) {\n event.preventDefault()\n if (!this.hasHelpMenuItems()) return\n this.accountMenuOpen = false\n this.helpMenuOpen = !this.helpMenuOpen\n }\n\n private hasAccountMenuItems () {\n return Boolean(this.accountMenu?.length || this.hasSlottedAccountMenu || this.logoutLabel)\n }\n\n private hasHelpMenuItems () {\n return Boolean(this.helpMenuList?.length || this.hasSlottedHelpMenu)\n }\n\n private shouldRenderHelpMenu () {\n return this.layout !== 'mobile' && this.hasHelpMenuItems()\n }\n\n private renderLoggedInAvatar (avatar?: string, wrapperClass = 'account-avatar') {\n const hasAvatar = Boolean(avatar)\n const imageSrc = hasAvatar ? avatar : this.accountAvatarFallback || DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR\n const imageAlt = hasAvatar ? 'Profile Avatar' : 'Default Avatar'\n\n if (this.layout === 'mobile' && wrapperClass === 'account-avatar') {\n return html`<img class=\"account-avatar-img\" src=\"${imageSrc}\" alt=\"${imageAlt}\" />`\n }\n\n return html`\n <span class=\"${wrapperClass}\" aria-hidden=\"true\">\n <img src=\"${imageSrc}\" alt=\"${imageAlt}\" />\n </span>\n `\n }\n\n private renderLoggedOutActions () {\n return html`\n <div class=\"auth-actions\" part=\"auth-actions\">\n <slot name=\"login-action\">\n <solid-ui-login-button\n label=\"${this.loginAction.label}\"\n icon=${ifDefined(this.layout !== 'mobile' ? (this.loginIcon || this.loginAction.icon) : undefined)}\n layout=\"${this.layout}\"\n theme=\"${this.theme}\"\n part=\"login-action\"\n @login-success=\"${() => this.handleLoginSuccess()}\"\n ></solid-ui-login-button>\n </slot>\n <slot name=\"sign-up-action\">\n <solid-ui-signup-button\n label=\"${this.signUpAction.label}\"\n signup-url=\"${ifDefined(this.signUpAction.url)}\"\n layout=\"${this.layout}\"\n .icon=${ifDefined(this.layout !== 'mobile' ? (this.signUpIcon || this.signUpAction.icon) : undefined)}\n theme=\"${this.theme}\"\n part=\"sign-up-action\"\n ></solid-ui-signup-button>\n </slot>\n </div>\n `\n }\n\n private async handleLoginSuccess () {\n await this.refreshAuthStateFromSession()\n this.dispatchEvent(new CustomEvent('auth-action-select', {\n detail: { role: 'login' },\n bubbles: true,\n composed: true\n }))\n }\n\n private async handleLogout () {\n this.accountMenuOpen = false\n const issuer = window.localStorage.getItem('loginIssuer') || ''\n\n try {\n await authSession.logout()\n } catch (_err) {\n // logout errors are non-fatal — proceed to clear state\n }\n\n await clearPersistedAuthState()\n\n const redirectedToServerLogout = await performServerSideLogout({\n issuer,\n postLogoutRedirectPath: '/'\n })\n if (redirectedToServerLogout) {\n return\n }\n\n await this.refreshAuthStateFromSession()\n this.dispatchEvent(new CustomEvent('logout-select', {\n detail: { role: 'logout' },\n bubbles: true,\n composed: true\n }))\n }\n\n private renderAccountMenuItem (item: HeaderAccountMenuItem) {\n const content = html`\n ${this.renderLoggedInAvatar(item.avatar, 'account-menu-avatar')}\n <span class=\"account-menu-copy\">\n <span class=\"account-menu-label\">${item.label}</span>\n ${item.webid && this.layout !== 'mobile' ? html`<span class=\"account-menu-webid\">${item.webid}</span>` : ''}\n </span>\n `\n\n if (item.url) {\n return html`\n <a\n class=\"account-menu-item-link\"\n href=\"${item.url}\"\n @click=\"${() => this.handleAccountMenuClick(item)}\"\n part=\"account-menu-item\"\n role=\"menuitem\"\n >\n ${content}\n </a>\n `\n }\n\n return html`\n <button\n class=\"account-menu-item-button\"\n type=\"button\"\n @click=\"${() => this.handleAccountMenuClick(item)}\"\n part=\"account-menu-item\"\n role=\"menuitem\"\n >\n ${content}\n </button>\n `\n }\n\n private renderLoggedInActions () {\n return html`\n <div class=\"account-menu-container\" part=\"account-menu-container\">\n <slot name=\"account-trigger\">\n <button\n id=\"accountMenuTrigger\"\n class=\"account-menu-trigger\"\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded=\"${this.accountMenuOpen ? 'true' : 'false'}\"\n ?disabled=\"${!this.hasAccountMenuItems()}\"\n @click=\"${(e: MouseEvent) => this.toggleAccountMenu(e)}\"\n part=\"account-menu-trigger\"\n >\n ${this.renderLoggedInAvatar(this.accountAvatar)}\n ${this.layout !== 'mobile' && this.accountIcon\n? html`\n <img class=\"account-menu-trigger-icon\" src=\"${this.accountIcon}\" alt=\"\" aria-hidden=\"true\" />`\n: ''}\n </button>\n </slot>\n\n <nav\n id=\"accountMenu\"\n class=\"account-dropdown\"\n role=\"menu\"\n ?inert=\"${!this.accountMenuOpen || !this.hasAccountMenuItems()}\"\n ?hidden=\"${!this.accountMenuOpen || !this.hasAccountMenuItems()}\"\n part=\"account-dropdown\"\n >\n <slot name=\"account-switch\" class=\"account-switch\">Switch account</slot>\n <hr class=\"dropdown-menu-separator\" />\n <slot name=\"account-menu\" @slotchange=\"${(e: Event) => this.handleAccountSlotChange(e)}\"></slot>\n ${this.accountMenu && this.accountMenu.length\n ? html`\n <ul class=\"account-menu-list\">\n ${this.accountMenu.map((item: HeaderAccountMenuItem) => html`\n <li>${this.renderAccountMenuItem(item)}</li>\n `)}\n </ul>\n `\n : ''}\n ${this.logoutLabel\n ? html`\n <hr class=\"dropdown-menu-separator\" />\n <button\n class=\"account-menu-item-button\"\n type=\"button\"\n @click=\"${() => this.handleLogout()}\"\n part=\"logout-action\"\n role=\"menuitem\"\n >\n ${this.logoutIcon && this.layout !== 'mobile'\n ? html`<img class=\"logout-action-icon\" src=\"${this.logoutIcon}\" alt=\"\" aria-hidden=\"true\" part=\"logout-action-icon\" />`\n : ''}\n ${this.logoutLabel}\n </button>\n `\n : ''}\n </nav>\n </div>\n `\n }\n\n private renderUserArea () {\n if (Features.DESIGN_SYSTEM_HEADER_ACCOUNT) {\n return html`\n <solid-ui-provider>\n <solid-ui-account></solid-ui-account>\n </solid-ui-provider>\n `\n }\n\n if (!this.authResolved) {\n return html`<div class=\"auth-actions\" part=\"auth-actions\"></div>`\n }\n\n if (this.authState === 'logged-out') {\n return this.renderLoggedOutActions()\n }\n\n return this.renderLoggedInActions()\n }\n\n protected firstUpdated () {\n const brandLink = this.shadowRoot?.getElementById('brandLink')\n if (brandLink) {\n brandLink.classList.toggle('brand-not-displayed', this.layout === 'mobile')\n }\n }\n\n protected updated (changedProperties: Map<string, unknown>) {\n if (changedProperties.has('layout')) {\n const brandLink = this.shadowRoot?.getElementById('brandLink')\n if (brandLink) {\n brandLink.classList.toggle('brand-not-displayed', this.layout === 'mobile')\n }\n }\n }\n\n render () {\n return html`\n <div class=\"headerInner\">\n <slot name=\"navigation-toggle\"></slot>\n <a\n id=\"brandLink\"\n class=\"brand\"\n href=\"${this.brandLink}\"\n part=\"brand\"\n >\n <img id=\"brandImg\" src=\"${this.logo}\" alt=\"Logo\" part=\"logo\" />\n </a>\n\n <div class=\"menu\" part=\"menu\">\n ${this.renderUserArea()}\n\n ${this.shouldRenderHelpMenu()\n ? html`\n <div class=\"header-menu-separator\" />`\n : ''}\n\n ${this.shouldRenderHelpMenu()\n ? html`\n <div class=\"help-menu-container\" part=\"help-menu-container\">\n <button\n id=\"helpMenuTrigger\"\n class=\"help-menu-trigger\"\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded=\"${this.helpMenuOpen ? 'true' : 'false'}\"\n ?disabled=\"${!this.hasHelpMenuItems()}\"\n @click=\"${(e: MouseEvent) => this.toggleHelpMenu(e)}\"\n part=\"help-menu-trigger\"\n >\n ${this.helpIcon\n ? html`<img id=\"helpIcon\" class=\"help-icon\" src=\"${this.helpIcon}\" alt=\"Help\" part=\"help-icon\" />`\n : html`<span class=\"help-text\" part=\"help-text\">Help</span>`}\n </button>\n\n <nav\n id=\"helpMenu\"\n class=\"help-dropdown\"\n role=\"menu\"\n ?inert=\"${!this.helpMenuOpen || !this.hasHelpMenuItems()}\"\n ?hidden=\"${!this.helpMenuOpen || !this.hasHelpMenuItems()}\"\n part=\"help-dropdown\"\n >\n <div class=\"help-dropdown-content\" @click=\"${() => { this.helpMenuOpen = false }}\">\n <slot name=\"help-menu\" @slotchange=\"${(e: Event) => this.handleHelpSlotChange(e)}\"></slot>\n ${this.helpMenuList && this.helpMenuList.length\n ? html`\n <ul class=\"help-menu-list\">\n ${this.helpMenuList.map((item: HeaderMenuItem) => html`\n <li>\n ${item.url\n ? html`\n <a\n href=\"${item.url}\"\n target=\"${item.target || '_blank'}\"\n rel=\"${ifDefined((item.target || '_blank') === '_blank' ? 'noopener noreferrer' : undefined)}\"\n @click=\"${(e: MouseEvent) => this.handleHelpMenuClick(item, e)}\"\n part=\"help-menu-item\"\n role=\"menuitem\"\n >\n ${item.label}\n </a>\n `\n : html`\n <button\n type=\"button\"\n @click=\"${(e: MouseEvent) => this.handleHelpMenuClick(item, e)}\"\n part=\"help-menu-item\"\n role=\"menuitem\"\n >\n ${item.label}\n </button>\n `}\n </li>\n `)}\n </ul>\n `\n : ''}\n </div>\n </nav>\n </div>`\n : ''}\n </div>\n </div>\n `\n }\n}\n","import { Header } from './Header'\n\nexport { Header }\nexport type {\n HeaderAccountMenuItem,\n HeaderAuthState,\n HeaderMenuItem\n} from './Header'\n\nconst HEADER_TAG_NAME = 'solid-ui-header'\n\nif (!customElements.get(HEADER_TAG_NAME)) {\n customElements.define(HEADER_TAG_NAME, Header)\n}\n"],"x_google_ignoreList":[5],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"header-COBaJDdB.js","names":["html","phoneIcon","LitElement","html","css","authSession","authn","getSuggestedIssuers","offlineTestID","solidLogicSingleton","phoneIcon","downArrowIcon","LoginButton","properties","label","type","String","reflect","theme","issuerUrl","attribute","icon","layout","_popupOpen","state","_issuerInputValue","_dropdownOpen","styles","_issuerInputId","Math","random","toString","slice","_errorMsg","constructor","connectedCallback","disconnectedCallback","_openPopup","offline","_loginComplete","uri","localStorage","getItem","_closePopup","updated","dialog","shadowRoot","querySelector","open","showModal","close","_loginToIssuer","issuerUri","store","updater","flagAuthorizationMetadata","preLoginRedirectHash","URL","window","location","href","hash","setItem","locationUrl","login","err","message","requestUpdate","webIdUri","saveUser","dispatchEvent","CustomEvent","detail","webId","bubbles","composed","_handleGoClick","_toggleDropdown","_selectIssuerFromDropdown","_handleInputChange","e","target","value","_handleInputKeydown","key","_renderPopup","suggestedIssuers","length","map","issuerInfo","name","render","preventDefault","currentTarget","LoginButton","LOGIN_BUTTON_TAG_NAME","customElements","get","define","LitElement","html","css","DEFAULT_SIGNUP_URL","SignupButton","properties","label","type","String","reflect","theme","signupUrl","attribute","icon","layout","styles","constructor","_handleClick","window","open","render","SignupButton","SIGNUP_BUTTON_TAG_NAME","customElements","get","define","t","Features","DESIGN_SYSTEM_HEADER_ACCOUNT","LitElement","html","css","icons","authSession","authn","performServerSideLogout","ifDefined","Features","DEFAULT_HELP_MENU_ICON","DEFAULT_SOLID_ICON_URL","DEFAULT_SIGNUP_URL","DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR","iconBase","clearPersistedAuthState","window","explicitKeys","key","localStorage","removeItem","sessionStorage","indexedDB","databases","dbName","Promise","resolve","request","deleteDatabase","onsuccess","onerror","onblocked","_err","Header","properties","logo","type","String","reflect","helpIcon","attribute","layout","theme","brandLink","authState","loginAction","Object","signUpAction","accountMenu","Array","logoutLabel","logoutIcon","accountIcon","accountAvatar","accountAvatarFallback","loginIcon","signUpIcon","helpMenuList","accountMenuOpen","state","helpMenuOpen","hasSlottedAccountMenu","hasSlottedHelpMenu","authResolved","styles","_refreshPromise","handleAuthSessionChange","refreshAuthStateFromSession","catch","constructor","label","action","url","connectedCallback","document","addEventListener","handleDocumentClick","handleWindowKeydown","events","on","disconnectedCallback","removeEventListener","off","checkUser","currentUser","handleHelpMenuClick","item","event","preventDefault","dispatchEvent","CustomEvent","detail","bubbles","composed","target","features","undefined","open","handleAccountMenuClick","composedPath","includes","handleAccountSlotChange","slot","assignedElements","flatten","length","handleHelpSlotChange","toggleAccountMenu","hasAccountMenuItems","toggleHelpMenu","hasHelpMenuItems","Boolean","shouldRenderHelpMenu","renderLoggedInAvatar","avatar","wrapperClass","hasAvatar","imageSrc","imageAlt","renderLoggedOutActions","icon","handleLoginSuccess","role","handleLogout","issuer","getItem","logout","redirectedToServerLogout","postLogoutRedirectPath","renderAccountMenuItem","content","webid","renderLoggedInActions","e","map","renderUserArea","DESIGN_SYSTEM_HEADER_ACCOUNT","firstUpdated","shadowRoot","getElementById","classList","toggle","updated","changedProperties","has","render","Header","HEADER_TAG_NAME","customElements","get","define"],"sources":["../../src/v2/components/auth/loginButton/downArrow.ts","../../src/v2/components/auth/loginButton/LoginButton.ts","../../src/v2/components/auth/loginButton/index.ts","../../src/v2/components/auth/signupButton/SignupButton.ts","../../src/v2/components/auth/signupButton/index.ts","../../node_modules/lit-html/directives/if-defined.js","../../src/lib/features.ts","../../src/v2/components/layout/header/Header.ts","../../src/v2/components/layout/header/index.ts"],"sourcesContent":["import { html } from 'lit-html'\n\nexport const phoneIcon = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" \n viewBox=\"0 0 12 7\" \n fill=\"none\"\n >\n <path d=\"M0.679688 0.678955L5.50729 5.50656L10.3349 0.678955\" stroke=\"#6A7282\" stroke-width=\"1.35776\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n`\n","import { LitElement, html, css } from 'lit'\nimport { authSession, authn, getSuggestedIssuers, offlineTestID, solidLogicSingleton } from 'solid-logic'\nimport { phoneIcon as downArrowIcon } from './downArrow'\n\nexport class LoginButton extends LitElement {\n static properties = {\n label: { type: String, reflect: true },\n theme: { type: String, reflect: true },\n issuerUrl: { type: String, attribute: 'issuer-url', reflect: true },\n icon: { type: String, reflect: true },\n layout: { type: String, reflect: true },\n _popupOpen: { state: true },\n _issuerInputValue: { state: true },\n _dropdownOpen: { state: true }\n }\n\n static styles = css`\n :host { /* default theme */\n display: inline-block;\n position: relative;\n z-index: 400;\n --login-button-background: var(--lavender-900, #7c4cff);\n --login-button-text: var(--color-header-text, #ffffff);\n --popup-background: var(--color-background, #F8F9FB);\n --popup-text: var(--color-text, #1A1A1A);\n --popup-border: var(--color-border, #E5E7EB);\n --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));\n --popup-overlay-background: rgba(0, 0, 0, 0.6);\n --issuer-input-background: var(--color-background, #F8F9FB);\n --issuer-input-text: var(--color-text, #1A1A1A);\n --issuer-input-border: var(--color-text, #1A1A1A);\n --issuer-button-background: var(--color-background, #F8F9FB);\n --issuer-button-text: var(--color-text, #1A1A1A);\n --issuer-button-border: var(--color-border, #E5E7EB);\n --issuer-button-hover-background: var(--lavender-900, #7c4cff);\n --issuer-label-color: var(--grey-purple-700, #1A1A1A);\n --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;\n --error-text-color: var(--color-error, #B00020);\n }\n\n :host([theme='dark']) {\n display: inline-block;\n position: relative;\n z-index: 900;\n --login-button-background: var(--lavender-900, #7c4cff);\n --login-button-text: var(--color-header-text, #ffffff);\n --popup-background: var(--color-background, #F8F9FB);\n --popup-text: var(--color-text, #1A1A1A);\n --popup-border: var(--color-border, #E5E7EB);\n --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));\n --popup-overlay-background: rgba(0, 0, 0, 0.6);\n --issuer-input-background: var(--color-background, #F8F9FB);\n --issuer-input-text: var(--color-text, #1A1A1A);\n --issuer-input-border: var(--color-text, #1A1A1A);\n --issuer-button-background: var(--color-background, #F8F9FB);\n --issuer-button-text: var(--color-text, #1A1A1A);\n --issuer-button-border: var(--color-text, #1A1A1A);\n --issuer-button-hover-background: var(--lavender-900, #7c4cff);\n --issuer-label-color: var(--grey-purple-700, #1A1A1A);\n --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;\n --error-text-color: var(--color-error, #B00020);\n }\n\n .login-button {\n display: flex;\n height: 35px;\n padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);\n align-items: center;\n gap: var(--spacing-xxs, 0.3125rem);\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--login-button-background);\n border: none;\n color: var(--login-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n white-space: nowrap;\n text-decoration: none;\n box-sizing: border-box;\n transition: transform 0.2s ease;\n }\n\n .login-button-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n object-fit: contain;\n }\n\n .login-button:active {\n transform: translateY(1px);\n }\n\n .popup-dialog {\n border: none;\n padding: 0;\n background: transparent;\n outline: none;\n overflow: visible;\n width: min(30rem, calc(100vw - 2rem));\n max-width: calc(100vw - 2rem);\n max-height: calc(100dvh - 2rem);\n }\n\n .popup-dialog::backdrop {\n background: var(--popup-overlay-background, rgba(0, 0, 0, 0.6));\n }\n\n .popup-box {\n background: var(--popup-background);\n color: var(--popup-text);\n box-shadow: var(--popup-shadow);\n border: 1px solid var(--popup-border);\n border-radius: var(--border-radius-md, 0.5rem);\n width: min(30rem, calc(100vw - 2rem));\n min-width: min(30rem, calc(100vw - 2rem));\n max-width: calc(100vw - 2rem);\n max-height: calc(100dvh - 2rem);\n overflow: auto;\n z-index: 1001;\n }\n\n .popup-top-menu {\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding-bottom: 8px;\n margin-bottom: 8px;\n padding: 1rem;\n background: var(--gray-200, #E5E7EB);\n }\n\n .popup-title {\n font-weight: 800;\n }\n\n .popup-close {\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 1.25rem;\n line-height: 1;\n padding: 0 0.25rem;\n }\n\n .issuer-text-section {\n display: flex;\n flex-direction: column;\n padding: 1rem 1rem 1.75rem;\n }\n\n .issuer-text-label {\n color: var(--issuer-label-color);\n margin-bottom: 6px;\n }\n\n .issuer-text-row {\n display: flex;\n flex-direction: row;\n gap: 6px;\n align-items: flex-start;\n }\n\n .issuer-input-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-width: 0;\n position: relative;\n }\n\n .issuer-input-field-row {\n display: flex;\n flex-direction: row;\n position: relative;\n }\n\n .issuer-text-input {\n flex: 1;\n padding: 0.375rem 2.75rem 0.375rem 0.5rem;\n border: 1px solid var(--issuer-input-border);\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--issuer-input-background);\n color: var(--issuer-input-text);\n font: inherit;\n min-width: 0;\n }\n\n .issuer-text-input::placeholder {\n color: var(--issuer-placeholder-color);\n }\n\n .issuer-dropdown-toggle {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 26px;\n height: 26px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border-radius: var(--border-radius-base, 0.3125rem);\n }\n\n .issuer-dropdown-toggle:hover {\n background: var(--color-header-menu-item-hover, #e6dcff);\n }\n\n .issuer-dropdown-toggle svg {\n width: 14px;\n height: 14px;\n display: block;\n }\n\n .issuer-dropdown-list {\n position: absolute;\n top: calc(100% + 6px);\n left: 0;\n right: 0;\n border: 1px solid var(--color-border, #E5E7EB);\n border-top: none;\n border-radius: 0 0 var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem);\n background: var(--issuer-input-background);\n overflow: visible;\n z-index: 10;\n box-shadow: 0 4px 12px rgba(124, 77, 255, 0.12);\n }\n\n .issuer-dropdown-item {\n display: block;\n width: 100%;\n padding: 0.625rem 0.75rem;\n border: none;\n border-bottom: 1px solid var(--color-border, #E5E7EB);\n background: transparent;\n color: var(--issuer-button-text);\n cursor: pointer;\n font: inherit;\n text-align: left;\n box-sizing: border-box;\n }\n\n .issuer-dropdown-item:last-child {\n border-bottom: none;\n }\n\n .issuer-dropdown-item:hover {\n background: var(--color-header-menu-item-hover, #e6dcff);\n border-radius: var(--border-radius-base-md, 0.5rem);\n }\n\n .popup-footer {\n display: flex;\n flex-direction: row;\n justify-content: center;\n gap: 8px;\n padding: 0.75rem 1rem 1rem;\n }\n\n .popup-footer-hr {\n margin: 0;\n border: none;\n border-top: 1px solid var(--popup-border, #E5E7EB);\n }\n\n .popup-cancel-button {\n padding: 0.5rem 1.25rem;\n border: 1px solid #C0BFC7;\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--popup-background);\n color: #314158;\n cursor: pointer;\n font: inherit;\n }\n\n .popup-cancel-button:hover {\n background: #D1D5DB;\n }\n\n .popup-login-button {\n padding: 0.5rem 1.25rem;\n border: none;\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--lavender-900, #7c4cff);\n color: #ffffff;\n cursor: pointer;\n font: inherit;\n }\n\n .popup-login-button:hover {\n background: #6a3de8;\n }\n\n .popup-login-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .error-msg {\n color: var(--error-text-color);\n font-size: 0.875rem;\n margin-top: 8px;\n }\n\n @media (max-width: 40rem) {\n .popup-dialog {\n width: calc(100vw - 1rem);\n max-width: calc(100vw - 1rem);\n max-height: calc(100dvh - 1rem);\n }\n\n .popup-box {\n width: calc(100vw - 1rem);\n min-width: 0;\n max-width: calc(100vw - 1rem);\n max-height: calc(100dvh - 1rem);\n border-radius: var(--border-radius-base, 0.3125rem);\n }\n\n .popup-top-menu,\n .issuer-text-section,\n .popup-footer {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n }\n\n .popup-footer {\n flex-wrap: wrap;\n gap: 0.625rem;\n }\n\n .popup-footer > button {\n flex: 1 1 100%;\n }\n\n .issuer-text-row,\n .issuer-input-field-row {\n width: 100%;\n }\n }\n `\n\n declare label: string\n declare theme: 'light' | 'dark'\n declare issuerUrl: string\n declare icon: string\n declare layout: 'desktop' | 'mobile'\n declare _popupOpen: boolean\n declare _issuerInputValue: string\n declare _dropdownOpen: boolean\n\n private _issuerInputId = `issuer-url-input-${Math.random().toString(36).slice(2, 10)}`\n private _errorMsg = ''\n\n constructor () {\n super()\n this.label = 'Log In'\n this.theme = 'light'\n this.issuerUrl = ''\n this.icon = ''\n this.layout = 'desktop'\n this._popupOpen = false\n this._issuerInputValue = ''\n this._dropdownOpen = false\n }\n\n connectedCallback () {\n super.connectedCallback()\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n }\n\n private _openPopup () {\n const offline = offlineTestID()\n if (offline) {\n this._loginComplete(offline.uri)\n return\n }\n this._issuerInputValue = (typeof localStorage !== 'undefined' && localStorage.getItem('loginIssuer')) || this.issuerUrl || ''\n this._errorMsg = ''\n this._popupOpen = true\n }\n\n private _closePopup () {\n this._popupOpen = false\n }\n\n updated () {\n const dialog = this.shadowRoot?.querySelector('dialog') as HTMLDialogElement | null\n if (!dialog) return\n if (this._popupOpen && !dialog.open) {\n dialog.showModal()\n } else if (!this._popupOpen && dialog.open) {\n dialog.close()\n }\n }\n\n private async _loginToIssuer (issuerUri: string) {\n if (!issuerUri) return\n try {\n // clear authorization metadata from store\n ;(solidLogicSingleton.store.updater as any).flagAuthorizationMetadata()\n\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n window.localStorage.setItem('loginIssuer', issuerUri)\n\n const locationUrl = new URL(window.location.href)\n locationUrl.hash = ''\n await authSession.login(issuerUri, locationUrl.href)\n } catch (err: any) {\n this._errorMsg = err.message || String(err)\n this.requestUpdate()\n }\n }\n\n private _loginComplete (webIdUri: string) {\n authn.saveUser(webIdUri)\n this.dispatchEvent(new CustomEvent('login-success', {\n detail: { webId: webIdUri },\n bubbles: true,\n composed: true\n }))\n }\n\n private _handleGoClick () {\n this._dropdownOpen = false\n this._loginToIssuer(this._issuerInputValue)\n }\n\n private _toggleDropdown () {\n this._dropdownOpen = !this._dropdownOpen\n }\n\n private _selectIssuerFromDropdown (uri: string) {\n this._issuerInputValue = uri\n this._dropdownOpen = false\n }\n\n private _handleInputChange (e: Event) {\n this._issuerInputValue = (e.target as HTMLInputElement).value\n }\n\n private _handleInputKeydown (e: KeyboardEvent) {\n if (e.key === 'Enter') {\n this._loginToIssuer(this._issuerInputValue)\n }\n if (e.key === 'Escape') {\n this._closePopup()\n }\n }\n\n private _renderPopup () {\n const suggestedIssuers = getSuggestedIssuers()\n return html`\n <div class=\"popup-box\">\n <div class=\"popup-top-menu\">\n <span class=\"popup-title\">Select an identity provider</span>\n <button class=\"popup-close\" type=\"button\" aria-label=\"Close\" @click=\"${() => this._closePopup()}\">✕</button>\n </div>\n\n <div class=\"issuer-text-section\">\n <label class=\"issuer-text-label\" for=\"${this._issuerInputId}\">Solid Identity Provider</label>\n <div class=\"issuer-text-row\">\n <div class=\"issuer-input-wrapper\">\n <div class=\"issuer-input-field-row\">\n <input\n id=\"${this._issuerInputId}\"\n class=\"issuer-text-input\"\n type=\"text\"\n placeholder=\"https://example.com\"\n .value=\"${this._issuerInputValue}\"\n @input=\"${this._handleInputChange}\"\n @keydown=\"${this._handleInputKeydown}\"\n autocomplete=\"url\"\n />\n ${suggestedIssuers.length\n? html`\n <button\n class=\"issuer-dropdown-toggle\"\n type=\"button\"\n aria-label=\"Show identity provider suggestions\"\n aria-expanded=\"${this._dropdownOpen}\"\n @click=\"${() => this._toggleDropdown()}\"\n >${downArrowIcon}</button>\n `\n: ''}\n </div>\n ${this._dropdownOpen && suggestedIssuers.length\n? html`\n <div class=\"issuer-dropdown-list\" role=\"listbox\">\n ${suggestedIssuers.map(issuerInfo => html`\n <button\n class=\"issuer-dropdown-item\"\n type=\"button\"\n role=\"option\"\n @click=\"${() => this._selectIssuerFromDropdown(issuerInfo.uri)}\"\n >${issuerInfo.name}</button>\n `)}\n </div>\n `\n: ''}\n </div>\n </div>\n ${this._errorMsg ? html`<div class=\"error-msg\">${this._errorMsg}</div>` : ''}\n </div>\n <hr class=\"popup-footer-hr\" />\n <div class=\"popup-footer\">\n <button class=\"popup-cancel-button\" type=\"button\" @click=\"${() => this._closePopup()}\">Cancel</button>\n <button\n class=\"popup-login-button\"\n type=\"button\"\n ?disabled=\"${!this._issuerInputValue}\"\n @click=\"${() => this._handleGoClick()}\"\n >Log In</button>\n </div>\n </div>\n `\n }\n\n render () {\n return html`\n <button\n class=\"login-button\"\n type=\"button\"\n part=\"login-button\"\n @click=\"${() => this._openPopup()}\"\n >\n ${this.icon ? html`<img class=\"login-button-icon\" src=\"${this.icon}\" alt=\"\" aria-hidden=\"true\" part=\"login-button-icon\" />` : ''}\n <slot>${this.label}</slot>\n </button>\n\n <dialog\n class=\"popup-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Select an identity provider\"\n @cancel=\"${(e: Event) => { e.preventDefault(); this._closePopup() }}\"\n @click=\"${(e: MouseEvent) => { if (e.target === e.currentTarget) this._closePopup() }}\"\n >\n ${this._popupOpen ? this._renderPopup() : ''}\n </dialog>\n `\n }\n}\n","import { LoginButton } from './LoginButton'\n\nexport { LoginButton }\n\nconst LOGIN_BUTTON_TAG_NAME = 'solid-ui-login-button'\n\nif (!customElements.get(LOGIN_BUTTON_TAG_NAME)) {\n customElements.define(LOGIN_BUTTON_TAG_NAME, LoginButton)\n}\n","import { LitElement, html, css } from 'lit'\n\nconst DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod'\n\nexport class SignupButton extends LitElement {\n static properties = {\n label: { type: String, reflect: true },\n theme: { type: String, reflect: true },\n signupUrl: { type: String, attribute: 'signup-url', reflect: true },\n icon: { type: String, reflect: true },\n layout: { type: String, reflect: true }\n }\n\n static styles = css`\n :host {\n display: inline-block;\n --signup-button-background: transparent;\n --signup-button-border: var(--color-border, #E5E7EB);\n --signup-button-text: var(--color-header-text, #ffffff);\n }\n\n :host([theme='dark']) {\n --signup-button-background: transparent;\n --signup-button-border: var(--color-border, #E5E7EB);\n --signup-button-text: var(--color-header-text, #ffffff);\n }\n\n .signup-button {\n display: flex;\n height: 35px;\n padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);\n align-items: center;\n gap: var(--spacing-xxs, 0.3125rem);\n border-radius: var(--border-radius-base, 0.3125rem);\n background: var(--signup-button-background);\n border: 1px solid var(--signup-button-border);\n color: var(--signup-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n white-space: nowrap;\n text-decoration: none;\n box-sizing: border-box;\n transition: transform 0.2s ease;\n }\n\n :host([layout='mobile']) .signup-button {\n border: none;\n }\n\n .signup-button-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n object-fit: contain;\n }\n\n .signup-button:active {\n transform: translateY(1px);\n }\n `\n\n declare label: string\n declare theme: 'light' | 'dark'\n declare signupUrl: string\n declare icon: string\n declare layout: 'desktop' | 'mobile'\n\n constructor () {\n super()\n this.label = 'Sign Up'\n this.signupUrl = DEFAULT_SIGNUP_URL\n this.theme = 'light'\n this.icon = ''\n this.layout = 'desktop'\n }\n\n private _handleClick () {\n window.open(this.signupUrl, '_blank', 'noopener,noreferrer')\n }\n\n render () {\n return html`\n <button\n class=\"signup-button\"\n type=\"button\"\n part=\"signup-button\"\n @click=\"${() => this._handleClick()}\"\n >\n ${this.icon ? html`<img class=\"signup-button-icon\" src=\"${this.icon}\" alt=\"\" aria-hidden=\"true\" part=\"signup-button-icon\" />` : ''}\n <slot>${this.label}</slot>\n </button>\n `\n }\n}\n","import { SignupButton } from './SignupButton'\n\nexport { SignupButton }\n\nconst SIGNUP_BUTTON_TAG_NAME = 'solid-ui-signup-button'\n\nif (!customElements.get(SIGNUP_BUTTON_TAG_NAME)) {\n customElements.define(SIGNUP_BUTTON_TAG_NAME, SignupButton)\n}\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","/**\n * This file is used to enable or disable experimental features using feature flags.\n */\n\nconst Features = {\n DESIGN_SYSTEM_HEADER_ACCOUNT: true,\n}\n\nexport default Features\n","import { LitElement, html, css } from 'lit'\nimport { icons } from '../../../../lib/iconBase'\nimport { authSession, authn, performServerSideLogout } from 'solid-logic'\nimport '../../auth/loginButton/index'\nimport '../../auth/signupButton/index'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport '@/components/account'\nimport '@/components/provider'\nimport Features from '../../../../lib/features'\n\nconst DEFAULT_HELP_MENU_ICON = ''\nconst DEFAULT_SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg'\nconst DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod'\nconst DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR = icons.iconBase + 'emptyProfileAvatar.png'\n\nasync function clearPersistedAuthState (): Promise<void> {\n if (typeof window === 'undefined') {\n return\n }\n\n const explicitKeys = ['loginIssuer', 'preLoginRedirectHash']\n for (const key of explicitKeys) {\n window.localStorage.removeItem(key)\n window.sessionStorage.removeItem(key)\n }\n\n if (typeof indexedDB === 'undefined') {\n return\n }\n\n const databases = ['soidc', 'solid-client-authn-store', 'solid-client-authn']\n for (const dbName of databases) {\n await new Promise<void>((resolve) => {\n try {\n const request = indexedDB.deleteDatabase(dbName)\n request.onsuccess = () => resolve()\n request.onerror = () => resolve()\n request.onblocked = () => resolve()\n } catch (_err) {\n resolve()\n }\n })\n }\n}\n\nexport type HeaderAuthState = 'logged-out' | 'logged-in'\n\nexport type HeaderMenuItem = {\n label: string\n url?: string\n target?: string\n action?: string\n icon?: string\n}\n\nexport type HeaderAccountMenuItem = HeaderMenuItem & {\n avatar?: string\n webid?: string\n}\n\nexport class Header extends LitElement {\n static properties = {\n logo: { type: String, reflect: true },\n helpIcon: { type: String, attribute: 'help-icon', reflect: true },\n layout: { type: String, reflect: true },\n theme: { type: String, reflect: true },\n brandLink: { type: String, attribute: 'brand-link', reflect: true },\n authState: { type: String, attribute: 'auth-state', reflect: true },\n loginAction: { type: Object, attribute: false },\n signUpAction: { type: Object, attribute: false },\n accountMenu: { type: Array, attribute: false },\n logoutLabel: { type: String, attribute: 'logout-label', reflect: true },\n logoutIcon: { type: String, attribute: 'logout-icon', reflect: true },\n accountIcon: { type: String, attribute: 'account-icon', reflect: true },\n accountAvatar: { type: String, attribute: 'account-avatar', reflect: true },\n accountAvatarFallback: { type: String, attribute: 'account-avatar-fallback', reflect: true },\n loginIcon: { type: String, attribute: 'login-icon', reflect: true },\n signUpIcon: { type: String, attribute: 'sign-up-icon', reflect: true },\n helpMenuList: { type: Array },\n accountMenuOpen: { state: true },\n helpMenuOpen: { state: true },\n hasSlottedAccountMenu: { state: true },\n hasSlottedHelpMenu: { state: true },\n authResolved: { state: true }\n }\n\n static styles = css`\n :host { /* default theme */\n display: block;\n --header-bg: var(--color-header-row-bg, #332746);\n --header-text: var(--color-header-text, #ffffff);\n --header-border: var(--color-border, #efecf3);\n --header-line: var(--color-header-menu-separator-line, #5e546d);\n --header-link: var(--color-text-heading, #000000);\n --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);\n --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);\n --header-menu-bg: var(--color-menu-bg, #f6f5f9);\n --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);\n --header-menu-text: var(--color-menu-item-text, #654d6c);\n --header-border-radius: var(--border-radius-sm, 0.2rem);\n --header-button-bg: var(--color-menu-bg, #ffffff);\n --header-button-text: var(--color-header-button-text, #0F172B);\n --header-button-detail-text: var(--color-header-button-detail-text, #99A1AF);\n --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));\n font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);\n }\n\n /* for now light and dark are the same */\n :host([theme='dark']) {\n display: block;\n --header-bg: var(--color-header-row-bg, #332746);\n --header-text: var(--color-header-text, #ffffff);\n --header-border: var(--color-border, #efecf3);\n --header-line: var(--color-header-menu-separator-line, #5e546d);\n --header-link: var(--color-text-heading, #000000);\n --header-menu-item-hover: var(--color-header-menu-item-hover, #e6dcff);\n --header-menu-item-selected: var(--color-header-menu-item-selected, #cbb9ff);\n --header-menu-bg: var(--color-menu-bg, #f6f5f9);\n --header-menu-loggedin-bg: var(--color-header-menu-loggedin-bg, #5e546d);\n --header-menu-text: var(--color-menu-item-text, #654d6c);\n --header-border-radius: var(--border-radius-sm, 0.2rem);\n --header-button-bg: var(--color-menu-bg, #ffffff);\n --header-button-text: var(--color-header-button-text, #0f172a);\n --header-button-detail-text: var(--color-header-button-detail-text, #878192);\n --header-icon-filter: invert(1) brightness(1.3); /* special way to invert SVG color of icons, from white to black */\n --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));\n font-family: var(--font-family-base, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif);\n }\n\n :host([layout='mobile']) .headerInner {\n flex-wrap: wrap;\n text-align: center;\n gap: 0.5rem;\n }\n\n .headerInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: var(--header-bg);\n color: var(--header-text);\n padding: 0 1.5rem;\n height: 3.75rem;\n }\n\n ::slotted([slot='navigation-toggle']) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin-right: 0.75rem;\n }\n\n :host([layout='desktop']) ::slotted([slot='navigation-toggle']) {\n display: none !important;\n }\n\n .brand {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n text-decoration: none;\n color: inherit;\n }\n\n .brand-not-displayed {\n display: none;\n }\n\n .brand img {\n height: 50px;\n width: 55px;\n object-fit: contain;\n }\n\n .menu {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n margin-left: auto;\n }\n\n .auth-actions {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n }\n\n .auth-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n min-height: 2.25rem;\n padding: 0.5rem 0.875rem;\n border: 1px solid var(--header-border);\n border-radius: 999px;\n background: var(--header-menu-bg);\n color: var(--header-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n text-decoration: none;\n box-sizing: border-box;\n transition: border-color 0.2s ease, transform 0.2s ease;\n }\n\n .auth-button:hover {\n border-color: var(--header-menu-item-hover);\n }\n\n .auth-button:active {\n transform: translateY(1px);\n }\n\n .auth-button-sign-up {\n background: color-mix(in srgb, var(--header-menu-bg) 78%, var(--header-menu-item-selected) 22%);\n }\n\n .header-menu-separator {\n background: var(--header-line);\n width: 1px;\n height: 2.3rem;\n }\n\n .account-menu-container {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .account-menu-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.625rem;\n min-height: 2.5rem;\n border: 1px solid var(--header-menu-loggedin-bg);\n border-radius: 999px;\n background: var(--header-menu-loggedin-bg);\n color: var(--header-button-text);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n }\n\n :host([layout='mobile']) .account-menu-trigger {\n gap: 0;\n min-height: auto;\n padding: 0;\n border: 1.5px solid var(--header-border);\n background: var(--header-menu-loggedin-bg);\n }\n\n :host([layout='mobile']) .account-menu-trigger-label {\n display: none;\n }\n\n .account-menu-trigger:disabled {\n cursor: default;\n opacity: 0.7;\n }\n\n .account-menu-trigger-icon {\n width: 1rem;\n height: 1rem;\n object-fit: contain;\n flex-shrink: 0;\n }\n\n .account-avatar,\n .account-menu-avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n background: color-mix(in srgb, var(--header-bg) 18%, #ded8e7 82%);\n color: var(--header-button-text);\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n }\n\n .account-avatar {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 999px;\n border: 1.5px solid var(--header-border);\n }\n\n .account-menu-avatar {\n width: 2rem;\n height: 2rem;\n border-radius: 0.5rem;\n }\n\n .account-avatar img,\n .account-menu-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .account-avatar-img {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 999px;\n object-fit: cover;\n background-color: var(--header-border);\n }\n\n .account-dropdown {\n position: absolute;\n top: calc(100% + 0.9rem);\n right: 0;\n min-width: 15rem;\n padding: 0.5rem;\n background: var(--header-button-bg);\n border: 1px solid var(--header-border);\n border-radius: var(--header-border-radius);\n box-shadow: var(--header-shadow);\n z-index: 10;\n }\n\n .account-dropdown[hidden] {\n display: none;\n }\n\n .account-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .account-menu-item-link,\n .account-menu-item-button,\n ::slotted([slot='account-menu']) {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n width: 100%;\n box-sizing: border-box;\n color: var(--header-link);\n text-decoration: none;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 10px;\n padding: 0.5rem;\n cursor: pointer;\n font: inherit;\n text-align: left;\n }\n\n .account-menu-item-link:hover,\n .account-menu-item-button:hover {\n color: var(--header-link);\n background: var(--header-menu-item-hover);\n border-color: var(--header-menu-item-hover);\n }\n\n .account-menu-item-link:active,\n .account-menu-item-button:active {\n color: var(--header-link);\n background: var(--header-menu-item-selected);\n border-color: var(--header-menu-item-selected);\n transform: translateY(1px);\n }\n\n .account-switch {\n display: block;\n width: 100%;\n color: var(--header-menu-text);\n text-align: left;\n text-transform: uppercase;\n font-size: 80%;\n }\n\n .dropdown-menu-separator {\n display: block;\n width: calc(100% + 1rem);\n margin: 0.5rem -0.5rem;\n border: 0;\n border-top: 1px solid var(--header-border);\n }\n\n .account-menu-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .account-menu-label {\n color: var(--header-button-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .account-menu-webid {\n color: var(--header-button-detail-text);\n font-size: 0.5rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .help-menu-container {\n position: relative;\n display: flex;\n align-items: center;\n background: transparent;\n }\n\n .help-menu-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n }\n\n .help-menu-trigger:disabled {\n cursor: default;\n }\n\n .help-dropdown {\n position: absolute;\n top: calc(100% + 0.9rem);\n right: 0;\n min-width: 12rem;\n padding: 0.5rem;\n background: var(--header-button-bg);\n border: 1px solid var(--header-border);\n border-radius: var(--header-border-radius);\n box-shadow: var(--header-shadow);\n z-index: 10;\n }\n\n .help-dropdown[hidden] {\n display: none;\n }\n\n .help-dropdown-content {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .help-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .help-menu-list a,\n .help-menu-list button,\n ::slotted([slot='help-menu']) {\n display: block;\n width: 100%;\n box-sizing: border-box;\n color: var(--header-link);\n text-decoration: none;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 4px;\n padding: 0.375rem 0.5rem;\n cursor: pointer;\n font: inherit;\n text-align: left;\n }\n\n .help-menu-list a:hover,\n .help-menu-list button:hover {\n color: var(--header-link);\n background: var(--header-menu-item-hover);\n border-color: var(--header-menu-item-hover);\n }\n\n .help-menu-list a:active,\n .help-menu-list button:active {\n color: var(--header-link);\n background: var(--header-menu-item-selected);\n border-color: var(--header-menu-item-selected);\n transform: translateY(1px);\n }\n\n ::slotted(a), ::slotted(button) {\n color: var(--header-link);\n text-decoration: none;\n background: var(--header-button-bg);\n border: 1px solid var(--header-border);\n border-radius: 4px;\n padding: 0.25rem 0.5rem;\n cursor: pointer;\n font: inherit;\n }\n\n .help-icon {\n width: 35px;\n height: 35px;\n cursor: pointer;\n }\n\n .help-text {\n color: var(--header-text, #ffffff);\n font: inherit;\n }\n\n .logout-action-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n object-fit: contain;\n margin-right: 0.5rem;\n }\n `\n\n declare logo: string\n declare helpIcon: string\n declare layout: 'desktop' | 'mobile'\n declare theme: 'light' | 'dark'\n declare brandLink: string\n declare authState: HeaderAuthState\n declare loginAction: HeaderMenuItem\n declare signUpAction: HeaderMenuItem\n declare accountMenu: HeaderAccountMenuItem[]\n declare logoutLabel: string | null\n declare logoutIcon: string\n declare accountIcon: string\n declare accountAvatar: string\n declare accountAvatarFallback: string\n declare loginIcon: string\n declare signUpIcon: string\n declare helpMenuList: HeaderMenuItem[]\n declare accountMenuOpen: boolean\n declare helpMenuOpen: boolean\n declare hasSlottedAccountMenu: boolean\n declare hasSlottedHelpMenu: boolean\n declare authResolved: boolean\n private _refreshPromise: Promise<void> | null = null\n\n private readonly handleAuthSessionChange = () => {\n this.refreshAuthStateFromSession().catch(() => {\n // Keep auth event handling resilient on transient refresh failures.\n })\n }\n\n constructor () {\n super()\n this.logo = DEFAULT_SOLID_ICON_URL\n this.helpIcon = DEFAULT_HELP_MENU_ICON\n this.layout = 'desktop'\n this.theme = 'light'\n this.brandLink = '#'\n this.authState = 'logged-out'\n this.loginAction = { label: 'Log In', action: 'login' }\n this.signUpAction = { label: 'Sign Up', action: 'sign-up', url: DEFAULT_SIGNUP_URL }\n this.accountMenu = []\n this.logoutLabel = 'Log Out'\n this.logoutIcon = ''\n this.accountIcon = '▼'\n this.accountAvatar = ''\n this.accountAvatarFallback = ''\n this.loginIcon = ''\n this.signUpIcon = ''\n this.helpMenuList = []\n this.accountMenuOpen = false\n this.helpMenuOpen = false\n this.hasSlottedAccountMenu = false\n this.hasSlottedHelpMenu = false\n this.authResolved = false\n }\n\n connectedCallback () {\n super.connectedCallback()\n document.addEventListener('click', this.handleDocumentClick)\n window.addEventListener('keydown', this.handleWindowKeydown)\n if (typeof authSession.events?.on === 'function') {\n authSession.events.on('login', this.handleAuthSessionChange)\n authSession.events.on('logout', this.handleAuthSessionChange)\n authSession.events.on('sessionRestore', this.handleAuthSessionChange)\n }\n this.refreshAuthStateFromSession().catch(() => {\n // Keep initial header render resilient on transient refresh failures.\n })\n }\n\n disconnectedCallback () {\n document.removeEventListener('click', this.handleDocumentClick)\n window.removeEventListener('keydown', this.handleWindowKeydown)\n if (typeof authSession.events?.off === 'function') {\n authSession.events.off('login', this.handleAuthSessionChange)\n authSession.events.off('logout', this.handleAuthSessionChange)\n authSession.events.off('sessionRestore', this.handleAuthSessionChange)\n }\n super.disconnectedCallback()\n }\n\n private async refreshAuthStateFromSession () {\n if (!this._refreshPromise) {\n this._refreshPromise = (async () => {\n try {\n await authn.checkUser()\n // Some auth stacks resolve session state asynchronously after first check.\n if (!authn.currentUser()) {\n await authn.checkUser()\n }\n } catch (_err) {\n // Keep rendering even if session refresh cannot complete.\n }\n })()\n }\n\n try {\n await this._refreshPromise\n } finally {\n this._refreshPromise = null\n }\n\n this.authState = authn.currentUser() ? 'logged-in' : 'logged-out'\n this.authResolved = true\n }\n\n private handleHelpMenuClick (item: HeaderMenuItem, event: MouseEvent) {\n event.preventDefault()\n this.helpMenuOpen = false\n this.dispatchEvent(new CustomEvent('help-menu-select', {\n detail: item,\n bubbles: true,\n composed: true\n }))\n if (item.url) {\n const target = item.target || '_blank'\n const features = target === '_blank' ? 'noopener,noreferrer' : undefined\n window.open(item.url, target, features)\n }\n }\n\n private handleAccountMenuClick (item: HeaderAccountMenuItem) {\n this.accountMenuOpen = false\n this.dispatchEvent(new CustomEvent('account-menu-select', {\n detail: item,\n bubbles: true,\n composed: true\n }))\n }\n\n private readonly handleDocumentClick = (event: MouseEvent) => {\n if (!event.composedPath().includes(this)) {\n this.accountMenuOpen = false\n this.helpMenuOpen = false\n }\n }\n\n private readonly handleWindowKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && (this.accountMenuOpen || this.helpMenuOpen)) {\n this.accountMenuOpen = false\n this.helpMenuOpen = false\n }\n }\n\n private handleAccountSlotChange (event: Event) {\n const slot = event.target as HTMLSlotElement\n this.hasSlottedAccountMenu = slot.assignedElements({ flatten: true }).length > 0\n }\n\n private handleHelpSlotChange (event: Event) {\n const slot = event.target as HTMLSlotElement\n this.hasSlottedHelpMenu = slot.assignedElements({ flatten: true }).length > 0\n }\n\n private toggleAccountMenu (event: MouseEvent) {\n event.preventDefault()\n if (!this.hasAccountMenuItems()) return\n this.helpMenuOpen = false\n this.accountMenuOpen = !this.accountMenuOpen\n }\n\n private toggleHelpMenu (event: MouseEvent) {\n event.preventDefault()\n if (!this.hasHelpMenuItems()) return\n this.accountMenuOpen = false\n this.helpMenuOpen = !this.helpMenuOpen\n }\n\n private hasAccountMenuItems () {\n return Boolean(this.accountMenu?.length || this.hasSlottedAccountMenu || this.logoutLabel)\n }\n\n private hasHelpMenuItems () {\n return Boolean(this.helpMenuList?.length || this.hasSlottedHelpMenu)\n }\n\n private shouldRenderHelpMenu () {\n return this.layout !== 'mobile' && this.hasHelpMenuItems()\n }\n\n private renderLoggedInAvatar (avatar?: string, wrapperClass = 'account-avatar') {\n const hasAvatar = Boolean(avatar)\n const imageSrc = hasAvatar ? avatar : this.accountAvatarFallback || DEFAULT_LOGGEDIN_MENU_BUTTON_AVATAR\n const imageAlt = hasAvatar ? 'Profile Avatar' : 'Default Avatar'\n\n if (this.layout === 'mobile' && wrapperClass === 'account-avatar') {\n return html`<img class=\"account-avatar-img\" src=\"${imageSrc}\" alt=\"${imageAlt}\" />`\n }\n\n return html`\n <span class=\"${wrapperClass}\" aria-hidden=\"true\">\n <img src=\"${imageSrc}\" alt=\"${imageAlt}\" />\n </span>\n `\n }\n\n private renderLoggedOutActions () {\n return html`\n <div class=\"auth-actions\" part=\"auth-actions\">\n <slot name=\"login-action\">\n <solid-ui-login-button\n label=\"${this.loginAction.label}\"\n icon=${ifDefined(this.layout !== 'mobile' ? (this.loginIcon || this.loginAction.icon) : undefined)}\n layout=\"${this.layout}\"\n theme=\"${this.theme}\"\n part=\"login-action\"\n @login-success=\"${() => this.handleLoginSuccess()}\"\n ></solid-ui-login-button>\n </slot>\n <slot name=\"sign-up-action\">\n <solid-ui-signup-button\n label=\"${this.signUpAction.label}\"\n signup-url=\"${ifDefined(this.signUpAction.url)}\"\n layout=\"${this.layout}\"\n .icon=${ifDefined(this.layout !== 'mobile' ? (this.signUpIcon || this.signUpAction.icon) : undefined)}\n theme=\"${this.theme}\"\n part=\"sign-up-action\"\n ></solid-ui-signup-button>\n </slot>\n </div>\n `\n }\n\n private async handleLoginSuccess () {\n await this.refreshAuthStateFromSession()\n this.dispatchEvent(new CustomEvent('auth-action-select', {\n detail: { role: 'login' },\n bubbles: true,\n composed: true\n }))\n }\n\n private async handleLogout () {\n this.accountMenuOpen = false\n const issuer = window.localStorage.getItem('loginIssuer') || ''\n\n try {\n await authSession.logout()\n } catch (_err) {\n // logout errors are non-fatal — proceed to clear state\n }\n\n await clearPersistedAuthState()\n\n const redirectedToServerLogout = await performServerSideLogout({\n issuer,\n postLogoutRedirectPath: '/'\n })\n if (redirectedToServerLogout) {\n return\n }\n\n await this.refreshAuthStateFromSession()\n this.dispatchEvent(new CustomEvent('logout-select', {\n detail: { role: 'logout' },\n bubbles: true,\n composed: true\n }))\n }\n\n private renderAccountMenuItem (item: HeaderAccountMenuItem) {\n const content = html`\n ${this.renderLoggedInAvatar(item.avatar, 'account-menu-avatar')}\n <span class=\"account-menu-copy\">\n <span class=\"account-menu-label\">${item.label}</span>\n ${item.webid && this.layout !== 'mobile' ? html`<span class=\"account-menu-webid\">${item.webid}</span>` : ''}\n </span>\n `\n\n if (item.url) {\n return html`\n <a\n class=\"account-menu-item-link\"\n href=\"${item.url}\"\n @click=\"${() => this.handleAccountMenuClick(item)}\"\n part=\"account-menu-item\"\n role=\"menuitem\"\n >\n ${content}\n </a>\n `\n }\n\n return html`\n <button\n class=\"account-menu-item-button\"\n type=\"button\"\n @click=\"${() => this.handleAccountMenuClick(item)}\"\n part=\"account-menu-item\"\n role=\"menuitem\"\n >\n ${content}\n </button>\n `\n }\n\n private renderLoggedInActions () {\n return html`\n <div class=\"account-menu-container\" part=\"account-menu-container\">\n <slot name=\"account-trigger\">\n <button\n id=\"accountMenuTrigger\"\n class=\"account-menu-trigger\"\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded=\"${this.accountMenuOpen ? 'true' : 'false'}\"\n ?disabled=\"${!this.hasAccountMenuItems()}\"\n @click=\"${(e: MouseEvent) => this.toggleAccountMenu(e)}\"\n part=\"account-menu-trigger\"\n >\n ${this.renderLoggedInAvatar(this.accountAvatar)}\n ${this.layout !== 'mobile' && this.accountIcon\n? html`\n <img class=\"account-menu-trigger-icon\" src=\"${this.accountIcon}\" alt=\"\" aria-hidden=\"true\" />`\n: ''}\n </button>\n </slot>\n\n <nav\n id=\"accountMenu\"\n class=\"account-dropdown\"\n role=\"menu\"\n ?inert=\"${!this.accountMenuOpen || !this.hasAccountMenuItems()}\"\n ?hidden=\"${!this.accountMenuOpen || !this.hasAccountMenuItems()}\"\n part=\"account-dropdown\"\n >\n <slot name=\"account-switch\" class=\"account-switch\">Switch account</slot>\n <hr class=\"dropdown-menu-separator\" />\n <slot name=\"account-menu\" @slotchange=\"${(e: Event) => this.handleAccountSlotChange(e)}\"></slot>\n ${this.accountMenu && this.accountMenu.length\n ? html`\n <ul class=\"account-menu-list\">\n ${this.accountMenu.map((item: HeaderAccountMenuItem) => html`\n <li>${this.renderAccountMenuItem(item)}</li>\n `)}\n </ul>\n `\n : ''}\n ${this.logoutLabel\n ? html`\n <hr class=\"dropdown-menu-separator\" />\n <button\n class=\"account-menu-item-button\"\n type=\"button\"\n @click=\"${() => this.handleLogout()}\"\n part=\"logout-action\"\n role=\"menuitem\"\n >\n ${this.logoutIcon && this.layout !== 'mobile'\n ? html`<img class=\"logout-action-icon\" src=\"${this.logoutIcon}\" alt=\"\" aria-hidden=\"true\" part=\"logout-action-icon\" />`\n : ''}\n ${this.logoutLabel}\n </button>\n `\n : ''}\n </nav>\n </div>\n `\n }\n\n private renderUserArea () {\n if (Features.DESIGN_SYSTEM_HEADER_ACCOUNT) {\n return html`\n <solid-ui-provider>\n <solid-ui-account></solid-ui-account>\n </solid-ui-provider>\n `\n }\n\n if (!this.authResolved) {\n return html`<div class=\"auth-actions\" part=\"auth-actions\"></div>`\n }\n\n if (this.authState === 'logged-out') {\n return this.renderLoggedOutActions()\n }\n\n return this.renderLoggedInActions()\n }\n\n protected firstUpdated () {\n const brandLink = this.shadowRoot?.getElementById('brandLink')\n if (brandLink) {\n brandLink.classList.toggle('brand-not-displayed', this.layout === 'mobile')\n }\n }\n\n protected updated (changedProperties: Map<string, unknown>) {\n if (changedProperties.has('layout')) {\n const brandLink = this.shadowRoot?.getElementById('brandLink')\n if (brandLink) {\n brandLink.classList.toggle('brand-not-displayed', this.layout === 'mobile')\n }\n }\n }\n\n render () {\n return html`\n <div class=\"headerInner\">\n <slot name=\"navigation-toggle\"></slot>\n <a\n id=\"brandLink\"\n class=\"brand\"\n href=\"${this.brandLink}\"\n part=\"brand\"\n >\n <img id=\"brandImg\" src=\"${this.logo}\" alt=\"Logo\" part=\"logo\" />\n </a>\n\n <div class=\"menu\" part=\"menu\">\n ${this.renderUserArea()}\n\n ${this.shouldRenderHelpMenu()\n ? html`\n <div class=\"header-menu-separator\" />`\n : ''}\n\n ${this.shouldRenderHelpMenu()\n ? html`\n <div class=\"help-menu-container\" part=\"help-menu-container\">\n <button\n id=\"helpMenuTrigger\"\n class=\"help-menu-trigger\"\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded=\"${this.helpMenuOpen ? 'true' : 'false'}\"\n ?disabled=\"${!this.hasHelpMenuItems()}\"\n @click=\"${(e: MouseEvent) => this.toggleHelpMenu(e)}\"\n part=\"help-menu-trigger\"\n >\n ${this.helpIcon\n ? html`<img id=\"helpIcon\" class=\"help-icon\" src=\"${this.helpIcon}\" alt=\"Help\" part=\"help-icon\" />`\n : html`<span class=\"help-text\" part=\"help-text\">Help</span>`}\n </button>\n\n <nav\n id=\"helpMenu\"\n class=\"help-dropdown\"\n role=\"menu\"\n ?inert=\"${!this.helpMenuOpen || !this.hasHelpMenuItems()}\"\n ?hidden=\"${!this.helpMenuOpen || !this.hasHelpMenuItems()}\"\n part=\"help-dropdown\"\n >\n <div class=\"help-dropdown-content\" @click=\"${() => { this.helpMenuOpen = false }}\">\n <slot name=\"help-menu\" @slotchange=\"${(e: Event) => this.handleHelpSlotChange(e)}\"></slot>\n ${this.helpMenuList && this.helpMenuList.length\n ? html`\n <ul class=\"help-menu-list\">\n ${this.helpMenuList.map((item: HeaderMenuItem) => html`\n <li>\n ${item.url\n ? html`\n <a\n href=\"${item.url}\"\n target=\"${item.target || '_blank'}\"\n rel=\"${ifDefined((item.target || '_blank') === '_blank' ? 'noopener noreferrer' : undefined)}\"\n @click=\"${(e: MouseEvent) => this.handleHelpMenuClick(item, e)}\"\n part=\"help-menu-item\"\n role=\"menuitem\"\n >\n ${item.label}\n </a>\n `\n : html`\n <button\n type=\"button\"\n @click=\"${(e: MouseEvent) => this.handleHelpMenuClick(item, e)}\"\n part=\"help-menu-item\"\n role=\"menuitem\"\n >\n ${item.label}\n </button>\n `}\n </li>\n `)}\n </ul>\n `\n : ''}\n </div>\n </nav>\n </div>`\n : ''}\n </div>\n </div>\n `\n }\n}\n","import { Header } from './Header'\n\nexport { Header }\nexport type {\n HeaderAccountMenuItem,\n HeaderAuthState,\n HeaderMenuItem\n} from './Header'\n\nconst HEADER_TAG_NAME = 'solid-ui-header'\n\nif (!customElements.get(HEADER_TAG_NAME)) {\n customElements.define(HEADER_TAG_NAME, Header)\n}\n"],"x_google_ignoreList":[5],"mappings":";;;;;;AAEA,IAAaC,IAAYD,CAAI;;;;;;;GCEhBY,IAAb,cAAiCV,EAAW;CAC1C,OAAOW,aAAa;EAClBC,OAAO;GAAEC,MAAMC;GAAQC,SAAS;EAAK;EACrCC,OAAO;GAAEH,MAAMC;GAAQC,SAAS;EAAK;EACrCE,WAAW;GAAEJ,MAAMC;GAAQI,WAAW;GAAcH,SAAS;EAAK;EAClEI,MAAM;GAAEN,MAAMC;GAAQC,SAAS;EAAK;EACpCK,QAAQ;GAAEP,MAAMC;GAAQC,SAAS;EAAK;EACtCM,YAAY,EAAEC,OAAO,GAAK;EAC1BC,mBAAmB,EAAED,OAAO,GAAK;EACjCE,eAAe,EAAEF,OAAO,GAAK;CAC/B;CAEA,OAAOG,SAASvB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuVXwB,iBAAiB,oBAAoBC,KAAKC,OAAO,CAAC,CAACC,SAAS,EAAE,CAAC,CAACC,MAAM,GAAG,EAAE;CAC3EC,YAAY;CAEpBC,cAAe;EASb,AARA,MAAM,GACN,KAAKpB,QAAQ,UACb,KAAKI,QAAQ,SACb,KAAKC,YAAY,IACjB,KAAKE,OAAO,IACZ,KAAKC,SAAS,WACd,KAAKC,aAAa,IAClB,KAAKE,oBAAoB,IACzB,KAAKC,gBAAgB;CACvB;CAEAS,oBAAqB;EACnB,MAAMA,kBAAkB;CAC1B;CAEAC,uBAAwB;EACtB,MAAMA,qBAAqB;CAC7B;CAEQC,aAAc;EACpB,IAAMC,IAAU9B,EAAc;EAC9B,IAAI8B,GAAS;GACX,KAAKC,eAAeD,EAAQE,GAAG;GAC/B;EACF;EAGA,AAFA,KAAKf,oBAAqB,OAAOgB,eAAiB,OAAeA,aAAaC,QAAQ,aAAa,KAAM,KAAKvB,aAAa,IAC3H,KAAKc,YAAY,IACjB,KAAKV,aAAa;CACpB;CAEQoB,cAAe;EACrB,KAAKpB,aAAa;CACpB;CAEAqB,UAAW;EACT,IAAMC,IAAS,KAAKC,YAAYC,cAAc,QAAQ;EACjDF,MACD,KAAKtB,cAAc,CAACsB,EAAOG,OAC7BH,EAAOI,UAAU,IACR,CAAC,KAAK1B,cAAcsB,EAAOG,QACpCH,EAAOK,MAAM;CAEjB;CAEA,MAAcC,eAAgBC,GAAmB;EAC1CA,OACL,IAAI;GAEA3C,EAAoB4C,MAAMC,QAAgBC,0BAA0B;GAEtE,IAAMC,IAAuB,IAAIC,IAAIC,OAAOC,SAASC,IAAI,CAAC,CAACC;GAI3DH,AAHIF,KACFE,OAAOjB,aAAaqB,QAAQ,wBAAwBN,CAAoB,GAE1EE,OAAOjB,aAAaqB,QAAQ,eAAeV,CAAS;GAEpD,IAAMW,IAAc,IAAIN,IAAIC,OAAOC,SAASC,IAAI;GAEhD,AADAG,EAAYF,OAAO,IACnB,MAAMxD,EAAY2D,MAAMZ,GAAWW,EAAYH,IAAI;EACrD,SAASK,GAAU;GAEjB,AADA,KAAKhC,YAAYgC,EAAIC,WAAWlD,OAAOiD,CAAG,GAC1C,KAAKE,cAAc;EACrB;CACF;CAEQ5B,eAAgB6B,GAAkB;EAExC,AADA9D,EAAM+D,SAASD,CAAQ,GACvB,KAAKE,cAAc,IAAIC,YAAY,iBAAiB;GAClDC,QAAQ,EAAEC,OAAOL,EAAS;GAC1BM,SAAS;GACTC,UAAU;EACZ,CAAC,CAAC;CACJ;CAEQC,iBAAkB;EAExB,AADA,KAAKlD,gBAAgB,IACrB,KAAKyB,eAAe,KAAK1B,iBAAiB;CAC5C;CAEQoD,kBAAmB;EACzB,KAAKnD,gBAAgB,CAAC,KAAKA;CAC7B;CAEQoD,0BAA2BtC,GAAa;EAE9C,AADA,KAAKf,oBAAoBe,GACzB,KAAKd,gBAAgB;CACvB;CAEQqD,mBAAoBC,GAAU;EACpC,KAAKvD,oBAAqBuD,EAAEC,OAA4BC;CAC1D;CAEQC,oBAAqBH,GAAkB;EAI7C,AAHIA,EAAEI,QAAQ,WACZ,KAAKjC,eAAe,KAAK1B,iBAAiB,GAExCuD,EAAEI,QAAQ,YACZ,KAAKzC,YAAY;CAErB;CAEQ0C,eAAgB;EACtB,IAAMC,IAAmB/E,EAAoB;EAC7C,OAAOJ,CAAI;;;;yFAI0E,KAAKwC,YAAY,EAAC;;;;oDAIvD,KAAKf,eAAc;;;;;0BAK7C,KAAKA,eAAc;;;;8BAIf,KAAKH,kBAAiB;8BACtB,KAAKsD,mBAAkB;gCACrB,KAAKI,oBAAmB;;;oBAGpCG,EAAiBC,SACnCpF,CAAI;;;;;uCAKiC,KAAKuB,cAAa;sCACnB,KAAKmD,gBAAgB,EAAC;uBACrClE,EAAa;sBAElC,GAAE;;kBAEc,KAAKe,iBAAiB4D,EAAiBC,SACvDpF,CAAI;;sBAEgBmF,EAAiBE,KAAIC,MAActF,CAAI;;;;;wCAKrB,KAAK2E,0BAA0BW,EAAWjD,GAAG,EAAC;yBAC7DiD,EAAWC,KAAI;qBACnB,EAAC;;oBAGpB,GAAE;;;cAGU,KAAKzD,YAAY9B,CAAI,0BAA0B,KAAK8B,UAAS,UAAW,GAAE;;;;8EAIV,KAAKU,YAAY,EAAC;;;;2BAIrE,CAAC,KAAKlB,kBAAiB;8BACpB,KAAKmD,eAAe,EAAC;;;;;CAKjD;CAEAe,SAAU;EACR,OAAOxF,CAAI;;;;;wBAKS,KAAKkC,WAAW,EAAC;;UAE/B,KAAKhB,OAAOlB,CAAI,uCAAuC,KAAKkB,KAAI,2DAA4D,GAAE;gBACxH,KAAKP,MAAK;;;;;;;;oBAQNkE,MAAa;GAAsB,AAApBA,EAAEY,eAAe,GAAG,KAAKjD,YAAY;EAAE,EAAC;mBACxDqC,MAAkB;GAAE,AAAIA,EAAEC,WAAWD,EAAEa,iBAAe,KAAKlD,YAAY;EAAE,EAAC;;UAEnF,KAAKpB,aAAa,KAAK8D,aAAa,IAAI,GAAE;;;CAGlD;AACF,GCxiBMU,IAAwB;AAEzBC,eAAeC,IAAIF,CAAqB,KAC3CC,eAAeE,OAAOH,GAAuBD,CAAW;;;ACL1D,IAAMQ,IAAqB,sCAEdC,IAAb,cAAkCJ,EAAW;CAC3C,OAAOK,aAAa;EAClBC,OAAO;GAAEC,MAAMC;GAAQC,SAAS;EAAK;EACrCC,OAAO;GAAEH,MAAMC;GAAQC,SAAS;EAAK;EACrCE,WAAW;GAAEJ,MAAMC;GAAQI,WAAW;GAAcH,SAAS;EAAK;EAClEI,MAAM;GAAEN,MAAMC;GAAQC,SAAS;EAAK;EACpCK,QAAQ;GAAEP,MAAMC;GAAQC,SAAS;EAAK;CACxC;CAEA,OAAOM,SAASb,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDnBc,cAAe;EAMb,AALA,MAAM,GACN,KAAKV,QAAQ,WACb,KAAKK,YAAYR,GACjB,KAAKO,QAAQ,SACb,KAAKG,OAAO,IACZ,KAAKC,SAAS;CAChB;CAEQG,eAAgB;EACtBC,OAAOC,KAAK,KAAKR,WAAW,UAAU,qBAAqB;CAC7D;CAEAS,SAAU;EACR,OAAOnB,CAAI;;;;;wBAKS,KAAKgB,aAAa,EAAC;;UAEjC,KAAKJ,OAAOZ,CAAI,wCAAwC,KAAKY,KAAI,4DAA6D,GAAE;gBAC1H,KAAKP,MAAK;;;CAGxB;AACF,GC1FMgB,IAAyB;AAE1BC,eAAeC,IAAIF,CAAsB,KAC5CC,eAAeE,OAAOH,GAAwBD,CAAY;;;ACFzD,IAAM,KAAE,MAAG,KAAGK,GCDXC,IAAW,EACfC,8BAA8B,GAChC,GCKMU,IAAyB,IACzBC,IAAyB,wDACzBC,IAAqB,sCACrBC,IAAsCT,EAAMU,WAAW;AAE7D,eAAeC,IAA0C;CACnD,aAAOC,SAAW,MAKtB;OAAK,IAAME,KAAOD,CADI,eAAe,sBACnBA,GAEhBD,AADAA,OAAOG,aAAaC,WAAWF,CAAG,GAClCF,OAAOK,eAAeD,WAAWF,CAAG;EAGlC,aAAOI,YAAc,MAKzB,KAAK,IAAME,KAAUD;GADF;GAAS;GAA4B;EACnCA,GACnB,MAAM,IAAIE,SAAeC,MAAY;GACnC,IAAI;IACF,IAAMC,IAAUL,UAAUM,eAAeJ,CAAM;IAG/CG,AAFAA,EAAQE,kBAAkBH,EAAQ,GAClCC,EAAQG,gBAAgBJ,EAAQ,GAChCC,EAAQI,kBAAkBL,EAAQ;GACpC,QAAe;IACbA,EAAQ;GACV;EACF,CAAC;CAjBH;AAmBF;AAiBA,IAAaO,IAAb,cAA4BhC,EAAW;CACrC,OAAOiC,aAAa;EAClBC,MAAM;GAAEC,MAAMC;GAAQC,SAAS;EAAK;EACpCC,UAAU;GAAEH,MAAMC;GAAQG,WAAW;GAAaF,SAAS;EAAK;EAChEG,QAAQ;GAAEL,MAAMC;GAAQC,SAAS;EAAK;EACtCI,OAAO;GAAEN,MAAMC;GAAQC,SAAS;EAAK;EACrCK,WAAW;GAAEP,MAAMC;GAAQG,WAAW;GAAcF,SAAS;EAAK;EAClEM,WAAW;GAAER,MAAMC;GAAQG,WAAW;GAAcF,SAAS;EAAK;EAClEO,aAAa;GAAET,MAAMU;GAAQN,WAAW;EAAM;EAC9CO,cAAc;GAAEX,MAAMU;GAAQN,WAAW;EAAM;EAC/CQ,aAAa;GAAEZ,MAAMa;GAAOT,WAAW;EAAM;EAC7CU,aAAa;GAAEd,MAAMC;GAAQG,WAAW;GAAgBF,SAAS;EAAK;EACtEa,YAAY;GAAEf,MAAMC;GAAQG,WAAW;GAAeF,SAAS;EAAK;EACpEc,aAAa;GAAEhB,MAAMC;GAAQG,WAAW;GAAgBF,SAAS;EAAK;EACtEe,eAAe;GAAEjB,MAAMC;GAAQG,WAAW;GAAkBF,SAAS;EAAK;EAC1EgB,uBAAuB;GAAElB,MAAMC;GAAQG,WAAW;GAA2BF,SAAS;EAAK;EAC3FiB,WAAW;GAAEnB,MAAMC;GAAQG,WAAW;GAAcF,SAAS;EAAK;EAClEkB,YAAY;GAAEpB,MAAMC;GAAQG,WAAW;GAAgBF,SAAS;EAAK;EACrEmB,cAAc,EAAErB,MAAMa,MAAM;EAC5BS,iBAAiB,EAAEC,OAAO,GAAK;EAC/BC,cAAc,EAAED,OAAO,GAAK;EAC5BE,uBAAuB,EAAEF,OAAO,GAAK;EACrCG,oBAAoB,EAAEH,OAAO,GAAK;EAClCI,cAAc,EAAEJ,OAAO,GAAK;CAC9B;CAEA,OAAOK,SAAS7D,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6cX8D,kBAAwC;CAE/BC,gCAAgC;EAC/C,KAAKC,4BAA4B,CAAC,CAACC,YAAY,CAC7C,CACD;CACH;CAEAC,cAAe;EAuBb,AAtBA,MAAM,GACN,KAAKlC,OAAOxB,GACZ,KAAK4B,WAAW7B,GAChB,KAAK+B,SAAS,WACd,KAAKC,QAAQ,SACb,KAAKC,YAAY,KACjB,KAAKC,YAAY,cACjB,KAAKC,cAAc;GAAEyB,OAAO;GAAUC,QAAQ;EAAQ,GACtD,KAAKxB,eAAe;GAAEuB,OAAO;GAAWC,QAAQ;GAAWC,KAAK5D;EAAmB,GACnF,KAAKoC,cAAc,CAAA,GACnB,KAAKE,cAAc,WACnB,KAAKC,aAAa,IAClB,KAAKC,cAAc,KACnB,KAAKC,gBAAgB,IACrB,KAAKC,wBAAwB,IAC7B,KAAKC,YAAY,IACjB,KAAKC,aAAa,IAClB,KAAKC,eAAe,CAAA,GACpB,KAAKC,kBAAkB,IACvB,KAAKE,eAAe,IACpB,KAAKC,wBAAwB,IAC7B,KAAKC,qBAAqB,IAC1B,KAAKC,eAAe;CACtB;CAEAU,oBAAqB;EASnB,AARA,MAAMA,kBAAkB,GACxBC,SAASC,iBAAiB,SAAS,KAAKC,mBAAmB,GAC3D5D,OAAO2D,iBAAiB,WAAW,KAAKE,mBAAmB,GACvD,OAAOxE,EAAYyE,QAAQC,MAAO,eACpC1E,EAAYyE,OAAOC,GAAG,SAAS,KAAKb,uBAAuB,GAC3D7D,EAAYyE,OAAOC,GAAG,UAAU,KAAKb,uBAAuB,GAC5D7D,EAAYyE,OAAOC,GAAG,kBAAkB,KAAKb,uBAAuB,IAEtE,KAAKC,4BAA4B,CAAC,CAACC,YAAY,CAC7C,CACD;CACH;CAEAY,uBAAwB;EAQtB,AAPAN,SAASO,oBAAoB,SAAS,KAAKL,mBAAmB,GAC9D5D,OAAOiE,oBAAoB,WAAW,KAAKJ,mBAAmB,GAC1D,OAAOxE,EAAYyE,QAAQI,OAAQ,eACrC7E,EAAYyE,OAAOI,IAAI,SAAS,KAAKhB,uBAAuB,GAC5D7D,EAAYyE,OAAOI,IAAI,UAAU,KAAKhB,uBAAuB,GAC7D7D,EAAYyE,OAAOI,IAAI,kBAAkB,KAAKhB,uBAAuB,IAEvE,MAAMc,qBAAqB;CAC7B;CAEA,MAAcb,8BAA+B;EAC3C,AACE,KAAKF,qBAAmB,YAAY;GAClC,IAAI;IAGF,AAFA,MAAM3D,EAAM6E,UAAU,GAEjB7E,EAAM8E,YAAY,KACrB,MAAM9E,EAAM6E,UAAU;GAE1B,QAAe,CACb;EAEJ,EAAA,CAAG;EAGL,IAAI;GACF,MAAM,KAAKlB;EACb,UAAU;GACR,KAAKA,kBAAkB;EACzB;EAGA,AADA,KAAKrB,YAAYtC,EAAM8E,YAAY,IAAI,cAAc,cACrD,KAAKrB,eAAe;CACtB;CAEQsB,oBAAqBC,GAAsBC,GAAmB;EAQpE,IAPAA,EAAMC,eAAe,GACrB,KAAK5B,eAAe,IACpB,KAAK6B,cAAc,IAAIC,YAAY,oBAAoB;GACrDC,QAAQL;GACRM,SAAS;GACTC,UAAU;EACZ,CAAC,CAAC,GACEP,EAAKd,KAAK;GACZ,IAAMsB,IAASR,EAAKQ,UAAU,UACxBC,IAAWD,MAAW,WAAW,wBAAwBE,KAAAA;GAC/DhF,OAAOiF,KAAKX,EAAKd,KAAKsB,GAAQC,CAAQ;EACxC;CACF;CAEQG,uBAAwBZ,GAA6B;EAE3D,AADA,KAAK5B,kBAAkB,IACvB,KAAK+B,cAAc,IAAIC,YAAY,uBAAuB;GACxDC,QAAQL;GACRM,SAAS;GACTC,UAAU;EACZ,CAAC,CAAC;CACJ;CAEiBjB,uBAAuBW,MAAsB;EAC5D,AAAKA,EAAMY,aAAa,CAAC,CAACC,SAAS,IAAI,MACrC,KAAK1C,kBAAkB,IACvB,KAAKE,eAAe;CAExB;CAEiBiB,uBAAuBU,MAAyB;EAC/D,AAAIA,EAAMrE,QAAQ,aAAa,KAAKwC,mBAAmB,KAAKE,kBAC1D,KAAKF,kBAAkB,IACvB,KAAKE,eAAe;CAExB;CAEQyC,wBAAyBd,GAAc;EAC7C,IAAMe,IAAOf,EAAMO;EACnB,KAAKjC,wBAAwByC,EAAKC,iBAAiB,EAAEC,SAAS,GAAK,CAAC,CAAC,CAACC,SAAS;CACjF;CAEQC,qBAAsBnB,GAAc;EAC1C,IAAMe,IAAOf,EAAMO;EACnB,KAAKhC,qBAAqBwC,EAAKC,iBAAiB,EAAEC,SAAS,GAAK,CAAC,CAAC,CAACC,SAAS;CAC9E;CAEQE,kBAAmBpB,GAAmB;EAC5CA,EAAMC,eAAe,GAChB,KAAKoB,oBAAoB,MAC9B,KAAKhD,eAAe,IACpB,KAAKF,kBAAkB,CAAC,KAAKA;CAC/B;CAEQmD,eAAgBtB,GAAmB;EACzCA,EAAMC,eAAe,GAChB,KAAKsB,iBAAiB,MAC3B,KAAKpD,kBAAkB,IACvB,KAAKE,eAAe,CAAC,KAAKA;CAC5B;CAEQgD,sBAAuB;EAC7B,OAAOG,GAAQ,KAAK/D,aAAayD,UAAU,KAAK5C,yBAAyB,KAAKX;CAChF;CAEQ4D,mBAAoB;EAC1B,OAAOC,GAAQ,KAAKtD,cAAcgD,UAAU,KAAK3C;CACnD;CAEQkD,uBAAwB;EAC9B,OAAO,KAAKvE,WAAW,YAAY,KAAKqE,iBAAiB;CAC3D;CAEQG,qBAAsBC,GAAiBC,IAAe,kBAAkB;EAC9E,IAAMC,IAAYL,EAAQG,GACpBG,IAAWD,IAAYF,IAAS,KAAK5D,yBAAyBzC,GAC9DyG,IAAWF,IAAY,mBAAmB;EAMhD,OAJI,KAAK3E,WAAW,YAAY0E,MAAiB,mBACxCjH,CAAI,wCAAwCmH,EAAQ,SAAUC,EAAQ,QAGxEpH,CAAI;qBACMiH,EAAY;oBACbE,EAAQ,SAAUC,EAAQ;;;CAG5C;CAEQC,yBAA0B;EAChC,OAAOrH,CAAI;;;;qBAIM,KAAK2C,YAAYyB,MAAK;mBACxB9D,EAAU,KAAKiC,WAAW,WAAuDuD,KAAAA,IAA3C,KAAKzC,aAAa,KAAKV,YAAY2E,IAAiB,EAAC;sBACxF,KAAK/E,OAAM;qBACZ,KAAKC,MAAK;;oCAEK,KAAK+E,mBAAmB,EAAC;;;;;qBAKxC,KAAK1E,aAAauB,MAAK;0BAClB9D,EAAU,KAAKuC,aAAayB,GAAG,EAAC;sBACpC,KAAK/B,OAAM;oBACbjC,EAAU,KAAKiC,WAAW,WAAyDuD,KAAAA,IAA7C,KAAKxC,cAAc,KAAKT,aAAayE,IAAiB,EAAC;qBAC5F,KAAK9E,MAAK;;;;;;CAM7B;CAEA,MAAc+E,qBAAsB;EAElC,AADA,MAAM,KAAKtD,4BAA4B,GACvC,KAAKsB,cAAc,IAAIC,YAAY,sBAAsB;GACvDC,QAAQ,EAAE+B,MAAM,QAAQ;GACxB9B,SAAS;GACTC,UAAU;EACZ,CAAC,CAAC;CACJ;CAEA,MAAc8B,eAAgB;EAC5B,KAAKjE,kBAAkB;EACvB,IAAMkE,IAAS5G,OAAOG,aAAa0G,QAAQ,aAAa,KAAK;EAE7D,IAAI;GACF,MAAMxH,EAAYyH,OAAO;EAC3B,QAAe,CACb;EAGF,MAAM/G,EAAwB,GAM1BgH,OAJmCxH,EAAwB;GAC7DqH;GACAI,wBAAwB;EAC1B,CAAC,MAKD,MAAM,KAAK7D,4BAA4B,GACvC,KAAKsB,cAAc,IAAIC,YAAY,iBAAiB;GAClDC,QAAQ,EAAE+B,MAAM,SAAS;GACzB9B,SAAS;GACTC,UAAU;EACZ,CAAC,CAAC;CACJ;CAEQoC,sBAAuB3C,GAA6B;EAC1D,IAAM4C,IAAUhI,CAAI;QAChB,KAAK+G,qBAAqB3B,EAAK4B,QAAQ,qBAAqB,EAAC;;2CAE1B5B,EAAKhB,MAAK;UAC3CgB,EAAK6C,SAAS,KAAK1F,WAAW,WAAWvC,CAAI,oCAAoCoF,EAAK6C,MAAK,WAAY,GAAE;;;EAkB/G,OAdI7C,EAAKd,MACAtE,CAAI;;;kBAGCoF,EAAKd,IAAG;0BACA,KAAK0B,uBAAuBZ,CAAI,EAAC;;;;YAI/C4C,EAAO;;UAKRhI,CAAI;;;;wBAIS,KAAKgG,uBAAuBZ,CAAI,EAAC;;;;UAI/C4C,EAAO;;;CAGf;CAEQE,wBAAyB;EAC/B,OAAOlI,CAAI;;;;;;;;6BAQc,KAAKwD,kBAAkB,SAAS,QAAO;yBAC3C,CAAC,KAAKkD,oBAAoB,EAAC;uBAC7ByB,MAAkB,KAAK1B,kBAAkB0B,CAAC,EAAC;;;cAGpD,KAAKpB,qBAAqB,KAAK5D,aAAa,EAAC;cAC7C,KAAKZ,WAAW,YAAY,KAAKW,cAC7ClD,CAAI;4DACsD,KAAKkD,YAAW,kCAC1E,GAAE;;;;;;;;oBAQgB,CAAC,KAAKM,mBAAmB,CAAC,KAAKkD,oBAAoB,EAAC;qBACnD,CAAC,KAAKlD,mBAAmB,CAAC,KAAKkD,oBAAoB,EAAC;;;;;oDAKrByB,MAAa,KAAKhC,wBAAwBgC,CAAC,EAAC;YACpF,KAAKrF,eAAe,KAAKA,YAAYyD,SACrCvG,CAAI;;gBAEA,KAAK8C,YAAYsF,KAAKhD,MAAgCpF,CAAI;sBACpD,KAAK+H,sBAAsB3C,CAAI,EAAC;eACvC,EAAC;;cAGJ,GAAE;YACF,KAAKpC,cACLhD,CAAI;;;;;8BAKc,KAAKyH,aAAa,EAAC;;;;gBAIjC,KAAKxE,cAAc,KAAKV,WAAW,WACjCvC,CAAI,wCAAwC,KAAKiD,WAAU,4DAC3D,GAAE;gBACJ,KAAKD,YAAW;;cAGpB,GAAE;;;;CAIZ;CAEQqF,iBAAkB;EAiBxB,OAhBI9H,EAAS+H,+BACJtI,CAAI;;;;UAOR,KAAK6D,eAIN,KAAKnB,cAAc,eACd,KAAK2E,uBAAuB,IAG9B,KAAKa,sBAAsB,IAPzBlI,CAAI;CAQf;CAEUuI,eAAgB;EACxB,IAAM9F,IAAY,KAAK+F,YAAYC,eAAe,WAAW;EAC7D,AAAIhG,KACFA,EAAUiG,UAAUC,OAAO,uBAAuB,KAAKpG,WAAW,QAAQ;CAE9E;CAEUqG,QAASC,GAAyC;EAC1D,IAAIA,EAAkBC,IAAI,QAAQ,GAAG;GACnC,IAAMrG,IAAY,KAAK+F,YAAYC,eAAe,WAAW;GAC7D,AAAIhG,KACFA,EAAUiG,UAAUC,OAAO,uBAAuB,KAAKpG,WAAW,QAAQ;EAE9E;CACF;CAEAwG,SAAU;EACR,OAAO/I,CAAI;;;;;;kBAMG,KAAKyC,UAAS;;;oCAGI,KAAKR,KAAI;;;;YAIjC,KAAKoG,eAAe,EAAC;;YAErB,KAAKvB,qBAAqB,IAC1B9G,CAAI;qDAEJ,GAAE;;YAEF,KAAK8G,qBAAqB,IAC1B9G,CAAI;;;;;;;iCAOiB,KAAK0D,eAAe,SAAS,QAAO;6BACxC,CAAC,KAAKkD,iBAAiB,EAAC;2BAC1BuB,MAAkB,KAAKxB,eAAewB,CAAC,EAAC;;;kBAGjD,KAAK9F,WACHrC,CAAI,6CAA6C,KAAKqC,SAAQ,oCAC9DrC,CAAI,uDAAsD;;;;;;;wBAOtD,CAAC,KAAK0D,gBAAgB,CAAC,KAAKkD,iBAAiB,EAAC;yBAC7C,CAAC,KAAKlD,gBAAgB,CAAC,KAAKkD,iBAAiB,EAAC;;;iEAGN;GAAE,KAAKlD,eAAe;EAAM,EAAC;uDACvCyE,MAAa,KAAK3B,qBAAqB2B,CAAC,EAAC;kBAC9E,KAAK5E,gBAAgB,KAAKA,aAAagD,SACvCvG,CAAI;;sBAEA,KAAKuD,aAAa6E,KAAKhD,MAAyBpF,CAAI;;0BAEhDoF,EAAKd,MACLtE,CAAI;;oCAEMoF,EAAKd,IAAG;sCACNc,EAAKQ,UAAU,SAAQ;mCAC1BtF,GAAW8E,EAAKQ,UAAU,cAAc,WAAW,wBAAwBE,KAAAA,CAAS,EAAC;uCACjFqC,MAAkB,KAAKhD,oBAAoBC,GAAM+C,CAAC,EAAC;;;;8BAI5D/C,EAAKhB,MAAK;;4BAGdpE,CAAI;;;uCAGSmI,MAAkB,KAAKhD,oBAAoBC,GAAM+C,CAAC,EAAC;;;;8BAI5D/C,EAAKhB,MAAK;;0BAEf;;qBAEJ,EAAC;;oBAGJ,GAAE;;;oBAIR,GAAE;;;;CAIZ;AACF,GC3+BM6E,IAAkB;AAEnBC,eAAeC,IAAIF,CAAe,KACrCC,eAAeE,OAAOH,GAAiBD,CAAM"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as e, g as t, k as n } from "./solid-logic.esm-
|
|
1
|
+
import { C as e, g as t, k as n } from "./solid-logic.esm-T70qfHAr.js";
|
|
2
2
|
//#region src/utils/headerFooterHelpers.ts
|
|
3
3
|
function r() {
|
|
4
4
|
let { origin: t, pathname: n } = document.location, r = document.body?.dataset?.appShell === "databrowser", i = n.split("/").filter(Boolean), a = i[i.length - 1] || "", o = /\.[^/]+$/.test(a);
|
|
@@ -49,4 +49,4 @@ function o(e, t, n = {}) {
|
|
|
49
49
|
//#endregion
|
|
50
50
|
export { o as i, r as n, i as r, a as t };
|
|
51
51
|
|
|
52
|
-
//# sourceMappingURL=headerFooterHelpers-
|
|
52
|
+
//# sourceMappingURL=headerFooterHelpers-7O_ln1QD.js.map
|
package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js.map → headerFooterHelpers-7O_ln1QD.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerFooterHelpers-
|
|
1
|
+
{"version":3,"file":"headerFooterHelpers-7O_ln1QD.js","names":["parse","sym","ns","getPod","origin","pathname","document","location","isDatabrowserShell","body","dataset","appShell","segments","split","filter","Boolean","lastSegment","length","looksLikeFile","test","site","getPodOwner","pod","store","any","ldp","response","fetcher","webOperation","uri","initFetchOptions","headers","accept","containerTurtle","responseText","err","console","error","holds","rdf","space","warn","podOwner","solid","load","doc","_err","guess","getName","user","anyValue","vcard","foaf","throttle","func","wait","options","context","args","result","timeout","previous","later","leading","Date","now","apply","remaining","arguments","clearTimeout","trailing","setTimeout"],"sources":["../../src/utils/headerFooterHelpers.ts"],"sourcesContent":["/*\n Copied from mashlib/src/global/metadata.ts\n */\nimport { IndexedFormula, LiveStore, NamedNode, parse, sym } from 'rdflib'\nimport ns from '../lib/ns'\n\n/* @ts-ignore no-console */\ntype ThrottleOptions = {\n leading?: boolean;\n throttling?: boolean;\n trailing?: boolean;\n}\n\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getPod (): NamedNode {\n const { origin, pathname } = document.location\n const isDatabrowserShell = document.body?.dataset?.appShell === 'databrowser'\n const segments = pathname.split('/').filter(Boolean)\n const lastSegment = segments[segments.length - 1] || ''\n const looksLikeFile = /\\.[^/]+$/.test(lastSegment)\n\n if (isDatabrowserShell && segments.length > 0 && !looksLikeFile) {\n return sym(`${origin}/${segments[0]}/`)\n }\n\n // Root-hosted pods and static databrowser pages still use the site root.\n return sym(origin).site()\n}\n/**\n */\nexport async function getPodOwner (pod: NamedNode, store: LiveStore): Promise<NamedNode | null> {\n // This is a massive guess. In future\n // const podOwner = sym(`${pod.uri}profile/card#me`)\n\n try {\n // load turtle Container representation\n if (!store.any(pod, null, ns.ldp('Container'), pod)) {\n const response = await store.fetcher.webOperation('GET', pod.uri, store.fetcher.initFetchOptions(pod.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n parse(containerTurtle as string, store, pod.uri, 'text/turtle')\n }\n } catch (err) {\n console.error('Error loading pod ' + pod + ': ' + err)\n return null\n }\n if (!store.holds(pod, ns.rdf('type'), ns.space('Storage'), pod)) {\n console.warn('Pod ' + pod + ' does not declare itself as a space:Storage')\n return null\n }\n const podOwner = store.any(pod, ns.solid('owner'), null, pod) ||\n store.any(null, ns.space('storage'), pod, pod)\n if (podOwner) {\n try {\n await store.fetcher.load((podOwner as NamedNode).doc())\n } catch (_err) {\n console.warn('Unable to load profile of pod owner ' + podOwner)\n return null\n }\n if (!store.holds(podOwner, ns.space('storage'), pod, (podOwner as NamedNode).doc())) {\n console.warn(`Pod owner ${podOwner} does NOT list pod ${pod} as their storage`)\n }\n return podOwner as NamedNode// Success!\n } else { // pod owner not declared in pod\n // @@ TODO: This is given the structure that NSS provides\n // This is a massive guess. For old pods which don't have owner link\n const guess = sym(`${pod.uri}profile/card#me`)\n try {\n // @ts-ignore LiveStore always has fetcher\n await store.fetcher.load(guess)\n } catch (_err) {\n console.error('Ooops. Guessed wrong pod owner webid {$guess} : can\\'t load it.')\n return null\n }\n if (store.holds(guess, ns.space('storage'), pod, guess.doc())) {\n console.warn('Using guessed pod owner webid but it links back.')\n return guess\n }\n return null\n }\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function getName (store: IndexedFormula, user: NamedNode): string {\n return store.anyValue(user, ns.vcard('fn'), null, user.doc()) ||\n store.anyValue(user, ns.foaf('name'), null, user.doc()) ||\n user.uri\n}\n/**\n * @ignore exporting this only for the unit test\n */\nexport function throttle (func: Function, wait: number, options: ThrottleOptions = {}): (...args: any[]) => any {\n let context: any,\n args: any,\n result: any\n let timeout: any = null\n let previous = 0\n const later = function () {\n previous = !options.leading ? 0 : Date.now()\n timeout = null\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n return function () {\n const now = Date.now()\n if (!previous && !options.leading) previous = now\n const remaining = wait - (now - previous)\n // @ts-ignore\n context = this\n args = arguments\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n result = func.apply(context, args)\n if (!timeout) context = args = null\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining)\n }\n return result\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as e, i as t, t as n } from "./components-
|
|
1
|
+
import { a as e, i as t, t as n } from "./components-C1LEhsaK.js";
|
|
2
2
|
import { c as r, i } from "./lit-C4H1jI4q.js";
|
|
3
3
|
import { r as a, t as o } from "./decorators-BiCkPd_3.js";
|
|
4
4
|
//#region src/components/input/Input.styles.css
|
|
@@ -308,4 +308,4 @@ var Y = J;
|
|
|
308
308
|
//#endregion
|
|
309
309
|
export { J as n, Y as t };
|
|
310
310
|
|
|
311
|
-
//# sourceMappingURL=input-
|
|
311
|
+
//# sourceMappingURL=input-BF224Jid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-
|
|
1
|
+
{"version":3,"file":"input-BF224Jid.js","names":["customElement","WebComponent","html","property","query","InputTrait","styles","_classDecs","_Input","_Input2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_typeDecs","_placeholderDecs","_requiredDecs","Boolean","_inputElementDecs","_Input3","Input","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","inputElement","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_type","_init_placeholder","_init_required","_init_inputElement","_defineProperty","inputTrait","addTrait","getInputElement","getInternals","render","renderLabel","inputId","onInput","onKeyDown","e","key","preventDefault","onSubmit","c","_initClass","_applyDecs","_Class","_identity","default","Input"],"sources":["../../src/components/input/Input.styles.css","../../src/components/input/Input.ts","../../src/components/input/index.ts"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n input {\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n width: 100%;\n background: white;\n color: var(--solid-ui-color-gray-700);\n font-size: inherit;\n }\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport InputTrait from '@/lib/components/traits/InputTrait'\n\nimport styles from './Input.styles.css'\n\n@customElement('solid-ui-input')\nexport default class Input extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = '';\n\n @property({ type: String, reflect: true })\n accessor name = '';\n\n @property({ type: String })\n accessor value = '';\n\n @property({ type: String, reflect: true })\n accessor type = 'text';\n\n @property({ type: String, reflect: true })\n accessor placeholder = '';\n\n @property({ type: Boolean, reflect: true })\n accessor required = false;\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null;\n\n private inputTrait: InputTrait\n\n constructor () {\n super()\n\n this.inputTrait = this.addTrait(new InputTrait(this, {\n getInputElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n }))\n }\n\n protected render () {\n return html`\n ${this.inputTrait.renderLabel()}\n\n <div class=\"input-wrapper\">\n <input\n id=${this.inputTrait.inputId}\n type=${this.type}\n name=${this.name}\n placeholder=${this.placeholder}\n ?required=${this.required}\n .value=${this.value}\n @input=${() => this.inputTrait.onInput()}\n @keydown=${this.onKeyDown}\n />\n </div>\n `\n }\n\n private onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter') {\n e.preventDefault()\n\n this.inputTrait.onSubmit()\n }\n }\n}\n","import Input from './Input'\n\nexport { Input }\nexport default Input\n"],"mappings":"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"}
|