diff options
| author | Adam <[email protected]> | 2025-10-14 12:06:13 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-10-14 12:06:18 -0500 |
| commit | 49e859cfd6565c4ef67388c232e639917ec20625 (patch) | |
| tree | 168101fe951797572cf6d723b9efe9474f073ed5 /packages/css/src/components/tabs.css | |
| parent | 6c57a69af44d1a4844f92311e11242206c155212 (diff) | |
| download | opencode-49e859cfd6565c4ef67388c232e639917ec20625.tar.gz opencode-49e859cfd6565c4ef67388c232e639917ec20625.zip | |
wip: css/ui work
Diffstat (limited to 'packages/css/src/components/tabs.css')
| -rw-r--r-- | packages/css/src/components/tabs.css | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/packages/css/src/components/tabs.css b/packages/css/src/components/tabs.css new file mode 100644 index 000000000..3a70b4867 --- /dev/null +++ b/packages/css/src/components/tabs.css @@ -0,0 +1,98 @@ +[data-component="tabs"] { + display: flex; + flex-direction: column; + height: 100%; + + & [data-slot="list"] { + position: relative; + display: flex; + align-items: center; + background-color: var(--surface-default-surface); + overflow-x: auto; + + /* Hide scrollbar */ + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + + /* Divider between tabs */ + & > [data-slot="trigger"]:not(:first-child) { + border-left: 1px solid var(--border-default-border-weak); + } + + /* After element to fill remaining space */ + &::after { + content: ""; + display: block; + flex-grow: 1; + height: calc(var(--spacing) * 8); + border-left: 1px solid var(--border-default-border-weak); + border-bottom: 1px solid var(--border-default-border-weak); + } + + &:empty::after { + border-left: none; + } + } + + & [data-slot="trigger"] { + position: relative; + padding: 0 calc(var(--spacing) * 3); + height: calc(var(--spacing) * 8); + display: flex; + align-items: center; + font-size: var(--text-sm); + font-weight: var(--font-weight-medium); + color: var(--text-default-text-weak); + cursor: pointer; + white-space: nowrap; + flex-shrink: 0; + border-bottom: 1px solid var(--border-default-border-weak); + background-color: transparent; + transition: + background-color 0.15s ease, + color 0.15s ease; + + &:disabled { + pointer-events: none; + opacity: 0.5; + } + + &:focus-visible { + outline: none; + box-shadow: 0 0 0 2px var(--border-default-border-focus); + } + + &[data-selected] { + color: var(--text-default-text); + background-color: var(--surface-panel-surface); + border-bottom-color: transparent; + } + + &:hover:not(:disabled):not([data-selected]) { + color: var(--text-default-text); + } + } + + & [data-slot="content"] { + background-color: var(--surface-panel-surface); + overflow-y: auto; + flex: 1; + + /* Hide scrollbar */ + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + + &:focus-visible { + outline: none; + box-shadow: 0 0 0 2px var(--border-default-border-focus); + } + } +} |
