diff --git a/dental-server/dental-client/public/version.txt b/dental-server/dental-client/public/version.txt index 7ec3b24..f1cd7fa 100644 --- a/dental-server/dental-client/public/version.txt +++ b/dental-server/dental-client/public/version.txt @@ -1 +1 @@ -2.1.48 +2.1.49 diff --git a/dental-server/dental-client/src/index.css b/dental-server/dental-client/src/index.css index 2f4a03c..db76090 100644 --- a/dental-server/dental-client/src/index.css +++ b/dental-server/dental-client/src/index.css @@ -762,10 +762,10 @@ body { /* ---- Header da página: empilha, busca full-width ---- */ .header { padding: 12px 16px; } - .header-content { flex-direction: column; align-items: stretch; gap: 12px; } - .header-left { width: 100%; } - .header h1 { font-size: 1.25rem; } - .header-actions { width: 100%; flex-wrap: wrap; gap: 8px; } + .header-content { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; } + .header-left { flex: 1; min-width: 50%; } + .header h1 { font-size: 1.15rem; } + .header-actions { width: auto; flex: none; flex-wrap: nowrap; gap: 8px; align-items: center; } .search-input { min-width: 0; flex: 1 1 100%; width: 100%; font-size: 16px; } /* 16px evita zoom iOS */ .client-filter { flex: 1 1 100%; min-width: 0; width: 100%; } @@ -773,6 +773,22 @@ body { .hide-mobile { display: none !important; } .show-mobile { display: inline-flex !important; } + .mobile-icon-actions { display: flex !important; gap: 6px; align-items: center; } + .btn-icon { + width: 40px !important; + height: 40px !important; + border-radius: 50% !important; + display: flex !important; + align-items: center; + justify-content: center; + padding: 0 !important; + font-size: 1.2rem; + background: var(--bg-surface); + border: 1px solid var(--border-color); + color: var(--text-primary); + } + .btn-icon:active { background: var(--hover-color); transform: scale(0.95); } + /* ---- Grid de cards: thumbnails menores ---- */ .images-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; } .image-preview { height: 150px; } diff --git a/dental-server/dental-client/src/pages/DashboardPage.jsx b/dental-server/dental-client/src/pages/DashboardPage.jsx index 2a51d02..7a8186c 100644 --- a/dental-server/dental-client/src/pages/DashboardPage.jsx +++ b/dental-server/dental-client/src/pages/DashboardPage.jsx @@ -311,34 +311,11 @@ export default function DashboardPage() { 🔄 - {/* Mobile: ações em dropdown */} - - setIsSearchMobileOpen(!isSearchMobileOpen) }, - { label: showDisabled ? 'Ver Ativas' : 'Ver Ocultas', icon: '👁️', onClick: () => setShowDisabled(!showDisabled) }, - { label: 'Atualizar', icon: '🔄', onClick: () => loadPatients() }, - ]} - > - {/* Filtro de clientes dentro do dropdown */} -
- -
-
+ {/* Mobile: botões de ação em linha */} + + + + )} @@ -348,17 +325,34 @@ export default function DashboardPage() { )} - {view === 'patients' && isSearchMobileOpen && ( -
- setSearch(e.target.value)} - style={{ width: '100%', height: 44, fontSize: '1rem' }} - autoFocus - /> + + {/* Linha adicional Mobile para Filtros e Busca */} + {view === 'patients' && isMobile && ( +
+ + {isSearchMobileOpen && ( + setSearch(e.target.value)} + style={{ width: '100%', height: 44, fontSize: '1rem' }} + autoFocus + /> + )}
)} diff --git a/dental-server/dental-client/src/pages/GtosPage.jsx b/dental-server/dental-client/src/pages/GtosPage.jsx index f820e23..57a96be 100644 --- a/dental-server/dental-client/src/pages/GtosPage.jsx +++ b/dental-server/dental-client/src/pages/GtosPage.jsx @@ -351,16 +351,11 @@ export default function GtosPage() { {/* Mobile: ações em menu flutuante */} - - setIsSearchMobileOpen(!isSearchMobileOpen) }, - { label:'Nova GTO', icon:'➕', onClick:() => setShowCreate(true) }, - { label:'Atualizar lista', icon:'🔄', onClick:reload }, - ]} - /> + {/* Mobile: ações com icon buttons */} + + + +
diff --git a/dental-server/dental-client/src/pages/ImageDetailsPage.jsx b/dental-server/dental-client/src/pages/ImageDetailsPage.jsx index 5e70b4f..f723076 100644 --- a/dental-server/dental-client/src/pages/ImageDetailsPage.jsx +++ b/dental-server/dental-client/src/pages/ImageDetailsPage.jsx @@ -281,64 +281,57 @@ export default function ImageDetailsPage() { } }; - // Gerencia opções (4 no total). Se mobile + landscape(horizontal) divide em 2 páginas. + // Gerencia opções (4 no total). No mobile exibe APENAS UMA GIGANTE por vez. const allRotations = [0, 90, 180, 270]; - const useTwoCards = isMobile && !isPortrait; - const currentRotations = useTwoCards - ? allRotations.slice(orientationSubpage * 2, (orientationSubpage * 2) + 2) - : allRotations; + const useOneCard = isMobile; + const currentRotations = useOneCard ? [allRotations[orientationSubpage]] : allRotations; return (
{/* Top Header para navegação / Voltar */} -
- -
-

- {image.patient_name || 'Desconhecido'} -

-
- {formatDate(image.created_at)} + {/* Top Header para navegação / Voltar */} +
+
+ +
+

+ {image.patient_name || 'Desconhecido'} +

+
+ {formatDate(image.created_at)} +
-
- -
- {activeView === 'transform' && step === 'finetune' && ( - - )} - - - - {image.original_image_id && ( - + {!isMobile && ( +
+ {activeView === 'transform' && step === 'finetune' && ( + + )} + + + + {image.original_image_id && ( + + )} +
)}
+ {isMobile && ( +
+ {activeView === 'transform' && step === 'finetune' && ( + + )} + + + + {image.original_image_id && ( + + )} +
+ )}
@@ -378,52 +371,50 @@ export default function ImageDetailsPage() { >Categoria →
- {/* Controles de Sub-página (quando horizontal no mobile para mostrar só 2) */} - {useTwoCards && ( + {/* Controles de Rotação (Mobile exibe 1 por vez) */} + {useOneCard && (
- {orientationSubpage + 1}/2 + onClick={() => setOrientationSubpage((p) => (p - 1 + 4) % 4)} + >← Opção Anterior + {orientationSubpage + 1} de 4 + onClick={() => setOrientationSubpage((p) => (p + 1) % 4)} + >Próxima Opção →
)} -
+
{currentRotations.map((deg) => { const pg = choosePages[choosePage]; return ( - +
+ + {deg}°{pg.flipH ? ' ⇆' : pg.flipV ? ' ⇅' : ''} + + +
+
); })}
diff --git a/dental-server/dental-client/src/pages/PatientsPage.jsx b/dental-server/dental-client/src/pages/PatientsPage.jsx index 75b1541..444196b 100644 --- a/dental-server/dental-client/src/pages/PatientsPage.jsx +++ b/dental-server/dental-client/src/pages/PatientsPage.jsx @@ -127,16 +127,10 @@ export default function PatientsPage() { 🔄 - - setIsSearchMobileOpen(!isSearchMobileOpen) }, - { label: 'Novo Paciente', icon: '➕', onClick: () => setShowCreate(true) }, - { label: 'Atualizar lista', icon: '🔄', onClick: () => loadPatients(true) }, - ]} - /> + + + +