From 896cd4fa21f482194d8dcbd656e6c04039834297 Mon Sep 17 00:00:00 2001 From: findthelorax Date: Thu, 23 Apr 2026 20:06:10 -0400 Subject: [PATCH] made a lot of accessibility fixes for the modalsincluding pointers, keyboard navigation and consistent border radius --- .github/workflows/docker-publish.yml | 6 +- frontend/src/components/modals/EdgeModal.tsx | 21 +++--- .../src/components/modals/GroupRectModal.tsx | 23 +++---- frontend/src/components/modals/NodeModal.tsx | 66 ++++++++++++------- .../modals/modal-interactive.module.css | 27 ++++++++ .../src/components/panels/DetailPanel.tsx | 10 +-- frontend/src/components/panels/Sidebar.tsx | 5 +- frontend/src/components/panels/Toolbar.tsx | 20 +++--- frontend/src/components/ui/dialog.tsx | 6 +- 9 files changed, 115 insertions(+), 69 deletions(-) create mode 100644 frontend/src/components/modals/modal-interactive.module.css diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index fe0a4e8..600ae67 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -15,13 +15,13 @@ jobs: strategy: matrix: include: - - image: ghcr.io/${{ github.repository_owner }}/homelable-backend + - image: ghcr.io/pouzor/homelable-backend dockerfile: Dockerfile.backend build_args: "" - - image: ghcr.io/${{ github.repository_owner }}/homelable-frontend + - image: ghcr.io/pouzor/homelable-frontend dockerfile: Dockerfile.frontend build_args: "" - - image: ghcr.io/${{ github.repository_owner }}/homelable-frontend-standalone + - image: ghcr.io/pouzor/homelable-frontend-standalone dockerfile: Dockerfile.frontend build_args: "VITE_STANDALONE=true" diff --git a/frontend/src/components/modals/EdgeModal.tsx b/frontend/src/components/modals/EdgeModal.tsx index ea6a441..ec4fc56 100644 --- a/frontend/src/components/modals/EdgeModal.tsx +++ b/frontend/src/components/modals/EdgeModal.tsx @@ -1,4 +1,5 @@ import { useState } from 'react' +import modalStyles from './modal-interactive.module.css' import { RotateCcw } from 'lucide-react' import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { Button } from '@/components/ui/button' @@ -59,7 +60,7 @@ export function EdgeModal({ open, onClose, onSubmit, onDelete, onClearWaypoints, return ( !o && onClose()}> - + {title} @@ -68,7 +69,7 @@ export function EdgeModal({ open, onClose, onSubmit, onDelete, onClearWaypoints,
set('font', v ?? 'inter')}> - + @@ -162,7 +163,7 @@ export function GroupRectModal({ open, onClose, onSubmit, onDelete, initial, tit type="button" title={value} onClick={() => set('text_position', value)} - className="h-8 rounded text-base transition-colors" + className={`h-8 rounded text-base transition-colors cursor-pointer ${modalStyles['modal-interactive']}`} style={{ background: isSelected ? '#00d4ff22' : '#21262d', border: `1px solid ${isSelected ? '#00d4ff88' : '#30363d'}`, @@ -187,7 +188,7 @@ export function GroupRectModal({ open, onClose, onSubmit, onDelete, initial, tit key={value} type="button" onClick={() => set('label_position', value)} - className="flex items-center justify-center h-8 rounded text-xs transition-colors" + className={`flex items-center justify-center h-8 rounded text-xs transition-colors cursor-pointer ${modalStyles['modal-interactive']}`} style={{ background: isSelected ? '#00d4ff22' : '#21262d', border: `1px solid ${isSelected ? '#00d4ff88' : '#30363d'}`, @@ -248,7 +249,7 @@ export function GroupRectModal({ open, onClose, onSubmit, onDelete, initial, tit key={value} type="button" onClick={() => set('text_size', value)} - className="flex items-center justify-center h-8 rounded transition-colors" + className={`flex items-center justify-center h-8 rounded transition-colors cursor-pointer ${modalStyles['modal-interactive']}`} style={{ background: isSelected ? '#00d4ff22' : '#21262d', border: `1px solid ${isSelected ? '#00d4ff88' : '#30363d'}`, @@ -275,7 +276,7 @@ export function GroupRectModal({ open, onClose, onSubmit, onDelete, initial, tit type="button" title={label} onClick={() => set('border_style', value)} - className="flex flex-col items-center justify-center h-10 rounded text-xs gap-0.5 transition-colors" + className={`flex flex-col items-center justify-center h-10 rounded text-xs gap-0.5 transition-colors cursor-pointer ${modalStyles['modal-interactive']}`} style={{ background: isSelected ? '#00d4ff22' : '#21262d', border: `1px solid ${isSelected ? '#00d4ff88' : '#30363d'}`, @@ -301,7 +302,7 @@ export function GroupRectModal({ open, onClose, onSubmit, onDelete, initial, tit key={value} type="button" onClick={() => set('border_width', value)} - className="flex items-center justify-center h-8 rounded text-xs transition-colors" + className={`flex items-center justify-center h-8 rounded text-xs transition-colors cursor-pointer ${modalStyles['modal-interactive']}`} style={{ background: isSelected ? '#00d4ff22' : '#21262d', border: `1px solid ${isSelected ? '#00d4ff88' : '#30363d'}`, @@ -319,7 +320,7 @@ export function GroupRectModal({ open, onClose, onSubmit, onDelete, initial, tit
set('type', v as NodeType)}> - + {NODE_TYPE_LABELS[(form.type ?? 'server') as NodeType]} @@ -137,7 +138,7 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node'
@@ -237,7 +238,7 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node' value={form.ip ?? ''} onChange={(e) => set('ip', e.target.value)} placeholder="192.168.1.x, 2001:db8::1" - className="bg-[#21262d] border-[#30363d] font-mono text-sm h-8" + className={`bg-[#21262d] border-[#30363d] font-mono text-sm h-8 ${modalStyles['modal-radius']}`} />
@@ -245,7 +246,7 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node'
- - - -