atproto utils for zig zat.dev
atproto sdk zig
26
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 408 lines 7.0 kB view raw
1:root { 2 color-scheme: dark; 3 --bg: #0b0b0f; 4 --panel: #12121e; 5 --text: #e4e4eb; 6 --muted: #8b8b9e; 7 --border: rgba(255, 255, 255, 0.07); 8 --link: #7db4f5; 9 --codebg: rgba(255, 255, 255, 0.05); 10 --shadow: rgba(0, 0, 0, 0.4); 11 --accent: rgba(125, 180, 245, 0.08); 12 --radius: 10px; 13 --gutter: 16px; 14 --mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 15 "Liberation Mono", "Courier New", monospace; 16 --sans: "Geist", -apple-system, system-ui, "Segoe UI", Roboto, Helvetica, Arial, 17 sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; 18} 19 20@media (prefers-color-scheme: light) { 21 :root:not([data-theme="dark"]) { 22 color-scheme: light; 23 --bg: #f8f8fa; 24 --panel: #ffffff; 25 --text: #1a1a2e; 26 --muted: #64648a; 27 --border: rgba(0, 0, 0, 0.08); 28 --link: #2563eb; 29 --codebg: rgba(0, 0, 0, 0.04); 30 --shadow: rgba(0, 0, 0, 0.06); 31 --accent: rgba(37, 99, 235, 0.06); 32 } 33} 34 35:root[data-theme="light"] { 36 color-scheme: light; 37 --bg: #f8f8fa; 38 --panel: #ffffff; 39 --text: #1a1a2e; 40 --muted: #64648a; 41 --border: rgba(0, 0, 0, 0.08); 42 --link: #2563eb; 43 --codebg: rgba(0, 0, 0, 0.04); 44 --shadow: rgba(0, 0, 0, 0.06); 45 --accent: rgba(37, 99, 235, 0.06); 46} 47 48* { 49 box-sizing: border-box; 50} 51 52html, 53body { 54 height: 100%; 55} 56 57body { 58 margin: 0; 59 font-family: var(--sans); 60 font-weight: 400; 61 background: var(--bg); 62 color: var(--text); 63 -webkit-font-smoothing: antialiased; 64 -moz-osx-font-smoothing: grayscale; 65} 66 67a { 68 color: var(--link); 69 text-decoration: none; 70} 71a:hover { 72 text-decoration: underline; 73} 74 75/* App shell */ 76.app { 77 min-height: 100%; 78 display: flex; 79 flex-direction: column; 80} 81 82/* Header */ 83.header { 84 position: sticky; 85 top: 0; 86 z-index: 20; 87 display: flex; 88 align-items: center; 89 gap: 8px; 90 padding: 0 var(--gutter); 91 height: 48px; 92 border-bottom: 1px solid var(--border); 93 background: color-mix(in srgb, var(--bg) 85%, transparent); 94 backdrop-filter: blur(12px); 95 -webkit-backdrop-filter: blur(12px); 96 max-width: 100%; 97} 98 99.brand { 100 font-family: var(--mono); 101 font-weight: 700; 102 font-size: 14px; 103 color: var(--text); 104 letter-spacing: -0.02em; 105 white-space: nowrap; 106 flex-shrink: 0; 107} 108.brand:hover { 109 text-decoration: none; 110 opacity: 0.8; 111} 112 113/* Nav — inline in header */ 114.nav { 115 display: flex; 116 gap: 2px; 117 margin-left: 12px; 118 overflow-x: auto; 119 -webkit-overflow-scrolling: touch; 120 scrollbar-width: none; 121} 122.nav::-webkit-scrollbar { 123 display: none; 124} 125 126.nav a { 127 padding: 6px 10px; 128 border-radius: 6px; 129 color: var(--muted); 130 font-size: 13px; 131 font-weight: 500; 132 white-space: nowrap; 133 transition: color 0.1s, background 0.1s; 134} 135.nav a:hover { 136 color: var(--text); 137 background: var(--codebg); 138 text-decoration: none; 139} 140.nav a[aria-current="page"] { 141 color: var(--text); 142 background: var(--accent); 143} 144 145/* Header right */ 146.header-right { 147 display: flex; 148 align-items: center; 149 gap: 6px; 150 margin-left: auto; 151 flex-shrink: 0; 152} 153 154.header-link { 155 padding: 5px 10px; 156 font-size: 13px; 157 font-weight: 500; 158 border-radius: 6px; 159 color: var(--muted); 160 white-space: nowrap; 161} 162.header-link:hover { 163 color: var(--text); 164 background: var(--codebg); 165 text-decoration: none; 166} 167 168/* Theme toggle */ 169.theme-toggle { 170 display: flex; 171 align-items: center; 172 justify-content: center; 173 width: 32px; 174 height: 32px; 175 padding: 0; 176 background: transparent; 177 border: 1px solid var(--border); 178 border-radius: 6px; 179 cursor: pointer; 180 color: var(--muted); 181 transition: color 0.15s, border-color 0.15s; 182} 183.theme-toggle:hover { 184 color: var(--text); 185 border-color: var(--muted); 186} 187.theme-toggle .icon-moon { 188 display: none; 189} 190:root[data-theme="dark"] .theme-toggle .icon-sun { 191 display: none; 192} 193:root[data-theme="dark"] .theme-toggle .icon-moon { 194 display: block; 195} 196:root[data-theme="light"] .theme-toggle .icon-sun { 197 display: block; 198} 199:root[data-theme="light"] .theme-toggle .icon-moon { 200 display: none; 201} 202 203/* Main content */ 204.main { 205 flex: 1; 206 width: 100%; 207 max-width: 720px; 208 margin: 0 auto; 209 padding: var(--gutter); 210} 211 212.content { 213 border: 1px solid var(--border); 214 border-radius: var(--radius); 215 background: var(--panel); 216 padding: 28px 32px; 217} 218 219/* Footer */ 220.site-footer { 221 padding: 16px var(--gutter); 222 text-align: center; 223 border-top: 1px solid var(--border); 224} 225 226.footer-link { 227 font-size: 12px; 228 color: var(--muted); 229} 230.footer-link:hover { 231 color: var(--text); 232 text-decoration: none; 233} 234 235/* Content typography */ 236.content h1, 237.content h2, 238.content h3 { 239 scroll-margin-top: 64px; 240 letter-spacing: -0.01em; 241} 242 243.content h1 { 244 margin-top: 0; 245 font-size: 24px; 246 font-weight: 700; 247} 248 249.content h2 { 250 font-size: 17px; 251 font-weight: 600; 252 margin-top: 36px; 253 padding-top: 16px; 254 border-top: 1px solid var(--border); 255} 256 257.content h2:first-of-type { 258 border-top: none; 259 padding-top: 0; 260} 261 262.content h3 { 263 font-size: 14px; 264 font-weight: 600; 265 margin-top: 24px; 266 color: var(--muted); 267} 268 269.content p, 270.content li { 271 line-height: 1.7; 272 font-size: 14px; 273} 274 275.content code { 276 font-family: var(--mono); 277 font-size: 0.85em; 278 background: var(--codebg); 279 padding: 2px 5px; 280 border-radius: 4px; 281 border: 1px solid var(--border); 282} 283 284.content pre { 285 overflow-x: auto; 286 padding: 14px 16px; 287 border-radius: 8px; 288 background: var(--codebg); 289 border: 1px solid var(--border); 290 font-size: 13px; 291 line-height: 1.6; 292} 293 294.content pre code { 295 background: transparent; 296 padding: 0; 297 border: none; 298 font-size: inherit; 299} 300 301.content details { 302 margin: 12px 0; 303 border: 1px solid var(--border); 304 border-radius: 8px; 305} 306 307.content details summary { 308 cursor: pointer; 309 padding: 10px 14px; 310 font-size: 14px; 311 border-radius: 8px; 312} 313 314.content details summary:hover { 315 background: var(--accent); 316} 317 318.content details[open] summary { 319 border-bottom: 1px solid var(--border); 320 border-radius: 8px 8px 0 0; 321} 322 323.content details > :not(summary) { 324 padding: 0 14px; 325} 326 327.content hr { 328 border: none; 329 border-top: 1px solid var(--border); 330 margin: 28px 0; 331} 332 333.content blockquote { 334 border-left: 3px solid var(--link); 335 margin: 16px 0; 336 padding: 4px 16px; 337 color: var(--muted); 338 background: var(--accent); 339 border-radius: 0 6px 6px 0; 340} 341 342.content table { 343 width: 100%; 344 border-collapse: collapse; 345 font-size: 13px; 346 margin: 16px 0; 347} 348 349.content th, 350.content td { 351 padding: 8px 12px; 352 border: 1px solid var(--border); 353 text-align: left; 354} 355 356.content th { 357 background: var(--codebg); 358 font-weight: 600; 359} 360 361.empty { 362 color: var(--muted); 363} 364 365/* Mobile */ 366@media (max-width: 640px) { 367 .header { 368 gap: 4px; 369 padding: 0 12px; 370 } 371 372 .nav { 373 margin-left: 8px; 374 gap: 0; 375 } 376 377 .nav a { 378 padding: 6px 8px; 379 font-size: 12px; 380 } 381 382 .header-link { 383 font-size: 12px; 384 padding: 5px 8px; 385 } 386 387 .main { 388 padding: 12px; 389 } 390 391 .content { 392 padding: 20px 16px; 393 border-radius: 8px; 394 } 395 396 .content h1 { 397 font-size: 20px; 398 } 399 400 .content h2 { 401 font-size: 16px; 402 } 403 404 .content pre { 405 font-size: 12px; 406 padding: 12px; 407 } 408}