diff options
| author | Adam <[email protected]> | 2025-10-14 07:14:26 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-10-14 07:16:24 -0500 |
| commit | 37e6c8342f1f63a95918a71ac78130b9d10d1103 (patch) | |
| tree | f5baccd7d4d97a0171eb224c9f7d88ec62b14aac /packages/css/src/components/button.css | |
| parent | c04e8929911be2433063e9a53cccf8d2dfd232b8 (diff) | |
| download | opencode-37e6c8342f1f63a95918a71ac78130b9d10d1103.tar.gz opencode-37e6c8342f1f63a95918a71ac78130b9d10d1103.zip | |
wip: css and ui packages
Diffstat (limited to 'packages/css/src/components/button.css')
| -rw-r--r-- | packages/css/src/components/button.css | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/packages/css/src/components/button.css b/packages/css/src/components/button.css new file mode 100644 index 000000000..5833d05e9 --- /dev/null +++ b/packages/css/src/components/button.css @@ -0,0 +1,93 @@ +[data-component="button"] { + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + 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; + } + + &[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); + + &:hover:not(:disabled) { + border-color: var(--border-default-border-hover); + background-color: var(--surface-brand-surface-brand-hover); + } + &:active:not(:disabled) { + border-color: var(--border-default-border-active); + background-color: var(--surface-brand-surface-brand-active); + } + &:focus:not(:disabled) { + border-color: var(--border-default-border-focus); + background-color: var(--surface-brand-surface-brand-focus); + } + } + + &[data-variant="secondary"] { + border-color: var(--border-default-border); + background-color: var(--surface-default-surface); + color: var(--text-default-text); + + &:hover:not(:disabled) { + border-color: var(--border-default-border-hover); + background-color: var(--surface-default-surface-hover); + } + &:active:not(:disabled) { + border-color: var(--border-default-border-active); + background-color: var(--surface-default-surface-active); + } + &:focus:not(:disabled) { + border-color: var(--border-default-border-focus); + background-color: var(--surface-default-surface-focus); + } + } + + &[data-variant="ghost"] { + border-color: transparent; + background-color: transparent; + color: var(--text-default-text); + + &:hover:not(:disabled) { + background-color: var(--surface-default-surface-hover); + } + &:active:not(:disabled) { + border-color: var(--border-default-border-active); + background-color: var(--surface-default-surface-active); + } + &:focus:not(:disabled) { + border-color: var(--border-default-border-focus); + background-color: var(--surface-default-surface-focus); + } + } + + &[data-size="normal"] { + padding: calc(var(--spacing) * 0.5) calc(var(--spacing) * 3); + font-size: var(--text-xs); + line-height: var(--text-sm--line-height); + } + + &[data-size="large"] { + padding: calc(var(--spacing) * 1) calc(var(--spacing) * 4); + font-size: var(--text-sm); + line-height: var(--text-sm--line-height); + } +} |
