diff --git a/frontend/src/components/features/live-blog/PinnedLiveBlogSidebar.tsx b/frontend/src/components/features/live-blog/PinnedLiveBlogSidebar.tsx index 8f3d651..d4a02eb 100644 --- a/frontend/src/components/features/live-blog/PinnedLiveBlogSidebar.tsx +++ b/frontend/src/components/features/live-blog/PinnedLiveBlogSidebar.tsx @@ -4,12 +4,12 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import type { LiveBlog } from '@/lib/api'; -import { - Clock, - MessageSquare, - Eye, - Pin, - Play, +import { + Clock, + MessageSquare, + Eye, + Pin, + Play, Square, ChevronRight } from 'lucide-react'; @@ -19,9 +19,9 @@ interface PinnedLiveBlogSidebarProps { maxItems?: number; } -export function PinnedLiveBlogSidebar({ +export function PinnedLiveBlogSidebar({ className = '', - maxItems = 3 + maxItems = 3 }: PinnedLiveBlogSidebarProps) { const { data: pinnedBlogs, isLoading, error } = usePinnedLiveBlogs(); @@ -31,7 +31,7 @@ export function PinnedLiveBlogSidebar({ - Pinned Live Blogs + Во живо @@ -114,7 +114,7 @@ export function PinnedLiveBlogSidebar({ const now = new Date(); const diffMs = now.getTime() - date.getTime(); const diffMins = Math.floor(diffMs / 60000); - + if (diffMins < 60) { return `${diffMins}m ago`; } else if (diffMins < 1440) { @@ -137,13 +137,13 @@ export function PinnedLiveBlogSidebar({ Live Coverage - + {(pinnedBlogs || []).length} pinned - - + + {displayBlogs.length === 0 ? (

@@ -158,7 +158,7 @@ export function PinnedLiveBlogSidebar({

{displayBlogs.map((blog) => { const latestUpdate = getLatestUpdate(blog); - + return ( )}
- -
@@ -235,4 +235,4 @@ export function PinnedLiveBlogSidebar({ ); -} \ No newline at end of file +} diff --git a/frontend/src/components/layout/Header.tsx b/frontend/src/components/layout/Header.tsx index a5e92c5..c4418bf 100644 --- a/frontend/src/components/layout/Header.tsx +++ b/frontend/src/components/layout/Header.tsx @@ -32,6 +32,7 @@ export function Header() { { to: '/science', label: 'Наука' }, { to: '/archive', label: 'Архива' }, { to: '/live-blogs', label: 'LIVE' }, + { to: '/about', label: 'Упатство за употреба' }, ]; const adminLinks = [ diff --git a/frontend/src/components/routes/AboutComponent.tsx b/frontend/src/components/routes/AboutComponent.tsx new file mode 100644 index 0000000..bb9bf2a --- /dev/null +++ b/frontend/src/components/routes/AboutComponent.tsx @@ -0,0 +1,121 @@ +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { AlertTriangle, Laugh, Coffee } from 'lucide-react'; + +export function AboutComponent() { + return ( +
+
+

+ Упатство за употреба +

+

+ Сè што треба да знаете за Placebo.mk +

+
+ +
+ + +
+ + Предупредување +
+
+ +

+ Placebo.mk е сатиричен портал за вести. Сè што читате овде е измислено, преувеличено или целосно извадено од контекст. +

+

+ Ако веќе се налутивте, не се грижете - тоа е замислено. Ако сте се насмеале, уште подобро! Ако барате вистински новинарски содржини, продолжете кон следната веб-страна. +

+
+
+ + + +
+ + Што е Placebo.mk? +
+
+ +

+ Сме портал кој го преработува реалноста и ја претвора во апсурд. Македонските политика, култура и спорт се сервираат со добра доза сарказам и црен хумор. +

+

+ Нашата мисија е едноставна: да ве насмееме, да ве натераме да размислите и да ве потсетиме дека понекогаш вистината е толку apsурдна што единствено може да се коментира со хумор. +

+
+
+ + + + Правила за читање + + +
    +
  1. Не земајте ништо од ова сериозно (освен кафето што ќе ни го купите).
  2. +
  3. Ако не ви е смешно - не е за вас. Најдете друга страна.
  4. +
  5. Не споделувајте наши написи како вистински вести. Луѓето веќе се збунети доволно.
  6. +
  7. Смеата е најдобар лек. Користете ја дневно.
  8. +
  9. Ако ви се допаѓа, споделете. Ако не ви се допаѓа, сепак споделете. Гледаме статистики.
  10. +
+
+
+ + + + Категории + + +
    +
  • + Општо: Општи вести и теми кои не паѓаат во другите категории +
  • +
  • + Спорт: Спортски новости, победи, порази и сè помеѓу (најчесто порази) +
  • +
  • + Уметност: Култура, музика, филм и претставување дека разбираме од уметност +
  • +
  • + Наука: Научни откритија објаснети на начин што ќе разбере и вашата баба +
  • +
  • + LIVE Блогови: Покривање во реално време на настани што го заслужуваат нашето внимание +
  • +
+
+
+ + + +
+ + Поддржете не +
+
+ +

+ Сатирата не се пишува сама (иако понекогаш реалноста е поапсурдна од фикцијата). + Ако ви се допаѓа она што го правиме, размислете да ни купите кафе. Или две. Или три. +

+

+ * Сите донации одат за кафе, инспирација и плаќање на серверите. Не нудиме фискални сметки. +

+
+
+ +
+

+ Запомнете: +

+

+ Ако не можете да препознаете сатира од вистина,
+ проблемот не е во нас. Проблемот е во реалноста. +

+
+
+
+ ); +} diff --git a/frontend/src/routes.tsx b/frontend/src/routes.tsx index 4b1c509..a1e3f4d 100644 --- a/frontend/src/routes.tsx +++ b/frontend/src/routes.tsx @@ -11,6 +11,7 @@ import { AuthPage } from './components/routes/AuthPage' import { SportComponent } from './components/routes/SportComponent' import { ArtComponent } from './components/routes/ArtComponent' import { ScienceComponent } from './components/routes/ScienceComponent' +import { AboutComponent } from './components/routes/AboutComponent' import { ProtectedRoute } from './components/auth/ProtectedRoute' import { Header } from './components/layout/Header' import { HeroArticle } from './components/home/HeroArticle' @@ -181,6 +182,12 @@ const scienceRoute = createRoute({ component: ScienceComponent, }) +const aboutRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/about', + component: AboutComponent, +}) + const articleDetailRoute = createRoute({ getParentRoute: () => rootRoute, path: '/articles/$id', @@ -308,6 +315,7 @@ const routeTree = rootRoute.addChildren([ sportRoute, artRoute, scienceRoute, + aboutRoute, articleDetailRoute, liveBlogsRoute, liveBlogDetailRoute,