+ Дата и время +
++ {formattedDate} в {formattedTime} +
+ {event.endDate && ( ++ до {new Date(event.endDate).toLocaleTimeString('ru-RU', { + hour: '2-digit', + minute: '2-digit', + })} +
+ )} ++ Место +
+{event.location}
++ Совет обучающихся ИМИТ ВолГУ — это студенческое объединение, + которое представляет интересы студентов и организует мероприятия. +
++ Мы стремимся создать комфортную и продуктивную среду для студентов ИМИТ, + помогая им раскрыть свой потенциал, развивать soft skills и находить + единомышленников. +
++ {category.description} +
+ )} + ++ {posts.length} {posts.length === 1 ? 'пост' : 'постов'} +
++ Свяжитесь с нами любым удобным способом — мы всегда рады новым идеям и предложениям! +
+{siteConfig.contact.address}
+{siteConfig.contact.building}
+ ++ Мы всегда рады новым участникам! Если вы хотите стать частью команды СО ИМИТ, + у вас есть идеи для мероприятий или вы просто хотите помочь — напишите нам. +
++ Мы ищем активных и инициативных студентов, готовых развиваться вместе с нами + и делать студенческую жизнь ярче! +
+ + + + + + {/* Decorative pixels */} ++ {formattedDate} в {formattedTime} +
+ {event.endDate && ( ++ до {new Date(event.endDate).toLocaleTimeString('ru-RU', { + hour: '2-digit', + minute: '2-digit', + })} +
+ )} +{event.location}
++ Мероприятия, воркшопы, собрания и другие события СО ИМИТ ВолГУ +
++ Событий пока нет +
++ {post.excerpt} +
++ Последние новости, события и публикации Совета обучающихся ИМИТ ВолГУ +
++ Найдено: {posts.length} {posts.length === 1 ? 'пост' : 'постов'} + {params.q && по запросу “{params.q}”} +
+ )} + + {/* Posts grid */} ++ К сожалению, запрашиваемая страница не существует или была перемещена. +
+ + {/* Actions */} +- Looking for a starting point or more instructions? Head over to{" "} - - Templates - {" "} - or the{" "} - - Learning - {" "} - center. -
-+ {author.name} +
+ {author.role && ( ++ {author.role} +
+ )} ++ {author.role} +
+ )} + {author.bio && ( ++ {author.bio} +
+ )} + + {/* Social links */} + {author.socialLinks && ( ++ {event.location} +
+ )} ++ 📅 + {eventDate.toLocaleDateString('ru-RU', { + day: 'numeric', + month: 'long', + year: 'numeric', + })} + {' в '} + {time} +
+ {event.location && ( ++ 📍 + {event.location} +
+ )} +🕐 {time}
+ {event.location &&📍 {event.location}
} ++ {post.excerpt} +
+ )} + + {/* Author */} + {post.author && ( ++ {children} +
+ ), + blockquote: ({ children }) => ( ++ {children} ++ ), + }, + list: { + bullet: ({ children }) => ( +
+ {children}
+
+ ),
+ link: ({ children, value }) => {
+ const target = value?.blank ? '_blank' : undefined
+ const rel = value?.blank ? 'noopener noreferrer' : undefined
+ return (
+
+ {children}
+
+ )
+ },
+ },
+ types: {
+ image: ({ value }) => {
+ const imageUrl = urlForImage(value)?.width(1200).url()
+ if (!imageUrl) return null
+
+ return (
+
+
+ {value.code}
+
+
+ + {children} +
+ ) +) + +CardDescription.displayName = 'CardDescription' diff --git a/src/shared/ui/card/index.ts b/src/shared/ui/card/index.ts new file mode 100644 index 0000000..5192133 --- /dev/null +++ b/src/shared/ui/card/index.ts @@ -0,0 +1,10 @@ +export { + Card, + CardHeader, + CardTitle, + CardDescription, + type CardProps, + type CardHeaderProps, + type CardTitleProps, + type CardDescriptionProps, +} from './Card' diff --git a/src/shared/ui/container/Container.tsx b/src/shared/ui/container/Container.tsx new file mode 100644 index 0000000..aceffa5 --- /dev/null +++ b/src/shared/ui/container/Container.tsx @@ -0,0 +1,55 @@ +'use client' + +import { forwardRef, type HTMLAttributes, type Ref } from 'react' + +export interface ContainerProps extends HTMLAttributes+ Событий пока нет +
++ {subtitle} +
++ Постов пока нет +
+