Files
classroomio/apps/dashboard/src/lib/features/ui/analytics/activity-card.svelte
T

59 lines
1.4 KiB
Svelte
Raw Normal View History

<script lang="ts">
import type { Component } from 'svelte';
2026-03-09 11:18:22 +01:00
import { cn } from '@cio/ui/tools';
interface Activity {
icon: Component;
title: string;
percentage: number | string;
description: string;
hidePercentage?: boolean;
2026-03-09 11:18:22 +01:00
className?: string;
}
2025-11-01 15:49:29 +01:00
interface Props {
activity: Activity;
2026-03-09 11:18:22 +01:00
className?: string;
2026-03-18 23:39:12 +01:00
classes?: {
container?: string;
icon?: string;
title?: string;
percentage?: string;
description?: string;
};
2025-11-01 15:49:29 +01:00
}
2026-03-18 23:39:12 +01:00
let { activity, className = '', classes = {} }: Props = $props();
</script>
<div
2026-03-09 11:18:22 +01:00
class={cn(
2026-03-18 23:39:12 +01:00
'flex w-full flex-col items-center justify-evenly gap-2 rounded-xl border p-3 md:flex-row md:px-5 md:py-3',
className,
classes.container
2026-03-09 11:18:22 +01:00
)}
>
<div class="bg-primary-200 w-fit rounded-full p-4 text-black">
2025-11-01 15:49:29 +01:00
<activity.icon />
</div>
<div>
2026-03-18 23:39:12 +01:00
<p class={cn('text-center text-sm font-medium text-gray-600 md:text-left dark:text-gray-200', classes.title)}>
{activity.title}
</p>
2026-03-18 23:39:12 +01:00
<p class={cn('text-center text-2xl md:text-left', classes.percentage)}>
{activity.percentage}
{#if !activity.hidePercentage}
%
{/if}
</p>
2026-03-09 11:18:22 +01:00
{#if activity.description}
2026-03-18 23:39:12 +01:00
<p
class={cn('text-center text-xs text-gray-500 md:text-left md:text-sm dark:text-gray-300', classes.description)}
>
2026-03-09 11:18:22 +01:00
{activity.description}
</p>
{/if}
</div>
</div>