xtablo-source/go-backend/internal/web/ui/button.css
Arthur Belleville 8bcf81a3f1
Add co-located CSS sources and semantic token infrastructure to Go
backend

Create the foundational structure for managing design-system CSS with
co-located sources and semantic tokens:

- Add `cmd/buildstyles` to concatenate ordered CSS sources into a single
  shipped stylesheet
- Define semantic color and effect tokens in `internal/web/ui/base.css`
- Move primitive and catalog CSS sources from `static/css/` to
  co-located locations under `internal/web/ui/`
- Update test contract to verify token presence and proper stylesheet
  generation
- Regenerate `static/styles.css` with new semantic token layer and
  source annotations
2026-05-10 11:47:42 +02:00

162 lines
3.9 KiB
CSS

.ui-button {
align-items: center;
border: 0;
border-radius: 0rem;
cursor: pointer;
display: inline-flex;
font-weight: 600;
gap: 0.5rem;
justify-content: center;
line-height: 1;
min-height: 44px;
text-decoration: none;
transition:
background-color 0.2s ease,
color 0.2s ease,
box-shadow 0.2s ease,
opacity 0.2s ease;
}
.ui-button-icon,
.ui-button-icon svg {
height: 1rem;
width: 1rem;
}
.ui-button:focus-visible {
box-shadow: 0 0 0 3px var(--color-focus-ring);
outline: none;
}
.ui-button-sm {
font-size: 0.875rem;
min-height: 40px;
padding: 0.625rem 0.9rem;
}
.ui-button-md {
font-size: 0.95rem;
padding: 0.75rem 1.1rem;
}
.ui-button-lg {
font-size: 1rem;
padding: 0.82rem 1.15rem;
}
.ui-button-solid.ui-button-default {
background: var(--color-brand-primary);
color: var(--color-brand-foreground, var(--color-text-inverse));
}
.ui-button-solid.ui-button-default:hover {
background: var(--color-brand-primary-hover);
}
.ui-button-solid.ui-button-default:active {
background: var(--color-brand-primary-active);
}
.ui-button-solid.ui-button-neutral {
background: var(--color-surface-muted);
color: var(--color-text-primary);
}
.ui-button-solid.ui-button-neutral:hover {
background: var(--color-surface-muted-hover);
}
.ui-button-solid.ui-button-neutral:active {
background: var(--color-surface-muted-active);
}
.ui-button-solid.ui-button-warning {
background: var(--color-status-warning-strong);
color: var(--color-status-warning-strong-foreground);
}
.ui-button-solid.ui-button-warning:hover {
background: var(--color-status-warning-strong-hover);
}
.ui-button-solid.ui-button-warning:active {
background: var(--color-status-warning-strong-active);
}
.ui-button-solid.ui-button-success {
background: var(--color-status-success-strong);
color: var(--color-status-success-strong-foreground);
}
.ui-button-solid.ui-button-success:hover {
background: var(--color-status-success-strong-hover);
}
.ui-button-solid.ui-button-success:active {
background: var(--color-status-success-strong-active);
}
.ui-button-solid.ui-button-danger {
background: var(--color-status-danger-strong);
color: var(--color-status-danger-strong-foreground);
}
.ui-button-solid.ui-button-danger:hover {
background: var(--color-status-danger-strong-hover);
}
.ui-button-solid.ui-button-danger:active {
background: var(--color-status-danger-strong-active);
}
.ui-button-soft.ui-button-default {
background: var(--color-surface-brand-soft);
color: var(--color-brand-primary-hover);
}
.ui-button-soft.ui-button-default:hover {
background: var(--color-surface-brand-soft-hover);
}
.ui-button-soft.ui-button-default:active {
background: var(--color-surface-brand-soft-active);
}
.ui-button-soft.ui-button-warning {
background: var(--color-status-warning-soft-bg);
color: var(--color-status-warning-soft-foreground-strong);
}
.ui-button-soft.ui-button-warning:hover {
background: var(--color-status-warning-soft-bg-hover);
}
.ui-button-soft.ui-button-warning:active {
background: var(--color-status-warning-soft-bg-active);
}
.ui-button-soft.ui-button-success {
background: var(--color-status-success-soft-bg);
color: var(--color-status-success-soft-foreground-strong);
}
.ui-button-soft.ui-button-success:hover {
background: var(--color-status-success-soft-bg-hover);
}
.ui-button-soft.ui-button-success:active {
background: var(--color-status-success-soft-bg-active);
}
.ui-button-soft.ui-button-danger {
background: var(--color-status-danger-soft-bg-alt);
color: var(--color-status-danger-soft-foreground-strong);
}
.ui-button-soft.ui-button-danger:hover {
background: var(--color-status-danger-soft-bg-hover);
}
.ui-button-soft.ui-button-danger:active {
background: var(--color-status-danger-soft-bg-active);
}