<commit_before><div class="container">
  <bookmark-search></bookmark-search>

  <h3><span class="label label-default">All Bookmarks</span></h3>
  <ul class="list-group">
    <li *ngFor="let bookmark of bookmarks | async"
        class="list-group-item"
        [class.selected]="bookmark === selectedBookmark">
      <a href="{{bookmark.location}}" target="_blank"> {{bookmark.name}}</a>
      <div class="btn-group" role="group" aria-label="...">
        <button type="button" class="btn btn-default" (click)="gotoDetail(bookmark)">Update</button>
        <button type="button" class="btn btn-danger" (click)="delete(bookmark); $event.stopPropagation()">Delete</button>
      </div>
    </li>
  </ul>

</div><commit_msg>list all components the same way as in the search component...<commit_after><div class="container">
  <bookmark-search></bookmark-search>

  <hr>
  <h3>All bookmarks</h3>
  <div *ngFor="let bookmark of bookmarks | async" class="card">
    <div class="card-block">
      <h4 class="card-title"><a href="{{bookmark.location}}" target="_blank">{{ bookmark.name }}</a></h4>
      <p class="card-text">{{ bookmark.description }}</p>
      <button type="button" class="btn btn-primary" (click)="gotoDetail(bookmark)">Edit</button>
      <button type="button" class="btn btn-danger" (click)="delete(bookmark); $event.stopPropagation()">Delete</button>
    </div>
    <div class="card-block">
      <b>Tags:</b> <span *ngFor="let tag of bookmark.tags">{{tag}},</span>
    </div>
    <div class="card-footer">
      <b>Category:</b>{{ bookmark.category }}
    </div>
  </div>

</div>
{'fraction_non_alphanumeric': 0.21003134796238246, 'fraction_numerical': 0.003761755485893417, 'mean_word_length': 4.198697068403908, 'pattern_counts': {'":': 0, '<': 54, '<?xml version=': 0, '>': 54, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '515138', 'n_tokens_mistral': 532, 'n_tokens_neox': 523, 'n_words': 103}