at main 190 lines 4.6 kB view raw
1/* Sidebar layouts - 3-column grid with sticky sidebar */ 2 3/* Base sidebar layout pattern 4 Uses CSS custom properties for sizing flexibility: 5 --layout-gutter: sidebar/gutter width (default: 240px) 6 --layout-content: main content max-width (default: 95ch) 7 --layout-gap: grid gap (default: 1.5rem) 8 --layout-padding: container padding (default: 2rem 1.25rem 2rem 0) 9*/ 10 11.sidebar-layout { 12 display: grid; 13 grid-template-columns: 14 minmax(var(--layout-gutter, 300px), 1fr) 15 minmax(0, var(--layout-content, 95ch)) 16 minmax(var(--layout-gutter, 300px), 1fr); 17 gap: var(--layout-gap, 1.5rem); 18 max-width: calc(var(--layout-content, 95ch) + var(--layout-gutter, 300px) * 2 + 4rem); 19 margin: 0 auto; 20 padding: var(--layout-padding, 2rem 1.25rem 2rem 0); 21} 22 23.sidebar-layout-sidebar { 24 grid-column: 1; 25 position: sticky; 26 top: 2rem; 27 align-self: flex-start; 28 max-height: calc(100vh - 4rem); 29 overflow-y: auto; 30} 31 32.sidebar-layout-main { 33 grid-column: 2; 34 padding: 0 1rem; 35} 36 37.sidebar-layout-actions { 38 grid-column: 3; 39 position: sticky; 40 top: 2rem; 41 align-self: flex-start; 42} 43 44/* Mobile: sidebar collapses to header above main content */ 45@media (max-width: 1400px) { 46 .sidebar-layout { 47 grid-template-columns: minmax(1rem, 1fr) minmax(0, var(--layout-content, 95ch)) minmax(1rem, 1fr) !important; 48 gap: 0 !important; 49 max-width: 100vw !important; 50 box-sizing: border-box !important; 51 } 52 53 .sidebar-layout-sidebar { 54 grid-column: 2; 55 position: static; 56 max-height: none; 57 min-width: 0; 58 margin-bottom: 2rem; 59 } 60 61 .sidebar-layout-main { 62 grid-column: 2; 63 padding: 0; 64 min-width: 0; 65 } 66 67 .sidebar-layout-actions { 68 display: none; 69 } 70} 71 72/* Variant: notebook layout (wider gutters and content) */ 73.sidebar-layout-notebook { 74 --layout-gutter: 320px; 75 --layout-content: 95ch; 76 --layout-gap: 2rem; 77 --layout-padding: 2.5rem 1.25rem 2.5rem 0; 78} 79 80/* Variant: repository/profile layout (standard sizing) */ 81.sidebar-layout-repository { 82 --layout-gutter: 240px; 83 --layout-content: 95ch; 84 --layout-gap: 1rem; 85 --layout-padding: 2.25rem 1.25rem 2.25rem 0; 86} 87 88/* ========================================================================== 89 BACKWARD-COMPATIBLE CLASS ALIASES 90 These map existing component class names to the unified layout system. 91 ========================================================================== */ 92 93/* Notebook layout (used in notebook.rs) */ 94.notebook-layout { 95 display: grid; 96 grid-template-columns: 97 minmax(330px, 1fr) 98 minmax(0, 95ch) 99 minmax(240px, 1fr); 100 gap: 1rem; 101 max-width: calc(95ch + 480px + 4rem); 102 margin: 0 auto; 103 padding: 2.5rem 1.25rem 2.5rem 0; 104} 105 106.notebook-sidebar { 107 grid-column: 1; 108 position: sticky; 109 top: 2rem; 110 align-self: flex-start; 111 max-height: calc(100vh - 4rem); 112 overflow-y: auto; 113} 114 115.notebook-main { 116 grid-column: 2; 117 padding: 0 1rem; 118} 119 120@media (max-width: 1400px) { 121 .notebook-layout { 122 grid-template-columns: minmax(1rem, 1fr) minmax(0, 95ch) minmax(1rem, 1fr) !important; 123 gap: 0 !important; 124 max-width: 100vw !important; 125 box-sizing: border-box !important; 126 } 127 128 .notebook-sidebar { 129 grid-column: 2; 130 position: static; 131 max-height: none; 132 min-width: 0; 133 margin-bottom: 2rem; 134 } 135 136 .notebook-main { 137 grid-column: 2; 138 padding: 0; 139 min-width: 0; 140 } 141} 142 143/* Repository layout (used in identity.rs) */ 144.repository-layout { 145 display: grid; 146 grid-template-columns: 147 minmax(240px, 1fr) 148 minmax(0, 95ch) 149 minmax(240px, 1fr); 150 gap: 1rem; 151 max-width: calc(95ch + 480px + 4rem); 152 margin: 0 auto; 153 padding: 2.25rem 1.25rem 2.25rem 0; 154} 155 156.repository-sidebar { 157 grid-column: 1; 158 position: sticky; 159 top: 2rem; 160 align-self: flex-start; 161 overflow-y: auto; 162} 163 164.repository-main { 165 grid-column: 2; 166 padding: 0 1rem; 167} 168 169@media (max-width: 1400px) { 170 .repository-layout { 171 grid-template-columns: minmax(1rem, 1fr) minmax(0, 95ch) minmax(1rem, 1fr) !important; 172 gap: 0 !important; 173 max-width: 100vw !important; 174 box-sizing: border-box !important; 175 } 176 177 .repository-sidebar { 178 grid-column: 2; 179 position: static; 180 max-height: none; 181 min-width: 0; 182 margin-bottom: 2rem; 183 } 184 185 .repository-main { 186 grid-column: 2; 187 padding: 0; 188 min-width: 0; 189 } 190}