@tolokoban/ui
Version:
React components with theme
160 lines (143 loc) • 5.06 kB
CSS
.Tabs {
--custom-color-back: var(--theme-color-neutral-2);
--custom-color-text: var(--theme-color-on-neutral-2);
--custom-color-highlight-back: var(--theme-color-primary-5);
--custom-color-highlight-text: var(--theme-color-on-primary-5);
--custom-border-radius: 4px;
--custom-outline: 0;
--custom-highlight: 4px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
gap: 0;
margin: 0.25em;
background: none;
&.vertical {
flex-direction: row;
> header {
/* flex-direction: column; */
flex-direction: column;
& > button,
& > div {
writing-mode: vertical-rl;
text-orientation: mixed;
max-height: none;
height: auto;
width: calc(2em + var(--custom-highlight));
max-width: calc(2em + var(--custom-highlight));
padding: 0.5em 0;
}
& > div {
border: var(--custom-outline) solid
var(--custom-color-highlight-back);
border-left: var(--custom-highlight) solid
var(--custom-color-highlight-back);
border-right: none;
border-radius: var(--custom-border-radius) 0 0
var(--custom-border-radius);
font-weight: bold;
z-index: 2;
transform: translateX(var(--custom-outline));
}
& > button {
padding-left: var(--custom-highlight);
}
&.opposite {
> div {
border: var(--custom-outline) solid
var(--custom-color-highlight-back);
border-left: none;
border-right: var(--custom-highlight) solid
var(--custom-color-highlight-back);
border-radius: 0 var(--custom-border-radius)
var(--custom-border-radius) 0;
transform: translateX(calc(0px - var(--custom-outline)));
}
> button {
padding-left: 0;
padding-right: var(--custom-highlight);
}
}
}
}
> main {
flex: 1 1 auto;
padding: 0.5em;
background: var(--custom-color-back);
color: var(--custom-color-text);
border-radius: 0 var(--custom-border-radius) var(--custom-border-radius)
var(--custom-border-radius);
border: var(--custom-outline) solid var(--custom-color-highlight-back);
}
> header {
flex: 0 0 auto;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: stretch;
flex-wrap: wrap-reverse;
padding: 0;
z-index: 1;
&.opposite {
order: 2;
> div {
border-bottom: var(--custom-highlight) solid
var(--custom-color-highlight-back);
border-top: none;
border-radius: 0 0 var(--custom-border-radius)
var(--custom-border-radius);
transform: translateY(calc(0px - var(--custom-outline)));
}
> button {
padding-top: 0;
padding-bottom: var(--custom-highlight);
}
}
> div {
background: var(--custom-color-back);
color: var(--custom-color-text);
border: var(--custom-outline) solid
var(--custom-color-highlight-back);
border-top: var(--custom-highlight) solid
var(--custom-color-highlight-back);
border-bottom: none;
border-radius: var(--custom-border-radius)
var(--custom-border-radius) 0 0;
font-weight: bold;
z-index: 2;
transform: translateY(var(--custom-outline));
}
> button {
font: inherit;
color: inherit;
cursor: pointer;
transition: all 0.2s;
opacity: 0.6;
background: none;
border: none;
box-shadow: none;
padding-top: var(--custom-highlight);
&:hover,
&:active {
background: var(--custom-color-highlight-back);
color: var(--custom-color-highlight-text);
}
}
> * {
margin: 0;
padding: 0 0.5em;
display: flex;
flex-wrap: nowrap;
flex-direction: row;
justify-content: flex-start;
align-items: center;
gap: 1em;
height: calc(2em + var(--custom-highlight));
max-height: calc(2em + var(--custom-highlight));
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}