@radix-ui/themes
Version:
[](https://radix-ui.com/themes)
246 lines (212 loc) • 7.37 kB
CSS
.rt-BaseMenuContent {
--scrollarea-scrollbar-vertical-margin-top: var(--base-menu-content-padding);
--scrollarea-scrollbar-vertical-margin-bottom: var(--base-menu-content-padding);
--scrollarea-scrollbar-horizontal-margin-left: var(--base-menu-content-padding);
--scrollarea-scrollbar-horizontal-margin-right: var(--base-menu-content-padding);
display: flex;
flex-direction: column;
box-sizing: border-box;
overflow: hidden;
background-color: var(--base-menu-bg);
}
.rt-BaseMenuViewport {
flex: 1 1 0%;
display: flex;
flex-direction: column;
overflow: auto;
padding: var(--base-menu-content-padding);
box-sizing: border-box;
:where(.rt-BaseMenuContent:has(.rt-ScrollAreaScrollbar[data-orientation='vertical'])) & {
padding-right: var(--space-3);
}
}
.rt-BaseMenuItem {
display: flex;
align-items: center;
gap: var(--space-2);
height: var(--base-menu-item-height);
padding-left: var(--base-menu-item-padding-left);
padding-right: var(--base-menu-item-padding-right);
box-sizing: border-box;
position: relative;
outline: none;
scroll-margin: var(--base-menu-content-padding) 0;
/* Fix sticky text highlighting after selection in Firefox */
user-select: none;
/* Cursors */
cursor: var(--cursor-menu-item);
&:where([data-disabled]) {
cursor: default;
}
}
.rt-BaseMenuShortcut {
display: flex;
align-items: center;
margin-left: auto;
padding-left: var(--space-4);
}
.rt-BaseMenuSubTriggerIcon {
color: var(--gray-12);
margin-right: calc(-2px * var(--scaling));
}
.rt-BaseMenuItemIndicator {
position: absolute;
left: 0;
width: var(--base-menu-item-padding-left);
display: inline-flex;
align-items: center;
justify-content: center;
}
.rt-BaseMenuSeparator {
height: 1px;
margin-top: var(--space-2);
margin-bottom: var(--space-2);
margin-left: var(--base-menu-item-padding-left);
margin-right: var(--base-menu-item-padding-right);
}
.rt-BaseMenuLabel {
display: flex;
align-items: center;
height: var(--base-menu-item-height);
padding-left: var(--base-menu-item-padding-left);
padding-right: var(--base-menu-item-padding-right);
box-sizing: border-box;
color: var(--gray-a10);
user-select: none;
cursor: default;
:where(.rt-BaseMenuItem) + & {
margin-top: var(--space-2);
}
}
.rt-BaseMenuArrow {
fill: var(--base-menu-bg);
}
/***************************************************************************************************
* *
* SIZES *
* *
***************************************************************************************************/
@breakpoints {
.rt-BaseMenuContent {
&:where(.rt-r-size-1) {
--base-menu-content-padding: var(--space-1);
--base-menu-item-padding-left: calc(var(--space-5) / 1.2);
--base-menu-item-padding-right: var(--space-2);
--base-menu-item-height: var(--space-5);
border-radius: var(--radius-3);
& :where(.rt-BaseMenuItem) {
font-size: var(--font-size-1);
line-height: var(--line-height-1);
letter-spacing: var(--letter-spacing-1);
border-radius: var(--radius-1);
}
& :where(.rt-BaseMenuLabel) {
font-size: var(--font-size-1);
line-height: var(--line-height-1);
letter-spacing: var(--letter-spacing-1);
}
& :where(.rt-BaseMenuItemIndicatorIcon, .rt-BaseMenuSubTriggerIcon) {
width: calc(8px * var(--scaling));
height: calc(8px * var(--scaling));
}
/* reset with :not:has so we still support browsers without :has */
&:where(:not(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem))) {
--base-menu-item-padding-left: var(--space-2);
}
&:where(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem)) {
--base-menu-item-padding-left: calc(var(--space-5) / 1.2);
}
}
&:where(.rt-r-size-2) {
--base-menu-content-padding: var(--space-2);
--base-menu-item-padding-left: var(--space-3);
--base-menu-item-padding-right: var(--space-3);
--base-menu-item-height: var(--space-6);
border-radius: var(--radius-4);
& :where(.rt-BaseMenuItem) {
font-size: var(--font-size-2);
line-height: var(--line-height-2);
letter-spacing: var(--letter-spacing-2);
border-radius: var(--radius-2);
}
& :where(.rt-BaseMenuLabel) {
font-size: var(--font-size-2);
line-height: var(--line-height-2);
letter-spacing: var(--letter-spacing-2);
}
& :where(.rt-BaseMenuItemIndicatorIcon, .rt-BaseMenuSubTriggerIcon) {
width: calc(10px * var(--scaling));
height: calc(10px * var(--scaling));
}
/* reset with :not:has so we still support browsers without :has */
&:where(:not(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem))) {
--base-menu-item-padding-left: var(--space-3);
}
&:where(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem)) {
--base-menu-item-padding-left: var(--space-5);
}
}
}
}
/***************************************************************************************************
* *
* VARIANTS *
* *
***************************************************************************************************/
.rt-BaseMenuContent {
--base-menu-bg: var(--color-panel-solid);
box-shadow: var(--shadow-5);
}
.rt-BaseMenuItem:where([data-accent-color]) {
color: var(--accent-a11);
}
.rt-BaseMenuItem:where([data-disabled]) {
color: var(--gray-a8);
}
.rt-BaseMenuShortcut {
color: var(--gray-a11);
}
.rt-BaseMenuItem:where([data-disabled], [data-highlighted]),
.rt-BaseMenuSubTrigger:where([data-state='open']) {
& :where(.rt-BaseMenuShortcut) {
color: inherit;
}
}
.rt-BaseMenuSeparator {
background-color: var(--gray-a6);
}
/* solid */
.rt-BaseMenuContent:where(.rt-variant-solid) {
& :where(.rt-BaseMenuSubTrigger[data-state='open']) {
background-color: var(--gray-a3);
}
& :where(.rt-BaseMenuItem[data-highlighted]) {
background-color: var(--accent-9);
color: var(--accent-contrast);
& :where(.rt-BaseMenuSubTriggerIcon) {
color: var(--accent-contrast);
}
}
&:where(.rt-high-contrast) {
& :where(.rt-BaseMenuItem[data-highlighted]) {
background-color: var(--accent-12);
color: var(--accent-1);
& :where(.rt-BaseMenuSubTriggerIcon) {
color: var(--accent-1);
}
&:where([data-accent-color]) {
background-color: var(--accent-9);
color: var(--accent-contrast);
}
}
}
}
/* soft */
.rt-BaseMenuContent:where(.rt-variant-soft) {
& :where(.rt-BaseMenuSubTrigger[data-state='open']) {
background-color: var(--accent-a3);
}
& :where(.rt-BaseMenuItem[data-highlighted]) {
background-color: var(--accent-a4);
}
}