solid-ui 3.1.3-11 → 3.1.3-12
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/README.md +2 -0
- package/dist/chunks/{account-CdqIoTsl.js → account-Bb818bGF.js} +20 -15
- package/dist/chunks/account-Bb818bGF.js.map +1 -0
- package/dist/chunks/{auth-D8B5yczR.js → auth-ClVI18ss.js} +90 -79
- package/dist/chunks/auth-ClVI18ss.js.map +1 -0
- package/dist/chunks/{avatar-DNGFKkhm.js → avatar-DGu_PX5y.js} +12 -4
- package/dist/chunks/avatar-DGu_PX5y.js.map +1 -0
- package/dist/chunks/{button-oanBb_ha.js → button-B9-nlEpz.js} +2 -2
- package/dist/chunks/{button-oanBb_ha.js.map → button-B9-nlEpz.js.map} +1 -1
- package/dist/chunks/{combobox-Dav1bNHS.js → combobox-DrT0Nb-A.js} +3 -3
- package/dist/chunks/combobox-DrT0Nb-A.js.map +1 -0
- package/dist/chunks/{dialog-Ujvm11_B.js → dialog-kyHgc-uy.js} +2 -2
- package/dist/chunks/{dialog-Ujvm11_B.js.map → dialog-kyHgc-uy.js.map} +1 -1
- package/dist/chunks/{guard-DZGvf4tS.js → guard-DEqOFEs4.js} +78 -52
- package/dist/chunks/guard-DEqOFEs4.js.map +1 -0
- package/dist/chunks/{login-button-Ta3tkpn4.js → login-button-Czm-E9Na.js} +4 -4
- package/dist/chunks/{login-button-Ta3tkpn4.js.map → login-button-Czm-E9Na.js.map} +1 -1
- package/dist/chunks/{logout-button-Db6VmUmJ.js → logout-button-BrR_jOhK.js} +4 -4
- package/dist/chunks/{logout-button-Db6VmUmJ.js.map → logout-button-BrR_jOhK.js.map} +1 -1
- package/dist/chunks/{menu-CQEXqNO6.js → menu-1PG19fCC.js} +3 -3
- package/dist/chunks/{menu-CQEXqNO6.js.map → menu-1PG19fCC.js.map} +1 -1
- package/dist/chunks/{menu-item-BHJ4xljI.js → menu-item-C9uErV38.js} +71 -54
- package/dist/chunks/menu-item-C9uErV38.js.map +1 -0
- package/dist/chunks/{provider-CoVkCkMs.js → provider-qd_4VaKB.js} +5 -2
- package/dist/chunks/provider-qd_4VaKB.js.map +1 -0
- package/dist/chunks/{signup-button-wO4uoqUi.js → signup-button-BnA5p-uJ.js} +4 -4
- package/dist/chunks/{signup-button-wO4uoqUi.js.map → signup-button-BnA5p-uJ.js.map} +1 -1
- package/dist/chunks/{src-B9CXYA44.js → src-DJOb1wMf.js} +2 -2
- package/dist/chunks/{src-B9CXYA44.js.map → src-DJOb1wMf.js.map} +1 -1
- package/dist/components/account/Account.cjs.js +6 -4
- package/dist/components/account/Account.cjs.js.map +1 -1
- package/dist/components/account/Account.d.ts +2 -0
- package/dist/components/account/Account.d.ts.map +1 -1
- package/dist/components/account/Account.esm.js +10 -4
- package/dist/components/account/Account.esm.js.map +1 -1
- package/dist/components/account/Account.stories.d.ts +10 -2
- package/dist/components/account/Account.stories.d.ts.map +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.js +1 -1
- package/dist/components/all.cjs.js +1 -0
- package/dist/components/all.d.ts +2 -0
- package/dist/components/all.d.ts.map +1 -0
- package/dist/components/all.esm.js +24 -0
- package/dist/components/avatar/Avatar.cjs.js +1 -1
- package/dist/components/avatar/Avatar.cjs.js.map +1 -1
- package/dist/components/avatar/Avatar.d.ts +3 -0
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.esm.js +9 -1
- package/dist/components/avatar/Avatar.esm.js.map +1 -1
- package/dist/components/avatar/Avatar.stories.d.ts +4 -4
- package/dist/components/avatar.js +1 -1
- package/dist/components/button/Button.styles.cjs.js +1 -1
- package/dist/components/button/Button.styles.cjs.js.map +1 -1
- package/dist/components/button/Button.styles.esm.js +1 -1
- package/dist/components/button/Button.styles.esm.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.esm.js +1 -1
- 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.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/guard/Guard.cjs.js +4 -2
- package/dist/components/guard/Guard.cjs.js.map +1 -1
- package/dist/components/guard/Guard.d.ts +7 -0
- package/dist/components/guard/Guard.d.ts.map +1 -1
- package/dist/components/guard/Guard.esm.js +74 -48
- package/dist/components/guard/Guard.esm.js.map +1 -1
- package/dist/components/guard/Guard.stories.d.ts +14 -3
- package/dist/components/guard/Guard.stories.d.ts.map +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/index.cjs.js +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.esm.js +1 -24
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal.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/Menu.stories.d.ts.map +1 -1
- package/dist/components/menu/Menu.styles.cjs.js +1 -1
- package/dist/components/menu/Menu.styles.cjs.js.map +1 -1
- package/dist/components/menu/Menu.styles.esm.js +1 -1
- package/dist/components/menu/Menu.styles.esm.js.map +1 -1
- package/dist/components/menu-item/MenuItem.cjs.js +4 -4
- package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
- package/dist/components/menu-item/MenuItem.d.ts +1 -0
- package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
- package/dist/components/menu-item/MenuItem.esm.js +72 -55
- package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
- package/dist/components/menu-item/MenuItem.styles.cjs.js +1 -1
- package/dist/components/menu-item/MenuItem.styles.cjs.js.map +1 -1
- package/dist/components/menu-item/MenuItem.styles.esm.js +1 -1
- package/dist/components/menu-item/MenuItem.styles.esm.js.map +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.d.ts +1 -0
- package/dist/components/provider/Provider.d.ts.map +1 -1
- package/dist/components/provider/Provider.esm.js +3 -0
- package/dist/components/provider/Provider.esm.js.map +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components.js +14 -14
- package/dist/index.js +3 -3
- package/dist/lib/auth/NoopAuth.cjs.js +1 -1
- package/dist/lib/auth/NoopAuth.cjs.js.map +1 -1
- package/dist/lib/auth/NoopAuth.d.ts +2 -2
- package/dist/lib/auth/NoopAuth.d.ts.map +1 -1
- package/dist/lib/auth/NoopAuth.esm.js +2 -3
- package/dist/lib/auth/NoopAuth.esm.js.map +1 -1
- package/dist/lib/auth/SolidAuth.cjs.js +1 -1
- package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
- package/dist/lib/auth/SolidAuth.d.ts +6 -0
- package/dist/lib/auth/SolidAuth.d.ts.map +1 -1
- package/dist/lib/auth/SolidAuth.esm.js +28 -16
- package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
- package/dist/lib/auth/context.cjs.js.map +1 -1
- package/dist/lib/auth/context.d.ts +2 -0
- package/dist/lib/auth/context.d.ts.map +1 -1
- package/dist/lib/auth/context.esm.js.map +1 -1
- package/dist/loader.js +3 -3
- package/dist/solid-ui.js +92 -88
- package/dist/solid-ui.min.js +92 -88
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/storybook/auth/StorybookAuth.d.ts +1 -0
- package/dist/storybook/auth/StorybookAuth.d.ts.map +1 -1
- package/dist/storybook/components/StorybookProvider.d.ts +1 -0
- package/dist/storybook/components/StorybookProvider.d.ts.map +1 -1
- package/dist/storybook/helpers.d.ts.map +1 -1
- package/dist/storybook/stubs.d.ts +7 -3
- package/dist/storybook/stubs.d.ts.map +1 -1
- package/dist/theme.css +1 -1
- package/package.json +1 -1
- package/dist/chunks/account-CdqIoTsl.js.map +0 -1
- package/dist/chunks/auth-D8B5yczR.js.map +0 -1
- package/dist/chunks/avatar-DNGFKkhm.js.map +0 -1
- package/dist/chunks/combobox-Dav1bNHS.js.map +0 -1
- package/dist/chunks/guard-DZGvf4tS.js.map +0 -1
- package/dist/chunks/menu-item-BHJ4xljI.js.map +0 -1
- package/dist/chunks/provider-CoVkCkMs.js.map +0 -1
package/README.md
CHANGED
|
@@ -130,6 +130,8 @@ You can also use [import maps](https://developer.mozilla.org/en-US/docs/Web/HTML
|
|
|
130
130
|
</html>
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
+
PS: If you're using the `<solid-ui-provider>` component to wrap your application, make sure to register it first. Otherwise, you may face errors or unexpected behaviour regarding global state.
|
|
134
|
+
|
|
133
135
|
## Development
|
|
134
136
|
|
|
135
137
|
When developing a component in solid-ui you can test it in isolation using Storybook:
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { c as e, s as t } from "./auth-
|
|
2
|
-
import { i as n } from "./dialog-
|
|
1
|
+
import { c as e, s as t } from "./auth-ClVI18ss.js";
|
|
2
|
+
import { i as n } from "./dialog-kyHgc-uy.js";
|
|
3
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-
|
|
8
|
-
import "./avatar-
|
|
9
|
-
import "./login-button-
|
|
10
|
-
import "./logout-button-
|
|
11
|
-
import "./menu-item-
|
|
12
|
-
import "./menu-
|
|
13
|
-
import "./signup-button-
|
|
7
|
+
import "./button-B9-nlEpz.js";
|
|
8
|
+
import "./avatar-DGu_PX5y.js";
|
|
9
|
+
import "./login-button-Czm-E9Na.js";
|
|
10
|
+
import "./logout-button-BrR_jOhK.js";
|
|
11
|
+
import "./menu-item-C9uErV38.js";
|
|
12
|
+
import "./menu-1PG19fCC.js";
|
|
13
|
+
import "./signup-button-BnA5p-uJ.js";
|
|
14
14
|
//#region ~icons/lucide/log-in
|
|
15
15
|
var l = class extends HTMLElement {
|
|
16
16
|
constructor() {
|
|
@@ -36,7 +36,7 @@ var d = class extends HTMLElement {
|
|
|
36
36
|
customElements.get("icon-lucide-user") || customElements.define("icon-lucide-user", d);
|
|
37
37
|
//#endregion
|
|
38
38
|
//#region src/components/account/Account.styles.css
|
|
39
|
-
var f = a`:host{flex-direction:row;gap:10px;display:inline-flex}:host([data-state-loggedIn]){--padding:4px;--border-width:1px
|
|
39
|
+
var f = a`:host{--image-size:1.875rem;flex-direction:row;gap:10px;display:inline-flex}:host([data-state-initializing]){& icon-svg-spinners-180-ring{width:var(--image-size);height:var(--image-size)}}:host([data-state-loggedIn]){--padding:4px;--border-width:1px;& button{background-color:var(--solid-ui-color-body-grey);padding:var(--padding);border-radius:calc((var(--image-size) + 2 * var(--padding) + 2 * var(--border-width)) / 2);color:var(--solid-ui-color-white);justify-content:center;align-items:center;gap:5px;display:inline-flex;& solid-ui-avatar{width:var(--image-size);height:var(--image-size);border:var(--border-width) solid var(--solid-ui-color-white);border-radius:50%}& icon-lucide-chevron-down{width:16px;height:16px}}}`, p, m, h, g, _, v, y, b, x, S, C, w, T;
|
|
40
40
|
function E(e, t, n) {
|
|
41
41
|
D(e, t), t.set(e, n);
|
|
42
42
|
}
|
|
@@ -236,15 +236,15 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
|
|
|
236
236
|
super.disconnectedCallback(), this.unsubscribeSessionUpdated?.();
|
|
237
237
|
}
|
|
238
238
|
render() {
|
|
239
|
-
return this.auth.account ? o`
|
|
240
|
-
<solid-ui-menu placement="bottom-end"
|
|
239
|
+
return this.auth.initialized ? this.auth.account ? o`
|
|
240
|
+
<solid-ui-menu placement="bottom-end">
|
|
241
241
|
<button type="button" slot="trigger">
|
|
242
242
|
<solid-ui-avatar></solid-ui-avatar>
|
|
243
243
|
<icon-lucide-chevron-down slot="right-icon"></icon-lucide-chevron-down>
|
|
244
244
|
</button>
|
|
245
245
|
|
|
246
246
|
${this.menuItems.map((e) => o`
|
|
247
|
-
<solid-ui-menu-item .href=${e.href ?? s} @solid-ui-select=${() => e.onSelected?.()}>
|
|
247
|
+
<solid-ui-menu-item .href=${e.href ?? s} ?selected=${e.selected} @solid-ui-select=${() => e.onSelected?.()}>
|
|
248
248
|
${e.label}
|
|
249
249
|
</solid-ui-menu-item>
|
|
250
250
|
`)}
|
|
@@ -268,6 +268,8 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
|
|
|
268
268
|
Sign Up
|
|
269
269
|
</solid-ui-button>
|
|
270
270
|
</solid-ui-signup-button>
|
|
271
|
+
` : o`
|
|
272
|
+
<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>
|
|
271
273
|
`;
|
|
272
274
|
}
|
|
273
275
|
}, {e: [x, C, _], c: [R, v]} = M(m, [[
|
|
@@ -280,7 +282,10 @@ new (w = (h = /*#__PURE__*/ new WeakMap(), g = /*#__PURE__*/ new WeakMap(), T =
|
|
|
280
282
|
"auth"
|
|
281
283
|
]], y, 0, void 0, r), m), p = class extends L {
|
|
282
284
|
constructor() {
|
|
283
|
-
super(R), j(this, "styles", f), j(this, "states", {
|
|
285
|
+
super(R), j(this, "styles", f), j(this, "states", {
|
|
286
|
+
initializing: (e) => !e.auth.initialized,
|
|
287
|
+
loggedIn: (e) => !!e.auth.account
|
|
288
|
+
}), v();
|
|
284
289
|
}
|
|
285
290
|
}, j(p, w, void 0), p)();
|
|
286
291
|
//#endregion
|
|
@@ -289,4 +294,4 @@ var z = R;
|
|
|
289
294
|
//#endregion
|
|
290
295
|
export { R as n, z as t };
|
|
291
296
|
|
|
292
|
-
//# sourceMappingURL=account-
|
|
297
|
+
//# sourceMappingURL=account-Bb818bGF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-Bb818bGF.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","initialized","account","map","menuItem","href","selected","onSelected","label","e","c","_initClass","_applyDecs","_Class","_identity","initializing","component","loggedIn","default","Account"],"sources":["../../src/components/account/Account.styles.css","../../src/components/account/Account.ts","../../src/components/account/index.ts"],"sourcesContent":[":host {\n --image-size: 1.875rem; /* 30px */\n\n display: inline-flex;\n flex-direction: row;\n gap: 10px;\n}\n\n:host([data-state-initializing]) {\n icon-svg-spinners-180-ring {\n width: var(--image-size);\n height: var(--image-size);\n }\n}\n\n:host([data-state-loggedIn]) {\n --padding: 4px;\n --border-width: 1px;\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'\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Account.styles.css'\n\nexport interface AccountMenuItem {\n label: string | TemplateResult\n href?: string\n selected?: boolean\n onSelected?(): void\n}\n\n@customElement('solid-ui-account')\nexport default class Account extends WebComponent {\n static styles = styles\n static states = {\n initializing: (component: Account) => !component.auth.initialized,\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.initialized) {\n return html`\n <icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>\n `\n }\n\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\">\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} ?selected=${menuItem.selected} @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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmByCS,IAAA,CASxCL,EAAc,kBAAkB,CAAC;AAAA,IAAAM;AAAA,KAAAC,KAAAC,kBAAA,IAAAC,QAAA,GAAAC,kBAAA,IAAAD,QAAA,GAAAE,KAAAC,IAQ/Bb,EAAS,EAAEc,MAAMC,MAAM,CAAC,GAACC,IAGzBnB,EAAQ;CAAEoB,SAASd;CAAae,WAAW;AAAK,CAAC,GAAC,cAAAC,IAXrD,cACqCjB,EAAa;CAAAmB,YAAA,GAAAC,GAAA;EAWSK,AAXT,MAAA,GAAAL,CAAA,GAAAC,EAAA,MAAAd,IAAAe,EAAA,IAAA,GAAAC,EAAA,MAQR,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;EAwBlB,OAvBK,KAAKN,KAAKO,cAMV,KAAKP,KAAKQ,UAiBR1C,CAAI;;;;;;;cAOD,KAAK+B,UAAUY,KAAIC,MAAY5C,CAAI;4CACL4C,EAASC,QAAQ5C,EAAO,aAAc2C,EAASE,SAAQ,0BAA2BF,EAASG,aAAa,EAAC;sBAC/HH,EAASI,MAAK;;aAEvB,EAAC;;;;;;;;QA3BDhD,CAAI;;;;;;;;;;;;;UANJA,CAAI;;;CA0Cf;AACF,GAAC,CAAAiD,GAAA,CAAAtB,GAAAC,GAAAF,IAAAwB,GAAA,CAAAzC,GAAA0C,MAAAC,EAAA/B,GAAA,CAAA;CAAAN;CAAA;CAAA;AAAA,GAAA;CAAAG;CAAA;CAAA;AAAA,CAAA,GAAAV,GAAA,GAAA,KAAA,GAxEoCJ,CAAY,GAAAiB,IAAAgC,IAAA,cAAAC,EAAA;CAAA/B,cAAA;EAAA,MAAAd,CAAA,GAAAoB,EAAA,MAAA,UAC/BtB,CAAM,GAAAsB,EAAA,MAAA,UACN;GACd0B,eAAeC,MAAuB,CAACA,EAAUtB,KAAKO;GACtDgB,WAAWD,MAAuB,CAAC,CAACA,EAAUtB,KAAKQ;EACrD,CAAC,GAAAS,EAAA;CAAA;AAAA,GAAAtB,EAAAwB,GAAA3C,GAAA,KAAA,CAAA,GAAA2C,GAAA;;;AC/BH,IAAA,IAAeM"}
|
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as
|
|
3
|
-
import { i as
|
|
4
|
-
import { i as
|
|
5
|
-
import { c as
|
|
6
|
-
import { t as
|
|
7
|
-
import { n as
|
|
8
|
-
import { t as
|
|
1
|
+
import { c as e, f as t, h as n, p as r, u as i } from "./solid-logic.esm-BrMdCG2_.js";
|
|
2
|
+
import { r as a } from "./context-B_xwK-Y_.js";
|
|
3
|
+
import { i as o } from "./dialog-kyHgc-uy.js";
|
|
4
|
+
import { i as s, n as c, r as l } from "./components-PQfnwrHI.js";
|
|
5
|
+
import { c as u, i as d, n as f } from "./lit-C4H1jI4q.js";
|
|
6
|
+
import { t as p } from "./show-dialog-eEW5yRBv.js";
|
|
7
|
+
import { n as m, t as h } from "./decorators-BqWyWiL9.js";
|
|
8
|
+
import { t as g } from "./query-BYu9q8lA.js";
|
|
9
9
|
import "./chevron-down-ujxRg3MD.js";
|
|
10
|
-
import "./button-
|
|
10
|
+
import "./button-B9-nlEpz.js";
|
|
11
11
|
import "./dialog-content-CEITrC59.js";
|
|
12
12
|
import "./dialog-footer-DVLEK5bU.js";
|
|
13
|
-
import "./combobox-
|
|
13
|
+
import "./combobox-DrT0Nb-A.js";
|
|
14
14
|
import "./combobox-option-DxJvAZ_Q.js";
|
|
15
15
|
//#region src/lib/auth/Account.ts
|
|
16
|
-
var
|
|
16
|
+
var _ = class {
|
|
17
17
|
webId;
|
|
18
18
|
avatarUrl;
|
|
19
19
|
constructor(e, t) {
|
|
20
20
|
this.webId = e, this.avatarUrl = t;
|
|
21
21
|
}
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
22
|
+
}, v = class {
|
|
23
|
+
initialized = !1;
|
|
24
|
+
account = null;
|
|
26
25
|
async login() {
|
|
27
26
|
throw Error("Can't use auth, missing context provider");
|
|
28
27
|
}
|
|
@@ -35,14 +34,14 @@ var g = class {
|
|
|
35
34
|
onSessionUpdated() {
|
|
36
35
|
return () => void 0;
|
|
37
36
|
}
|
|
38
|
-
},
|
|
37
|
+
}, y = new v(), b = a(Symbol("auth")), x = class {
|
|
39
38
|
id;
|
|
40
39
|
template;
|
|
41
40
|
element;
|
|
42
41
|
config;
|
|
43
42
|
_resolveElement;
|
|
44
43
|
constructor(e, t = {}) {
|
|
45
|
-
this.id =
|
|
44
|
+
this.id = s(), this.template = e, this.config = t, this.element = new Promise((e) => {
|
|
46
45
|
this._resolveElement = e;
|
|
47
46
|
});
|
|
48
47
|
}
|
|
@@ -55,17 +54,17 @@ var g = class {
|
|
|
55
54
|
};
|
|
56
55
|
//#endregion
|
|
57
56
|
//#region src/lib/dialogs/helpers.ts
|
|
58
|
-
function
|
|
59
|
-
let n = new
|
|
60
|
-
return document.dispatchEvent(new
|
|
57
|
+
function S(e, t = {}) {
|
|
58
|
+
let n = new x(e, t);
|
|
59
|
+
return document.dispatchEvent(new p(n)), n.element;
|
|
61
60
|
}
|
|
62
61
|
//#endregion
|
|
63
62
|
//#region src/components/login-modal/LoginModal.styles.css
|
|
64
|
-
var
|
|
63
|
+
var C = u`.error-message{color:var(--solid-ui-color-error);font-size:var(--solid-ui-font-size-sm);text-align:center;width:100%;font-weight:500}solid-ui-combobox{width:100%}solid-ui-button{flex:1}`, w, T, E, D, O, k, A, j, M, N, P, ee, te, F, I, L, R, z, B, V, H, U, W, G, K;
|
|
65
64
|
function q(e, t, n) {
|
|
66
|
-
|
|
65
|
+
ne(e, t), t.set(e, n);
|
|
67
66
|
}
|
|
68
|
-
function
|
|
67
|
+
function ne(e, t) {
|
|
69
68
|
if (t.has(e)) throw TypeError("Cannot initialize the same private elements twice on an object");
|
|
70
69
|
}
|
|
71
70
|
function J(e, t, n) {
|
|
@@ -86,7 +85,7 @@ function Z(e, t, n) {
|
|
|
86
85
|
writable: !0
|
|
87
86
|
}) : e[t] = n, e;
|
|
88
87
|
}
|
|
89
|
-
function
|
|
88
|
+
function re(e, t, n, r, i, a) {
|
|
90
89
|
function o(e, t, n) {
|
|
91
90
|
return function(r, i) {
|
|
92
91
|
return n && n(r), e[t].call(r, i);
|
|
@@ -109,13 +108,13 @@ function ne(e, t, n, r, i, a) {
|
|
|
109
108
|
n || Array.isArray(_) || (_ = [_]);
|
|
110
109
|
var b = {}, x = [], S = i === 3 ? "get" : i === 4 || p ? "set" : "value";
|
|
111
110
|
d ? (f || p ? b = {
|
|
112
|
-
get:
|
|
111
|
+
get: ae(function() {
|
|
113
112
|
return v(this);
|
|
114
113
|
}, r, "get"),
|
|
115
114
|
set: function(e) {
|
|
116
115
|
t[4](this, e);
|
|
117
116
|
}
|
|
118
|
-
} : b[S] = v, f ||
|
|
117
|
+
} : b[S] = v, f || ae(b[S], r, i === 2 ? "" : S)) : f || (b = Object.getOwnPropertyDescriptor(e, r));
|
|
119
118
|
}
|
|
120
119
|
for (var C = e, w = _.length - 1; w >= 0; w -= n ? 2 : 1) {
|
|
121
120
|
var T = _[w], E = n ? _[w - 1] : void 0, D = {}, O = {
|
|
@@ -175,7 +174,7 @@ function ne(e, t, n, r, i, a) {
|
|
|
175
174
|
if (arguments.length >= 6) var d = a[Symbol.metadata || Symbol.for("Symbol.metadata")];
|
|
176
175
|
var f = Object.create(d ?? null), p = function(e, t, n, r) {
|
|
177
176
|
var i, a, o = [], c = function(t) {
|
|
178
|
-
return
|
|
177
|
+
return oe(t) === e;
|
|
179
178
|
}, u = /* @__PURE__ */ new Map();
|
|
180
179
|
function d(e) {
|
|
181
180
|
e && o.push(s.bind(null, e));
|
|
@@ -203,10 +202,10 @@ function ne(e, t, n, r, i, a) {
|
|
|
203
202
|
};
|
|
204
203
|
}
|
|
205
204
|
function Q(e) {
|
|
206
|
-
var t =
|
|
205
|
+
var t = ie(e, "string");
|
|
207
206
|
return typeof t == "symbol" ? t : t + "";
|
|
208
207
|
}
|
|
209
|
-
function
|
|
208
|
+
function ie(e, t) {
|
|
210
209
|
if (typeof e != "object" || !e) return e;
|
|
211
210
|
var n = e[Symbol.toPrimitive];
|
|
212
211
|
if (n !== void 0) {
|
|
@@ -216,7 +215,7 @@ function re(e, t) {
|
|
|
216
215
|
}
|
|
217
216
|
return (t === "string" ? String : Number)(e);
|
|
218
217
|
}
|
|
219
|
-
function
|
|
218
|
+
function ae(e, t, n) {
|
|
220
219
|
typeof t == "symbol" && (t = (t = t.description) ? "[" + t + "]" : "");
|
|
221
220
|
try {
|
|
222
221
|
Object.defineProperty(e, "name", {
|
|
@@ -226,75 +225,75 @@ function ie(e, t, n) {
|
|
|
226
225
|
} catch {}
|
|
227
226
|
return e;
|
|
228
227
|
}
|
|
229
|
-
function
|
|
228
|
+
function oe(e) {
|
|
230
229
|
if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (e === null ? "null" : typeof e));
|
|
231
230
|
return e;
|
|
232
231
|
}
|
|
233
|
-
function
|
|
232
|
+
function se(e) {
|
|
234
233
|
return e;
|
|
235
234
|
}
|
|
236
|
-
|
|
235
|
+
P = [l("solid-ui-login-modal")];
|
|
237
236
|
var $;
|
|
238
|
-
new (G = (
|
|
237
|
+
new (G = (E = /*#__PURE__*/ new WeakMap(), D = /*#__PURE__*/ new WeakMap(), O = /*#__PURE__*/ new WeakMap(), k = /*#__PURE__*/ new WeakMap(), A = /*#__PURE__*/ new WeakMap(), j = /*#__PURE__*/ new WeakMap(), K = (ee = m({
|
|
239
238
|
type: String,
|
|
240
239
|
reflect: !0
|
|
241
|
-
}), F =
|
|
242
|
-
context:
|
|
240
|
+
}), F = h(), L = h(), z = h(), V = o({
|
|
241
|
+
context: b,
|
|
243
242
|
subscribe: !0
|
|
244
|
-
}), U =
|
|
243
|
+
}), U = g("solid-ui-dialog"), "issuerUrl"), T = class extends c {
|
|
245
244
|
constructor(...e) {
|
|
246
|
-
super(...e), q(this,
|
|
245
|
+
super(...e), q(this, E, (M(this), te(this, ""))), q(this, D, I(this, "")), q(this, O, R(this, !1)), q(this, k, B(this, !1)), q(this, A, H(this, y)), q(this, j, W(this, null));
|
|
247
246
|
}
|
|
248
247
|
get [K]() {
|
|
249
|
-
return Y(
|
|
248
|
+
return Y(E, this);
|
|
250
249
|
}
|
|
251
250
|
set issuerUrl(e) {
|
|
252
|
-
J(
|
|
251
|
+
J(E, this, e);
|
|
253
252
|
}
|
|
254
253
|
get issuerInputValue() {
|
|
255
|
-
return Y(
|
|
254
|
+
return Y(D, this);
|
|
256
255
|
}
|
|
257
256
|
set issuerInputValue(e) {
|
|
258
|
-
J(
|
|
257
|
+
J(D, this, e);
|
|
259
258
|
}
|
|
260
259
|
get failed() {
|
|
261
|
-
return Y(
|
|
260
|
+
return Y(O, this);
|
|
262
261
|
}
|
|
263
262
|
set failed(e) {
|
|
264
|
-
J(
|
|
263
|
+
J(O, this, e);
|
|
265
264
|
}
|
|
266
265
|
get submitting() {
|
|
267
|
-
return Y(
|
|
266
|
+
return Y(k, this);
|
|
268
267
|
}
|
|
269
268
|
set submitting(e) {
|
|
270
|
-
J(
|
|
269
|
+
J(k, this, e);
|
|
271
270
|
}
|
|
272
271
|
get auth() {
|
|
273
|
-
return Y(
|
|
272
|
+
return Y(A, this);
|
|
274
273
|
}
|
|
275
274
|
set auth(e) {
|
|
276
|
-
J(
|
|
275
|
+
J(A, this, e);
|
|
277
276
|
}
|
|
278
277
|
get dialog() {
|
|
279
|
-
return Y(
|
|
278
|
+
return Y(j, this);
|
|
280
279
|
}
|
|
281
280
|
set dialog(e) {
|
|
282
|
-
J(
|
|
281
|
+
J(j, this, e);
|
|
283
282
|
}
|
|
284
283
|
connectedCallback() {
|
|
285
284
|
super.connectedCallback(), this.issuerInputValue = typeof localStorage < "u" && localStorage.getItem("loginIssuer") || this.issuerUrl || "";
|
|
286
285
|
}
|
|
287
286
|
render() {
|
|
288
|
-
let e =
|
|
289
|
-
return
|
|
287
|
+
let e = i();
|
|
288
|
+
return d`
|
|
290
289
|
<solid-ui-dialog title="Select an identity provider">
|
|
291
290
|
<form @submit=${this.onSubmit}>
|
|
292
291
|
<solid-ui-dialog-content>
|
|
293
292
|
<solid-ui-combobox label="Solid Identity Provider" .value=${this.issuerInputValue} @input=${this.onIssuerInputChange}>
|
|
294
|
-
${e.map((e) =>
|
|
293
|
+
${e.map((e) => d`<solid-ui-combobox-option value="${e.uri}">${e.name}</solid-ui-combobox-option>`)}
|
|
295
294
|
</solid-ui-combobox>
|
|
296
295
|
|
|
297
|
-
${this.failed ?
|
|
296
|
+
${this.failed ? d`<p class="error-message">Something went wrong</p>` : f}
|
|
298
297
|
</solid-ui-dialog-content>
|
|
299
298
|
|
|
300
299
|
<solid-ui-dialog-footer>
|
|
@@ -331,9 +330,9 @@ new (G = (T = /*#__PURE__*/ new WeakMap(), E = /*#__PURE__*/ new WeakMap(), D =
|
|
|
331
330
|
}
|
|
332
331
|
}
|
|
333
332
|
}
|
|
334
|
-
}, {e: [
|
|
333
|
+
}, {e: [te, I, R, B, H, W, M], c: [$, N]} = re(T, [
|
|
335
334
|
[
|
|
336
|
-
|
|
335
|
+
ee,
|
|
337
336
|
1,
|
|
338
337
|
"issuerUrl"
|
|
339
338
|
],
|
|
@@ -362,53 +361,65 @@ new (G = (T = /*#__PURE__*/ new WeakMap(), E = /*#__PURE__*/ new WeakMap(), D =
|
|
|
362
361
|
1,
|
|
363
362
|
"dialog"
|
|
364
363
|
]
|
|
365
|
-
],
|
|
364
|
+
], P, 0, void 0, c), T), w = class extends se {
|
|
366
365
|
constructor() {
|
|
367
|
-
super($), Z(this, "styles",
|
|
366
|
+
super($), Z(this, "styles", C), N();
|
|
368
367
|
}
|
|
369
|
-
}, Z(
|
|
368
|
+
}, Z(w, G, void 0), w)();
|
|
370
369
|
//#endregion
|
|
371
370
|
//#region src/components/login-modal/index.ts
|
|
372
|
-
var
|
|
373
|
-
function
|
|
374
|
-
let r =
|
|
371
|
+
var ce = $, le = "https://solidproject.org/get_a_pod";
|
|
372
|
+
function ue(e) {
|
|
373
|
+
let r = t.store, i = r.sym(e), a = r.any(i, n.sioc("avatar")) || r.any(i, n.foaf("img")) || r.any(i, n.vcard("logo")) || r.any(i, n.vcard("hasPhoto")) || r.any(i, n.vcard("photo")) || r.any(i, n.foaf("depiction"));
|
|
375
374
|
return a ? a.value : void 0;
|
|
376
375
|
}
|
|
377
|
-
var
|
|
378
|
-
|
|
376
|
+
var de = class {
|
|
377
|
+
_initialized = !1;
|
|
378
|
+
profileLoaded = !1;
|
|
379
|
+
listeners = [];
|
|
380
|
+
constructor(e = le) {
|
|
379
381
|
this.signupUrl = e;
|
|
380
382
|
}
|
|
383
|
+
async initialize() {
|
|
384
|
+
await e.checkUser(), this._initialized = !0, this.listeners.forEach((e) => e());
|
|
385
|
+
}
|
|
386
|
+
async loadProfile() {
|
|
387
|
+
this.profileLoaded || !this.account || (this.profileLoaded = !0, await t.profile.loadMe(), this.listeners.forEach((e) => e()));
|
|
388
|
+
}
|
|
389
|
+
get initialized() {
|
|
390
|
+
return this._initialized;
|
|
391
|
+
}
|
|
381
392
|
get account() {
|
|
382
|
-
let e =
|
|
383
|
-
return !(
|
|
393
|
+
let e = r.webId ?? r.info?.webId;
|
|
394
|
+
return !(r.isActive ?? r.info?.isLoggedIn ?? !!e) || !e ? null : new _(e, ue(e));
|
|
384
395
|
}
|
|
385
|
-
async login(
|
|
386
|
-
if (!
|
|
387
|
-
|
|
396
|
+
async login(e) {
|
|
397
|
+
if (!e) {
|
|
398
|
+
S(d`<solid-ui-login-modal></solid-ui-login-modal>`);
|
|
388
399
|
return;
|
|
389
400
|
}
|
|
390
|
-
|
|
391
|
-
let
|
|
392
|
-
|
|
401
|
+
t.store.updater.flagAuthorizationMetadata();
|
|
402
|
+
let n = new URL(window.location.href).hash;
|
|
403
|
+
n && window.localStorage.setItem("preLoginRedirectHash", n), window.localStorage.setItem("loginIssuer", e);
|
|
393
404
|
let i = new URL(window.location.href);
|
|
394
|
-
i.hash = "", await
|
|
405
|
+
i.hash = "", await r.login(e, i.href);
|
|
395
406
|
}
|
|
396
407
|
async signup() {
|
|
397
408
|
window.open(this.signupUrl, "_blank", "noopener,noreferrer");
|
|
398
409
|
}
|
|
399
410
|
async logout() {
|
|
400
|
-
await
|
|
411
|
+
await r.logout();
|
|
401
412
|
}
|
|
402
413
|
onSessionUpdated(e) {
|
|
403
|
-
let t =
|
|
414
|
+
let t = r, n = () => {
|
|
404
415
|
e();
|
|
405
416
|
};
|
|
406
|
-
return typeof t.addEventListener == "function" ? t.addEventListener("sessionStateChange",
|
|
407
|
-
typeof t.removeEventListener == "function" ? t.removeEventListener("sessionStateChange",
|
|
417
|
+
return this.listeners.push(n), typeof t.addEventListener == "function" ? t.addEventListener("sessionStateChange", n) : (r.events.on("login", n), r.events.on("logout", n), r.events.on("sessionRestore", n)), () => {
|
|
418
|
+
this.listeners = this.listeners.filter((e) => e !== n), typeof t.removeEventListener == "function" ? t.removeEventListener("sessionStateChange", n) : (r.events.off("login", n), r.events.off("logout", n), r.events.off("sessionRestore", n));
|
|
408
419
|
};
|
|
409
420
|
}
|
|
410
421
|
};
|
|
411
422
|
//#endregion
|
|
412
|
-
export {
|
|
423
|
+
export { S as a, b as c, $ as i, v as l, de as n, x as o, ce as r, y as s, le as t, _ as u };
|
|
413
424
|
|
|
414
|
-
//# sourceMappingURL=auth-
|
|
425
|
+
//# sourceMappingURL=auth-ClVI18ss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-ClVI18ss.js","names":["Account","webId","avatarUrl","constructor","NoopAuth","initialized","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","Account","ns","authn","authSession","solidLogicSingleton","showDialog","html","DEFAULT_SIGNUP_URL","findAccountImage","webId","store","me","sym","image","any","sioc","foaf","vcard","value","undefined","SolidAuth","_initialized","profileLoaded","listeners","constructor","signupUrl","initialize","checkUser","forEach","listener","loadProfile","account","profile","loadMe","initialized","info","isActive","isLoggedIn","Boolean","avatarUrl","login","loginUrl","updater","flagAuthorizationMetadata","preLoginRedirectHash","URL","window","location","href","hash","localStorage","setItem","locationUrl","signup","open","logout","onSessionUpdated","callback","sessionEventTarget","push","addEventListener","events","on","filter","_listener","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'\n\nexport default class NoopAuth implements AuthContext {\n public readonly initialized = false\n public readonly account = null\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 initialized: boolean;\n account: Account | null;\n login(loginUrl?: string): Promise<void>;\n loadProfile?(): 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 Account from '@/lib/auth/Account'\nimport ns from '@/lib/ns'\nimport { authn, authSession, solidLogicSingleton } from 'solid-logic'\nimport { AuthContext } from '@/lib/auth'\nimport { showDialog } from '@/lib/dialogs'\nimport { html } from 'lit'\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 private _initialized = false\n private profileLoaded = false\n private listeners: (() => unknown)[] = []\n\n constructor (public signupUrl: string = DEFAULT_SIGNUP_URL) {}\n\n async initialize () {\n await authn.checkUser()\n\n this._initialized = true\n this.listeners.forEach(listener => listener())\n }\n\n async loadProfile () {\n if (this.profileLoaded || !this.account) {\n return\n }\n\n this.profileLoaded = true\n\n await solidLogicSingleton.profile.loadMe()\n\n this.listeners.forEach(listener => listener())\n }\n\n get initialized (): boolean {\n return this._initialized\n }\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\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\n this.listeners.push(listener)\n\n if (typeof sessionEventTarget.addEventListener === 'function') {\n sessionEventTarget.addEventListener('sessionStateChange', listener)\n } else {\n authSession.events.on('login', listener)\n authSession.events.on('logout', listener)\n authSession.events.on('sessionRestore', listener)\n }\n\n return () => {\n this.listeners = this.listeners.filter(_listener => _listener !== listener)\n\n if (typeof sessionEventTarget.removeEventListener === 'function') {\n sessionEventTarget.removeEventListener('sessionStateChange', listener)\n } else {\n authSession.events.off('login', listener)\n authSession.events.off('logout', listener)\n authSession.events.off('sessionRestore', listener)\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as e, s as t } from "./auth-
|
|
2
|
-
import { i as n } from "./dialog-
|
|
1
|
+
import { c as e, s as t } from "./auth-ClVI18ss.js";
|
|
2
|
+
import { i as n } from "./dialog-kyHgc-uy.js";
|
|
3
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
|
|
@@ -190,7 +190,7 @@ new (_ = (d = /*#__PURE__*/ new WeakMap(), v = (h = n({
|
|
|
190
190
|
subscribe: !0
|
|
191
191
|
}), "auth"), u = class extends r {
|
|
192
192
|
constructor(...e) {
|
|
193
|
-
super(...e), y(this, d, (f(this), g(this, t)));
|
|
193
|
+
super(...e), y(this, d, (f(this), g(this, t))), w(this, "unsubscribeSessionUpdated", void 0);
|
|
194
194
|
}
|
|
195
195
|
get [v]() {
|
|
196
196
|
return S(d, this);
|
|
@@ -198,6 +198,14 @@ new (_ = (d = /*#__PURE__*/ new WeakMap(), v = (h = n({
|
|
|
198
198
|
set auth(e) {
|
|
199
199
|
x(d, this, e);
|
|
200
200
|
}
|
|
201
|
+
connectedCallback() {
|
|
202
|
+
super.connectedCallback(), this.auth.loadProfile?.(), this.unsubscribeSessionUpdated = this.auth.onSessionUpdated(() => {
|
|
203
|
+
this.auth.loadProfile?.(), this.requestUpdate();
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
disconnectedCallback() {
|
|
207
|
+
super.disconnectedCallback(), this.unsubscribeSessionUpdated?.();
|
|
208
|
+
}
|
|
201
209
|
render() {
|
|
202
210
|
return this.auth.account?.avatarUrl ? o`
|
|
203
211
|
<img src="${this.auth.account?.avatarUrl}" alt="" />
|
|
@@ -220,4 +228,4 @@ var M = j;
|
|
|
220
228
|
//#endregion
|
|
221
229
|
export { j as n, M as t };
|
|
222
230
|
|
|
223
|
-
//# sourceMappingURL=avatar-
|
|
231
|
+
//# sourceMappingURL=avatar-DGu_PX5y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-DGu_PX5y.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","_defineProperty","_classPrivateFieldGet","auth","v","_classPrivateFieldSet","connectedCallback","loadProfile","unsubscribeSessionUpdated","onSessionUpdated","requestUpdate","disconnectedCallback","render","account","avatarUrl","e","c","_initClass","_applyDecs","_Class","_identity","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 private unsubscribeSessionUpdated?: () => void\n\n connectedCallback () {\n super.connectedCallback()\n\n this.auth.loadProfile?.()\n\n this.unsubscribeSessionUpdated = this.auth.onSessionUpdated(() => {\n this.auth.loadProfile?.()\n this.requestUpdate()\n })\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.unsubscribeSessionUpdated?.()\n }\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;EAOUI,AAPV,MAAA,GAAAJ,CAAA,GAAAC,EAAA,MAAAV,IAAAW,EAAA,IAAA,GAAAC,EAAA,MAOVjB,CAAoB,EAAA,GAAAkB,EAAA,MAAA,6BAAA,KAAA,CAAA;CAAA;CAAA,KAAAX,KAAA;EAAA,OAAAY,EAAAd,GAAA,IAAA;CAAA;CAAA,IAAxCe,KAAIC,GAAA;EAAAC,EAAAjB,GAAA,MAAAgB,CAAA;CAAA;CAIrBE,oBAAqB;EAKnB,AAJA,MAAMA,kBAAkB,GAExB,KAAKH,KAAKI,cAAc,GAExB,KAAKC,4BAA4B,KAAKL,KAAKM,uBAAuB;GAEhE,AADA,KAAKN,KAAKI,cAAc,GACxB,KAAKG,cAAc;EACrB,CAAC;CACH;CAEAC,uBAAwB;EAGtB,AAFA,MAAMA,qBAAqB,GAE3B,KAAKH,4BAA4B;CACnC;CAEUI,SAAU;EAOlB,OANK,KAAKT,KAAKU,SAASC,YAMjBjC,CAAI;oBACK,KAAKsB,KAAKU,SAASC,UAAS;QANnCjC,CAAI;;;CAQf;AACF,GAAC,CAAAkC,GAAA,CAAAf,GAAAD,IAAAiB,GAAA,CAAA9B,GAAA+B,MAAAC,EAAAxB,GAAA,CAAA;CAAAH;CAAA;CAAA;AAAA,CAAA,GAAAN,GAAA,GAAA,KAAA,GAvCmCN,CAAY,GAAAe,IAAAyB,IAAA,cAAAC,EAAA;CAAAxB,cAAA;EAAA,MAAAV,CAAA,GAAAe,EAAA,MAAA,UAC9BjB,CAAM,GAAAiB,EAAA,MAAA,UACN,EACdoB,WAAWC,MAAsB,CAACA,EAAUnB,KAAKU,SAASC,UAC5D,CAAC,GAAAG,EAAA;CAAA;AAAA,GAAAhB,EAAAkB,GAAAhC,GAAA,KAAA,CAAA,GAAAgC,GAAA;;;ACXH,IAAA,IAAeK"}
|
|
@@ -10,7 +10,7 @@ var o = class extends HTMLElement {
|
|
|
10
10
|
customElements.get("icon-svg-spinners-180-ring") || customElements.define("icon-svg-spinners-180-ring", o);
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/components/button/Button.styles.css
|
|
13
|
-
var s = n`:host{--text-color:var(--solid-ui-color-white);--border-color:var(--solid-ui-color-primary);--background-color:var(--solid-ui-color-primary);--hover-text-color:var(--text-color);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:var(--solid-ui-color-tertiary);display:inline-flex;& button{font-size:var(--solid-ui-font-size-md);color:var(--text-color);background:var(--background-color);border:1px solid var(--border-color);border-radius:5px;flex:1;justify-content:center;align-items:center;gap:5px;padding:7px 12px;font-weight:600;display:flex;position:relative;&:disabled{opacity:.5;cursor:not-allowed}&:hover:not(:disabled){color:var(--hover-text-color);background:var(--hover-background-color);border-color:var(--hover-border-color)}& icon-svg-spinners-180-ring,& ::slotted([slot=left-icon]),& ::slotted([slot=right-icon]){width:var(--solid-ui-font-size-md);height:var(--solid-ui-font-size-md)}&:after{content:\"\";width:var(--solid-ui-clickable-area);height:var(--solid-ui-clickable-area);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}}}:host([data-has-icon-slot]) button{padding:4px;& ::slotted([slot=icon]){width:var(--solid-ui-font-size-2xl);height:var(--solid-ui-font-size-2xl)}}:host([variant=secondary]) button{--text-color:var(--solid-ui-color-gray-800);--border-color:var(--solid-ui-color-slate-400);--background-color:var(--solid-ui-color-white);--hover-text-color:var(--solid-ui-color-white);--hover-background-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary)}:host([variant=tertiary]) button{--text-color:var(--solid-ui-color-primary);--border-color:transparent;--background-color:transparent;--hover-text-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:transparent;border-width:0 0 1px;border-radius:0;padding:0}:host([variant=outline]) button{--text-color:currentColor;--border-color:currentColor;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:currentColor;--hover-background-color:color-mix(in srgb, currentColor 25%, transparent)}:host([variant=ghost]) button{--text-color:currentColor;--border-color:transparent;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:transparent;--hover-background-color:color-
|
|
13
|
+
var s = n`:host{--text-color:var(--solid-ui-color-white);--border-color:var(--solid-ui-color-primary);--background-color:var(--solid-ui-color-primary);--hover-text-color:var(--text-color);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:var(--solid-ui-color-tertiary);display:inline-flex;& button{font-size:var(--solid-ui-font-size-md);color:var(--text-color);background:var(--background-color);border:1px solid var(--border-color);border-radius:5px;flex:1;justify-content:center;align-items:center;gap:5px;padding:7px 12px;font-weight:600;display:flex;position:relative;&:disabled{opacity:.5;cursor:not-allowed}&:hover:not(:disabled){color:var(--hover-text-color);background:var(--hover-background-color);border-color:var(--hover-border-color)}& icon-svg-spinners-180-ring,& ::slotted([slot=left-icon]),& ::slotted([slot=right-icon]){width:var(--solid-ui-font-size-md);height:var(--solid-ui-font-size-md)}&:after{content:\"\";width:var(--solid-ui-clickable-area);height:var(--solid-ui-clickable-area);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}}}:host([data-has-icon-slot]) button{padding:4px;& ::slotted([slot=icon]){width:var(--solid-ui-font-size-2xl);height:var(--solid-ui-font-size-2xl)}}:host([variant=secondary]) button{--text-color:var(--solid-ui-color-gray-800);--border-color:var(--solid-ui-color-slate-400);--background-color:var(--solid-ui-color-white);--hover-text-color:var(--solid-ui-color-white);--hover-background-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary)}:host([variant=tertiary]) button{--text-color:var(--solid-ui-color-primary);--border-color:transparent;--background-color:transparent;--hover-text-color:var(--solid-ui-color-tertiary);--hover-border-color:var(--solid-ui-color-tertiary);--hover-background-color:transparent;border-width:0 0 1px;border-radius:0;padding:0}:host([variant=outline]) button{--text-color:currentColor;--border-color:currentColor;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:currentColor;--hover-background-color:color-mix(in srgb, currentColor 25%, transparent)}:host([variant=ghost]) button{--text-color:currentColor;--border-color:transparent;--background-color:transparent;--hover-text-color:currentColor;--hover-border-color:transparent;--hover-background-color:var(--solid-ui-color-primary-hover)}`, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E;
|
|
14
14
|
function D(e, t, n) {
|
|
15
15
|
O(e, t), t.set(e, n);
|
|
16
16
|
}
|
|
@@ -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-
|
|
286
|
+
//# sourceMappingURL=button-B9-nlEpz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-
|
|
1
|
+
{"version":3,"file":"button-B9-nlEpz.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: var(--solid-ui-color-primary-hover);\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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"}
|