diff --git a/frontend/app/aipanel/aidroppedfiles.tsx b/frontend/app/aipanel/aidroppedfiles.tsx index e87038d91c..d7051c412f 100644 --- a/frontend/app/aipanel/aidroppedfiles.tsx +++ b/frontend/app/aipanel/aidroppedfiles.tsx @@ -22,7 +22,7 @@ export const AIDroppedFiles = memo(({ model }: AIDroppedFilesProps) => {
{droppedFiles.map((file) => ( -
+
) : ( -
+
diff --git a/frontend/app/aipanel/aifeedbackbuttons.tsx b/frontend/app/aipanel/aifeedbackbuttons.tsx index 926a232f24..30d9accc07 100644 --- a/frontend/app/aipanel/aifeedbackbuttons.tsx +++ b/frontend/app/aipanel/aifeedbackbuttons.tsx @@ -48,7 +48,7 @@ export const AIFeedbackButtons = memo(({ messageText }: AIFeedbackButtonsProps) "p-1.5 rounded cursor-pointer transition-colors", thumbsUpClicked ? "text-accent" - : "text-secondary hover:bg-gray-700 hover:text-primary" + : "text-secondary hover:bg-zinc-700 hover:text-primary" )} title="Good Response" > @@ -60,7 +60,7 @@ export const AIFeedbackButtons = memo(({ messageText }: AIFeedbackButtonsProps) "p-1.5 rounded cursor-pointer transition-colors", thumbsDownClicked ? "text-accent" - : "text-secondary hover:bg-gray-700 hover:text-primary" + : "text-secondary hover:bg-zinc-700 hover:text-primary" )} title="Bad Response" > @@ -73,7 +73,7 @@ export const AIFeedbackButtons = memo(({ messageText }: AIFeedbackButtonsProps) "p-1.5 rounded cursor-pointer transition-colors", copied ? "text-success" - : "text-secondary hover:bg-gray-700 hover:text-primary" + : "text-secondary hover:bg-zinc-700 hover:text-primary" )} title="Copy Message" > diff --git a/frontend/app/aipanel/aimessage.tsx b/frontend/app/aipanel/aimessage.tsx index 1c9dea2b66..1bfadd121d 100644 --- a/frontend/app/aipanel/aimessage.tsx +++ b/frontend/app/aipanel/aimessage.tsx @@ -70,9 +70,9 @@ const UserMessageFiles = memo(({ fileParts }: UserMessageFilesProps) => {
{fileParts.map((file, index) => ( -
+
-
+
{file.data?.previewurl ? ( { className={cn( "px-2 rounded-lg [&>*:first-child]:!mt-0", message.role === "user" - ? "py-2 bg-accent-800 text-white max-w-[calc(100%-50px)]" + ? "py-2 bg-zinc-700/60 text-white max-w-[calc(100%-50px)]" : "min-w-[min(100%,500px)]" )} > diff --git a/frontend/app/aipanel/aimode.tsx b/frontend/app/aipanel/aimode.tsx index 5ae1d8a385..4c6c52a7a4 100644 --- a/frontend/app/aipanel/aimode.tsx +++ b/frontend/app/aipanel/aimode.tsx @@ -29,7 +29,7 @@ const AIModeMenuItem = memo(({ config, isSelected, isDisabled, onClick, isFirst, className={cn( "w-full flex flex-col gap-0.5 px-3 transition-colors text-left", isFirst ? "pt-1 pb-0.5" : isLast ? "pt-0.5 pb-1" : "pt-0.5 pb-0.5", - isDisabled ? "text-gray-500" : "text-gray-300 hover:bg-gray-700 cursor-pointer" + isDisabled ? "text-zinc-500" : "text-zinc-300 hover:bg-zinc-700 cursor-pointer" )} >
@@ -109,7 +109,10 @@ function computeCompatibleSections( return sections; } -function computeWaveCloudSections(waveProviderConfigs: AIModeConfigWithMode[], otherProviderConfigs: AIModeConfigWithMode[]): ConfigSection[] { +function computeWaveCloudSections( + waveProviderConfigs: AIModeConfigWithMode[], + otherProviderConfigs: AIModeConfigWithMode[] +): ConfigSection[] { const sections: ConfigSection[] = []; if (waveProviderConfigs.length > 0) { @@ -204,7 +207,7 @@ export const AIModeDropdown = memo(({ compatibilityMode = false }: AIModeDropdow onClick={() => setIsOpen(!isOpen)} className={cn( "group flex items-center gap-1.5 px-2 py-1 text-xs text-gray-300 hover:text-white rounded transition-colors cursor-pointer border border-gray-600/50", - isOpen ? "bg-gray-700" : "bg-gray-800/50 hover:bg-gray-700" + isOpen ? "bg-zinc-700" : "bg-zinc-800/50 hover:bg-zinc-700" )} title={`AI Mode: ${displayName}`} > @@ -234,7 +237,7 @@ export const AIModeDropdown = memo(({ compatibilityMode = false }: AIModeDropdow {isOpen && ( <>
setIsOpen(false)} /> -
+
{sections.map((section, sectionIndex) => { const isFirstSection = sectionIndex === 0; const isLastSection = sectionIndex === sections.length - 1; @@ -284,7 +287,7 @@ export const AIModeDropdown = memo(({ compatibilityMode = false }: AIModeDropdow
-
- ); -}); -EmptyState.displayName = "EmptyState"; - -const CLIInfoBubble = memo(() => { - return ( -
-
- -
CLI Access
-
-
- wsh secret list -
- wsh secret get [name] -
- wsh secret set [name]=[value] -
-
- ); -}); -CLIInfoBubble.displayName = "CLIInfoBubble"; - -interface SecretListViewProps { - secretNames: string[]; - onSelectSecret: (name: string) => void; - onAddSecret: () => void; -} - -const SecretListView = memo(({ secretNames, onSelectSecret, onAddSecret }: SecretListViewProps) => { - return ( -
-
-

Secrets

- {secretNames.length} -
-
- {secretNames.map((name) => ( -
onSelectSecret(name)} - > - - {name} - -
- ))} -
- - Add New Secret -
-
- -
- ); -}); -SecretListView.displayName = "SecretListView"; - -interface AddSecretFormProps { - newSecretName: string; - newSecretValue: string; - isLoading: boolean; - onNameChange: (name: string) => void; - onValueChange: (value: string) => void; - onCancel: () => void; - onSubmit: () => void; -} - -const AddSecretForm = memo( - ({ - newSecretName, - newSecretValue, - isLoading, - onNameChange, - onValueChange, - onCancel, - onSubmit, - }: AddSecretFormProps) => { - const secretNameRegex = /^[A-Za-z][A-Za-z0-9_]*$/; - const isNameInvalid = newSecretName !== "" && !secretNameRegex.test(newSecretName); - - return ( -
-

Add New Secret

-
- - onNameChange(e.target.value)} - placeholder="MY_SECRET_NAME" - disabled={isLoading} - /> -
- Must start with a letter and contain only letters, numbers, and underscores -
-
-
- -