UNPKG

@tolokoban/ui

Version:

React components with theme

160 lines (143 loc) 5.06 kB
.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; } } }