A fullstack app for indexing standard.site documents
8
fork

Configure Feed

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

chore: style changes

Steve 70896a9a fa68d029

+44 -39
+33 -25
packages/client/src/App.tsx
··· 401 401 </div> 402 402 403 403 <div className="window-body" style={{ margin: 0, padding: "4px 6px" }}> 404 - {loading && <p style={{ textAlign: "center" }}>Searching...</p>} 404 + <div 405 + className="feed" 406 + style={{ 407 + height: "70vh", 408 + overflowY: "auto", 409 + paddingRight: "5px", 410 + }} 411 + > 412 + {loading && ( 413 + <p style={{ textAlign: "center", padding: "1rem" }}> 414 + Searching... 415 + </p> 416 + )} 405 417 406 - {error && ( 407 - <div 408 - style={{ 409 - padding: "10px", 410 - background: "#ffefef", 411 - border: "1px solid #ff0000", 412 - }} 413 - > 414 - <p>Error: {error}</p> 415 - </div> 416 - )} 418 + {error && ( 419 + <div 420 + style={{ 421 + padding: "10px", 422 + background: "#ffefef", 423 + border: "1px solid #ff0000", 424 + }} 425 + > 426 + <p>Error: {error}</p> 427 + </div> 428 + )} 417 429 418 - {!loading && !error && ( 419 - <div 420 - className="feed" 421 - style={{ 422 - maxHeight: "70vh", 423 - overflowY: "auto", 424 - paddingRight: "5px", 425 - }} 426 - > 430 + {!loading && !error && ( 431 + <> 427 432 <div 428 433 style={{ 429 434 background: "#ffffff", ··· 488 493 target="_blank" 489 494 rel="noreferrer" 490 495 > 491 - ATProto 496 + atproto 492 497 </a> 493 498 , a new protocol to power connections across the web. 494 499 </p> ··· 528 533 style={{ 529 534 width: "88px", 530 535 height: "88px", 531 - objectFit: "scale-down", 536 + objectFit: "cover", 532 537 border: "1px solid #d0d0d0", 533 538 }} 534 539 /> ··· 583 588 fontSize: "12px", 584 589 color: "#666", 585 590 lineHeight: "1.4", 591 + overflowWrap: "anywhere", 592 + wordBreak: "break-word", 586 593 }} 587 594 > 588 595 {truncateText(getDescription(doc), 150)} ··· 650 657 </div> 651 658 ))} 652 659 {documents.length === 0 && <p>No documents found.</p>} 653 - </div> 654 - )} 660 + </> 661 + )} 662 + </div> 655 663 </div> 656 664 <div className="status-bar"> 657 665 <p className="status-bar-field">Done</p>
+10 -2
packages/client/src/index.css
··· 1 1 body { 2 - background: url("./xp.jpg") no-repeat center center fixed; 3 - background-size: cover; 4 2 min-height: 100vh; 3 + min-height: 100dvh; 5 4 display: flex; 6 5 align-items: center; 7 6 justify-content: center; ··· 13 12 padding-right: max(20px, env(safe-area-inset-right)); 14 13 overflow: hidden; 15 14 box-sizing: border-box; 15 + } 16 + 17 + body::before { 18 + content: ""; 19 + position: fixed; 20 + inset: 0; 21 + background: url("./xp.jpg") no-repeat center center; 22 + background-size: cover; 23 + z-index: -1; 16 24 } 17 25 18 26 #root {
+1 -12
packages/server/src/routes/feed.ts
··· 45 45 } 46 46 } 47 47 48 - // Parse content if present 49 - let content: unknown | undefined; 50 - if (row.content) { 51 - try { 52 - content = JSON.parse(row.content); 53 - } catch { 54 - // Ignore parse errors 55 - } 56 - } 57 - 58 48 return { 59 49 uri: row.uri, 60 50 did: row.did, ··· 63 53 description: row.description || undefined, 64 54 path: row.path || undefined, 65 55 site: row.site || undefined, 66 - content, 67 56 textContent: row.text_content || undefined, 68 57 coverImageCid: row.cover_image_cid || undefined, 69 58 coverImageUrl: row.cover_image_url || undefined, ··· 86 75 87 76 const { results } = await db 88 77 .prepare( 89 - `SELECT uri, did, rkey, title, description, path, site, content, text_content, 78 + `SELECT uri, did, rkey, title, description, path, site, text_content, 90 79 cover_image_cid, cover_image_url, bsky_post_ref, tags, 91 80 published_at, updated_at, pub_url, pub_name, pub_description, 92 81 pub_icon_cid, pub_icon_url, view_url, pds_endpoint,