release: v0.14.0
Fourteen commits since v0.13.0. See CHANGELOG.md for the full list. Two additions: `npm run doctor`, which runs the config doctor from a terminal — including inside the shipped image — and exits with the worst finding, so it can gate a deployment script; and a Playwright spec that loads all fourteen admin routes against a production build. One change, invisible on screen: the admin panel got a form-field layer (#533). Five fixes: grid.gap on both axes (#513), the dashboard status badge (#539), the journal editor's unsaved-changes guard (#538), essay paragraph markup (#537), and aria-pressed on the panel's switches and pickers.
This commit is contained in:
193
app/admin/styles/essay-builder.css
Normal file
193
app/admin/styles/essay-builder.css
Normal file
@@ -0,0 +1,193 @@
|
||||
/* The photo essay and storytelling builder. */
|
||||
/* Split out of admin.css (#533). Loaded from admin.css in a fixed order —
|
||||
later sheets override earlier ones, so the order there is the cascade. */
|
||||
|
||||
/* ── Photo Essay & Storytelling Builder ───────────────────────── */
|
||||
|
||||
.essay-block-editor {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.essay-toolbar-sticky {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
padding: 0.75rem 1rem;
|
||||
background: var(--admin-bg-raised, #1a1a1a);
|
||||
border: 1px solid var(--admin-border, #2e2e2e);
|
||||
border-radius: 10px;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.essay-toolbar-label {
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
color: var(--admin-text, #f0f0f0);
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
.essay-toolbar-divider {
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
background: var(--admin-border, #2e2e2e);
|
||||
margin: 0 0.25rem;
|
||||
}
|
||||
|
||||
.essay-block-card {
|
||||
background: var(--admin-bg-raised, #161616);
|
||||
border: 1px solid var(--admin-border, #2e2e2e);
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.75rem;
|
||||
transition:
|
||||
border-color 0.15s ease,
|
||||
box-shadow 0.15s ease;
|
||||
}
|
||||
|
||||
.essay-block-card:hover {
|
||||
border-color: var(--admin-border-hover, #444444);
|
||||
}
|
||||
|
||||
.essay-block-card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 1px solid var(--admin-border, rgba(255, 255, 255, 0.06));
|
||||
}
|
||||
|
||||
.essay-block-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
padding: 0.2rem 0.55rem;
|
||||
border-radius: 9999px;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
background: var(--admin-bg-elevated, #222);
|
||||
color: var(--admin-text-secondary, #a0a0a0);
|
||||
border: 1px solid var(--admin-border, #2e2e2e);
|
||||
}
|
||||
|
||||
/* Position prefix inside the chip, e.g. "3 · Quote". */
|
||||
.essay-block-badge-index {
|
||||
color: var(--admin-text-muted);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.essay-block-badge-index::after {
|
||||
content: ' ·';
|
||||
}
|
||||
|
||||
/* The card's own hover state is enough of a highlight; the chip stays quiet. */
|
||||
.essay-block-card:hover .essay-block-badge {
|
||||
border-color: var(--admin-border-hover);
|
||||
color: var(--admin-text);
|
||||
}
|
||||
|
||||
.essay-block-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
}
|
||||
|
||||
/* Polished dark inputs for Essay Editor */
|
||||
.essay-block-editor input[type='text'],
|
||||
.essay-block-editor textarea,
|
||||
.essay-block-editor select {
|
||||
background: var(--admin-bg-input, #111111) !important;
|
||||
border: 1px solid var(--admin-border, #2e2e2e) !important;
|
||||
border-radius: 6px !important;
|
||||
color: var(--admin-text, #f0f0f0) !important;
|
||||
font-size: 0.85rem !important;
|
||||
padding: 0.55rem 0.75rem !important;
|
||||
outline: none !important;
|
||||
transition: border-color 0.15s !important;
|
||||
}
|
||||
|
||||
.essay-block-editor input[type='text']:focus,
|
||||
.essay-block-editor textarea:focus,
|
||||
.essay-block-editor select:focus {
|
||||
border-color: var(--admin-border-focus, #888888) !important;
|
||||
}
|
||||
|
||||
.essay-photo-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.75rem;
|
||||
background: var(--admin-bg, #111111);
|
||||
padding: 0.85rem;
|
||||
border-radius: 8px;
|
||||
border: 1px solid var(--admin-border, #2e2e2e);
|
||||
}
|
||||
|
||||
.essay-photo-preview-container {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.essay-photo-thumbnail {
|
||||
width: 120px;
|
||||
height: 80px;
|
||||
border-radius: 6px;
|
||||
background: var(--admin-bg-elevated, #222);
|
||||
object-fit: cover;
|
||||
border: 1px solid var(--admin-border, #333);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.essay-photo-empty {
|
||||
width: 120px;
|
||||
height: 80px;
|
||||
border-radius: 6px;
|
||||
background: var(--admin-bg-elevated, #1a1a1a);
|
||||
border: 1px dashed var(--admin-border, #333);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--admin-text-muted, #707070);
|
||||
font-size: 0.75rem;
|
||||
gap: 4px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.essay-photo-meta {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.essay-pill-selector {
|
||||
display: inline-flex;
|
||||
background: var(--admin-bg-input, #000);
|
||||
padding: 2px;
|
||||
border-radius: 6px;
|
||||
border: 1px solid var(--admin-border, #2e2e2e);
|
||||
}
|
||||
|
||||
.essay-pill-btn {
|
||||
padding: 0.25rem 0.65rem;
|
||||
border-radius: 4px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 500;
|
||||
border: none;
|
||||
background: transparent;
|
||||
color: var(--admin-text-muted, #888);
|
||||
cursor: pointer;
|
||||
transition: all 0.15s ease;
|
||||
}
|
||||
|
||||
.essay-pill-btn.active {
|
||||
background: var(--admin-btn-primary-bg, #ffffff);
|
||||
color: var(--admin-btn-primary-text, #000000);
|
||||
}
|
||||
Reference in New Issue
Block a user