diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index c5312d0b..a612eaa9 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -3,6 +3,7 @@
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss",
"lokalise.i18n-ally",
- "vivaxy.vscode-conventional-commits"
+ "vivaxy.vscode-conventional-commits",
+ "oven.bun-vscode"
]
}
diff --git a/bun.lockb b/bun.lockb
index b563b58b..1d36ca4e 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/messages/en.json b/messages/en.json
index af5d187a..44f1e185 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -2,6 +2,14 @@
"meta": {
"description": "Hackerspace NTNU, a student-led project open to all students, offers access to new technology like 3D printers and VR equipment. Our members provide varied expertise to help with your projects, from making an LED light blink to creating a 3D model. Visit our workshop or join our Slack channel for assistance or a friendly chat."
},
+ "ui": {
+ "close": "Close",
+ "previous": "Previous",
+ "goToPreviousPage": "Go to previous page",
+ "next": "Next",
+ "goToNextPage": "Go to next page",
+ "morePages": "More pages"
+ },
"layout": {
"hackerspaceHome": "Hackerspace homepage",
"news": "News",
@@ -31,5 +39,11 @@
"NTNUKiD": "The working life network KID",
"copyright": "Copyright",
"allRightsReserved": "All rights reserved"
+ },
+ "news": {
+ "title": "News",
+ "page": "Page",
+ "internalArticle": "This is an internal article",
+ "newArticle": "New article"
}
}
diff --git a/messages/no.json b/messages/no.json
index 8da3c018..ba6a4bd2 100644
--- a/messages/no.json
+++ b/messages/no.json
@@ -2,6 +2,14 @@
"meta": {
"description": "Hackerspace NTNU, et studentledet prosjekt åpent for alle studenter, tilbyr tilgang til ny teknologi som 3D-printere og VR-utstyr. Våre medlemmer gir variert ekspertise for å hjelpe med prosjektene dine, fra å få en LED-lys til å blinke til å lage en 3D-modell. Besøk vårt verksted eller bli med i vår Slack-kanal for assistanse eller en vennlig prat."
},
+ "ui": {
+ "close": "Lukk",
+ "previous": "Forrige",
+ "goToPreviousPage": "Gå til forrige side",
+ "next": "Neste",
+ "goToNextPage": "Gå til neste side",
+ "morePages": "Flere sider"
+ },
"layout": {
"hackerspaceHome": "Hackerspace hjemmeside",
"news": "Nyheter",
@@ -31,5 +39,11 @@
"NTNUKiD": "Arbeidslivsnettverket KID",
"copyright": "Opphavsrett",
"allRightsReserved": "Alle rettigheter reservert"
+ },
+ "news": {
+ "title": "Nyheter",
+ "page": "Side",
+ "internalArticle": "Dette er en intern artikkel",
+ "newArticle": "Ny artikkel"
}
}
diff --git a/package.json b/package.json
index 285fed28..71b8fb82 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
"@radix-ui/react-dropdown-menu": "^2.0.6",
"@radix-ui/react-separator": "^1.0.3",
"@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-tooltip": "^1.0.7",
"@t3-oss/env-nextjs": "^0.7.1",
"autoprefixer": "^10.4.17",
"clsx": "^2.1.0",
@@ -34,6 +35,7 @@
"next-intl": "^3.4.4",
"next-sitemap": "^4.2.3",
"next-themes": "^0.2.1",
+ "nuqs": "^1.15.4",
"react": "18.2.0",
"react-dom": "18.2.0",
"tailwind-merge": "^2.2.0",
diff --git a/public/mock.jpg b/public/mock.jpg
new file mode 100644
index 00000000..a93b9f84
Binary files /dev/null and b/public/mock.jpg differ
diff --git a/src/app/[locale]/(dashboard)/news/page.tsx b/src/app/[locale]/(dashboard)/news/page.tsx
index 864f40de..3564e60a 100644
--- a/src/app/[locale]/(dashboard)/news/page.tsx
+++ b/src/app/[locale]/(dashboard)/news/page.tsx
@@ -1,5 +1,15 @@
+import { SquarePen } from 'lucide-react';
+import { useTranslations } from 'next-intl';
import { getTranslations, unstable_setRequestLocale } from 'next-intl/server';
+import { Link } from '@/lib/navigation';
+import { cx } from '@/lib/utils';
+
+import { NewsCard } from '@/components/news/NewsCard';
+import { NewsItemGrid } from '@/components/news/NewsItemGrid';
+import { Button } from '@/components/ui/Button';
+import { Separator } from '@/components/ui/Separator';
+
export async function generateMetadata({
params: { locale },
}: {
@@ -17,6 +27,217 @@ export default function News({
}: {
params: { locale: string };
}) {
+ const mockData = [
+ {
+ id: 1,
+ internal: true,
+ title: 'Gruppe status: prosjekt spill',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 2,
+ internal: false,
+ title: 'DevOps Møtet',
+ date: '69. oktober 6969',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 3,
+ internal: false,
+ title: 'Jonas er kul',
+ date: '42. november 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 4,
+ internal: true,
+ title: 'Iskrem er godt',
+ date: '18. februar 1942',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 5,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 6,
+ internal: true,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 7,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 8,
+ internal: false,
+ title: 'Dette er en veeeeldig lang overskrift som skal testes',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 9,
+ internal: true,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 10,
+ internal: true,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 11,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 12,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 13,
+ internal: true,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 14,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 15,
+ internal: true,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 16,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 17,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 18,
+ internal: false,
+ title: '18',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+
+ {
+ id: 19,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 20,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 21,
+ internal: false,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 22,
+ internal: true,
+ title: 'Hvorfor er jeg her?',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ {
+ id: 23,
+ internal: false,
+ title: '23',
+ date: '22. oktober 2023',
+ photoUrl: 'mock.jpg',
+ },
+ ];
unstable_setRequestLocale(locale);
- return
this should be news page
;
+ const t = useTranslations('news');
+ // TODO: Button to create new article should only be visible when logged in
+ return (
+ <>
+
+
{t('title')}
+
+
+
+ {mockData.slice(0, 4).map((data, index) => (
+
+ ))}
+
+
+
+ >
+ );
}
diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx
index e4c0de3f..4d4c7c2c 100644
--- a/src/components/layout/Footer.tsx
+++ b/src/components/layout/Footer.tsx
@@ -18,7 +18,7 @@ function Footer() {
const t = useTranslations('layout');
const year = new Date().getFullYear();
return (
-