Files
pages/src/lib/components/callout.svelte

101 lines
2.3 KiB
Svelte
Raw Normal View History

2026-04-02 22:54:42 +02:00
<script lang="ts">
let {
content,
type,
}: {
content: string[];
2026-04-03 21:52:49 +02:00
// valid values: warn, quote, info. defaults to warn
2026-04-02 22:54:42 +02:00
type: string;
} = $props();
</script>
2026-04-03 00:03:05 +02:00
{#snippet calloutContent()}
2026-04-02 22:54:42 +02:00
<p class="callout-symbol">
{#if type == "quote"}
»
2026-04-03 21:52:49 +02:00
{:else if type == "info"}
i
2026-04-02 22:54:42 +02:00
{:else}
!
{/if}
</p>
<div class="callout-text-container">
{#each content as p}
{#if type == "quote"}
2026-04-02 23:57:12 +02:00
<p class="callout-quote-text">"{@html p}"</p>
2026-04-02 22:54:42 +02:00
{:else}
2026-04-02 23:57:12 +02:00
<p class="callout-text">{@html p}</p>
2026-04-02 22:54:42 +02:00
{/if}
{/each}
</div>
2026-04-03 00:03:05 +02:00
{/snippet}
{#if type == "quote"}
<div class="callout-container callout-quote">
{@render calloutContent()}
</div>
2026-04-03 21:52:49 +02:00
{:else if type == "info"}
<div class="callout-container callout-info">
{@render calloutContent()}
</div>
2026-04-03 00:03:05 +02:00
{:else}
<div class="callout-container callout-warn">
{@render calloutContent()}
</div>
{/if}
2026-04-02 22:54:42 +02:00
<style>
2026-04-03 00:03:05 +02:00
.callout-warn {
--color-callout: var(--color-callout-warn);
}
.callout-quote {
--color-callout: var(--color-callout-quote);
}
2026-04-03 21:52:49 +02:00
.callout-info {
--color-callout: var(--color-callout-info);
}
2026-04-02 22:54:42 +02:00
.callout-container {
2026-04-03 00:03:05 +02:00
--color-callout-background: color-mix(in srgb, var(--color-callout) 30%, transparent);
2026-04-02 22:54:42 +02:00
display: flex;
flex-direction: row;
max-width: 800px;
2026-04-03 21:52:49 +02:00
margin: 12px auto 0;
2026-04-02 22:54:42 +02:00
align-items: center;
2026-04-03 00:03:05 +02:00
border: var(--border-style) var(--border-dash-size) var(--color-callout);
background-color: var(--color-callout-background);
2026-04-02 22:54:42 +02:00
backdrop-filter: blur(var(--blur-radius-background));
border-radius: var(--border-radius);
padding: 16px;
gap: 16px;
box-sizing: border-box;
}
.callout-symbol {
font-family: var(--font-mono);
font-size: 4.0rem;
font-weight: 700;
/* font-style: italic; */
}
2026-04-02 23:57:12 +02:00
:global {
.callout-text, .callout-text-container * {
margin: 0;
font-size: 1.0rem;
line-height: 1.4rem;
}
}
2026-04-02 22:54:42 +02:00
.callout-quote-text {
font-style: italic;
}
.callout-text-container {
display: flex;
flex-direction: column;
gap: 8px;
}
</style>