UNPKG

pkg-components

Version:
92 lines (82 loc) 2.03 kB
.container { display: flex; align-items: center; justify-content: space-between; padding: 4px; height: 44px; position: relative; overflow: hidden; width: 100%; transition: all 0.3s ease; } /* Cada tab ocupa su fracción exacta sin romper proporción */ .tabs { flex: 1 1 0; min-width: 0; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 2; font-size: 14px; font-weight: 500; color: var(--color-text-gray-light); white-space: nowrap; user-select: none; border-radius: 8px; padding: 0 10px; transition: 0.3s ease; height: 100%; } .tabs.active { color: var(--color-text-black); } .activeText { color: var(--color-text-black); } /* Slider base: transición suave (ya la tenías) */ .slider { position: absolute; top: 40px; left: 4px; /* valor por defecto; será sobrescrito por inline style */ height: calc(100% - 8px); border-radius: 8px; background-color: var(--color-primary-red); box-shadow: var(--box-shadow-2xs); z-index: 1; transition: left 0.25s cubic-bezier(.2, .9, .2, 1), width 0.25s cubic-bezier(.2, .9, .2, 1); height: 2px; } /* Si quieres un ligero "lift" visual al hacer hover en un tab */ .tabs:hover+.slider { /* no hace falta, el movimiento lo controla React; esta regla es opcional */ } /* Animación de rebote opcional */ @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-3px); } 60% { transform: translateY(-1px); } } .text { display: inline-flex; align-items: center; justify-content: center; font-family: PFont-Regular; font-size: 14px; font-weight: 500; text-align: center; text-overflow: ellipsis; overflow: hidden; transition: color 0.3s ease-in-out; }