mirror of
https://github.com/langflow-ai/langflow.git
synced 2026-07-23 17:58:35 +08:00
* docs: improve sidebar and TOC readability + scroll progress - Fix left nav sidebar hugging the left edge (remove margin-left) - Increase sidebar font sizes and lift muted colors for legibility - TOC right-side: white inactive items, pink active, gray for passed sections - Add clientModule (tocProgress.js) to track scroll progress in TOC - Add Redocusaurus API page styles to match site theme Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: fix sidebar/TOC height stability and active item reflow - Force sidebarViewport to 100vh to prevent shrinking during scroll - Replace font-weight on active TOC item with text-shadow to avoid reflow * docs: left-anchor sidebar and increase fonts on large screens * docs: constrain prev/next nav to match content max-width * docs: fix sidebar jump on scroll by moving padding-top inside menu * docs: fix sidebar-ad spacing with transparent padding on li * docs: fix sidebarViewport height and MutationObserver leak * docs: constrain doc content to 75vw and remove dead CSS comments - Cap docMainContainer at 75vw - Set pagination-nav to 100% width to match content column - Remove commented-out .markdown and .ch-scrollycoding blocks * docs: set docMainContainer max-width to 75% for better reading width * docs: center main-wrapper on large screens and center docItemWrapper * fix: revert lodash override to stable 4.17.21 lodash 4.18.0 is a broken release — template.js uses assignWith and arrayEach without importing them, crashing npm start. Pin to 4.17.21 across all nested overrides. * fix: prevent horizontal scroll on mobile docs pages docsWrapper has flex:1 0 auto (flex-shrink:0), so it never shrinks below the natural content width (~570px on iPhone). Cap it to 100vw and add min-width:0 down the flex chain (docRoot, docMainContainer) so the layout stays within viewport on narrow screens. Also remove the overflow:visible override from ch-code-wrapper, which was defeating the code block's own horizontal containment. * feat: responsive navbar search and hide social icons on mobile Shrink search bar as viewport narrows (160px at 1100px, 100px at 996px), collapse to icon-only at 960px. Hide GitHub, X, and Discord icons below 996px where the hamburger menu takes over navigation. * fix: images always respect container width above 996px Use min(100%, 600px) so images are capped at 600px but never overflow their container when the content area is narrower (e.g. sidebar open). * fix: improve TOC progress scroll tracking and bottom-of-page detection Adds scroll handler with RAF throttle, pauses/resumes MutationObserver to avoid loops, and forces last TOC link active when scrolled to page bottom. * fix: translate Portuguese comments to English in custom.css * fix: sidebar viewport fills full screen height * feat: sidebar section icon turns pink with ease transition when active * fix: reduce TOC font size to 0.8rem * fix: remove docMainContainer right padding and add 48px gap to content col * fix: card header responsive alignment and title margin reset * fix: darken card background and active sidebar item bg on light theme * fix: revert TOC colors and add inline code border radius tweak * fix: minimal scrollbar for sidebar and TOC — thumb only on hover * fix: scrollbar fade-in/out transition at 0.25s ease * feat: add rehype plugin for table column wrapping and centering Inserts zero-width space after underscores in inline code cells so long env-var names wrap at underscore boundaries. Also centers Format/Default columns via a col-center class applied at build time. * fix: use --ifm-heading-color for sidebar group labels in both themes * refactor: split docs custom.css into themed partials Breaks the 1,658-line monolithic custom.css into 8 focused files (tokens, layout, navbar, sidebar, typography, components, code, redocusaurus). custom.css is now a thin entry point with @imports. * fix: align sidebar and navbar with shared --docs-gutter token Introduces --docs-gutter: 1rem in tokens.css and applies it to both navbar__inner horizontal padding and sidebar nav.menu padding-left, keeping the Langflow logo and sidebar items visually aligned. * fix: match sidebar ad background to page background color Dark mode uses #111 (same as sidebar bg); light mode uses --ifm-background-color. --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
370 lines
7.2 KiB
CSS
370 lines
7.2 KiB
CSS
/* Tabs Styling */
|
|
.tabs-container {
|
|
border: 1px solid var(--ifm-color-emphasis-300);
|
|
border-radius: var(--ifm-global-radius);
|
|
padding: 1rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.tabs {
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.tabs__item {
|
|
border: none;
|
|
border-bottom: 1px solid var(--ifm-color-emphasis-200);
|
|
margin-right: 0rem;
|
|
padding-bottom: 0.5rem;
|
|
border-radius: 0;
|
|
}
|
|
|
|
.tabs__item:hover {
|
|
background-color: var(--ifm-hover-overlay);
|
|
}
|
|
|
|
.tabs__item--active {
|
|
border-bottom-color: var(--ifm-tabs-color-active);
|
|
}
|
|
|
|
/* Dark Mode - Cards & surfaces */
|
|
[data-theme="dark"] .markdown details {
|
|
background: var(--ifm-card-background-color, #232328);
|
|
border-color: var(--ifm-card-border-color, #303038);
|
|
}
|
|
|
|
[data-theme="dark"] .tabs-container {
|
|
border-color: var(--ifm-card-border-color, #303038);
|
|
background: var(--ifm-card-background-color, #232328);
|
|
}
|
|
|
|
/* Admonitions - subtle, muted style */
|
|
.admonition {
|
|
border-radius: 8px;
|
|
border: 1px solid var(--ifm-color-emphasis-200);
|
|
border-left-width: 3px;
|
|
font-size: 0.9375rem;
|
|
}
|
|
|
|
[data-theme="dark"] .admonition {
|
|
background: rgba(255, 255, 255, 0.02);
|
|
border-color: #303038;
|
|
border-left-color: var(--ifm-color-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .admonition .admonition-heading h5 {
|
|
color: #a0a0a8;
|
|
font-size: 0.8125rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
/* ========================================
|
|
Steps Component
|
|
======================================== */
|
|
|
|
.steps-container {
|
|
counter-reset: step-counter;
|
|
padding-left: 0;
|
|
}
|
|
|
|
.step-item {
|
|
counter-increment: step-counter;
|
|
position: relative;
|
|
padding-left: 3rem;
|
|
padding-bottom: 2rem;
|
|
border-left: 2px solid var(--ifm-color-emphasis-200);
|
|
margin-left: 0.875rem;
|
|
}
|
|
|
|
.step-item:last-child {
|
|
border-left-color: transparent;
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.step-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0;
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
|
|
.step-number {
|
|
position: absolute;
|
|
left: -0.875rem;
|
|
width: 1.75rem;
|
|
height: 1.75rem;
|
|
border-radius: 50%;
|
|
background: var(--ifm-color-primary);
|
|
color: #fff;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 0.8125rem;
|
|
font-weight: 600;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.step-number::before {
|
|
content: counter(step-counter);
|
|
}
|
|
|
|
.step-title {
|
|
font-size: 1.25rem;
|
|
font-weight: 600;
|
|
margin: 0;
|
|
line-height: 1.75rem;
|
|
}
|
|
|
|
.step-content {
|
|
color: var(--ifm-color-emphasis-800);
|
|
}
|
|
|
|
[data-theme="dark"] .step-item {
|
|
border-left-color: var(--ifm-card-border-color, #303038);
|
|
}
|
|
|
|
[data-theme="dark"] .step-item:last-child {
|
|
border-left-color: transparent;
|
|
}
|
|
|
|
/* ========================================
|
|
Cards Component
|
|
======================================== */
|
|
|
|
.lf-cards {
|
|
display: grid;
|
|
gap: 1rem;
|
|
margin: 1.5rem 0;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.lf-cards {
|
|
grid-template-columns: 1fr !important;
|
|
}
|
|
}
|
|
|
|
.lf-card-link {
|
|
text-decoration: none !important;
|
|
color: inherit !important;
|
|
display: flex;
|
|
}
|
|
|
|
.lf-card {
|
|
position: relative;
|
|
padding: 1.25rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
border: 1px solid var(--ifm-color-emphasis-200);
|
|
border-radius: var(--ifm-global-radius);
|
|
background: var(--ifm-background-surface-color);
|
|
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
}
|
|
|
|
.lf-card:hover {
|
|
border-color: var(--ifm-color-primary);
|
|
box-shadow: 0 0 0 1px var(--ifm-color-primary);
|
|
}
|
|
|
|
.lf-card-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.lf-card-icon {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 2rem;
|
|
height: 2rem;
|
|
color: var(--ifm-color-primary);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.lf-card-title {
|
|
font-size: 1.0625rem;
|
|
font-weight: 600;
|
|
margin: 0 !important;
|
|
line-height: 1.4;
|
|
min-width: 0;
|
|
flex: 1;
|
|
}
|
|
|
|
.lf-card-body {
|
|
font-size: 0.9375rem;
|
|
color: var(--ifm-color-emphasis-700);
|
|
line-height: 1.6;
|
|
flex: 1;
|
|
}
|
|
|
|
.lf-card-body ul {
|
|
margin: 0.5rem 0 0;
|
|
padding-left: 1.25rem;
|
|
}
|
|
|
|
.lf-card-body li {
|
|
margin-bottom: 0.25rem;
|
|
}
|
|
|
|
.lf-card-arrow {
|
|
position: absolute;
|
|
top: 1.25rem;
|
|
right: 1.25rem;
|
|
color: var(--ifm-color-emphasis-400);
|
|
transition: color 0.15s ease, transform 0.15s ease;
|
|
}
|
|
|
|
.lf-card:hover .lf-card-arrow {
|
|
color: var(--ifm-color-primary);
|
|
transform: translateX(2px);
|
|
}
|
|
|
|
[data-theme="dark"] .lf-card {
|
|
background: var(--ifm-card-background-color, #232328);
|
|
border-color: var(--ifm-card-border-color, #303038);
|
|
}
|
|
|
|
/* ========================================
|
|
Frame Component
|
|
======================================== */
|
|
|
|
.lf-frame {
|
|
margin: 1.5rem 0;
|
|
}
|
|
|
|
.lf-frame-content {
|
|
border: 1px solid var(--ifm-color-emphasis-200);
|
|
border-radius: var(--ifm-global-radius);
|
|
overflow: hidden;
|
|
background: var(--ifm-color-emphasis-100);
|
|
}
|
|
|
|
.lf-frame-content img {
|
|
display: block;
|
|
width: 100%;
|
|
height: auto;
|
|
max-height: none;
|
|
max-width: none;
|
|
margin: 0;
|
|
}
|
|
|
|
/* Light/dark image variants */
|
|
[data-theme="light"] .lf-frame-img--dark {
|
|
display: none;
|
|
}
|
|
|
|
[data-theme="dark"] .lf-frame-img--light {
|
|
display: none;
|
|
}
|
|
|
|
.lf-frame-caption {
|
|
text-align: center;
|
|
font-size: 0.8125rem;
|
|
color: var(--ifm-color-emphasis-600);
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
[data-theme="dark"] .lf-frame-content {
|
|
border-color: var(--ifm-card-border-color, #303038);
|
|
background: #111;
|
|
}
|
|
|
|
/* ========================================
|
|
Video Component
|
|
======================================== */
|
|
|
|
.lf-video {
|
|
margin: 1.5rem 0;
|
|
}
|
|
|
|
.lf-video-wrapper {
|
|
position: relative;
|
|
padding-top: 56.25%; /* 16:9 */
|
|
border-radius: var(--ifm-global-radius);
|
|
overflow: hidden;
|
|
border: 1px solid var(--ifm-color-emphasis-200);
|
|
}
|
|
|
|
[data-theme="dark"] .lf-video-wrapper {
|
|
border-color: var(--ifm-card-border-color, #303038);
|
|
}
|
|
|
|
/* ========================================
|
|
Callout Component
|
|
======================================== */
|
|
|
|
.lf-callout {
|
|
padding: 1rem 1.25rem;
|
|
border-radius: var(--ifm-global-radius);
|
|
margin: 1.5rem 0;
|
|
border: 1px solid var(--ifm-color-emphasis-200);
|
|
}
|
|
|
|
.lf-callout-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
margin-bottom: 0.375rem;
|
|
}
|
|
|
|
.lf-callout-emoji {
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.lf-callout-title {
|
|
font-weight: 600;
|
|
font-size: 0.9375rem;
|
|
}
|
|
|
|
.lf-callout-body {
|
|
font-size: 0.9375rem;
|
|
color: var(--ifm-color-emphasis-800);
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.lf-callout--info {
|
|
background: rgba(59, 130, 246, 0.05);
|
|
border-color: rgba(59, 130, 246, 0.2);
|
|
}
|
|
|
|
.lf-callout--warning {
|
|
background: rgba(245, 158, 11, 0.05);
|
|
border-color: rgba(245, 158, 11, 0.2);
|
|
}
|
|
|
|
.lf-callout--tip {
|
|
background: rgba(34, 197, 94, 0.05);
|
|
border-color: rgba(34, 197, 94, 0.2);
|
|
}
|
|
|
|
.lf-callout--note {
|
|
background: rgba(168, 85, 247, 0.05);
|
|
border-color: rgba(168, 85, 247, 0.2);
|
|
}
|
|
|
|
[data-theme="dark"] .lf-callout {
|
|
border-color: var(--ifm-card-border-color, #303038);
|
|
}
|
|
|
|
[data-theme="dark"] .lf-callout--info {
|
|
background: rgba(59, 130, 246, 0.08);
|
|
border-color: rgba(59, 130, 246, 0.2);
|
|
}
|
|
|
|
[data-theme="dark"] .lf-callout--warning {
|
|
background: rgba(245, 158, 11, 0.08);
|
|
border-color: rgba(245, 158, 11, 0.2);
|
|
}
|
|
|
|
[data-theme="dark"] .lf-callout--tip {
|
|
background: rgba(34, 197, 94, 0.08);
|
|
border-color: rgba(34, 197, 94, 0.2);
|
|
}
|
|
|
|
[data-theme="dark"] .lf-callout--note {
|
|
background: rgba(168, 85, 247, 0.08);
|
|
border-color: rgba(168, 85, 247, 0.2);
|
|
}
|