nsarrazin HF staff victor HF staff commited on
Commit
55af70d
1 Parent(s): 3ebd3a8

Add share button for assistant intro page (#960) (#965)

Browse files

* Add share button for assistant intro page

* Fix padding on share assistant

* gap

---------

Co-authored-by: Victor Mustar <victor.mustar@gmail.com>

src/lib/components/chat/AssistantIntroduction.svelte CHANGED
@@ -4,6 +4,12 @@
4
  import { base } from "$app/paths";
5
  import type { Assistant } from "$lib/types/Assistant";
6
  import IconInternet from "../icons/IconInternet.svelte";
 
 
 
 
 
 
7
 
8
  export let assistant: Pick<
9
  Assistant,
@@ -25,6 +31,12 @@
25
  (assistant?.rag?.allowedDomains?.length ?? 0) > 0 ||
26
  (assistant?.rag?.allowedLinks?.length ?? 0) > 0 ||
27
  assistant?.dynamicPrompt;
 
 
 
 
 
 
28
  </script>
29
 
30
  <div class="flex h-full w-full flex-col content-center items-center justify-center pb-52">
@@ -84,11 +96,33 @@
84
  </div>
85
 
86
  <div class="absolute right-3 top-3 md:right-4 md:top-4">
87
- <a
88
- href="{base}/settings/assistants/{assistant._id.toString()}"
89
- class="flex items-center gap-1.5 rounded-full border bg-white py-1 pl-3 pr-2.5 text-xs text-gray-800 shadow-sm hover:shadow-inner md:text-sm dark:border-gray-700 dark:bg-gray-700 dark:text-gray-300/90 dark:hover:bg-gray-800"
90
- ><IconGear class="text-xxs" />Settings</a
91
- >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  </div>
93
  </div>
94
  {#if assistant.exampleInputs}
 
4
  import { base } from "$app/paths";
5
  import type { Assistant } from "$lib/types/Assistant";
6
  import IconInternet from "../icons/IconInternet.svelte";
7
+ import CarbonExport from "~icons/carbon/export";
8
+ import CarbonCheckmark from "~icons/carbon/checkmark";
9
+
10
+ import { share } from "$lib/utils/share";
11
+ import { PUBLIC_ORIGIN, PUBLIC_SHARE_PREFIX } from "$env/static/public";
12
+ import { page } from "$app/stores";
13
 
14
  export let assistant: Pick<
15
  Assistant,
 
31
  (assistant?.rag?.allowedDomains?.length ?? 0) > 0 ||
32
  (assistant?.rag?.allowedLinks?.length ?? 0) > 0 ||
33
  assistant?.dynamicPrompt;
34
+
35
+ const prefix = PUBLIC_SHARE_PREFIX || `${PUBLIC_ORIGIN || $page.url.origin}${base}`;
36
+
37
+ $: shareUrl = `${prefix}/assistant/${assistant?._id}`;
38
+
39
+ let isCopied = false;
40
  </script>
41
 
42
  <div class="flex h-full w-full flex-col content-center items-center justify-center pb-52">
 
96
  </div>
97
 
98
  <div class="absolute right-3 top-3 md:right-4 md:top-4">
99
+ <div class="flex flex-row items-center gap-1">
100
+ <button
101
+ class="flex h-7 items-center gap-1.5 rounded-full border bg-white px-2.5 py-1 text-gray-800 shadow-sm hover:shadow-inner max-sm:px-1.5 md:text-sm dark:border-gray-700 dark:bg-gray-700 dark:text-gray-300/90 dark:hover:bg-gray-800"
102
+ on:click={() => {
103
+ if (!isCopied) {
104
+ share(shareUrl, assistant.name);
105
+ isCopied = true;
106
+ setTimeout(() => {
107
+ isCopied = false;
108
+ }, 2000);
109
+ }
110
+ }}
111
+ >
112
+ {#if isCopied}
113
+ <CarbonCheckmark class="text-xxs text-green-600 max-sm:text-xs" />
114
+ <span class="text-green-600 max-sm:hidden"> Copied </span>
115
+ {:else}
116
+ <CarbonExport class="text-xxs max-sm:text-xs" />
117
+ <span class="max-sm:hidden"> Share </span>
118
+ {/if}
119
+ </button>
120
+ <a
121
+ href="{base}/settings/assistants/{assistant._id.toString()}"
122
+ class="flex h-7 items-center gap-1.5 rounded-full border bg-white px-2.5 py-1 text-gray-800 shadow-sm hover:shadow-inner md:text-sm dark:border-gray-700 dark:bg-gray-700 dark:text-gray-300/90 dark:hover:bg-gray-800"
123
+ ><IconGear class="text-xxs" />Settings</a
124
+ >
125
+ </div>
126
  </div>
127
  </div>
128
  {#if assistant.exampleInputs}