[data-rs-tree] {
display: flex;
flex-direction: column;
gap: var(--tree-gap);
min-width: var(--layout-width-xs);
}
[data-rs-tree-item] {
position: relative;
display: flex;
align-items: center;
gap: var(--space-xs);
min-height: var(--tree-item-height);
padding: var(--tree-item-padding-y) var(--tree-item-padding-x);
border-radius: var(--tree-item-radius);
color: var(--tree-item-fg);
font-size: var(--tree-item-font-size);
font-weight: var(--tree-item-font-weight-leaf);
cursor: pointer;
user-select: none;
transition:
background var(--tree-transition-duration) var(--tree-transition-ease),
color var(--tree-transition-duration) var(--tree-transition-ease);
}
[data-rs-tree-item][data-rs-depth="0"] {
padding-left: var(--tree-item-padding-x);
font-weight: var(--tree-item-font-weight-parent);
color: var(--tree-item-fg);
}
[data-rs-tree-item][data-rs-depth="1"] {
padding-left: var(--tree-indent-depth-1);
font-weight: var(--tree-item-font-weight-leaf);
color: var(--tree-item-fg-muted);
}
[data-rs-tree-item][data-rs-depth="2"] {
padding-left: var(--tree-indent-depth-2);
color: var(--tree-item-fg-muted);
}
[data-rs-tree-item][data-rs-depth="3"] {
padding-left: calc(var(--tree-indent-depth-2) + var(--tree-indent));
color: var(--tree-item-fg-muted);
}
[data-rs-tree-item]:hover:not([data-rs-state~="disabled"]) {
background: var(--tree-item-hover-bg);
color: var(--tree-item-fg);
}
[data-rs-tree-item]:focus-visible {
outline: var(--focus-ring-width) solid var(--theme-action-focus-ring);
outline-offset: -2px;
}
[data-rs-tree-item][data-rs-state~="selected"],
[data-rs-tree-item][data-rs-state~="active"] {
background: var(--tree-item-active-bg);
color: var(--tree-item-fg);
font-weight: var(--tree-item-font-weight-parent);
}
[data-rs-tree-item][data-rs-state~="active"]::before {
content: "";
position: absolute;
left: 0;
top: var(--space-xs);
bottom: var(--space-xs);
width: var(--border-medium);
background: var(--tree-item-active-indicator);
border-radius: var(--radius-full);
}
[data-rs-tree-item][data-rs-state~="disabled"] {
opacity: var(--opacity-disabled);
cursor: not-allowed;
pointer-events: none;
}
[data-rs-tree-toggle] {
display: inline-flex;
align-items: center;
justify-content: center;
width: var(--space-xl);
height: var(--space-xl);
flex-shrink: 0;
background: transparent;
border: none;
color: var(--tree-item-fg-muted);
cursor: pointer;
opacity: var(--opacity-disabled);
transition:
transform var(--tree-transition-duration) var(--tree-transition-ease),
opacity var(--tree-transition-duration) var(--tree-transition-ease);
padding: 0;
}
[data-rs-tree-item]:hover:not([data-rs-state~="disabled"]) [data-rs-tree-toggle] {
opacity: 1;
}
[data-rs-tree-item][data-rs-state~="expanded"] [data-rs-tree-toggle] {
transform: rotate(var(--tree-icon-rotation));
opacity: var(--opacity-hover);
}
[data-rs-tree-item][data-rs-state~="collapsed"] [data-rs-tree-toggle] {
transform: rotate(0deg);
}
[data-rs-tree-indent] {
display: inline-flex;
width: var(--space-xl);
height: var(--space-xl);
flex-shrink: 0;
}
[data-rs-tree-icon] {
width: var(--tree-icon-size);
height: var(--tree-icon-size);
flex-shrink: 0;
opacity: var(--opacity-disabled);
transition: opacity var(--tree-transition-duration) var(--tree-transition-ease);
}
[data-rs-tree-item]:hover:not([data-rs-state~="disabled"]) [data-rs-tree-icon],
[data-rs-tree-item][data-rs-state~="active"] [data-rs-tree-icon] {
opacity: 1;
}
[data-rs-tree-label] {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
[data-rs-tree-group] {
display: flex;
flex-direction: column;
gap: var(--tree-gap);
position: relative;
}
[data-rs-tree-group]::before {
content: "";
position: absolute;
left: var(--tree-indent-depth-1);
top: 0;
bottom: 0;
width: var(--border-thin);
background: var(--tree-guide-color);
pointer-events: none;
}
[data-rs-tree-item][data-rs-state~="collapsed"] + [data-rs-tree-group],
[data-rs-tree-item]:not([data-rs-state~="expanded"]):not([data-rs-state~="collapsed"]) + [data-rs-tree-group] {
display: none;
}
[data-rs-tree-item][data-rs-state~="expanded"] + [data-rs-tree-group] {
display: flex;
}