File Manager

A file browser with breadcrumb navigation and a file listing table.

Preview

  1. Home
  2. Documents
  3. Projects
NameTypeSizeModified
πŸ“ srcFolderβ€”Jan 15, 2026
πŸ“ assetsFolderβ€”Jan 12, 2026
πŸ“„ README.mdMarkdown4.2 KBJan 14, 2026
πŸ“„ package.jsonJSON1.8 KBJan 15, 2026
πŸ“„ styles.cssCSS12.5 KBJan 13, 2026
πŸ“„ index.htmlHTML820 BJan 10, 2026
html
<div class="vstack gap-4">
  <ng-oat-breadcrumb [items]="[{ label: 'Home', url: '#' }, { label: 'Documents', url: '#' }, { label: 'Projects' }]"> </ng-oat-breadcrumb>

  <div class="hstack justify-between">
    <input type="search" placeholder="Search files…" class="max-w-sm" />
    <button class="btn">Upload File</button>
  </div>

  <div class="table">
    <table>
      <thead>
        <tr><th>Name</th><th>Type</th><th>Size</th><th>Modified</th></tr>
      </thead>
      <tbody>
        <tr>
          <td>πŸ“ src</td>
          <td><ng-oat-badge variant="secondary">Folder</ng-oat-badge></td>
          <td>β€”</td>
          <td class="text-light">Jan 15</td>
        </tr>
        <tr>
          <td>πŸ“„ README.md</td>
          <td><ng-oat-badge variant="outline">Markdown</ng-oat-badge></td>
          <td>4.2 KB</td>
          <td class="text-light">Jan 14</td>
        </tr>
      </tbody>
    </table>
  </div>
</div>

SFC Source

typescript
import { Component } from '@angular/core';
import { NgOatBadge } from '@letsprogram/ng-oat';

@Component({
  selector: 'app-file-manager',
  imports: [NgOatBadge],
  template: `
    <div class="vstack gap-4">
      <nav class="breadcrumb">
        <a href="#">Home</a>
        <a href="#">Documents</a>
        <span>Projects</span>
      </nav>

      <div class="hstack justify-between">
        <input type="search" placeholder="Search files…" class="max-w-sm" />
        <button class="btn">Upload File</button>
      </div>

      <div class="table">
        <table>
          <thead>
            <tr><th>Name</th><th>Type</th><th>Size</th><th>Modified</th></tr>
          </thead>
          <tbody>
            @for (file of files; track file.name) {
              <tr>
                <td>{{ file.icon }} {{ file.name }}</td>
                <td><ng-oat-badge [variant]="file.badgeVariant">{{ file.type }}</ng-oat-badge></td>
                <td>{{ file.size }}</td>
                <td class="text-light">{{ file.modified }}</td>
              </tr>
            }
          </tbody>
        </table>
      </div>
    </div>
  `,
})
export class FileManagerComponent {
  files = [
    { icon: 'πŸ“', name: 'src', type: 'Folder', badgeVariant: 'secondary' as const, size: 'β€”', modified: 'Jan 15' },
    { icon: 'πŸ“', name: 'assets', type: 'Folder', badgeVariant: 'secondary' as const, size: 'β€”', modified: 'Jan 12' },
    { icon: 'πŸ“„', name: 'README.md', type: 'Markdown', badgeVariant: 'outline' as const, size: '4.2 KB', modified: 'Jan 14' },
    { icon: 'πŸ“„', name: 'package.json', type: 'JSON', badgeVariant: 'success' as const, size: '1.8 KB', modified: 'Jan 15' },
  ];
}