# Svelte 5 Component Patterns ## 📦 Component Structure Template Every Svelte component should follow this structure: ```svelte ``` --- ## 🎨 Pattern 1: Presentational Components Pure UI components with no business logic. ```svelte
{#if header}
{@render header()}
{:else if title}

{title}

{/if}
{@render children()}
{#if footer} {/if}
``` --- ## 🔧 Pattern 2: Container Components Components that manage state and pass it down. ```svelte
``` --- ## 🔄 Pattern 3: Controlled Components Components where parent controls the value. ```svelte
{#if open} {/if}
``` --- ## 🎭 Pattern 4: Compound Components Related components that work together. ```svelte
{@render children()}
{@render children()}
{#if isActive}
{@render children()}
{/if} ``` --- ## 🔀 Pattern 5: Render Props with Snippets Pass rendering control to parent. ```svelte {#if items.length === 0} {#if renderEmpty} {@render renderEmpty()} {:else}

No items

{/if} {:else} {/if} ``` --- ## 🎛️ Pattern 6: Form Components Accessible, validated form inputs. ```svelte
{@render children({ id, invalid })} {#if error} {/if}
``` --- ## 🚦 Pattern 7: Loading States Handle async data gracefully. ```svelte {#await promise} {#if loading} {@render loading()} {:else}
Loading...
{/if} {:then data} {@render children(data)} {:catch err} {#if error} {@render error(err)} {:else}
Error: {err.message}
{/if} {/await} ``` --- ## ♿ Pattern 8: Accessible Modal Focus trap and keyboard handling. ```svelte {#if open} {/if} ```