gitea-lugit-theme/src/themes/scss/theme/components/forms/_menu.scss

205 lines
6.7 KiB
SCSS

@use '@lucas-labs/lui-micro/color' as color;
@use '@lucas-labs/lui-micro/var' as var;
@mixin dropdown-menu {
.ui.dropdown {
// dropdown menu
>.menu {
--border-radius: #{var.get('measure/.75x')};
opacity: 0;
overflow-x: hidden;
&.hidden { opacity: 0 !important;}
&.visible { opacity: 1 !important; }
border-radius: var(--border-radius) !important;
transition: opacity .2s ease !important;
box-shadow: 0px 6px 12px -3px rgba(var(--color-shadow-rgb), 0.5),
0px 6px 18px 0px rgba(var(--color-shadow-rgb), 0.1) !important;
.divider {
margin-top: var.get('measure/.5x') !important;
margin-bottom: var.get('measure/.5x') !important;
}
.item:not(.comment-reaction-button) {
--border-radius: #{var.get('measure/.375x')};
margin: 0 var.get('measure/.5x') !important;
border-radius: var(--border-radius) !important;
padding: var.get('measure/.375x') var.get('measure/.5x') !important;
line-height: 1 !important;
display: flex;
flex-wrap: wrap;
align-content: center;
width: auto;
&:first-of-type {
margin-top: var.get('measure/.5x') !important;
}
&:last-of-type {
margin-bottom: var.get('measure/.5x') !important;
}
&.clear-selection {
margin-bottom: var.get('measure/.5x') !important;
}
}
input[type="text"], input[name="search"] {
--color-input-background: #{color.get('elevation/1')};
--color-input-border: #{color.get('elevation/5')};
min-height: var.get('measure/2x') !important;
padding: 0 var.get('measure/.5x') !important;
font-size: var.get('font-size/md') !important;
border-radius: var.get('measure/.375x') !important;
&:focus {
--color-primary: var(--color-accent);
}
}
.scrolling.menu {
.item {
gap: var.get('measure/.5x') !important;
&:hover {
&:before {
position: absolute;
top: calc(50% - 12px);
left: -8px;
width: 4px;
height: 24px;
content: "";
background-color: var(--color-accent);
border-radius: 6px;
}
}
.item-check-mark {
background-color: color.get('elevation/6');
visibility: visible !important;
display: inline-flex;
padding: 2px;
border-radius: var.get('measure/.375x');
border: 1px solid color.get('elevation/8');
svg {
visibility: hidden;
}
}
.item-secondary-info {
flex-basis: 100%;
padding: 0 0 0 var.get('measure/.5x');
color: color.get('subtle');
line-height: 100%;
white-space: nowrap;
overflow-x: hidden;
small {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
&.checked {
.item-check-mark {
background-color: var(--color-accent);
svg {
visibility: visible;
}
}
}
}
}
}
// if not .upward
&:not(.upward) {
>.menu {
top: calc(100% + var.get('measure/.5x')) !important;
}
}
&.upward {
>.menu {
bottom: calc(100% + var.get('measure/.5x')) !important;
}
}
&.upward.selection.visible, &.active.upward.selection {
border-top-left-radius: var(--border-radius) !important;
border-top-right-radius: var(--border-radius) !important;
border-bottom-left-radius: var(--border-radius) !important;
border-bottom-right-radius: var(--border-radius) !important;
}
&.selection.active, &.selection.active:hover, &.selection.active .menu, &.selection.active:hover .menu {
border-color: var(--color-secondary) !important;
}
// select type dropdown
&.selection {
--border-radius: #{var.get('measure/.5x')};
border-radius: var(--border-radius) !important;
&:focus, &.active {
border-color: var(--color-secondary) !important;
outline: 2px solid var(--color-accent);
}
&.active {
border-radius: var(--border-radius) !important;
}
>.menu {
border-radius: var(--border-radius) !important;
border-top-width: 1px !important;
border-color: var(--color-secondary) !important;
display: flex !important;
flex-direction: column;
gap: var.get('measure/.25x');
.item {
border: none !important;
}
}
}
}
}
@mixin menu {
.ui.menu {
border-radius: var(--border-radius);
>.item:first-child {
border-radius: var(--border-radius) 0 0 var(--border-radius);
}
&.compact:not(.secondary) .item:last-child {
border-radius: 0 var(--border-radius) var(--border-radius) 0;
}
}
.ui.secondary.menu {
gap: var.get('measure/.25x');
&.vertical {
>.item {
border: none;
margin: 0 0 var.get('measure/.25x') 0;
border-radius: var(--border-radius) !important;
}
}
.dropdown.item.active:hover, a.item.active:hover {
color: var(--color-text);
background: var(--color-hover);
}
}
}