CourseCard.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <div class="card">
  3. <div class="card-image">
  4. <figure class="image is-4by2">
  5. <img :src="course.image" alt="Placeholder image">
  6. </figure>
  7. </div>
  8. <div class="card-content">
  9. <div class="media">
  10. <div class="media-content">
  11. <p class="title is-4">{{course.title | shortenText(45)}}</p>
  12. <p class="subtitle is-6"><i>by {{course.author.name}}</i></p>
  13. </div>
  14. </div>
  15. <div class="content">
  16. {{course.subtitle | shortenText(45) }}
  17. <br>
  18. </div>
  19. <div class="price-box">
  20. <span class="price">{{course.price}}$</span>
  21. <span class="disc-price">{{course.discountedPrice}}$</span>
  22. </div>
  23. </div>
  24. <footer class="card-footer">
  25. <nuxt-link :to="`/courses/${course.slug}`" class="card-footer-item">Learn More</nuxt-link>
  26. <a target="_" :href="course.productLink" class="card-footer-item">Enroll</a>
  27. </footer>
  28. </div>
  29. </template>
  30. <script>
  31. export default {
  32. props : {
  33. course : {
  34. type : Object,
  35. required : true
  36. }
  37. }
  38. }
  39. </script>
  40. <style lang="scss" scoped>
  41. .card-image:hover {
  42. cursor: pointer;
  43. opacity: 0.9;
  44. }
  45. .price-box {
  46. text-align: right;
  47. .price {
  48. color: gray;
  49. font-size: 16px;
  50. text-decoration: line-through;
  51. }
  52. .disc-price {
  53. font-size: 21px;
  54. font-weight: bold;
  55. }
  56. }
  57. </style>