Skip to content

Commit b652798

Browse files
Merge pull request #3 from appwrite/arman_educational
Arman educational
2 parents 220dae7 + e37216a commit b652798

25 files changed

Lines changed: 468 additions & 32 deletions

src/lib/components/avatar.svelte

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script lang="ts">
2+
export let size: number;
3+
export let src: string;
4+
export let name: string;
5+
</script>
6+
7+
<img
8+
width={size}
9+
height={size}
10+
class="avatar"
11+
style="--size: {size}px"
12+
{src}
13+
title={name}
14+
alt={name} />

src/lib/components/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,7 @@ export { default as DropList } from './dropList.svelte';
1313
export { default as DropListItem } from './dropListItem.svelte';
1414
export { default as DropListLink } from './dropListLink.svelte';
1515
export { default as Collapsible } from './collapsible.svelte';
16+
export { default as Avatar } from './avatar.svelte';
17+
export { default as SwitchBox } from './switchBox.svelte';
18+
export { default as SwitchBoxes } from './switchBoxes.svelte';
19+
export { default as InfoSection } from './infoSection.svelte';
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<div>
2+
<i class="icon-info-circled" />
3+
<slot />
4+
</div>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<script lang="ts">
2+
import { createEventDispatcher } from 'svelte';
3+
4+
type SwitchBox = {
5+
label: string;
6+
id: string;
7+
src: string;
8+
alt: string;
9+
href: string;
10+
linkText: string;
11+
value: boolean;
12+
required: boolean;
13+
disabled: boolean;
14+
wip: boolean;
15+
};
16+
17+
export let box: SwitchBox;
18+
19+
let { label, id, src, alt, href, linkText, disabled, required, value, wip } = box;
20+
21+
const dispatch = createEventDispatcher();
22+
23+
//TODO: move SwitchBox type outside component
24+
</script>
25+
26+
<li class="card">
27+
<label class="switch-box" for={id}>
28+
<div class="switch-box-image">
29+
<img height="50" width="50" src={src || 'https://via.placeholder.com/50'} {alt} />
30+
</div>
31+
<span class="switch-box-title">{label}</span>
32+
{#if !wip}
33+
<a {href} class="link" target="_blank">
34+
<span class="text">{linkText || 'Docs'} </span>
35+
<span class="icon-link-ext" aria-hidden="true" />
36+
</a>
37+
<input
38+
{id}
39+
{disabled}
40+
{required}
41+
type="checkbox"
42+
class="switch"
43+
role="switch"
44+
bind:checked={value}
45+
on:change={() => dispatch('updated', { value, id })} />
46+
{/if}
47+
</label>
48+
</li>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<script>
2+
import SwitchBox from './switchBox.svelte';
3+
import { createEventDispatcher } from 'svelte';
4+
const dispatch = createEventDispatcher();
5+
6+
export let boxes;
7+
</script>
8+
9+
<ul class="grid-box">
10+
{#each boxes as box}
11+
<SwitchBox {box} on:updated={(e) => dispatch('updated', e.detail)} />
12+
{/each}
13+
</ul>

src/lib/elements/forms/inputPassword.svelte

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
export let required = false;
1010
export let disabled = false;
1111
export let autofocus = false;
12+
export let meter = true;
1213
1314
let element: HTMLInputElement;
1415
@@ -33,14 +34,16 @@
3334
class="input-text"
3435
bind:value
3536
bind:this={element} />
36-
<meter
37-
value={strength > 100 ? 100 : strength}
38-
min="0"
39-
max="100"
40-
class="password-meter"
41-
class:is-weak={strength !== 0 && strength <= 33}
42-
class:is-medium={strength > 33 && strength <= 66}
43-
class:is-strong={strength > 66 && strength <= 100}
44-
aria-label="Password strength week" />
37+
{#if meter}
38+
<meter
39+
value={strength > 100 ? 100 : strength}
40+
min="0"
41+
max="100"
42+
class="password-meter"
43+
class:is-weak={strength !== 0 && strength <= 33}
44+
class:is-medium={strength > 33 && strength <= 66}
45+
class:is-strong={strength > 66 && strength <= 100}
46+
aria-label="Password strength weak" />
47+
{/if}
4548
</div>
4649
</FormItem>

src/lib/elements/forms/inputSearch.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
}
1818
});
1919
20-
const onKeyUp = (event: KeyboardEvent) => {
20+
const valueChange = (event: Event) => {
2121
clearTimeout(timer);
2222
timer = setTimeout(() => {
2323
const target = event.target as HTMLInputElement;
@@ -32,5 +32,5 @@
3232
{required}
3333
type="search"
3434
class="input-text"
35-
on:keyup={onKeyUp}
35+
on:input={valueChange}
3636
bind:this={element} />

src/lib/elements/forms/inputText.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
export let required = false;
1010
export let disabled = false;
1111
export let autofocus = false;
12+
export let autocomplete = true;
1213
export let maxlength: number = null;
1314
1415
let element: HTMLInputElement;
@@ -29,6 +30,7 @@
2930
{disabled}
3031
{required}
3132
{maxlength}
33+
autocomplete={autocomplete ? 'on' : 'off'}
3234
type="text"
3335
class="input-text"
3436
bind:value

src/lib/layout/footer.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<li class="inline-links-item">
55
<a class="link" href="https://github.com/appwrite/appwrite" target="_blank">
66
<span class="icon-github-circled" aria-hidden="true" />
7-
<span class="text">GitHun</span>
7+
<span class="text">GitHub</span>
88
</a>
99
</li>
1010
<li class="inline-links-item">

src/lib/layout/header.svelte

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { goto } from '$app/navigation';
33
import { base } from '$app/paths';
44
import { page } from '$app/stores';
5-
import { DropList, DropListItem, DropListLink } from '$lib/components';
5+
import { DropList, DropListItem, DropListLink, Avatar } from '$lib/components';
66
import { app } from '$lib/stores/app';
77
import { sdkForConsole } from '$lib/stores/sdk';
88
import { user } from '$lib/stores/user';
@@ -46,12 +46,10 @@
4646
<DropList bind:show={showDropdown} position="bottom" horizontal="left">
4747
<button class="transparent-button" on:click={() => (showDropdown = !showDropdown)}>
4848
<span class="is-only-desktop">{$user.name}</span>
49-
<img
50-
width="40"
51-
height="40"
52-
class="user-image"
53-
src={sdkForConsole.avatars.getInitials($user.name, 40, 40).toString()}
54-
alt="" />
49+
<Avatar
50+
size={50}
51+
name={$user.name}
52+
src={sdkForConsole.avatars.getInitials($user.name, 50, 50).toString()} />
5553
</button>
5654
<svelte:fragment slot="list">
5755
<DropListLink href="/console/$me" icon="user">Your Account</DropListLink>

0 commit comments

Comments
 (0)