solid-ui 3.1.3-10 → 3.1.3-11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/_virtual/~icons/svg-spinners/3-dots-fade.cjs.js +2 -0
  2. package/dist/_virtual/~icons/svg-spinners/3-dots-fade.cjs.js.map +1 -0
  3. package/dist/_virtual/~icons/svg-spinners/3-dots-fade.esm.js +11 -0
  4. package/dist/_virtual/~icons/svg-spinners/3-dots-fade.esm.js.map +1 -0
  5. package/dist/chunks/{DialogProvider-CrvbR_fd.js → DialogProvider-ge2aA77F.js} +3 -3
  6. package/dist/chunks/DialogProvider-ge2aA77F.js.map +1 -0
  7. package/dist/chunks/{account-Ma2Ipfjx.js → account-CdqIoTsl.js} +11 -11
  8. package/dist/chunks/{account-Ma2Ipfjx.js.map → account-CdqIoTsl.js.map} +1 -1
  9. package/dist/chunks/{auth-BI22fz6P.js → auth-D8B5yczR.js} +9 -9
  10. package/dist/chunks/{auth-BI22fz6P.js.map → auth-D8B5yczR.js.map} +1 -1
  11. package/dist/chunks/{avatar-DN7FzC2N.js → avatar-DNGFKkhm.js} +4 -4
  12. package/dist/chunks/{avatar-DN7FzC2N.js.map → avatar-DNGFKkhm.js.map} +1 -1
  13. package/dist/chunks/{button-DHahwxqn.js → button-oanBb_ha.js} +2 -2
  14. package/dist/chunks/{button-DHahwxqn.js.map → button-oanBb_ha.js.map} +1 -1
  15. package/dist/chunks/combobox-Dav1bNHS.js +734 -0
  16. package/dist/chunks/combobox-Dav1bNHS.js.map +1 -0
  17. package/dist/chunks/{combobox-option-DB6KGb7o.js → combobox-option-DxJvAZ_Q.js} +2 -2
  18. package/dist/chunks/{combobox-option-DB6KGb7o.js.map → combobox-option-DxJvAZ_Q.js.map} +1 -1
  19. package/dist/chunks/{components-DH1slGZY.js → components-PQfnwrHI.js} +10 -10
  20. package/dist/chunks/components-PQfnwrHI.js.map +1 -0
  21. package/dist/chunks/{context-CA1Kq0FW.js → context-B_xwK-Y_.js} +2 -2
  22. package/dist/chunks/{context-CA1Kq0FW.js.map → context-B_xwK-Y_.js.map} +1 -1
  23. package/dist/chunks/{dialog-YaqTwAtR.js → dialog-Ujvm11_B.js} +5 -5
  24. package/dist/chunks/{dialog-YaqTwAtR.js.map → dialog-Ujvm11_B.js.map} +1 -1
  25. package/dist/chunks/{dialog-content-B3I3H7hj.js → dialog-content-CEITrC59.js} +2 -2
  26. package/dist/chunks/{dialog-content-B3I3H7hj.js.map → dialog-content-CEITrC59.js.map} +1 -1
  27. package/dist/chunks/{dialog-footer-BjcYeVhg.js → dialog-footer-DVLEK5bU.js} +2 -2
  28. package/dist/chunks/{dialog-footer-BjcYeVhg.js.map → dialog-footer-DVLEK5bU.js.map} +1 -1
  29. package/dist/chunks/{dialog-header-BynEzovK.js → dialog-header-kEWl21oD.js} +2 -2
  30. package/dist/chunks/{dialog-header-BynEzovK.js.map → dialog-header-kEWl21oD.js.map} +1 -1
  31. package/dist/chunks/{dialogs-root-B61LtZks.js → dialogs-root-dPGfuzSZ.js} +3 -3
  32. package/dist/chunks/{dialogs-root-B61LtZks.js.map → dialogs-root-dPGfuzSZ.js.map} +1 -1
  33. package/dist/chunks/{guard-YhbCPY-V.js → guard-DZGvf4tS.js} +4 -4
  34. package/dist/chunks/{guard-YhbCPY-V.js.map → guard-DZGvf4tS.js.map} +1 -1
  35. package/dist/chunks/{input-CVKu3XRI.js → input-BjCX2bFe.js} +8 -8
  36. package/dist/chunks/input-BjCX2bFe.js.map +1 -0
  37. package/dist/chunks/{login-button-76PlEs2Y.js → login-button-Ta3tkpn4.js} +5 -5
  38. package/dist/chunks/{login-button-76PlEs2Y.js.map → login-button-Ta3tkpn4.js.map} +1 -1
  39. package/dist/chunks/{logout-button-Dt3Utgj0.js → logout-button-Db6VmUmJ.js} +5 -5
  40. package/dist/chunks/{logout-button-Dt3Utgj0.js.map → logout-button-Db6VmUmJ.js.map} +1 -1
  41. package/dist/chunks/{menu-6ayNsxFG.js → menu-CQEXqNO6.js} +2 -2
  42. package/dist/chunks/{menu-6ayNsxFG.js.map → menu-CQEXqNO6.js.map} +1 -1
  43. package/dist/chunks/{menu-item-Ckl9f1rG.js → menu-item-BHJ4xljI.js} +2 -2
  44. package/dist/chunks/{menu-item-Ckl9f1rG.js.map → menu-item-BHJ4xljI.js.map} +1 -1
  45. package/dist/chunks/{provider-BfO67dzy.js → provider-CoVkCkMs.js} +5 -5
  46. package/dist/chunks/provider-CoVkCkMs.js.map +1 -0
  47. package/dist/chunks/{select-DHFgELMJ.js → select-OM-SgY4K.js} +101 -66
  48. package/dist/chunks/select-OM-SgY4K.js.map +1 -0
  49. package/dist/chunks/{select-option-Duk4S4Sc.js → select-option-pVhYlXrt.js} +2 -2
  50. package/dist/chunks/{select-option-Duk4S4Sc.js.map → select-option-pVhYlXrt.js.map} +1 -1
  51. package/dist/chunks/{signup-button-B10K6b8A.js → signup-button-wO4uoqUi.js} +5 -5
  52. package/dist/chunks/{signup-button-B10K6b8A.js.map → signup-button-wO4uoqUi.js.map} +1 -1
  53. package/dist/chunks/{solid-emblem-DgBJk5Th.js → solid-emblem-D2clBuKZ.js} +2 -2
  54. package/dist/chunks/{solid-emblem-DgBJk5Th.js.map → solid-emblem-D2clBuKZ.js.map} +1 -1
  55. package/dist/chunks/{src-CdZhCYdF.js → src-B9CXYA44.js} +3 -3
  56. package/dist/chunks/{src-CdZhCYdF.js.map → src-B9CXYA44.js.map} +1 -1
  57. package/dist/components/account.js +1 -1
  58. package/dist/components/avatar.js +1 -1
  59. package/dist/components/button.js +1 -1
  60. package/dist/components/combobox/Combobox.cjs.js +21 -21
  61. package/dist/components/combobox/Combobox.cjs.js.map +1 -1
  62. package/dist/components/combobox/Combobox.d.ts +30 -3
  63. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  64. package/dist/components/combobox/Combobox.esm.js +268 -107
  65. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  66. package/dist/components/combobox/Combobox.stories.d.ts +54 -0
  67. package/dist/components/combobox/Combobox.stories.d.ts.map +1 -1
  68. package/dist/components/combobox/Combobox.styles.cjs.js +1 -1
  69. package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -1
  70. package/dist/components/combobox/Combobox.styles.esm.js +1 -1
  71. package/dist/components/combobox/Combobox.styles.esm.js.map +1 -1
  72. package/dist/components/combobox/index.cjs.js +1 -1
  73. package/dist/components/combobox/index.cjs.js.map +1 -1
  74. package/dist/components/combobox/index.d.ts +1 -0
  75. package/dist/components/combobox/index.d.ts.map +1 -1
  76. package/dist/components/combobox/index.esm.js +3 -3
  77. package/dist/components/combobox/index.esm.js.map +1 -1
  78. package/dist/components/combobox-option.js +1 -1
  79. package/dist/components/combobox.js +2 -2
  80. package/dist/components/dialog-content.js +1 -1
  81. package/dist/components/dialog-footer.js +1 -1
  82. package/dist/components/dialog-header.js +1 -1
  83. package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
  84. package/dist/components/dialog-provider/DialogProvider.d.ts +2 -1
  85. package/dist/components/dialog-provider/DialogProvider.d.ts.map +1 -1
  86. package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
  87. package/dist/components/dialog-provider.js +1 -1
  88. package/dist/components/dialog.js +1 -1
  89. package/dist/components/dialogs-root.js +1 -1
  90. package/dist/components/guard.js +1 -1
  91. package/dist/components/input/Input.cjs.js +5 -5
  92. package/dist/components/input/Input.cjs.js.map +1 -1
  93. package/dist/components/input/Input.d.ts +1 -1
  94. package/dist/components/input/Input.d.ts.map +1 -1
  95. package/dist/components/input/Input.esm.js +7 -7
  96. package/dist/components/input/Input.esm.js.map +1 -1
  97. package/dist/components/input.js +1 -1
  98. package/dist/components/login-button.js +1 -1
  99. package/dist/components/login-modal.js +1 -1
  100. package/dist/components/logout-button.js +1 -1
  101. package/dist/components/menu-item.js +1 -1
  102. package/dist/components/menu.js +1 -1
  103. package/dist/components/provider/Provider.cjs.js.map +1 -1
  104. package/dist/components/provider/Provider.d.ts +2 -1
  105. package/dist/components/provider/Provider.d.ts.map +1 -1
  106. package/dist/components/provider/Provider.esm.js.map +1 -1
  107. package/dist/components/provider.js +1 -1
  108. package/dist/components/select/Select.cjs.js +7 -6
  109. package/dist/components/select/Select.cjs.js.map +1 -1
  110. package/dist/components/select/Select.d.ts +12 -2
  111. package/dist/components/select/Select.d.ts.map +1 -1
  112. package/dist/components/select/Select.esm.js +96 -65
  113. package/dist/components/select/Select.esm.js.map +1 -1
  114. package/dist/components/select/index.cjs.js.map +1 -1
  115. package/dist/components/select/index.d.ts +1 -0
  116. package/dist/components/select/index.d.ts.map +1 -1
  117. package/dist/components/select/index.esm.js.map +1 -1
  118. package/dist/components/select-option.js +1 -1
  119. package/dist/components/select.js +1 -1
  120. package/dist/components/signup-button.js +1 -1
  121. package/dist/components/solid-emblem.js +1 -1
  122. package/dist/components.js +22 -22
  123. package/dist/index.cjs.js +1 -1
  124. package/dist/index.cjs.js.map +1 -1
  125. package/dist/index.esm.js +2 -2
  126. package/dist/index.js +6 -6
  127. package/dist/lib/components/index.cjs.js +1 -1
  128. package/dist/lib/components/index.esm.js +2 -2
  129. package/dist/lib/components/traits/FormControlTrait.cjs.js +2 -0
  130. package/dist/lib/components/traits/FormControlTrait.cjs.js.map +1 -0
  131. package/dist/lib/components/traits/{InputTrait.d.ts → FormControlTrait.d.ts} +10 -11
  132. package/dist/lib/components/traits/FormControlTrait.d.ts.map +1 -0
  133. package/dist/lib/components/traits/FormControlTrait.esm.js +45 -0
  134. package/dist/lib/components/traits/FormControlTrait.esm.js.map +1 -0
  135. package/dist/lib/components/traits/index.cjs.js +1 -1
  136. package/dist/lib/components/traits/index.d.ts +2 -2
  137. package/dist/lib/components/traits/index.d.ts.map +1 -1
  138. package/dist/lib/components/traits/index.esm.js +2 -2
  139. package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
  140. package/dist/lib/components/web-component/WebComponent.d.ts +2 -2
  141. package/dist/lib/components/web-component/WebComponent.d.ts.map +1 -1
  142. package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
  143. package/dist/lib/timing.cjs.js +2 -0
  144. package/dist/lib/timing.cjs.js.map +1 -0
  145. package/dist/lib/timing.d.ts +6 -0
  146. package/dist/lib/timing.d.ts.map +1 -0
  147. package/dist/lib/timing.esm.js +13 -0
  148. package/dist/lib/timing.esm.js.map +1 -0
  149. package/dist/lib/values.cjs.js +2 -0
  150. package/dist/lib/values.cjs.js.map +1 -0
  151. package/dist/lib/values.d.ts +2 -0
  152. package/dist/lib/values.d.ts.map +1 -0
  153. package/dist/lib/values.esm.js +8 -0
  154. package/dist/lib/values.esm.js.map +1 -0
  155. package/dist/loader.js +6 -6
  156. package/dist/solid-ui.js +91 -90
  157. package/dist/solid-ui.min.js +91 -90
  158. package/dist/solid-ui.min.js.map +1 -1
  159. package/dist/storybook/components/StorybookProvider.d.ts +2 -1
  160. package/dist/storybook/components/StorybookProvider.d.ts.map +1 -1
  161. package/package.json +2 -1
  162. package/dist/chunks/DialogProvider-CrvbR_fd.js.map +0 -1
  163. package/dist/chunks/combobox-BWOPh9dj.js +0 -474
  164. package/dist/chunks/combobox-BWOPh9dj.js.map +0 -1
  165. package/dist/chunks/components-DH1slGZY.js.map +0 -1
  166. package/dist/chunks/input-CVKu3XRI.js.map +0 -1
  167. package/dist/chunks/provider-BfO67dzy.js.map +0 -1
  168. package/dist/chunks/select-DHFgELMJ.js.map +0 -1
  169. package/dist/lib/components/traits/InputTrait.cjs.js +0 -2
  170. package/dist/lib/components/traits/InputTrait.cjs.js.map +0 -1
  171. package/dist/lib/components/traits/InputTrait.d.ts.map +0 -1
  172. package/dist/lib/components/traits/InputTrait.esm.js +0 -45
  173. package/dist/lib/components/traits/InputTrait.esm.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ var e=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:`open`}).innerHTML=`<style>:host { display: inline-flex; }</style><svg viewBox="0 0 24 24" width="100%" height="100%" ><circle cx="4" cy="12" r="3" fill="currentColor"><animate id="SVG7x14Dcom" fill="freeze" attributeName="opacity" begin="0;SVGqSjG0dUp.end-0.25s" dur="0.75s" values="1;.2"/></circle><circle cx="12" cy="12" r="3" fill="currentColor" opacity=".4"><animate fill="freeze" attributeName="opacity" begin="SVG7x14Dcom.begin+0.15s" dur="0.75s" values="1;.2"/></circle><circle cx="20" cy="12" r="3" fill="currentColor" opacity=".3"><animate id="SVGqSjG0dUp" fill="freeze" attributeName="opacity" begin="SVG7x14Dcom.begin+0.3s" dur="0.75s" values="1;.2"/></circle></svg>`}};customElements.get(`icon-svg-spinners-3-dots-fade`)||customElements.define(`icon-svg-spinners-3-dots-fade`,e),exports.default=e;
2
+ //# sourceMappingURL=3-dots-fade.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3-dots-fade.cjs.js","names":[],"sources":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ //#region ~icons/svg-spinners/3-dots-fade
2
+ var e = class extends HTMLElement {
3
+ constructor() {
4
+ super(), this.attachShadow({ mode: "open" }).innerHTML = "<style>:host { display: inline-flex; }</style><svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" ><circle cx=\"4\" cy=\"12\" r=\"3\" fill=\"currentColor\"><animate id=\"SVG7x14Dcom\" fill=\"freeze\" attributeName=\"opacity\" begin=\"0;SVGqSjG0dUp.end-0.25s\" dur=\"0.75s\" values=\"1;.2\"/></circle><circle cx=\"12\" cy=\"12\" r=\"3\" fill=\"currentColor\" opacity=\".4\"><animate fill=\"freeze\" attributeName=\"opacity\" begin=\"SVG7x14Dcom.begin+0.15s\" dur=\"0.75s\" values=\"1;.2\"/></circle><circle cx=\"20\" cy=\"12\" r=\"3\" fill=\"currentColor\" opacity=\".3\"><animate id=\"SVGqSjG0dUp\" fill=\"freeze\" attributeName=\"opacity\" begin=\"SVG7x14Dcom.begin+0.3s\" dur=\"0.75s\" values=\"1;.2\"/></circle></svg>";
5
+ }
6
+ };
7
+ customElements.get("icon-svg-spinners-3-dots-fade") || customElements.define("icon-svg-spinners-3-dots-fade", e);
8
+ //#endregion
9
+ export { e as default };
10
+
11
+ //# sourceMappingURL=3-dots-fade.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3-dots-fade.esm.js","names":[],"sources":[],"mappings":""}
@@ -1,5 +1,5 @@
1
- import { i as e, n as t } from "./context-CA1Kq0FW.js";
2
- import { n, r } from "./components-DH1slGZY.js";
1
+ import { i as e, n as t } from "./context-B_xwK-Y_.js";
2
+ import { n, r } from "./components-PQfnwrHI.js";
3
3
  import { n as i } from "./decorators-BqWyWiL9.js";
4
4
  //#region node_modules/@lit/context/lib/value-notifier.js
5
5
  var a = class {
@@ -316,4 +316,4 @@ _ = (p = i({
316
316
  //#endregion
317
317
  export { c as n, O as t };
318
318
 
319
- //# sourceMappingURL=DialogProvider-CrvbR_fd.js.map
319
+ //# sourceMappingURL=DialogProvider-ge2aA77F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogProvider-ge2aA77F.js","names":["e","t","i","t","customElement","WebComponent","provide","property","dialogContext","_classDecs","_DialogProvider","_A","WeakMap","_B","_ref","_dialogIdDecs","type","String","reflect","_dialogDecs","context","DialogProvider","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_dialogId","_init_dialog","id","_classPrivateFieldGet","dialogId","v","_classPrivateFieldSet","dialog","willUpdate","changedProperties","has","firstUpdated","slot","shadowRoot","querySelector","dispatchEvent","CustomEvent","bubbles","composed","detail","assignedElements","_DialogProvider2","e","c","_initClass","_applyDecs","default"],"sources":["../../node_modules/@lit/context/lib/value-notifier.js","../../node_modules/@lit/context/lib/controllers/context-provider.js","../../node_modules/@lit/context/lib/decorators/provide.js","../../src/components/dialog-provider/DialogProvider.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s{get value(){return this.o}set value(s){this.setValue(s)}setValue(s,t=!1){const i=t||!Object.is(s,this.o);this.o=s,i&&this.updateObservers()}constructor(s){this.subscriptions=new Map,this.updateObservers=()=>{for(const[s,{disposer:t}]of this.subscriptions)s(this.o,t)},void 0!==s&&(this.value=s)}addCallback(s,t,i){if(!i)return void s(this.value);this.subscriptions.has(s)||this.subscriptions.set(s,{disposer:()=>{this.subscriptions.delete(s)},consumerHost:t});const{disposer:h}=this.subscriptions.get(s);s(this.value,h)}clearCallbacks(){this.subscriptions.clear()}}export{s as ValueNotifier};\n//# sourceMappingURL=value-notifier.js.map\n","import{ContextRequestEvent as t}from\"../context-request-event.js\";import{ValueNotifier as s}from\"../value-notifier.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends Event{constructor(t,s){super(\"context-provider\",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=s}}class i extends s{constructor(s,e,i){super(void 0!==e.context?e.initialValue:i),this.onContextRequest=t=>{if(t.context!==this.context)return;const s=t.contextTarget??t.composedPath()[0];s!==this.host&&(t.stopPropagation(),this.addCallback(t.callback,s,t.subscribe))},this.onProviderRequest=s=>{if(s.context!==this.context)return;if((s.contextTarget??s.composedPath()[0])===this.host)return;const e=new Set;for(const[s,{consumerHost:i}]of this.subscriptions)e.has(s)||(e.add(s),i.dispatchEvent(new t(this.context,i,s,!0)));s.stopPropagation()},this.host=s,void 0!==e.context?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener(\"context-request\",this.onContextRequest),this.host.addEventListener(\"context-provider\",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new e(this.context,this.host))}}export{i as ContextProvider,e as ContextProviderEvent};\n//# sourceMappingURL=context-provider.js.map\n","import{ContextProvider as t}from\"../controllers/context-provider.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e({context:e}){return(n,i)=>{const r=new WeakMap;if(\"object\"==typeof i)return{get(){return n.get.call(this)},set(t){return r.get(this).setValue(t),n.set.call(this,t)},init(n){return r.set(this,new t(this,{context:e,initialValue:n})),n}};{n.constructor.addInitializer((n=>{r.set(n,new t(n,{context:e}))}));const o=Object.getOwnPropertyDescriptor(n,i);let s;if(void 0===o){const t=new WeakMap;s={get(){return t.get(this)},set(e){r.get(this).setValue(e),t.set(this,e)},configurable:!0,enumerable:!0}}else{const t=o.set;s={...o,set(e){r.get(this).setValue(e),t?.call(this,e)}}}return void Object.defineProperty(n,i,s)}}}export{e as provide};\n//# sourceMappingURL=provide.js.map\n","import { customElement, WebComponent } from '@/lib/components'\nimport { provide } from '@lit/context'\nimport { property } from 'lit/decorators.js'\nimport { DialogContext, dialogContext } from '@/lib/dialogs/context'\nimport type { PropertyValues } from 'lit'\n\n@customElement('solid-ui-dialog-provider')\nexport default class DialogProvider extends WebComponent {\n @property({ type: String, reflect: true })\n accessor dialogId: string | undefined\n\n @provide({ context: dialogContext })\n private accessor dialog: DialogContext = { id: '' }\n\n protected willUpdate (changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties)\n\n if (changedProperties.has('dialogId') && this.dialogId) {\n this.dialog = { id: this.dialogId }\n }\n }\n\n protected firstUpdated () {\n const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | undefined\n\n this.dispatchEvent(new CustomEvent('mounted', { bubbles: true, composed: true, detail: slot?.assignedElements()[0] }))\n }\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import { c as e, s as t } from "./auth-BI22fz6P.js";
2
- import { i as n } from "./dialog-YaqTwAtR.js";
3
- import { n as r, r as i } from "./components-DH1slGZY.js";
1
+ import { c as e, s as t } from "./auth-D8B5yczR.js";
2
+ import { i as n } from "./dialog-Ujvm11_B.js";
3
+ import { n as r, r as i } from "./components-PQfnwrHI.js";
4
4
  import { c as a, i as o, n as s } from "./lit-C4H1jI4q.js";
5
5
  import { n as c } from "./decorators-BqWyWiL9.js";
6
6
  import "./chevron-down-ujxRg3MD.js";
7
- import "./button-DHahwxqn.js";
8
- import "./avatar-DN7FzC2N.js";
9
- import "./login-button-76PlEs2Y.js";
10
- import "./logout-button-Dt3Utgj0.js";
11
- import "./menu-item-Ckl9f1rG.js";
12
- import "./menu-6ayNsxFG.js";
13
- import "./signup-button-B10K6b8A.js";
7
+ import "./button-oanBb_ha.js";
8
+ import "./avatar-DNGFKkhm.js";
9
+ import "./login-button-Ta3tkpn4.js";
10
+ import "./logout-button-Db6VmUmJ.js";
11
+ import "./menu-item-BHJ4xljI.js";
12
+ import "./menu-CQEXqNO6.js";
13
+ import "./signup-button-wO4uoqUi.js";
14
14
  //#region ~icons/lucide/log-in
15
15
  var l = class extends HTMLElement {
16
16
  constructor() {
@@ -289,4 +289,4 @@ var z = R;
289
289
  //#endregion
290
290
  export { R as n, z as t };
291
291
 
292
- //# sourceMappingURL=account-Ma2Ipfjx.js.map
292
+ //# sourceMappingURL=account-CdqIoTsl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-Ma2Ipfjx.js","names":["consume","html","nothing","property","customElement","WebComponent","authContext","DEFAULT_AUTH_CONTEXT","styles","_classDecs","_Account","_Account2","_A","WeakMap","_B","_ref","_menuItemsDecs","type","Array","_authDecs","context","subscribe","_Account3","Account","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_menuItems","_init_auth","_defineProperty","_classPrivateFieldGet","menuItems","v","_classPrivateFieldSet","auth","connectedCallback","unsubscribeSessionUpdated","onSessionUpdated","requestUpdate","disconnectedCallback","render","account","map","menuItem","href","onSelected","label","e","c","_initClass","_applyDecs","_Class","_identity","loggedIn","component","default","Account"],"sources":["../../src/components/account/Account.styles.css","../../src/components/account/Account.ts","../../src/components/account/index.ts"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: row;\n gap: 10px;\n}\n\n:host([data-state-loggedIn]) {\n --padding: 4px;\n --border-width: 1px;\n --image-size: 1.875rem; /* 30px */\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 5px;\n background-color: var(--solid-ui-color-body-grey);\n padding: var(--padding);\n border-radius: calc((var(--image-size) + 2 * var(--padding) + 2 * var(--border-width)) / 2);\n color: var(--solid-ui-color-white);\n\n solid-ui-avatar {\n width: var(--image-size);\n height: var(--image-size);\n border: var(--border-width) solid var(--solid-ui-color-white);\n border-radius: 50%;\n }\n\n icon-lucide-chevron-down {\n width: 16px;\n height: 16px;\n }\n }\n}\n","import { consume } from '@lit/context'\nimport { html, nothing, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { customElement, WebComponent } from '@/lib/components'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/avatar'\nimport '@/components/button'\nimport '@/components/login-button'\nimport '@/components/logout-button'\nimport '@/components/menu-item'\nimport '@/components/menu'\nimport '@/components/signup-button'\nimport '~icons/lucide/chevron-down'\nimport '~icons/lucide/log-in'\nimport '~icons/lucide/log-out'\nimport '~icons/lucide/user'\n\nimport styles from './Account.styles.css'\n\nexport interface AccountMenuItem {\n label: string | TemplateResult\n href?: string\n onSelected?(): void\n}\n\n@customElement('solid-ui-account')\nexport default class Account extends WebComponent {\n static styles = styles\n static states = {\n loggedIn: (component: Account) => !!component.auth.account,\n }\n\n @property({ type: Array })\n accessor menuItems: AccountMenuItem[] = []\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n private unsubscribeSessionUpdated?: () => void\n\n connectedCallback () {\n super.connectedCallback()\n\n this.unsubscribeSessionUpdated = this.auth.onSessionUpdated(() => this.requestUpdate())\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.unsubscribeSessionUpdated?.()\n }\n\n protected render () {\n if (!this.auth.account) {\n return html`\n <solid-ui-login-button>\n <solid-ui-button slot=\"trigger\">\n <icon-lucide-user slot=\"left-icon\"></icon-lucide-user>\n Log In\n </solid-ui-button>\n </solid-ui-login-button>\n <solid-ui-signup-button>\n <solid-ui-button slot=\"trigger\" variant=\"outline\">\n <icon-lucide-log-in slot=\"left-icon\"></icon-lucide-log-in>\n Sign Up\n </solid-ui-button>\n </solid-ui-signup-button>\n `\n }\n\n return html`\n <solid-ui-menu placement=\"bottom-end\" distance=\"5\">\n <button type=\"button\" slot=\"trigger\">\n <solid-ui-avatar></solid-ui-avatar>\n <icon-lucide-chevron-down slot=\"right-icon\"></icon-lucide-chevron-down>\n </button>\n\n ${this.menuItems.map(menuItem => html`\n <solid-ui-menu-item .href=${menuItem.href ?? nothing} @solid-ui-select=${() => menuItem.onSelected?.()}>\n ${menuItem.label}\n </solid-ui-menu-item>\n `)}\n <solid-ui-logout-button>\n <solid-ui-menu-item slot=\"trigger\">\n <icon-lucide-log-out slot=\"left-icon\"></icon-lucide-log-out>\n Sign out\n </solid-ui-menu-item>\n </solid-ui-logout-button>\n </solid-ui-menu>\n `\n }\n}\n","import Account, { type AccountMenuItem } from './Account'\n\nexport { Account, type AccountMenuItem }\nexport default Account\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACkByCS,IAAA,CAQxCL,EAAc,kBAAkB,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,KAAAC,IAO/Bb,EAAS,EAAEc,MAAMC,MAAM,CAAC,GAACC,IAGzBnB,EAAQ;CAAEoB,SAASd;CAAae,WAAW;AAAK,CAAC,GAAC,cAAAC,IAVrD,cACqCjB,EAAa;CAAAmB,YAAA,GAAAC,GAAA;EAUSK,AAVT,MAAA,GAAAL,CAAA,GAAAC,EAAA,MAAAd,IAAAe,EAAA,IAAA,GAAAC,EAAA,MAOR,CAAA,CAAE,EAAA,GAAAF,EAAA,MAAAZ,GAAAe,EAAA,MAGLtB,CAAoB,CAAA,GAAAuB,EAAA,MAAA,6BAAA,KAAA,CAAA;CAAA;CAAA,KAAAf,KAAA;EAAA,OAAAgB,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAHhDoB,UAASC,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGDE,OAAI;EAAA,OAAAJ,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAAJqB,KAAIF,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAIrBG,oBAAqB;EAGnB,AAFA,MAAMA,kBAAkB,GAExB,KAAKC,4BAA4B,KAAKF,KAAKG,uBAAuB,KAAKC,cAAc,CAAC;CACxF;CAEAC,uBAAwB;EAGtB,AAFA,MAAMA,qBAAqB,GAE3B,KAAKH,4BAA4B;CACnC;CAEUI,SAAU;EAkBlB,OAjBK,KAAKN,KAAKO,UAiBRzC,CAAI;;;;;;;cAOD,KAAK+B,UAAUW,KAAIC,MAAY3C,CAAI;4CACL2C,EAASC,QAAQ3C,EAAO,0BAA2B0C,EAASE,aAAa,EAAC;sBAChGF,EAASG,MAAK;;aAEvB,EAAC;;;;;;;;QA3BD9C,CAAI;;;;;;;;;;;;;;CAoCf;AACF,GAAC,CAAA+C,GAAA,CAAApB,GAAAC,GAAAF,IAAAsB,GAAA,CAAAvC,GAAAwC,MAAAC,EAAA7B,GAAA,CAAA;CAAAN;CAAA;CAAA;AAAA,GAAA;CAAAG;CAAA;CAAA;AAAA,CAAA,GAAAV,GAAA,GAAA,KAAA,GAjEoCJ,CAAY,GAAAiB,IAAA8B,IAAA,cAAAC,EAAA;CAAA7B,cAAA;EAAA,MAAAd,CAAA,GAAAoB,EAAA,MAAA,UAC/BtB,CAAM,GAAAsB,EAAA,MAAA,UACN,EACdwB,WAAWC,MAAuB,CAAC,CAACA,EAAUpB,KAAKO,QACrD,CAAC,GAAAQ,EAAA;CAAA;AAAA,GAAApB,EAAAsB,GAAAzC,GAAA,KAAA,CAAA,GAAAyC,GAAA;;;AC5BH,IAAA,IAAeK"}
1
+ {"version":3,"file":"account-CdqIoTsl.js","names":["consume","html","nothing","property","customElement","WebComponent","authContext","DEFAULT_AUTH_CONTEXT","styles","_classDecs","_Account","_Account2","_A","WeakMap","_B","_ref","_menuItemsDecs","type","Array","_authDecs","context","subscribe","_Account3","Account","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_menuItems","_init_auth","_defineProperty","_classPrivateFieldGet","menuItems","v","_classPrivateFieldSet","auth","connectedCallback","unsubscribeSessionUpdated","onSessionUpdated","requestUpdate","disconnectedCallback","render","account","map","menuItem","href","onSelected","label","e","c","_initClass","_applyDecs","_Class","_identity","loggedIn","component","default","Account"],"sources":["../../src/components/account/Account.styles.css","../../src/components/account/Account.ts","../../src/components/account/index.ts"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: row;\n gap: 10px;\n}\n\n:host([data-state-loggedIn]) {\n --padding: 4px;\n --border-width: 1px;\n --image-size: 1.875rem; /* 30px */\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 5px;\n background-color: var(--solid-ui-color-body-grey);\n padding: var(--padding);\n border-radius: calc((var(--image-size) + 2 * var(--padding) + 2 * var(--border-width)) / 2);\n color: var(--solid-ui-color-white);\n\n solid-ui-avatar {\n width: var(--image-size);\n height: var(--image-size);\n border: var(--border-width) solid var(--solid-ui-color-white);\n border-radius: 50%;\n }\n\n icon-lucide-chevron-down {\n width: 16px;\n height: 16px;\n }\n }\n}\n","import { consume } from '@lit/context'\nimport { html, nothing, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { customElement, WebComponent } from '@/lib/components'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '@/components/avatar'\nimport '@/components/button'\nimport '@/components/login-button'\nimport '@/components/logout-button'\nimport '@/components/menu-item'\nimport '@/components/menu'\nimport '@/components/signup-button'\nimport '~icons/lucide/chevron-down'\nimport '~icons/lucide/log-in'\nimport '~icons/lucide/log-out'\nimport '~icons/lucide/user'\n\nimport styles from './Account.styles.css'\n\nexport interface AccountMenuItem {\n label: string | TemplateResult\n href?: string\n onSelected?(): void\n}\n\n@customElement('solid-ui-account')\nexport default class Account extends WebComponent {\n static styles = styles\n static states = {\n loggedIn: (component: Account) => !!component.auth.account,\n }\n\n @property({ type: Array })\n accessor menuItems: AccountMenuItem[] = []\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n private unsubscribeSessionUpdated?: () => void\n\n connectedCallback () {\n super.connectedCallback()\n\n this.unsubscribeSessionUpdated = this.auth.onSessionUpdated(() => this.requestUpdate())\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.unsubscribeSessionUpdated?.()\n }\n\n protected render () {\n if (!this.auth.account) {\n return html`\n <solid-ui-login-button>\n <solid-ui-button slot=\"trigger\">\n <icon-lucide-user slot=\"left-icon\"></icon-lucide-user>\n Log In\n </solid-ui-button>\n </solid-ui-login-button>\n <solid-ui-signup-button>\n <solid-ui-button slot=\"trigger\" variant=\"outline\">\n <icon-lucide-log-in slot=\"left-icon\"></icon-lucide-log-in>\n Sign Up\n </solid-ui-button>\n </solid-ui-signup-button>\n `\n }\n\n return html`\n <solid-ui-menu placement=\"bottom-end\" distance=\"5\">\n <button type=\"button\" slot=\"trigger\">\n <solid-ui-avatar></solid-ui-avatar>\n <icon-lucide-chevron-down slot=\"right-icon\"></icon-lucide-chevron-down>\n </button>\n\n ${this.menuItems.map(menuItem => html`\n <solid-ui-menu-item .href=${menuItem.href ?? nothing} @solid-ui-select=${() => menuItem.onSelected?.()}>\n ${menuItem.label}\n </solid-ui-menu-item>\n `)}\n <solid-ui-logout-button>\n <solid-ui-menu-item slot=\"trigger\">\n <icon-lucide-log-out slot=\"left-icon\"></icon-lucide-log-out>\n Sign out\n </solid-ui-menu-item>\n </solid-ui-logout-button>\n </solid-ui-menu>\n `\n }\n}\n","import Account, { type AccountMenuItem } from './Account'\n\nexport { Account, type AccountMenuItem }\nexport default Account\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACkByCS,IAAA,CAQxCL,EAAc,kBAAkB,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,KAAAC,IAO/Bb,EAAS,EAAEc,MAAMC,MAAM,CAAC,GAACC,IAGzBnB,EAAQ;CAAEoB,SAASd;CAAae,WAAW;AAAK,CAAC,GAAC,cAAAC,IAVrD,cACqCjB,EAAa;CAAAmB,YAAA,GAAAC,GAAA;EAUSK,AAVT,MAAA,GAAAL,CAAA,GAAAC,EAAA,MAAAd,IAAAe,EAAA,IAAA,GAAAC,EAAA,MAOR,CAAA,CAAE,EAAA,GAAAF,EAAA,MAAAZ,GAAAe,EAAA,MAGLtB,CAAoB,CAAA,GAAAuB,EAAA,MAAA,6BAAA,KAAA,CAAA;CAAA;CAAA,KAAAf,KAAA;EAAA,OAAAgB,EAAAnB,GAAA,IAAA;CAAA;CAAA,IAHhDoB,UAASC,GAAA;EAAAC,EAAAtB,GAAA,MAAAqB,CAAA;CAAA;CAAA,IAGDE,OAAI;EAAA,OAAAJ,EAAAjB,GAAA,IAAA;CAAA;CAAA,IAAJqB,KAAIF,GAAA;EAAAC,EAAApB,GAAA,MAAAmB,CAAA;CAAA;CAIrBG,oBAAqB;EAGnB,AAFA,MAAMA,kBAAkB,GAExB,KAAKC,4BAA4B,KAAKF,KAAKG,uBAAuB,KAAKC,cAAc,CAAC;CACxF;CAEAC,uBAAwB;EAGtB,AAFA,MAAMA,qBAAqB,GAE3B,KAAKH,4BAA4B;CACnC;CAEUI,SAAU;EAkBlB,OAjBK,KAAKN,KAAKO,UAiBRzC,CAAI;;;;;;;cAOD,KAAK+B,UAAUW,KAAIC,MAAY3C,CAAI;4CACL2C,EAASC,QAAQ3C,EAAO,0BAA2B0C,EAASE,aAAa,EAAC;sBAChGF,EAASG,MAAK;;aAEvB,EAAC;;;;;;;;QA3BD9C,CAAI;;;;;;;;;;;;;;CAoCf;AACF,GAAC,CAAA+C,GAAA,CAAApB,GAAAC,GAAAF,IAAAsB,GAAA,CAAAvC,GAAAwC,MAAAC,EAAA7B,GAAA,CAAA;CAAAN;CAAA;CAAA;AAAA,GAAA;CAAAG;CAAA;CAAA;AAAA,CAAA,GAAAV,GAAA,GAAA,KAAA,GAjEoCJ,CAAY,GAAAiB,IAAA8B,IAAA,cAAAC,EAAA;CAAA7B,cAAA;EAAA,MAAAd,CAAA,GAAAoB,EAAA,MAAA,UAC/BtB,CAAM,GAAAsB,EAAA,MAAA,UACN,EACdwB,WAAWC,MAAuB,CAAC,CAACA,EAAUpB,KAAKO,QACrD,CAAC,GAAAQ,EAAA;CAAA;AAAA,GAAApB,EAAAsB,GAAAzC,GAAA,KAAA,CAAA,GAAAyC,GAAA;;;AC5BH,IAAA,IAAeK"}
@@ -1,17 +1,17 @@
1
1
  import { f as e, h as t, p as n, u as r } from "./solid-logic.esm-BrMdCG2_.js";
2
- import { r as i } from "./context-CA1Kq0FW.js";
3
- import { i as a } from "./dialog-YaqTwAtR.js";
4
- import { i as o, n as s, r as c } from "./components-DH1slGZY.js";
2
+ import { r as i } from "./context-B_xwK-Y_.js";
3
+ import { i as a } from "./dialog-Ujvm11_B.js";
4
+ import { i as o, n as s, r as c } from "./components-PQfnwrHI.js";
5
5
  import { c as l, i as u, n as d } from "./lit-C4H1jI4q.js";
6
6
  import { t as f } from "./show-dialog-eEW5yRBv.js";
7
7
  import { n as p, t as m } from "./decorators-BqWyWiL9.js";
8
8
  import { t as h } from "./query-BYu9q8lA.js";
9
9
  import "./chevron-down-ujxRg3MD.js";
10
- import "./button-DHahwxqn.js";
11
- import "./dialog-content-B3I3H7hj.js";
12
- import "./dialog-footer-BjcYeVhg.js";
13
- import "./combobox-BWOPh9dj.js";
14
- import "./combobox-option-DB6KGb7o.js";
10
+ import "./button-oanBb_ha.js";
11
+ import "./dialog-content-CEITrC59.js";
12
+ import "./dialog-footer-DVLEK5bU.js";
13
+ import "./combobox-Dav1bNHS.js";
14
+ import "./combobox-option-DxJvAZ_Q.js";
15
15
  //#region src/lib/auth/Account.ts
16
16
  var g = class {
17
17
  webId;
@@ -411,4 +411,4 @@ var ue = class {
411
411
  //#endregion
412
412
  export { x as a, y as c, $ as i, _ as l, ue as n, b as o, se as r, v as s, ce as t, g as u };
413
413
 
414
- //# sourceMappingURL=auth-BI22fz6P.js.map
414
+ //# sourceMappingURL=auth-D8B5yczR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-BI22fz6P.js","names":["Account","webId","avatarUrl","constructor","NoopAuth","account","login","Error","signup","logout","onSessionUpdated","undefined","createContext","NoopAuth","DEFAULT_AUTH_CONTEXT","authContext","Symbol","generateId","Dialog","id","template","element","config","_resolveElement","constructor","Promise","resolve","setElement","closed","data","onClose","ShowDialogEvent","Dialog","showDialog","template","config","dialog","document","dispatchEvent","element","customElement","WebComponent","html","nothing","consume","property","query","state","authContext","DEFAULT_AUTH_CONTEXT","getSuggestedIssuers","styles","_classDecs","_LoginModal","_LoginModal2","_A","WeakMap","_B","_C","_D","_E","_F","_ref","_issuerUrlDecs","type","String","reflect","_issuerInputValueDecs","_failedDecs","_submittingDecs","_authDecs","context","subscribe","_dialogDecs","_LoginModal3","LoginModal","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_issuerUrl","_init_issuerInputValue","_init_failed","_init_submitting","_init_auth","_init_dialog","_classPrivateFieldGet","issuerUrl","v","_classPrivateFieldSet","issuerInputValue","failed","submitting","auth","dialog","connectedCallback","localStorage","getItem","render","suggestedIssuers","onSubmit","onIssuerInputChange","map","issuer","uri","name","close","e","target","value","preventDefault","login","error","console","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","LoginModal","authSession","solidLogicSingleton","Account","showDialog","html","ns","DEFAULT_SIGNUP_URL","findAccountImage","webId","store","me","sym","image","any","sioc","foaf","vcard","value","undefined","SolidAuth","constructor","signupUrl","account","info","isActive","isLoggedIn","Boolean","avatarUrl","login","loginUrl","updater","flagAuthorizationMetadata","preLoginRedirectHash","URL","window","location","href","hash","localStorage","setItem","locationUrl","signup","open","logout","onSessionUpdated","callback","sessionEventTarget","listener","addEventListener","events","on","removeEventListener","off"],"sources":["../../src/lib/auth/Account.ts","../../src/lib/auth/NoopAuth.ts","../../src/lib/auth/context.ts","../../src/lib/dialogs/Dialog.ts","../../src/lib/dialogs/helpers.ts","../../src/components/login-modal/LoginModal.styles.css","../../src/components/login-modal/LoginModal.ts","../../src/components/login-modal/index.ts","../../src/lib/auth/SolidAuth.ts"],"sourcesContent":["export default class Account {\n public readonly webId: string\n public readonly avatarUrl?: string\n\n constructor (webId: string, avatarUrl?: string) {\n this.webId = webId\n this.avatarUrl = avatarUrl\n }\n}\n","import { AuthContext } from './context'\nimport Account from './Account'\n\nexport default class NoopAuth implements AuthContext {\n get account (): Account | null {\n return null\n }\n\n async login () {\n throw new Error('Can\\'t use auth, missing context provider')\n }\n\n async signup () {\n throw new Error('Can\\'t use auth, missing context provider')\n }\n\n async logout () {\n throw new Error('Can\\'t use auth, missing context provider')\n }\n\n onSessionUpdated () {\n return () => undefined\n }\n}\n","import { createContext } from '@lit/context'\nimport NoopAuth from './NoopAuth'\nimport Account from './Account'\n\nexport interface AuthContext {\n account: Account | null;\n login(loginUrl?: string): Promise<void>;\n signup(): Promise<void>;\n logout(): Promise<void>;\n onSessionUpdated(callback: () => unknown): () => void;\n}\n\nexport const DEFAULT_AUTH_CONTEXT = new NoopAuth()\nexport const authContext = createContext<AuthContext>(Symbol('auth'))\n","import { TemplateResult } from 'lit'\nimport { generateId } from '@/lib/components'\n\nexport interface DialogConfig {\n onClose?(data?: unknown): void\n}\n\nexport default class Dialog {\n public readonly id: string\n public readonly template: TemplateResult\n public readonly element: Promise<HTMLElement>\n public readonly config: DialogConfig\n private _resolveElement!: (element: HTMLElement) => void\n\n constructor (template: TemplateResult, config: DialogConfig = {}) {\n this.id = generateId()\n this.template = template\n this.config = config\n this.element = new Promise(resolve => {\n this._resolveElement = resolve\n })\n }\n\n setElement (element: HTMLElement) {\n this._resolveElement(element)\n }\n\n closed (data?: unknown) {\n this.config.onClose?.(data)\n }\n}\n","import { TemplateResult } from 'lit'\nimport { ShowDialogEvent } from './events/show-dialog'\nimport Dialog, { DialogConfig } from './Dialog'\n\nexport function showDialog<T extends HTMLElement = HTMLElement> (template: TemplateResult, config: DialogConfig = {}): Promise<T> {\n const dialog = new Dialog(template, config)\n\n document.dispatchEvent(new ShowDialogEvent(dialog))\n\n return dialog.element as Promise<T>\n}\n",".error-message {\n color: var(--solid-ui-color-error);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 500;\n text-align: center;\n width: 100%;\n}\n\nsolid-ui-combobox {\n width: 100%;\n}\n\nsolid-ui-button {\n flex: 1;\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { consume } from '@lit/context'\nimport { property, query, state } from 'lit/decorators.js'\nimport { AuthContext, authContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\nimport { getSuggestedIssuers } from 'solid-logic'\nimport type Dialog from '@/components/dialog'\nimport type Combobox from '@/components/combobox'\n\nimport '~icons/lucide/chevron-down'\nimport '@/components/dialog'\nimport '@/components/dialog-content'\nimport '@/components/dialog-footer'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\n\nimport styles from './LoginModal.styles.css'\n\n@customElement('solid-ui-login-modal')\nexport default class LoginModal extends WebComponent {\n static styles = styles\n\n @property({ type: String, reflect: true })\n accessor issuerUrl = ''\n\n @state()\n private accessor issuerInputValue = ''\n\n @state()\n private accessor failed: boolean = false\n\n @state()\n private accessor submitting: boolean = false\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n @query('solid-ui-dialog')\n private accessor dialog: Dialog | null = null\n\n connectedCallback () {\n super.connectedCallback()\n\n this.issuerInputValue = (typeof localStorage !== 'undefined' && localStorage.getItem('loginIssuer')) || this.issuerUrl || ''\n }\n\n protected render () {\n const suggestedIssuers = getSuggestedIssuers()\n\n return html`\n <solid-ui-dialog title=\"Select an identity provider\">\n <form @submit=${this.onSubmit}>\n <solid-ui-dialog-content>\n <solid-ui-combobox label=\"Solid Identity Provider\" .value=${this.issuerInputValue} @input=${this.onIssuerInputChange}>\n ${suggestedIssuers.map(issuer => html`<solid-ui-combobox-option value=\"${issuer.uri}\">${issuer.name}</solid-ui-combobox-option>`)}\n </solid-ui-combobox>\n\n ${this.failed ? html`<p class=\"error-message\">Something went wrong</p>` : nothing}\n </solid-ui-dialog-content>\n\n <solid-ui-dialog-footer>\n <solid-ui-button\n variant=\"secondary\"\n @click=\"${() => this.dialog?.close()}\"\n >\n Cancel\n </solid-ui-button>\n <solid-ui-button\n ?disabled=${!this.issuerInputValue || this.submitting}\n ?loading=${this.submitting}\n type=\"submit\"\n >\n Login\n </solid-ui-button>\n </solid-ui-dialog-footer>\n </form>\n </solid-ui-dialog>\n `\n }\n\n private onIssuerInputChange (e: Event) {\n this.issuerInputValue = (e.target as Combobox).value\n }\n\n private async onSubmit (e: Event) {\n e.preventDefault()\n\n this.failed = false\n\n if (!this.issuerInputValue) {\n return\n }\n\n this.submitting = true\n\n try {\n await this.auth.login(this.issuerInputValue)\n } catch (error) {\n console.error(error)\n\n this.failed = true\n } finally {\n this.submitting = false\n }\n }\n}\n","import LoginModal from './LoginModal'\n\nexport { LoginModal }\nexport default LoginModal\n","import { authSession, solidLogicSingleton } from 'solid-logic'\nimport Account from '@/lib/auth/Account'\nimport { AuthContext } from '@/lib/auth'\nimport { showDialog } from '@/lib/dialogs'\nimport { html } from 'lit'\nimport ns from '@/lib/ns'\n\nimport '@/components/login-modal'\n\nexport const DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod'\n\nfunction findAccountImage (webId: string): string | undefined {\n const store = solidLogicSingleton.store\n const me = store.sym(webId)\n const image =\n store.any(me, ns.sioc('avatar')) ||\n store.any(me, ns.foaf('img')) ||\n store.any(me, ns.vcard('logo')) ||\n store.any(me, ns.vcard('hasPhoto')) ||\n store.any(me, ns.vcard('photo')) ||\n store.any(me, ns.foaf('depiction'))\n\n return image ? (image as any).value : undefined\n}\n\nexport default class SolidAuth implements AuthContext {\n constructor (public signupUrl: string = DEFAULT_SIGNUP_URL) {}\n\n get account (): Account | null {\n const webId: string | undefined = authSession.webId ?? authSession.info?.webId\n const isActive: boolean = authSession.isActive ?? authSession.info?.isLoggedIn ?? Boolean(webId)\n if (!isActive || !webId) {\n return null\n }\n\n const avatarUrl = findAccountImage(webId)\n\n return new Account(webId, avatarUrl)\n }\n\n async login (loginUrl?: string) {\n if (!loginUrl) {\n showDialog(html`<solid-ui-login-modal></solid-ui-login-modal>`)\n\n return\n }\n\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', loginUrl)\n\n const locationUrl = new URL(window.location.href)\n\n locationUrl.hash = ''\n\n await authSession.login(loginUrl, locationUrl.href)\n }\n\n async signup () {\n window.open(this.signupUrl, '_blank', 'noopener,noreferrer')\n }\n\n async logout () {\n await authSession.logout()\n }\n\n onSessionUpdated (callback: () => unknown) {\n const sessionEventTarget = authSession as unknown as EventTarget\n const listener = () => {\n callback()\n }\n if (typeof sessionEventTarget.addEventListener === 'function') {\n sessionEventTarget.addEventListener('sessionStateChange', listener)\n } else {\n authSession.events.on('login', callback)\n authSession.events.on('logout', callback)\n authSession.events.on('sessionRestore', callback)\n }\n\n return () => {\n if (typeof sessionEventTarget.removeEventListener === 'function') {\n sessionEventTarget.removeEventListener('sessionStateChange', listener)\n } else {\n authSession.events.off('login', callback)\n authSession.events.off('logout', callback)\n authSession.events.off('sessionRestore', callback)\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"auth-D8B5yczR.js","names":["Account","webId","avatarUrl","constructor","NoopAuth","account","login","Error","signup","logout","onSessionUpdated","undefined","createContext","NoopAuth","DEFAULT_AUTH_CONTEXT","authContext","Symbol","generateId","Dialog","id","template","element","config","_resolveElement","constructor","Promise","resolve","setElement","closed","data","onClose","ShowDialogEvent","Dialog","showDialog","template","config","dialog","document","dispatchEvent","element","customElement","WebComponent","html","nothing","consume","property","query","state","authContext","DEFAULT_AUTH_CONTEXT","getSuggestedIssuers","styles","_classDecs","_LoginModal","_LoginModal2","_A","WeakMap","_B","_C","_D","_E","_F","_ref","_issuerUrlDecs","type","String","reflect","_issuerInputValueDecs","_failedDecs","_submittingDecs","_authDecs","context","subscribe","_dialogDecs","_LoginModal3","LoginModal","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_issuerUrl","_init_issuerInputValue","_init_failed","_init_submitting","_init_auth","_init_dialog","_classPrivateFieldGet","issuerUrl","v","_classPrivateFieldSet","issuerInputValue","failed","submitting","auth","dialog","connectedCallback","localStorage","getItem","render","suggestedIssuers","onSubmit","onIssuerInputChange","map","issuer","uri","name","close","e","target","value","preventDefault","login","error","console","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","LoginModal","authSession","solidLogicSingleton","Account","showDialog","html","ns","DEFAULT_SIGNUP_URL","findAccountImage","webId","store","me","sym","image","any","sioc","foaf","vcard","value","undefined","SolidAuth","constructor","signupUrl","account","info","isActive","isLoggedIn","Boolean","avatarUrl","login","loginUrl","updater","flagAuthorizationMetadata","preLoginRedirectHash","URL","window","location","href","hash","localStorage","setItem","locationUrl","signup","open","logout","onSessionUpdated","callback","sessionEventTarget","listener","addEventListener","events","on","removeEventListener","off"],"sources":["../../src/lib/auth/Account.ts","../../src/lib/auth/NoopAuth.ts","../../src/lib/auth/context.ts","../../src/lib/dialogs/Dialog.ts","../../src/lib/dialogs/helpers.ts","../../src/components/login-modal/LoginModal.styles.css","../../src/components/login-modal/LoginModal.ts","../../src/components/login-modal/index.ts","../../src/lib/auth/SolidAuth.ts"],"sourcesContent":["export default class Account {\n public readonly webId: string\n public readonly avatarUrl?: string\n\n constructor (webId: string, avatarUrl?: string) {\n this.webId = webId\n this.avatarUrl = avatarUrl\n }\n}\n","import { AuthContext } from './context'\nimport Account from './Account'\n\nexport default class NoopAuth implements AuthContext {\n get account (): Account | null {\n return null\n }\n\n async login () {\n throw new Error('Can\\'t use auth, missing context provider')\n }\n\n async signup () {\n throw new Error('Can\\'t use auth, missing context provider')\n }\n\n async logout () {\n throw new Error('Can\\'t use auth, missing context provider')\n }\n\n onSessionUpdated () {\n return () => undefined\n }\n}\n","import { createContext } from '@lit/context'\nimport NoopAuth from './NoopAuth'\nimport Account from './Account'\n\nexport interface AuthContext {\n account: Account | null;\n login(loginUrl?: string): Promise<void>;\n signup(): Promise<void>;\n logout(): Promise<void>;\n onSessionUpdated(callback: () => unknown): () => void;\n}\n\nexport const DEFAULT_AUTH_CONTEXT = new NoopAuth()\nexport const authContext = createContext<AuthContext>(Symbol('auth'))\n","import { TemplateResult } from 'lit'\nimport { generateId } from '@/lib/components'\n\nexport interface DialogConfig {\n onClose?(data?: unknown): void\n}\n\nexport default class Dialog {\n public readonly id: string\n public readonly template: TemplateResult\n public readonly element: Promise<HTMLElement>\n public readonly config: DialogConfig\n private _resolveElement!: (element: HTMLElement) => void\n\n constructor (template: TemplateResult, config: DialogConfig = {}) {\n this.id = generateId()\n this.template = template\n this.config = config\n this.element = new Promise(resolve => {\n this._resolveElement = resolve\n })\n }\n\n setElement (element: HTMLElement) {\n this._resolveElement(element)\n }\n\n closed (data?: unknown) {\n this.config.onClose?.(data)\n }\n}\n","import { TemplateResult } from 'lit'\nimport { ShowDialogEvent } from './events/show-dialog'\nimport Dialog, { DialogConfig } from './Dialog'\n\nexport function showDialog<T extends HTMLElement = HTMLElement> (template: TemplateResult, config: DialogConfig = {}): Promise<T> {\n const dialog = new Dialog(template, config)\n\n document.dispatchEvent(new ShowDialogEvent(dialog))\n\n return dialog.element as Promise<T>\n}\n",".error-message {\n color: var(--solid-ui-color-error);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 500;\n text-align: center;\n width: 100%;\n}\n\nsolid-ui-combobox {\n width: 100%;\n}\n\nsolid-ui-button {\n flex: 1;\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { consume } from '@lit/context'\nimport { property, query, state } from 'lit/decorators.js'\nimport { AuthContext, authContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\nimport { getSuggestedIssuers } from 'solid-logic'\nimport type Dialog from '@/components/dialog'\nimport type Combobox from '@/components/combobox'\n\nimport '~icons/lucide/chevron-down'\nimport '@/components/dialog'\nimport '@/components/dialog-content'\nimport '@/components/dialog-footer'\nimport '@/components/button'\nimport '@/components/combobox'\nimport '@/components/combobox-option'\n\nimport styles from './LoginModal.styles.css'\n\n@customElement('solid-ui-login-modal')\nexport default class LoginModal extends WebComponent {\n static styles = styles\n\n @property({ type: String, reflect: true })\n accessor issuerUrl = ''\n\n @state()\n private accessor issuerInputValue = ''\n\n @state()\n private accessor failed: boolean = false\n\n @state()\n private accessor submitting: boolean = false\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n @query('solid-ui-dialog')\n private accessor dialog: Dialog | null = null\n\n connectedCallback () {\n super.connectedCallback()\n\n this.issuerInputValue = (typeof localStorage !== 'undefined' && localStorage.getItem('loginIssuer')) || this.issuerUrl || ''\n }\n\n protected render () {\n const suggestedIssuers = getSuggestedIssuers()\n\n return html`\n <solid-ui-dialog title=\"Select an identity provider\">\n <form @submit=${this.onSubmit}>\n <solid-ui-dialog-content>\n <solid-ui-combobox label=\"Solid Identity Provider\" .value=${this.issuerInputValue} @input=${this.onIssuerInputChange}>\n ${suggestedIssuers.map(issuer => html`<solid-ui-combobox-option value=\"${issuer.uri}\">${issuer.name}</solid-ui-combobox-option>`)}\n </solid-ui-combobox>\n\n ${this.failed ? html`<p class=\"error-message\">Something went wrong</p>` : nothing}\n </solid-ui-dialog-content>\n\n <solid-ui-dialog-footer>\n <solid-ui-button\n variant=\"secondary\"\n @click=\"${() => this.dialog?.close()}\"\n >\n Cancel\n </solid-ui-button>\n <solid-ui-button\n ?disabled=${!this.issuerInputValue || this.submitting}\n ?loading=${this.submitting}\n type=\"submit\"\n >\n Login\n </solid-ui-button>\n </solid-ui-dialog-footer>\n </form>\n </solid-ui-dialog>\n `\n }\n\n private onIssuerInputChange (e: Event) {\n this.issuerInputValue = (e.target as Combobox).value\n }\n\n private async onSubmit (e: Event) {\n e.preventDefault()\n\n this.failed = false\n\n if (!this.issuerInputValue) {\n return\n }\n\n this.submitting = true\n\n try {\n await this.auth.login(this.issuerInputValue)\n } catch (error) {\n console.error(error)\n\n this.failed = true\n } finally {\n this.submitting = false\n }\n }\n}\n","import LoginModal from './LoginModal'\n\nexport { LoginModal }\nexport default LoginModal\n","import { authSession, solidLogicSingleton } from 'solid-logic'\nimport Account from '@/lib/auth/Account'\nimport { AuthContext } from '@/lib/auth'\nimport { showDialog } from '@/lib/dialogs'\nimport { html } from 'lit'\nimport ns from '@/lib/ns'\n\nimport '@/components/login-modal'\n\nexport const DEFAULT_SIGNUP_URL = 'https://solidproject.org/get_a_pod'\n\nfunction findAccountImage (webId: string): string | undefined {\n const store = solidLogicSingleton.store\n const me = store.sym(webId)\n const image =\n store.any(me, ns.sioc('avatar')) ||\n store.any(me, ns.foaf('img')) ||\n store.any(me, ns.vcard('logo')) ||\n store.any(me, ns.vcard('hasPhoto')) ||\n store.any(me, ns.vcard('photo')) ||\n store.any(me, ns.foaf('depiction'))\n\n return image ? (image as any).value : undefined\n}\n\nexport default class SolidAuth implements AuthContext {\n constructor (public signupUrl: string = DEFAULT_SIGNUP_URL) {}\n\n get account (): Account | null {\n const webId: string | undefined = authSession.webId ?? authSession.info?.webId\n const isActive: boolean = authSession.isActive ?? authSession.info?.isLoggedIn ?? Boolean(webId)\n if (!isActive || !webId) {\n return null\n }\n\n const avatarUrl = findAccountImage(webId)\n\n return new Account(webId, avatarUrl)\n }\n\n async login (loginUrl?: string) {\n if (!loginUrl) {\n showDialog(html`<solid-ui-login-modal></solid-ui-login-modal>`)\n\n return\n }\n\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', loginUrl)\n\n const locationUrl = new URL(window.location.href)\n\n locationUrl.hash = ''\n\n await authSession.login(loginUrl, locationUrl.href)\n }\n\n async signup () {\n window.open(this.signupUrl, '_blank', 'noopener,noreferrer')\n }\n\n async logout () {\n await authSession.logout()\n }\n\n onSessionUpdated (callback: () => unknown) {\n const sessionEventTarget = authSession as unknown as EventTarget\n const listener = () => {\n callback()\n }\n if (typeof sessionEventTarget.addEventListener === 'function') {\n sessionEventTarget.addEventListener('sessionStateChange', listener)\n } else {\n authSession.events.on('login', callback)\n authSession.events.on('logout', callback)\n authSession.events.on('sessionRestore', callback)\n }\n\n return () => {\n if (typeof sessionEventTarget.removeEventListener === 'function') {\n sessionEventTarget.removeEventListener('sessionStateChange', listener)\n } else {\n authSession.events.off('login', callback)\n authSession.events.off('logout', callback)\n authSession.events.off('sessionRestore', callback)\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { c as e, s as t } from "./auth-BI22fz6P.js";
2
- import { i as n } from "./dialog-YaqTwAtR.js";
3
- import { n as r, r as i } from "./components-DH1slGZY.js";
1
+ import { c as e, s as t } from "./auth-D8B5yczR.js";
2
+ import { i as n } from "./dialog-Ujvm11_B.js";
3
+ import { n as r, r as i } from "./components-PQfnwrHI.js";
4
4
  import { c as a, i as o } from "./lit-C4H1jI4q.js";
5
5
  //#region ~icons/lucide/circle-user
6
6
  var s = class extends HTMLElement {
@@ -220,4 +220,4 @@ var M = j;
220
220
  //#endregion
221
221
  export { j as n, M as t };
222
222
 
223
- //# sourceMappingURL=avatar-DN7FzC2N.js.map
223
+ //# sourceMappingURL=avatar-DNGFKkhm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-DN7FzC2N.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","styles","_classDecs","_Avatar","_Avatar2","_A","WeakMap","_ref","_authDecs","context","subscribe","_Avatar3","Avatar","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","render","account","avatarUrl","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","fallback","component","default","Avatar"],"sources":["../../src/components/avatar/Avatar.styles.css","../../src/components/avatar/Avatar.ts","../../src/components/avatar/index.ts"],"sourcesContent":[":host {\n --size: 150px;\n\n display: inline-flex;\n overflow: hidden;\n width: var(--size);\n height: var(--size);\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n}\n\n:host([data-state-fallback]) {\n background: var(--solid-ui-color-gray-100);\n justify-content: center;\n align-items: center;\n\n icon-lucide-circle-user {\n color: var(--solid-ui-color-gray-200);\n width: 50%;\n height: 50%;\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '~icons/lucide/circle-user'\n\nimport styles from './Avatar.styles.css'\n\n@customElement('solid-ui-avatar')\nexport default class Avatar extends WebComponent {\n static styles = styles\n static states = {\n fallback: (component: Avatar) => !component.auth.account?.avatarUrl,\n }\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n protected render () {\n if (!this.auth.account?.avatarUrl) {\n return html`\n <icon-lucide-circle-user></icon-lucide-circle-user>\n `\n }\n\n return html`\n <img src=\"${this.auth.account?.avatarUrl}\" alt=\"\" />\n `\n }\n}\n","import Avatar from './Avatar'\n\nexport { Avatar }\nexport default Avatar\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOwCO,IAAA,CAEvCP,EAAc,iBAAiB,CAAC;AAAA,IAAAQ;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,KAAAC,IAO9BX,EAAQ;CAAEY,SAASV;CAAaW,WAAW;AAAK,CAAC,GAAC,SAAAC,IAPrD,cACoCf,EAAa;CAAAiB,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAV,IAAAW,EAAA,IAAA,GAAAC,EAAA,MAOVjB,CAAoB,EAAA;CAAA;CAAA,KAAAO,KAAA;EAAA,OAAAW,EAAAb,GAAA,IAAA;CAAA;CAAA,IAAxCc,KAAIC,GAAA;EAAAC,EAAAhB,GAAA,MAAAe,CAAA;CAAA;CAEXE,SAAU;EAOlB,OANK,KAAKH,KAAKI,SAASC,YAMjB1B,CAAI;oBACK,KAAKqB,KAAKI,SAASC,UAAS;QANnC1B,CAAI;;;CAQf;AACF,GAAC,CAAA2B,GAAA,CAAAR,GAAAD,IAAAU,GAAA,CAAAvB,GAAAwB,MAAAC,EAAAjB,GAAA,CAAA;CAAAH;CAAA;CAAA;AAAA,CAAA,GAAAN,GAAA,GAAA,KAAA,GApBmCN,CAAY,GAAAe,IAAAkB,IAAA,cAAAC,EAAA;CAAAjB,cAAA;EAAA,MAAAV,CAAA,GAAA4B,EAAA,MAAA,UAC9B9B,CAAM,GAAA8B,EAAA,MAAA,UACN,EACdC,WAAWC,MAAsB,CAACA,EAAUd,KAAKI,SAASC,UAC5D,CAAC,GAAAG,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAAzB,GAAA,KAAA,CAAA,GAAAyB,GAAA;;;ACXH,IAAA,IAAeM"}
1
+ {"version":3,"file":"avatar-DNGFKkhm.js","names":["customElement","WebComponent","consume","html","authContext","DEFAULT_AUTH_CONTEXT","styles","_classDecs","_Avatar","_Avatar2","_A","WeakMap","_ref","_authDecs","context","subscribe","_Avatar3","Avatar","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_auth","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","render","account","avatarUrl","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","fallback","component","default","Avatar"],"sources":["../../src/components/avatar/Avatar.styles.css","../../src/components/avatar/Avatar.ts","../../src/components/avatar/index.ts"],"sourcesContent":[":host {\n --size: 150px;\n\n display: inline-flex;\n overflow: hidden;\n width: var(--size);\n height: var(--size);\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n}\n\n:host([data-state-fallback]) {\n background: var(--solid-ui-color-gray-100);\n justify-content: center;\n align-items: center;\n\n icon-lucide-circle-user {\n color: var(--solid-ui-color-gray-200);\n width: 50%;\n height: 50%;\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { consume } from '@lit/context'\nimport { html } from 'lit'\nimport { authContext, AuthContext, DEFAULT_AUTH_CONTEXT } from '@/lib/auth'\n\nimport '~icons/lucide/circle-user'\n\nimport styles from './Avatar.styles.css'\n\n@customElement('solid-ui-avatar')\nexport default class Avatar extends WebComponent {\n static styles = styles\n static states = {\n fallback: (component: Avatar) => !component.auth.account?.avatarUrl,\n }\n\n @consume({ context: authContext, subscribe: true })\n private accessor auth: AuthContext = DEFAULT_AUTH_CONTEXT\n\n protected render () {\n if (!this.auth.account?.avatarUrl) {\n return html`\n <icon-lucide-circle-user></icon-lucide-circle-user>\n `\n }\n\n return html`\n <img src=\"${this.auth.account?.avatarUrl}\" alt=\"\" />\n `\n }\n}\n","import Avatar from './Avatar'\n\nexport { Avatar }\nexport default Avatar\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOwCO,IAAA,CAEvCP,EAAc,iBAAiB,CAAC;AAAA,IAAAQ;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,KAAAC,IAO9BX,EAAQ;CAAEY,SAASV;CAAaW,WAAW;AAAK,CAAC,GAAC,SAAAC,IAPrD,cACoCf,EAAa;CAAAiB,YAAA,GAAAC,GAAA;EAAAC,AAAA,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAV,IAAAW,EAAA,IAAA,GAAAC,EAAA,MAOVjB,CAAoB,EAAA;CAAA;CAAA,KAAAO,KAAA;EAAA,OAAAW,EAAAb,GAAA,IAAA;CAAA;CAAA,IAAxCc,KAAIC,GAAA;EAAAC,EAAAhB,GAAA,MAAAe,CAAA;CAAA;CAEXE,SAAU;EAOlB,OANK,KAAKH,KAAKI,SAASC,YAMjB1B,CAAI;oBACK,KAAKqB,KAAKI,SAASC,UAAS;QANnC1B,CAAI;;;CAQf;AACF,GAAC,CAAA2B,GAAA,CAAAR,GAAAD,IAAAU,GAAA,CAAAvB,GAAAwB,MAAAC,EAAAjB,GAAA,CAAA;CAAAH;CAAA;CAAA;AAAA,CAAA,GAAAN,GAAA,GAAA,KAAA,GApBmCN,CAAY,GAAAe,IAAAkB,IAAA,cAAAC,EAAA;CAAAjB,cAAA;EAAA,MAAAV,CAAA,GAAA4B,EAAA,MAAA,UAC9B9B,CAAM,GAAA8B,EAAA,MAAA,UACN,EACdC,WAAWC,MAAsB,CAACA,EAAUd,KAAKI,SAASC,UAC5D,CAAC,GAAAG,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAAzB,GAAA,KAAA,CAAA,GAAAyB,GAAA;;;ACXH,IAAA,IAAeM"}
@@ -1,4 +1,4 @@
1
- import { n as e, r as t } from "./components-DH1slGZY.js";
1
+ import { n as e, r as t } from "./components-PQfnwrHI.js";
2
2
  import { c as n, i as r, n as i } from "./lit-C4H1jI4q.js";
3
3
  import { n as a } from "./decorators-BqWyWiL9.js";
4
4
  //#region ~icons/svg-spinners/180-ring
@@ -283,4 +283,4 @@ var V = B;
283
283
  //#endregion
284
284
  export { z as n, B as r, V as t };
285
285
 
286
- //# sourceMappingURL=button-DHahwxqn.js.map
286
+ //# sourceMappingURL=button-oanBb_ha.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-DHahwxqn.js","names":["customElement","WebComponent","html","nothing","property","styles","BUTTON_VARIANTS","_classDecs","_Button","_Button2","_A","WeakMap","_B","_C","_D","_ref","_variantDecs","type","String","reflect","_typeDecs","_disabledDecs","Boolean","_loadingDecs","_Button3","Button","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_variant","_init_type","_init_disabled","undefined","_init_loading","_classPrivateFieldGet","variant","v","_classPrivateFieldSet","disabled","loading","render","onClick","onIconSlotChange","e","slot","target","toggleAttribute","assignedElements","length","getInternals","form","requestSubmit","reset","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","Button","BUTTON_VARIANTS"],"sources":["../../src/components/button/Button.styles.css","../../src/components/button/Button.ts","../../src/components/button/index.ts"],"sourcesContent":[":host {\n --text-color: var(--solid-ui-color-white);\n --border-color: var(--solid-ui-color-primary);\n --background-color: var(--solid-ui-color-primary);\n --hover-text-color: var(--text-color);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: var(--solid-ui-color-tertiary);\n\n display: inline-flex;\n\n button {\n position: relative;\n padding: 7px 12px;\n border-radius: 5px;\n font-size: var(--solid-ui-font-size-md);\n font-weight: 600;\n color: var(--text-color);\n background: var(--background-color);\n border: 1px solid var(--border-color);\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex: 1;\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n color: var(--hover-text-color);\n background: var(--hover-background-color);\n border-color: var(--hover-border-color);\n }\n\n icon-svg-spinners-180-ring, ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-md);\n height: var(--solid-ui-font-size-md);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: var(--solid-ui-clickable-area);\n height: var(--solid-ui-clickable-area);\n }\n }\n}\n\n:host([data-has-icon-slot]) button {\n padding: 4px;\n\n ::slotted([slot=\"icon\"]) {\n width: var(--solid-ui-font-size-2xl);\n height: var(--solid-ui-font-size-2xl);\n }\n}\n\n:host([variant='secondary']) button {\n --text-color: var(--solid-ui-color-gray-800);\n --border-color: var(--solid-ui-color-slate-400);\n --background-color: var(--solid-ui-color-white);\n --hover-text-color: var(--solid-ui-color-white);\n --hover-background-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n}\n\n:host([variant='tertiary']) button {\n --text-color: var(--solid-ui-color-primary);\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: transparent;\n\n padding: 0;\n border-radius: 0;\n border-width: 0;\n border-bottom-width: 1px;\n}\n\n:host([variant='outline']) button {\n --text-color: currentColor;\n --border-color: currentColor;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: currentColor;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n\n:host([variant='ghost']) button {\n --text-color: currentColor;\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: transparent;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Button.styles.css'\n\nexport const BUTTON_VARIANTS = ['primary', 'secondary', 'tertiary', 'outline', 'ghost'] as const\nexport type ButtonVariant = typeof BUTTON_VARIANTS[number]\n\n@customElement('solid-ui-button')\nexport default class Button extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor variant: ButtonVariant = 'primary'\n\n @property({ type: String, reflect: true })\n accessor type = 'button'\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined = undefined\n\n @property({ type: Boolean })\n accessor loading = false\n\n render () {\n const disabled = this.disabled ?? this.loading\n\n return html`\n <button type=${this.type} ?disabled=${disabled} @click=${this.onClick}>\n ${this.loading ? html`<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>` : nothing}\n <slot name=\"left-icon\"></slot>\n <slot @slotchange=${this.onIconSlotChange} name=\"icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </button>\n `\n }\n\n private onIconSlotChange (e: Event) {\n const slot = e.target as HTMLSlotElement\n\n this.toggleAttribute('data-has-icon-slot', slot.assignedElements().length > 0)\n }\n\n private onClick () {\n switch (this.type) {\n case 'submit':\n this.getInternals().form?.requestSubmit()\n break\n case 'reset':\n this.getInternals().form?.reset()\n break\n }\n }\n}\n","import Button, { BUTTON_VARIANTS, type ButtonVariant } from './Button'\n\nexport { Button, BUTTON_VARIANTS, type ButtonVariant }\nexport default Button\n"],"mappings":"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"}
1
+ {"version":3,"file":"button-oanBb_ha.js","names":["customElement","WebComponent","html","nothing","property","styles","BUTTON_VARIANTS","_classDecs","_Button","_Button2","_A","WeakMap","_B","_C","_D","_ref","_variantDecs","type","String","reflect","_typeDecs","_disabledDecs","Boolean","_loadingDecs","_Button3","Button","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_variant","_init_type","_init_disabled","undefined","_init_loading","_classPrivateFieldGet","variant","v","_classPrivateFieldSet","disabled","loading","render","onClick","onIconSlotChange","e","slot","target","toggleAttribute","assignedElements","length","getInternals","form","requestSubmit","reset","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","Button","BUTTON_VARIANTS"],"sources":["../../src/components/button/Button.styles.css","../../src/components/button/Button.ts","../../src/components/button/index.ts"],"sourcesContent":[":host {\n --text-color: var(--solid-ui-color-white);\n --border-color: var(--solid-ui-color-primary);\n --background-color: var(--solid-ui-color-primary);\n --hover-text-color: var(--text-color);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: var(--solid-ui-color-tertiary);\n\n display: inline-flex;\n\n button {\n position: relative;\n padding: 7px 12px;\n border-radius: 5px;\n font-size: var(--solid-ui-font-size-md);\n font-weight: 600;\n color: var(--text-color);\n background: var(--background-color);\n border: 1px solid var(--border-color);\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex: 1;\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n color: var(--hover-text-color);\n background: var(--hover-background-color);\n border-color: var(--hover-border-color);\n }\n\n icon-svg-spinners-180-ring, ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-md);\n height: var(--solid-ui-font-size-md);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: var(--solid-ui-clickable-area);\n height: var(--solid-ui-clickable-area);\n }\n }\n}\n\n:host([data-has-icon-slot]) button {\n padding: 4px;\n\n ::slotted([slot=\"icon\"]) {\n width: var(--solid-ui-font-size-2xl);\n height: var(--solid-ui-font-size-2xl);\n }\n}\n\n:host([variant='secondary']) button {\n --text-color: var(--solid-ui-color-gray-800);\n --border-color: var(--solid-ui-color-slate-400);\n --background-color: var(--solid-ui-color-white);\n --hover-text-color: var(--solid-ui-color-white);\n --hover-background-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n}\n\n:host([variant='tertiary']) button {\n --text-color: var(--solid-ui-color-primary);\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: transparent;\n\n padding: 0;\n border-radius: 0;\n border-width: 0;\n border-bottom-width: 1px;\n}\n\n:host([variant='outline']) button {\n --text-color: currentColor;\n --border-color: currentColor;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: currentColor;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n\n:host([variant='ghost']) button {\n --text-color: currentColor;\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: transparent;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Button.styles.css'\n\nexport const BUTTON_VARIANTS = ['primary', 'secondary', 'tertiary', 'outline', 'ghost'] as const\nexport type ButtonVariant = typeof BUTTON_VARIANTS[number]\n\n@customElement('solid-ui-button')\nexport default class Button extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor variant: ButtonVariant = 'primary'\n\n @property({ type: String, reflect: true })\n accessor type = 'button'\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined = undefined\n\n @property({ type: Boolean })\n accessor loading = false\n\n render () {\n const disabled = this.disabled ?? this.loading\n\n return html`\n <button type=${this.type} ?disabled=${disabled} @click=${this.onClick}>\n ${this.loading ? html`<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>` : nothing}\n <slot name=\"left-icon\"></slot>\n <slot @slotchange=${this.onIconSlotChange} name=\"icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </button>\n `\n }\n\n private onIconSlotChange (e: Event) {\n const slot = e.target as HTMLSlotElement\n\n this.toggleAttribute('data-has-icon-slot', slot.assignedElements().length > 0)\n }\n\n private onClick () {\n switch (this.type) {\n case 'submit':\n this.getInternals().form?.requestSubmit()\n break\n case 'reset':\n this.getInternals().form?.reset()\n break\n }\n }\n}\n","import Button, { BUTTON_VARIANTS, type ButtonVariant } from './Button'\n\nexport { Button, BUTTON_VARIANTS, type ButtonVariant }\nexport default Button\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACQA,IAAaM,IAAkB;CAAC;CAAW;CAAa;CAAY;CAAW;AAAO;AAAUC,IAAA,CAG/FP,EAAc,iBAAiB,CAAC;AAAA,IAAAQ;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,kBAAA,IAAAF,QAAA,GAAAG,kBAAA,IAAAH,QAAA,GAAAI,KAAAC,IAK9BZ,EAAS;CAAEa,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACC,IAGzChB,EAAS;CAAEa,MAAMC;CAAQC,SAAS;AAAK,CAAC,GAACE,IAGzCjB,EAAS,EAAEa,MAAMK,QAAQ,CAAC,GAACC,IAG3BnB,EAAS,EAAEa,MAAMK,QAAQ,CAAC,GAAC,YAAAE,IAd9B,cACoCvB,EAAa;CAAAyB,YAAA,GAAAC,GAAA;EAWGC,AAXH,MAAA,GAAAD,CAAA,GAAAC,EAAA,MAAAlB,IAAAmB,EAAA,IAAA,GAAAC,EAAA,MAKb,SAAS,EAAA,GAAAF,EAAA,MAAAhB,GAAAmB,EAAA,MAG3B,QAAQ,CAAA,GAAAH,EAAA,MAAAf,GAAAmB,EAAA,MAGiBC,KAAAA,CAAS,CAAA,GAAAL,EAAA,MAAAd,GAAAoB,EAAA,MAG/B,EAAK,CAAA;CAAA;CAAA,KAAAnB,KAAA;EAAA,OAAAoB,EAAAzB,GAAA,IAAA;CAAA;CAAA,IATf0B,QAAOC,GAAA;EAAAC,EAAA5B,GAAA,MAAA2B,CAAA;CAAA;CAAA,IAGPpB,OAAI;EAAA,OAAAkB,EAAAvB,GAAA,IAAA;CAAA;CAAA,IAAJK,KAAIoB,GAAA;EAAAC,EAAA1B,GAAA,MAAAyB,CAAA;CAAA;CAAA,IAGJE,WAAQ;EAAA,OAAAJ,EAAAtB,GAAA,IAAA;CAAA;CAAA,IAAR0B,SAAQF,GAAA;EAAAC,EAAAzB,GAAA,MAAAwB,CAAA;CAAA;CAAA,IAGRG,UAAO;EAAA,OAAAL,EAAArB,GAAA,IAAA;CAAA;CAAA,IAAP0B,QAAOH,GAAA;EAAAC,EAAAxB,GAAA,MAAAuB,CAAA;CAAA;CAEhBI,SAAU;EACR,IAAMF,IAAW,KAAKA,YAAY,KAAKC;EAEvC,OAAOtC,CAAI;uBACQ,KAAKe,KAAI,aAAcsB,EAAQ,UAAW,KAAKG,QAAO;cAC/D,KAAKF,UAAUtC,CAAI,8DAA8DC,EAAO;;gCAEtE,KAAKwC,iBAAgB;;;;;CAKnD;CAEQA,iBAAkBC,GAAU;EAClC,IAAMC,IAAOD,EAAEE;EAEf,KAAKC,gBAAgB,sBAAsBF,EAAKG,iBAAiB,CAAC,CAACC,SAAS,CAAC;CAC/E;CAEQP,UAAW;EACjB,QAAQ,KAAKzB,MAAb;GACE,KAAK;IACH,KAAKiC,aAAa,CAAC,CAACC,MAAMC,cAAc;IACxC;GACF,KAAK;IACH,KAAKF,aAAa,CAAC,CAACC,MAAME,MAAM;IAChC;EACJ;CACF;AACF,GAAC,CAAAT,GAAA,CAAAd,GAAAC,GAAAC,GAAAE,GAAAL,IAAAyB,GAAA,CAAA9C,GAAA+C,MAAAC,EAAAhC,GAAA;CAAA;EAAAR;EAAA;EAAA;CAAA;CAAA;EAAAI;EAAA;EAAA;CAAA;CAAA;EAAAC;EAAA;EAAA;CAAA;CAAA;EAAAE;EAAA;EAAA;CAAA;AAAA,GAAAhB,GAAA,GAAA,KAAA,GA9CmCN,CAAY,GAAAuB,IAAAiC,IAAA,cAAAC,EAAA;CAAAhC,cAAA;EAAA,MAAAlB,CAAA,GAAAmD,EAAA,MAAA,UAC9BtD,CAAM,GAAAsD,EAAA,MAAA,kBACE,EAAI,GAAAJ,EAAA;CAAA;AAAA,GAAAI,EAAAF,GAAAhD,GAAA,KAAA,CAAA,GAAAgD,GAAA;;;ACX9B,IAAA,IAAeI"}