course-row.blade.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. {{-- resources/views/components/library/course-row.blade.php
  2. 课程横向列表行(用于「开放报名」与「历史课程」列表)。
  3. Props: $course — 由 Library\CourseController 加工后的课程数组。
  4. --}}
  5. @props(['course'])
  6. @php
  7. $teacher = $course['teacher'] ?? [];
  8. $status = $course['status'] ?? 'closed';
  9. $statusKey = $status === 'open' ? 'course_status_open' : 'course_status_closed';
  10. $cover = $course['cover_url'] ?? null;
  11. @endphp
  12. <a href="{{ $course['detail_url'] }}" class="course-row" target="_blank" rel="noopener">
  13. {{-- 缩略图 --}}
  14. <div class="course-row__thumb" style="{{ empty($cover) ? 'background:'.$course['cover_gradient'] : '' }}">
  15. @if($cover)
  16. <img src="{{ $cover }}" alt="{{ $course['title'] }}" loading="lazy">
  17. @else
  18. <span>{{ $course['title'] }}</span>
  19. @endif
  20. </div>
  21. {{-- 主体 --}}
  22. <div class="course-row__main">
  23. <h3 class="course-row__title">{{ $course['title'] }}</h3>
  24. @if(!empty($course['summary']))
  25. <div class="course-row__summary">{{ $course['summary'] }}</div>
  26. @endif
  27. <div class="course-row__meta">
  28. @if(!empty($teacher['name']))
  29. <span class="course-row__teacher">
  30. <x-ui.author-avatar
  31. :avatar="$teacher['avatar'] ?? null"
  32. :color="$teacher['color']"
  33. :initials="$teacher['initials']"
  34. :name="$teacher['name']"
  35. size="sm" />
  36. </span>
  37. @endif
  38. @if($course['number'] > 0)
  39. <span class="course-row__period">{{ __('library.course_period', ['n' => $course['number']]) }}</span>
  40. @endif
  41. <span class="course-row__members">{{ __('library.course_members', ['n' => $course['member_count']]) }}</span>
  42. @if($course['start_date'])
  43. <span class="course-row__date">{{ $course['start_date'] }}</span>
  44. @endif
  45. </div>
  46. </div>
  47. {{-- 右侧:状态 + 报名引导 --}}
  48. <div class="course-row__side">
  49. <span class="course-badge course-badge--{{ $status }}">
  50. {{ __("library.{$statusKey}") }}
  51. </span>
  52. @if($status === 'open')
  53. <span class="course-row__cta">{{ __('library.course_signup') }} <i class="ti ti-chevron-right"></i></span>
  54. @endif
  55. </div>
  56. </a>