/
PowerSl1d3
/
blog
Обзор
Документация
Войти
/
PowerSl1d3
/
blog
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Sources/Blog/Components/Pages/IndexPage.swift
40 строк
2 KB
PowerSl1d3
main: Initial commit
10 июн 2024, 02:49
10 июн 2024, 02:49
73d7d0f
Код
Авторство
О чём код?
import Publish import Plot import Foundation import VaporDesign struct IndexPage: Component { /// The page number this page represents let pageNumber: Int let context: PublishingContext<Blog> @ComponentBuilder var body: Component { SiteNavigation(context: context, selectedSelectionID: nil, currentSite: .blog, currentMainSitePage: nil) Div { H1("Articles, tools & resources for Vapor devs").class("vapor-blog-page-heading") Div { for item in context.paginatedItems[pageNumber - 1] { Div { let authors = item.metadata.allAuthors let authorImageURLs = item.metadata.allAuthorImageURLs let publishDate = DateFormatter.short.string(from: item.date) let blogPostData = BlogPostExtraData( length: "\(item.readingTime.minutes) minutes read", author: .init(name: authors[0], imageURL: authorImageURLs[0]), contributingAuthors: zip(authors, authorImageURLs).dropFirst().map { .init(name: $0, imageURL: $1) }, publishedDate: publishDate ) BlogCard(blogPostData: blogPostData, item: item, site: context.site) }.class("col") } }.class("row row-cols-1 row-cols-lg-2 g-4 mb-5") Pagination(activePage: pageNumber, numberOfPages: context.paginatedItems.count, pageURL: { pageNumber in context.index.paginatedPath(pageIndex: pageNumber - 1).absoluteString }) }.class("container blog-container") SiteFooter(currentSite: .blog) } }