subjects.html 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <div class="subjects-container">
  2. <div class="add-subject-section">
  3. <h1 class="section-title">Add New Subject</h1>
  4. <form name="form" (ngSubmit)="f.form.valid && addSubject()" #f="ngForm" novalidate class="subject-form">
  5. <div class="form-group">
  6. <input
  7. type="text"
  8. name="name"
  9. placeholder="Subject Name"
  10. [(ngModel)]="form.name"
  11. #name="ngModel"
  12. required
  13. class="form-input"
  14. />
  15. <div class="error-message" *ngIf="f.submitted && name.invalid">
  16. Name is required
  17. </div>
  18. </div>
  19. <div class="form-actions">
  20. <button type="submit" class="btn-primary">Add Subject</button>
  21. <div class="error-message" *ngIf="f.submitted && isAddFailed">
  22. Subject addition failed: {{ errorMessage }}
  23. </div>
  24. </div>
  25. </form>
  26. </div>
  27. <div class="subjects-list-section">
  28. <h2 class="section-title">Your Subjects</h2>
  29. <div class="empty-state" *ngIf="(subjectList?.length || 0) === 0">
  30. <p class="empty-message">You have no subjects yet</p>
  31. </div>
  32. <div class="subjects-grid" *ngIf="(subjectList?.length || 0) > 0">
  33. <div class="subject-card" *ngFor="let subject of subjectList">
  34. <a [routerLink]="['/subjects/', subject.id]" class="subject-link">
  35. <h3 class="subject-name">{{ subject.name }}</h3>
  36. <div class="subject-arrow">→</div>
  37. </a>
  38. </div>
  39. </div>
  40. </div>
  41. </div>