diff --git a/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-config-section.tsx b/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-config-section.tsx
index 077ea210..6f94f066 100644
--- a/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-config-section.tsx
+++ b/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-config-section.tsx
@@ -17,6 +17,7 @@ import { EvaluatorJsonView } from './evaluator-json-view';
import type { ConfigViewMode } from './types';
const DEFAULT_HEIGHT = 450;
+const CONTENT_MIN_HEIGHT_EXTRA = 60;
type ValidationStatus = 'idle' | 'validating' | 'valid' | 'invalid';
type EvaluatorConfigSectionProps = {
@@ -72,6 +73,8 @@ export function EvaluatorConfigSection({
? 'red'
: 'dimmed';
+ const contentHeight = height + CONTENT_MIN_HEIGHT_EXTRA;
+
return (
@@ -91,45 +94,44 @@ export function EvaluatorConfigSection({
-
+
+ {statusLabel ? (
+
+ {statusLabel}
+
+ ) : null}
+
+
- {statusLabel ? (
-
- {statusLabel}
-
- ) : null}
-
- {configViewMode === 'form' && (
-
- {FormComponent ? (
+
+ {configViewMode === 'form' ? (
+ FormComponent ? (
) : (
No form available for this evaluator. Use JSON view to
configure.
- )}
-
- )}
-
- {configViewMode === 'json' && (
-
- )}
+ )
+ ) : (
+
+ )}
+
);
diff --git a/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-json-view.tsx b/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-json-view.tsx
index cd218098..e9560df6 100644
--- a/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-json-view.tsx
+++ b/ui/src/core/page-components/agent-detail/modals/edit-control/evaluator-json-view.tsx
@@ -3,6 +3,10 @@ import { useDebouncedValue } from '@mantine/hooks';
import { useEffect, useRef } from 'react';
import { isApiError } from '@/core/api/errors';
+import {
+ labelPropsInline,
+ LabelWithTooltip,
+} from '@/core/components/label-with-tooltip';
import { ApiErrorAlert } from './api-error-alert';
import type { EvaluatorJsonViewProps } from './types';
@@ -79,6 +83,13 @@ export const EvaluatorJsonView = ({
return (
+ }
+ labelProps={labelPropsInline}
value={jsonText}
onChange={(e) => handleJsonChange(e.currentTarget.value)}
styles={{
diff --git a/ui/src/core/page-components/agent-detail/modals/edit-control/step-name-input.tsx b/ui/src/core/page-components/agent-detail/modals/edit-control/step-name-input.tsx
index 2636f177..e9030c89 100644
--- a/ui/src/core/page-components/agent-detail/modals/edit-control/step-name-input.tsx
+++ b/ui/src/core/page-components/agent-detail/modals/edit-control/step-name-input.tsx
@@ -99,7 +99,7 @@ export function StepNameInput({ form, steps = [] }: StepNameInputProps) {
return (
-
+
Step name
diff --git a/ui/src/pages/_app.tsx b/ui/src/pages/_app.tsx
index cd5f9830..51eb43ec 100644
--- a/ui/src/pages/_app.tsx
+++ b/ui/src/pages/_app.tsx
@@ -24,6 +24,7 @@ import { LoginModal } from '@/core/components/login-modal';
import { AuthProvider, useAuth } from '@/core/providers/auth-provider';
import { QueryProvider } from '@/core/providers/query-provider';
import type { NextPageWithLayout } from '@/core/types/page';
+import { appTheme } from '@/theme';
type AppPropsWithLayout = AppProps & {
Component: NextPageWithLayout;
@@ -125,7 +126,7 @@ export default function App({ Component, pageProps }: AppPropsWithLayout) {
-
+
diff --git a/ui/src/theme.ts b/ui/src/theme.ts
new file mode 100644
index 00000000..1e4c10c2
--- /dev/null
+++ b/ui/src/theme.ts
@@ -0,0 +1,44 @@
+import {
+ Autocomplete,
+ createTheme,
+ MultiSelect,
+ NumberInput,
+ Select,
+ TagsInput,
+ Textarea,
+ TextInput,
+} from '@mantine/core';
+
+const LABEL_INPUT_GAP = 8;
+
+const formInputLabelStyles = {
+ label: {
+ marginBottom: LABEL_INPUT_GAP,
+ },
+};
+
+export const appTheme = createTheme({
+ components: {
+ TextInput: TextInput.extend({
+ styles: formInputLabelStyles,
+ }),
+ Textarea: Textarea.extend({
+ styles: formInputLabelStyles,
+ }),
+ Select: Select.extend({
+ styles: formInputLabelStyles,
+ }),
+ MultiSelect: MultiSelect.extend({
+ styles: formInputLabelStyles,
+ }),
+ Autocomplete: Autocomplete.extend({
+ styles: formInputLabelStyles,
+ }),
+ TagsInput: TagsInput.extend({
+ styles: formInputLabelStyles,
+ }),
+ NumberInput: NumberInput.extend({
+ styles: formInputLabelStyles,
+ }),
+ },
+});