Thomas G. Lopes commited on
Commit
ba9894c
·
1 Parent(s): 9ab40fd

add select to compare page

Browse files
package.json CHANGED
@@ -20,6 +20,7 @@
20
  "@tailwindcss/postcss": "^4.0.9",
21
  "@typescript-eslint/eslint-plugin": "^6.21.0",
22
  "@typescript-eslint/parser": "^6.21.0",
 
23
  "eslint": "^8.57.1",
24
  "eslint-config-prettier": "^8.10.0",
25
  "eslint-plugin-svelte": "^2.44.0",
@@ -30,6 +31,7 @@
30
  "prettier-plugin-tailwindcss": "^0.6.11",
31
  "svelte": "^4.2.7",
32
  "svelte-check": "^3.6.0",
 
33
  "tailwindcss": "^4.0.9",
34
  "tslib": "^2.4.1",
35
  "typescript": "^5.6.2",
 
20
  "@tailwindcss/postcss": "^4.0.9",
21
  "@typescript-eslint/eslint-plugin": "^6.21.0",
22
  "@typescript-eslint/parser": "^6.21.0",
23
+ "clsx": "^2.1.1",
24
  "eslint": "^8.57.1",
25
  "eslint-config-prettier": "^8.10.0",
26
  "eslint-plugin-svelte": "^2.44.0",
 
31
  "prettier-plugin-tailwindcss": "^0.6.11",
32
  "svelte": "^4.2.7",
33
  "svelte-check": "^3.6.0",
34
+ "tailwind-merge": "^3.0.2",
35
  "tailwindcss": "^4.0.9",
36
  "tslib": "^2.4.1",
37
  "typescript": "^5.6.2",
pnpm-lock.yaml CHANGED
@@ -45,6 +45,9 @@ importers:
45
  '@typescript-eslint/parser':
46
  specifier: ^6.21.0
47
  version: 6.21.0([email protected])([email protected])
 
 
 
48
  eslint:
49
  specifier: ^8.57.1
50
  version: 8.57.1
@@ -75,6 +78,9 @@ importers:
75
  svelte-check:
76
  specifier: ^3.6.0
77
 
 
 
78
  tailwindcss:
79
  specifier: ^4.0.9
80
  version: 4.0.9
@@ -732,6 +738,10 @@ packages:
732
  resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
733
  engines: {node: '>= 8.10.0'}
734
 
 
 
 
 
735
736
  resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
737
 
@@ -1544,6 +1554,9 @@ packages:
1544
1545
  resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
1546
 
 
 
 
1547
1548
  resolution: {integrity: sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==}
1549
 
@@ -2221,6 +2234,8 @@ snapshots:
2221
  optionalDependencies:
2222
  fsevents: 2.3.3
2223
 
 
 
2224
2225
  dependencies:
2226
  '@jridgewell/sourcemap-codec': 1.5.0
@@ -2958,6 +2973,8 @@ snapshots:
2958
 
2959
2960
 
 
 
2961
2962
 
2963
 
45
  '@typescript-eslint/parser':
46
  specifier: ^6.21.0
47
  version: 6.21.0([email protected])([email protected])
48
+ clsx:
49
+ specifier: ^2.1.1
50
+ version: 2.1.1
51
  eslint:
52
  specifier: ^8.57.1
53
  version: 8.57.1
 
78
  svelte-check:
79
  specifier: ^3.6.0
80
81
+ tailwind-merge:
82
+ specifier: ^3.0.2
83
+ version: 3.0.2
84
  tailwindcss:
85
  specifier: ^4.0.9
86
  version: 4.0.9
 
738
  resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
739
  engines: {node: '>= 8.10.0'}
740
 
741
742
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
743
+ engines: {node: '>=6'}
744
+
745
746
  resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
747
 
 
1554
1555
  resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
1556
 
1557
1558
+ resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==}
1559
+
1560
1561
  resolution: {integrity: sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==}
1562
 
 
2234
  optionalDependencies:
2235
  fsevents: 2.3.3
2236
 
2237
2238
+
2239
2240
  dependencies:
2241
  '@jridgewell/sourcemap-codec': 1.5.0
 
2973
 
2974
2975
 
2976
2977
+
2978
2979
 
2980
src/lib/components/InferencePlayground/InferencePlaygroundConversationHeader.svelte CHANGED
@@ -10,6 +10,7 @@
10
  import Avatar from "../Avatar.svelte";
11
  import { goto } from "$app/navigation";
12
  import { models } from "$lib/stores/models";
 
13
 
14
  export let conversation: Conversation;
15
  export let conversationIdx: number;
@@ -77,3 +78,14 @@
77
  />
78
  </button>
79
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
10
  import Avatar from "../Avatar.svelte";
11
  import { goto } from "$app/navigation";
12
  import { models } from "$lib/stores/models";
13
+ import InferencePlaygroundProviderSelect from "./InferencePlaygroundProviderSelect.svelte";
14
 
15
  export let conversation: Conversation;
16
  export let conversationIdx: number;
 
78
  />
79
  </button>
80
  </div>
81
+
82
+ <div
83
+ class="{conversationIdx === 0
84
+ ? 'mr-4 max-sm:ml-4'
85
+ : 'mx-4'} mt-2 h-11 text-sm leading-none whitespace-nowrap max-sm:mt-4"
86
+ >
87
+ <InferencePlaygroundProviderSelect
88
+ bind:conversation
89
+ class="rounded-lg border border-gray-200/80 bg-white dark:border-white/5 dark:bg-gray-800/70 dark:hover:bg-gray-800"
90
+ />
91
+ </div>
src/lib/components/InferencePlayground/InferencePlaygroundModelSelector.svelte CHANGED
@@ -4,18 +4,12 @@
4
  import { goto } from "$app/navigation";
5
  import { page } from "$app/stores";
6
 
7
- import { browser } from "$app/environment";
8
- import { fetchHuggingFaceModel, type InferenceProviderMapping } from "$lib/fetchers/providers";
9
  import { models } from "$lib/stores/models";
10
- import { token } from "$lib/stores/token";
11
- import { randomPick } from "$lib/utils/array";
12
  import Avatar from "../Avatar.svelte";
13
  import IconCaret from "../Icons/IconCaret.svelte";
14
- import IconProvider from "../Icons/IconProvider.svelte";
15
  import ModelSelectorModal from "./InferencePlaygroundModelSelectorModal.svelte";
16
- import { defaultSystemMessage } from "./inferencePlaygroundUtils";
17
- import { createSelect, createSync } from "@melt-ui/svelte";
18
  import ProviderSelect from "./InferencePlaygroundProviderSelect.svelte";
 
19
 
20
  export let conversation: Conversation;
21
 
 
4
  import { goto } from "$app/navigation";
5
  import { page } from "$app/stores";
6
 
 
 
7
  import { models } from "$lib/stores/models";
 
 
8
  import Avatar from "../Avatar.svelte";
9
  import IconCaret from "../Icons/IconCaret.svelte";
 
10
  import ModelSelectorModal from "./InferencePlaygroundModelSelectorModal.svelte";
 
 
11
  import ProviderSelect from "./InferencePlaygroundProviderSelect.svelte";
12
+ import { defaultSystemMessage } from "./inferencePlaygroundUtils";
13
 
14
  export let conversation: Conversation;
15
 
src/lib/components/InferencePlayground/InferencePlaygroundProviderSelect.svelte CHANGED
@@ -8,8 +8,11 @@
8
  import { createSelect, createSync } from "@melt-ui/svelte";
9
  import IconCaret from "../Icons/IconCaret.svelte";
10
  import IconProvider from "../Icons/IconProvider.svelte";
 
11
 
12
  export let conversation: Conversation;
 
 
13
 
14
  async function loadProviders(modelId: string) {
15
  console.log(modelId);
@@ -80,7 +83,11 @@
80
  <button
81
  {...$trigger}
82
  use:trigger
83
- class="relative flex items-center justify-between gap-6 overflow-hidden rounded-lg border bg-gray-100/80 px-3 py-1.5 leading-tight whitespace-nowrap shadow-sm hover:brightness-95 dark:border-gray-700 dark:bg-gray-800 dark:hover:brightness-110"
 
 
 
 
84
  >
85
  <div class="flex items-center gap-1 text-sm text-gray-500 dark:text-gray-300">
86
  <IconProvider provider={conversation.provider} />
 
8
  import { createSelect, createSync } from "@melt-ui/svelte";
9
  import IconCaret from "../Icons/IconCaret.svelte";
10
  import IconProvider from "../Icons/IconProvider.svelte";
11
+ import { cn } from "$lib/utils/cn";
12
 
13
  export let conversation: Conversation;
14
+ let classes: string | undefined;
15
+ export { classes as class };
16
 
17
  async function loadProviders(modelId: string) {
18
  console.log(modelId);
 
83
  <button
84
  {...$trigger}
85
  use:trigger
86
+ class={cn(
87
+ "relative flex items-center justify-between gap-6 overflow-hidden rounded-lg border bg-gray-100/80 px-3 py-1.5 leading-tight whitespace-nowrap shadow-sm",
88
+ "hover:brightness-95 dark:border-gray-700 dark:bg-gray-800 dark:hover:brightness-110",
89
+ classes
90
+ )}
91
  >
92
  <div class="flex items-center gap-1 text-sm text-gray-500 dark:text-gray-300">
93
  <IconProvider provider={conversation.provider} />
src/lib/utils/cn.ts ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ import { clsx, type ClassValue } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs));
6
+ }