From bb47b0e25b23d74c3a7c3c1086a046a20e56b9bd Mon Sep 17 00:00:00 2001 From: josedario87 Date: Thu, 16 Oct 2025 23:29:10 -0600 Subject: [PATCH] Mejorar estilo de filtros de grupos con glassmorphism MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reemplazar UButton por botones nativos con estilos personalizados - Aplicar glassmorphism consistente con el resto de la app - Estados normal y activo con efectos de sombra y color - Hover con translateY para efecto de elevación - Soporte completo para modo oscuro con opacidades ajustadas - Botones activos con color primario y borde resaltado --- .../app/components/auth/ApplicationsList.vue | 89 +++++++++++++++++-- 1 file changed, 84 insertions(+), 5 deletions(-) diff --git a/nuxt4/app/components/auth/ApplicationsList.vue b/nuxt4/app/components/auth/ApplicationsList.vue index 07fb1b4..0fe80a0 100644 --- a/nuxt4/app/components/auth/ApplicationsList.vue +++ b/nuxt4/app/components/auth/ApplicationsList.vue @@ -13,16 +13,14 @@
- {{ group }} - +
@@ -283,6 +281,50 @@ onUnmounted(() => { gap: 0.5rem; } +.filter-button { + padding: 0.5rem 1rem; + font-size: 0.875rem; + font-weight: 500; + border-radius: 0.75rem; + background: rgba(255, 255, 255, 0.25); + backdrop-filter: blur(10px) saturate(150%); + border: 1px solid rgba(0, 0, 0, 0.08); + color: var(--color-gray-700); + cursor: pointer; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + box-shadow: + 0 2px 6px 0 rgba(31, 38, 135, 0.08), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.3); +} + +.filter-button:hover { + transform: translateY(-2px); + background: rgba(255, 255, 255, 0.35); + box-shadow: + 0 4px 12px 0 rgba(31, 38, 135, 0.12), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.4); +} + +.filter-button-active { + background: rgba(var(--color-primary-500), 0.15); + border-color: rgba(var(--color-primary-500), 0.3); + color: rgb(var(--color-primary-500)); + font-weight: 600; + box-shadow: + 0 2px 8px 0 rgba(var(--color-primary-500), 0.2), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.3), + inset 0 -1px 2px 0 rgba(var(--color-primary-500), 0.1); +} + +.filter-button-active:hover { + background: rgba(var(--color-primary-500), 0.2); + border-color: rgba(var(--color-primary-500), 0.4); + box-shadow: + 0 4px 12px 0 rgba(var(--color-primary-500), 0.3), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.4), + inset 0 -1px 2px 0 rgba(var(--color-primary-500), 0.15); +} + .empty-state { display: flex; flex-direction: column; @@ -476,4 +518,41 @@ onUnmounted(() => { .dark .app-description { color: var(--color-gray-400) !important; } + +.dark .filter-button { + background: rgba(255, 255, 255, 0.05) !important; + border-color: rgba(255, 255, 255, 0.1) !important; + color: var(--color-gray-300) !important; + box-shadow: + 0 2px 6px 0 rgba(0, 0, 0, 0.3), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.05) !important; +} + +.dark .filter-button:hover { + background: rgba(255, 255, 255, 0.1) !important; + box-shadow: + 0 4px 12px 0 rgba(0, 0, 0, 0.4), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.08) !important; +} + +.dark .filter-button-active { + background: rgba(var(--color-primary-500), 0.25) !important; + border-color: rgba(var(--color-primary-500), 0.5) !important; + color: rgb(var(--color-primary-400)) !important; + box-shadow: + 0 2px 8px 0 rgba(var(--color-primary-500), 0.4), + 0 0 0 1px rgba(var(--color-primary-500), 0.3), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.08), + inset 0 -1px 2px 0 rgba(var(--color-primary-500), 0.2) !important; +} + +.dark .filter-button-active:hover { + background: rgba(var(--color-primary-500), 0.3) !important; + border-color: rgba(var(--color-primary-500), 0.6) !important; + box-shadow: + 0 4px 12px 0 rgba(var(--color-primary-500), 0.5), + 0 0 0 1px rgba(var(--color-primary-500), 0.4), + inset 0 1px 1px 0 rgba(255, 255, 255, 0.1), + inset 0 -1px 2px 0 rgba(var(--color-primary-500), 0.25) !important; +}