image pop-in

Orual e7defa5c 0625c497

+23 -19
+2
crates/weaver-app/assets/styling/notebook-cover.css
··· 52 52 height: 48px; 53 53 min-width: 48px; 54 54 min-height: 48px; 55 + max-width: 48px; 56 + max-height: 48px; 55 57 } 56 58 57 59 .notebook-cover-description {
+6 -6
crates/weaver-app/src/components/entry.rs
··· 463 463 rsx! { 464 464 span { class: "embed-author entry-card-author", 465 465 if let Some(ref avatar_url) = profile.avatar { 466 - img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "" } 466 + img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "", width: "42", height: "42" } 467 467 } 468 468 span { class: "embed-author-info", 469 469 span { class: "embed-author-name", "{display_name}" } ··· 478 478 rsx! { 479 479 span { class: "embed-author entry-card-author", 480 480 if let Some(ref avatar_url) = profile.avatar { 481 - img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "" } 481 + img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "", width: "42", height: "42" } 482 482 } 483 483 span { class: "embed-author-info", 484 484 span { class: "embed-author-name", "{display_name}" } ··· 629 629 to: Route::RepositoryIndex { ident: AtIdentifier::Handle(handle.clone()) }, 630 630 class: "embed-author entry-card-author", 631 631 if let Some(ref avatar_url) = profile.avatar { 632 - img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "" } 632 + img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "", width: "42", height: "42" } 633 633 } 634 634 span { class: "embed-author-info", 635 635 span { class: "embed-author-name", "{display_name}" } ··· 646 646 to: Route::RepositoryIndex { ident: AtIdentifier::Handle(handle.clone()) }, 647 647 class: "embed-author entry-card-author", 648 648 if let Some(ref avatar_url) = profile.avatar { 649 - img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "" } 649 + img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "", width: "42", height: "42" } 650 650 } 651 651 span { class: "embed-author-info", 652 652 span { class: "embed-author-name", "{display_name}" } ··· 762 762 to: Route::RepositoryIndex { ident: AtIdentifier::Handle(handle.clone()) }, 763 763 class: "embed-author", 764 764 if let Some(ref avatar_url) = profile.avatar { 765 - img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "" } 765 + img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "", width: "42", height: "42" } 766 766 } 767 767 span { class: "embed-author-info", 768 768 span { class: "embed-author-name", "{display_name}" } ··· 779 779 to: Route::RepositoryIndex { ident: AtIdentifier::Handle(handle.clone()) }, 780 780 class: "embed-author", 781 781 if let Some(ref avatar_url) = profile.avatar { 782 - img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "" } 782 + img { class: "embed-avatar", src: avatar_url.as_ref(), alt: "", width: "42", height: "42" } 783 783 } 784 784 span { class: "embed-author-info", 785 785 span { class: "embed-author-name", "{display_name}" }
+2 -2
crates/weaver-app/src/components/notebook_cover.rs
··· 130 130 rsx! { 131 131 span { class: "embed-author notebook-author", 132 132 if let Some(ref avatar) = p.avatar { 133 - img { class: "embed-avatar", src: avatar.as_ref(), alt: "" } 133 + img { class: "embed-avatar", src: avatar.as_ref(), alt: "", width: "48", height: "48" } 134 134 } 135 135 span { class: "embed-author-info", 136 136 span { class: "embed-author-name", "{display_name}" } ··· 149 149 rsx! { 150 150 span { class: "embed-author notebook-author", 151 151 if let Some(ref avatar) = p.avatar { 152 - img { class: "embed-avatar", src: avatar.as_ref(), alt: "" } 152 + img { class: "embed-avatar", src: avatar.as_ref(), alt: "", width: "48", height: "48" } 153 153 } 154 154 span { class: "embed-author-info", 155 155 span { class: "embed-author-name", "{display_name}" }
+8 -8
crates/weaver-renderer/src/atproto/embed_renderer.rs
··· 250 250 if let Some(avatar) = &profile.avatar { 251 251 html.push_str("<img class=\"embed-avatar\" src=\""); 252 252 html.push_str(&html_escape(avatar.as_ref())); 253 - html.push_str("\" alt=\"\" />"); 253 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 254 254 } 255 255 html.push_str("<span class=\"embed-author-info\">"); 256 256 if let Some(display_name) = &profile.display_name { ··· 288 288 if let Some(avatar) = &profile.avatar { 289 289 html.push_str("<img class=\"embed-avatar\" src=\""); 290 290 html.push_str(&html_escape(avatar.as_ref())); 291 - html.push_str("\" alt=\"\" />"); 291 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 292 292 } 293 293 html.push_str("<span class=\"embed-author-info\">"); 294 294 if let Some(display_name) = &profile.display_name { ··· 573 573 html.push_str("\" target=\"_blank\" rel=\"noopener\">"); 574 574 html.push_str("<img class=\"embed-avatar\" src=\""); 575 575 html.push_str(&html_escape(avatar_url)); 576 - html.push_str("\" alt=\"\" />"); 576 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 577 577 html.push_str("</a>"); 578 578 } else { 579 579 html.push_str("<img class=\"embed-avatar\" src=\""); 580 580 html.push_str(&html_escape(avatar_url)); 581 - html.push_str("\" alt=\"\" />"); 581 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 582 582 } 583 583 } 584 584 ··· 886 886 if let Some(avatar) = &generator.avatar { 887 887 html.push_str("<img class=\"embed-avatar\" src=\""); 888 888 html.push_str(&html_escape(avatar.as_ref())); 889 - html.push_str("\" alt=\"\" />"); 889 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 890 890 } 891 891 html.push_str("<span class=\"embed-author-info\">"); 892 892 html.push_str("<span class=\"embed-author-name\">"); ··· 927 927 if let Some(avatar) = &list.avatar { 928 928 html.push_str("<img class=\"embed-avatar\" src=\""); 929 929 html.push_str(&html_escape(avatar.as_ref())); 930 - html.push_str("\" alt=\"\" />"); 930 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 931 931 } 932 932 html.push_str("<span class=\"embed-author-info\">"); 933 933 html.push_str("<span class=\"embed-author-name\">"); ··· 968 968 if let Some(avatar) = &labeler.creator.avatar { 969 969 html.push_str("<img class=\"embed-avatar\" src=\""); 970 970 html.push_str(&html_escape(avatar.as_ref())); 971 - html.push_str("\" alt=\"\" />"); 971 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 972 972 } 973 973 html.push_str("<span class=\"embed-author-info\">"); 974 974 if let Some(name) = &labeler.creator.display_name { ··· 1001 1001 if let Some(avatar) = &sp.creator.avatar { 1002 1002 html.push_str("<img class=\"embed-avatar\" src=\""); 1003 1003 html.push_str(&html_escape(avatar.as_ref())); 1004 - html.push_str("\" alt=\"\" />"); 1004 + html.push_str("\" alt=\"\" width=\"42\" height=\"42\" />"); 1005 1005 } 1006 1006 html.push_str("<span class=\"embed-author-info\">"); 1007 1007
+5 -3
crates/weaver-renderer/src/css.rs
··· 356 356 .embed-avatar {{ 357 357 width: 42px; 358 358 height: 42px; 359 - min-width: 42px; 360 - min-height: 42px; 359 + max-width: 42px; 360 + max-height: 42px; 361 + aspect-ratio: 1; 361 362 margin: 0; 362 - flex-shrink: 0; 363 363 object-fit: cover; 364 364 }} 365 365 ··· 617 617 height: 24px; 618 618 min-width: 24px; 619 619 min-height: 24px; 620 + max-width: 24px; 621 + max-height: 24px; 620 622 }} 621 623 622 624 .embed-quote .embed-content {{