Download src/utils/form-control-classes.ts from SaylorTwift/openhands: direct link, hf CLI and curl.
- Browser
- Download file 5.57 kB
-
https://huggingface.co/SaylorTwift/openhands/resolve/main/src/utils/form-control-classes.ts
- Command line
-
hf download hf://SaylorTwift/openhands/src/utils/form-control-classes.ts
-
curl -L -o form-control-classes.ts https://huggingface.co/SaylorTwift/openhands/resolve/main/src/utils/form-control-classes.ts
5.57 kB
| import { cn } from "#/utils/utils"; | |
| /** 36px control height — shared by fields, dropdowns, and buttons. */ | |
| export const formControlHeightClassName = "h-9 min-h-9"; | |
| export const formControlRadiusClassName = "rounded-lg"; | |
| export const formControlBorderClassName = "border border-[var(--oh-border)]"; | |
| export const formControlSurfaceClassName = "bg-base-secondary"; | |
| /** Shared transition duration for form controls and chrome buttons. */ | |
| export const formControlTransitionDurationClassName = "duration-75"; | |
| export const formControlHeroUiTransitionDurationClassName = "!duration-75"; | |
| export const formControlMotionReduceClassName = "motion-reduce:transition-none"; | |
| /** Shell properties that animate on hover/focus; foreground color snaps instantly. */ | |
| export const formControlTransitionPropertiesClassName = | |
| "transition-[background-color,border-color,box-shadow,opacity]"; | |
| /** Animate shell chrome on hover/focus; foreground color snaps instantly. */ | |
| export const formControlTransitionClassName = cn( | |
| formControlTransitionPropertiesClassName, | |
| formControlTransitionDurationClassName, | |
| formControlMotionReduceClassName, | |
| ); | |
| /** HeroUI input wrappers ship `transition-colors`; override so caret/text hover is instant. */ | |
| export const formControlHeroUiWrapperTransitionClassName = cn( | |
| "!transition-[background-color,border-color,box-shadow,opacity]", | |
| formControlHeroUiTransitionDurationClassName, | |
| formControlMotionReduceClassName, | |
| ); | |
| /** Transform-only transitions (e.g. combobox carets). */ | |
| export const formControlTransformTransitionClassName = cn( | |
| "transition-[transform] ease", | |
| formControlTransitionDurationClassName, | |
| formControlMotionReduceClassName, | |
| ); | |
| /** Muted icon/pill controls: instant foreground, fading shell on hover. */ | |
| export const formControlMutedHoverClassName = | |
| "hover:text-white hover:bg-white/10"; | |
| /** Text/icon pill triggers in the chat input actions row. */ | |
| export const chatInputPillButtonClassName = cn( | |
| "inline-flex items-center gap-1 rounded-[100px] border border-transparent px-1.5", | |
| "text-sm font-normal leading-5 text-[var(--oh-muted)] whitespace-nowrap min-w-0 cursor-pointer", | |
| formControlTransitionClassName, | |
| formControlMutedHoverClassName, | |
| ); | |
| /** Circular icon triggers in the chat input actions row. */ | |
| export const chatInputIconButtonClassName = cn( | |
| "flex items-center justify-center rounded-full text-[var(--oh-muted)] cursor-pointer", | |
| formControlTransitionClassName, | |
| formControlMutedHoverClassName, | |
| ); | |
| export const formControlFocusClassName = | |
| "focus:border-white/40 focus:ring-1 focus:ring-white/20 focus:outline-none"; | |
| export const formControlFocusWithinClassName = | |
| "focus-within:border-white/40 focus-within:ring-1 focus-within:ring-white/20"; | |
| export const formControlDisabledClassName = | |
| "disabled:cursor-not-allowed disabled:opacity-60"; | |
| /** Native text inputs and HeroUI Autocomplete wrappers. */ | |
| export const formControlFieldClassName = cn( | |
| formControlHeightClassName, | |
| formControlRadiusClassName, | |
| formControlBorderClassName, | |
| formControlSurfaceClassName, | |
| formControlTransitionClassName, | |
| formControlFocusClassName, | |
| formControlDisabledClassName, | |
| "w-full min-w-0 px-3 text-sm text-white placeholder:text-tertiary-alt", | |
| ); | |
| /** Settings screens keep italic placeholders on form controls. */ | |
| export const formControlSettingsFieldClassName = cn( | |
| formControlFieldClassName, | |
| "placeholder:italic", | |
| formControlHeroUiWrapperTransitionClassName, | |
| ); | |
| /** Multiline fields share border/radius/focus styling without a fixed height. */ | |
| export const formControlMultilineFieldClassName = cn( | |
| formControlRadiusClassName, | |
| formControlBorderClassName, | |
| formControlSurfaceClassName, | |
| formControlTransitionClassName, | |
| formControlFocusClassName, | |
| formControlDisabledClassName, | |
| "w-full min-w-0 px-3 py-2 text-sm text-white placeholder:text-tertiary-alt", | |
| ); | |
| /** Combobox / search shell (icon + input), e.g. skills toolbar. */ | |
| export const formControlShellClassName = cn( | |
| formControlHeightClassName, | |
| "relative flex min-w-0 items-center", | |
| formControlRadiusClassName, | |
| formControlBorderClassName, | |
| formControlSurfaceClassName, | |
| formControlTransitionClassName, | |
| formControlFocusWithinClassName, | |
| ); | |
| /** Borderless input nested inside {@link formControlShellClassName}. */ | |
| export const formControlInlineInputClassName = cn( | |
| "min-w-0 flex-1 border-0 bg-transparent px-3 text-sm outline-none", | |
| "placeholder:text-tertiary-alt", | |
| "[&::-webkit-search-cancel-button]:hidden", | |
| ); | |
| /** Primary/secondary/danger action buttons. */ | |
| export const formControlButtonClassName = cn( | |
| formControlHeightClassName, | |
| "inline-flex w-fit cursor-pointer items-center justify-center gap-2 px-3", | |
| formControlRadiusClassName, | |
| formControlTransitionClassName, | |
| "text-sm font-normal disabled:cursor-not-allowed disabled:opacity-30", | |
| ); | |
| /** Helper text under a left-aligned {@link SettingsSwitch} (40px track + gap-2). */ | |
| export const formControlSwitchDescriptionClassName = "pl-12"; | |
| /** Filter / enum dropdown triggers beside search toolbars. */ | |
| export const formControlFilterTriggerClassName = cn( | |
| formControlButtonClassName, | |
| formControlBorderClassName, | |
| formControlSurfaceClassName, | |
| "shrink-0 text-white", | |
| ); | |
| /** Muted back navigation control with tertiary hover fill (settings sub-pages, detail views). */ | |
| export const formControlBackNavButtonClassName = cn( | |
| "inline-flex items-center gap-2 self-start rounded-lg p-2", | |
| "text-sm font-normal leading-5 text-[var(--oh-muted)] cursor-pointer", | |
| formControlTransitionClassName, | |
| "hover:bg-tertiary hover:text-white", | |
| ); | |