feat(admin-ui): enhance dark mode support across UI components

- Updated various components in the llm-router to include dark mode styles, ensuring better visibility and aesthetics in dark theme.
- Added tests for API URL helpers to validate sign-in URL construction and redirection logic.
- Improved the sign-in flow to handle trusted redirects for standalone admin origins.
- Enhanced CSS styles for dark mode, including adjustments to backgrounds, borders, and text colors for better contrast and readability.
- Refactored input components to maintain consistent styling in both light and dark modes.
This commit is contained in:
RainbowBird
2026-06-11 21:59:08 +08:00
parent 8e572ad93c
commit 2786393aa5
16 changed files with 352 additions and 54 deletions
@@ -85,6 +85,7 @@ const modelValue = defineModel<T>({ required: false })
'text-disabled:neutral-400 dark:text-disabled:neutral-600',
'cursor-disabled:not-allowed',
'w-full rounded-lg px-2 py-1 text-sm outline-none',
'text-neutral-900 dark:text-neutral-100 placeholder:text-neutral-400 dark:placeholder:text-neutral-500',
'shadow-sm',
'bg-neutral-50 dark:bg-neutral-950 focus:bg-neutral-50 dark:focus:bg-neutral-900',
]"
@@ -40,6 +40,7 @@ const variantClasses: Record<InputVariant, Record<InputTheme, {
default: [
'w-full rounded-lg px-2 py-1 text-nowrap text-sm outline-none',
'bg-neutral-50 dark:bg-neutral-950 focus:bg-neutral-50 dark:focus:bg-neutral-900',
'text-neutral-900 dark:text-neutral-100 placeholder:text-neutral-400 dark:placeholder:text-neutral-500',
'focus:border-primary-300 dark:focus:border-primary-400/50 border-2 border-solid border-neutral-100 dark:border-neutral-900',
'text-disabled:neutral-400 dark:text-disabled:neutral-600',
'shadow-sm',
@@ -51,6 +52,7 @@ const variantClasses: Record<InputVariant, Record<InputTheme, {
default: [
'w-full rounded-lg px-2 py-1 text-nowrap text-sm outline-none',
'bg-neutral-50 dark:bg-neutral-950 focus:bg-neutral-50 dark:focus:bg-neutral-900',
'text-neutral-900 dark:text-neutral-100 placeholder:text-neutral-400 dark:placeholder:text-neutral-500',
'focus:border-primary-300 dark:focus:border-primary-400/50 border-2 border-solid border-neutral-100 dark:border-neutral-900',
'text-disabled:neutral-400 dark:text-disabled:neutral-600',
'shadow-sm',
@@ -62,6 +64,7 @@ const variantClasses: Record<InputVariant, Record<InputTheme, {
default: [
'w-full rounded-lg px-2 py-1 text-nowrap text-sm outline-none',
'bg-neutral-100 dark:bg-neutral-800 focus:bg-neutral-50 dark:focus:bg-neutral-950',
'text-neutral-900 dark:text-neutral-100 placeholder:text-neutral-400 dark:placeholder:text-neutral-500',
'focus:border-primary-500/30 dark:focus:border-primary-400/50 border-2 border-solid border-neutral-500/5 dark:border-neutral-700/40',
'text-disabled:neutral-400 dark:text-disabled:neutral-600',
],
@@ -13,6 +13,7 @@ const modelValue = defineModel<string>({ default: '' })
'text-disabled:neutral-400 dark:text-disabled:neutral-600',
'cursor-disabled:not-allowed',
'w-full rounded-lg px-2 py-1 text-nowrap text-sm outline-none',
'text-neutral-900 dark:text-neutral-100 placeholder:text-neutral-400 dark:placeholder:text-neutral-500',
'shadow-sm',
'bg-neutral-50 dark:bg-neutral-950 focus:bg-neutral-50 dark:focus:bg-neutral-900',
]"
+1 -1
View File
@@ -154,7 +154,7 @@ const baseClasses = computed(() => {
const theme = variant[props.theme] || variant.default
return [
'font-medium outline-none',
'font-medium outline-none whitespace-nowrap',
'transition-all duration-200 ease-in-out',
'disabled:cursor-not-allowed disabled:opacity-50',
'backdrop-blur-md',