Spaces:
Build error
Build error
File size: 2,073 Bytes
77ad024 150e09e 77ad024 150e09e 77ad024 150e09e 77ad024 150e09e 77ad024 150e09e 77ad024 150e09e 77ad024 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
<!-- src/App.svelte -->
<script lang="ts">
import { onMount } from 'svelte';
import Card from './lib/Card.svelte';
import Chart from './lib/Chart.svelte';
let loading = true;
let error: string | null = null;
let stats = {
revenue: 0,
users: 0,
orders: 0,
conversion: 0
};
onMount(async () => {
try {
// Simulate API call
await new Promise(resolve => setTimeout(resolve, 1000));
stats = {
revenue: 124500,
users: 2341,
orders: 342,
conversion: 3.2
};
loading = false;
} catch (err) {
error = 'Failed to load dashboard data';
loading = false;
}
});
const formatCurrency = (amount: number) => {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0
}).format(amount);
};
const formatNumber = (num: number) => {
return new Intl.NumberFormat('en-US').format(num);
};
</script>
<main class="container">
<header>
<h1>Dashboard</h1>
<p class="subtitle">Overview of your business performance</p>
</header>
{#if loading}
<div class="loading">
<div class="spinner"></div>
<p>Loading dashboard...</p>
</div>
{:else if error}
<div class="error">
<p>{error}</p>
</div>
{:else}
<section class="grid">
<Card
title="Revenue"
value={formatCurrency(stats.revenue)}
change="+12.5%"
positive={true}
/>
<Card
title="Active Users"
value={formatNumber(stats.users)}
change="+5.2%"
positive={true}
/>
<Card
title="Orders"
value={formatNumber(stats.orders)}
change="-2.4%"
positive={false}
/>
<Card
title="Conversion"
value={`${stats.conversion}%`}
change="+0.3%"
positive={true}
/>
</section>
<section class="chart-section">
<h2>Revenue Trend</h2>
<Chart />
</section>
{/if}
</main> |