|
1 | 1 | <script lang="ts"> |
2 | | - import { type Component } from "svelte"; |
3 | 2 | import { Avatar, avatar, Label, Radio, Button, uiHelpers, type AvatarProps } from "$lib"; |
4 | 3 | import HighlightCompo from "../../utils/HighlightCompo.svelte"; |
5 | 4 | import DynamicCodeBlockHighlight from "../../utils/DynamicCodeBlockHighlight.svelte"; |
6 | 5 | import CodeWrapper from "../../utils/CodeWrapper.svelte"; |
7 | 6 | import H1 from "../../utils/H1.svelte"; |
8 | 7 | import H2 from "../../utils/H2.svelte"; |
9 | | - import { isGeneratedCodeOverflow, isSvelteOverflow, getExampleFileName } from "../../utils/helpers"; |
| 8 | + import { isGeneratedCodeOverflow } from "../../utils/helpers"; |
10 | 9 | // Props table |
11 | 10 | import CompoAttributesViewer from "../../utils/CompoAttributesViewer.svelte"; |
12 | 11 | const dirName = "avatar"; |
|
19 | 18 | eager: true |
20 | 19 | }) as Record<string, string>; |
21 | 20 |
|
22 | | - const exampleArr = [ |
23 | | - { name: "Avatar text", component: ExampleComponents.AvatarText }, |
24 | | - { name: "Dot indicator", component: ExampleComponents.DotIndicator }, |
25 | | - { name: "Placeholder", component: ExampleComponents.Placeholder }, |
26 | | - { name: "Placeholder initial", component: ExampleComponents.PlaceholderInitial }, |
27 | | - { name: "Stacked", component: ExampleComponents.Stacked }, |
28 | | - { name: "User dropdown", component: ExampleComponents.UserDropdown }, |
29 | | - { name: "Avatar with tooltip", component: ExampleComponents.AvatarWithTooltip } |
30 | | - ]; |
31 | | - let selectedExample: string | number = $state(exampleArr[0].name); |
32 | | - let svelteCode = $derived(getExampleFileName(selectedExample, exampleArr)); |
33 | | -
|
34 | | - function findObject(arr: { name: string; component: Component }[], name: string) { |
35 | | - const matchingObject = arr.find((obj) => obj.name === name); |
36 | | - return matchingObject ? matchingObject.component : null; |
37 | | - } |
38 | | - const SelectedComponent = $derived(findObject(exampleArr, selectedExample)); |
39 | | - // end of dynamic svelte component |
40 | | -
|
41 | 21 | // reactive example, rounded, border, stacked, size, className |
42 | 22 | const sizes = Object.keys(avatar.variants.size); |
43 | 23 | let avatarSize: AvatarProps["size"] = $state("md"); |
|
81 | 61 | const handleBuilderExpandClick = () => { |
82 | 62 | builderExpand = !builderExpand; |
83 | 63 | }; |
84 | | - // for DynamicCodeBlock setup for examples section. dynamically adjust the height of the code block based on the svelteCode content. |
85 | | -
|
86 | | - // for examples DynamicCodeBlockHighlight |
87 | | - let codeBlock = uiHelpers(); |
88 | | - let exampleExpand = $state(false); |
89 | | - let showExpandButton = $derived(isSvelteOverflow(svelteCode, exampleModules)); |
90 | | - const handleExpandClick = () => { |
91 | | - exampleExpand = !exampleExpand; |
92 | | - }; |
93 | | - // end of DynamicCodeBlock setup |
| 64 | +
|
94 | 65 | $effect(() => { |
95 | | - exampleExpand = codeBlock.isOpen; |
96 | 66 | builderExpand = builder.isOpen; |
97 | 67 | }); |
98 | 68 | </script> |
|
126 | 96 | {/snippet} |
127 | 97 | </CodeWrapper> |
128 | 98 |
|
129 | | -<H2>Examples</H2> |
| 99 | +<H2>Avatar text</H2> |
| 100 | +<CodeWrapper> |
| 101 | + <ExampleComponents.AvatarText /> |
| 102 | + {#snippet codeblock()} |
| 103 | + <HighlightCompo codeLang="ts" code={exampleModules["./examples/AvatarText.svelte"] as string} /> |
| 104 | + {/snippet} |
| 105 | +</CodeWrapper> |
130 | 106 |
|
| 107 | +<H2>Dot indicator</H2> |
131 | 108 | <CodeWrapper> |
132 | | - <div class="mb-12 flex flex-wrap"> |
133 | | - <Label class="mb-4 w-full font-bold">Example</Label> |
134 | | - {#each exampleArr as style} |
135 | | - <Radio labelClass="w-40 my-1" onclick={() => (exampleExpand = false)} name="block_style" bind:group={selectedExample} value={style.name}>{style.name}</Radio> |
136 | | - {/each} |
137 | | - </div> |
138 | | - <SelectedComponent /> |
| 109 | + <ExampleComponents.DotIndicator /> |
| 110 | + {#snippet codeblock()} |
| 111 | + <HighlightCompo codeLang="ts" code={exampleModules["./examples/DotIndicator.svelte"] as string} /> |
| 112 | + {/snippet} |
| 113 | +</CodeWrapper> |
| 114 | + |
| 115 | +<H2>Placeholder</H2> |
| 116 | +<CodeWrapper> |
| 117 | + <ExampleComponents.Placeholder /> |
| 118 | + {#snippet codeblock()} |
| 119 | + <HighlightCompo codeLang="ts" code={exampleModules["./examples/Placeholder.svelte"] as string} /> |
| 120 | + {/snippet} |
| 121 | +</CodeWrapper> |
| 122 | + |
| 123 | +<H2>Placeholder initial</H2> |
| 124 | +<CodeWrapper> |
| 125 | + <ExampleComponents.PlaceholderInitial /> |
| 126 | + {#snippet codeblock()} |
| 127 | + <HighlightCompo codeLang="ts" code={exampleModules["./examples/PlaceholderInitial.svelte"] as string} /> |
| 128 | + {/snippet} |
| 129 | +</CodeWrapper> |
| 130 | + |
| 131 | +<H2>Stacked</H2> |
| 132 | +<CodeWrapper> |
| 133 | + <ExampleComponents.Stacked /> |
| 134 | + {#snippet codeblock()} |
| 135 | + <HighlightCompo codeLang="ts" code={exampleModules["./examples/Stacked.svelte"] as string} /> |
| 136 | + {/snippet} |
| 137 | +</CodeWrapper> |
| 138 | + |
| 139 | +<H2>User dropdown</H2> |
| 140 | +<CodeWrapper> |
| 141 | + <ExampleComponents.UserDropdown /> |
| 142 | + {#snippet codeblock()} |
| 143 | + <HighlightCompo codeLang="ts" code={exampleModules["./examples/UserDropdown.svelte"] as string} /> |
| 144 | + {/snippet} |
| 145 | +</CodeWrapper> |
| 146 | + |
| 147 | +<H2>Avatar with tooltip</H2> |
| 148 | +<CodeWrapper> |
| 149 | + <ExampleComponents.AvatarWithTooltip /> |
139 | 150 | {#snippet codeblock()} |
140 | | - <DynamicCodeBlockHighlight replaceLib {handleExpandClick} expand={exampleExpand} {showExpandButton} code={exampleModules[`./examples/${svelteCode}`] as string} /> |
| 151 | + <HighlightCompo codeLang="ts" code={exampleModules["./examples/AvatarWithTooltip.svelte"] as string} /> |
141 | 152 | {/snippet} |
142 | 153 | </CodeWrapper> |
143 | 154 |
|
|
0 commit comments