diff options
| author | Adam <[email protected]> | 2025-10-16 14:53:44 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-10-16 14:53:44 -0500 |
| commit | 47d9e017657c4d265dea53bd86d727097a7ba282 (patch) | |
| tree | e278fb3983f13f6fa474228cf5031c3b4680f566 /packages/css/src/components | |
| parent | fc18fc8a08e703a54553e714344e638673b2d313 (diff) | |
| download | opencode-47d9e017657c4d265dea53bd86d727097a7ba282.tar.gz opencode-47d9e017657c4d265dea53bd86d727097a7ba282.zip | |
wip: css/ui and desktop work
Diffstat (limited to 'packages/css/src/components')
| -rw-r--r-- | packages/css/src/components/button.css | 71 | ||||
| -rw-r--r-- | packages/css/src/components/select.css | 102 | ||||
| -rw-r--r-- | packages/css/src/components/tabs.css | 53 | ||||
| -rw-r--r-- | packages/css/src/components/tooltip.css | 53 |
4 files changed, 166 insertions, 113 deletions
diff --git a/packages/css/src/components/button.css b/packages/css/src/components/button.css index 5833d05e9..c50d76412 100644 --- a/packages/css/src/components/button.css +++ b/packages/css/src/components/button.css @@ -6,76 +6,66 @@ border-style: solid; border-width: 1px; border-radius: var(--radius-md); - font-family: var(--font-sans); font-size: var(--text-base); line-height: var(--text-base--line-height); font-weight: var(--font-weight-normal); text-decoration: none; user-select: none; - gap: calc(var(--spacing) * 2); - - &:disabled { - opacity: 0.5; - cursor: not-allowed; - } - - &:focus { - outline: none; - } + gap: calc(var(--spacing) * 0.5); &[data-variant="primary"] { - border-color: var(--border-default-border); - background-color: var(--surface-brand-surface-brand); - color: var(--text-on-brand-text-strong-on-brand); + border-color: var(--border-base); + background-color: var(--surface-brand-base); + color: var(--text-on-brand-strong); &:hover:not(:disabled) { - border-color: var(--border-default-border-hover); - background-color: var(--surface-brand-surface-brand-hover); + border-color: var(--border-hover); + background-color: var(--surface-brand-hover); } &:active:not(:disabled) { - border-color: var(--border-default-border-active); - background-color: var(--surface-brand-surface-brand-active); + border-color: var(--border-active); + background-color: var(--surface-brand-active); } &:focus:not(:disabled) { - border-color: var(--border-default-border-focus); - background-color: var(--surface-brand-surface-brand-focus); + border-color: var(--border-focus); + background-color: var(--surface-brand-focus); } } &[data-variant="secondary"] { - border-color: var(--border-default-border); - background-color: var(--surface-default-surface); - color: var(--text-default-text); + border-color: var(--border-base); + background-color: var(--surface-base); + color: var(--text-strong); &:hover:not(:disabled) { - border-color: var(--border-default-border-hover); - background-color: var(--surface-default-surface-hover); + border-color: var(--border-hover); + background-color: var(--surface-hover); } &:active:not(:disabled) { - border-color: var(--border-default-border-active); - background-color: var(--surface-default-surface-active); + border-color: var(--border-active); + background-color: var(--surface-active); } &:focus:not(:disabled) { - border-color: var(--border-default-border-focus); - background-color: var(--surface-default-surface-focus); + border-color: var(--border-focus); + background-color: var(--surface-focus); } } &[data-variant="ghost"] { border-color: transparent; background-color: transparent; - color: var(--text-default-text); + color: var(--text-strong); &:hover:not(:disabled) { - background-color: var(--surface-default-surface-hover); + background-color: var(--surface-hover); } &:active:not(:disabled) { - border-color: var(--border-default-border-active); - background-color: var(--surface-default-surface-active); + border-color: var(--border-active); + background-color: var(--surface-active); } &:focus:not(:disabled) { - border-color: var(--border-default-border-focus); - background-color: var(--surface-default-surface-focus); + border-color: var(--border-focus); + background-color: var(--surface-focus); } } @@ -90,4 +80,15 @@ font-size: var(--text-sm); line-height: var(--text-sm--line-height); } + + &:disabled { + border-color: var(--border-disabled); + background-color: var(--surface-disabled); + color: var(--text-weak); + cursor: not-allowed; + } + + &:focus { + outline: none; + } } diff --git a/packages/css/src/components/select.css b/packages/css/src/components/select.css index 2403bfb26..da3334853 100644 --- a/packages/css/src/components/select.css +++ b/packages/css/src/components/select.css @@ -1,12 +1,49 @@ [data-component="select"] { - &:disabled { - opacity: 0.5; - cursor: not-allowed; + [data-slot="trigger"] { + [data-slot="value"] { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + [data-slot="icon"] { + width: fit-content; + height: fit-content; + flex-shrink: 0; + color: var(--text-weak); + transition: transform 0.1s ease-in-out; + } } +} - &:focus { - outline: none; - box-shadow: 0 0 0 2px var(--color-primary); +[data-component="select-content"] { + min-width: 8rem; + overflow: hidden; + border-radius: var(--radius-md); + border-width: 1px; + border-style: solid; + border-color: var(--border-weak-base); + background-color: var(--surface-raised-base); + padding: calc(var(--spacing) * 1); + box-shadow: var(--shadow-md); + z-index: 50; + + &[data-closed] { + animation: select-close 0.15s ease-out; + } + + &[data-expanded] { + animation: select-open 0.15s ease-out; + } + + [data-slot="list"] { + overflow-y: auto; + max-height: 12rem; + white-space: nowrap; + overflow-x: hidden; + + &:focus { + outline: none; + } } [data-slot="section"] { @@ -14,7 +51,7 @@ line-height: var(--text-xs--line-height); font-weight: var(--font-weight-light); text-transform: uppercase; - color: var(--text-default-text-weak); + color: var(--text-weak); opacity: 0.6; margin-top: calc(var(--spacing) * 3); margin-left: calc(var(--spacing) * 2); @@ -31,7 +68,7 @@ border-radius: var(--radius-sm); font-size: var(--text-xs); line-height: var(--text-xs--line-height); - color: var(--text-default-text); + color: var(--text-base); cursor: pointer; transition: background-color 0.2s ease-in-out, @@ -40,60 +77,25 @@ user-select: none; &[data-highlighted] { - background-color: var(--surface-default-surface); + background-color: var(--surface-base); } &[data-disabled] { + background-color: var(--surface-disabled); pointer-events: none; - opacity: 0.5; } [data-slot="item-indicator"] { margin-left: auto; } - } - [data-slot="trigger"] { - [data-slot="value"] { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + &:focus { + outline: none; } - [data-slot="icon"] { - width: fit-content; - height: fit-content; - flex-shrink: 0; - color: var(--text-default-text-weak); - transition: transform 0.1s ease-in-out; - } - } -} - -[data-component="select-content"] { - min-width: 8rem; - overflow: hidden; - border-radius: var(--radius-md); - border-width: 1px; - border-style: solid; - border-color: var(--border-default-border-weak); - background-color: var(--surface-raised-surface-raised); - padding: calc(var(--spacing) * 1); - box-shadow: var(--shadow-md); - z-index: 50; - &[data-closed] { - animation: select-close 0.15s ease-out; - } - - &[data-expanded] { - animation: select-open 0.15s ease-out; - } - - [data-slot="list"] { - overflow-y: auto; - max-height: 12rem; - white-space: nowrap; - overflow-x: hidden; + &:hover { + background-color: var(--surface-hover); + } } } diff --git a/packages/css/src/components/tabs.css b/packages/css/src/components/tabs.css index 3a70b4867..3790859d1 100644 --- a/packages/css/src/components/tabs.css +++ b/packages/css/src/components/tabs.css @@ -1,98 +1,95 @@ [data-component="tabs"] { + width: 100%; + height: 100%; display: flex; flex-direction: column; - height: 100%; + border-width: 1px; + border-style: solid; + border-radius: var(--radius-sm); + border-color: var(--border-weak-base); + background-color: var(--background-weaker); + overflow: clip; & [data-slot="list"] { + width: 100%; 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); + height: 100%; + border-bottom: 1px solid var(--border-weak-base); + background-color: var(--background-weak); + border-top-right-radius: var(--radius-sm); } &:empty::after { - border-left: none; + display: none; } } & [data-slot="trigger"] { position: relative; - padding: 0 calc(var(--spacing) * 3); - height: calc(var(--spacing) * 8); + height: 36px; + padding: 8px 12px; display: flex; align-items: center; font-size: var(--text-sm); font-weight: var(--font-weight-medium); - color: var(--text-default-text-weak); + color: var(--text-weak); cursor: pointer; white-space: nowrap; flex-shrink: 0; - border-bottom: 1px solid var(--border-default-border-weak); - background-color: transparent; + border-bottom: 1px solid var(--border-weak-base); + border-right: 1px solid var(--border-weak-base); + background-color: var(--background-weak); transition: background-color 0.15s ease, color 0.15s ease; &:disabled { pointer-events: none; - opacity: 0.5; + color: var(--text-weaker); } - &:focus-visible { outline: none; - box-shadow: 0 0 0 2px var(--border-default-border-focus); + box-shadow: 0 0 0 2px var(--border-focus); } - &[data-selected] { - color: var(--text-default-text); - background-color: var(--surface-panel-surface); + color: var(--text-base); + background-color: transparent; border-bottom-color: transparent; } - &:hover:not(:disabled):not([data-selected]) { - color: var(--text-default-text); + color: var(--text-strong); } } & [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); } } } diff --git a/packages/css/src/components/tooltip.css b/packages/css/src/components/tooltip.css new file mode 100644 index 000000000..a17ed4026 --- /dev/null +++ b/packages/css/src/components/tooltip.css @@ -0,0 +1,53 @@ +/* [data-component="tooltip-trigger"] { */ +/* display: flex; */ +/* align-items: center; */ +/* } */ + +[data-component="tooltip"] { + z-index: 1000; + max-width: 320px; + border-radius: var(--radius-md); + background-color: var(--surface-base); + padding: calc(var(--spacing) * 0.5) calc(var(--spacing) * 1); + font-size: var(--text-xs); + font-weight: var(--font-weight-medium); + color: var(--text-base); + box-shadow: var(--shadow-md); + pointer-events: none !important; + transition: all 150ms ease-out; + transform: translate3d(0, 0, 0); + transform-origin: var(--kb-tooltip-content-transform-origin); + + &[data-expanded] { + opacity: 1; + transform: translate3d(0, 0, 0); + } + + &[data-closed] { + opacity: 0; + } + + &[data-placement="top"] { + &[data-closed] { + transform: translate3d(0, 4px, 0); + } + } + + &[data-placement="bottom"] { + &[data-closed] { + transform: translate3d(0, -4px, 0); + } + } + + &[data-placement="left"] { + &[data-closed] { + transform: translate3d(4px, 0, 0); + } + } + + &[data-placement="right"] { + &[data-closed] { + transform: translate3d(-4px, 0, 0); + } + } +} |
