Svelte Component Templates
Base Svelte Component Template
<script lang="ts">
import { onMount } from 'svelte';
import { writable } from 'svelte/store';
import { OASISClient } from '@oasis/api-client';
// Props
export let avatarId: string;
export let theme: 'light' | 'dark' = 'dark';
// State
let data = writable<any>(null);
let loading = writable<boolean>(false);
let error = writable<string | null>(null);
const client = new OASISClient();
// Lifecycle
onMount(async () => {
await loadData();
});
// Methods
async function loadData() {
loading.set(true);
try {
const result = await client.someMethod(avatarId);
data.set(result);
} catch (err) {
error.set(err.message);
} finally {
loading.set(false);
}
}
function handleAction() {
// Your logic
}
</script>
<div class="oasis-component" class:dark={theme === 'dark'}>
{#if $loading}
<div class="loading">Loading...</div>
{:else if $error}
<div class="error">{$error}</div>
{:else if $data}
<div class="content">
<!-- Your content here -->
</div>
{/if}
</div>
<style>
.oasis-component {
padding: 1.5rem;
border-radius: 8px;
}
.oasis-component.dark {
background: #1a1a1a;
color: white;
}
.loading {
text-align: center;
padding: 2rem;
}
</style>Using Svelte Stores
Priority Components Templates
1. AvatarSSO.svelte
2. KarmaDisplay.svelte
3. NFTCard.svelte
Reactive Patterns
Event Handling
Remaining Components
Last updated