|
1 | 1 | <script lang="ts"> |
2 | 2 | import { cn } from '$lib/utils'; |
| 3 | + import type { SvelteHTMLElements } from 'svelte/elements'; |
3 | 4 | import { headingVariants, type Props } from '.'; |
4 | 5 |
|
5 | | - type $$Props = Props; |
| 6 | + export let element: $$Props['element'] = 'h1'; |
| 7 | +
|
| 8 | + type $$Props = ( |
| 9 | + | SvelteHTMLElements['h1'] |
| 10 | + | SvelteHTMLElements['h2'] |
| 11 | + | SvelteHTMLElements['h3'] |
| 12 | + | SvelteHTMLElements['h4'] |
| 13 | + | SvelteHTMLElements['h5'] |
| 14 | + | SvelteHTMLElements['h6'] |
| 15 | + ) & |
| 16 | + Props; |
6 | 17 |
|
7 | 18 | let className: $$Props['class'] = undefined; |
8 | 19 | export let size: $$Props['size'] = 'default'; |
9 | 20 | export { className as class }; |
10 | 21 | </script> |
11 | 22 |
|
12 | | -<h1 class={cn(headingVariants({ size, className }))} {...$$restProps}> |
13 | | - <slot /> |
14 | | -</h1> |
| 23 | +{#if element === 'h1'} |
| 24 | + <h1 class={cn(headingVariants({ size, className }))} {...$$restProps}> |
| 25 | + <slot /> |
| 26 | + </h1> |
| 27 | +{:else if element === 'h2'} |
| 28 | + <h2 class={cn(headingVariants({ size, className }))} {...$$restProps}> |
| 29 | + <slot /> |
| 30 | + </h2> |
| 31 | +{:else if element === 'h3'} |
| 32 | + <h3 class={cn(headingVariants({ size, className }))} {...$$restProps}> |
| 33 | + <slot /> |
| 34 | + </h3> |
| 35 | +{:else if element === 'h4'} |
| 36 | + <h4 class={cn(headingVariants({ size, className }))} {...$$restProps}> |
| 37 | + <slot /> |
| 38 | + </h4> |
| 39 | +{:else if element === 'h5'} |
| 40 | + <h5 class={cn(headingVariants({ size, className }))} {...$$restProps}> |
| 41 | + <slot /> |
| 42 | + </h5> |
| 43 | +{:else if element === 'h6'} |
| 44 | + <h6 class={cn(headingVariants({ size, className }))} {...$$restProps}> |
| 45 | + <slot /> |
| 46 | + </h6> |
| 47 | +{/if} |
0 commit comments