victor HF staff commited on
Commit
9829d0c
·
1 Parent(s): e30fa56

feat: add Avatar component and use it in InferencePlaygroundModelSelector

Browse files
src/lib/components/Avatar.svelte ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ export let orgName: string;
3
+ export let size: number = 12;
4
+
5
+ async function getAvatarUrl(orgName: string) {
6
+ const url = `https://huggingface.co/api/organizations/${orgName}/avatar`;
7
+ const res = await fetch(url);
8
+ if (!res.ok) {
9
+ console.error(`Error getting avatar url for org: ${orgName}`, res.status, res.statusText);
10
+ return;
11
+ }
12
+ const json = await res.json();
13
+ const { avatarUrl } = json;
14
+ return avatarUrl;
15
+ }
16
+ </script>
17
+
18
+ {#await getAvatarUrl(orgName)}
19
+ <div class="size-{size} flex-none rounded bg-gray-200"></div>
20
+ {:then avatarUrl}
21
+ <img class="size-{size} flex-none rounded bg-gray-200 object-cover" src={avatarUrl} alt="{orgName} avatar" />
22
+ {:catch}
23
+ <div class="size-{size} flex-none rounded bg-gray-200"></div>
24
+ {/await}
src/lib/components/InferencePlayground/InferencePlaygroundModelSelector.svelte CHANGED
@@ -6,24 +6,13 @@
6
 
7
  import IconCaret from "../Icons/IconCaret.svelte";
8
  import ModelSelectorModal from "./InferencePlaygroundModelSelectorModal.svelte";
 
9
 
10
  export let models: ModelEntryWithTokenizer[] = [];
11
  export let conversation: Conversation;
12
 
13
  let showModelPickerModal = false;
14
 
15
- async function getAvatarUrl(orgName: string) {
16
- const url = `https://huggingface.co/api/organizations/${orgName}/avatar`;
17
- const res = await fetch(url);
18
- if (!res.ok) {
19
- console.error(`Error getting avatar url for org: ${orgName}`, res.status, res.statusText);
20
- return;
21
- }
22
- const json = await res.json();
23
- const { avatarUrl } = json;
24
- return avatarUrl;
25
- }
26
-
27
  function changeModel(modelId: ModelEntryWithTokenizer["id"]) {
28
  const model = models.find(m => m.id === modelId);
29
  if (!model) {
@@ -63,9 +52,7 @@
63
  >
64
  <div class="flex flex-col items-start">
65
  <div class="flex items-center gap-1 text-sm text-gray-500 dark:text-gray-300">
66
- {#await getAvatarUrl(nameSpace) then avatarUrl}
67
- <img class="size-3 flex-none rounded bg-gray-200 object-cover" src={avatarUrl} alt="{nameSpace} avatar" />
68
- {/await}
69
  {nameSpace}
70
  </div>
71
  <div>{modelName}</div>
 
6
 
7
  import IconCaret from "../Icons/IconCaret.svelte";
8
  import ModelSelectorModal from "./InferencePlaygroundModelSelectorModal.svelte";
9
+ import Avatar from "../Avatar.svelte";
10
 
11
  export let models: ModelEntryWithTokenizer[] = [];
12
  export let conversation: Conversation;
13
 
14
  let showModelPickerModal = false;
15
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  function changeModel(modelId: ModelEntryWithTokenizer["id"]) {
17
  const model = models.find(m => m.id === modelId);
18
  if (!model) {
 
52
  >
53
  <div class="flex flex-col items-start">
54
  <div class="flex items-center gap-1 text-sm text-gray-500 dark:text-gray-300">
55
+ <Avatar orgName={nameSpace} size={3} />
 
 
56
  {nameSpace}
57
  </div>
58
  <div>{modelName}</div>