|
7 | 7 | import { ShareLinkSignalr } from '$lib/signalr/sharelink.svelte'; |
8 | 8 | import type { Control } from '$lib/signalr/models/Control'; |
9 | 9 | import { onMount, untrack } from 'svelte'; |
| 10 | + import { page } from '$app/state'; |
| 11 | + import CopyInput from '$lib/components/CopyInput.svelte'; |
| 12 | + import { getSiteShortURL } from '$lib/utils/url'; |
| 13 | + import { Button } from '$lib/components/ui/button'; |
| 14 | + import { Pencil } from '@lucide/svelte'; |
| 15 | + import { userState } from '$lib/state/user-state.svelte'; |
| 16 | + import { resolve } from '$app/paths'; |
10 | 17 |
|
11 | 18 | interface Props { |
12 | 19 | shareLinkRoot: PublicShareResponse; |
|
28 | 35 | function control(control: Control) { |
29 | 36 | shareLinkSignalr.control([control]); |
30 | 37 | } |
| 38 | +
|
| 39 | + const shareId = $derived(page.params.shareId); |
| 40 | +
|
| 41 | + let editUrl = $derived(resolve(`/shares/public/${shareId}/edit`)); |
| 42 | + const shareUrl = $derived(getSiteShortURL(`/s/${shareId}`)); |
31 | 43 | </script> |
32 | 44 |
|
33 | 45 | <div class="m-5 flex h-full w-full flex-col gap-15"> |
34 | | - <div class="flex w-full flex-row content-between"> |
| 46 | + <div class="grid grid-cols-3 grid-rows-1"> |
35 | 47 | <div class="flex w-full flex-col"> |
36 | 48 | <h1 class="text-2xl font-bold">Public Share: {shareLinkRoot.name}</h1> |
37 | 49 | <p |
|
43 | 55 | </p> |
44 | 56 | </div> |
45 | 57 |
|
46 | | - <Tooltip.Provider> |
47 | | - <Tooltip.Root delayDuration={250}> |
48 | | - <Tooltip.Trigger> |
49 | | - <span |
50 | | - class="mr-10 flex flex-row items-center rounded-md px-4 py-2 outline-1 outline-gray-500" |
51 | | - > |
52 | | - <Avatar.Root class="h-10 w-10"> |
53 | | - <Avatar.Image src={shareLinkRoot.author.image} alt="User Avatar" /> |
54 | | - <Avatar.Fallback> |
55 | | - {shareLinkRoot.author.name.charAt(0)} |
56 | | - </Avatar.Fallback> |
57 | | - </Avatar.Root> |
58 | | - <p class="ml-4">{shareLinkRoot.author.name}</p> |
59 | | - </span> |
60 | | - </Tooltip.Trigger> |
61 | | - <Tooltip.Content> |
62 | | - <p>Shared by</p> |
63 | | - </Tooltip.Content> |
64 | | - </Tooltip.Root> |
65 | | - </Tooltip.Provider> |
| 58 | + <div class="items-center1 flex"> |
| 59 | + <CopyInput value={shareUrl.href} displayValue={shareUrl.host + shareUrl.pathname} /> |
| 60 | + </div> |
| 61 | + |
| 62 | + <div class="flex items-center justify-end gap-4"> |
| 63 | + {#if userState.self} |
| 64 | + <Button variant="outline" href={editUrl}><Pencil /> Edit</Button> |
| 65 | + {/if} |
| 66 | + |
| 67 | + <Tooltip.Provider> |
| 68 | + <Tooltip.Root delayDuration={250}> |
| 69 | + <Tooltip.Trigger> |
| 70 | + <span |
| 71 | + class="mr-10 flex flex-row items-center rounded-md px-4 py-2 outline-1 outline-gray-500" |
| 72 | + > |
| 73 | + <Avatar.Root class="h-10 w-10"> |
| 74 | + <Avatar.Image src={shareLinkRoot.author.image} alt="User Avatar" /> |
| 75 | + <Avatar.Fallback> |
| 76 | + {shareLinkRoot.author.name.charAt(0)} |
| 77 | + </Avatar.Fallback> |
| 78 | + </Avatar.Root> |
| 79 | + <p class="ml-4">{shareLinkRoot.author.name}</p> |
| 80 | + </span> |
| 81 | + </Tooltip.Trigger> |
| 82 | + <Tooltip.Content> |
| 83 | + <p>Shared by</p> |
| 84 | + </Tooltip.Content> |
| 85 | + </Tooltip.Root> |
| 86 | + </Tooltip.Provider> |
| 87 | + </div> |
66 | 88 | </div> |
67 | 89 |
|
68 | 90 | <div class="flex flex-row justify-center gap-5"> |
|
0 commit comments