pocketbase/ui/src/components/settings/AuthProviderCard.svelte

79 lines
1.9 KiB
Svelte
Raw Normal View History

2023-04-13 20:38:12 +08:00
<script>
import AuthProviderPanel from "@/components/settings/AuthProviderPanel.svelte";
export let provider = {};
export let config = {};
let providerPanel;
</script>
<div class="provider-card">
<figure class="provider-logo">
{#if provider.logo}
<img src={provider.logo} alt="{provider.title} logo" />
{/if}
</figure>
<div class="title">{provider.title}</div>
<em class="txt-hint txt-sm m-r-auto">({provider.key.slice(0, -4)})</em>
{#if config.enabled}
<div class="label label-success">Enabled</div>
{/if}
<button
type="button"
class="btn btn-circle btn-hint btn-transparent"
aria-label="Provider settings"
on:click={() => {
providerPanel?.show(
provider,
Object.assign({}, config, {
enabled: config.clientId ? config.enabled : true,
})
);
}}
>
<i class="ri-settings-4-line" />
</button>
</div>
<AuthProviderPanel
bind:this={providerPanel}
on:submit={(e) => {
if (e.detail[provider.key]) {
config = e.detail[provider.key];
}
}}
/>
<style lang="scss">
.provider-logo {
$boxSize: 32px;
$imgSize: 20px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
width: $boxSize;
height: $boxSize;
border-radius: var(--baseRadius);
background: var(--bodyColor);
padding: 0;
gap: 0;
img {
max-width: $imgSize;
max-height: $imgSize;
height: auto;
flex-shrink: 0;
}
}
.provider-card {
display: flex;
align-items: center;
width: 100%;
height: 100%;
gap: 10px;
padding: 10px;
border-radius: var(--baseRadius);
border: 1px solid var(--baseAlt1Color);
}
</style>