From 0c15ea71d72b6087ad106b28018e1aaaf77343a4 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Wed, 25 Mar 2026 08:43:20 +0100 Subject: [PATCH] Ristruttura InfoPanel: rimuove duplicati, layout professionale - Rimuove versione duplicata (era nell'header e nella lista) - Rimuove descrizione ridondante e bottone Chiudi full-width - Aggiunge icona app (quadrato verde con iniziale B) - X per chiudere in alto a destra, tap overlay per dismissione - Righe info in card con bordo, pattern iOS/Android settings Co-Authored-By: Claude Sonnet 4.6 --- src/components/InfoPanel.vue | 164 +++++++++++++++++++---------------- 1 file changed, 89 insertions(+), 75 deletions(-) diff --git a/src/components/InfoPanel.vue b/src/components/InfoPanel.vue index 44d713e..66bb72e 100644 --- a/src/components/InfoPanel.vue +++ b/src/components/InfoPanel.vue @@ -1,51 +1,49 @@ @@ -74,12 +72,9 @@ const version = pkg.version max-width: 480px; background: var(--color-surface); border-radius: var(--radius) var(--radius) 0 0; - padding: 12px 20px 36px; + padding: 12px 20px 48px; z-index: 201; box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.12); - display: flex; - flex-direction: column; - gap: 0; } .sheet-handle { @@ -87,65 +82,92 @@ const version = pkg.version height: 4px; background: var(--color-border); border-radius: var(--radius-full); - margin: 0 auto 20px; + margin: 0 auto 24px; } -.sheet-header { +/* header: icona app + nome/versione + X */ +.sheet-top { display: flex; - align-items: baseline; - gap: 8px; - margin-bottom: 8px; + align-items: center; + justify-content: space-between; + margin-bottom: 24px; +} + +.app-identity { + display: flex; + align-items: center; + gap: 14px; +} + +.app-icon { + width: 48px; + height: 48px; + background: var(--color-primary); + color: #fff; + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.4rem; + font-weight: 800; + letter-spacing: -0.02em; } .app-name { - font-size: 1.2rem; - font-weight: 800; - letter-spacing: -0.02em; - color: var(--color-primary); + font-size: 1rem; + font-weight: 700; + color: var(--color-text); } .app-version { font-size: 0.8rem; color: var(--color-muted); - font-weight: 500; + margin-top: 1px; } -.app-desc { - font-size: 0.88rem; +.btn-x { + background: var(--color-bg); color: var(--color-muted); - line-height: 1.5; - margin-bottom: 20px; + min-height: 36px; + min-width: 36px; + padding: 0; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid var(--color-border); } -.divider { - height: 1px; - background: var(--color-border); - margin-bottom: 16px; +/* lista righe info */ +.info-list { + border: 1px solid var(--color-border); + border-radius: var(--radius); + overflow: hidden; } .info-row { display: flex; justify-content: space-between; align-items: center; - padding: 11px 0; + padding: 14px 16px; + background: var(--color-surface); border-bottom: 1px solid var(--color-border); } -.info-row:last-of-type { border-bottom: none; } +.info-row:last-child { border-bottom: none; } .info-label { - font-size: 0.88rem; - color: var(--color-muted); -} - -.info-value { - font-size: 0.88rem; - font-weight: 600; + font-size: 0.9rem; color: var(--color-text); } +.info-value { + font-size: 0.9rem; + color: var(--color-muted); +} + .info-link { - font-size: 0.88rem; + font-size: 0.9rem; font-weight: 600; color: var(--color-primary); text-decoration: none; @@ -154,14 +176,6 @@ const version = pkg.version gap: 4px; } -.btn-close { - margin-top: 20px; - width: 100%; - background: var(--color-bg); - color: var(--color-text); - font-weight: 600; -} - /* transizioni */ .fade-enter-active, .fade-leave-active { transition: opacity 200ms ease; } .fade-enter-from, .fade-leave-to { opacity: 0; }