Svelte Component Templates
Build reactive OASIS components with Svelte's elegant syntax.
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
AvatarDetail.svelte
NFTGallery.svelte
Messaging.svelte
DataManager.svelte
ProviderSelector.svelte
SettingsPanel.svelte
NotificationToast.svelte
SocialFeed.svelte
FriendsList.svelte
GroupManager.svelte
Leaderboard.svelte
Achievements.svelte
GeoNFTMap.svelte
ChatWidget.svelte
Last updated