diff --git a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.test.tsx b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.test.tsx index 8ca4aba91c5..8e88e72bb40 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.test.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.test.tsx @@ -22,6 +22,17 @@ describe("AddGuardrailForm close behavior", () => { vi.clearAllMocks(); }); + it("keeps the wizard bounded and scrollable on narrow viewports", () => { + renderForm(); + + const dialog = screen.getByRole("dialog"); + expect(dialog).toHaveClass("max-w-[1000px]"); + expect(dialog).toHaveClass("w-[calc(100vw-2rem)]"); + + const scrollRegion = screen.getByTestId("guardrail-wizard-scroll-region"); + expect(scrollRegion).toHaveClass("max-w-full", "overflow-x-auto", "overflow-y-auto"); + }); + it("does not close when the user clicks outside the modal on the mask", () => { const { onClose } = renderForm(); expect(screen.getByText("Create guardrail")).toBeInTheDocument(); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.tsx b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.tsx index b1d5c6d8929..f4f40ed2c37 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/add_guardrail_form.tsx @@ -1243,11 +1243,11 @@ const AddGuardrailForm: React.FC = ({ visible, onClose, a return ( !open && handleClose()} disablePointerDismissal> -
+
{/* Header */}
Create guardrail @@ -1261,7 +1261,10 @@ const AddGuardrailForm: React.FC = ({ visible, onClose, a
{/* Scrollable content - inline vertical stepper */} -
+
event.preventDefault()}> {stepConfigs.map((step, index) => { const isDone = index < currentStep; @@ -1296,7 +1299,9 @@ const AddGuardrailForm: React.FC = ({ visible, onClose, a
{/* Expanded form content for current step */} - {isCurrent &&
{renderStepContent()}
} + {isCurrent && ( +
{renderStepContent()}
+ )}
);