diff --git a/rsconcept/frontend/src/app/navigation/user-menu.tsx b/rsconcept/frontend/src/app/navigation/user-menu.tsx
index 5ff80daa..49db1775 100644
--- a/rsconcept/frontend/src/app/navigation/user-menu.tsx
+++ b/rsconcept/frontend/src/app/navigation/user-menu.tsx
@@ -13,7 +13,7 @@ export function UserMenu() {
const router = useConceptNavigation();
const menu = useDropdown();
return (
-
+
}>
router.push({ path: urls.login, force: true })}
diff --git a/rsconcept/frontend/src/components/control/button.tsx b/rsconcept/frontend/src/components/control/button.tsx
index 7a79e8a9..c130874b 100644
--- a/rsconcept/frontend/src/components/control/button.tsx
+++ b/rsconcept/frontend/src/components/control/button.tsx
@@ -43,7 +43,7 @@ export function Button({
'bg-secondary text-secondary-foreground cc-hover cc-animate-color',
dense ? 'px-1' : 'px-3 py-1',
loading ? 'cursor-progress' : 'cursor-pointer',
- noOutline ? 'outline-hidden' : 'focus-outline',
+ noOutline ? 'outline-hidden focus-visible:bg-selected' : 'focus-outline',
!noBorder && 'border rounded-sm',
className
)}
diff --git a/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx b/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx
index 244a7b89..54ebc53b 100644
--- a/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx
+++ b/rsconcept/frontend/src/components/dropdown/dropdown-button.tsx
@@ -37,7 +37,7 @@ export function DropdownButton({
'px-3 py-1 inline-flex items-center gap-2',
'text-left text-sm text-ellipsis whitespace-nowrap',
'disabled:cc-controls disabled:opacity-75',
- 'cc-animate-background',
+ 'focus-outline cc-animate-background',
!!onClick ? 'cc-hover cursor-pointer disabled:cursor-auto' : 'bg-secondary text-secondary-foreground',
className
)}
diff --git a/rsconcept/frontend/src/components/dropdown/use-dropdown.ts b/rsconcept/frontend/src/components/dropdown/use-dropdown.ts
index 0364a66c..4a2d8d81 100644
--- a/rsconcept/frontend/src/components/dropdown/use-dropdown.ts
+++ b/rsconcept/frontend/src/components/dropdown/use-dropdown.ts
@@ -7,9 +7,10 @@ export function useDropdown() {
const ref = useRef(null);
function handleBlur(event: React.FocusEvent) {
- if (!ref.current?.contains(event.relatedTarget as Node)) {
- setIsOpen(false);
+ if (ref.current?.contains(event.relatedTarget as Node)) {
+ return;
}
+ setIsOpen(false);
}
return {
diff --git a/rsconcept/frontend/src/components/ui/combo-box.tsx b/rsconcept/frontend/src/components/input/combo-box.tsx
similarity index 96%
rename from rsconcept/frontend/src/components/ui/combo-box.tsx
rename to rsconcept/frontend/src/components/input/combo-box.tsx
index 45b21b46..d764ddfc 100644
--- a/rsconcept/frontend/src/components/ui/combo-box.tsx
+++ b/rsconcept/frontend/src/components/input/combo-box.tsx
@@ -5,11 +5,10 @@ import { ChevronDownIcon } from 'lucide-react';
import { IconRemove } from '../icons';
import { type Styling } from '../props';
+import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../ui/command';
+import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';
import { cn } from '../utils';
-import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from './command';
-import { Popover, PopoverContent, PopoverTrigger } from './popover';
-
interface ComboBoxProps