summaryrefslogtreecommitdiffhomepage
path: root/packages/css/src/components/button.css
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-10-14 07:14:26 -0500
committerAdam <[email protected]>2025-10-14 07:16:24 -0500
commit37e6c8342f1f63a95918a71ac78130b9d10d1103 (patch)
treef5baccd7d4d97a0171eb224c9f7d88ec62b14aac /packages/css/src/components/button.css
parentc04e8929911be2433063e9a53cccf8d2dfd232b8 (diff)
downloadopencode-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.css93
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);
+ }
+}