xtablo-source/go-backend/internal/web/ui/catalog/catalog.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

163 lines
2.8 KiB
CSS

.catalog-page {
margin: 0 auto;
max-width: 72rem;
padding: 3rem 1.5rem 4rem;
}
.catalog-nav {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: 0.75rem 1rem;
margin-bottom: 1.5rem;
}
.catalog-home-link,
.catalog-nav-link {
border-radius: 999px;
color: var(--color-text-muted);
display: inline-flex;
font-size: 0.9rem;
font-weight: 600;
padding: 0.55rem 0.9rem;
transition:
background-color 0.2s ease,
color 0.2s ease;
}
.catalog-home-link:hover,
.catalog-nav-link:hover {
background: var(--color-surface-muted);
color: var(--color-text-primary);
}
.catalog-nav-links {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.catalog-nav-link.is-active {
background: var(--color-surface-brand-soft);
color: var(--color-brand-primary-hover);
}
.catalog-page-header {
margin-bottom: 2rem;
}
.catalog-page-header h1 {
color: var(--color-text-primary);
font-size: 2.25rem;
line-height: 1.1;
margin: 0 0 0.75rem;
}
.catalog-page-header p {
color: var(--color-text-muted);
margin: 0;
max-width: 42rem;
}
.catalog-eyebrow {
color: var(--color-text-brand-strong) !important;
font-size: 0.8rem;
font-weight: 700;
letter-spacing: 0.08em;
margin-bottom: 0.75rem !important;
text-transform: uppercase;
}
.catalog-example-list,
.catalog-page-list {
display: grid;
gap: 1.25rem;
}
.catalog-example,
.catalog-page-link-card {
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 1rem;
box-shadow: var(--shadow-surface-sm);
padding: 1.5rem;
}
.catalog-page-link-card {
display: block;
}
.catalog-example-copy h2,
.catalog-page-link-card h2 {
color: var(--color-text-primary);
font-size: 1.125rem;
margin: 0 0 0.5rem;
}
.catalog-example-copy p,
.catalog-page-link-card p {
color: var(--color-text-muted);
margin: 0;
}
.catalog-example-preview {
align-items: flex-start;
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
margin-top: 1rem;
}
.catalog-inline {
display: inline-flex;
}
.catalog-spacing-row {
align-items: center;
display: flex;
gap: 0;
}
.catalog-spacing-column {
display: flex;
flex-direction: column;
gap: 0;
width: 100%;
}
.catalog-example-snippet {
background: var(--color-surface-muted-inverse);
border-radius: 0.875rem;
color: var(--color-surface-neutral-hover);
margin: 1rem 0 0;
overflow-x: auto;
padding: 1rem;
}
.catalog-example-snippet code {
font-family:
ui-monospace,
SFMono-Regular,
"SF Mono",
Menlo,
Monaco,
Consolas,
"Liberation Mono",
monospace;
font-size: 0.875rem;
}
.catalog-page-link {
color: var(--color-text-brand-strong) !important;
font-family:
ui-monospace,
SFMono-Regular,
"SF Mono",
Menlo,
Monaco,
Consolas,
"Liberation Mono",
monospace;
font-size: 0.875rem;
margin-top: 1rem !important;
}