153 lines
3.7 KiB
SCSS
153 lines
3.7 KiB
SCSS
:root {
|
|
--tt-dropdown-menu-bg-color: var(--white);
|
|
--tt-dropdown-menu-text-color: var(--tt-gray-light-a-600);
|
|
--tt-dropdown-menu-label-color: var(--tt-gray-light-a-800);
|
|
}
|
|
|
|
:root.dark,
|
|
.dark {
|
|
--tt-dropdown-menu-bg-color: var(--tt-gray-dark-50);
|
|
--tt-dropdown-menu-text-color: var(--tt-gray-dark-a-600);
|
|
--tt-dropdown-menu-label-color: var(--tt-gray-dark-a-800);
|
|
}
|
|
|
|
/* ============================================================
|
|
Dropdown Menu
|
|
============================================================ */
|
|
|
|
/* --- Content --- */
|
|
|
|
.tiptap-dropdown-menu-content {
|
|
--slide-x: 0px;
|
|
--slide-y: 0px;
|
|
--padding: 0.375rem;
|
|
|
|
position: relative;
|
|
z-index: 50;
|
|
min-width: 8rem;
|
|
max-height: var(--radix-dropdown-menu-content-available-height);
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
border-radius: calc(var(--padding) + var(--tt-radius-lg));
|
|
padding: 0.375rem;
|
|
background-color: var(--tt-dropdown-menu-bg-color);
|
|
color: var(--tt-dropdown-menu-text-color);
|
|
box-shadow: var(--tt-shadow-elevated-md);
|
|
transform-origin: var(--radix-dropdown-menu-content-transform-origin);
|
|
transition-duration: 100ms;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-content[data-side="bottom"] {
|
|
--slide-y: -0.5rem;
|
|
}
|
|
.tiptap-dropdown-menu-content[data-side="top"] {
|
|
--slide-y: 0.5rem;
|
|
}
|
|
.tiptap-dropdown-menu-content[data-side="left"] {
|
|
--slide-x: 0.5rem;
|
|
}
|
|
.tiptap-dropdown-menu-content[data-side="right"] {
|
|
--slide-x: -0.5rem;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-content[data-state="open"] {
|
|
animation: dropdown-in 100ms ease forwards;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-content[data-state="closed"] {
|
|
animation: dropdown-out 100ms ease forwards;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* --- Sub Content --- */
|
|
|
|
.tiptap-dropdown-menu-sub-content {
|
|
--slide-x: 0px;
|
|
--slide-y: 0px;
|
|
--padding: 0.375rem;
|
|
|
|
z-index: 50;
|
|
min-width: 6rem;
|
|
overflow: hidden;
|
|
border-radius: calc(var(--padding) + var(--tt-radius-lg));
|
|
padding: 0.25rem;
|
|
background-color: var(--tt-dropdown-menu-bg-color);
|
|
box-shadow: var(--tt-shadow-elevated-md);
|
|
color: var(--tt-dropdown-menu-text-color);
|
|
transform-origin: var(--radix-dropdown-menu-content-transform-origin);
|
|
transition-duration: 100ms;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-sub-content[data-side="bottom"] {
|
|
--slide-y: -0.5rem;
|
|
}
|
|
.tiptap-dropdown-menu-sub-content[data-side="top"] {
|
|
--slide-y: 0.5rem;
|
|
}
|
|
.tiptap-dropdown-menu-sub-content[data-side="left"] {
|
|
--slide-x: 0.5rem;
|
|
}
|
|
.tiptap-dropdown-menu-sub-content[data-side="right"] {
|
|
--slide-x: -0.5rem;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-sub-content[data-state="open"] {
|
|
animation: dropdown-in 100ms ease forwards;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-sub-content[data-state="closed"] {
|
|
animation: dropdown-out 100ms ease forwards;
|
|
}
|
|
|
|
/* Shared enter/exit keyframes — slide direction driven by --slide-x/y on the element */
|
|
|
|
@keyframes dropdown-in {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.95) translate(var(--slide-x), var(--slide-y));
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1) translate(0, 0);
|
|
}
|
|
}
|
|
|
|
@keyframes dropdown-out {
|
|
from {
|
|
opacity: 1;
|
|
transform: scale(1) translate(0, 0);
|
|
}
|
|
to {
|
|
opacity: 0;
|
|
transform: scale(0.95) translate(var(--slide-x), var(--slide-y));
|
|
}
|
|
}
|
|
|
|
/* --- Label --- */
|
|
|
|
.tiptap-dropdown-menu-label {
|
|
padding: 0.75rem 0.5rem 0.25rem;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
line-height: normal;
|
|
text-transform: capitalize;
|
|
color: var(--tt-dropdown-menu-label-color);
|
|
}
|
|
|
|
.tiptap-dropdown-menu-label[data-inset="true"] {
|
|
padding-left: 1.75rem;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-group,
|
|
.tiptap-dropdown-menu-group[data-orientation="vertical"] {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.tiptap-dropdown-menu-group[data-orientation="horizontal"] {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
}
|