Soundboard.css 5.3 Ko
Télécharger le fichier
/* Soundboard pads and the side feed that replaced the "played" line in room chat. */
/* The pads are two columns of rows: a tone icon, the name, and the key that plays it. */
.soundboard-list {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 4px;
}
.soundboard-pad {
display: flex;
align-items: center;
gap: 7px;
min-width: 0;
height: 34px;
padding: 0 8px 0 5px;
border: 1px solid #b4c6d1;
border-radius: 6px;
background: rgba(255, 255, 255, 0.78);
color: #17384b;
cursor: pointer;
text-align: left;
transition: background-color 0.12s, border-color 0.12s;
}
.soundboard-pad:hover,
.soundboard-pad:focus-visible {
border-color: #3d8fba;
background: #fff;
outline: none;
}
.soundboard-pad:active {
background: #e3f0f7;
}
.soundboard-pad[aria-disabled='true'] {
cursor: not-allowed;
opacity: 0.55;
}
.soundboard-pad[data-playing] {
border-color: #3d8fba;
background: #e3f0f7;
}
.soundboard-pad__icon {
display: flex;
flex: none;
align-items: center;
justify-content: center;
width: 24px;
height: 24px;
border-width: 2px;
border-radius: 6px;
color: #fff;
font-size: 13px;
line-height: 1;
}
.soundboard-pad__name {
min-width: 0;
flex: 1;
overflow: hidden;
font-size: 11px;
font-weight: 700;
text-overflow: ellipsis;
white-space: nowrap;
}
.soundboard-pad__star {
flex: none;
color: #d49a1c;
font-size: 11px;
line-height: 1;
}
.soundboard-pad__key {
flex: none;
min-width: 15px;
border-radius: 4px;
background: #d6e3ea;
color: #3d6178;
font-size: 9px;
font-weight: 700;
line-height: 15px;
text-align: center;
}
/* Three bars that move while the pad's sound is playing. */
@keyframes soundboard-bar {
0%, 100% { transform: scaleY(0.35); }
50% { transform: scaleY(1); }
}
.soundboard-bars {
display: flex;
align-items: flex-end;
gap: 2px;
height: 12px;
}
.soundboard-bars i {
width: 3px;
height: 100%;
border-radius: 1px;
background: #fff;
transform-origin: bottom;
animation: soundboard-bar 0.55s ease-in-out infinite;
}
.soundboard-bars i:nth-child(2) { animation-delay: 0.15s; }
.soundboard-bars i:nth-child(3) { animation-delay: 0.3s; }
/* The shelf above the list: favourites, or what was played last. */
.soundboard-shelf {
display: flex;
align-items: center;
gap: 8px;
}
.soundboard-shelf__label {
flex: none;
color: #3d6178;
font-size: 10px;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.soundboard-shelf__row {
display: flex;
flex: 1;
gap: 6px;
justify-content: flex-end;
}
.soundboard-shelf__button {
display: flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
border-width: 2px;
border-radius: 50%;
color: #fff;
cursor: pointer;
font-size: 14px;
line-height: 1;
}
.soundboard-shelf__button[aria-disabled='true'] {
cursor: not-allowed;
opacity: 0.55;
}
.soundboard-shelf__button[data-playing] {
outline: 2px solid #fff;
box-shadow: 0 0 0 4px rgba(61, 143, 186, 0.45);
}
.soundboard-cooldown {
height: 5px;
overflow: hidden;
border-radius: 3px;
background: #b9ccd8;
}
.soundboard-cooldown__track {
height: 100%;
}
.soundboard-cooldown__fill {
height: 100%;
background: #3d8fba;
transition: width 0.25s linear;
}
.soundboard-feed {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 4px;
width: 100%;
pointer-events: none;
}
@keyframes soundboard-feed-in {
from { opacity: 0; transform: translateX(30px); }
to { opacity: 1; transform: none; }
}
.soundboard-feed__item {
display: flex;
align-items: center;
gap: 7px;
animation: soundboard-feed-in 0.35s ease-out;
pointer-events: auto;
cursor: pointer;
}
.soundboard-feed__item {
position: relative;
}
.soundboard-feed__icon {
flex: none;
color: rgba(255, 255, 255, 0.7);
}
.soundboard-feed__user {
font-weight: 700;
overflow-wrap: anywhere;
}
/* Shrinks over the time the entry stays, so the player sees when it goes away. */
@keyframes soundboard-feed-timer {
from { transform: scaleX(1); }
to { transform: scaleX(0); }
}
.soundboard-feed__timer {
position: absolute;
right: 0;
bottom: 0;
left: 0;
height: 2px;
background: rgba(255, 255, 255, 0.35);
transform-origin: left;
animation: soundboard-feed-timer linear forwards;
}
.soundboard-feed__item .soundboard-feed__silence {
opacity: 0.6;
}
.soundboard-feed__item:hover .soundboard-feed__silence,
.soundboard-feed__item .soundboard-feed__silence:focus-visible {
opacity: 1;
}
/* The silence button keeps the hotel button skin the bubble gives every button. */
.soundboard-feed__item .soundboard-feed__silence {
display: flex;
flex: none;
align-items: center;
justify-content: center;
min-height: 20px;
padding: 0 4px;
cursor: pointer;
}
.soundboard-silenced {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
font-size: 11px;
}
.soundboard-silenced__restore {
padding: 0;
border: 0;
background: transparent;
color: #3d8fba;
cursor: pointer;
text-decoration: underline;
}
