index.pug 5.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. div(class="home-page")
  2. //- Hero Slider
  3. section(v-if="_.appState.slides.length > 0" class="mb-16")
  4. imageslider(:slides="_.appState.slides")
  5. //- Featured Events
  6. section(v-if="_.appState.featuredEvents.length > 0" class="container mx-auto px-4 mb-16")
  7. h2(class="text-3xl font-bold text-center mb-8 text-gray-800 dark:text-white") Ближайшие мероприятия
  8. div(class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6")
  9. div(
  10. v-for="event in _.appState.featuredEvents"
  11. :key="event._id"
  12. class="bg-white dark:bg-gray-800 rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow"
  13. )
  14. app-link(:to="'/events/'+event._id")
  15. img(
  16. :src="event.image"
  17. :alt="event.title"
  18. class="w-full h-48 object-cover"
  19. )
  20. div(class="p-4")
  21. h3(class="text-xl font-semibold mb-2 text-gray-800 dark:text-white") {{ event.title }}
  22. p(class="text-gray-600 dark:text-gray-300 mb-2") {{ formatDate(event.event_data.event_date) }}
  23. p(class="text-gray-600 dark:text-gray-300 mb-4") {{ event.event_data.location }}
  24. div(class="flex justify-between items-center")
  25. span(class="text-lg font-bold text-blue-600") {{ event.event_data.price }} TJS
  26. span(
  27. :class="{'bg-green-100 text-green-800': event.event_data.status === 'upcoming', 'bg-blue-100 text-blue-800': event.event_data.status === 'ongoing', 'bg-gray-100 text-gray-800': event.event_data.status === 'completed' }"
  28. class="px-2 py-1 rounded text-sm"
  29. ) {{ event.event_data.status === 'upcoming' ? 'Скоро' : event.event_data.status === 'ongoing' ? 'Сейчас' : 'Завершено' }}
  30. //- Latest Blog Posts
  31. section(v-if="_.appState.blogPosts.length > 0" class="container mx-auto px-4 mb-16")
  32. div(class="flex justify-between items-center mb-8")
  33. h2(class="text-3xl font-bold text-gray-800 dark:text-white") Последние новости
  34. app-link(
  35. to="/blog"
  36. class="text-blue-600 hover:text-blue-700 font-semibold transition-colors"
  37. ) Все новости →
  38. div(class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6")
  39. div(
  40. v-for="post in _.appState.blogPosts"
  41. :key="post._id"
  42. class="bg-white dark:bg-gray-800 rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow"
  43. )
  44. app-link(:to="'/blog/'+post._id")
  45. img(
  46. :src="post.image"
  47. :alt="post.title"
  48. class="w-full h-48 object-cover"
  49. )
  50. div(class="p-4")
  51. h3(class="text-xl font-semibold mb-2 text-gray-800 dark:text-white") {{ post.title }}
  52. p(class="text-gray-600 dark:text-gray-300 mb-4 line-clamp-3") {{ post.excerpt }}
  53. div(class="flex justify-between items-center text-sm text-gray-500")
  54. span {{ formatDate(post.created_at) }}
  55. span {{ post.author }}
  56. //- Categories
  57. section(v-if="_.appState.categories.length > 0" class="container mx-auto px-4 mb-16")
  58. h2(class="text-3xl font-bold text-center mb-8 text-gray-800 dark:text-white") Категории
  59. div(class="grid grid-cols-2 md:grid-cols-4 gap-4")
  60. app-link(
  61. v-for="category in _.appState.categories"
  62. :key="category._id"
  63. :to="'/events?category='+category._id"
  64. class="bg-white dark:bg-gray-800 rounded-lg p-6 text-center shadow-md hover:shadow-lg transition-shadow"
  65. )
  66. div(
  67. :style="{ color: category.color }"
  68. class="text-3xl mb-2"
  69. )
  70. | {{ category.icon }}
  71. h3(class="text-lg font-semibold text-gray-800 dark:text-white mb-2") {{ category.name }}
  72. p(class="text-gray-600 dark:text-gray-300 text-sm") {{ category.description }}
  73. //- Call to Action
  74. section(class="bg-blue-600 text-white py-16")
  75. div(class="container mx-auto px-4 text-center")
  76. h2(class="text-3xl font-bold mb-4") Станьте частью нашего сообщества
  77. p(class="text-xl mb-8 opacity-90") Присоединяйтесь к нам и откройте для себя мир искусства и культуры
  78. div(class="flex flex-col sm:flex-row justify-center space-y-4 sm:space-y-0 sm:space-x-4")
  79. app-link(
  80. to="/events"
  81. class="bg-white text-blue-600 px-8 py-3 rounded-lg font-semibold hover:bg-gray-100 transition-colors"
  82. ) Смотреть мероприятия
  83. app-link(
  84. to="/contacts"
  85. class="border-2 border-white text-white px-8 py-3 rounded-lg font-semibold hover:bg-white hover:text-blue-600 transition-colors"
  86. ) Связаться с нами