StatsCard.svelte 991 B

123456789101112131415161718192021222324252627
  1. <script>
  2. export let title;
  3. export let value;
  4. export let change;
  5. export let icon;
  6. export let iconUrl = null;
  7. export let iconSvg = null;
  8. </script>
  9. <div class="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg p-6 hover:shadow">
  10. <div class="flex justify-between items-start mb-4">
  11. <div>
  12. <div class="text-gray-500 dark:text-gray-300 text-sm font-medium">{title}</div>
  13. <div class="text-2xl font-bold text-gray-900 dark:text-gray-100">{value}</div>
  14. <div class="text-gray-500 dark:text-gray-400 text-xs">{change}</div>
  15. </div>
  16. <div class="w-10 h-10 bg-gray-100 dark:bg-gray-700 rounded flex items-center justify-center text-xl text-gray-700 dark:text-gray-200 [&>svg]:w-6 [&>svg]:h-6">
  17. {#if iconSvg}
  18. {@html iconSvg}
  19. {:else if iconUrl}
  20. <img src={iconUrl} alt="" aria-hidden="true" class="w-6 h-6" />
  21. {:else}
  22. {icon}
  23. {/if}
  24. </div>
  25. </div>
  26. </div>