From 4b740e780b31affbbbb67961abc11155165d82ae Mon Sep 17 00:00:00 2001 From: madkarmaa Date: Sat, 10 May 2025 22:11:37 +0200 Subject: [PATCH] refactor: separate props --- src/lib/components/atoms/Button.svelte | 1 - src/lib/components/organisms/Banner.svelte | 29 ++++++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/lib/components/atoms/Button.svelte b/src/lib/components/atoms/Button.svelte index dcdf3fd..4275107 100644 --- a/src/lib/components/atoms/Button.svelte +++ b/src/lib/components/atoms/Button.svelte @@ -31,7 +31,6 @@ >; type Props = ButtonProps | LinkProps; - let { type, // https://svelte.dev/docs/svelte/compiler-warnings#svelte_component_deprecated diff --git a/src/lib/components/organisms/Banner.svelte b/src/lib/components/organisms/Banner.svelte index 7295d6d..1423c66 100644 --- a/src/lib/components/organisms/Banner.svelte +++ b/src/lib/components/organisms/Banner.svelte @@ -7,21 +7,28 @@ import type { Snippet } from 'svelte'; import Button from '$components/atoms/Button.svelte'; + import type { Prettify } from '$types'; - type Props = { + type BaseProps = { children: Snippet; level: 'info' | 'warning' | 'caution'; - } & ( - | { - permanent?: false; - onDismiss?: () => void; - } - | { - permanent: true; - onDismiss?: never; // permanent banner doesn't have a dismiss button - } - ); + }; + type NonPermanentProps = Prettify< + BaseProps & { + permanent?: false; + onDismiss?: () => void; + } + >; + + type PermanentProps = Prettify< + BaseProps & { + permanent: true; + onDismiss?: never; // permanent banner doesn't have a dismiss button + } + >; + + type Props = NonPermanentProps | PermanentProps; let { children, level = 'info', permanent = false, onDismiss }: Props = $props(); const icons = { info: Info, warning: Warning, caution: Caution };