tfrere's picture
tfrere HF Staff
feat(frontend): editor refresh (embed studio, comment popover, shiki, top bar, hooks, styles)
76fc93a
/* ============================================================================ */
/* Editor layout */
/* */
/* Aligned with the research-article-template's 3-column grid, but with */
/* narrower sidebars so the chat/drawer UI fits comfortably: */
/* [ TOC 200px ] [ content 680px ] [ sidenotes 200px ] */
/* */
/* wide/fullWidth use viewport-based breakout (see article.css) so they look */
/* identical to the published output. */
/* ============================================================================ */
.editor-app {
height: 100dvh; /* dvh = dynamic viewport (iOS Safari URL bar) */
display: flex;
flex-direction: column;
/* Use the page background so the editor shell matches the article content
(no greyish frame around the white canvas in light mode). */
background: var(--page-bg);
overflow: hidden;
position: relative;
}
/* ---- Grid: 3-col symmetric, centered in viewport ---- */
.editor-app .content-grid {
display: grid; /* wins specificity over _layout.css */
grid-template-columns:
var(--layout-editor-toc-width)
minmax(0, var(--layout-content-width))
var(--layout-editor-sidenote-width);
grid-template-rows: auto 1fr;
gap: 0 var(--layout-gap);
max-width: var(--layout-editor-max-width);
margin: 0 auto;
padding: 0 var(--content-padding-x);
}
.content-grid__hero { grid-column: 1 / -1; grid-row: 1; }
.content-grid__toc { grid-column: 1; grid-row: 2; }
.content-grid__editor {
grid-column: 2;
grid-row: 2;
padding-top: 24px;
padding-bottom: 32px;
position: relative;
overflow: visible;
}
/* In the editor, .tiptap is a plain flow container; wide/fullWidth escape
the 680px column via viewport breakout (see article.css). */
.editor-app .tiptap {
max-width: 100%;
margin: 0;
padding: 0;
}
/* ============================================================================ */
/* Responsive */
/* */
/* <= 1100px : TOC collapses into a drawer, sidenotes stack inline */
/* (handled in article.css). Single-column grid. */
/* <= 768px : Compact top-bar, narrower floating panels, stacked embed studio. */
/* ============================================================================ */
/* Hamburger toggle: hidden on desktop, shown below the collapse breakpoint */
.top-bar__toc-toggle { display: none; }
/* Mobile TOC overlay: hidden by default on desktop */
.editor-app .toc-mobile-backdrop { display: none; }
.editor-app .toc-mobile-sidebar { display: none; }
@media (max-width: 1100px) {
.editor-app .content-grid {
grid-template-columns: 1fr;
grid-template-rows: auto 1fr;
max-width: none;
gap: 0;
}
.editor-app .content-grid__hero { grid-column: 1; grid-row: 1; }
.editor-app .content-grid__toc { display: none; }
.editor-app .content-grid__editor { grid-column: 1; grid-row: 2; }
.top-bar__toc-toggle {
display: inline-flex;
margin-right: auto;
}
.editor-app .toc-mobile-backdrop { display: block; }
.editor-app .toc-mobile-sidebar { display: flex; }
}
@media (max-width: 768px) {
.editor-app .content-grid__editor {
padding-top: 16px;
padding-bottom: 24px;
}
/* Top bar: compact, wrap-safe */
.editor-app .top-bar {
padding: 6px 8px;
gap: 2px;
flex-wrap: wrap;
}
.editor-app .top-bar .divider-v { display: none; }
.editor-app .top-bar .sync-indicator .sync-indicator__label { display: none; }
/* Chat floating: fill width on mobile */
.editor-app .chat-floating {
width: calc(100vw - 24px);
max-width: 360px;
left: 12px;
bottom: 12px;
height: calc(100dvh - 80px);
max-height: calc(100dvh - 80px);
}
.editor-app .chat-fab {
bottom: 12px;
left: 12px;
}
/* Settings drawer: full-width on mobile */
.editor-app .drawer-panel { width: 100vw; }
/* Embed Studio: stack body vertically */
.editor-app .es-body { flex-direction: column; }
.editor-app .es-chat {
width: 100%;
min-width: 0;
max-width: none;
max-height: 45vh;
border-right: none;
border-bottom: 1px solid var(--border-color);
}
/* Citation panel: narrower on mobile */
.editor-app .citation-panel {
width: calc(100vw - 32px);
max-width: 480px;
}
}