Expand 630 hidden lines 631 631 ) -> AppResult < Response > { 632 632 let branches = git_read ( state, & ctx. repo. id, git:: Repo :: branches) . await ?; 633 633 let branch_list: Vec < String > = branches. iter ( ) . map ( |b| b. name. clone ( ) ) . collect ( ) ; 634 + let base = format ! ( "/{}/{}" , ctx. owner. username, ctx. repo. path) ; 635 + let now = crate :: now_ms ( ) ; 634 636 let body = html ! { 635 637 ( repo_header ( state, & ctx, Tab :: Branches , & ctx. repo. default_branch, & branch_list) ) 636 638 h2 { "Branches" } 637 - table class="list" { 638 - thead { tr { th { "Branch" } th { "Ahead" } th { "Behind" } th { "Updated" } } } 639 - tbody { 640 - @for b in & branches { 641 - tr { 642 - td { 643 - a href={ "/" ( ctx. owner. username) "/" ( ctx. repo. path) "/-/tree/" ( b. name) } { ( b. name) } 644 - @if b. is_default { " " span class="badge" { "default" } } 639 + ul class="entry-list card" { 640 + @for b in & branches { 641 + li class="entry-row" { 642 + div class="entry-row-body" { 643 + a class="entry-row-title" href=( format ! ( "{base}/-/tree/{}" , b. name) ) { ( b. name) } 644 + div class="entry-row-meta muted" { 645 + @if b. ahead > 0 { 646 + span class="ahead" { "↑" ( b. ahead) } 647 + } 648 + @if b. behind > 0 { 649 + span class="behind" { "↓" ( b. behind) } 650 + } 651 + span { "Updated " ( crate :: activity:: fmt_relative ( b. tip. author. time_ms, now) ) } 652 + span { "by " ( b. tip. author. name) } 653 + } 654 + } 655 + div class="entry-row-actions" { 656 + @if b. is_default { span class="badge badge-default" { "default" } } 657 + a class="mono commit-sha-pill" href=( format ! ( "{base}/-/commit/{}" , b. oid) ) { 658 + ( b. oid. short ( ) ) 645 659 } 646 - td { @if b. ahead > 0 { span style="color:var(--fb-success)" { ( b. ahead) } } @else { "0" } } 647 - td { ( b. behind) } 648 - td class="muted" { ( b. tip. author. name) " · " ( fmt_date ( b. tip. author. time_ms) ) } 649 660 } 650 661 } 651 662 } Expand 15 hidden lines 667 678 ) -> AppResult < Response > { 668 679 let tags = git_read ( state, & ctx. repo. id, git:: Repo :: tags) . await ?; 669 680 let branches = branch_names ( state, & ctx. repo. id) . await ; 681 + let base = format ! ( "/{}/{}" , ctx. owner. username, ctx. repo. path) ; 670 682 let body = html ! { 671 683 ( repo_header ( state, & ctx, Tab :: Tags , & ctx. repo. default_branch, & branches) ) 672 684 h2 { "Tags" } 673 - table class="list" { 674 - thead { tr { th { " Tag " } th { "Commit" } th { "Kind" } } } 675 - tbody { 685 + @if tags. is_empty ( ) { 686 + div class="card" { p class="muted" { "No tags." } } 687 + } @else { 688 + ul class="entry-list card" { 676 689 @for t in & tags { 677 - tr { 678 - td { a href={ "/" ( ctx. owner. username) "/" ( ctx. repo. path) "/-/tree/" ( t. name) } { ( t. name) } } 679 - td class="mono" { ( t. oid. short ( ) ) } 680 - td { ( if t. annotated { "annotated" } else { "lightweight" } ) } 690 + li class="entry-row" { 691 + div class="entry-row-body" { 692 + a class="entry-row-title" href=( format ! ( "{base}/-/tree/{}" , t. name) ) { ( t. name) } 693 + div class="entry-row-meta muted" { 694 + span { ( if t. annotated { "annotated" } else { "lightweight" } ) } 695 + } 696 + } 697 + div class="entry-row-actions" { 698 + a class="mono commit-sha-pill" href=( format ! ( "{base}/-/commit/{}" , t. oid) ) { 699 + ( t. oid. short ( ) ) 700 + } 701 + } 681 702 } 682 703 } 683 704 } Expand 58 hidden lines 742 763 let body = html ! { 743 764 ( repo_header ( state, & ctx, Tab :: Commits , & rev_name, & branches) ) 744 765 h2 { "Commits" } 745 - ul class="commit-list card" { 766 + ul class="entry-list card" { 746 767 @for ( commit, sig) in commits. iter ( ) . zip ( states. iter ( ) ) { 747 768 @let commit_url = format ! ( "{base}/-/commit/{}" , commit. oid) ; 748 769 @let signer = match sig { 749 770 git:: SignatureState :: Verified { user_id, .. } => signers. get ( user_id) . map ( String :: as_str) , 750 771 _ => None , 751 772 } ; 752 - li class="commit-row" { 753 - div class="commit-row-body" { 754 - a class="commit-row-msg" href=( commit_url) { ( commit. summary) } 755 - div class="commit-row-meta muted" { 773 + li class="entry-row" { 774 + div class="entry-row-body" { 775 + a class="entry-row-title" href=( commit_url) { ( commit. summary) } 776 + div class="entry-row-meta muted" { 756 777 span { ( commit. author. name) } 757 778 span { "·" } 758 779 span { ( crate :: activity:: fmt_relative ( commit. author. time_ms, now) ) } 759 780 } 760 781 } 761 - div class="commit-row-actions" { 782 + div class="entry-row-actions" { 762 783 ( commit_sig_cell ( sig, signer, commit. author. time_ms) ) 763 784 a class="mono commit-sha-pill" href=( commit_url) { ( commit. oid. short ( ) ) } 764 785 button class="icon-btn commit-copy" type ="button"