mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-10-07 14:58:39 +08:00
* feat(theme): add OpenHands-Neo theme with white primary buttons Introduce a neutral-based palette variant that overrides brand tokens at runtime, stop inlining primary colors on AgentServerUIRoot, and tie loaders to --oh-color-primary. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): standardize form controls to 36px rounded-lg styling Extract shared form-control class helpers and apply them across buttons, inputs, dropdowns, and settings fields; fix loading text contrast and backend retry button styling. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): indent switch helper text under labels Align description copy with toggle labels using shared pl-14 offset across agent, verification, and schema boolean fields. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): unify toggle switch and polish settings navigation Share an animated white-active toggle between settings and automations, align sidebar sub-nav rows to 36px, and match git settings helper copy to section subtitles. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): use font-medium for page and modal headings Standardize Typography H1–H3, modal titles, and route section headers on medium weight instead of semibold or bold. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): unify connected status green with sidebar indicator Route server and backend status dots through --oh-status-success so the conversation header and backend dropdown match the left nav. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): round toast corners to match button radius Use --oh-radius on all react-hot-toast surfaces and wire shared TOAST_OPTIONS into the root Toaster. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): unify combobox carets and polish error toasts Replace filled chevrons on dropdown triggers with a shared HeroUI-style caret, remove backend selector focus glow, and show CircleX on error toasts. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): remove hover delay on nav icons and dropdown carets Snap sidebar, settings, extensions, and dropdown hover colors instantly by excluding color from form-control transitions and using transition-none on nav rows. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): unify settings list styling and secrets header layout Extract shared list row/table classes for secrets and LLM profiles, use h-10 rows, and move the add-secret action to the top-right header. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): polish settings lists, profile menu, and error indicators Use h-12 list rows with subtler hover, align the LLM profile actions menu with shared context-menu styling, and unify error banner/toast icons on --oh-status-error. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): tighten conversation list row spacing to 2px Remove stacked link padding so folder rows and conversation cards use the same 2px vertical gap as grouped list sections. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): cap grouped conversation folders at five rows Show five conversations per workspace/repo folder with a grey More/Less toggle, keeping the active thread visible when it falls outside preview. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): polish conversation card metadata and launcher buttons Align card footer text with titles, drop the workspace folder icon, place branch beside repo name, match open launcher styling to secondary buttons, and darken grouped folder More/Less link color. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): size collapsed sidebar nav rows to 36px height Use a full-width 36px-tall hit target for collapsed rail icons instead of a fixed 40×40 square so nav rows match expanded row height. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): prevent sidebar logo flicker when collapsing Keep a single mounted logo in the header and briefly suppress the collapsed hover expand overlay so collapse does not flash the logo away. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): refine LLM profile editor header layout Hide the settings section title while adding or editing a profile, show a labeled Back control, and place the Add/Edit title below it using standard page heading styles. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): refine secrets add/edit form header layout Hide the list page title while adding or editing a secret, and show a Back control with Add/Edit a Secret headings using standard page styles. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): normalize button font weight to regular across the app Align buttons and button-like controls with the updated theme by defaulting shared form/BrandButton styles to font-normal and removing medium/semibold overrides from individual call sites. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): align error toast styling with chat error banner Top-align the error icon and use text-sm muted copy so toast notifications match the inline error message above the chat input. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): improve error toast icon alignment with message text Render the icon inside ErrorToastContent so it lines up with the message, center on single-line toasts, and top-align when the text wraps. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): shrink sidebar collapse toggle to match filter button Use a 28px hit target and 14px chevron so the collapse control matches the conversations filter icon button. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(ui): polish conversation empty state, status menu, and logo Hide the no-conversations message until the first fetch completes, align the server status dropdown with other context menus, and remove the sidebar logo hover tooltip. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: failing tests --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: hieptl <hieptl.developer@gmail.com>
23 lines
895 B
TypeScript
23 lines
895 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
formControlButtonClassName,
|
|
formControlFieldClassName,
|
|
formControlShellClassName,
|
|
} from "#/utils/form-control-classes";
|
|
|
|
describe("formControlClasses", () => {
|
|
it("standardizes fields, shells, and buttons to 36px with rounded-lg", () => {
|
|
expect(formControlFieldClassName).toContain("h-9");
|
|
expect(formControlFieldClassName).toContain("rounded-lg");
|
|
expect(formControlFieldClassName).toContain("border-[var(--oh-border)]");
|
|
expect(formControlFieldClassName).toContain("bg-base-secondary");
|
|
|
|
expect(formControlShellClassName).toContain("h-9");
|
|
expect(formControlShellClassName).toContain("rounded-lg");
|
|
expect(formControlShellClassName).toContain("focus-within:ring-1");
|
|
|
|
expect(formControlButtonClassName).toContain("h-9");
|
|
expect(formControlButtonClassName).toContain("rounded-lg");
|
|
});
|
|
});
|