Fix provider wizard aside

This commit is contained in:
ernstmul
2025-05-08 11:38:19 +02:00
parent be29cec405
commit 45f0ba9ad2
4 changed files with 143 additions and 136 deletions
+1 -1
View File
@@ -27,7 +27,7 @@
"@appwrite.io/pink-icons": "0.25.0",
"@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f",
"@appwrite.io/pink-legacy": "^1.0.3",
"@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@504c653",
"@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@247c120",
"@popperjs/core": "^2.11.8",
"@sentry/sveltekit": "^8.38.0",
"@stripe/stripe-js": "^3.5.0",
+9 -9
View File
@@ -27,8 +27,8 @@ importers:
specifier: ^1.0.3
version: 1.0.3
'@appwrite.io/pink-svelte':
specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@504c653
version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@504c653(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3)
specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@247c120
version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@247c120(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3)
'@popperjs/core':
specifier: ^2.11.8
version: 2.11.8
@@ -258,8 +258,8 @@ packages:
resolution: {tarball: https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@f76aff1}
version: 1.2.1
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@504c653542de13ba8b4815805806f301df92790a':
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@504c653542de13ba8b4815805806f301df92790a}
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@247c1201ec78ba5756af404269f6f97f24acc9e5':
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@247c1201ec78ba5756af404269f6f97f24acc9e5}
version: 1.0.0-next.7
peerDependencies:
svelte: ^4.0.0
@@ -279,8 +279,8 @@ packages:
'@appwrite.io/pink-legacy@1.0.3':
resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==}
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@504c653':
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@504c653}
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@247c120':
resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@247c120}
version: 1.0.0-next.85
peerDependencies:
react-dom: ^18.0.0
@@ -3627,7 +3627,7 @@ snapshots:
'@appwrite.io/console@https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@f76aff1': {}
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@504c653542de13ba8b4815805806f301df92790a(svelte@5.25.3)':
'@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@247c1201ec78ba5756af404269f6f97f24acc9e5(svelte@5.25.3)':
dependencies:
svelte: 5.25.3
@@ -3644,9 +3644,9 @@ snapshots:
'@appwrite.io/pink-icons': 1.0.0
the-new-css-reset: 1.11.3
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@504c653(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3)':
'@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@247c120(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3)':
dependencies:
'@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@504c653542de13ba8b4815805806f301df92790a(svelte@5.25.3)
'@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@247c1201ec78ba5756af404269f6f97f24acc9e5(svelte@5.25.3)
'@floating-ui/dom': 1.6.13
'@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.25.3))(svelte@5.25.3)
'@melt-ui/svelte': 0.86.6(svelte@5.25.3)
@@ -10,11 +10,24 @@
import { base } from '$app/paths';
import { project } from '../../store';
import { wizard } from '$lib/stores/wizard';
import { provider, providerParams } from './wizard/store';
import { ID, type Models } from '@appwrite.io/console';
import { provider, providerParams, providerType } from './wizard/store';
import { ID, MessagingProviderType, type Models } from '@appwrite.io/console';
import { Providers } from '../provider.svelte';
import { Button, Form } from '$lib/elements/forms';
import { Fieldset, Layout } from '@appwrite.io/pink-svelte';
import { Fieldset, Layout, Typography, ActionList, Accordion } from '@appwrite.io/pink-svelte';
import { providers } from '$routes/(console)/project-[project]/messaging/providers/store';
import { getProviderText } from '$routes/(console)/project-[project]/messaging/helper';
import {
ClickableList,
ClickableListItem,
Collapsible,
CollapsibleItem
} from '$lib/components';
import { newMemberModal } from '$lib/stores/organization';
import CreateMember from '$routes/(console)/organization-[organization]/createMember.svelte';
import { IconBookOpen, IconInfo, IconUserGroup } from '@appwrite.io/pink-icons-svelte';
let open = false;
async function create() {
try {
@@ -167,7 +180,7 @@
});
</script>
<Wizard title="Create provider">
<Wizard title="Create provider" columnSize="l">
<Form onSubmit={create} isModal={false}>
<Layout.Stack gap="xxl">
<Fieldset legend="Provider">
@@ -181,4 +194,119 @@
</Layout.Stack>
</Layout.Stack>
</Form>
<svelte:fragment slot="aside">
<Typography.Text variant="m-500">Need a hand?</Typography.Text>
{console.log('match', $providerType == MessagingProviderType.Push)}
<ActionList.Root>
{#if providers[$providerType].providers[$provider].needAHand}
{@const needAHand = providers[$providerType].providers[$provider].needAHand}
<ActionList.Item.Accordion
title={`How to enable ${getProviderText($provider)} ${
$providerType == MessagingProviderType.Push
? 'notifications'
: getProviderText($provider)
}?`}
icon={IconInfo}>
<Layout.Stack>
{#each needAHand as p}
<p>
{@html p}
</p>
{/each}
</Layout.Stack>
</ActionList.Item.Accordion>
{/if}
<ActionList.Item.Anchor
href={`https://appwrite.io/docs/products/messaging/${$provider}`}
title="Read the full guide in the documentation"
icon={IconBookOpen} />
<ActionList.Item.Button
on:click={() => {
$newMemberModal = true;
}}
title="Invite a team member to complete this step"
icon={IconUserGroup} />
</ActionList.Root>
<!-- <div class="need-a-hand u-flex-vertical u-gap-8">-->
<!-- <p class="body-text-2 u-bold u-margin-block-start-48">Need a hand?</p>-->
<!-- <div>-->
<!-- &lt;!&ndash;{#if providers[$providerType].providers[$provider].needAHand}&ndash;&gt;-->
<!-- &lt;!&ndash; {@const needAHand = providers[$providerType].providers[$provider].needAHand}&ndash;&gt;-->
<!-- &lt;!&ndash; <div&ndash;&gt;-->
<!-- &lt;!&ndash; class="how-to-enable u-padding-inline-8 u-padding-0"&ndash;&gt;-->
<!-- &lt;!&ndash; style={!open ? '' : 'background-color: hsl(var(&#45;&#45;p-bg-color-hover));'}>&ndash;&gt;-->
<!-- &lt;!&ndash; <Collapsible>&ndash;&gt;-->
<!-- &lt;!&ndash; <CollapsibleItem withIndentation bind:open>&ndash;&gt;-->
<!-- &lt;!&ndash; <svelte:fragment slot="beforetitle">&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="u-flex u-cross-center u-gap-16">&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="avatar is-size-small">&ndash;&gt;-->
<!-- &lt;!&ndash; <span&ndash;&gt;-->
<!-- &lt;!&ndash; class="icon-info"&ndash;&gt;-->
<!-- &lt;!&ndash; style:&#45;&#45;p-text-size="1.25rem"&ndash;&gt;-->
<!-- &lt;!&ndash; aria-hidden="true"></span>&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; <span class="title body-text-2 u-small" class:u-bold={open}&ndash;&gt;-->
<!-- &lt;!&ndash; >How to enable {getProviderText($provider)}&ndash;&gt;-->
<!-- &lt;!&ndash; {#if $providerType == MessagingProviderType.Push}notifications{:else}{getProviderText(&ndash;&gt;-->
<!-- &lt;!&ndash; $provider&ndash;&gt;-->
<!-- &lt;!&ndash; )}{/if} service?</span>&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; </svelte:fragment>&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="u-flex-vertical u-gap-16">&ndash;&gt;-->
<!-- &lt;!&ndash; {#each needAHand as p}&ndash;&gt;-->
<!-- &lt;!&ndash; <p>&ndash;&gt;-->
<!-- &lt;!&ndash; {@html p}&ndash;&gt;-->
<!-- &lt;!&ndash; </p>&ndash;&gt;-->
<!-- &lt;!&ndash; {/each}&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; </CollapsibleItem>&ndash;&gt;-->
<!-- &lt;!&ndash; </Collapsible>&ndash;&gt;-->
<!-- &lt;!&ndash; </div>&ndash;&gt;-->
<!-- &lt;!&ndash; <div class="u-margin-block-start-4 u-sep-block-end"></div>&ndash;&gt;-->
<!-- &lt;!&ndash;{/if}&ndash;&gt;-->
<!-- <ClickableList>-->
<!-- <ClickableListItem-->
<!-- href={`https://appwrite.io/docs/products/messaging/${$provider}`}-->
<!-- external>-->
<!-- <div class="u-flex u-cross-center u-main-space-between">-->
<!-- <div class="u-flex u-cross-center u-gap-16">-->
<!-- <div class="avatar is-size-small">-->
<!-- <span-->
<!-- class="icon-book-open"-->
<!-- style:&#45;&#45;p-text-size="1.25rem"-->
<!-- aria-hidden="true"></span>-->
<!-- </div>-->
<!-- <p>Read the full guide in the documentation</p>-->
<!-- </div>-->
<!-- <span class="icon-arrow-sm-right u-font-size-20" aria-hidden="true"-->
<!-- ></span>-->
<!-- </div>-->
<!-- </ClickableListItem>-->
<!-- <ClickableListItem-->
<!-- on:click={() => {-->
<!-- $newMemberModal = true;-->
<!-- }}>-->
<!-- <div class="u-flex u-cross-center u-main-space-between">-->
<!-- <div class="u-flex u-cross-center u-gap-16">-->
<!-- <div class="avatar is-size-small">-->
<!-- <span-->
<!-- class="icon-user-group"-->
<!-- style:&#45;&#45;p-text-size="1.25rem"-->
<!-- aria-hidden="true"></span>-->
<!-- </div>-->
<!-- <p>Invite a team member to complete this step</p>-->
<!-- </div>-->
<!-- <span class="icon-arrow-sm-right u-font-size-20" aria-hidden="true"-->
<!-- ></span>-->
<!-- </div>-->
<!-- </ClickableListItem>-->
<!-- </ClickableList>-->
<!-- </div>-->
<!-- </div>-->
</svelte:fragment>
{#if $newMemberModal}
<CreateMember bind:showCreate={$newMemberModal} />
{/if}
</Wizard>
@@ -4,8 +4,7 @@
import { providers } from '../store';
import { providerType, provider, providerParams } from './store';
import SettingsFormList from '../settingsFormList.svelte';
import { newMemberModal } from '$lib/stores/organization';
import CreateMember from '$routes/(console)/organization-[organization]/createMember.svelte';
import { MessagingProviderType } from '@appwrite.io/console';
import {
Collapsible,
@@ -17,7 +16,6 @@
let files: Record<string, FileList> = {};
$: inputs = providers[$providerType].providers[$provider].configure;
let open = false;
$: {
files;
@@ -65,7 +63,6 @@
</script>
<WizardStep {beforeSubmit}>
<svelte:fragment slot="title">Settings</svelte:fragment>
<svelte:fragment slot="subtitle">
Set up the credentials below to enable {providers[$providerType].providers[$provider].title}
for sending
@@ -73,122 +70,4 @@
</svelte:fragment>
<SettingsFormList bind:files {inputs} bind:params={$providerParams[$provider]} />
<div class="need-a-hand u-flex-vertical u-gap-8">
<p class="body-text-2 u-bold u-margin-block-start-48">Need a hand?</p>
<div>
{#if providers[$providerType].providers[$provider].needAHand}
{@const needAHand = providers[$providerType].providers[$provider].needAHand}
<div
class="how-to-enable u-padding-inline-8 u-padding-0"
style={!open ? '' : 'background-color: hsl(var(--p-bg-color-hover));'}>
<Collapsible>
<CollapsibleItem withIndentation bind:open>
<svelte:fragment slot="beforetitle">
<div class="u-flex u-cross-center u-gap-16">
<div class="avatar is-size-small">
<span
class="icon-info"
style:--p-text-size="1.25rem"
aria-hidden="true"></span>
</div>
<span class="title body-text-2 u-small" class:u-bold={open}
>How to enable {getProviderText($provider)}
{#if $providerType == MessagingProviderType.Push}notifications{:else}{getProviderText(
$provider
)}{/if} service?</span>
</div>
</svelte:fragment>
<div class="u-flex-vertical u-gap-16">
{#each needAHand as p}
<p>
{@html p}
</p>
{/each}
</div>
</CollapsibleItem>
</Collapsible>
</div>
<div class="u-margin-block-start-4 u-sep-block-end"></div>
{/if}
<ClickableList>
<ClickableListItem
href={`https://appwrite.io/docs/products/messaging/${$provider}`}
external>
<div class="u-flex u-cross-center u-main-space-between">
<div class="u-flex u-cross-center u-gap-16">
<div class="avatar is-size-small">
<span
class="icon-book-open"
style:--p-text-size="1.25rem"
aria-hidden="true"></span>
</div>
<p>Read the full guide in the documentation</p>
</div>
<span class="icon-arrow-sm-right u-font-size-20" aria-hidden="true"></span>
</div>
</ClickableListItem>
<ClickableListItem on:click={() => ($newMemberModal = true)}>
<div class="u-flex u-cross-center u-main-space-between">
<div class="u-flex u-cross-center u-gap-16">
<div class="avatar is-size-small">
<span
class="icon-user-group"
style:--p-text-size="1.25rem"
aria-hidden="true"></span>
</div>
<p>Invite a team member to complete this step</p>
</div>
<span class="icon-arrow-sm-right u-font-size-20" aria-hidden="true"></span>
</div>
</ClickableListItem>
</ClickableList>
</div>
</div>
</WizardStep>
{#if $newMemberModal}
<CreateMember bind:showCreate={$newMemberModal} />
{/if}
<style lang="scss">
.need-a-hand {
--p-bg-color-hover: var(--color-neutral-5);
.how-to-enable {
border-radius: var(--border-radius-small);
&:hover,
&:focus {
background-color: hsl(var(--p-bg-color-hover));
.title {
font-weight: 600;
}
}
}
:global(.clickable-list) {
--border: var(--color-neutral-5);
--p-clickable-button-bg-color-hover: var(--border);
:global(.theme-dark) & {
--border: var(--color-neutral-85);
}
}
:global(.clickable-list-button) {
padding-inline: 0.5rem;
}
:global(.theme-dark) & {
--p-bg-color-hover: var(--color-neutral-85);
}
}
:global(.clickable-list-button):hover p,
:global(.clickable-list-button):focus p {
font-weight: 600;
}
</style>