Signal-Desktop/stylesheets/components/fun/FunSearch.scss

103 lines
2.3 KiB
SCSS

// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
@use '../../mixins';
@use '../../variables';
$icon-image-size: 20px;
$icon-actual-size: 18px;
$icon-margin-inline-start: 12px;
$clear-padding-inline: 6px;
$clear-button-size: 20px;
$clear-icon-size: 16px;
$input-padding-inline: 12px;
.FunSearch__Container {
position: relative;
width: 100%;
}
.FunSearch__Icon {
position: absolute;
width: $icon-image-size;
height: $icon-image-size;
top: 50%;
transform: translateY(-50%);
inset-inline-start: $icon-margin-inline-start;
pointer-events: none;
@include mixins.color-svg(
'../images/icons/v3/search/search.svg',
light-dark(variables.$color-black-alpha-50, variables.$color-white-alpha-50)
);
}
.FunSearch__Input {
appearance: none;
width: 100%;
border-radius: 8px;
border: none;
padding-block: 6px;
padding-inline-end: $input-padding-inline;
padding-inline-start: calc(
$input-padding-inline + $icon-actual-size + $icon-margin-inline-start
);
@include mixins.font-body-1;
background: light-dark(variables.$color-gray-05, variables.$color-gray-80);
&:focus {
outline: none;
@include mixins.keyboard-mode {
outline: 2px solid variables.$color-ultramarine;
}
}
}
.FunSearch__Clear {
@include mixins.button-reset();
& {
position: absolute;
display: flex;
align-items: center;
inset-block: 0;
inset-inline-end: 0;
padding-inline: $clear-padding-inline;
}
&:focus {
// Handled by .FunSearch__ClearButton
outline: none;
}
}
.FunSearch__ClearButton {
display: flex;
align-items: center;
justify-content: center;
width: $clear-button-size;
height: $clear-button-size;
border-radius: 9999px;
color: light-dark(
variables.$color-black-alpha-50,
variables.$color-white-alpha-50
);
.FunSearch__Clear:hover &,
.FunSearch__Clear:focus & {
color: light-dark(variables.$color-gray-75, variables.$color-gray-25);
}
.FunSearch__Clear:focus & {
@include mixins.keyboard-mode {
outline: 2px solid variables.$color-ultramarine;
}
}
&::before {
content: '';
display: block;
width: $clear-icon-size;
height: $clear-icon-size;
@include mixins.color-svg('../images/icons/v3/x/x.svg', currentColor);
}
}