Progress.svelte 592 B

12345678910111213141516171819
  1. <script lang="ts">
  2. import type { BaseComponentProps } from "@json-render/svelte";
  3. import type { ShadcnProps } from "./catalog.js";
  4. import { Progress } from "./ui/progress/index.js";
  5. interface Props extends BaseComponentProps<ShadcnProps<"Progress">> {}
  6. let { props }: Props = $props();
  7. const max = $derived(props.max ?? 100);
  8. const percent = $derived(Math.max(0, Math.min(100, (props.value / max) * 100)));
  9. </script>
  10. <div class="space-y-1">
  11. {#if props.label}
  12. <div class="text-sm text-muted-foreground">{props.label}</div>
  13. {/if}
  14. <Progress value={percent} />
  15. </div>