From 9e22273570120b6a9e68cc1c3b4a5350f4b437b4 Mon Sep 17 00:00:00 2001
From: Lawrence Lu <45768189+lawrencelu5@users.noreply.github.com>
Date: Tue, 25 Feb 2025 04:33:17 -0800
Subject: [PATCH 1/4] move categories to separate folders
refactor!: move categories to en and tr folders
feat!: added in daisy ui plugin via tailwind.config.ts
initial commit testing for fetching mongodb data via server actions
---
.vscode/settings.json | 2 +
src/actions/news.actions.ts | 18 ++---
.../{ => (categories)/(en)}/cafes/page.tsx | 3 +
.../{ => (categories)/(en)}/clubs/page.tsx | 0
.../(en)}/communities/page.tsx | 0
.../(en)}/discounts/page.tsx | 0
.../(en)}/dormitories/page.tsx | 0
.../(en)}/entertainment/page.tsx | 0
.../{ => (categories)/(en)}/events/page.tsx | 0
.../(en)}/faculties/page.tsx | 0
.../{ => (categories)/(en)}/fitness/page.tsx | 0
.../{ => (categories)/(en)}/for-sale/page.tsx | 0
.../{ => (categories)/(en)}/guides/page.tsx | 0
.../{ => (categories)/(en)}/health/page.tsx | 0
.../{ => (categories)/(en)}/i-am-new/page.tsx | 0
src/app/(categories)/(en)/layout.tsx | 14 ++++
.../{ => (categories)/(en)}/markets/page.tsx | 0
src/app/(categories)/(en)/news/page.tsx | 66 +++++++++++++++++
.../{ => (categories)/(en)}/pp-foods/page.tsx | 0
.../(en)}/private-classes/page.tsx | 0
.../(en)}/restaurants/page.tsx | 0
.../(en)}/scholarships/page.tsx | 0
.../(en)}/stationery/page.tsx | 0
.../{ => (categories)/(en)}/stores/page.tsx | 0
.../(en)}/transportation/page.tsx | 0
.../{ => (categories)/(tr)}/burslar/page.tsx | 0
.../{ => (categories)/(tr)}/eglence/page.tsx | 0
.../(tr)}/etkinlikler/page.tsx | 0
.../(tr)}/fakulteler/page.tsx | 0
.../(tr)}/fp-yemekler/page.tsx | 0
.../{ => (categories)/(tr)}/haberler/page.tsx | 0
.../(tr)}/indirimler/page.tsx | 0
.../{ => (categories)/(tr)}/kafeler/page.tsx | 0
.../(tr)}/kirtasiye/page.tsx | 0
.../{ => (categories)/(tr)}/kulupler/page.tsx | 0
src/app/(categories)/(tr)/layout.tsx | 14 ++++
.../(tr)}/magazalar/page.tsx | 0
.../(tr)}/marketler/page.tsx | 0
.../(tr)}/ozel-dersler/page.tsx | 0
.../(tr)}/rehberler/page.tsx | 0
.../(tr)}/restoranlar/page.tsx | 0
.../{ => (categories)/(tr)}/saglik/page.tsx | 0
.../{ => (categories)/(tr)}/satilik/page.tsx | 0
.../(tr)}/topluluklar/page.tsx | 0
.../{ => (categories)/(tr)}/ulasim/page.tsx | 0
.../(tr)}/yeni-geldim/page.tsx | 0
.../{ => (categories)/(tr)}/yurtlar/page.tsx | 0
src/app/news/page.tsx | 74 -------------------
src/app/page.tsx | 1 +
src/components/ui/Backlink/Backlink.tsx | 14 ++++
.../CategoryBody/CategoryBody.tsx | 13 ++++
.../CategoryHeader/CategoryHeader.tsx | 3 +
.../ui/CategoryCard/CategoryPost.tsx | 17 +++++
src/models/news.model.ts | 2 +-
tailwind.config.ts | 5 ++
55 files changed, 162 insertions(+), 84 deletions(-)
create mode 100644 .vscode/settings.json
rename src/app/{ => (categories)/(en)}/cafes/page.tsx (99%)
rename src/app/{ => (categories)/(en)}/clubs/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/communities/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/discounts/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/dormitories/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/entertainment/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/events/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/faculties/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/fitness/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/for-sale/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/guides/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/health/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/i-am-new/page.tsx (100%)
create mode 100644 src/app/(categories)/(en)/layout.tsx
rename src/app/{ => (categories)/(en)}/markets/page.tsx (100%)
create mode 100644 src/app/(categories)/(en)/news/page.tsx
rename src/app/{ => (categories)/(en)}/pp-foods/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/private-classes/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/restaurants/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/scholarships/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/stationery/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/stores/page.tsx (100%)
rename src/app/{ => (categories)/(en)}/transportation/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/burslar/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/eglence/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/etkinlikler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/fakulteler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/fp-yemekler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/haberler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/indirimler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/kafeler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/kirtasiye/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/kulupler/page.tsx (100%)
create mode 100644 src/app/(categories)/(tr)/layout.tsx
rename src/app/{ => (categories)/(tr)}/magazalar/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/marketler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/ozel-dersler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/rehberler/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/restoranlar/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/saglik/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/satilik/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/topluluklar/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/ulasim/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/yeni-geldim/page.tsx (100%)
rename src/app/{ => (categories)/(tr)}/yurtlar/page.tsx (100%)
delete mode 100644 src/app/news/page.tsx
create mode 100644 src/components/ui/Backlink/Backlink.tsx
create mode 100644 src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
create mode 100644 src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx
create mode 100644 src/components/ui/CategoryCard/CategoryPost.tsx
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..7a73a41
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,2 @@
+{
+}
\ No newline at end of file
diff --git a/src/actions/news.actions.ts b/src/actions/news.actions.ts
index 141ec10..b63c9c1 100644
--- a/src/actions/news.actions.ts
+++ b/src/actions/news.actions.ts
@@ -1,14 +1,14 @@
-'use server'
+"use server";
import { connect } from "@/lib/db";
import News from "@/models/news.model";
export async function getNews() {
- try {
- await connect();
- const news = await News.find();
- return news;
- } catch (error) {
- throw new Error("Failed to fetch news");
- }
-}
\ No newline at end of file
+ try {
+ await connect();
+ const news = await News.find();
+ return news;
+ } catch (error) {
+ throw new Error("Failed to fetch news");
+ }
+}
diff --git a/src/app/cafes/page.tsx b/src/app/(categories)/(en)/cafes/page.tsx
similarity index 99%
rename from src/app/cafes/page.tsx
rename to src/app/(categories)/(en)/cafes/page.tsx
index c6e9d12..d5165f8 100644
--- a/src/app/cafes/page.tsx
+++ b/src/app/(categories)/(en)/cafes/page.tsx
@@ -8,6 +8,7 @@ import {
} from "lucide-react";
import type { Metadata } from "next";
+import { getCafes } from "@/actions/cafe.action";
export const metadata: Metadata = {
title: "Cafes",
@@ -272,6 +273,8 @@ const cafes: Cafe[] = [
];
export default function page() {
+
+
return (
) {
+ return (
+
+ );
+}
diff --git a/src/app/markets/page.tsx b/src/app/(categories)/(en)/markets/page.tsx
similarity index 100%
rename from src/app/markets/page.tsx
rename to src/app/(categories)/(en)/markets/page.tsx
diff --git a/src/app/(categories)/(en)/news/page.tsx b/src/app/(categories)/(en)/news/page.tsx
new file mode 100644
index 0000000..01e91bb
--- /dev/null
+++ b/src/app/(categories)/(en)/news/page.tsx
@@ -0,0 +1,66 @@
+import Link from "next/link";
+import { ArrowRight, Calendar } from "lucide-react";
+
+import type { Metadata } from "next";
+import { getNews } from "@/actions/news.actions";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+
+export const metadata: Metadata = {
+ title: "News",
+};
+
+interface NewsItem {
+ id: number;
+ title: string;
+ content: string;
+ date: string;
+ followUpLink: string;
+}
+
+// const newsItems: NewsItem[] = [
+// {
+// id: 1,
+// title: "Orientation Days",
+// content:
+// "Details on the Orientation Days, organised for new students who have just started their university lives and joined the EMU Family, can be accessed via our internet page. You can also obtain all types of university-related information from the information desks set up on our campus.",
+// date: "2024-09-7",
+// followUpLink: "https://orientation.emu.edu.tr/DefaultEng.aspx",
+// },
+// ];
+
+export default async function page() {
+ const newsItems: NewsItem[] = await getNews();
+
+ return (
+
+ {newsItems.map((item) => (
+
+
+ {item.title}
+
+
+
+
+ {new Date(item.date).toLocaleDateString("en-US", {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ })}
+
+
+
{item.content}
+
+ Read more
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/pp-foods/page.tsx b/src/app/(categories)/(en)/pp-foods/page.tsx
similarity index 100%
rename from src/app/pp-foods/page.tsx
rename to src/app/(categories)/(en)/pp-foods/page.tsx
diff --git a/src/app/private-classes/page.tsx b/src/app/(categories)/(en)/private-classes/page.tsx
similarity index 100%
rename from src/app/private-classes/page.tsx
rename to src/app/(categories)/(en)/private-classes/page.tsx
diff --git a/src/app/restaurants/page.tsx b/src/app/(categories)/(en)/restaurants/page.tsx
similarity index 100%
rename from src/app/restaurants/page.tsx
rename to src/app/(categories)/(en)/restaurants/page.tsx
diff --git a/src/app/scholarships/page.tsx b/src/app/(categories)/(en)/scholarships/page.tsx
similarity index 100%
rename from src/app/scholarships/page.tsx
rename to src/app/(categories)/(en)/scholarships/page.tsx
diff --git a/src/app/stationery/page.tsx b/src/app/(categories)/(en)/stationery/page.tsx
similarity index 100%
rename from src/app/stationery/page.tsx
rename to src/app/(categories)/(en)/stationery/page.tsx
diff --git a/src/app/stores/page.tsx b/src/app/(categories)/(en)/stores/page.tsx
similarity index 100%
rename from src/app/stores/page.tsx
rename to src/app/(categories)/(en)/stores/page.tsx
diff --git a/src/app/transportation/page.tsx b/src/app/(categories)/(en)/transportation/page.tsx
similarity index 100%
rename from src/app/transportation/page.tsx
rename to src/app/(categories)/(en)/transportation/page.tsx
diff --git a/src/app/burslar/page.tsx b/src/app/(categories)/(tr)/burslar/page.tsx
similarity index 100%
rename from src/app/burslar/page.tsx
rename to src/app/(categories)/(tr)/burslar/page.tsx
diff --git a/src/app/eglence/page.tsx b/src/app/(categories)/(tr)/eglence/page.tsx
similarity index 100%
rename from src/app/eglence/page.tsx
rename to src/app/(categories)/(tr)/eglence/page.tsx
diff --git a/src/app/etkinlikler/page.tsx b/src/app/(categories)/(tr)/etkinlikler/page.tsx
similarity index 100%
rename from src/app/etkinlikler/page.tsx
rename to src/app/(categories)/(tr)/etkinlikler/page.tsx
diff --git a/src/app/fakulteler/page.tsx b/src/app/(categories)/(tr)/fakulteler/page.tsx
similarity index 100%
rename from src/app/fakulteler/page.tsx
rename to src/app/(categories)/(tr)/fakulteler/page.tsx
diff --git a/src/app/fp-yemekler/page.tsx b/src/app/(categories)/(tr)/fp-yemekler/page.tsx
similarity index 100%
rename from src/app/fp-yemekler/page.tsx
rename to src/app/(categories)/(tr)/fp-yemekler/page.tsx
diff --git a/src/app/haberler/page.tsx b/src/app/(categories)/(tr)/haberler/page.tsx
similarity index 100%
rename from src/app/haberler/page.tsx
rename to src/app/(categories)/(tr)/haberler/page.tsx
diff --git a/src/app/indirimler/page.tsx b/src/app/(categories)/(tr)/indirimler/page.tsx
similarity index 100%
rename from src/app/indirimler/page.tsx
rename to src/app/(categories)/(tr)/indirimler/page.tsx
diff --git a/src/app/kafeler/page.tsx b/src/app/(categories)/(tr)/kafeler/page.tsx
similarity index 100%
rename from src/app/kafeler/page.tsx
rename to src/app/(categories)/(tr)/kafeler/page.tsx
diff --git a/src/app/kirtasiye/page.tsx b/src/app/(categories)/(tr)/kirtasiye/page.tsx
similarity index 100%
rename from src/app/kirtasiye/page.tsx
rename to src/app/(categories)/(tr)/kirtasiye/page.tsx
diff --git a/src/app/kulupler/page.tsx b/src/app/(categories)/(tr)/kulupler/page.tsx
similarity index 100%
rename from src/app/kulupler/page.tsx
rename to src/app/(categories)/(tr)/kulupler/page.tsx
diff --git a/src/app/(categories)/(tr)/layout.tsx b/src/app/(categories)/(tr)/layout.tsx
new file mode 100644
index 0000000..60838f5
--- /dev/null
+++ b/src/app/(categories)/(tr)/layout.tsx
@@ -0,0 +1,14 @@
+import Backlink from "@/components/ui/Backlink/Backlink";
+
+export default function CategoryLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+
+ );
+}
diff --git a/src/app/magazalar/page.tsx b/src/app/(categories)/(tr)/magazalar/page.tsx
similarity index 100%
rename from src/app/magazalar/page.tsx
rename to src/app/(categories)/(tr)/magazalar/page.tsx
diff --git a/src/app/marketler/page.tsx b/src/app/(categories)/(tr)/marketler/page.tsx
similarity index 100%
rename from src/app/marketler/page.tsx
rename to src/app/(categories)/(tr)/marketler/page.tsx
diff --git a/src/app/ozel-dersler/page.tsx b/src/app/(categories)/(tr)/ozel-dersler/page.tsx
similarity index 100%
rename from src/app/ozel-dersler/page.tsx
rename to src/app/(categories)/(tr)/ozel-dersler/page.tsx
diff --git a/src/app/rehberler/page.tsx b/src/app/(categories)/(tr)/rehberler/page.tsx
similarity index 100%
rename from src/app/rehberler/page.tsx
rename to src/app/(categories)/(tr)/rehberler/page.tsx
diff --git a/src/app/restoranlar/page.tsx b/src/app/(categories)/(tr)/restoranlar/page.tsx
similarity index 100%
rename from src/app/restoranlar/page.tsx
rename to src/app/(categories)/(tr)/restoranlar/page.tsx
diff --git a/src/app/saglik/page.tsx b/src/app/(categories)/(tr)/saglik/page.tsx
similarity index 100%
rename from src/app/saglik/page.tsx
rename to src/app/(categories)/(tr)/saglik/page.tsx
diff --git a/src/app/satilik/page.tsx b/src/app/(categories)/(tr)/satilik/page.tsx
similarity index 100%
rename from src/app/satilik/page.tsx
rename to src/app/(categories)/(tr)/satilik/page.tsx
diff --git a/src/app/topluluklar/page.tsx b/src/app/(categories)/(tr)/topluluklar/page.tsx
similarity index 100%
rename from src/app/topluluklar/page.tsx
rename to src/app/(categories)/(tr)/topluluklar/page.tsx
diff --git a/src/app/ulasim/page.tsx b/src/app/(categories)/(tr)/ulasim/page.tsx
similarity index 100%
rename from src/app/ulasim/page.tsx
rename to src/app/(categories)/(tr)/ulasim/page.tsx
diff --git a/src/app/yeni-geldim/page.tsx b/src/app/(categories)/(tr)/yeni-geldim/page.tsx
similarity index 100%
rename from src/app/yeni-geldim/page.tsx
rename to src/app/(categories)/(tr)/yeni-geldim/page.tsx
diff --git a/src/app/yurtlar/page.tsx b/src/app/(categories)/(tr)/yurtlar/page.tsx
similarity index 100%
rename from src/app/yurtlar/page.tsx
rename to src/app/(categories)/(tr)/yurtlar/page.tsx
diff --git a/src/app/news/page.tsx b/src/app/news/page.tsx
deleted file mode 100644
index 0ff290a..0000000
--- a/src/app/news/page.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import Link from "next/link";
-import { ArrowLeft, ArrowRight, Calendar } from "lucide-react";
-
-import type { Metadata } from "next";
-
-export const metadata: Metadata = {
- title: "News",
-};
-
-interface NewsItem {
- id: number;
- title: string;
- content: string;
- date: string;
- followUpLink: string;
-}
-
-const newsItems: NewsItem[] = [
- {
- id: 1,
- title: "Orientation Days",
- content:
- "Details on the Orientation Days, organised for new students who have just started their university lives and joined the EMU Family, can be accessed via our internet page. You can also obtain all types of university-related information from the information desks set up on our campus.",
- date: "2024-09-7",
- followUpLink: "https://orientation.emu.edu.tr/DefaultEng.aspx",
- },
-];
-
-export default function page() {
- return (
-
-
-
- Back to Home
-
-
-
EMU News
-
-
- {newsItems.map((item) => (
-
-
- {item.title}
-
-
-
-
- {new Date(item.date).toLocaleDateString("en-US", {
- year: "numeric",
- month: "long",
- day: "numeric",
- })}
-
-
-
{item.content}
-
- Read more
-
-
-
- ))}
-
-
- );
-}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 67bc2a0..4826cb6 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -3,6 +3,7 @@ import { useState } from "react";
import Link from "next/link";
import { Menu, Globe } from "lucide-react";
import FeaturedAnnouncement from "@/components/FeaturedAnnouncement";
+import { cookies } from "next/headers";
// Utility function to replace Turkish characters with English equivalents
const replaceTurkishChars = (text: string) => {
diff --git a/src/components/ui/Backlink/Backlink.tsx b/src/components/ui/Backlink/Backlink.tsx
new file mode 100644
index 0000000..4af55ba
--- /dev/null
+++ b/src/components/ui/Backlink/Backlink.tsx
@@ -0,0 +1,14 @@
+import { ArrowLeft } from "lucide-react";
+import Link from "next/link";
+
+export default function Backlink({ message }: { message: string }) {
+ return (
+
+
+ {message}
+
+ );
+}
diff --git a/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx b/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
new file mode 100644
index 0000000..980de63
--- /dev/null
+++ b/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
@@ -0,0 +1,13 @@
+import { ReactNode } from "react";
+
+interface CardBody {
+ children?: ReactNode;
+}
+
+export default function CategoryBody({ children }: CardBody) {
+ return (
+ <>
+
{children}
+ >
+ );
+}
diff --git a/src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx b/src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx
new file mode 100644
index 0000000..5ab89ba
--- /dev/null
+++ b/src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx
@@ -0,0 +1,3 @@
+export default function CategoryHeader({ title }: { title: string }) {
+ return
{title} ;
+}
diff --git a/src/components/ui/CategoryCard/CategoryPost.tsx b/src/components/ui/CategoryCard/CategoryPost.tsx
new file mode 100644
index 0000000..3a3431a
--- /dev/null
+++ b/src/components/ui/CategoryCard/CategoryPost.tsx
@@ -0,0 +1,17 @@
+import { ReactNode } from "react";
+import CategoryBody from "./CategoryBody/CategoryBody";
+import CategoryHeader from "./CategoryHeader/CategoryHeader";
+
+interface CardProp {
+ title: string;
+ children?: ReactNode;
+}
+
+export default function CategoryPost({ title, children }: CardProp) {
+ return (
+ <>
+
+
{children}
+ >
+ );
+}
diff --git a/src/models/news.model.ts b/src/models/news.model.ts
index 4b1f77b..a51b65e 100644
--- a/src/models/news.model.ts
+++ b/src/models/news.model.ts
@@ -19,4 +19,4 @@ const NewsSchema = new Schema({
followUpLink: { type: String },
}, { timestamps: true });
-export default mongoose.model
('News', NewsSchema);
\ No newline at end of file
+export default mongoose.models?.News || mongoose.model('News', NewsSchema);
\ No newline at end of file
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 20d15a9..4d788c4 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -1,4 +1,5 @@
import type { Config } from "tailwindcss";
+import daisyui from "daisyui";
const config: Config = {
content: [
@@ -14,5 +15,9 @@ const config: Config = {
},
},
},
+ plugins: [daisyui],
+ daisyui: {
+ themes: ["light"],
+ },
};
export default config;
From ac8079dd98041e97a37a8fded8c5d47e71261890 Mon Sep 17 00:00:00 2001
From: Lawrence Lu <45768189+lawrencelu5@users.noreply.github.com>
Date: Fri, 28 Feb 2025 04:43:01 -0800
Subject: [PATCH 2/4] separate data into individual components, refactor some
UI into reusable components
refactor!: reactor numerous static pages to their own components, including some UI
feat!: added server actions in the individual data components to fetch data from mongodb; wrapped components in a suspense when loading data
---
src/actions/cafe.action.ts | 20 +-
src/app/(categories)/(en)/cafes/CafesData.tsx | 331 +++++++++++
src/app/(categories)/(en)/cafes/page.tsx | 340 +-----------
src/app/(categories)/(en)/clubs/ClubsData.tsx | 523 +++++++++++++++++
src/app/(categories)/(en)/clubs/page.tsx | 525 +-----------------
.../(en)/communities/CommunitiesData.tsx | 98 ++++
.../(categories)/(en)/communities/page.tsx | 105 +---
.../(en)/discounts/DiscountsData.tsx | 64 +++
src/app/(categories)/(en)/discounts/page.tsx | 72 +--
.../(en)/dormitories/DormitoriesData.tsx | 244 ++++++++
.../(categories)/(en)/dormitories/page.tsx | 245 +-------
.../(en)/entertainment/EntertainmentData.tsx | 244 ++++++++
.../(categories)/(en)/entertainment/page.tsx | 253 +--------
src/app/(categories)/(en)/error.tsx | 27 +
.../(categories)/(en)/events/EventsData.tsx | 80 +++
src/app/(categories)/(en)/events/page.tsx | 81 +--
.../(en)/faculties/FacultiesData.tsx | 124 +++++
src/app/(categories)/(en)/faculties/page.tsx | 135 +----
.../(categories)/(en)/fitness/FitnessData.tsx | 148 +++++
src/app/(categories)/(en)/fitness/page.tsx | 155 +-----
.../(en)/for-sale/ForSalesData.tsx | 48 ++
src/app/(categories)/(en)/for-sale/page.tsx | 69 +--
.../(categories)/(en)/guides/GuidesData.tsx | 58 ++
src/app/(categories)/(en)/guides/page.tsx | 71 +--
.../(categories)/(en)/health/HealthData.tsx | 144 +++++
src/app/(categories)/(en)/health/page.tsx | 157 +-----
.../(en)/i-am-new/NewContentData.tsx | 60 ++
src/app/(categories)/(en)/i-am-new/page.tsx | 72 +--
.../(categories)/(en)/markets/MarketsData.tsx | 110 ++++
src/app/(categories)/(en)/markets/page.tsx | 121 +---
src/app/(categories)/(en)/news/NewsData.tsx | 62 +++
src/app/(categories)/(en)/news/page.tsx | 57 +-
.../(en)/pp-foods/PPFoodsData.tsx | 83 +++
src/app/(categories)/(en)/pp-foods/page.tsx | 91 +--
.../private-classes/PrivateClassesData.tsx | 74 +++
.../(en)/private-classes/page.tsx | 89 +--
.../(en)/restaurants/RestaurantsData.tsx | 239 ++++++++
.../(categories)/(en)/restaurants/page.tsx | 244 +-------
.../(en)/scholarships/ScholarshipsData.tsx | 123 ++++
.../(categories)/(en)/scholarships/page.tsx | 123 +---
.../(en)/stationery/StationaryData.tsx | 112 ++++
src/app/(categories)/(en)/stationery/page.tsx | 125 +----
.../(categories)/(en)/stores/StoresData.tsx | 216 +++++++
src/app/(categories)/(en)/stores/page.tsx | 228 +-------
.../transportation/TransportationData.tsx | 86 +++
.../(categories)/(en)/transportation/page.tsx | 86 +--
src/app/(categories)/(tr)/burslar/page.tsx | 52 +-
src/app/(categories)/(tr)/eglence/page.tsx | 82 +--
src/app/(categories)/(tr)/error.tsx | 29 +
.../(categories)/(tr)/etkinlikler/page.tsx | 66 +--
src/app/(categories)/(tr)/fakulteler/page.tsx | 52 +-
.../(categories)/(tr)/fp-yemekler/page.tsx | 83 +--
src/app/(categories)/(tr)/haberler/page.tsx | 62 +--
src/app/(categories)/(tr)/indirimler/page.tsx | 64 +--
src/app/(categories)/(tr)/kafeler/page.tsx | 94 +---
src/app/(categories)/(tr)/kirtasiye/page.tsx | 88 +--
src/app/(categories)/(tr)/kulupler/page.tsx | 89 +--
src/app/(categories)/(tr)/magazalar/page.tsx | 77 +--
src/app/(categories)/(tr)/marketler/page.tsx | 66 +--
.../(categories)/(tr)/ozel-dersler/page.tsx | 71 +--
src/app/(categories)/(tr)/rehberler/page.tsx | 53 +-
.../(categories)/(tr)/restoranlar/page.tsx | 101 +---
src/app/(categories)/(tr)/saglik/page.tsx | 79 +--
src/app/(categories)/(tr)/satilik/page.tsx | 69 +--
.../(categories)/(tr)/topluluklar/page.tsx | 60 +-
src/app/(categories)/(tr)/ulasim/page.tsx | 57 +-
.../(categories)/(tr)/yeni-geldim/page.tsx | 55 +-
src/app/(categories)/(tr)/yurtlar/page.tsx | 88 +--
src/app/page.tsx | 1 -
.../CategoryBody/CategoryBody.tsx | 11 +-
.../ui/ContactUsBanner/ContactUsBanner.tsx | 17 +
src/components/ui/ErrorHeader/ErrorHeader.tsx | 29 +
.../ui/FollowUpButton/FollowUpButton.tsx | 22 +
.../ui/SkeletonLayout/SkeletonLayout.tsx | 25 +
src/models/cafe.model.ts | 45 +-
src/models/club.model.ts | 26 +-
src/models/community.model.ts | 26 +-
src/models/discount.model.ts | 37 +-
src/models/dormitory.model.ts | 45 +-
src/models/entertainment.model.ts | 39 +-
src/models/events.model.ts | 39 +-
src/models/faculty.model.ts | 24 +-
src/models/fitness-center.model.ts | 37 +-
src/models/guide.model.ts | 24 +-
src/models/health.model.ts | 35 +-
src/models/market.model.ts | 35 +-
src/models/new-content.model.ts | 24 +-
src/models/ppfood.model.ts | 39 +-
src/models/private-class.model.ts | 22 +-
src/models/restaurant.model.ts | 45 +-
src/models/sale-item.model.ts | 22 +-
src/models/scholarship.model.ts | 24 +-
src/models/stationery.model.ts | 39 +-
src/models/store.model.ts | 35 +-
src/models/transportation.model.ts | 26 +-
95 files changed, 4139 insertions(+), 4953 deletions(-)
create mode 100644 src/app/(categories)/(en)/cafes/CafesData.tsx
create mode 100644 src/app/(categories)/(en)/clubs/ClubsData.tsx
create mode 100644 src/app/(categories)/(en)/communities/CommunitiesData.tsx
create mode 100644 src/app/(categories)/(en)/discounts/DiscountsData.tsx
create mode 100644 src/app/(categories)/(en)/dormitories/DormitoriesData.tsx
create mode 100644 src/app/(categories)/(en)/entertainment/EntertainmentData.tsx
create mode 100644 src/app/(categories)/(en)/error.tsx
create mode 100644 src/app/(categories)/(en)/events/EventsData.tsx
create mode 100644 src/app/(categories)/(en)/faculties/FacultiesData.tsx
create mode 100644 src/app/(categories)/(en)/fitness/FitnessData.tsx
create mode 100644 src/app/(categories)/(en)/for-sale/ForSalesData.tsx
create mode 100644 src/app/(categories)/(en)/guides/GuidesData.tsx
create mode 100644 src/app/(categories)/(en)/health/HealthData.tsx
create mode 100644 src/app/(categories)/(en)/i-am-new/NewContentData.tsx
create mode 100644 src/app/(categories)/(en)/markets/MarketsData.tsx
create mode 100644 src/app/(categories)/(en)/news/NewsData.tsx
create mode 100644 src/app/(categories)/(en)/pp-foods/PPFoodsData.tsx
create mode 100644 src/app/(categories)/(en)/private-classes/PrivateClassesData.tsx
create mode 100644 src/app/(categories)/(en)/restaurants/RestaurantsData.tsx
create mode 100644 src/app/(categories)/(en)/scholarships/ScholarshipsData.tsx
create mode 100644 src/app/(categories)/(en)/stationery/StationaryData.tsx
create mode 100644 src/app/(categories)/(en)/stores/StoresData.tsx
create mode 100644 src/app/(categories)/(en)/transportation/TransportationData.tsx
create mode 100644 src/app/(categories)/(tr)/error.tsx
create mode 100644 src/components/ui/ContactUsBanner/ContactUsBanner.tsx
create mode 100644 src/components/ui/ErrorHeader/ErrorHeader.tsx
create mode 100644 src/components/ui/FollowUpButton/FollowUpButton.tsx
create mode 100644 src/components/ui/SkeletonLayout/SkeletonLayout.tsx
diff --git a/src/actions/cafe.action.ts b/src/actions/cafe.action.ts
index 02603dd..13cda00 100644
--- a/src/actions/cafe.action.ts
+++ b/src/actions/cafe.action.ts
@@ -1,16 +1,14 @@
-'use server'
+"use server";
import { connect } from "@/lib/db"; // connect to the database
import Cafe from "@/models/cafe.model"; // cafe model
-export async function getCafes() {
- try {
- await connect();
- const cafes = await Cafe.find();
- return cafes;
- } catch (error) {
- throw new Error("Failed to fetch cafes");
- }
+export async function getCafes() {
+ try {
+ await connect();
+ const cafes = await Cafe.find();
+ return cafes;
+ } catch (error) {
+ throw new Error("Failed to fetch cafes");
+ }
}
-
-
diff --git a/src/app/(categories)/(en)/cafes/CafesData.tsx b/src/app/(categories)/(en)/cafes/CafesData.tsx
new file mode 100644
index 0000000..ae36342
--- /dev/null
+++ b/src/app/(categories)/(en)/cafes/CafesData.tsx
@@ -0,0 +1,331 @@
+import { MapPin, Clock, Banknote, MessageSquare } from "lucide-react";
+import { getCafes } from "@/actions/cafe.action";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface Cafe {
+ name: string;
+ location: string;
+ googleMapsUrl: string;
+ openTime: string;
+ closeTime: string;
+ studyScore: number;
+ priceRange: string;
+ comments: string[];
+}
+
+/* const cafes: Cafe[] = [
+ {
+ name: "Yemen Coffee EMU",
+ location: "EMU Campus Center",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/VutBQQyHeAmScayw7?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "01:00",
+ studyScore: 7,
+ priceRange: "$$$",
+ comments: ["Good ambience", "Lovely staff", "Location is good"],
+ },
+ {
+ name: "Jojo Cafe",
+ location: "Computer Engineering Department",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/jm81siDu6TrHbU5u8?g_st=com.google.maps.preview.copy",
+ openTime: "07:00",
+ closeTime: "19:00",
+ studyScore: 9,
+ priceRange: "$$",
+ comments: ["Great service", "Lovely staff", "Fresh homemade pastries"],
+ },
+ {
+ name: "Rock Café EMU",
+ location: "IT Department",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/CyT7TQ1FCCH8fBkQ8?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "17:00",
+ studyScore: 7,
+ priceRange: "$",
+ comments: ["Great coffee", "Lovely staff", "Friendly atmosphere"],
+ },
+ {
+ name: "DAU-SEN LOCAL",
+ location: "EMU Campus Center",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/pk3EDijT6nLWjMYD7?g_st=com.google.maps.preview.copy",
+ openTime: "07:00",
+ closeTime: "21:00",
+ studyScore: 8,
+ priceRange: "$$$",
+ comments: [
+ "Warm and sustainable place to eat and study",
+ "Cozy vibe",
+ "Great coffee and delicious foods",
+ ],
+ },
+ {
+ name: "Sandra’s Café",
+ location: "EMU Campus Center",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/KwBxqsKiu7wdT4Jt7?g_st=com.google.maps.preview.copy",
+ openTime: "09:00",
+ closeTime: "22:00",
+ studyScore: 7,
+ priceRange: "$",
+ comments: ["Good location", "Billiards", "Lovely staff"],
+ },
+ {
+ name: "Break Point",
+ location: "EMU Campus Center",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/JbNv8HJxNybm5DVn6?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "20:00",
+ studyScore: 5,
+ priceRange: "$",
+ comments: ["Convenient location", "Good coffee", "Friendly environment"],
+ },
+ {
+ name: "Crush",
+ location: "EMU Campus Center",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/Mjx4nVM21FigFCww7?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "20:00",
+ studyScore: 6,
+ priceRange: "$$",
+ comments: ["Good ambience", "Cozy place", "Great coffees"],
+ },
+ {
+ name: "Gloria Jean’s Coffeee Pop-Art",
+ location: "Popart Dormitory",
+ googleMapsUrl:
+ "https://maps.google.com?ftid=0x14dfc976fbf615cb:0x44bf9d291d27dbe5&entry=gps",
+ openTime: "09:00",
+ closeTime: "23:00",
+ studyScore: 9,
+ priceRange: "$$$",
+ comments: [
+ "Good atmosphere",
+ "Great coffee and desserts",
+ "Convenient location",
+ ],
+ },
+ {
+ name: "Gloria Jean’s Coffees EMU",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/Za7QbbGAZFBfwPVMA?g_st=com.google.maps.preview.copy",
+ openTime: "07:00",
+ closeTime: "00:00",
+ studyScore: 9,
+ priceRange: "$$$",
+ comments: ["Great terrace", "Quality coffee", "Convenient location"],
+ },
+ {
+ name: "To Go Coffee Time",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/85Zdt427DWiDhQgq5?g_st=com.google.maps.preview.copy",
+ openTime: "08:30",
+ closeTime: "23:30",
+ studyScore: 7,
+ priceRange: "$$",
+ comments: [
+ "Calm environment",
+ "Proper and delicious coffee",
+ "Good location",
+ ],
+ },
+ {
+ name: "Motto Café Bistro",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/ZLYZ1sVpcg6ekUot8?g_st=com.google.maps.preview.copy",
+ openTime: "10:00",
+ closeTime: "03:00",
+ studyScore: 4,
+ priceRange: "$$",
+ comments: [
+ "Great accessibility and outside seating area",
+ "Great shisha",
+ "Good service",
+ ],
+ },
+ {
+ name: "Mackbear Coffee",
+ location: "Novel Centre Point",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/qSvJwGcjx8761Q5v7?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "01:00",
+ studyScore: 8,
+ priceRange: "$$$",
+ comments: ["Refreshing environment", "Good vibes", "Great coffee"],
+ },
+ {
+ name: "Okka Coffee",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/LBdgRmLnE38KWA14A?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "01:00",
+ studyScore: 3,
+ priceRange: "$$",
+ comments: [
+ "Wide range of coffee, brews and desserts",
+ "Fast service",
+ "Premium shisha",
+ ],
+ },
+ {
+ name: "Exile Coffee and Wine",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/wZtMJfGzq537vVXy8?g_st=com.google.maps.preview.copy",
+ openTime: "08:30",
+ closeTime: "23:00",
+ studyScore: 5,
+ priceRange: "$$$",
+ comments: [
+ "Great coffee, drinks and fellowship",
+ "Cozy atmosphere",
+ "Lovely staff",
+ ],
+ },
+ {
+ name: "Caffe Pascucci",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/87wpiW1pC8pMuQbn9?g_st=com.google.maps.preview.copy",
+ openTime: "09:00",
+ closeTime: "23:00",
+ studyScore: 8,
+ priceRange: "$$",
+ comments: ["Fast Wi-fi", "Chill atmosphere", "Good coffee"],
+ },
+ {
+ name: "Cortado Espresso Bar",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/BFeVvMhACR4VVbN18?g_st=com.google.maps.preview.copy",
+ openTime: "09:00",
+ closeTime: "00:00",
+ studyScore: 9,
+ priceRange: "$$$",
+ comments: ["Quick service", "Cozy atmosphere", "Beautiful garden"],
+ },
+ {
+ name: "Narin Eatery",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/H6qucM67hn5eTEun7?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "00:00",
+ studyScore: 6,
+ priceRange: "$$",
+ comments: ["Free parking", "Quality food", "Good pastries and coffee"],
+ },
+ {
+ name: "Loof Coffee & Shopping",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/5dnhN7viDGHpnUKv5?g_st=com.google.maps.preview.copy",
+ openTime: "8:00",
+ closeTime: "00:00",
+ studyScore: 9,
+ priceRange: "$$$",
+ comments: ["Lovely staff", "Good coffee", "Homemade pastries"],
+ },
+ {
+ name: "Coffee Corner Cakes",
+ location: "Salamis Road",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/N93U41z7nC3MBmVf9?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "00:00",
+ studyScore: 7,
+ priceRange: "$$$",
+ comments: ["Lovely staff", "Good coffee", "Meeting room available"],
+ },
+ {
+ name: "MOC Ingate",
+ location: "Ingate Hotel",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/N93U41z7nC3MBmVf9?g_st=com.google.maps.preview.copy",
+ openTime: "08:00",
+ closeTime: "00:00",
+ studyScore: 10,
+ priceRange: "$$$",
+ comments: ["Lovely staff", "Good coffee", "Friendly staff"],
+ },
+]; */
+
+export default async function CafesData({ lang }: { lang?: "en" | "tr" }) {
+ const cafes: Cafe[] = await getCafes();
+
+ if (!cafes || !cafes.length) {
+ return ;
+ }
+
+ return (
+ <>
+
+ {cafes.map((cafe, index) => (
+
+
{cafe.name}
+
+
+
+
+ {cafe.location}
+
+
+
+
+ {cafe.openTime} - {cafe.closeTime}
+
+
+
+ {cafe.priceRange}
+
+
+
+ {lang === "en" ? "Study Store:" : "Ders Çalışma Ortamı:"}
+
+ = 8
+ ? "bg-green-100 text-green-800"
+ : cafe.studyScore >= 5
+ ? "bg-yellow-100 text-yellow-800"
+ : "bg-red-100 text-red-800"
+ }`}
+ >
+ {cafe.studyScore}/10
+
+
+
+
+
+ {lang === "en" ? "Comments" : "Yorumlar"}
+
+
+ {cafe.comments.map((comment: string, i: number) => (
+
+ {comment}
+
+ ))}
+
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app/(categories)/(en)/cafes/page.tsx b/src/app/(categories)/(en)/cafes/page.tsx
index d5165f8..02b811a 100644
--- a/src/app/(categories)/(en)/cafes/page.tsx
+++ b/src/app/(categories)/(en)/cafes/page.tsx
@@ -1,345 +1,15 @@
-import Link from "next/link";
-import {
- MapPin,
- Clock,
- Banknote,
- ArrowLeft,
- MessageSquare,
-} from "lucide-react";
-
import type { Metadata } from "next";
-import { getCafes } from "@/actions/cafe.action";
+import CafesData from "./CafesData";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
export const metadata: Metadata = {
title: "Cafes",
};
-interface Cafe {
- name: string;
- location: string;
- googleMapsUrl: string;
- openTime: string;
- closeTime: string;
- studyScore: number;
- priceRange: "$" | "$$" | "$$$";
- comments: string[];
-}
-
-const cafes: Cafe[] = [
- {
- name: "Yemen Coffee EMU",
- location: "EMU Campus Center",
- googleMapsUrl:
- "https://maps.app.goo.gl/VutBQQyHeAmScayw7?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "01:00",
- studyScore: 7,
- priceRange: "$$$",
- comments: ["Good ambience", "Lovely staff", "Location is good"],
- },
- {
- name: "Jojo Cafe",
- location: "Computer Engineering Department",
- googleMapsUrl:
- "https://maps.app.goo.gl/jm81siDu6TrHbU5u8?g_st=com.google.maps.preview.copy",
- openTime: "07:00",
- closeTime: "19:00",
- studyScore: 9,
- priceRange: "$$",
- comments: ["Great service", "Lovely staff", "Fresh homemade pastries"],
- },
- {
- name: "Rock Café EMU",
- location: "IT Department",
- googleMapsUrl:
- "https://maps.app.goo.gl/CyT7TQ1FCCH8fBkQ8?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "17:00",
- studyScore: 7,
- priceRange: "$",
- comments: ["Great coffee", "Lovely staff", "Friendly atmosphere"],
- },
- {
- name: "DAU-SEN LOCAL",
- location: "EMU Campus Center",
- googleMapsUrl:
- "https://maps.app.goo.gl/pk3EDijT6nLWjMYD7?g_st=com.google.maps.preview.copy",
- openTime: "07:00",
- closeTime: "21:00",
- studyScore: 8,
- priceRange: "$$$",
- comments: [
- "Warm and sustainable place to eat and study",
- "Cozy vibe",
- "Great coffee and delicious foods",
- ],
- },
- {
- name: "Sandra’s Café",
- location: "EMU Campus Center",
- googleMapsUrl:
- "https://maps.app.goo.gl/KwBxqsKiu7wdT4Jt7?g_st=com.google.maps.preview.copy",
- openTime: "09:00",
- closeTime: "22:00",
- studyScore: 7,
- priceRange: "$",
- comments: ["Good location", "Billiards", "Lovely staff"],
- },
- {
- name: "Break Point",
- location: "EMU Campus Center",
- googleMapsUrl:
- "https://maps.app.goo.gl/JbNv8HJxNybm5DVn6?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "20:00",
- studyScore: 5,
- priceRange: "$",
- comments: ["Convenient location", "Good coffee", "Friendly environment"],
- },
- {
- name: "Crush",
- location: "EMU Campus Center",
- googleMapsUrl:
- "https://maps.app.goo.gl/Mjx4nVM21FigFCww7?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "20:00",
- studyScore: 6,
- priceRange: "$$",
- comments: ["Good ambience", "Cozy place", "Great coffees"],
- },
- {
- name: "Gloria Jean’s Coffeee Pop-Art",
- location: "Popart Dormitory",
- googleMapsUrl:
- "https://maps.google.com?ftid=0x14dfc976fbf615cb:0x44bf9d291d27dbe5&entry=gps",
- openTime: "09:00",
- closeTime: "23:00",
- studyScore: 9,
- priceRange: "$$$",
- comments: [
- "Good atmosphere",
- "Great coffee and desserts",
- "Convenient location",
- ],
- },
- {
- name: "Gloria Jean’s Coffees EMU",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/Za7QbbGAZFBfwPVMA?g_st=com.google.maps.preview.copy",
- openTime: "07:00",
- closeTime: "00:00",
- studyScore: 9,
- priceRange: "$$$",
- comments: ["Great terrace", "Quality coffee", "Convenient location"],
- },
- {
- name: "To Go Coffee Time",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/85Zdt427DWiDhQgq5?g_st=com.google.maps.preview.copy",
- openTime: "08:30",
- closeTime: "23:30",
- studyScore: 7,
- priceRange: "$$",
- comments: [
- "Calm environment",
- "Proper and delicious coffee",
- "Good location",
- ],
- },
- {
- name: "Motto Café Bistro",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/ZLYZ1sVpcg6ekUot8?g_st=com.google.maps.preview.copy",
- openTime: "10:00",
- closeTime: "03:00",
- studyScore: 4,
- priceRange: "$$",
- comments: [
- "Great accessibility and outside seating area",
- "Great shisha",
- "Good service",
- ],
- },
- {
- name: "Mackbear Coffee",
- location: "Novel Centre Point",
- googleMapsUrl:
- "https://maps.app.goo.gl/qSvJwGcjx8761Q5v7?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "01:00",
- studyScore: 8,
- priceRange: "$$$",
- comments: ["Refreshing environment", "Good vibes", "Great coffee"],
- },
- {
- name: "Okka Coffee",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/LBdgRmLnE38KWA14A?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "01:00",
- studyScore: 3,
- priceRange: "$$",
- comments: [
- "Wide range of coffee, brews and desserts",
- "Fast service",
- "Premium shisha",
- ],
- },
- {
- name: "Exile Coffee and Wine",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/wZtMJfGzq537vVXy8?g_st=com.google.maps.preview.copy",
- openTime: "08:30",
- closeTime: "23:00",
- studyScore: 5,
- priceRange: "$$$",
- comments: [
- "Great coffee, drinks and fellowship",
- "Cozy atmosphere",
- "Lovely staff",
- ],
- },
- {
- name: "Caffe Pascucci",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/87wpiW1pC8pMuQbn9?g_st=com.google.maps.preview.copy",
- openTime: "09:00",
- closeTime: "23:00",
- studyScore: 8,
- priceRange: "$$",
- comments: ["Fast Wi-fi", "Chill atmosphere", "Good coffee"],
- },
- {
- name: "Cortado Espresso Bar",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/BFeVvMhACR4VVbN18?g_st=com.google.maps.preview.copy",
- openTime: "09:00",
- closeTime: "00:00",
- studyScore: 9,
- priceRange: "$$$",
- comments: ["Quick service", "Cozy atmosphere", "Beautiful garden"],
- },
- {
- name: "Narin Eatery",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/H6qucM67hn5eTEun7?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "00:00",
- studyScore: 6,
- priceRange: "$$",
- comments: ["Free parking", "Quality food", "Good pastries and coffee"],
- },
- {
- name: "Loof Coffee & Shopping",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/5dnhN7viDGHpnUKv5?g_st=com.google.maps.preview.copy",
- openTime: "8:00",
- closeTime: "00:00",
- studyScore: 9,
- priceRange: "$$$",
- comments: ["Lovely staff", "Good coffee", "Homemade pastries"],
- },
- {
- name: "Coffee Corner Cakes",
- location: "Salamis Road",
- googleMapsUrl:
- "https://maps.app.goo.gl/N93U41z7nC3MBmVf9?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "00:00",
- studyScore: 7,
- priceRange: "$$$",
- comments: ["Lovely staff", "Good coffee", "Meeting room available"],
- },
- {
- name: "MOC Ingate",
- location: "Ingate Hotel",
- googleMapsUrl:
- "https://maps.app.goo.gl/N93U41z7nC3MBmVf9?g_st=com.google.maps.preview.copy",
- openTime: "08:00",
- closeTime: "00:00",
- studyScore: 10,
- priceRange: "$$$",
- comments: ["Lovely staff", "Good coffee", "Friendly staff"],
- },
-];
-
export default function page() {
-
-
return (
-
-
-
- Back to Home
-
-
Cafes near EMU
-
- {cafes.map((cafe, index) => (
-
-
{cafe.name}
-
-
-
-
- {cafe.location}
-
-
-
-
- {cafe.openTime} - {cafe.closeTime}
-
-
-
- {cafe.priceRange}
-
-
- Study Score:
- = 8
- ? "bg-green-100 text-green-800"
- : cafe.studyScore >= 5
- ? "bg-yellow-100 text-yellow-800"
- : "bg-red-100 text-red-800"
- }`}
- >
- {cafe.studyScore}/10
-
-
-
-
-
- Comments
-
-
- {cafe.comments.map((comment, i) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/clubs/ClubsData.tsx b/src/app/(categories)/(en)/clubs/ClubsData.tsx
new file mode 100644
index 0000000..f5e4732
--- /dev/null
+++ b/src/app/(categories)/(en)/clubs/ClubsData.tsx
@@ -0,0 +1,523 @@
+import { Users, ExternalLink, Activity } from "lucide-react";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { getClubs } from "@/actions/club.actions";
+
+interface Club {
+ id: number;
+ name: string;
+ memberSize?: "low" | "mid" | "high";
+ link?: string;
+ activities: string[];
+}
+
+/* const clubs: Club[] = [
+ {
+ id: 1,
+ name: "EMU Photography Club",
+ memberSize: "low",
+ activities: ["Photo walks", "Exhibitions", "Workshops"],
+ },
+ {
+ id: 2,
+ name: "EMU Robotics Club",
+ memberSize: "low",
+ activities: ["Robot building", "Coding sessions", "Competitions"],
+ },
+ {
+ id: 3,
+ name: "EMU Literature Club",
+ memberSize: "low",
+ activities: ["Book discussions", "Writing workshops", "Poetry nights"],
+ },
+ {
+ id: 4,
+ name: "Software & AI Development Club",
+ memberSize: "high",
+ link: "https://www.instagram.com/emusoft.ai?igsh=cWJiaHljMGNjaG03",
+ activities: ["Hackathons", "Seminars", "Workshops"],
+ },
+ {
+ id: 5,
+ name: "AIESEC",
+ memberSize: "high",
+ link: "https://www.instagram.com/easternmediterranean_ewa?igsh=ejJmeDBvZnc0bXM5",
+ activities: [
+ "Leadership workshops",
+ "International internships",
+ "Community projects",
+ ],
+ },
+ {
+ id: 6,
+ name: "Anime Club",
+ memberSize: "low",
+ activities: ["Anime screenings", "Manga discussions", "Cosplay events"],
+ },
+ {
+ id: 7,
+ name: "Astronomy and Space Sciences Club",
+ memberSize: "mid",
+ link: "https://www.instagram.com/emu.astronomyclub?igsh=MWlvcnJ2b2piNDZ5Mg==",
+ activities: ["Stargazing nights", "Space seminars", "Telescope workshops"],
+ },
+ {
+ id: 8,
+ name: "Atatürk Ideology Club",
+ memberSize: "low",
+ activities: ["Historical talks", "National day celebrations", "Debates"],
+ },
+ {
+ id: 9,
+ name: "Flag Football Club",
+ memberSize: "low",
+ activities: [
+ "Practice sessions",
+ "Inter-university matches",
+ "Team-building events",
+ ],
+ },
+ {
+ id: 10,
+ name: "Beşiktaş Fan Club",
+ memberSize: "high",
+ activities: ["Match viewings", "Fan gatherings", "Team-support activities"],
+ },
+ {
+ id: 11,
+ name: "Science and Philosophy Club",
+ memberSize: "low",
+ activities: [
+ "Thought experiments",
+ "Philosophical debates",
+ "Scientific talks",
+ ],
+ },
+ {
+ id: 12,
+ name: "IT Club",
+ memberSize: "low",
+ activities: [
+ "Tech seminars",
+ "Coding hackathons",
+ "Software development challenges",
+ ],
+ },
+ {
+ id: 13,
+ name: "EMU Search & Rescue Club",
+ memberSize: "low",
+ activities: [
+ "Search and rescue training",
+ "Emergency drills",
+ "Public safety awareness events",
+ ],
+ },
+ {
+ id: 14,
+ name: "EMU Scientific Research Community",
+ memberSize: "low",
+ activities: [
+ "Research projects",
+ "Workshops",
+ "Seminars on scientific research",
+ ],
+ },
+ {
+ id: 15,
+ name: "EMU Dent Club",
+ memberSize: "mid",
+ activities: [
+ "Dental care workshops",
+ "Community dental health projects",
+ "Guest lectures",
+ ],
+ },
+ {
+ id: 16,
+ name: "EMU Sustainable Development Goals Club",
+ memberSize: "low",
+ activities: [
+ "SDG workshops",
+ "Environmental campaigns",
+ "Community development projects",
+ ],
+ },
+ {
+ id: 17,
+ name: "Dance Community",
+ memberSize: "high",
+ activities: ["Dance practice sessions", "Dance competitions", "Workshops"],
+ },
+ {
+ id: 18,
+ name: "Mountaineering and Nature Sports Club",
+ memberSize: "low",
+ activities: ["Hiking", "Camping trips", "Climbing training"],
+ },
+ {
+ id: 19,
+ name: "Economics and Finance Club",
+ memberSize: "low",
+ activities: [
+ "Economics seminars",
+ "Finance workshops",
+ "Case study competitions",
+ ],
+ },
+ {
+ id: 20,
+ name: "Electronic Sports Club",
+ memberSize: "high",
+ activities: ["E-sports tournaments", "Gaming workshops", "LAN parties"],
+ },
+ {
+ id: 21,
+ name: "Industrial Engineering Club",
+ memberSize: "high",
+ activities: ["Engineering workshops", "Seminars", "Competitions"],
+ },
+ {
+ id: 22,
+ name: "Fantastic Role Play Club",
+ memberSize: "low",
+ activities: ["Role-playing games", "Game nights", "Fantasy discussions"],
+ },
+ {
+ id: 23,
+ name: "Fenerbahçe Fan Club",
+ memberSize: "high",
+ activities: [
+ "Match viewings",
+ "Fan gatherings",
+ "Merchandise distribution",
+ ],
+ },
+ {
+ id: 24,
+ name: "Idea and Debate Club",
+ memberSize: "low",
+ activities: [
+ "Debates",
+ "Idea exchange sessions",
+ "Public speaking workshops",
+ ],
+ },
+ {
+ id: 25,
+ name: "Photography Club",
+ memberSize: "low",
+ activities: ["Photography walks", "Exhibitions", "Workshops"],
+ },
+ {
+ id: 26,
+ name: "Gastronomy Club",
+ memberSize: "mid",
+ activities: [
+ "Cooking workshops",
+ "Culinary competitions",
+ "Guest chef events",
+ ],
+ },
+ {
+ id: 27,
+ name: "Genetics Club",
+ memberSize: "low",
+ activities: ["Genetics workshops", "Seminars", "Research discussions"],
+ },
+ {
+ id: 28,
+ name: "Entrepreneurship Club",
+ memberSize: "high",
+ activities: [
+ "Business plan competitions",
+ "Networking events",
+ "Entrepreneurship workshops",
+ ],
+ },
+ {
+ id: 29,
+ name: "Fine Arts Club",
+ memberSize: "low",
+ activities: ["Art exhibitions", "Workshops", "Art appreciation sessions"],
+ },
+ {
+ id: 30,
+ name: "Folk Dance Community",
+ memberSize: "low",
+ activities: ["Dance practices", "Performances", "Workshops"],
+ },
+ {
+ id: 31,
+ name: "Animal Welfare Club",
+ memberSize: "low",
+ activities: [
+ "Animal rescue projects",
+ "Awareness campaigns",
+ "Fundraising events",
+ ],
+ },
+ {
+ id: 32,
+ name: "Nursing Club",
+ memberSize: "low",
+ activities: ["Healthcare workshops", "Community health drives", "Seminars"],
+ },
+ {
+ id: 33,
+ name: "Law Club",
+ memberSize: "mid",
+ activities: ["Mock trials", "Law seminars", "Case studies"],
+ },
+ {
+ id: 34,
+ name: "Red Crescent Student Club",
+ memberSize: "high",
+ activities: [
+ "Blood donation campaigns",
+ "First aid training",
+ "Humanitarian projects",
+ ],
+ },
+ {
+ id: 35,
+ name: "Mathematics Club",
+ memberSize: "mid",
+ activities: ["Math puzzles", "Seminars", "Workshops"],
+ },
+ {
+ id: 36,
+ name: "Media and Communication Club",
+ memberSize: "low",
+ activities: [
+ "Media workshops",
+ "Guest lectures",
+ "Content creation projects",
+ ],
+ },
+ {
+ id: 37,
+ name: "Model United Nations Club",
+ memberSize: "high",
+ activities: ["MUN conferences", "Debates", "Workshops"],
+ },
+ {
+ id: 38,
+ name: "Music Club",
+ memberSize: "low",
+ activities: ["Music sessions", "Concerts", "Workshops"],
+ },
+ {
+ id: 39,
+ name: "Archery Club",
+ memberSize: "low",
+ activities: ["Practice sessions", "Competitions", "Workshops"],
+ },
+ {
+ id: 40,
+ name: "Game Design and Development Community",
+ memberSize: "mid",
+ activities: ["Game jams", "Workshops", "Coding sessions"],
+ },
+ {
+ id: 41,
+ name: "Psychology Students Club",
+ memberSize: "mid",
+ activities: ["Psychology workshops", "Seminars", "Research discussions"],
+ },
+ {
+ id: 42,
+ name: "Psychological Counseling and Guidance Club",
+ memberSize: "low",
+ activities: [
+ "Counseling workshops",
+ "Mental health awareness campaigns",
+ "Group therapy sessions",
+ ],
+ },
+ {
+ id: 43,
+ name: "Chess Club",
+ memberSize: "low",
+ activities: [
+ "Chess tournaments",
+ "Practice sessions",
+ "Strategy workshops",
+ ],
+ },
+ {
+ id: 44,
+ name: "Cinema Club",
+ memberSize: "low",
+ activities: [
+ "Movie screenings",
+ "Film discussions",
+ "Film analysis workshops",
+ ],
+ },
+ {
+ id: 45,
+ name: "Underwater Sports Club",
+ memberSize: "low",
+ activities: [
+ "Diving trips",
+ "Scuba diving lessons",
+ "Marine conservation projects",
+ ],
+ },
+ {
+ id: 46,
+ name: "Design Club",
+ memberSize: "low",
+ activities: ["Design workshops", "Portfolio reviews", "Creative projects"],
+ },
+ {
+ id: 47,
+ name: "Theatre Community",
+ memberSize: "low",
+ activities: [
+ "Drama workshops",
+ "Play performances",
+ "Theatre competitions",
+ ],
+ },
+ {
+ id: 48,
+ name: "Tourism Club",
+ memberSize: "low",
+ activities: ["Tourism seminars", "Field trips", "Hospitality workshops"],
+ },
+ {
+ id: 49,
+ name: "International Relations Club",
+ memberSize: "low",
+ activities: [
+ "Global issues seminars",
+ "Diplomacy workshops",
+ "Guest lectures",
+ ],
+ },
+ {
+ id: 50,
+ name: "Unicorn LGBT Club",
+ memberSize: "low",
+ activities: [
+ "LGBTQ+ rights awareness campaigns",
+ "Support group meetings",
+ "Pride events",
+ ],
+ },
+ {
+ id: 51,
+ name: "Swimming Club",
+ memberSize: "low",
+ activities: ["Swimming lessons", "Competitions", "Training sessions"],
+ },
+ {
+ id: 52,
+ name: "ultrAslan EMU",
+ memberSize: "high",
+ activities: ["Match viewings", "Fan gatherings", "Sports events"],
+ },
+ {
+ id: 53,
+ name: "Environment and Natural Sciences Club",
+ memberSize: "low",
+ activities: [
+ "Environmental cleanups",
+ "Eco-awareness campaigns",
+ "Nature walks",
+ ],
+ },
+ {
+ id: 54,
+ name: "Children's Rights Club",
+ memberSize: "mid",
+ activities: [
+ "Children's rights awareness workshops",
+ "Fundraising events",
+ "School outreach programs",
+ ],
+ },
+ {
+ id: 55,
+ name: "Special Education Club",
+ memberSize: "low",
+ activities: [
+ "Inclusive education workshops",
+ "Special needs awareness campaigns",
+ "Community outreach",
+ ],
+ },
+]; */
+
+export default async function ClubsData({ lang }: { lang?: "en" | "tr" }) {
+ const clubs: Club[] = await getClubs();
+
+ if (!clubs || !clubs.length) {
+ return ;
+ }
+
+ return (
+ <>
+
+ {clubs.map((club) => (
+
+
+ {club.name}
+
+
+ {club.memberSize && (
+
+
+ {club.memberSize === "low" && }
+ {club.memberSize === "mid" && (
+ <>
+
+
+ >
+ )}
+ {club.memberSize === "high" && (
+ <>
+
+
+
+ >
+ )}
+
+ )}
+ {club.link && (
+
+
+
+ Club Page
+
+
+ )}
+ {club.activities.length > 0 && (
+
+
+
+ Activities
+
+
+ {club.activities.map((activity, index) => (
+ {activity}
+ ))}
+
+
+ )}
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app/(categories)/(en)/clubs/page.tsx b/src/app/(categories)/(en)/clubs/page.tsx
index 1714546..62ccd19 100644
--- a/src/app/(categories)/(en)/clubs/page.tsx
+++ b/src/app/(categories)/(en)/clubs/page.tsx
@@ -1,530 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, Users, ExternalLink, Activity } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import ClubsData from "./ClubsData";
export const metadata: Metadata = {
title: "Clubs",
};
-interface Club {
- id: number;
- name: string;
- memberSize?: "low" | "mid" | "high";
- link?: string;
- activities: string[];
-}
-
-const clubs: Club[] = [
- {
- id: 1,
- name: "EMU Photography Club",
- memberSize: "low",
- activities: ["Photo walks", "Exhibitions", "Workshops"],
- },
- {
- id: 2,
- name: "EMU Robotics Club",
- memberSize: "low",
- activities: ["Robot building", "Coding sessions", "Competitions"],
- },
- {
- id: 3,
- name: "EMU Literature Club",
- memberSize: "low",
- activities: ["Book discussions", "Writing workshops", "Poetry nights"],
- },
- {
- id: 4,
- name: "Software & AI Development Club",
- memberSize: "high",
- link: "https://www.instagram.com/emusoft.ai?igsh=cWJiaHljMGNjaG03",
- activities: ["Hackathons", "Seminars", "Workshops"],
- },
- {
- id: 5,
- name: "AIESEC",
- memberSize: "high",
- link: "https://www.instagram.com/easternmediterranean_ewa?igsh=ejJmeDBvZnc0bXM5",
- activities: [
- "Leadership workshops",
- "International internships",
- "Community projects",
- ],
- },
- {
- id: 6,
- name: "Anime Club",
- memberSize: "low",
- activities: ["Anime screenings", "Manga discussions", "Cosplay events"],
- },
- {
- id: 7,
- name: "Astronomy and Space Sciences Club",
- memberSize: "mid",
- link: "https://www.instagram.com/emu.astronomyclub?igsh=MWlvcnJ2b2piNDZ5Mg==",
- activities: ["Stargazing nights", "Space seminars", "Telescope workshops"],
- },
- {
- id: 8,
- name: "Atatürk Ideology Club",
- memberSize: "low",
- activities: ["Historical talks", "National day celebrations", "Debates"],
- },
- {
- id: 9,
- name: "Flag Football Club",
- memberSize: "low",
- activities: [
- "Practice sessions",
- "Inter-university matches",
- "Team-building events",
- ],
- },
- {
- id: 10,
- name: "Beşiktaş Fan Club",
- memberSize: "high",
- activities: ["Match viewings", "Fan gatherings", "Team-support activities"],
- },
- {
- id: 11,
- name: "Science and Philosophy Club",
- memberSize: "low",
- activities: [
- "Thought experiments",
- "Philosophical debates",
- "Scientific talks",
- ],
- },
- {
- id: 12,
- name: "IT Club",
- memberSize: "low",
- activities: [
- "Tech seminars",
- "Coding hackathons",
- "Software development challenges",
- ],
- },
- {
- id: 13,
- name: "EMU Search & Rescue Club",
- memberSize: "low",
- activities: [
- "Search and rescue training",
- "Emergency drills",
- "Public safety awareness events",
- ],
- },
- {
- id: 14,
- name: "EMU Scientific Research Community",
- memberSize: "low",
- activities: [
- "Research projects",
- "Workshops",
- "Seminars on scientific research",
- ],
- },
- {
- id: 15,
- name: "EMU Dent Club",
- memberSize: "mid",
- activities: [
- "Dental care workshops",
- "Community dental health projects",
- "Guest lectures",
- ],
- },
- {
- id: 16,
- name: "EMU Sustainable Development Goals Club",
- memberSize: "low",
- activities: [
- "SDG workshops",
- "Environmental campaigns",
- "Community development projects",
- ],
- },
- {
- id: 17,
- name: "Dance Community",
- memberSize: "high",
- activities: ["Dance practice sessions", "Dance competitions", "Workshops"],
- },
- {
- id: 18,
- name: "Mountaineering and Nature Sports Club",
- memberSize: "low",
- activities: ["Hiking", "Camping trips", "Climbing training"],
- },
- {
- id: 19,
- name: "Economics and Finance Club",
- memberSize: "low",
- activities: [
- "Economics seminars",
- "Finance workshops",
- "Case study competitions",
- ],
- },
- {
- id: 20,
- name: "Electronic Sports Club",
- memberSize: "high",
- activities: ["E-sports tournaments", "Gaming workshops", "LAN parties"],
- },
- {
- id: 21,
- name: "Industrial Engineering Club",
- memberSize: "high",
- activities: ["Engineering workshops", "Seminars", "Competitions"],
- },
- {
- id: 22,
- name: "Fantastic Role Play Club",
- memberSize: "low",
- activities: ["Role-playing games", "Game nights", "Fantasy discussions"],
- },
- {
- id: 23,
- name: "Fenerbahçe Fan Club",
- memberSize: "high",
- activities: [
- "Match viewings",
- "Fan gatherings",
- "Merchandise distribution",
- ],
- },
- {
- id: 24,
- name: "Idea and Debate Club",
- memberSize: "low",
- activities: [
- "Debates",
- "Idea exchange sessions",
- "Public speaking workshops",
- ],
- },
- {
- id: 25,
- name: "Photography Club",
- memberSize: "low",
- activities: ["Photography walks", "Exhibitions", "Workshops"],
- },
- {
- id: 26,
- name: "Gastronomy Club",
- memberSize: "mid",
- activities: [
- "Cooking workshops",
- "Culinary competitions",
- "Guest chef events",
- ],
- },
- {
- id: 27,
- name: "Genetics Club",
- memberSize: "low",
- activities: ["Genetics workshops", "Seminars", "Research discussions"],
- },
- {
- id: 28,
- name: "Entrepreneurship Club",
- memberSize: "high",
- activities: [
- "Business plan competitions",
- "Networking events",
- "Entrepreneurship workshops",
- ],
- },
- {
- id: 29,
- name: "Fine Arts Club",
- memberSize: "low",
- activities: ["Art exhibitions", "Workshops", "Art appreciation sessions"],
- },
- {
- id: 30,
- name: "Folk Dance Community",
- memberSize: "low",
- activities: ["Dance practices", "Performances", "Workshops"],
- },
- {
- id: 31,
- name: "Animal Welfare Club",
- memberSize: "low",
- activities: [
- "Animal rescue projects",
- "Awareness campaigns",
- "Fundraising events",
- ],
- },
- {
- id: 32,
- name: "Nursing Club",
- memberSize: "low",
- activities: ["Healthcare workshops", "Community health drives", "Seminars"],
- },
- {
- id: 33,
- name: "Law Club",
- memberSize: "mid",
- activities: ["Mock trials", "Law seminars", "Case studies"],
- },
- {
- id: 34,
- name: "Red Crescent Student Club",
- memberSize: "high",
- activities: [
- "Blood donation campaigns",
- "First aid training",
- "Humanitarian projects",
- ],
- },
- {
- id: 35,
- name: "Mathematics Club",
- memberSize: "mid",
- activities: ["Math puzzles", "Seminars", "Workshops"],
- },
- {
- id: 36,
- name: "Media and Communication Club",
- memberSize: "low",
- activities: [
- "Media workshops",
- "Guest lectures",
- "Content creation projects",
- ],
- },
- {
- id: 37,
- name: "Model United Nations Club",
- memberSize: "high",
- activities: ["MUN conferences", "Debates", "Workshops"],
- },
- {
- id: 38,
- name: "Music Club",
- memberSize: "low",
- activities: ["Music sessions", "Concerts", "Workshops"],
- },
- {
- id: 39,
- name: "Archery Club",
- memberSize: "low",
- activities: ["Practice sessions", "Competitions", "Workshops"],
- },
- {
- id: 40,
- name: "Game Design and Development Community",
- memberSize: "mid",
- activities: ["Game jams", "Workshops", "Coding sessions"],
- },
- {
- id: 41,
- name: "Psychology Students Club",
- memberSize: "mid",
- activities: ["Psychology workshops", "Seminars", "Research discussions"],
- },
- {
- id: 42,
- name: "Psychological Counseling and Guidance Club",
- memberSize: "low",
- activities: [
- "Counseling workshops",
- "Mental health awareness campaigns",
- "Group therapy sessions",
- ],
- },
- {
- id: 43,
- name: "Chess Club",
- memberSize: "low",
- activities: [
- "Chess tournaments",
- "Practice sessions",
- "Strategy workshops",
- ],
- },
- {
- id: 44,
- name: "Cinema Club",
- memberSize: "low",
- activities: [
- "Movie screenings",
- "Film discussions",
- "Film analysis workshops",
- ],
- },
- {
- id: 45,
- name: "Underwater Sports Club",
- memberSize: "low",
- activities: [
- "Diving trips",
- "Scuba diving lessons",
- "Marine conservation projects",
- ],
- },
- {
- id: 46,
- name: "Design Club",
- memberSize: "low",
- activities: ["Design workshops", "Portfolio reviews", "Creative projects"],
- },
- {
- id: 47,
- name: "Theatre Community",
- memberSize: "low",
- activities: [
- "Drama workshops",
- "Play performances",
- "Theatre competitions",
- ],
- },
- {
- id: 48,
- name: "Tourism Club",
- memberSize: "low",
- activities: ["Tourism seminars", "Field trips", "Hospitality workshops"],
- },
- {
- id: 49,
- name: "International Relations Club",
- memberSize: "low",
- activities: [
- "Global issues seminars",
- "Diplomacy workshops",
- "Guest lectures",
- ],
- },
- {
- id: 50,
- name: "Unicorn LGBT Club",
- memberSize: "low",
- activities: [
- "LGBTQ+ rights awareness campaigns",
- "Support group meetings",
- "Pride events",
- ],
- },
- {
- id: 51,
- name: "Swimming Club",
- memberSize: "low",
- activities: ["Swimming lessons", "Competitions", "Training sessions"],
- },
- {
- id: 52,
- name: "ultrAslan EMU",
- memberSize: "high",
- activities: ["Match viewings", "Fan gatherings", "Sports events"],
- },
- {
- id: 53,
- name: "Environment and Natural Sciences Club",
- memberSize: "low",
- activities: [
- "Environmental cleanups",
- "Eco-awareness campaigns",
- "Nature walks",
- ],
- },
- {
- id: 54,
- name: "Children's Rights Club",
- memberSize: "mid",
- activities: [
- "Children's rights awareness workshops",
- "Fundraising events",
- "School outreach programs",
- ],
- },
- {
- id: 55,
- name: "Special Education Club",
- memberSize: "low",
- activities: [
- "Inclusive education workshops",
- "Special needs awareness campaigns",
- "Community outreach",
- ],
- },
-];
-
export default function page() {
return (
-
-
-
- Back to Home
-
-
EMU Clubs
-
- {clubs.map((club) => (
-
-
- {club.name}
-
-
- {club.memberSize && (
-
-
- {club.memberSize === "low" && }
- {club.memberSize === "mid" && (
- <>
-
-
- >
- )}
- {club.memberSize === "high" && (
- <>
-
-
-
- >
- )}
-
- )}
- {club.link && (
-
-
-
- Club Page
-
-
- )}
- {club.activities.length > 0 && (
-
-
-
- Activities
-
-
- {club.activities.map((activity, index) => (
- {activity}
- ))}
-
-
- )}
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/communities/CommunitiesData.tsx b/src/app/(categories)/(en)/communities/CommunitiesData.tsx
new file mode 100644
index 0000000..3e07561
--- /dev/null
+++ b/src/app/(categories)/(en)/communities/CommunitiesData.tsx
@@ -0,0 +1,98 @@
+import { Users } from "lucide-react";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { getCommunities } from "@/actions/community.actions";
+import FollowUpButton from "@/components/ui/FollowUpButton/FollowUpButton";
+
+interface Community {
+ id: number;
+ name: string;
+ platform: string;
+ explanation: string;
+ link: string;
+}
+
+/* const communities: Community[] = [
+ {
+ id: 1,
+ name: "UltrAslan DAÜ",
+ platform: "All",
+ explanation:
+ "A vibrant community for Galatasaray fans at EMU, where members come together to support their favorite football club, share updates, and organize events.",
+ link: "https://bento.me/ultraslanunidau?fbclid=PAZXh0bgNhZW0CMTEAAaZHV2CbKzeLeEX9B3uofXFnM7PzBJj0tmoxwVL7x_b5aDDo0hu-8841zlc_aem_xkF3uhrH73hU0yIV11VRBA",
+ },
+ {
+ id: 2,
+ name: "DaüFeb",
+ platform: "Instagram",
+ explanation:
+ "An Instagram-based community for Fenerbahçe fans at EMU, providing updates, news, and discussions on everything related to the club.",
+ link: "https://www.instagram.com/daufeb2001?igsh=MW4xdnhwNDdraWcyeQ==",
+ },
+ {
+ id: 3,
+ name: "DaüBjk",
+ platform: "Instagram",
+ explanation:
+ "A space for Beşiktaş fans at EMU to connect, share news, and organize fan-related activities through Instagram.",
+ link: "https://www.instagram.com/daubjk?igsh=MWl4am1weDB1a3N6eA==",
+ },
+ {
+ id: 4,
+ name: "Emuprovince",
+ platform: "WhatsApp",
+ explanation:
+ "Join our WhatsApp groups to discuss various topics, ranging from academic subjects to social events, and meet like-minded peers from EMU.",
+ link: "https://chat.whatsapp.com/DuxUqjZcYEQ2HpGP91dM7v",
+ },
+ {
+ id: 5,
+ name: "EMU E-Sports",
+ platform: "Discord",
+ explanation:
+ "A Discord server for gamers and e-sports enthusiasts at EMU. Participate in gaming events, tournaments, and discussions on your favorite e-sports titles.",
+ link: "https://discord.com/invite/hyu9jF8",
+ },
+ {
+ id: 6,
+ name: "EMU Software & AI",
+ platform: "All",
+ explanation:
+ "A community dedicated to software development and artificial intelligence at EMU. Join discussions, collaborate on projects, and stay updated on the latest tech trends.",
+ link: "https://linktr.ee/emusoft.ai",
+ },
+]; */
+
+export default async function CommunitiesData({
+ lang,
+}: {
+ lang?: "en" | "tr";
+}) {
+ const communities: Community[] = await getCommunities();
+
+ if (!communities || !communities.length) {
+ return ;
+ }
+ return (
+
+ {communities.map((community) => (
+
+
+
+ {community.name}
+
+
+ Platform: {community.platform}
+
+
{community.explanation}
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/communities/page.tsx b/src/app/(categories)/(en)/communities/page.tsx
index 7dcabef..2efe549 100644
--- a/src/app/(categories)/(en)/communities/page.tsx
+++ b/src/app/(categories)/(en)/communities/page.tsx
@@ -1,110 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Users } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import CommunitiesData from "./CommunitiesData";
export const metadata: Metadata = {
title: "Communuties",
};
-interface Community {
- id: number;
- name: string;
- platform: string;
- explanation: string;
- link: string;
-}
-
-const communities: Community[] = [
- {
- id: 1,
- name: "UltrAslan DAÜ",
- platform: "All",
- explanation:
- "A vibrant community for Galatasaray fans at EMU, where members come together to support their favorite football club, share updates, and organize events.",
- link: "https://bento.me/ultraslanunidau?fbclid=PAZXh0bgNhZW0CMTEAAaZHV2CbKzeLeEX9B3uofXFnM7PzBJj0tmoxwVL7x_b5aDDo0hu-8841zlc_aem_xkF3uhrH73hU0yIV11VRBA",
- },
- {
- id: 2,
- name: "DaüFeb",
- platform: "Instagram",
- explanation:
- "An Instagram-based community for Fenerbahçe fans at EMU, providing updates, news, and discussions on everything related to the club.",
- link: "https://www.instagram.com/daufeb2001?igsh=MW4xdnhwNDdraWcyeQ==",
- },
- {
- id: 3,
- name: "DaüBjk",
- platform: "Instagram",
- explanation:
- "A space for Beşiktaş fans at EMU to connect, share news, and organize fan-related activities through Instagram.",
- link: "https://www.instagram.com/daubjk?igsh=MWl4am1weDB1a3N6eA==",
- },
- {
- id: 4,
- name: "Emuprovince",
- platform: "WhatsApp",
- explanation:
- "Join our WhatsApp groups to discuss various topics, ranging from academic subjects to social events, and meet like-minded peers from EMU.",
- link: "https://chat.whatsapp.com/DuxUqjZcYEQ2HpGP91dM7v",
- },
- {
- id: 5,
- name: "EMU E-Sports",
- platform: "Discord",
- explanation:
- "A Discord server for gamers and e-sports enthusiasts at EMU. Participate in gaming events, tournaments, and discussions on your favorite e-sports titles.",
- link: "https://discord.com/invite/hyu9jF8",
- },
- {
- id: 6,
- name: "EMU Software & AI",
- platform: "All",
- explanation:
- "A community dedicated to software development and artificial intelligence at EMU. Join discussions, collaborate on projects, and stay updated on the latest tech trends.",
- link: "https://linktr.ee/emusoft.ai",
- },
-];
-
export default function CommunityPage() {
return (
-
-
-
- Back to Home
-
-
EMU Communities
-
-
- {communities.map((community) => (
-
-
-
- {community.name}
-
-
- Platform:{" "}
- {community.platform}
-
-
{community.explanation}
-
- Join Community
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/discounts/DiscountsData.tsx b/src/app/(categories)/(en)/discounts/DiscountsData.tsx
new file mode 100644
index 0000000..f0eed60
--- /dev/null
+++ b/src/app/(categories)/(en)/discounts/DiscountsData.tsx
@@ -0,0 +1,64 @@
+import { ExternalLink, MapPin, Tag } from "lucide-react";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { getDiscounts } from "@/actions/discount.actions";
+
+interface Discount {
+ id: number;
+ name: string;
+ place: string;
+ googleMapsUrl: string;
+ discountPrice: number;
+ previousPrice: number;
+}
+
+const discounts: Discount[] = [
+ {
+ id: 1,
+ name: "Itimat Student Deal",
+ place: "Anit Roundabout",
+ googleMapsUrl: "https://maps.app.goo.gl/Z2xcy5EyqHSLnG8t5",
+ discountPrice: 150,
+ previousPrice: 160,
+ },
+];
+
+export default async function DiscountsData({ lang }: { lang?: "en" | "tr" }) {
+ const discounts: Discount[] = await getDiscounts();
+
+ if (!discounts || !discounts.length) {
+ return ;
+ }
+ return (
+
+ {discounts.map((discount) => (
+
+
+
+ {discount.name}
+
+
+
+
+ {discount.place}
+
+
+
+
+ Now: {discount.discountPrice} TL
+
+ Was: {discount.previousPrice} TL
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/discounts/page.tsx b/src/app/(categories)/(en)/discounts/page.tsx
index 3e26bf7..b760d0e 100644
--- a/src/app/(categories)/(en)/discounts/page.tsx
+++ b/src/app/(categories)/(en)/discounts/page.tsx
@@ -1,77 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, MapPin, Tag } from "lucide-react";
-
import type { Metadata } from "next";
+import DiscountsData from "./DiscountsData";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
export const metadata: Metadata = {
title: "Discounts",
};
-interface Discount {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- discountPrice: number;
- previousPrice: number;
-}
-
-const discounts: Discount[] = [
- {
- id: 1,
- name: "Itimat Student Deal",
- place: "Anit Roundabout",
- googleMapsUrl: "https://maps.app.goo.gl/Z2xcy5EyqHSLnG8t5",
- discountPrice: 150,
- previousPrice: 160,
- },
-];
-
export default function StudentDiscountsPage() {
return (
-
-
-
- Back to Home
-
-
- Student Discounts
-
-
-
- {discounts.map((discount) => (
-
-
-
- {discount.name}
-
-
-
-
- {discount.place}
-
-
-
-
- Now: {discount.discountPrice} TL
-
- Was: {discount.previousPrice} TL
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/dormitories/DormitoriesData.tsx b/src/app/(categories)/(en)/dormitories/DormitoriesData.tsx
new file mode 100644
index 0000000..b3fd634
--- /dev/null
+++ b/src/app/(categories)/(en)/dormitories/DormitoriesData.tsx
@@ -0,0 +1,244 @@
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { getDormitories } from "@/actions/dormitory.actions";
+
+import {
+ MapPin,
+ Banknote,
+ ExternalLink,
+ Home,
+ MessageSquare,
+} from "lucide-react";
+
+interface Dormitory {
+ id: number;
+ name: string;
+ place: string;
+ googleMapsUrl: string;
+ priceRange: "$" | "$$" | "$$$";
+ officialPageUrl: string;
+ facilities: string[];
+ comments: string[];
+}
+
+/* const dormitories = [
+ {
+ id: 1,
+ name: "Alfam Student Dormitory",
+ place: "North Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/PhiKd4k6wJW1DDsb7",
+ priceRange: "$$$",
+ officialPageUrl: "https://www.alfamcyprus.com/",
+ facilities: ["Wi-Fi", "Air Conditioning", "Gym", "Laundry"],
+ comments: ["Modern and clean", "Great location"],
+ },
+ {
+ id: 2,
+ name: "Ugursal Student Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/ub9yUoV87SEhQcjr7",
+ priceRange: "$$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/ugursal",
+ facilities: ["Wi-Fi", "Shared Kitchen", "Study Rooms"],
+ comments: ["Affordable", "Good community"],
+ },
+ {
+ id: 3,
+ name: "Longson Student Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/WtCYaZHgE8zXDd4B7",
+ priceRange: "$$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/longson",
+ facilities: ["Wi-Fi", "Air Conditioning", "Shared Bathrooms"],
+ comments: ["Convenient location", "Cafeteria", "Student kitchens"],
+ },
+ {
+ id: 4,
+ name: "Inn Dorm Student Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://goo.gl/maps/inn-dorm",
+ priceRange: "$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/inn-dorm",
+ facilities: ["Cafeteria", "Interior Garden", "Sea View Rooms"],
+ comments: ["Basic but comfortable", "Friendly staff"],
+ },
+ {
+ id: 5,
+ name: "Prime Living Student Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/fmCqkQbUYD4nZDkVA",
+ priceRange: "$$$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/prime-living",
+ facilities: ["Electric generator", "Gym", "Copy center"],
+ comments: ["Safe", "Top-notch facilities"],
+ },
+ {
+ id: 6,
+ name: "Ramen Student Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/Ajeusbf9xM47aqEx8",
+ priceRange: "$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/ramen",
+ facilities: [
+ "Restaurant",
+ "Exchange Office",
+ "Room cleaning twice per week",
+ ],
+ comments: ["Clean", "Basic amenities"],
+ },
+ {
+ id: 7,
+ name: "Golden Plus Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/nSMZJ1mNJ7SomYPi6",
+ priceRange: "$$",
+ officialPageUrl: "https://www.emu.edu.tr/dormitories/golden-plus",
+ facilities: ["Male/female Seperate Blocks", "Gym", "Project & Study Room"],
+ comments: ["Premium", "Great value"],
+ },
+ {
+ id: 8,
+ name: "Novel Centre Point Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://goo.gl/maps/novel-centre-point",
+ priceRange: "$$$",
+ officialPageUrl: "https://www.emu.edu.tr/dormitories/novel-centre-point",
+ facilities: [
+ "24 hour hot and cold running water",
+ "Room service",
+ "Swimming pool",
+ ],
+ comments: ["Luxurious", "Very comfortable"],
+ },
+ {
+ id: 9,
+ name: "Astra Plus Dormitory",
+ place: "South Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/WTw9d2aJS2BmbJyo7",
+ priceRange: "$$$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/astra-plus",
+ facilities: ["Gym", "Laundry", "Hairdresser"],
+ comments: ["Good facilities", "Great value"],
+ },
+ {
+ id: 10,
+ name: "Pop Art Dormitory",
+ place: "South Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/jqnStSiCQkqAYsgK6",
+ priceRange: "$$$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/pop-art",
+ facilities: ["Gym", "Gloria Jeans", "Cinema"],
+ comments: ["Modern design", "Comfortable"],
+ },
+ {
+ id: 11,
+ name: "Nural Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/U4V1bM42nVWU1xdRA",
+ priceRange: "$$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/nural",
+ facilities: ["Laundry facilities", "Generator", "Fitness Center"],
+ comments: ["Market(7/24)", "Friendly staff"],
+ },
+ {
+ id: 12,
+ name: "Grand Aras Dormitory",
+ place: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/UvcUYZEw6w3ZMttJ8",
+ priceRange: "$$",
+ officialPageUrl:
+ "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/grand-aras",
+ facilities: ["Gym", "Library", "Key Card System"],
+ comments: ["Good location", "Well maintained"],
+ },
+]; */
+
+export default async function DormitoriesData({
+ lang,
+}: {
+ lang?: "en" | "tr";
+}) {
+ const dormitories: Dormitory[] = await getDormitories();
+
+ if (!dormitories || !dormitories.length) {
+ return ;
+ }
+ return (
+
+ {dormitories.map((dorm) => (
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/dormitories/page.tsx b/src/app/(categories)/(en)/dormitories/page.tsx
index e322b36..7eb7363 100644
--- a/src/app/(categories)/(en)/dormitories/page.tsx
+++ b/src/app/(categories)/(en)/dormitories/page.tsx
@@ -1,250 +1,15 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- Banknote,
- ExternalLink,
- Home,
- MessageSquare,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import DormitoriesData from "./DormitoriesData";
export const metadata: Metadata = {
title: "Dormitories",
};
-/* interface Dormitory {
- id: number
- name: string
- place: string
- googleMapsUrl: string
- priceRange: '$' | '$$' | '$$$'
- officialPageUrl: string
- facilities: string[]
- comments: string[]
-} */
-
-const dormitories = [
- {
- id: 1,
- name: "Alfam Student Dormitory",
- place: "North Campus",
- googleMapsUrl: "https://maps.app.goo.gl/PhiKd4k6wJW1DDsb7",
- priceRange: "$$$",
- officialPageUrl: "https://www.alfamcyprus.com/",
- facilities: ["Wi-Fi", "Air Conditioning", "Gym", "Laundry"],
- comments: ["Modern and clean", "Great location"],
- },
- {
- id: 2,
- name: "Ugursal Student Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/ub9yUoV87SEhQcjr7",
- priceRange: "$$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/ugursal",
- facilities: ["Wi-Fi", "Shared Kitchen", "Study Rooms"],
- comments: ["Affordable", "Good community"],
- },
- {
- id: 3,
- name: "Longson Student Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/WtCYaZHgE8zXDd4B7",
- priceRange: "$$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/longson",
- facilities: ["Wi-Fi", "Air Conditioning", "Shared Bathrooms"],
- comments: ["Convenient location", "Cafeteria", "Student kitchens"],
- },
- {
- id: 4,
- name: "Inn Dorm Student Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://goo.gl/maps/inn-dorm",
- priceRange: "$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/inn-dorm",
- facilities: ["Cafeteria", "Interior Garden", "Sea View Rooms"],
- comments: ["Basic but comfortable", "Friendly staff"],
- },
- {
- id: 5,
- name: "Prime Living Student Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/fmCqkQbUYD4nZDkVA",
- priceRange: "$$$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/prime-living",
- facilities: ["Electric generator", "Gym", "Copy center"],
- comments: ["Safe", "Top-notch facilities"],
- },
- {
- id: 6,
- name: "Ramen Student Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/Ajeusbf9xM47aqEx8",
- priceRange: "$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/ramen",
- facilities: [
- "Restaurant",
- "Exchange Office",
- "Room cleaning twice per week",
- ],
- comments: ["Clean", "Basic amenities"],
- },
- {
- id: 7,
- name: "Golden Plus Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/nSMZJ1mNJ7SomYPi6",
- priceRange: "$$",
- officialPageUrl: "https://www.emu.edu.tr/dormitories/golden-plus",
- facilities: ["Male/female Seperate Blocks", "Gym", "Project & Study Room"],
- comments: ["Premium", "Great value"],
- },
- {
- id: 8,
- name: "Novel Centre Point Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://goo.gl/maps/novel-centre-point",
- priceRange: "$$$",
- officialPageUrl: "https://www.emu.edu.tr/dormitories/novel-centre-point",
- facilities: [
- "24 hour hot and cold running water",
- "Room service",
- "Swimming pool",
- ],
- comments: ["Luxurious", "Very comfortable"],
- },
- {
- id: 9,
- name: "Astra Plus Dormitory",
- place: "South Campus",
- googleMapsUrl: "https://maps.app.goo.gl/WTw9d2aJS2BmbJyo7",
- priceRange: "$$$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/astra-plus",
- facilities: ["Gym", "Laundry", "Hairdresser"],
- comments: ["Good facilities", "Great value"],
- },
- {
- id: 10,
- name: "Pop Art Dormitory",
- place: "South Campus",
- googleMapsUrl: "https://maps.app.goo.gl/jqnStSiCQkqAYsgK6",
- priceRange: "$$$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/pop-art",
- facilities: ["Gym", "Gloria Jeans", "Cinema"],
- comments: ["Modern design", "Comfortable"],
- },
- {
- id: 11,
- name: "Nural Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/U4V1bM42nVWU1xdRA",
- priceRange: "$$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/nural",
- facilities: ["Laundry facilities", "Generator", "Fitness Center"],
- comments: ["Market(7/24)", "Friendly staff"],
- },
- {
- id: 12,
- name: "Grand Aras Dormitory",
- place: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/UvcUYZEw6w3ZMttJ8",
- priceRange: "$$",
- officialPageUrl:
- "https://dormitories.emu.edu.tr/en/dormitories/privately-owned-campus-dormitories/grand-aras",
- facilities: ["Gym", "Library", "Key Card System"],
- comments: ["Good location", "Well maintained"],
- },
-];
-
export default function page() {
return (
-
-
-
- Back to Home
-
-
EMU Dormitories
-
- {dormitories.map((dorm) => (
-
-
- {dorm.name}
-
-
-
-
-
- {dorm.place}
-
-
-
-
-
- {dorm.priceRange}
-
-
-
-
- Official Dorm Page
-
-
-
-
-
Facilities:
-
- {dorm.facilities.map((facility, index) => (
- {facility}
- ))}
-
-
-
-
-
- Comments
-
-
- {dorm.comments.map((comment, index) => (
- {comment}
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/entertainment/EntertainmentData.tsx b/src/app/(categories)/(en)/entertainment/EntertainmentData.tsx
new file mode 100644
index 0000000..ca736e6
--- /dev/null
+++ b/src/app/(categories)/(en)/entertainment/EntertainmentData.tsx
@@ -0,0 +1,244 @@
+import { getEntertainments } from "@/actions/entertainment.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { MapPin, Banknote, ExternalLink, MessageSquare } from "lucide-react";
+
+interface Entertainment {
+ id: number;
+ name: string;
+ place: string;
+ googleMapsUrl: string;
+ priceRange: "$" | "$$" | "$$$";
+ comments: string[];
+}
+
+/* const entertainments: Entertainment[] = [
+ {
+ id: 1,
+ name: "BARCODE",
+ place: "Roundabout",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/GvGaSmgWYrKzoUpn8?g_st=com.google.maps.preview.copy",
+ priceRange: "$",
+ comments: ["Convenient location", "Chill atmosphere", "Live music"],
+ },
+ {
+ id: 2,
+ name: "Jooker Live",
+ place: "Roundabout",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/2FeR2bsUdxoqYXie6?g_st=com.google.maps.preview.copy",
+ priceRange: "$$",
+ comments: ["Good music", "Convenient location", "Fun place"],
+ },
+ {
+ id: 3,
+ name: "Q Bar Mağusa",
+ place: "Roundabout",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/Yb4rxVEXGZPgChUd7?g_st=com.google.maps.preview.copy",
+ priceRange: "$",
+ comments: ["Quality cocktail", "Good live music", "Good security"],
+ },
+ {
+ id: 4,
+ name: "Passage N.199",
+ place: "Roundabout",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/qjb9wLoPmGK5ExYd8?g_st=com.google.maps.preview.copy",
+ priceRange: "$$",
+ comments: ["Live music", "Good cocktails", "Premium shisha"],
+ },
+ {
+ id: 5,
+ name: "Shelby Bar",
+ place: "Roundabout",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/9qjzpfxcme1hNThq5?g_st=com.google.maps.preview.copy",
+ priceRange: "$$",
+ comments: ["Convenient location", "Good music", "Alcohol"],
+ },
+ {
+ id: 6,
+ name: "The Shamrock",
+ place: "Kaliland",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/r55fwNEtBGcQCk188?g_st=com.google.maps.preview.copy",
+ priceRange: "$$$",
+ comments: [
+ "Bowling, pool and football matches",
+ "Great foods and cocktails",
+ "Good shisha",
+ ],
+ },
+ {
+ id: 7,
+ name: "De Molay Bar",
+ place: "Walled City",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/4MCJsuxoafFzQBrbA?g_st=com.google.maps.preview.copy",
+ priceRange: "$$",
+ comments: [
+ "Chill and cozy atmosphere",
+ "Good shows and live music",
+ "Quality cocktails",
+ ],
+ },
+ {
+ id: 8,
+ name: "Monks Inn",
+ place: "Walled City",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/GVFWNxBg3jjpRFTQ8?g_st=com.google.maps.preview.copy",
+ priceRange: "$$",
+ comments: [
+ "Premium cocktails",
+ "Chill environment",
+ "Good outside sitting area",
+ ],
+ },
+ {
+ id: 9,
+ name: "Caterina Cornaro House",
+ place: "Walled City",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/BX3zzVKMG63zUDTf8?g_st=com.google.maps.preview.copy",
+ priceRange: "$$$",
+ comments: [
+ "Premium cocktails",
+ "Beautiful atmosphere and environment",
+ "Good location",
+ ],
+ },
+ {
+ id: 10,
+ name: "Hamam Inn Bar",
+ place: "Walled City",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/YqufdNwXCT1kG1bA9?g_st=com.google.maps.preview.copy",
+ priceRange: "$$",
+ comments: [
+ "Live music",
+ "Quality cocktails",
+ "Relaxing outdoor sitting area",
+ ],
+ },
+ {
+ id: 11,
+ name: "42 Café & Bar",
+ place: "Walled City",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/VhnANgDCY5UAhfP3A?g_st=com.google.maps.preview.copy",
+ priceRange: "$",
+ comments: ["Wonderful wall art", "Chill and relaxing environment", "Pool"],
+ },
+ {
+ id: 12,
+ name: "Rave Club",
+ place: "Walled City",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/29jZ8oAKYzqPcH2K8?g_st=com.google.maps.preview.copy",
+ priceRange: "$$",
+ comments: ["Quality music", "Free parking lot", "Good atmosphere"],
+ },
+ {
+ id: 13,
+ name: "Lion’s Garden",
+ place: "Tuzla",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/Fp6biTHNv3QSVCpZ7?g_st=com.google.maps.preview.copy",
+ priceRange: "$$$",
+ comments: ["Good live music", "Quality shows", "Nice staff"],
+ },
+ {
+ id: 14,
+ name: "EMU Beach Club",
+ place: "Tuzla",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/gR4kMz4rD9ThAUWq7?g_st=com.google.maps.preview.copy",
+ priceRange: "$",
+ comments: ["Clean sea", "Good quality foods and service", "Friendly-kind"],
+ },
+ {
+ id: 15,
+ name: "Loof Beach",
+ place: "Glapsides",
+ googleMapsUrl:
+ "https://maps.app.goo.gl/WLA1SxSfe4sYHi61A?g_st=com.google.maps.preview.copy",
+ priceRange: "$$$",
+ comments: [
+ "Clean sea",
+ "Good quality coffee and foods",
+ "Amazing shows and outdoor cinema",
+ ],
+ },
+ {
+ id: 16,
+ name: "Citymall Cinema",
+ place: "Citymall AVM",
+ googleMapsUrl:
+ "https://maps.google.com?q=City%20Mall,%20%C5%9Eht.%20%C4%B0brahim%20Kaz%C4%B1m%20Cd,%20Gazima%C4%9Fusa%2099450&ftid=0x14dfc9c8574dd179:0xa7392eff52e0b638&entry=gps&lucs=,94213531,94224825,94227247,94227248,47071704,47069508,94218641,94203019,47084304,94208458,94208447&g_st=com.google.maps.preview.copy",
+ priceRange: "$$$",
+ comments: [
+ "Good popcorn",
+ "Quality saloons and voice systems",
+ "Friendly-kind",
+ ],
+ },
+]; */
+
+export default async function EntertainmentData({
+ lang,
+}: {
+ lang?: "en" | "tr";
+}) {
+ const entertainments: Entertainment[] = await getEntertainments();
+
+ if (!entertainments || !entertainments.length) {
+ return ;
+ }
+ return (
+
+ {entertainments.map((ent) => (
+
+
+ {ent.name}
+
+
+
+
+
+ {ent.place}
+
+
+
+
+
+ {ent.priceRange}
+
+
+
+
+ {lang === "en" ? "Comments" : "Yorumlar"}
+
+
+ {ent.comments.map((comment, index) => (
+
+ {comment}
+
+ ))}
+
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/entertainment/page.tsx b/src/app/(categories)/(en)/entertainment/page.tsx
index 65191ca..2505b84 100644
--- a/src/app/(categories)/(en)/entertainment/page.tsx
+++ b/src/app/(categories)/(en)/entertainment/page.tsx
@@ -1,257 +1,14 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- Banknote,
- ExternalLink,
- MessageSquare,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import EntertainmentData from "./EntertainmentData";
export const metadata: Metadata = {
title: "Entertainment",
};
-
-interface Entertainment {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- priceRange: "$" | "$$" | "$$$";
- comments: string[];
-}
-
-const entertainments: Entertainment[] = [
- {
- id: 1,
- name: "BARCODE",
- place: "Roundabout",
- googleMapsUrl:
- "https://maps.app.goo.gl/GvGaSmgWYrKzoUpn8?g_st=com.google.maps.preview.copy",
- priceRange: "$",
- comments: ["Convenient location", "Chill atmosphere", "Live music"],
- },
- {
- id: 2,
- name: "Jooker Live",
- place: "Roundabout",
- googleMapsUrl:
- "https://maps.app.goo.gl/2FeR2bsUdxoqYXie6?g_st=com.google.maps.preview.copy",
- priceRange: "$$",
- comments: ["Good music", "Convenient location", "Fun place"],
- },
- {
- id: 3,
- name: "Q Bar Mağusa",
- place: "Roundabout",
- googleMapsUrl:
- "https://maps.app.goo.gl/Yb4rxVEXGZPgChUd7?g_st=com.google.maps.preview.copy",
- priceRange: "$",
- comments: ["Quality cocktail", "Good live music", "Good security"],
- },
- {
- id: 4,
- name: "Passage N.199",
- place: "Roundabout",
- googleMapsUrl:
- "https://maps.app.goo.gl/qjb9wLoPmGK5ExYd8?g_st=com.google.maps.preview.copy",
- priceRange: "$$",
- comments: ["Live music", "Good cocktails", "Premium shisha"],
- },
- {
- id: 5,
- name: "Shelby Bar",
- place: "Roundabout",
- googleMapsUrl:
- "https://maps.app.goo.gl/9qjzpfxcme1hNThq5?g_st=com.google.maps.preview.copy",
- priceRange: "$$",
- comments: ["Convenient location", "Good music", "Alcohol"],
- },
- {
- id: 6,
- name: "The Shamrock",
- place: "Kaliland",
- googleMapsUrl:
- "https://maps.app.goo.gl/r55fwNEtBGcQCk188?g_st=com.google.maps.preview.copy",
- priceRange: "$$$",
- comments: [
- "Bowling, pool and football matches",
- "Great foods and cocktails",
- "Good shisha",
- ],
- },
- {
- id: 7,
- name: "De Molay Bar",
- place: "Walled City",
- googleMapsUrl:
- "https://maps.app.goo.gl/4MCJsuxoafFzQBrbA?g_st=com.google.maps.preview.copy",
- priceRange: "$$",
- comments: [
- "Chill and cozy atmosphere",
- "Good shows and live music",
- "Quality cocktails",
- ],
- },
- {
- id: 8,
- name: "Monks Inn",
- place: "Walled City",
- googleMapsUrl:
- "https://maps.app.goo.gl/GVFWNxBg3jjpRFTQ8?g_st=com.google.maps.preview.copy",
- priceRange: "$$",
- comments: [
- "Premium cocktails",
- "Chill environment",
- "Good outside sitting area",
- ],
- },
- {
- id: 9,
- name: "Caterina Cornaro House",
- place: "Walled City",
- googleMapsUrl:
- "https://maps.app.goo.gl/BX3zzVKMG63zUDTf8?g_st=com.google.maps.preview.copy",
- priceRange: "$$$",
- comments: [
- "Premium cocktails",
- "Beautiful atmosphere and environment",
- "Good location",
- ],
- },
- {
- id: 10,
- name: "Hamam Inn Bar",
- place: "Walled City",
- googleMapsUrl:
- "https://maps.app.goo.gl/YqufdNwXCT1kG1bA9?g_st=com.google.maps.preview.copy",
- priceRange: "$$",
- comments: [
- "Live music",
- "Quality cocktails",
- "Relaxing outdoor sitting area",
- ],
- },
- {
- id: 11,
- name: "42 Café & Bar",
- place: "Walled City",
- googleMapsUrl:
- "https://maps.app.goo.gl/VhnANgDCY5UAhfP3A?g_st=com.google.maps.preview.copy",
- priceRange: "$",
- comments: ["Wonderful wall art", "Chill and relaxing environment", "Pool"],
- },
- {
- id: 12,
- name: "Rave Club",
- place: "Walled City",
- googleMapsUrl:
- "https://maps.app.goo.gl/29jZ8oAKYzqPcH2K8?g_st=com.google.maps.preview.copy",
- priceRange: "$$",
- comments: ["Quality music", "Free parking lot", "Good atmosphere"],
- },
- {
- id: 13,
- name: "Lion’s Garden",
- place: "Tuzla",
- googleMapsUrl:
- "https://maps.app.goo.gl/Fp6biTHNv3QSVCpZ7?g_st=com.google.maps.preview.copy",
- priceRange: "$$$",
- comments: ["Good live music", "Quality shows", "Nice staff"],
- },
- {
- id: 14,
- name: "EMU Beach Club",
- place: "Tuzla",
- googleMapsUrl:
- "https://maps.app.goo.gl/gR4kMz4rD9ThAUWq7?g_st=com.google.maps.preview.copy",
- priceRange: "$",
- comments: ["Clean sea", "Good quality foods and service", "Friendly-kind"],
- },
- {
- id: 15,
- name: "Loof Beach",
- place: "Glapsides",
- googleMapsUrl:
- "https://maps.app.goo.gl/WLA1SxSfe4sYHi61A?g_st=com.google.maps.preview.copy",
- priceRange: "$$$",
- comments: [
- "Clean sea",
- "Good quality coffee and foods",
- "Amazing shows and outdoor cinema",
- ],
- },
- {
- id: 16,
- name: "Citymall Cinema",
- place: "Citymall AVM",
- googleMapsUrl:
- "https://maps.google.com?q=City%20Mall,%20%C5%9Eht.%20%C4%B0brahim%20Kaz%C4%B1m%20Cd,%20Gazima%C4%9Fusa%2099450&ftid=0x14dfc9c8574dd179:0xa7392eff52e0b638&entry=gps&lucs=,94213531,94224825,94227247,94227248,47071704,47069508,94218641,94203019,47084304,94208458,94208447&g_st=com.google.maps.preview.copy",
- priceRange: "$$$",
- comments: [
- "Good popcorn",
- "Quality saloons and voice systems",
- "Friendly-kind",
- ],
- },
-];
export default function EntertainmentPage() {
return (
-
-
-
- Back to Home
-
-
- Entertainment in EMU
-
-
- {entertainments.map((ent) => (
-
-
- {ent.name}
-
-
-
-
-
- {ent.place}
-
-
-
-
-
- {ent.priceRange}
-
-
-
-
- Comments
-
-
- {ent.comments.map((comment, index) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/error.tsx b/src/app/(categories)/(en)/error.tsx
new file mode 100644
index 0000000..d06c534
--- /dev/null
+++ b/src/app/(categories)/(en)/error.tsx
@@ -0,0 +1,27 @@
+"use client";
+
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { useEffect } from "react";
+
+export default function Error({
+ error,
+ reset,
+}: {
+ error: Error & { digest?: string; message?: string };
+ reset: () => void;
+}) {
+ useEffect(() => {
+ console.error(error);
+ }, [error]);
+
+ return (
+
+ reset()}
+ >
+ Try again
+
+
+ );
+}
diff --git a/src/app/(categories)/(en)/events/EventsData.tsx b/src/app/(categories)/(en)/events/EventsData.tsx
new file mode 100644
index 0000000..0ff2ffb
--- /dev/null
+++ b/src/app/(categories)/(en)/events/EventsData.tsx
@@ -0,0 +1,80 @@
+import { getEvents } from "@/actions/events.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { Calendar, MapPin, Banknote, ExternalLink } from "lucide-react";
+
+interface Event {
+ id: number;
+ name: string;
+ date: string;
+ place: string;
+ googleMapsUrl: string;
+ cost: string;
+}
+
+/* const events = [
+ {
+ id: 1,
+ name: "Orientation Days",
+ date: "2024-09-2",
+ place: "EMU Activity Center",
+ googleMapsUrl: "https://maps.app.goo.gl/w5LpmBR1FN8j3FoL6",
+ cost: "Free for students",
+ },
+ {
+ id: 2,
+ name: "European Mobility Week",
+ date: "2024-09-21",
+ place: "Zambak Holiday Village",
+ googleMapsUrl: "https://maps.app.goo.gl/UQ2aVFbn119kQPcV7",
+ cost: "Free",
+ },
+];
+ */
+
+export default async function EventsData({ lang }: { lang?: "en" | "tr" }) {
+ const events: Event[] = await getEvents();
+
+ if (!events || !events.length) {
+ return ;
+ }
+ return (
+
+ {events.map((event) => (
+
+
+ {event.name}
+
+
+
+
+ {new Date(event.date).toLocaleDateString("en-US", {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ })}
+
+
+
+
+ {event.place}
+
+
+
+
+
+ {event.cost}
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/events/page.tsx b/src/app/(categories)/(en)/events/page.tsx
index bd62b80..39d0a92 100644
--- a/src/app/(categories)/(en)/events/page.tsx
+++ b/src/app/(categories)/(en)/events/page.tsx
@@ -1,86 +1,15 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- Calendar,
- MapPin,
- Banknote,
- ExternalLink,
-} from "lucide-react";
-
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
import type { Metadata } from "next";
+import EventsData from "./EventsData";
export const metadata: Metadata = {
title: "Events",
};
-const events = [
- {
- id: 1,
- name: "Orientation Days",
- date: "2024-09-2",
- place: "EMU Activity Center",
- googleMapsUrl: "https://maps.app.goo.gl/w5LpmBR1FN8j3FoL6",
- cost: "Free for students",
- },
- {
- id: 2,
- name: "European Mobility Week",
- date: "2024-09-21",
- place: "Zambak Holiday Village",
- googleMapsUrl: "https://maps.app.goo.gl/UQ2aVFbn119kQPcV7",
- cost: "Free",
- },
-];
-
export default function page() {
return (
-
-
-
- Back to Home
-
-
EMU Events
-
- {events.map((event) => (
-
-
- {event.name}
-
-
-
-
- {new Date(event.date).toLocaleDateString("en-US", {
- year: "numeric",
- month: "long",
- day: "numeric",
- })}
-
-
-
-
- {event.place}
-
-
-
-
-
- {event.cost}
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/faculties/FacultiesData.tsx b/src/app/(categories)/(en)/faculties/FacultiesData.tsx
new file mode 100644
index 0000000..8d67b72
--- /dev/null
+++ b/src/app/(categories)/(en)/faculties/FacultiesData.tsx
@@ -0,0 +1,124 @@
+import { getFaculties } from "@/actions/faculty.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import FollowUpButton from "@/components/ui/FollowUpButton/FollowUpButton";
+
+interface Department {
+ id: number;
+ name: string;
+ description: string;
+ officialPageUrl: string;
+}
+
+/* const departments: Department[] = [
+ {
+ id: 1,
+ name: "Architecture",
+ description:
+ "Focuses on architectural design, urban planning, and sustainable building practices.",
+ officialPageUrl: "https://arch.emu.edu.tr",
+ },
+ {
+ id: 2,
+ name: "Arts & Sciences",
+ description:
+ "Offers a wide range of programs in natural sciences, social sciences, and humanities.",
+ officialPageUrl: "https://fas.emu.edu.tr",
+ },
+ {
+ id: 3,
+ name: "Business & Economics",
+ description:
+ "Provides education in various business disciplines, economics, and management.",
+ officialPageUrl: "https://be.emu.edu.tr",
+ },
+ {
+ id: 4,
+ name: "Communication and Media Studies",
+ description:
+ "Covers areas such as journalism, public relations, and digital media.",
+ officialPageUrl: "https://fcms.emu.edu.tr",
+ },
+ {
+ id: 5,
+ name: "Dentistry",
+ description:
+ "Offers comprehensive education in dental sciences and clinical practice.",
+ officialPageUrl: "https://dent.emu.edu.tr",
+ },
+ {
+ id: 6,
+ name: "Education",
+ description:
+ "Prepares future educators with modern teaching methodologies and practices.",
+ officialPageUrl: "https://educ.emu.edu.tr",
+ },
+ {
+ id: 7,
+ name: "Engineering",
+ description:
+ "Covers various engineering disciplines including civil, electrical, and mechanical engineering.",
+ officialPageUrl: "https://eng.emu.edu.tr",
+ },
+ {
+ id: 8,
+ name: "Health Sciences",
+ description:
+ "Focuses on various aspects of health care, including nursing and physiotherapy.",
+ officialPageUrl: "https://shs.emu.edu.tr",
+ },
+ {
+ id: 9,
+ name: "Law",
+ description:
+ "Provides comprehensive legal education covering national and international law.",
+ officialPageUrl: "https://law.emu.edu.tr",
+ },
+ {
+ id: 10,
+ name: "Medicine",
+ description:
+ "Offers medical education with a focus on both clinical practice and research.",
+ officialPageUrl: "https://med.emu.edu.tr",
+ },
+ {
+ id: 11,
+ name: "Pharmacy",
+ description:
+ "Provides education in pharmaceutical sciences and pharmacy practice.",
+ officialPageUrl: "https://pharm.emu.edu.tr",
+ },
+ {
+ id: 12,
+ name: "Tourism",
+ description:
+ "Focuses on hospitality management, tourism planning, and related fields.",
+ officialPageUrl: "https://tourism.emu.edu.tr",
+ },
+]; */
+
+export default async function FacultiesData({ lang }: { lang?: "en" | "tr" }) {
+ const departments: Department[] = await getFaculties();
+
+ if (!departments || !departments.length) {
+ return ;
+ }
+ return (
+
+ {departments.map((dept) => (
+
+
+ {dept.name}
+
+
{dept.description}
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/faculties/page.tsx b/src/app/(categories)/(en)/faculties/page.tsx
index 1913ccb..c6e812e 100644
--- a/src/app/(categories)/(en)/faculties/page.tsx
+++ b/src/app/(categories)/(en)/faculties/page.tsx
@@ -1,140 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink } from "lucide-react";
-
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
import type { Metadata } from "next";
+import FacultiesData from "./FacultiesData";
export const metadata: Metadata = {
title: "Faculties",
};
-interface Department {
- id: number;
- name: string;
- description: string;
- officialPageUrl: string;
-}
-
-const departments: Department[] = [
- {
- id: 1,
- name: "Architecture",
- description:
- "Focuses on architectural design, urban planning, and sustainable building practices.",
- officialPageUrl: "https://arch.emu.edu.tr",
- },
- {
- id: 2,
- name: "Arts & Sciences",
- description:
- "Offers a wide range of programs in natural sciences, social sciences, and humanities.",
- officialPageUrl: "https://fas.emu.edu.tr",
- },
- {
- id: 3,
- name: "Business & Economics",
- description:
- "Provides education in various business disciplines, economics, and management.",
- officialPageUrl: "https://be.emu.edu.tr",
- },
- {
- id: 4,
- name: "Communication and Media Studies",
- description:
- "Covers areas such as journalism, public relations, and digital media.",
- officialPageUrl: "https://fcms.emu.edu.tr",
- },
- {
- id: 5,
- name: "Dentistry",
- description:
- "Offers comprehensive education in dental sciences and clinical practice.",
- officialPageUrl: "https://dent.emu.edu.tr",
- },
- {
- id: 6,
- name: "Education",
- description:
- "Prepares future educators with modern teaching methodologies and practices.",
- officialPageUrl: "https://educ.emu.edu.tr",
- },
- {
- id: 7,
- name: "Engineering",
- description:
- "Covers various engineering disciplines including civil, electrical, and mechanical engineering.",
- officialPageUrl: "https://eng.emu.edu.tr",
- },
- {
- id: 8,
- name: "Health Sciences",
- description:
- "Focuses on various aspects of health care, including nursing and physiotherapy.",
- officialPageUrl: "https://shs.emu.edu.tr",
- },
- {
- id: 9,
- name: "Law",
- description:
- "Provides comprehensive legal education covering national and international law.",
- officialPageUrl: "https://law.emu.edu.tr",
- },
- {
- id: 10,
- name: "Medicine",
- description:
- "Offers medical education with a focus on both clinical practice and research.",
- officialPageUrl: "https://med.emu.edu.tr",
- },
- {
- id: 11,
- name: "Pharmacy",
- description:
- "Provides education in pharmaceutical sciences and pharmacy practice.",
- officialPageUrl: "https://pharm.emu.edu.tr",
- },
- {
- id: 12,
- name: "Tourism",
- description:
- "Focuses on hospitality management, tourism planning, and related fields.",
- officialPageUrl: "https://tourism.emu.edu.tr",
- },
-];
-
export default function DepartmentsPage() {
return (
-
-
-
- Back to Home
-
-
EMU Departments
-
-
- {departments.map((dept) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/fitness/FitnessData.tsx b/src/app/(categories)/(en)/fitness/FitnessData.tsx
new file mode 100644
index 0000000..c625859
--- /dev/null
+++ b/src/app/(categories)/(en)/fitness/FitnessData.tsx
@@ -0,0 +1,148 @@
+import { getFitnessCenters } from "@/actions/fitness-center.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import {
+ MapPin,
+ ExternalLink,
+ Banknote,
+ PhoneCall,
+ Dumbbell,
+} from "lucide-react";
+
+interface FitnessCenter {
+ id: number;
+ name: string;
+ location: string;
+ googleMapsUrl: string;
+ contactLink: string;
+ priceScale: "$" | "$$" | "$$$";
+}
+/*
+const fitnessCenters: FitnessCenter[] = [
+ {
+ id: 1,
+ name: "EMU Gym",
+ location: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/orWsnyyazWnQ7eKG6",
+ contactLink: "tel:+903926301234",
+ priceScale: "$",
+ },
+ {
+ id: 2,
+ name: "FitArt Health & Fitness",
+ location: "Pop Art",
+ googleMapsUrl: "https://maps.app.goo.gl/9nxK6mV3AGX9T1cv7",
+ contactLink: "tel:+903924443676",
+ priceScale: "$$",
+ },
+ {
+ id: 3,
+ name: "M8 Fitness Center",
+ location: "Nural Dormitory",
+ googleMapsUrl: "https://maps.app.goo.gl/NCYim4RwZck4fxy3A",
+ contactLink: "tel:+905338305010",
+ priceScale: "$$",
+ },
+ {
+ id: 4,
+ name: "Ripped Fit",
+ location: "Grand Aras",
+ googleMapsUrl: "https://maps.app.goo.gl/rBgd6325Lt6ZLnkJ6",
+ contactLink: "tel:+905338766222",
+ priceScale: "$$",
+ },
+ {
+ id: 5,
+ name: "Fit Academy",
+ location: "Sosyal Konutlar",
+ googleMapsUrl: "https://maps.app.goo.gl/qUbpH6e7Ga5b1cDQ6",
+ contactLink: "tel:+905338766222",
+ priceScale: "$$",
+ },
+ {
+ id: 6,
+ name: "Fit Plus Premier",
+ location: "NorthernLAND Premier",
+ googleMapsUrl: "https://maps.app.goo.gl/Rdjc48HWVFvXVqsB6",
+ contactLink: "tel:+903924444443",
+ priceScale: "$$$",
+ },
+ {
+ id: 7,
+ name: "Gymaholic",
+ location: "Salamis Yolu",
+ googleMapsUrl: "https://maps.app.goo.gl/eDwVLzjomcbBwJWg6",
+ contactLink: "tel:+903923652929",
+ priceScale: "$$$",
+ },
+ {
+ id: 8,
+ name: "Power Gym",
+ location: "Salamis Yolu",
+ googleMapsUrl: "https://maps.app.goo.gl/JN3YHJDdJLzS133r8",
+ contactLink: "tel:+905338862428",
+ priceScale: "$$",
+ },
+ {
+ id: 9,
+ name: "Euro Sinemis",
+ location: "MAGEM",
+ googleMapsUrl: "https://maps.app.goo.gl/4v2KP5Q75RffmQcn6",
+ contactLink: "tel:+905338641120",
+ priceScale: "$$",
+ },
+ {
+ id: 10,
+ name: "Fit-Bull Gym",
+ location: "Önder",
+ googleMapsUrl: "https://maps.app.goo.gl/Lq1ngAXYy6Awvkza6",
+ contactLink: "tel:+905338835325",
+ priceScale: "$$",
+ },
+]; */
+
+export default async function FitnessData({ lang }: { lang?: "en" | "tr" }) {
+ const fitnessCenters: FitnessCenter[] = await getFitnessCenters();
+
+ if (!fitnessCenters || !fitnessCenters.length) {
+ return ;
+ }
+ return (
+
+ {fitnessCenters.map((center) => (
+
+
+
+ {center.name}
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/fitness/page.tsx b/src/app/(categories)/(en)/fitness/page.tsx
index 2840fdd..9ecb1f4 100644
--- a/src/app/(categories)/(en)/fitness/page.tsx
+++ b/src/app/(categories)/(en)/fitness/page.tsx
@@ -1,160 +1,15 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- ExternalLink,
- Banknote,
- PhoneCall,
- Dumbbell,
-} from "lucide-react";
-
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
import type { Metadata } from "next";
+import FitnessData from "./FitnessData";
export const metadata: Metadata = {
title: "Fitness",
};
-interface FitnessCenter {
- id: number;
- name: string;
- location: string;
- googleMapsUrl: string;
- contactLink: string;
- priceScale: "$" | "$$" | "$$$";
-}
-
-const fitnessCenters: FitnessCenter[] = [
- {
- id: 1,
- name: "EMU Gym",
- location: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/orWsnyyazWnQ7eKG6",
- contactLink: "tel:+903926301234",
- priceScale: "$",
- },
- {
- id: 2,
- name: "FitArt Health & Fitness",
- location: "Pop Art",
- googleMapsUrl: "https://maps.app.goo.gl/9nxK6mV3AGX9T1cv7",
- contactLink: "tel:+903924443676",
- priceScale: "$$",
- },
- {
- id: 3,
- name: "M8 Fitness Center",
- location: "Nural Dormitory",
- googleMapsUrl: "https://maps.app.goo.gl/NCYim4RwZck4fxy3A",
- contactLink: "tel:+905338305010",
- priceScale: "$$",
- },
- {
- id: 4,
- name: "Ripped Fit",
- location: "Grand Aras",
- googleMapsUrl: "https://maps.app.goo.gl/rBgd6325Lt6ZLnkJ6",
- contactLink: "tel:+905338766222",
- priceScale: "$$",
- },
- {
- id: 5,
- name: "Fit Academy",
- location: "Sosyal Konutlar",
- googleMapsUrl: "https://maps.app.goo.gl/qUbpH6e7Ga5b1cDQ6",
- contactLink: "tel:+905338766222",
- priceScale: "$$",
- },
- {
- id: 6,
- name: "Fit Plus Premier",
- location: "NorthernLAND Premier",
- googleMapsUrl: "https://maps.app.goo.gl/Rdjc48HWVFvXVqsB6",
- contactLink: "tel:+903924444443",
- priceScale: "$$$",
- },
- {
- id: 7,
- name: "Gymaholic",
- location: "Salamis Yolu",
- googleMapsUrl: "https://maps.app.goo.gl/eDwVLzjomcbBwJWg6",
- contactLink: "tel:+903923652929",
- priceScale: "$$$",
- },
- {
- id: 8,
- name: "Power Gym",
- location: "Salamis Yolu",
- googleMapsUrl: "https://maps.app.goo.gl/JN3YHJDdJLzS133r8",
- contactLink: "tel:+905338862428",
- priceScale: "$$",
- },
- {
- id: 9,
- name: "Euro Sinemis",
- location: "MAGEM",
- googleMapsUrl: "https://maps.app.goo.gl/4v2KP5Q75RffmQcn6",
- contactLink: "tel:+905338641120",
- priceScale: "$$",
- },
- {
- id: 10,
- name: "Fit-Bull Gym",
- location: "Önder",
- googleMapsUrl: "https://maps.app.goo.gl/Lq1ngAXYy6Awvkza6",
- contactLink: "tel:+905338835325",
- priceScale: "$$",
- },
-];
-
export default function FitnessPage() {
return (
-
-
-
- Back to Home
-
-
Fitness Centers
-
-
- {fitnessCenters.map((center) => (
-
-
-
- {center.name}
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/for-sale/ForSalesData.tsx b/src/app/(categories)/(en)/for-sale/ForSalesData.tsx
new file mode 100644
index 0000000..6820a44
--- /dev/null
+++ b/src/app/(categories)/(en)/for-sale/ForSalesData.tsx
@@ -0,0 +1,48 @@
+import { getSaleItems } from "@/actions/sale-item.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { ExternalLink, ShoppingBag } from "lucide-react";
+
+interface SaleItem {
+ id: number;
+ name: string;
+ price: number;
+ contactLink: string;
+}
+
+// const saleItems: SaleItem[] = [];
+
+export default async function ForSalesData({ lang }: { lang?: "en" | "tr" }) {
+ const saleItems: SaleItem[] = await getSaleItems();
+
+ if (!saleItems || !saleItems.length) {
+ return ;
+ }
+ return (
+
+ {saleItems.map((item) => (
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/for-sale/page.tsx b/src/app/(categories)/(en)/for-sale/page.tsx
index 9a8f0ea..8698290 100644
--- a/src/app/(categories)/(en)/for-sale/page.tsx
+++ b/src/app/(categories)/(en)/for-sale/page.tsx
@@ -1,70 +1,19 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, ShoppingBag, PlusCircle } from "lucide-react";
-
import type { Metadata } from "next";
+import ForSalesData from "./ForSalesData";
+import ContactUsBanner from "@/components/ui/ContactUsBanner/ContactUsBanner";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
export const metadata: Metadata = {
title: "For Sale",
};
-interface SaleItem {
- id: number;
- name: string;
- price: number;
- contactLink: string;
-}
-
-const saleItems: SaleItem[] = [];
-
export default function ForSalePage() {
return (
-
-
-
- Back to Home
-
-
Items For Sale
-
-
- {saleItems.map((item) => (
-
- ))}
-
-
-
-
+ <>
+
+
+
+
+ >
);
}
diff --git a/src/app/(categories)/(en)/guides/GuidesData.tsx b/src/app/(categories)/(en)/guides/GuidesData.tsx
new file mode 100644
index 0000000..fe99b38
--- /dev/null
+++ b/src/app/(categories)/(en)/guides/GuidesData.tsx
@@ -0,0 +1,58 @@
+import { getGuides } from "@/actions/guide.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { BookOpen } from "lucide-react";
+import FollowUpButton from "@/components/ui/FollowUpButton/FollowUpButton";
+
+interface Guide {
+ id: number;
+ name: string;
+ text: string;
+ followUpLink: string;
+}
+
+/* const guides: Guide[] = [
+ {
+ id: 1,
+ name: "Navigating EMU Campus",
+ text: "A comprehensive guide to finding your way around the EMU campus, including key buildings and facilities.",
+ followUpLink: "https://www.emu.edu.tr/campusmap",
+ },
+ {
+ id: 2,
+ name: "Student Life in Famagusta",
+ text: "Everything you need to know about living in Famagusta as an EMU student, from accommodation to local attractions.",
+ followUpLink: "https://www.emu.edu.tr/campus-life",
+ },
+ {
+ id: 3,
+ name: "How to go to the Nicosia",
+ text: "A guide to navigate your way to Nicosia from EMU, including public transport options and travel tips.",
+ followUpLink:
+ "https://transportation.emu.edu.tr/en/announcements?pid=64&t=nicosia-emu-nicosia-free-student-bus-services",
+ },
+]; */
+
+export default async function GuidesData({ lang }: { lang?: "en" | "tr" }) {
+ const guides: Guide[] = await getGuides();
+
+ if (!guides || !guides.length) {
+ return ;
+ }
+ return (
+
+ {guides.map((guide) => (
+
+
+
+ {guide.name}
+
+
{guide.text}
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/guides/page.tsx b/src/app/(categories)/(en)/guides/page.tsx
index 8008b33..f14fa58 100644
--- a/src/app/(categories)/(en)/guides/page.tsx
+++ b/src/app/(categories)/(en)/guides/page.tsx
@@ -1,76 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, BookOpen } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import GuidesData from "./GuidesData";
export const metadata: Metadata = {
title: "Guides",
};
-interface Guide {
- id: number;
- name: string;
- text: string;
- followUpLink: string;
-}
-
-const guides: Guide[] = [
- {
- id: 1,
- name: "Navigating EMU Campus",
- text: "A comprehensive guide to finding your way around the EMU campus, including key buildings and facilities.",
- followUpLink: "https://www.emu.edu.tr/campusmap",
- },
- {
- id: 2,
- name: "Student Life in Famagusta",
- text: "Everything you need to know about living in Famagusta as an EMU student, from accommodation to local attractions.",
- followUpLink: "https://www.emu.edu.tr/campus-life",
- },
- {
- id: 3,
- name: "How to go to the Nicosia",
- text: "A guide to navigate your way to Nicosia from EMU, including public transport options and travel tips.",
- followUpLink:
- "https://transportation.emu.edu.tr/en/announcements?pid=64&t=nicosia-emu-nicosia-free-student-bus-services",
- },
-];
-
export default function GuidesPage() {
return (
-
-
-
- Back to Home
-
-
Guides
-
-
- {guides.map((guide) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/health/HealthData.tsx b/src/app/(categories)/(en)/health/HealthData.tsx
new file mode 100644
index 0000000..d6d7160
--- /dev/null
+++ b/src/app/(categories)/(en)/health/HealthData.tsx
@@ -0,0 +1,144 @@
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import {
+ MapPin,
+ ExternalLink,
+ Building2,
+ Stethoscope,
+ Pill,
+} from "lucide-react";
+import { getHealths } from "@/actions/health.actions";
+
+interface HealthFacility {
+ id: number;
+ name: string;
+ type: "Hospital" | "Clinic" | "Pharmacy";
+ location: string;
+ googleMapsUrl: string;
+}
+
+/* const healthFacilities: HealthFacility[] = [
+ {
+ id: 1,
+ name: "EMU Health Center",
+ type: "Hospital",
+ location: "EMU Campus",
+ googleMapsUrl: "https://maps.app.goo.gl/ywL1Sa8FqCijTizA7",
+ },
+ {
+ id: 2,
+ name: "Famagusta State Hospital",
+ type: "Hospital",
+ location: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/Qxt2Nw3XXtaPLCeB7",
+ },
+ {
+ id: 3,
+ name: "Famagusta Life Hospital",
+ type: "Hospital",
+ location: "City Mall Area",
+ googleMapsUrl: "https://maps.app.goo.gl/Aj3Wp734JDZ5HgUp8",
+ },
+ {
+ id: 4,
+ name: "Famagusta Central Hospital",
+ type: "Hospital",
+ location: "Eşref Bitlis Cd",
+ googleMapsUrl: "https://maps.app.goo.gl/bUmqfzp99hQsJErb7",
+ },
+ {
+ id: 5,
+ name: "Kunter Trust Hospital",
+ type: "Hospital",
+ location: "Anıt Roundabout Area",
+ googleMapsUrl: "https://maps.app.goo.gl/WBELJHP3Py7Tm8p37",
+ },
+ {
+ id: 5,
+ name: "MediPark Clinic",
+ type: "Clinic",
+ location: "Abant Sk",
+ googleMapsUrl: "https://maps.app.goo.gl/x9iHAdrpXCzGYo249",
+ },
+ {
+ id: 6,
+ name: "Dentica",
+ type: "Clinic",
+ location: "Bayraktar Road",
+ googleMapsUrl: "https://maps.app.goo.gl/PKyLAsZrD3HymNz99",
+ },
+ {
+ id: 7,
+ name: "Başarır Dental Clinic",
+ type: "Clinic",
+ location: "Salamis Yolu",
+ googleMapsUrl: "https://maps.app.goo.gl/kzugT5qHwjWGcier8",
+ },
+ {
+ id: 8,
+ name: "Sümer Pharmacy",
+ type: "Pharmacy",
+ location: "Salamis Yolu",
+ googleMapsUrl: "https://maps.app.goo.gl/Z9AMdrA3vYHJFpig7",
+ },
+ {
+ id: 9,
+ name: "Nasim Pharmacy",
+ type: "Pharmacy",
+ location: "Salamis Yolu",
+ googleMapsUrl: "https://maps.app.goo.gl/dwHiEcMiVEtgcAF49",
+ },
+ {
+ id: 10,
+ name: "Hande Besmel Pharmacy",
+ type: "Pharmacy",
+ location: "Salamis Yolu",
+ googleMapsUrl: "https://maps.app.goo.gl/qJfUwkQSaDs9dgct9",
+ },
+];
+ */
+
+export default async function HealthData({ lang }: { lang?: "en" | "tr" }) {
+ const healthFacilities: HealthFacility[] = await getHealths();
+
+ if (!healthFacilities || !healthFacilities.length) {
+ return ;
+ }
+ return (
+
+ {healthFacilities.map((facility) => (
+
+
+ {facility.type === "Hospital" && (
+
+ )}
+ {facility.type === "Clinic" && (
+
+ )}
+ {facility.type === "Pharmacy" && (
+
+ )}
+ {facility.name}
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/health/page.tsx b/src/app/(categories)/(en)/health/page.tsx
index 5e99d4c..272a477 100644
--- a/src/app/(categories)/(en)/health/page.tsx
+++ b/src/app/(categories)/(en)/health/page.tsx
@@ -1,159 +1,18 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- ExternalLink,
- Building2,
- Stethoscope,
- Pill,
- AlertTriangle,
-} from "lucide-react";
-
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import { AlertTriangle, Link } from "lucide-react";
import type { Metadata } from "next";
+import HealthData from "./HealthData";
export const metadata: Metadata = {
title: "Health",
};
-interface HealthFacility {
- id: number;
- name: string;
- type: "Hospital" | "Clinic" | "Pharmacy";
- location: string;
- googleMapsUrl: string;
-}
-
-const healthFacilities: HealthFacility[] = [
- {
- id: 1,
- name: "EMU Health Center",
- type: "Hospital",
- location: "EMU Campus",
- googleMapsUrl: "https://maps.app.goo.gl/ywL1Sa8FqCijTizA7",
- },
- {
- id: 2,
- name: "Famagusta State Hospital",
- type: "Hospital",
- location: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/Qxt2Nw3XXtaPLCeB7",
- },
- {
- id: 3,
- name: "Famagusta Life Hospital",
- type: "Hospital",
- location: "City Mall Area",
- googleMapsUrl: "https://maps.app.goo.gl/Aj3Wp734JDZ5HgUp8",
- },
- {
- id: 4,
- name: "Famagusta Central Hospital",
- type: "Hospital",
- location: "Eşref Bitlis Cd",
- googleMapsUrl: "https://maps.app.goo.gl/bUmqfzp99hQsJErb7",
- },
- {
- id: 5,
- name: "Kunter Trust Hospital",
- type: "Hospital",
- location: "Anıt Roundabout Area",
- googleMapsUrl: "https://maps.app.goo.gl/WBELJHP3Py7Tm8p37",
- },
- {
- id: 5,
- name: "MediPark Clinic",
- type: "Clinic",
- location: "Abant Sk",
- googleMapsUrl: "https://maps.app.goo.gl/x9iHAdrpXCzGYo249",
- },
- {
- id: 6,
- name: "Dentica",
- type: "Clinic",
- location: "Bayraktar Road",
- googleMapsUrl: "https://maps.app.goo.gl/PKyLAsZrD3HymNz99",
- },
- {
- id: 7,
- name: "Başarır Dental Clinic",
- type: "Clinic",
- location: "Salamis Yolu",
- googleMapsUrl: "https://maps.app.goo.gl/kzugT5qHwjWGcier8",
- },
- {
- id: 8,
- name: "Sümer Pharmacy",
- type: "Pharmacy",
- location: "Salamis Yolu",
- googleMapsUrl: "https://maps.app.goo.gl/Z9AMdrA3vYHJFpig7",
- },
- {
- id: 9,
- name: "Nasim Pharmacy",
- type: "Pharmacy",
- location: "Salamis Yolu",
- googleMapsUrl: "https://maps.app.goo.gl/dwHiEcMiVEtgcAF49",
- },
- {
- id: 10,
- name: "Hande Besmel Pharmacy",
- type: "Pharmacy",
- location: "Salamis Yolu",
- googleMapsUrl: "https://maps.app.goo.gl/qJfUwkQSaDs9dgct9",
- },
-];
-
export default function HealthPage() {
return (
-
-
-
- Back to Home
-
-
- Health Facilities
-
-
-
- {healthFacilities.map((facility) => (
-
-
- {facility.type === "Hospital" && (
-
- )}
- {facility.type === "Clinic" && (
-
- )}
- {facility.type === "Pharmacy" && (
-
- )}
- {facility.name}
-
-
-
- ))}
-
-
+ <>
+
+
+
@@ -170,6 +29,6 @@ export default function HealthPage() {
.
-
+ >
);
}
diff --git a/src/app/(categories)/(en)/i-am-new/NewContentData.tsx b/src/app/(categories)/(en)/i-am-new/NewContentData.tsx
new file mode 100644
index 0000000..e5076e0
--- /dev/null
+++ b/src/app/(categories)/(en)/i-am-new/NewContentData.tsx
@@ -0,0 +1,60 @@
+import { Info } from "lucide-react";
+import FollowUpButton from "@/components/ui/FollowUpButton/FollowUpButton";
+import { getNewContents } from "@/actions/new-content.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface NewContent {
+ id: number;
+ name: string;
+ text: string;
+ followUpLink: string;
+}
+
+/* const newContents: NewContent[] = [
+ {
+ id: 1,
+ name: "Registration Process",
+ text: "Learn about the step-by-step registration process for new students.",
+ followUpLink:
+ "https://www.emu.edu.tr/en/prospective-students/online-application/752",
+ },
+ {
+ id: 2,
+ name: "Campus Tour",
+ text: "Take a virtual tour of the EMU campus and familiarize yourself with key locations.",
+ followUpLink: "https://www.youtube.com/watch?v=cHo0KsEUBYs",
+ },
+ {
+ id: 3,
+ name: "Student Services",
+ text: "Discover the various student services available to support your academic journey.",
+ followUpLink:
+ "https://www.emu.edu.tr/en/campus/registrars-office/student-services-office/718",
+ },
+]; */
+
+export default async function NewContentData({ lang }: { lang?: "en" | "tr" }) {
+ const newContents: NewContent[] = await getNewContents();
+
+ if (!newContents || !newContents.length) {
+ return ;
+ }
+
+ return (
+
+ {newContents.map((content) => (
+
+
+
+ {content.name}
+
+
{content.text}
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/i-am-new/page.tsx b/src/app/(categories)/(en)/i-am-new/page.tsx
index 80a529f..a281c2e 100644
--- a/src/app/(categories)/(en)/i-am-new/page.tsx
+++ b/src/app/(categories)/(en)/i-am-new/page.tsx
@@ -1,77 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Info } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import NewContentData from "./NewContentData";
export const metadata: Metadata = {
title: "I am new",
};
-interface NewContent {
- id: number;
- name: string;
- text: string;
- followUpLink: string;
-}
-
-const newContents: NewContent[] = [
- {
- id: 1,
- name: "Registration Process",
- text: "Learn about the step-by-step registration process for new students.",
- followUpLink:
- "https://www.emu.edu.tr/en/prospective-students/online-application/752",
- },
- {
- id: 2,
- name: "Campus Tour",
- text: "Take a virtual tour of the EMU campus and familiarize yourself with key locations.",
- followUpLink: "https://www.youtube.com/watch?v=cHo0KsEUBYs",
- },
- {
- id: 3,
- name: "Student Services",
- text: "Discover the various student services available to support your academic journey.",
- followUpLink:
- "https://www.emu.edu.tr/en/campus/registrars-office/student-services-office/718",
- },
-];
-
export default function NewToEmuPage() {
return (
-
-
-
- Back to Home
-
-
I am new to EMU
-
-
- {newContents.map((content) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/markets/MarketsData.tsx b/src/app/(categories)/(en)/markets/MarketsData.tsx
new file mode 100644
index 0000000..940b782
--- /dev/null
+++ b/src/app/(categories)/(en)/markets/MarketsData.tsx
@@ -0,0 +1,110 @@
+import { getMarkets } from "@/actions/market.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { ExternalLink, MapPin, Banknote, ShoppingCart } from "lucide-react";
+
+interface Market {
+ id: number;
+ name: string;
+ place: string;
+ googleMapsUrl: string;
+ priceScale: "$" | "$$" | "$$$";
+}
+
+/* const markets: Market[] = [
+ {
+ id: 1,
+ name: "Koop Market",
+ place: "Alfam Vista",
+ googleMapsUrl: "https://maps.app.goo.gl/Vjv3Yqm5R5eEFeVF8",
+ priceScale: "$$",
+ },
+ {
+ id: 2,
+ name: "Molto",
+ place: "Prime Living Dormitory",
+ googleMapsUrl: "https://maps.app.goo.gl/CA1kqMC8b8qWPxjc8",
+ priceScale: "$$",
+ },
+ {
+ id: 3,
+ name: "B1 Market",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/1ShWcUPJNXgDWpXFA",
+ priceScale: "$",
+ },
+ {
+ id: 4,
+ name: "Cilem Off Licence",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/MWDLV5XfLSJzSmBw7",
+ priceScale: "$",
+ },
+ {
+ id: 5,
+ name: "Unimar",
+ place: "City Mall",
+ googleMapsUrl: "https://maps.app.goo.gl/Ls29PgEf4an3John7",
+ priceScale: "$$",
+ },
+ {
+ id: 6,
+ name: "Macro Supermarket",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/9DJ7N843RvvVuvhg8",
+ priceScale: "$$",
+ },
+ {
+ id: 6,
+ name: "Muncipalty Bazar",
+ place: "Terminal",
+ googleMapsUrl: "https://maps.app.goo.gl/LQjQGyCpyPqrmkYL7",
+ priceScale: "$",
+ },
+ {
+ id: 6,
+ name: "Molto",
+ place: "Terminal",
+ googleMapsUrl: "https://maps.app.goo.gl/cPmKvEF7xBdCCvcY7",
+ priceScale: "$$",
+ },
+]; */
+
+export default async function MarketsData({ lang }: { lang?: "en" | "tr" }) {
+ const markets: Market[] = await getMarkets();
+
+ if (!markets || !markets.length) {
+ return ;
+ }
+
+ return (
+
+ {markets.map((market) => (
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/markets/page.tsx b/src/app/(categories)/(en)/markets/page.tsx
index 2c93ac9..d262e53 100644
--- a/src/app/(categories)/(en)/markets/page.tsx
+++ b/src/app/(categories)/(en)/markets/page.tsx
@@ -1,126 +1,15 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- ExternalLink,
- MapPin,
- Banknote,
- ShoppingCart,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import MarketsData from "./MarketsData";
export const metadata: Metadata = {
title: "Markets",
};
-interface Market {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- priceScale: "$" | "$$" | "$$$";
-}
-
-const markets: Market[] = [
- {
- id: 1,
- name: "Koop Market",
- place: "Alfam Vista",
- googleMapsUrl: "https://maps.app.goo.gl/Vjv3Yqm5R5eEFeVF8",
- priceScale: "$$",
- },
- {
- id: 2,
- name: "Molto",
- place: "Prime Living Dormitory",
- googleMapsUrl: "https://maps.app.goo.gl/CA1kqMC8b8qWPxjc8",
- priceScale: "$$",
- },
- {
- id: 3,
- name: "B1 Market",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/1ShWcUPJNXgDWpXFA",
- priceScale: "$",
- },
- {
- id: 4,
- name: "Cilem Off Licence",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/MWDLV5XfLSJzSmBw7",
- priceScale: "$",
- },
- {
- id: 5,
- name: "Unimar",
- place: "City Mall",
- googleMapsUrl: "https://maps.app.goo.gl/Ls29PgEf4an3John7",
- priceScale: "$$",
- },
- {
- id: 6,
- name: "Macro Supermarket",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/9DJ7N843RvvVuvhg8",
- priceScale: "$$",
- },
- {
- id: 6,
- name: "Muncipalty Bazar",
- place: "Terminal",
- googleMapsUrl: "https://maps.app.goo.gl/LQjQGyCpyPqrmkYL7",
- priceScale: "$",
- },
- {
- id: 6,
- name: "Molto",
- place: "Terminal",
- googleMapsUrl: "https://maps.app.goo.gl/cPmKvEF7xBdCCvcY7",
- priceScale: "$$",
- },
-];
-
export default function MarketsPage() {
return (
-
-
-
- Back to Home
-
-
Markets
-
-
- {markets.map((market) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/news/NewsData.tsx b/src/app/(categories)/(en)/news/NewsData.tsx
new file mode 100644
index 0000000..0d9be88
--- /dev/null
+++ b/src/app/(categories)/(en)/news/NewsData.tsx
@@ -0,0 +1,62 @@
+import { getNews } from "@/actions/news.actions";
+import { Calendar } from "lucide-react";
+import FollowUpButton from "@/components/ui/FollowUpButton/FollowUpButton";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface NewsItem {
+ id: number;
+ title: string;
+ content: string;
+ date: string;
+ followUpLink: string;
+}
+
+/* const newsItems: NewsItem[] = [
+ {
+ id: 1,
+ title: "Orientation Days",
+ content:
+ "Details on the Orientation Days, organised for new students who have just started their university lives and joined the EMU Family, can be accessed via our internet page. You can also obtain all types of university-related information from the information desks set up on our campus.",
+ date: "2024-09-7",
+ followUpLink: "https://orientation.emu.edu.tr/DefaultEng.aspx",
+ },
+ ];
+ */
+
+export default async function NewsData({ lang }: { lang?: "en" | "tr" }) {
+ const newsItems: NewsItem[] = await getNews();
+
+ if (!newsItems || !newsItems.length) {
+ return ;
+ }
+
+ return (
+ <>
+ {newsItems.map((item) => (
+
+
+ {item.title}
+
+
+
+
+ {new Date(item.date).toLocaleDateString("en-US", {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ })}
+
+
+
{item.content}
+
+
+ ))}
+ >
+ );
+}
diff --git a/src/app/(categories)/(en)/news/page.tsx b/src/app/(categories)/(en)/news/page.tsx
index 01e91bb..ed7dd92 100644
--- a/src/app/(categories)/(en)/news/page.tsx
+++ b/src/app/(categories)/(en)/news/page.tsx
@@ -1,66 +1,15 @@
-import Link from "next/link";
-import { ArrowRight, Calendar } from "lucide-react";
-
import type { Metadata } from "next";
-import { getNews } from "@/actions/news.actions";
import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import NewsData from "./NewsData";
export const metadata: Metadata = {
title: "News",
};
-interface NewsItem {
- id: number;
- title: string;
- content: string;
- date: string;
- followUpLink: string;
-}
-
-// const newsItems: NewsItem[] = [
-// {
-// id: 1,
-// title: "Orientation Days",
-// content:
-// "Details on the Orientation Days, organised for new students who have just started their university lives and joined the EMU Family, can be accessed via our internet page. You can also obtain all types of university-related information from the information desks set up on our campus.",
-// date: "2024-09-7",
-// followUpLink: "https://orientation.emu.edu.tr/DefaultEng.aspx",
-// },
-// ];
-
-export default async function page() {
- const newsItems: NewsItem[] = await getNews();
-
+export default function page() {
return (
- {newsItems.map((item) => (
-
-
- {item.title}
-
-
-
-
- {new Date(item.date).toLocaleDateString("en-US", {
- year: "numeric",
- month: "long",
- day: "numeric",
- })}
-
-
-
{item.content}
-
- Read more
-
-
-
- ))}
+
);
}
diff --git a/src/app/(categories)/(en)/pp-foods/PPFoodsData.tsx b/src/app/(categories)/(en)/pp-foods/PPFoodsData.tsx
new file mode 100644
index 0000000..c3b337b
--- /dev/null
+++ b/src/app/(categories)/(en)/pp-foods/PPFoodsData.tsx
@@ -0,0 +1,83 @@
+import { MapPin, Banknote, MessageSquare, ExternalLink } from "lucide-react";
+
+import type { Metadata } from "next";
+import { getPPFoods } from "@/actions/ppfood.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+export const metadata: Metadata = {
+ title: "PP Foods",
+};
+
+interface PPFood {
+ id: number;
+ name: string;
+ place: string;
+ googleMapsUrl: string;
+ price: number;
+ comments: string[];
+}
+
+/* const ppFoods: PPFood[] = [
+ {
+ id: 1,
+ name: "Chicken & Rice",
+ place: "Campus Cafe",
+ googleMapsUrl: "https://goo.gl/maps/example1",
+ price: 130,
+ comments: ["Great value for money", "Healty", "Quick service"],
+ },
+]; */
+
+export default async function PPFoodsData({ lang }: { lang?: "en" | "tr" }) {
+ const ppFoods: PPFood[] = await getPPFoods();
+
+ if (!ppFoods || !ppFoods.length) {
+ return ;
+ }
+
+ return (
+
+ {ppFoods.map((food) => (
+
+
+ {food.name}
+
+
+
+
+
+ {food.place}
+
+
+
+
+
+ {food.price.toFixed(2)} TL
+
+
+
+
+ {lang === "en" ? "Comments" : "Yorumlar"}
+
+
+ {food.comments.map((comment, index) => (
+
+ {comment}
+
+ ))}
+
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/pp-foods/page.tsx b/src/app/(categories)/(en)/pp-foods/page.tsx
index 0c925b1..4a5ee2e 100644
--- a/src/app/(categories)/(en)/pp-foods/page.tsx
+++ b/src/app/(categories)/(en)/pp-foods/page.tsx
@@ -1,95 +1,14 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- Banknote,
- MessageSquare,
- ExternalLink,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import PPFoodsData from "./PPFoodsData";
export const metadata: Metadata = {
title: "PP Foods",
};
-
-interface PPFood {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- price: number;
- comments: string[];
-}
-
-const ppFoods: PPFood[] = [
- {
- id: 1,
- name: "Chicken & Rice",
- place: "Campus Cafe",
- googleMapsUrl: "https://goo.gl/maps/example1",
- price: 130,
- comments: ["Great value for money", "Healty", "Quick service"],
- },
-];
-
export default function PricePerformanceFoods() {
return (
-
-
-
- Back to Home
-
-
- Price Performance Foods
-
-
-
- {ppFoods.map((food) => (
-
-
- {food.name}
-
-
-
-
-
- {food.place}
-
-
-
-
-
- {food.price.toFixed(2)} TL
-
-
-
-
- Comments
-
-
- {food.comments.map((comment, index) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/private-classes/PrivateClassesData.tsx b/src/app/(categories)/(en)/private-classes/PrivateClassesData.tsx
new file mode 100644
index 0000000..6dd52d0
--- /dev/null
+++ b/src/app/(categories)/(en)/private-classes/PrivateClassesData.tsx
@@ -0,0 +1,74 @@
+import { ExternalLink, Book } from "lucide-react";
+import { getPrivateClasses } from "@/actions/private-class.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface PrivateClass {
+ id: number;
+ name: string;
+ price: number;
+ contactLink: string;
+}
+
+/* const privateClasses: PrivateClass[] = [
+ {
+ id: 1,
+ name: "MATH151",
+ price: 400,
+ contactLink: "https://www.linkedin.com/in/ata-atasoy-67b496209/",
+ },
+ {
+ id: 2,
+ name: "CMPE231",
+ price: 400,
+ contactLink:
+ "https://www.instagram.com/ccakmakfurkan?igsh=Mnl5YjZmZmw2Y2t1",
+ },
+ {
+ id: 3,
+ name: "CMPE371",
+ price: 400,
+ contactLink:
+ "https://www.instagram.com/ccakmakfurkan?igsh=Mnl5YjZmZmw2Y2t1",
+ },
+]; */
+
+export default async function PrivateClassesData({
+ lang,
+}: {
+ lang?: "en" | "tr";
+}) {
+ const privateClasses: PrivateClass[] = await getPrivateClasses();
+
+ if (!privateClasses || !privateClasses.length) {
+ return ;
+ }
+
+ return (
+
+ {privateClasses.map((classItem) => (
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/private-classes/page.tsx b/src/app/(categories)/(en)/private-classes/page.tsx
index ee3c226..92880d5 100644
--- a/src/app/(categories)/(en)/private-classes/page.tsx
+++ b/src/app/(categories)/(en)/private-classes/page.tsx
@@ -1,90 +1,19 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Book, PlusCircle } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import PrivateClassesData from "./PrivateClassesData";
+import ContactUsBanner from "@/components/ui/ContactUsBanner/ContactUsBanner";
export const metadata: Metadata = {
title: "Private Classes",
};
-interface PrivateClass {
- id: number;
- name: string;
- price: number;
- contactLink: string;
-}
-
-const privateClasses: PrivateClass[] = [
- {
- id: 1,
- name: "MATH151",
- price: 400,
- contactLink: "https://www.linkedin.com/in/ata-atasoy-67b496209/",
- },
- {
- id: 2,
- name: "CMPE231",
- price: 400,
- contactLink:
- "https://www.instagram.com/ccakmakfurkan?igsh=Mnl5YjZmZmw2Y2t1",
- },
- {
- id: 3,
- name: "CMPE371",
- price: 400,
- contactLink:
- "https://www.instagram.com/ccakmakfurkan?igsh=Mnl5YjZmZmw2Y2t1",
- },
-];
-
export default function page() {
return (
-
-
-
- Back to Home
-
-
Private Classes
-
-
- {privateClasses.map((classItem) => (
-
-
-
- {classItem.name}
-
-
- Price: {classItem.price} TL
-
-
- Contact
-
-
-
- ))}
-
-
-
-
+ <>
+
+
+
+
+ >
);
}
diff --git a/src/app/(categories)/(en)/restaurants/RestaurantsData.tsx b/src/app/(categories)/(en)/restaurants/RestaurantsData.tsx
new file mode 100644
index 0000000..dc3d159
--- /dev/null
+++ b/src/app/(categories)/(en)/restaurants/RestaurantsData.tsx
@@ -0,0 +1,239 @@
+import { MapPin, Clock, Banknote, MessageSquare } from "lucide-react";
+
+import { getRestaurants } from "@/actions/restaurant.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface Cafe {
+ name: string;
+ location: string;
+ googleMapsUrl: string;
+ openTime: string;
+ closeTime: string;
+ studyScore: number;
+ priceRange: "$" | "$$" | "$$$";
+ comments: string[];
+}
+
+const cafes: Cafe[] = [
+ {
+ name: "Ekor Vista",
+ location: "Alfam Vista",
+ googleMapsUrl: "https://maps.app.goo.gl/jU9wFTwvqoYJzCgi7",
+ openTime: "07:00",
+ closeTime: "00:00",
+ studyScore: 7,
+ priceRange: "$$",
+ comments: ["Good food", "Always has space", "Popular place"],
+ },
+ {
+ name: "Miami Restaurant",
+ location: "Prime Dormitory",
+ googleMapsUrl: "https://maps.app.goo.gl/jU9wFTwvqoYJzCgi7",
+ openTime: "11:00",
+ closeTime: "20:00",
+ studyScore: 5,
+ priceRange: "$",
+ comments: ["Pay for what you get", "Clean & healthy food", "Quiet"],
+ },
+ {
+ name: "Twister Cafe",
+ location: "Ugursal Dormitory",
+ googleMapsUrl: "https://maps.app.goo.gl/Ehus6ehBBXu4qbYs9",
+ openTime: "11:00",
+ closeTime: "00:00",
+ studyScore: 5,
+ priceRange: "$",
+ comments: ["Fast", "Quiet", "Fair prices"],
+ },
+ {
+ name: "Jojo Cafe",
+ location: "Computer Engineering Building",
+ googleMapsUrl: "https://maps.app.goo.gl/sPhhxqCWg73to7fRA",
+ openTime: "07:00",
+ closeTime: "19:00",
+ studyScore: 9,
+ priceRange: "$$",
+ comments: ["Best place to study", "Good food", "Plugs available"],
+ },
+ {
+ name: "Baron Cafe",
+ location: "Law Building",
+ googleMapsUrl: "https://maps.app.goo.gl/on3ztvvgFTpGTf3t9",
+ openTime: "07:00",
+ closeTime: "19:00",
+ studyScore: 6,
+ priceRange: "$$",
+ comments: ["Always has space", "Offers food & market", "Central location"],
+ },
+ {
+ name: "The King of Chicken Burger",
+ location: "Campus Enterance",
+ googleMapsUrl: "https://maps.app.goo.gl/N2dUbD1uKRyDQBL48",
+ openTime: "11:30",
+ closeTime: "10:00",
+ studyScore: 6,
+ priceRange: "$$",
+ comments: ["Large portions", "Slow delivery times", "Great for groups"],
+ },
+ {
+ name: "Tabledot Restaurant",
+ location: "Eastern Mediterranean University",
+ googleMapsUrl: "https://maps.app.goo.gl/obRKJpGnz2gSFg1B7",
+ openTime: "07:00",
+ closeTime: "19:00",
+ studyScore: 6,
+ priceRange: "$$",
+ comments: ["Popular place", "Central location", "Has AC"],
+ },
+ {
+ name: "Sandras Cafe",
+ location: "Central Lecture Hall",
+ googleMapsUrl: "https://maps.app.goo.gl/JAiuxVeezR5YWNS7A",
+ openTime: "07:00",
+ closeTime: "19:00",
+ studyScore: 7,
+ priceRange: "$$",
+ comments: ["Clean", "Has pool table & pinball", "Has a market"],
+ },
+ {
+ name: "Sultan Cafe",
+ location: "Ozay Oral Library",
+ googleMapsUrl: "https://maps.app.goo.gl/n2tmnWstt4d58aZr5",
+ openTime: "07:00",
+ closeTime: "19:00",
+ studyScore: 7,
+ priceRange: "$",
+ comments: [
+ "Open 24/7 during exam weeks",
+ "Very friendly",
+ "Has a market & cafe",
+ ],
+ },
+ {
+ name: "R&D Cafe",
+ location: "Faculty of Education",
+ googleMapsUrl: "https://maps.app.goo.gl/atJum7j5HEnveN729",
+ openTime: "07:00",
+ closeTime: "19:00",
+ studyScore: 6,
+ priceRange: "$$",
+ comments: ["Big space", "Good food & coffee", "Has a market"],
+ },
+ {
+ name: "Sosla Bi Doner",
+ location: "Roundabout",
+ googleMapsUrl: "https://maps.app.goo.gl/73uUhX1GdkpLTqvx7",
+ openTime: "07:00",
+ closeTime: "02:00",
+ studyScore: 5,
+ priceRange: "$",
+ comments: ["Cheap", "Fast", "Outside of campus"],
+ },
+ {
+ name: "Crunchy",
+ location: "Roundabout",
+ googleMapsUrl: "https://maps.app.goo.gl/wmCygC6vCypMMnM86",
+ openTime: "12:00",
+ closeTime: "03:00",
+ studyScore: 7,
+ priceRange: "$$",
+ comments: ["Good quality", "Tasty", "Quiet"],
+ },
+ {
+ name: "Red Bear Restaurant",
+ location: "Ismet Inönü Blv",
+ googleMapsUrl: "https://maps.app.goo.gl/CuFghNdNM5HCpKJA8",
+ openTime: "08:00",
+ closeTime: "00:00",
+ studyScore: 7,
+ priceRange: "$$",
+ comments: ["Good quality", "Tasty", "Quiet"],
+ },
+ {
+ name: "Şampiyon Restaurant",
+ location: "Ismet Inönü Blv",
+ googleMapsUrl: "https://maps.app.goo.gl/cUAC9wKx5YZAkyQx7",
+ openTime: "10:00",
+ closeTime: "21:00",
+ studyScore: 5,
+ priceRange: "$$",
+ comments: ["Good quality", "Tasty", "Quiet"],
+ },
+];
+
+export default async function RestaurantsData({
+ lang,
+}: {
+ lang?: "en" | "tr";
+}) {
+ const cafes: Cafe[] = await getRestaurants();
+
+ if (!cafes || !cafes.length) {
+ return ;
+ }
+
+ return (
+
+ {cafes.map((cafe, index) => (
+
+
+ {cafe.name}
+
+
+
+
+
+ {cafe.location}
+
+
+
+
+ {cafe.openTime} - {cafe.closeTime}
+
+
+
+ {cafe.priceRange}
+
+
+
+ {lang === "en" ? "Study Store" : "Ders Çalışma Ortamı"}:
+
+ = 8
+ ? "bg-green-100 text-green-800"
+ : cafe.studyScore >= 5
+ ? "bg-yellow-100 text-yellow-800"
+ : "bg-red-100 text-red-800"
+ }`}
+ >
+ {cafe.studyScore}/10
+
+
+
+
+
+ {lang === "en" ? "Comments" : "Yorumlar"}
+
+
+ {cafe.comments.map((comment, i) => (
+
+ {comment}
+
+ ))}
+
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/restaurants/page.tsx b/src/app/(categories)/(en)/restaurants/page.tsx
index 3b84365..138d4d0 100644
--- a/src/app/(categories)/(en)/restaurants/page.tsx
+++ b/src/app/(categories)/(en)/restaurants/page.tsx
@@ -1,249 +1,15 @@
-import Link from "next/link";
-import {
- MapPin,
- Clock,
- Banknote,
- ArrowLeft,
- MessageSquare,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import RestaurantsData from "./RestaurantsData";
export const metadata: Metadata = {
title: "Restaurants",
};
-interface Cafe {
- name: string;
- location: string;
- googleMapsUrl: string;
- openTime: string;
- closeTime: string;
- studyScore: number;
- priceRange: "$" | "$$" | "$$$";
- comments: string[];
-}
-
-const cafes: Cafe[] = [
- {
- name: "Ekor Vista",
- location: "Alfam Vista",
- googleMapsUrl: "https://maps.app.goo.gl/jU9wFTwvqoYJzCgi7",
- openTime: "07:00",
- closeTime: "00:00",
- studyScore: 7,
- priceRange: "$$",
- comments: ["Good food", "Always has space", "Popular place"],
- },
- {
- name: "Miami Restaurant",
- location: "Prime Dormitory",
- googleMapsUrl: "https://maps.app.goo.gl/jU9wFTwvqoYJzCgi7",
- openTime: "11:00",
- closeTime: "20:00",
- studyScore: 5,
- priceRange: "$",
- comments: ["Pay for what you get", "Clean & healthy food", "Quiet"],
- },
- {
- name: "Twister Cafe",
- location: "Ugursal Dormitory",
- googleMapsUrl: "https://maps.app.goo.gl/Ehus6ehBBXu4qbYs9",
- openTime: "11:00",
- closeTime: "00:00",
- studyScore: 5,
- priceRange: "$",
- comments: ["Fast", "Quiet", "Fair prices"],
- },
- {
- name: "Jojo Cafe",
- location: "Computer Engineering Building",
- googleMapsUrl: "https://maps.app.goo.gl/sPhhxqCWg73to7fRA",
- openTime: "07:00",
- closeTime: "19:00",
- studyScore: 9,
- priceRange: "$$",
- comments: ["Best place to study", "Good food", "Plugs available"],
- },
- {
- name: "Baron Cafe",
- location: "Law Building",
- googleMapsUrl: "https://maps.app.goo.gl/on3ztvvgFTpGTf3t9",
- openTime: "07:00",
- closeTime: "19:00",
- studyScore: 6,
- priceRange: "$$",
- comments: ["Always has space", "Offers food & market", "Central location"],
- },
- {
- name: "The King of Chicken Burger",
- location: "Campus Enterance",
- googleMapsUrl: "https://maps.app.goo.gl/N2dUbD1uKRyDQBL48",
- openTime: "11:30",
- closeTime: "10:00",
- studyScore: 6,
- priceRange: "$$",
- comments: ["Large portions", "Slow delivery times", "Great for groups"],
- },
- {
- name: "Tabledot Restaurant",
- location: "Eastern Mediterranean University",
- googleMapsUrl: "https://maps.app.goo.gl/obRKJpGnz2gSFg1B7",
- openTime: "07:00",
- closeTime: "19:00",
- studyScore: 6,
- priceRange: "$$",
- comments: ["Popular place", "Central location", "Has AC"],
- },
- {
- name: "Sandras Cafe",
- location: "Central Lecture Hall",
- googleMapsUrl: "https://maps.app.goo.gl/JAiuxVeezR5YWNS7A",
- openTime: "07:00",
- closeTime: "19:00",
- studyScore: 7,
- priceRange: "$$",
- comments: ["Clean", "Has pool table & pinball", "Has a market"],
- },
- {
- name: "Sultan Cafe",
- location: "Ozay Oral Library",
- googleMapsUrl: "https://maps.app.goo.gl/n2tmnWstt4d58aZr5",
- openTime: "07:00",
- closeTime: "19:00",
- studyScore: 7,
- priceRange: "$",
- comments: [
- "Open 24/7 during exam weeks",
- "Very friendly",
- "Has a market & cafe",
- ],
- },
- {
- name: "R&D Cafe",
- location: "Faculty of Education",
- googleMapsUrl: "https://maps.app.goo.gl/atJum7j5HEnveN729",
- openTime: "07:00",
- closeTime: "19:00",
- studyScore: 6,
- priceRange: "$$",
- comments: ["Big space", "Good food & coffee", "Has a market"],
- },
- {
- name: "Sosla Bi Doner",
- location: "Roundabout",
- googleMapsUrl: "https://maps.app.goo.gl/73uUhX1GdkpLTqvx7",
- openTime: "07:00",
- closeTime: "02:00",
- studyScore: 5,
- priceRange: "$",
- comments: ["Cheap", "Fast", "Outside of campus"],
- },
- {
- name: "Crunchy",
- location: "Roundabout",
- googleMapsUrl: "https://maps.app.goo.gl/wmCygC6vCypMMnM86",
- openTime: "12:00",
- closeTime: "03:00",
- studyScore: 7,
- priceRange: "$$",
- comments: ["Good quality", "Tasty", "Quiet"],
- },
- {
- name: "Red Bear Restaurant",
- location: "Ismet Inönü Blv",
- googleMapsUrl: "https://maps.app.goo.gl/CuFghNdNM5HCpKJA8",
- openTime: "08:00",
- closeTime: "00:00",
- studyScore: 7,
- priceRange: "$$",
- comments: ["Good quality", "Tasty", "Quiet"],
- },
- {
- name: "Şampiyon Restaurant",
- location: "Ismet Inönü Blv",
- googleMapsUrl: "https://maps.app.goo.gl/cUAC9wKx5YZAkyQx7",
- openTime: "10:00",
- closeTime: "21:00",
- studyScore: 5,
- priceRange: "$$",
- comments: ["Good quality", "Tasty", "Quiet"],
- },
-];
-
export default function page() {
return (
-
-
-
- Back to Home
-
-
- Restaurants near EMU
-
-
- {cafes.map((cafe, index) => (
-
-
- {cafe.name}
-
-
-
-
-
- {cafe.location}
-
-
-
-
- {cafe.openTime} - {cafe.closeTime}
-
-
-
- {cafe.priceRange}
-
-
- Study Score:
- = 8
- ? "bg-green-100 text-green-800"
- : cafe.studyScore >= 5
- ? "bg-yellow-100 text-yellow-800"
- : "bg-red-100 text-red-800"
- }`}
- >
- {cafe.studyScore}/10
-
-
-
-
-
- Comments
-
-
- {cafe.comments.map((comment, i) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/scholarships/ScholarshipsData.tsx b/src/app/(categories)/(en)/scholarships/ScholarshipsData.tsx
new file mode 100644
index 0000000..75b0cc4
--- /dev/null
+++ b/src/app/(categories)/(en)/scholarships/ScholarshipsData.tsx
@@ -0,0 +1,123 @@
+import { ExternalLink, GraduationCap } from "lucide-react";
+import { getScholarships } from "@/actions/scholarship.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface Scholarship {
+ id: number;
+ name: string;
+ explanation: string;
+ officialLink: string;
+}
+
+/* const scholarships: Scholarship[] = [
+ {
+ id: 1,
+ name: "International Student Scholarship",
+ explanation:
+ "Offered to international students with 50% or 25% tuition waivers based on academic merit. Competitive full scholarships are available at the undergraduate and PhD levels.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 2,
+ name: "All-inclusive Scholarships",
+ explanation:
+ "For the top 1% of secondary school graduates, this covers tuition, accommodation, and meals. Applications are evaluated annually.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 3,
+ name: "Tuition Fee Waivers",
+ explanation:
+ "Offered to top-performing undergraduate applicants. The waiver covers tuition for the regular duration of the program.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 4,
+ name: "High Honor Award",
+ explanation:
+ "Granted to top 10 students in each faculty or school, based on GPA, offering cash awards based on minimum wage.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 5,
+ name: "Sports Grant",
+ explanation:
+ "Full or partial tuition/accommodation grant for exceptional individual or team sports performance.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 6,
+ name: "Student Assistantship",
+ explanation:
+ "Offers positions across faculties for students with GPA > 2.0, providing hourly stipends.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 7,
+ name: "Research Assistantship",
+ explanation:
+ "Graduate students can apply for full or part-time positions that offer tuition waivers and salaries.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 8,
+ name: "Sibling Discounts",
+ explanation:
+ "Discounts of 25%-75% for siblings studying at EMU. Postgraduate siblings can get a 10% discount.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+ {
+ id: 9,
+ name: "TRNC Government Scholarship",
+ explanation:
+ "Scholarship for successful students applying through TRNC or Turkish consular missions.",
+ officialLink:
+ "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
+ },
+]; */
+
+export default async function ScholarshipsData({
+ lang,
+}: {
+ lang?: "en" | "tr";
+}) {
+ const scholarships: Scholarship[] = await getScholarships();
+
+ if (!scholarships || !scholarships.length) {
+ return ;
+ }
+
+ return (
+
+ {scholarships.map((scholarship) => (
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/scholarships/page.tsx b/src/app/(categories)/(en)/scholarships/page.tsx
index ddf553e..1834937 100644
--- a/src/app/(categories)/(en)/scholarships/page.tsx
+++ b/src/app/(categories)/(en)/scholarships/page.tsx
@@ -1,128 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, GraduationCap } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import ScholarshipsData from "./ScholarshipsData";
export const metadata: Metadata = {
title: "Scholarships",
};
-interface Scholarship {
- id: number;
- name: string;
- explanation: string;
- officialLink: string;
-}
-
-const scholarships: Scholarship[] = [
- {
- id: 1,
- name: "International Student Scholarship",
- explanation:
- "Offered to international students with 50% or 25% tuition waivers based on academic merit. Competitive full scholarships are available at the undergraduate and PhD levels.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 2,
- name: "All-inclusive Scholarships",
- explanation:
- "For the top 1% of secondary school graduates, this covers tuition, accommodation, and meals. Applications are evaluated annually.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 3,
- name: "Tuition Fee Waivers",
- explanation:
- "Offered to top-performing undergraduate applicants. The waiver covers tuition for the regular duration of the program.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 4,
- name: "High Honor Award",
- explanation:
- "Granted to top 10 students in each faculty or school, based on GPA, offering cash awards based on minimum wage.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 5,
- name: "Sports Grant",
- explanation:
- "Full or partial tuition/accommodation grant for exceptional individual or team sports performance.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 6,
- name: "Student Assistantship",
- explanation:
- "Offers positions across faculties for students with GPA > 2.0, providing hourly stipends.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 7,
- name: "Research Assistantship",
- explanation:
- "Graduate students can apply for full or part-time positions that offer tuition waivers and salaries.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 8,
- name: "Sibling Discounts",
- explanation:
- "Discounts of 25%-75% for siblings studying at EMU. Postgraduate siblings can get a 10% discount.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
- {
- id: 9,
- name: "TRNC Government Scholarship",
- explanation:
- "Scholarship for successful students applying through TRNC or Turkish consular missions.",
- officialLink:
- "https://io.emu.edu.tr/en/students/prospective-students/scholarships",
- },
-];
-
export default function ScholarshipsPage() {
return (
-
-
-
- Back to Home
-
-
EMU Scholarships
-
- {scholarships.map((scholarship) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/stationery/StationaryData.tsx b/src/app/(categories)/(en)/stationery/StationaryData.tsx
new file mode 100644
index 0000000..3d06d70
--- /dev/null
+++ b/src/app/(categories)/(en)/stationery/StationaryData.tsx
@@ -0,0 +1,112 @@
+import { ExternalLink, MapPin, Banknote, Printer, Book } from "lucide-react";
+
+import { getStationeries } from "@/actions/stationery.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface Stationary {
+ id: number;
+ name: string;
+ priceScale: "$" | "$$" | "$$$";
+ place: string;
+ googleMapsUrl: string;
+ services: string[];
+}
+
+/* const stationaryShops: Stationary[] = [
+ {
+ id: 1,
+ name: "Campus Copy Center",
+ priceScale: "$$",
+ place: "Alfam Vista",
+ googleMapsUrl: "https://maps.app.goo.gl/XaP7Ko6ai8bCFZqx9",
+ services: ["Printing", "Regular stationary", "Office supplies"],
+ },
+ {
+ id: 2,
+ name: "Deniz Shop",
+ priceScale: "$$$",
+ place: "Central Lecture Hall",
+ googleMapsUrl: "https://maps.app.goo.gl/REqKjwtF15mYtpqf6",
+ services: [
+ "High-quality printing",
+ "Offical academic books",
+ "All kinds of stationary",
+ ],
+ },
+ {
+ id: 3,
+ name: "Gunes Kirtasiye",
+ priceScale: "$",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/kEZ1vf2w9X3TSWwG6",
+ services: ["Cheap printing", "Regual stationary"],
+ },
+ {
+ id: 4,
+ name: "Harmony Copy Center",
+ priceScale: "$$",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/dVfPuVamM3ZgBYAz9",
+ services: ["Printing", "Books", "Music related stuff"],
+ },
+]; */
+
+export default async function StationaryData({ lang }: { lang?: "en" | "tr" }) {
+ const stationaryShops: Stationary[] = await getStationeries();
+
+ if (!stationaryShops || !stationaryShops.length) {
+ return ;
+ }
+
+ return (
+
+ {stationaryShops.map((shop) => (
+
+
+ {shop.name}
+
+
+
+
+
+ {shop.place}
+
+
+
+
+
+ {shop.priceScale}
+
+
+
Services:
+
+ {shop.services.map((service, index) => (
+
+ {service.toLowerCase().includes("printing") && (
+
+ )}
+ {service.toLowerCase().includes("book") && (
+
+ )}
+ {service}
+
+ ))}
+
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/stationery/page.tsx b/src/app/(categories)/(en)/stationery/page.tsx
index 40d1ae5..f7af30e 100644
--- a/src/app/(categories)/(en)/stationery/page.tsx
+++ b/src/app/(categories)/(en)/stationery/page.tsx
@@ -1,130 +1,15 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- ExternalLink,
- MapPin,
- Banknote,
- Printer,
- Book,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import StationaryData from "./StationaryData";
export const metadata: Metadata = {
title: "Stationery",
};
-interface Stationary {
- id: number;
- name: string;
- priceScale: "$" | "$$" | "$$$";
- place: string;
- googleMapsUrl: string;
- services: string[];
-}
-
-const stationaryShops: Stationary[] = [
- {
- id: 1,
- name: "Campus Copy Center",
- priceScale: "$$",
- place: "Alfam Vista",
- googleMapsUrl: "https://maps.app.goo.gl/XaP7Ko6ai8bCFZqx9",
- services: ["Printing", "Regular stationary", "Office supplies"],
- },
- {
- id: 2,
- name: "Deniz Shop",
- priceScale: "$$$",
- place: "Central Lecture Hall",
- googleMapsUrl: "https://maps.app.goo.gl/REqKjwtF15mYtpqf6",
- services: [
- "High-quality printing",
- "Offical academic books",
- "All kinds of stationary",
- ],
- },
- {
- id: 3,
- name: "Gunes Kirtasiye",
- priceScale: "$",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/kEZ1vf2w9X3TSWwG6",
- services: ["Cheap printing", "Regual stationary"],
- },
- {
- id: 4,
- name: "Harmony Copy Center",
- priceScale: "$$",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/dVfPuVamM3ZgBYAz9",
- services: ["Printing", "Books", "Music related stuff"],
- },
-];
-
export default function StationaryPage() {
return (
-
-
-
- Back to Home
-
-
- Stationery Shops
-
-
-
- {stationaryShops.map((shop) => (
-
-
- {shop.name}
-
-
-
-
-
- {shop.place}
-
-
-
-
-
- {shop.priceScale}
-
-
-
Services:
-
- {shop.services.map((service, index) => (
-
- {service.toLowerCase().includes("printing") && (
-
- )}
- {service.toLowerCase().includes("book") && (
-
- )}
- {service}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/stores/StoresData.tsx b/src/app/(categories)/(en)/stores/StoresData.tsx
new file mode 100644
index 0000000..17f725d
--- /dev/null
+++ b/src/app/(categories)/(en)/stores/StoresData.tsx
@@ -0,0 +1,216 @@
+import { ExternalLink, MapPin, Tag, Laptop, Shirt } from "lucide-react";
+import { getStores } from "@/actions/store.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface Store {
+ id: number;
+ name: string;
+ type: string;
+ place: string;
+ googleMapsUrl: string;
+}
+
+/* const stores: Store[] = [
+ {
+ id: 1,
+ name: "Durmazz Computer",
+ type: "Technology",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/rvaj4X9WcdcJNUqj6",
+ },
+ {
+ id: 2,
+ name: "OWL Wear",
+ type: "Clothes",
+ place: "Roundabout",
+ googleMapsUrl: "https://maps.app.goo.gl/JZzbbSVyAfJdPwtZ8",
+ },
+ {
+ id: 3,
+ name: "Cha Cha",
+ type: "Clothes",
+ place: "Roundabout",
+ googleMapsUrl: "https://maps.app.goo.gl/HUNA6Y31PyBUdSmC9",
+ },
+ {
+ id: 4,
+ name: "Sezai Quality Phones",
+ type: "Technology",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/7LkF3uPEZwCDMbz29",
+ },
+ {
+ id: 5,
+ name: "Pure Bling Jewelry",
+ type: "Jewelry",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/vKMiW2iP9qRZuzv89",
+ },
+ {
+ id: 6,
+ name: "Mavi Jeans",
+ type: "Clothes",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/yVmNPVqgqTWkyMmd8",
+ },
+ {
+ id: 7,
+ name: "Exbi Exchange",
+ type: "Exchange",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/VDMW7AudxPqiRbq27",
+ },
+ {
+ id: 8,
+ name: "Süvari Famagusta",
+ type: "Clothes",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/odRhHY4pRTpGLWX67",
+ },
+ {
+ id: 9,
+ name: "Shoe For Me",
+ type: "Clothes",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/x9ME7BxCHeQEvBqo7",
+ },
+ {
+ id: 10,
+ name: "LC Waikiki",
+ type: "Clothes",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/puBYXzNm9AfKLXpCA",
+ },
+ {
+ id: 11,
+ name: "Old City Watch",
+ type: "Watch & Jewelry",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/sFy8698EfkRcYoY59",
+ },
+ {
+ id: 12,
+ name: "A&A Premium Man",
+ type: "Clothes",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/SnrNmeNr2jnA82sH6",
+ },
+ {
+ id: 13,
+ name: "Sports Market",
+ type: "Sport Equipment",
+ place: "İsmet İnönü Street",
+ googleMapsUrl: "https://maps.app.goo.gl/vtJj4sLVbTWkuCiW8",
+ },
+ {
+ id: 14,
+ name: "Kemaler Shoes",
+ type: "Clothes",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/VCcF9zYv5tZD5rMS7",
+ },
+ {
+ id: 15,
+ name: "HABLS Wear & Sneakers",
+ type: "Clothes",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/6Q5gDtDFZuQhJd5e7",
+ },
+ {
+ id: 16,
+ name: "Şaşa Accessories",
+ type: "Clothes",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/jHvxz5wUUDGc57M38",
+ },
+ {
+ id: 17,
+ name: "Flormar Cosmetic Store",
+ type: "Cosmetic",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/jHvxz5wUUDGc57M38",
+ },
+ {
+ id: 18,
+ name: "Oopss",
+ type: "General",
+ place: "Macro Mall",
+ googleMapsUrl: "https://maps.app.goo.gl/CWJk3aA5aSEZRA4F8",
+ },
+ {
+ id: 19,
+ name: "Tekzen",
+ type: "Home & Garden",
+ place: "Macro Mall",
+ googleMapsUrl: "https://maps.app.goo.gl/A63FgecwX4HpP1kGA",
+ },
+ {
+ id: 20,
+ name: "IQOS Store",
+ type: "Tobacco",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/huU4kQyW4AmAQNZd9",
+ },
+ {
+ id: 21,
+ name: "DeFacto",
+ type: "Clothes",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/a5rdSWEQsDPjt9q57",
+ },
+ {
+ id: 21,
+ name: "Çavus Phones",
+ type: "Technology",
+ place: "Salamis Road",
+ googleMapsUrl: "https://maps.app.goo.gl/exhpeKqUboDN9QPL6",
+ },
+];
+ */
+export default async function StoresData({ lang }: { lang?: "en" | "tr" }) {
+ const stores: Store[] = await getStores();
+
+ if (!stores || !stores.length) {
+ return ;
+ }
+
+ return (
+
+ {stores.map((store) => (
+
+
+ {store.type === "Technology" && (
+
+ )}
+ {store.type === "Clothes" && (
+
+ )}
+ {store.type !== "Technology" && store.type !== "Clothes" && (
+
+ )}
+ {store.name}
+
+
+ {lang === "en" ? "Type" : "İçerik"}:{" "}
+ {store.type}
+
+
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/stores/page.tsx b/src/app/(categories)/(en)/stores/page.tsx
index 934c67a..9fe7c87 100644
--- a/src/app/(categories)/(en)/stores/page.tsx
+++ b/src/app/(categories)/(en)/stores/page.tsx
@@ -1,233 +1,15 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- ExternalLink,
- MapPin,
- Tag,
- Laptop,
- Shirt,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import StoresData from "./StoresData";
export const metadata: Metadata = {
title: "Stores",
};
-interface Store {
- id: number;
- name: string;
- type: string;
- place: string;
- googleMapsUrl: string;
-}
-
-const stores: Store[] = [
- {
- id: 1,
- name: "Durmazz Computer",
- type: "Technology",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/rvaj4X9WcdcJNUqj6",
- },
- {
- id: 2,
- name: "OWL Wear",
- type: "Clothes",
- place: "Roundabout",
- googleMapsUrl: "https://maps.app.goo.gl/JZzbbSVyAfJdPwtZ8",
- },
- {
- id: 3,
- name: "Cha Cha",
- type: "Clothes",
- place: "Roundabout",
- googleMapsUrl: "https://maps.app.goo.gl/HUNA6Y31PyBUdSmC9",
- },
- {
- id: 4,
- name: "Sezai Quality Phones",
- type: "Technology",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/7LkF3uPEZwCDMbz29",
- },
- {
- id: 5,
- name: "Pure Bling Jewelry",
- type: "Jewelry",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/vKMiW2iP9qRZuzv89",
- },
- {
- id: 6,
- name: "Mavi Jeans",
- type: "Clothes",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/yVmNPVqgqTWkyMmd8",
- },
- {
- id: 7,
- name: "Exbi Exchange",
- type: "Exchange",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/VDMW7AudxPqiRbq27",
- },
- {
- id: 8,
- name: "Süvari Famagusta",
- type: "Clothes",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/odRhHY4pRTpGLWX67",
- },
- {
- id: 9,
- name: "Shoe For Me",
- type: "Clothes",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/x9ME7BxCHeQEvBqo7",
- },
- {
- id: 10,
- name: "LC Waikiki",
- type: "Clothes",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/puBYXzNm9AfKLXpCA",
- },
- {
- id: 11,
- name: "Old City Watch",
- type: "Watch & Jewelry",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/sFy8698EfkRcYoY59",
- },
- {
- id: 12,
- name: "A&A Premium Man",
- type: "Clothes",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/SnrNmeNr2jnA82sH6",
- },
- {
- id: 13,
- name: "Sports Market",
- type: "Sport Equipment",
- place: "İsmet İnönü Street",
- googleMapsUrl: "https://maps.app.goo.gl/vtJj4sLVbTWkuCiW8",
- },
- {
- id: 14,
- name: "Kemaler Shoes",
- type: "Clothes",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/VCcF9zYv5tZD5rMS7",
- },
- {
- id: 15,
- name: "HABLS Wear & Sneakers",
- type: "Clothes",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/6Q5gDtDFZuQhJd5e7",
- },
- {
- id: 16,
- name: "Şaşa Accessories",
- type: "Clothes",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/jHvxz5wUUDGc57M38",
- },
- {
- id: 17,
- name: "Flormar Cosmetic Store",
- type: "Cosmetic",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/jHvxz5wUUDGc57M38",
- },
- {
- id: 18,
- name: "Oopss",
- type: "General",
- place: "Macro Mall",
- googleMapsUrl: "https://maps.app.goo.gl/CWJk3aA5aSEZRA4F8",
- },
- {
- id: 19,
- name: "Tekzen",
- type: "Home & Garden",
- place: "Macro Mall",
- googleMapsUrl: "https://maps.app.goo.gl/A63FgecwX4HpP1kGA",
- },
- {
- id: 20,
- name: "IQOS Store",
- type: "Tobacco",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/huU4kQyW4AmAQNZd9",
- },
- {
- id: 21,
- name: "DeFacto",
- type: "Clothes",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/a5rdSWEQsDPjt9q57",
- },
- {
- id: 21,
- name: "Çavus Phones",
- type: "Technology",
- place: "Salamis Road",
- googleMapsUrl: "https://maps.app.goo.gl/exhpeKqUboDN9QPL6",
- },
-];
-
export default function StoresPage() {
return (
-
-
-
- Back to Home
-
-
Explore Stores
-
-
- {stores.map((store) => (
-
-
- {store.type === "Technology" && (
-
- )}
- {store.type === "Clothes" && (
-
- )}
- {store.type !== "Technology" && store.type !== "Clothes" && (
-
- )}
- {store.name}
-
-
- Type:{" "}
- {store.type}
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(en)/transportation/TransportationData.tsx b/src/app/(categories)/(en)/transportation/TransportationData.tsx
new file mode 100644
index 0000000..69d3a71
--- /dev/null
+++ b/src/app/(categories)/(en)/transportation/TransportationData.tsx
@@ -0,0 +1,86 @@
+import { ExternalLink, Bus, CarTaxiFront } from "lucide-react";
+import { getTransportations } from "@/actions/transportation.actions";
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+
+interface Transportation {
+ id: number;
+ name: string;
+ type: string;
+ explanation: string;
+ officialLink: string;
+}
+
+/* const transportations: Transportation[] = [
+ {
+ id: 1,
+ name: "EMU Shuttle Service",
+ type: "bus",
+ explanation:
+ "Free shuttle service for students between campus and city center.",
+ officialLink: "https://transportation.emu.edu.tr/en/bus-services",
+ },
+ {
+ id: 2,
+ name: "İtimat",
+ type: "bus",
+ explanation:
+ "Private bus service for going and coming from Nicosia every hour.",
+ officialLink: "https://itimatgroup.com/toplu-ta%C5%9Fima",
+ },
+ {
+ id: 2,
+ name: "KIB-HAS",
+ type: "bus",
+ explanation: "Private bus service for going and coming from airport.",
+ officialLink: "http://kibhas.org/",
+ },
+ {
+ id: 3,
+ name: "Kıbrıs Taxi",
+ type: "taxi",
+ explanation: "Taxi service for pretty much anything you need.",
+ officialLink: "https://taksikktc.com/",
+ },
+]; */
+
+export default async function TransportationData({
+ lang,
+}: {
+ lang?: "en" | "tr";
+}) {
+ const transportations: Transportation[] = await getTransportations();
+
+ if (!transportations || !transportations.length) {
+ return ;
+ }
+
+ return (
+
+ {transportations.map((transport) => (
+
+ ))}
+
+ );
+}
diff --git a/src/app/(categories)/(en)/transportation/page.tsx b/src/app/(categories)/(en)/transportation/page.tsx
index 21dea66..9f683ea 100644
--- a/src/app/(categories)/(en)/transportation/page.tsx
+++ b/src/app/(categories)/(en)/transportation/page.tsx
@@ -1,91 +1,15 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Bus, CarTaxiFront } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import TransportationData from "./TransportationData";
export const metadata: Metadata = {
title: "Transportation",
};
-interface Transportation {
- id: number;
- name: string;
- type: string;
- explanation: string;
- officialLink: string;
-}
-
-const transportations: Transportation[] = [
- {
- id: 1,
- name: "EMU Shuttle Service",
- type: "bus",
- explanation:
- "Free shuttle service for students between campus and city center.",
- officialLink: "https://transportation.emu.edu.tr/en/bus-services",
- },
- {
- id: 2,
- name: "İtimat",
- type: "bus",
- explanation:
- "Private bus service for going and coming from Nicosia every hour.",
- officialLink: "https://itimatgroup.com/toplu-ta%C5%9Fima",
- },
- {
- id: 2,
- name: "KIB-HAS",
- type: "bus",
- explanation: "Private bus service for going and coming from airport.",
- officialLink: "http://kibhas.org/",
- },
- {
- id: 3,
- name: "Kıbrıs Taxi",
- type: "taxi",
- explanation: "Taxi service for pretty much anything you need.",
- officialLink: "https://taksikktc.com/",
- },
-];
-
export default function page() {
return (
-
-
-
- Back to Home
-
-
EMU Transportation Options
-
- {transportations.map((transport) => (
-
-
- {transport.type === "bus" ? (
-
- ) : (
-
- )}
- {transport.name}
-
-
{transport.explanation}
-
- Official Page
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/burslar/page.tsx b/src/app/(categories)/(tr)/burslar/page.tsx
index 05549f6..24709a9 100644
--- a/src/app/(categories)/(tr)/burslar/page.tsx
+++ b/src/app/(categories)/(tr)/burslar/page.tsx
@@ -1,20 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, GraduationCap } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import ScholarshipsData from "../../(en)/scholarships/ScholarshipsData";
export const metadata: Metadata = {
title: "Burslar",
};
-interface Scholarship {
- id: number;
- name: string;
- explanation: string;
- officialLink: string;
-}
-
-const scholarships: Scholarship[] = [
+/* const scholarships: Scholarship[] = [
{
id: 1,
name: "Uluslararası Öğrenci Bursu",
@@ -87,42 +79,12 @@ const scholarships: Scholarship[] = [
officialLink:
"https://io.emu.edu.tr/en/students/prospective-students/scholarships",
},
-];
+]; */
export default function ScholarshipsPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
DAÜ Bursları
-
- {scholarships.map((scholarship) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/eglence/page.tsx b/src/app/(categories)/(tr)/eglence/page.tsx
index 76cc997..0044aa4 100644
--- a/src/app/(categories)/(tr)/eglence/page.tsx
+++ b/src/app/(categories)/(tr)/eglence/page.tsx
@@ -1,28 +1,12 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- Banknote,
- ExternalLink,
- MessageSquare,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import EntertainmentData from "../../(en)/entertainment/EntertainmentData";
export const metadata: Metadata = {
title: "Eğlence",
};
-interface Entertainment {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- priceRange: "$" | "$$" | "$$$";
- comments: string[];
-}
-
-const entertainments: Entertainment[] = [
+/* const entertainments: Entertainment[] = [
{
id: 1,
name: "BARCODE",
@@ -195,64 +179,12 @@ const entertainments: Entertainment[] = [
"Güler yüzlü",
],
},
-];
+]; */
export default function EntertainmentPage() {
return (
-
-
-
- Ana Sayfaya Dön
-
-
- DAÜ'de Eğlence
-
-
- {entertainments.map((ent) => (
-
-
- {ent.name}
-
-
-
-
-
- {ent.place}
-
-
-
-
-
- {ent.priceRange}
-
-
-
-
- Yorumlar
-
-
- {ent.comments.map((comment, index) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/error.tsx b/src/app/(categories)/(tr)/error.tsx
new file mode 100644
index 0000000..1aa403f
--- /dev/null
+++ b/src/app/(categories)/(tr)/error.tsx
@@ -0,0 +1,29 @@
+"use client";
+
+import ErrorHeader from "@/components/ui/ErrorHeader/ErrorHeader";
+import { useEffect } from "react";
+
+export default function Error({
+ error,
+ reset,
+}: {
+ error: Error & { digest?: string; message?: string };
+ reset: () => void;
+}) {
+ useEffect(() => {
+ console.error(error);
+ }, [error]);
+
+ return (
+
+ reset()}
+ >
+ Tekrar deneyin
+
+
+ );
+}
diff --git a/src/app/(categories)/(tr)/etkinlikler/page.tsx b/src/app/(categories)/(tr)/etkinlikler/page.tsx
index ed7cec2..625a66d 100644
--- a/src/app/(categories)/(tr)/etkinlikler/page.tsx
+++ b/src/app/(categories)/(tr)/etkinlikler/page.tsx
@@ -1,19 +1,12 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- Calendar,
- MapPin,
- Banknote,
- ExternalLink,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import EventsData from "../../(en)/events/EventsData";
export const metadata: Metadata = {
title: "Etkinlikler",
};
-const events = [
+/* const events = [
{
id: 1,
name: "Oryantasyon Günleri",
@@ -30,57 +23,12 @@ const events = [
googleMapsUrl: "https://maps.app.goo.gl/UQ2aVFbn119kQPcV7",
cost: "Ücretsiz",
},
-];
+]; */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
Etkinlikler
-
- {events.map((event) => (
-
-
- {event.name}
-
-
-
-
- {new Date(event.date).toLocaleDateString("en-US", {
- year: "numeric",
- month: "long",
- day: "numeric",
- })}
-
-
-
-
- {event.place}
-
-
-
-
-
- {event.cost}
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/fakulteler/page.tsx b/src/app/(categories)/(tr)/fakulteler/page.tsx
index 19911d6..bf7af68 100644
--- a/src/app/(categories)/(tr)/fakulteler/page.tsx
+++ b/src/app/(categories)/(tr)/fakulteler/page.tsx
@@ -1,20 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import FacultiesData from "../../(en)/faculties/FacultiesData";
export const metadata: Metadata = {
title: "Fakülteler",
};
-interface Department {
- id: number;
- name: string;
- description: string;
- officialPageUrl: string;
-}
-
-const departments: Department[] = [
+/* const departments: Department[] = [
{
id: 1,
name: "Mimarlık",
@@ -98,42 +90,12 @@ const departments: Department[] = [
"Konaklama yönetimi, turizm planlaması ve ilgili alanlara odaklanır.",
officialPageUrl: "https://tourism.emu.edu.tr",
},
-];
+]; */
export default function DepartmentsPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
DAÜ Bölümleri
-
-
- {departments.map((dept) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/fp-yemekler/page.tsx b/src/app/(categories)/(tr)/fp-yemekler/page.tsx
index d258589..7e07c41 100644
--- a/src/app/(categories)/(tr)/fp-yemekler/page.tsx
+++ b/src/app/(categories)/(tr)/fp-yemekler/page.tsx
@@ -1,28 +1,12 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- Banknote,
- MessageSquare,
- ExternalLink,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import PPFoodsData from "../../(en)/pp-foods/PPFoodsData";
export const metadata: Metadata = {
title: "FP Yemekler",
};
-interface PPFood {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- price: number;
- comments: string[];
-}
-
-const ppFoods: PPFood[] = [
+/* const ppFoods: PPFood[] = [
{
id: 1,
name: "Tavuk Pilav",
@@ -31,65 +15,12 @@ const ppFoods: PPFood[] = [
price: 130,
comments: ["Ücretine göre yüksek değer", "Sağlıklı", "Hızlı servis"],
},
-];
+]; */
export default function PricePerformanceFoods() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
- Fiyat Performans Yemekler
-
-
-
- {ppFoods.map((food) => (
-
-
- {food.name}
-
-
-
-
-
- {food.place}
-
-
-
-
-
- {food.price.toFixed(2)} TL
-
-
-
-
- Yorumlar
-
-
- {food.comments.map((comment, index) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/haberler/page.tsx b/src/app/(categories)/(tr)/haberler/page.tsx
index 41ecb92..f59a214 100644
--- a/src/app/(categories)/(tr)/haberler/page.tsx
+++ b/src/app/(categories)/(tr)/haberler/page.tsx
@@ -1,21 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ArrowRight, Calendar } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import NewsData from "../../(en)/news/NewsData";
export const metadata: Metadata = {
title: "Haberler",
};
-interface NewsItem {
- id: number;
- title: string;
- content: string;
- date: string;
- followUpLink: string;
-}
-
-const newsItems: NewsItem[] = [
+/* const newsItems: NewsItem[] = [
{
id: 1,
title: "Oryantasyon Günleri",
@@ -24,51 +15,12 @@ const newsItems: NewsItem[] = [
date: "2024-09-7",
followUpLink: "https://orientation.emu.edu.tr/Default.aspx",
},
-];
+]; */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
-
DAÜ Haberleri
-
-
- {newsItems.map((item) => (
-
-
- {item.title}
-
-
-
-
- {new Date(item.date).toLocaleDateString("en-US", {
- year: "numeric",
- month: "long",
- day: "numeric",
- })}
-
-
-
{item.content}
-
- Read more
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/indirimler/page.tsx b/src/app/(categories)/(tr)/indirimler/page.tsx
index 864a339..3cb2923 100644
--- a/src/app/(categories)/(tr)/indirimler/page.tsx
+++ b/src/app/(categories)/(tr)/indirimler/page.tsx
@@ -1,21 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, MapPin, Tag } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import DiscountsData from "../../(en)/discounts/DiscountsData";
export const metadata: Metadata = {
title: "İndirimler",
};
-interface Discount {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- discountPrice: number;
- previousPrice: number;
-}
-
+/*
const discounts: Discount[] = [
{
id: 1,
@@ -25,53 +16,12 @@ const discounts: Discount[] = [
discountPrice: 150,
previousPrice: 160,
},
-];
+]; */
export default function StudentDiscountsPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
- Öğrenci İndirimleri
-
-
-
- {discounts.map((discount) => (
-
-
-
- {discount.name}
-
-
-
-
- {discount.place}
-
-
-
-
- Now: {discount.discountPrice} TL
-
- Was: {discount.previousPrice} TL
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/kafeler/page.tsx b/src/app/(categories)/(tr)/kafeler/page.tsx
index 38185ed..b9da1f7 100644
--- a/src/app/(categories)/(tr)/kafeler/page.tsx
+++ b/src/app/(categories)/(tr)/kafeler/page.tsx
@@ -1,30 +1,12 @@
-import Link from "next/link";
-import {
- MapPin,
- Clock,
- Banknote,
- ArrowLeft,
- MessageSquare,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CafesData from "../../(en)/cafes/CafesData";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
export const metadata: Metadata = {
title: "Kafeler",
};
-interface Cafe {
- name: string;
- location: string;
- googleMapsUrl: string;
- openTime: string;
- closeTime: string;
- studyScore: number;
- priceRange: "$" | "$$" | "$$$";
- comments: string[];
-}
-
-const cafes: Cafe[] = [
+/* const cafes: Cafe[] = [
{
name: "Yemen Coffee EMU",
location: "EMU Kampüs Merkezi",
@@ -265,74 +247,12 @@ const cafes: Cafe[] = [
priceRange: "$$$",
comments: ["Sevimli personel", "İyi kahve", "Dost canlısı personel"],
},
-];
+]; */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
DAÜ etrafindaki kafeler
-
- {cafes.map((cafe, index) => (
-
-
{cafe.name}
-
-
-
-
- {cafe.location}
-
-
-
-
- {cafe.openTime} - {cafe.closeTime}
-
-
-
- {cafe.priceRange}
-
-
- Ders Çalışma Ortamı:
- = 8
- ? "bg-green-100 text-green-800"
- : cafe.studyScore >= 5
- ? "bg-yellow-100 text-yellow-800"
- : "bg-red-100 text-red-800"
- }`}
- >
- {cafe.studyScore}/10
-
-
-
-
-
- Yorumlar
-
-
- {cafe.comments.map((comment, i) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/kirtasiye/page.tsx b/src/app/(categories)/(tr)/kirtasiye/page.tsx
index 8fd23d4..701537b 100644
--- a/src/app/(categories)/(tr)/kirtasiye/page.tsx
+++ b/src/app/(categories)/(tr)/kirtasiye/page.tsx
@@ -1,29 +1,12 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- ExternalLink,
- MapPin,
- Banknote,
- Printer,
- Book,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import StationaryData from "../../(en)/stationery/StationaryData";
export const metadata: Metadata = {
title: "Kırtasiye",
};
-interface Stationary {
- id: number;
- name: string;
- priceScale: "$" | "$$" | "$$$";
- place: string;
- googleMapsUrl: string;
- services: string[];
-}
-
-const stationaryShops: Stationary[] = [
+/* const stationaryShops: Stationary[] = [
{
id: 1,
name: "Kampüs Copy Center",
@@ -60,69 +43,12 @@ const stationaryShops: Stationary[] = [
googleMapsUrl: "https://maps.app.goo.gl/dVfPuVamM3ZgBYAz9",
services: ["Baskı", "Kitaplar", "Muzik ile ilgili ürünler"],
},
-];
+]; */
export default function StationaryPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
Kırtasiyeler
-
-
- {stationaryShops.map((shop) => (
-
-
- {shop.name}
-
-
-
-
-
- {shop.place}
-
-
-
-
-
- {shop.priceScale}
-
-
-
Servisler:
-
- {shop.services.map((service, index) => (
-
- {service.toLowerCase().includes("baskı") && (
-
- )}
- {service.toLowerCase().includes("kitap") && (
-
- )}
- {service}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/kulupler/page.tsx b/src/app/(categories)/(tr)/kulupler/page.tsx
index a0f5fef..9e88bf4 100644
--- a/src/app/(categories)/(tr)/kulupler/page.tsx
+++ b/src/app/(categories)/(tr)/kulupler/page.tsx
@@ -1,21 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, Users, ExternalLink, Activity } from "lucide-react";
-
-interface Club {
- id: number;
- name: string;
- memberSize?: "low" | "mid" | "high";
- link?: string;
- activities: string[];
-}
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import ClubsData from "../../(en)/clubs/ClubsData";
export const metadata: Metadata = {
title: "Kulüpler",
};
-const clubs: Club[] = [
+/* const clubs: Club[] = [
{
id: 1,
name: "DAÜ Fotoğrafçılık Kulübü",
@@ -494,77 +485,11 @@ const clubs: Club[] = [
],
},
];
-
+ */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
DAÜ Kulüpleri
-
- {clubs.map((club) => (
-
-
- {club.name}
-
-
- {club.memberSize && (
-
-
- {club.memberSize === "low" && }
- {club.memberSize === "mid" && (
- <>
-
-
- >
- )}
- {club.memberSize === "high" && (
- <>
-
-
-
- >
- )}
-
- )}
- {club.link && (
-
-
-
- Kulüp Sayfası
-
-
- )}
- {club.activities.length > 0 && (
-
-
-
- Aktiviteler
-
-
- {club.activities.map((activity, index) => (
- {activity}
- ))}
-
-
- )}
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/magazalar/page.tsx b/src/app/(categories)/(tr)/magazalar/page.tsx
index 8597f54..b040585 100644
--- a/src/app/(categories)/(tr)/magazalar/page.tsx
+++ b/src/app/(categories)/(tr)/magazalar/page.tsx
@@ -1,28 +1,12 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- ExternalLink,
- MapPin,
- Tag,
- Laptop,
- Shirt,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import StoresData from "../../(en)/stores/StoresData";
export const metadata: Metadata = {
title: "Mağazalar",
};
-interface Store {
- id: number;
- name: string;
- type: string;
- place: string;
- googleMapsUrl: string;
-}
-
-const stores: Store[] = [
+/* const stores: Store[] = [
{
id: 1,
name: "Durmazz Bilgisayar",
@@ -177,59 +161,12 @@ const stores: Store[] = [
place: "Salamis Yolu",
googleMapsUrl: "https://maps.app.goo.gl/exhpeKqUboDN9QPL6",
},
-];
+]; */
export default function StoresPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
- Mağazaları Keşfet
-
-
-
- {stores.map((store) => (
-
-
- {store.type === "Teknoloji" && (
-
- )}
- {store.type === "Giyim" && (
-
- )}
- {store.type !== "Teknoloji" && store.type !== "Giyim" && (
-
- )}
- {store.name}
-
-
- İçerik:{" "}
- {store.type}
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/marketler/page.tsx b/src/app/(categories)/(tr)/marketler/page.tsx
index c4314a0..b1354aa 100644
--- a/src/app/(categories)/(tr)/marketler/page.tsx
+++ b/src/app/(categories)/(tr)/marketler/page.tsx
@@ -1,27 +1,12 @@
-import Link from "next/link";
-import {
- ArrowLeft,
- ExternalLink,
- MapPin,
- Banknote,
- ShoppingCart,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import MarketsData from "../../(en)/markets/MarketsData";
export const metadata: Metadata = {
title: "Marketler",
};
-interface Market {
- id: number;
- name: string;
- place: string;
- googleMapsUrl: string;
- priceScale: "$" | "$$" | "$$$";
-}
-
-const markets: Market[] = [
+/* const markets: Market[] = [
{
id: 1,
name: "Koop Market",
@@ -78,49 +63,12 @@ const markets: Market[] = [
googleMapsUrl: "https://maps.app.goo.gl/cPmKvEF7xBdCCvcY7",
priceScale: "$$",
},
-];
+]; */
export default function MarketsPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
Marketler
-
-
- {markets.map((market) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/ozel-dersler/page.tsx b/src/app/(categories)/(tr)/ozel-dersler/page.tsx
index a344850..b5afe32 100644
--- a/src/app/(categories)/(tr)/ozel-dersler/page.tsx
+++ b/src/app/(categories)/(tr)/ozel-dersler/page.tsx
@@ -1,20 +1,13 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Book, PlusCircle } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import PrivateClassesData from "../../(en)/private-classes/PrivateClassesData";
+import ContactUsBanner from "@/components/ui/ContactUsBanner/ContactUsBanner";
export const metadata: Metadata = {
title: "Özel Dersler",
};
-interface PrivateClass {
- id: number;
- name: string;
- price: number;
- contactLink: string;
-}
-
-const privateClasses: PrivateClass[] = [
+/* const privateClasses: PrivateClass[] = [
{
id: 1,
name: "MATH151",
@@ -36,56 +29,14 @@ const privateClasses: PrivateClass[] = [
"https://www.instagram.com/ccakmakfurkan?igsh=Mnl5YjZmZmw2Y2t1",
},
];
-
+ */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
Özel Dersler
-
-
- {privateClasses.map((classItem) => (
-
-
-
- {classItem.name}
-
-
- Fiyat: {classItem.price} TL
-
-
- Ulaş
-
-
-
- ))}
-
-
-
-
+ <>
+
+
+
+
+ >
);
}
diff --git a/src/app/(categories)/(tr)/rehberler/page.tsx b/src/app/(categories)/(tr)/rehberler/page.tsx
index e82251f..4202f8f 100644
--- a/src/app/(categories)/(tr)/rehberler/page.tsx
+++ b/src/app/(categories)/(tr)/rehberler/page.tsx
@@ -1,20 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, BookOpen } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import GuidesData from "../../(en)/guides/GuidesData";
export const metadata: Metadata = {
title: "Rehberler",
};
-interface Guide {
- id: number;
- name: string;
- text: string;
- followUpLink: string;
-}
-
-const guides: Guide[] = [
+/* const guides: Guide[] = [
{
id: 1,
name: "DAÜ Kampüsü'nde Yol Bulma",
@@ -34,43 +26,12 @@ const guides: Guide[] = [
followUpLink:
"https://transportation.emu.edu.tr/en/announcements?pid=64&t=nicosia-emu-nicosia-free-student-bus-services",
},
-];
+]; */
export default function GuidesPage() {
return (
-
-
-
- Ana Sayfaya Dön
-
-
Rehberler
-
-
- {guides.map((guide) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/restoranlar/page.tsx b/src/app/(categories)/(tr)/restoranlar/page.tsx
index 6cd1b6b..a6f5daa 100644
--- a/src/app/(categories)/(tr)/restoranlar/page.tsx
+++ b/src/app/(categories)/(tr)/restoranlar/page.tsx
@@ -1,30 +1,12 @@
-import Link from "next/link";
-import {
- MapPin,
- Clock,
- Banknote,
- ArrowLeft,
- MessageSquare,
-} from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import RestaurantsData from "../../(en)/restaurants/RestaurantsData";
export const metadata: Metadata = {
title: "Restoranlar",
};
-interface Cafe {
- name: string;
- location: string;
- googleMapsUrl: string;
- openTime: string;
- closeTime: string;
- studyScore: number;
- priceRange: "$" | "$$" | "$$$";
- comments: string[];
-}
-
-const cafes: Cafe[] = [
+/* const cafes: Cafe[] = [
{
name: "Ekor Vista",
location: "Alfam Vista",
@@ -169,81 +151,12 @@ const cafes: Cafe[] = [
priceRange: "$$",
comments: ["İyi kalite", "Lezzetli", "Sessiz"],
},
-];
+]; */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
- DAÜ yakınlarındaki restoranlar
-
-
- {cafes.map((cafe, index) => (
-
-
- {cafe.name}
-
-
-
-
-
- {cafe.location}
-
-
-
-
- {cafe.openTime} - {cafe.closeTime}
-
-
-
- {cafe.priceRange}
-
-
- Study Score:
- = 8
- ? "bg-green-100 text-green-800"
- : cafe.studyScore >= 5
- ? "bg-yellow-100 text-yellow-800"
- : "bg-red-100 text-red-800"
- }`}
- >
- {cafe.studyScore}/10
-
-
-
-
-
- Comments
-
-
- {cafe.comments.map((comment, i) => (
-
- {comment}
-
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/saglik/page.tsx b/src/app/(categories)/(tr)/saglik/page.tsx
index a0a0191..6ebf071 100644
--- a/src/app/(categories)/(tr)/saglik/page.tsx
+++ b/src/app/(categories)/(tr)/saglik/page.tsx
@@ -1,29 +1,15 @@
import Link from "next/link";
-import {
- ArrowLeft,
- MapPin,
- ExternalLink,
- Building2,
- Stethoscope,
- Pill,
- AlertTriangle,
-} from "lucide-react";
+import { AlertTriangle } from "lucide-react";
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import HealthData from "../../(en)/health/HealthData";
export const metadata: Metadata = {
title: "Sağlık",
};
-interface HealthFacility {
- id: number;
- name: string;
- type: "Hastane" | "Klinik" | "Eczane";
- location: string;
- googleMapsUrl: string;
-}
-
-const healthFacilities: HealthFacility[] = [
+/* const healthFacilities: HealthFacility[] = [
{
id: 1,
name: "DAÜ Sağlık Merkezi",
@@ -101,59 +87,14 @@ const healthFacilities: HealthFacility[] = [
location: "Salamis Yolu",
googleMapsUrl: "https://maps.app.goo.gl/qJfUwkQSaDs9dgct9",
},
-];
+]; */
export default function HealthPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
- Sağlık Tesisleri
-
-
-
- {healthFacilities.map((facility) => (
-
-
- {facility.type === "Hastane" && (
-
- )}
- {facility.type === "Klinik" && (
-
- )}
- {facility.type === "Eczane" && (
-
- )}
- {facility.name}
-
-
-
- ))}
-
-
+ <>
+
+
+
@@ -169,6 +110,6 @@ export default function HealthPage() {
-
+ >
);
}
diff --git a/src/app/(categories)/(tr)/satilik/page.tsx b/src/app/(categories)/(tr)/satilik/page.tsx
index 6c5db46..b63c513 100644
--- a/src/app/(categories)/(tr)/satilik/page.tsx
+++ b/src/app/(categories)/(tr)/satilik/page.tsx
@@ -1,70 +1,21 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, ShoppingBag, PlusCircle } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import ForSalesData from "../../(en)/for-sale/ForSalesData";
+import ContactUsBanner from "@/components/ui/ContactUsBanner/ContactUsBanner";
export const metadata: Metadata = {
title: "Satılık",
};
-interface SaleItem {
- id: number;
- name: string;
- price: number;
- contactLink: string;
-}
-
-const saleItems: SaleItem[] = [];
+// const saleItems: SaleItem[] = [];
export default function ForSalePage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
Satılık Eşyalar
-
-
- {saleItems.map((item) => (
-
- ))}
-
-
-
-
+ <>
+
+
+
+
+ >
);
}
diff --git a/src/app/(categories)/(tr)/topluluklar/page.tsx b/src/app/(categories)/(tr)/topluluklar/page.tsx
index 7f4ceac..eecb86b 100644
--- a/src/app/(categories)/(tr)/topluluklar/page.tsx
+++ b/src/app/(categories)/(tr)/topluluklar/page.tsx
@@ -1,21 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Users } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import CommunitiesData from "../../(en)/communities/CommunitiesData";
export const metadata: Metadata = {
title: "Topluluklar",
};
-interface Community {
- id: number;
- name: string;
- platform: string;
- explanation: string;
- link: string;
-}
-
-const communities: Community[] = [
+/* const communities: Community[] = [
{
id: 1,
name: "UltrAslan DAÜ",
@@ -64,49 +55,12 @@ const communities: Community[] = [
"DAÜ'de yazılım geliştirme ve yapay zeka alanına odaklanan bir topluluk. Tartışmalara katılın, projelerde işbirliği yapın ve en son teknoloji trendlerinden haberdar olun.",
link: "https://linktr.ee/emusoft.ai",
},
-];
+]; */
export default function CommunityPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
- DAÜ Toplulukları
-
-
-
- {communities.map((community) => (
-
-
-
- {community.name}
-
-
- Platform:{" "}
- {community.platform}
-
-
{community.explanation}
-
- Topluluğa Katıl
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/ulasim/page.tsx b/src/app/(categories)/(tr)/ulasim/page.tsx
index 018e67d..8c8880b 100644
--- a/src/app/(categories)/(tr)/ulasim/page.tsx
+++ b/src/app/(categories)/(tr)/ulasim/page.tsx
@@ -1,21 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Bus, CarTaxiFront } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import TransportationData from "../../(en)/transportation/TransportationData";
export const metadata: Metadata = {
title: "Ulaşım",
};
-interface Transportation {
- id: number;
- name: string;
- type: string;
- explanation: string;
- officialLink: string;
-}
-
-const transportations: Transportation[] = [
+/* const transportations: Transportation[] = [
{
id: 1,
name: "DAÜ Servis Hizmeti",
@@ -45,46 +36,12 @@ const transportations: Transportation[] = [
explanation: "Her türlü ihtiyacınız için taksi hizmeti.",
officialLink: "https://taksikktc.com/",
},
-];
+]; */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
DAÜ Ulaşım Seçenekleri
-
- {transportations.map((transport) => (
-
-
- {transport.type === "bus" ? (
-
- ) : (
-
- )}
- {transport.name}
-
-
{transport.explanation}
-
- Resmi Sayfa
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/yeni-geldim/page.tsx b/src/app/(categories)/(tr)/yeni-geldim/page.tsx
index 93764af..f313b0b 100644
--- a/src/app/(categories)/(tr)/yeni-geldim/page.tsx
+++ b/src/app/(categories)/(tr)/yeni-geldim/page.tsx
@@ -1,20 +1,12 @@
-import Link from "next/link";
-import { ArrowLeft, ExternalLink, Info } from "lucide-react";
-
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import NewContentData from "../../(en)/i-am-new/NewContentData";
export const metadata: Metadata = {
title: "Yeni Geldim",
};
-interface NewContent {
- id: number;
- name: string;
- text: string;
- followUpLink: string;
-}
-
-const newContents: NewContent[] = [
+/* const newContents: NewContent[] = [
{
id: 1,
name: "Kayıt Süreci",
@@ -36,44 +28,11 @@ const newContents: NewContent[] = [
"https://www.emu.edu.tr/en/campus/registrars-office/student-services-office/718",
},
];
-
+ */
export default function NewToEmuPage() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
- DAÜ'de Yeniyim
-
-
-
- {newContents.map((content) => (
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/(categories)/(tr)/yurtlar/page.tsx b/src/app/(categories)/(tr)/yurtlar/page.tsx
index c8b59a0..8ac566a 100644
--- a/src/app/(categories)/(tr)/yurtlar/page.tsx
+++ b/src/app/(categories)/(tr)/yurtlar/page.tsx
@@ -9,6 +9,8 @@ import {
} from "lucide-react";
import type { Metadata } from "next";
+import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
+import DormitoriesData from "../../(en)/dormitories/DormitoriesData";
export const metadata: Metadata = {
title: "Yurtlar",
@@ -25,7 +27,7 @@ export const metadata: Metadata = {
comments: string[]
} */
-const dormitories = [
+/* const dormitories = [
{
id: 1,
name: "Alfam Student Dormitory",
@@ -163,88 +165,12 @@ const dormitories = [
facilities: ["Gym", "Library", "Key Card System"],
comments: ["Good location", "Well maintained"],
},
-];
+]; */
export default function page() {
return (
-
-
-
- Ana Sayfaya Geri Dön
-
-
DAÜ Yurtları
-
- {dormitories.map((dorm) => (
-
-
- {dorm.name}
-
-
-
-
-
- {dorm.place}
-
-
-
-
-
- {dorm.priceRange}
-
-
-
-
- Resmi Yurt Sayfası
-
-
-
-
-
Tesisler:
-
- {dorm.facilities.map((facility, index) => (
- {facility}
- ))}
-
-
-
-
-
- Yorumlar
-
-
- {dorm.comments.map((comment, index) => (
- {comment}
- ))}
-
-
-
-
- ))}
-
-
+
+
+
);
}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 4826cb6..67bc2a0 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -3,7 +3,6 @@ import { useState } from "react";
import Link from "next/link";
import { Menu, Globe } from "lucide-react";
import FeaturedAnnouncement from "@/components/FeaturedAnnouncement";
-import { cookies } from "next/headers";
// Utility function to replace Turkish characters with English equivalents
const replaceTurkishChars = (text: string) => {
diff --git a/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx b/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
index 980de63..beeb1a0 100644
--- a/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
+++ b/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
@@ -1,13 +1,14 @@
-import { ReactNode } from "react";
+import { ReactNode, Suspense } from "react";
+import SkeletonLayout from "../../SkeletonLayout/SkeletonLayout";
interface CardBody {
children?: ReactNode;
}
-export default function CategoryBody({ children }: CardBody) {
+export default async function CategoryBody({ children }: CardBody) {
return (
- <>
- {children}
- >
+
+ }>{children}
+
);
}
diff --git a/src/components/ui/ContactUsBanner/ContactUsBanner.tsx b/src/components/ui/ContactUsBanner/ContactUsBanner.tsx
new file mode 100644
index 0000000..332a52e
--- /dev/null
+++ b/src/components/ui/ContactUsBanner/ContactUsBanner.tsx
@@ -0,0 +1,17 @@
+import { PlusCircle } from "lucide-react";
+
+export default function ContactUsBanner({ text }: { text: string }) {
+ return (
+
+ );
+}
diff --git a/src/components/ui/ErrorHeader/ErrorHeader.tsx b/src/components/ui/ErrorHeader/ErrorHeader.tsx
new file mode 100644
index 0000000..7bc821e
--- /dev/null
+++ b/src/components/ui/ErrorHeader/ErrorHeader.tsx
@@ -0,0 +1,29 @@
+import { ReactNode } from "react";
+
+interface ErrorProp {
+ text?: string;
+ children?: ReactNode;
+ lang?: "en" | "tr" | undefined;
+}
+
+export default function ErrorHeader({ text, children, lang }: ErrorProp) {
+ return (
+
+
+
+
+
+ {text}
+ {lang
+ ? lang === "en"
+ ? "No results found."
+ : "Sonuç bulunamadı."
+ : ""}
+
+
+ {children && children}
+
+
+
+ );
+}
diff --git a/src/components/ui/FollowUpButton/FollowUpButton.tsx b/src/components/ui/FollowUpButton/FollowUpButton.tsx
new file mode 100644
index 0000000..055bb84
--- /dev/null
+++ b/src/components/ui/FollowUpButton/FollowUpButton.tsx
@@ -0,0 +1,22 @@
+import { ExternalLink } from "lucide-react";
+import Link from "next/link";
+
+export default function FollowUpButton({
+ url,
+ text,
+}: {
+ url: string;
+ text: string;
+}) {
+ return (
+
+ {text}
+
+
+ );
+}
diff --git a/src/components/ui/SkeletonLayout/SkeletonLayout.tsx b/src/components/ui/SkeletonLayout/SkeletonLayout.tsx
new file mode 100644
index 0000000..79692a5
--- /dev/null
+++ b/src/components/ui/SkeletonLayout/SkeletonLayout.tsx
@@ -0,0 +1,25 @@
+export default function SkeletonLayout() {
+ return (
+
+
+
+
+
+ );
+}
+
+export function SkeletonCard() {
+ return (
+
+ );
+}
diff --git a/src/models/cafe.model.ts b/src/models/cafe.model.ts
index ae7d4fe..52c8a40 100644
--- a/src/models/cafe.model.ts
+++ b/src/models/cafe.model.ts
@@ -1,7 +1,14 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedLocation } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation,
+} from "./types/base.types";
-export interface ICafe extends IBaseDocument, ITranslatedName, ITranslatedLocation {
+export interface ICafe
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation {
googleMapsUrl: string;
openTime: string;
closeTime: string;
@@ -11,18 +18,22 @@ export interface ICafe extends IBaseDocument, ITranslatedName, ITranslatedLocati
trComments: string[];
}
-const CafeSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- location: { type: String, required: true },
- trLocation: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- openTime: { type: String, required: true },
- closeTime: { type: String, required: true },
- studyScore: { type: Number, required: true, min: 0, max: 10 },
- priceRange: { type: String, required: true },
- comments: [{ type: String }],
- trComments: [{ type: String }],
-}, { timestamps: true });
+const CafeSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ location: { type: String, required: true },
+ trLocation: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ openTime: { type: String, required: true },
+ closeTime: { type: String, required: true },
+ studyScore: { type: Number, required: true, min: 0, max: 10 },
+ priceRange: { type: String, required: true },
+ comments: [{ type: String }],
+ trComments: [{ type: String }],
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Cafe', CafeSchema);
\ No newline at end of file
+export default mongoose.models?.Cafe ||
+ mongoose.model("Cafe", CafeSchema);
diff --git a/src/models/club.model.ts b/src/models/club.model.ts
index e875e9f..7294755 100644
--- a/src/models/club.model.ts
+++ b/src/models/club.model.ts
@@ -1,5 +1,5 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface IClub extends IBaseDocument, ITranslatedName {
memberSize: number;
@@ -8,13 +8,17 @@ export interface IClub extends IBaseDocument, ITranslatedName {
trActivities: string[];
}
-const ClubSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- memberSize: { type: Number, required: true },
- link: { type: String, required: true },
- activities: [{ type: String }],
- trActivities: [{ type: String }],
-}, { timestamps: true });
+const ClubSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ memberSize: { type: Number, required: true },
+ link: { type: String, required: true },
+ activities: [{ type: String }],
+ trActivities: [{ type: String }],
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Club', ClubSchema);
\ No newline at end of file
+export default mongoose.models?.Club ||
+ mongoose.model("Club", ClubSchema);
diff --git a/src/models/community.model.ts b/src/models/community.model.ts
index 7f710f8..3f5183b 100644
--- a/src/models/community.model.ts
+++ b/src/models/community.model.ts
@@ -1,5 +1,5 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface ICommunity extends IBaseDocument, ITranslatedName {
platform: string;
@@ -8,13 +8,17 @@ export interface ICommunity extends IBaseDocument, ITranslatedName {
link: string;
}
-const CommunitySchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- platform: { type: String, required: true },
- explanation: { type: String, required: true },
- trExplanation: { type: String, required: true },
- link: { type: String, required: true },
-}, { timestamps: true });
+const CommunitySchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ platform: { type: String, required: true },
+ explanation: { type: String, required: true },
+ trExplanation: { type: String, required: true },
+ link: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Community', CommunitySchema);
\ No newline at end of file
+export default mongoose.models?.Community ||
+ mongoose.model("Community", CommunitySchema);
diff --git a/src/models/discount.model.ts b/src/models/discount.model.ts
index dcd76d0..3c42e64 100644
--- a/src/models/discount.model.ts
+++ b/src/models/discount.model.ts
@@ -1,20 +1,31 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IDiscount extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IDiscount
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
googleMapsUrl: string;
discountPrice: number;
previousPrice: number;
}
-const DiscountSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- discountPrice: { type: Number, required: true },
- previousPrice: { type: Number, required: true },
-}, { timestamps: true });
+const DiscountSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ discountPrice: { type: Number, required: true },
+ previousPrice: { type: Number, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Discount', DiscountSchema);
\ No newline at end of file
+export default mongoose.models?.Discount ||
+ mongoose.model("Discount", DiscountSchema);
diff --git a/src/models/dormitory.model.ts b/src/models/dormitory.model.ts
index f203932..e61a706 100644
--- a/src/models/dormitory.model.ts
+++ b/src/models/dormitory.model.ts
@@ -1,7 +1,14 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IDormitory extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IDormitory
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
googleMapsUrl: string;
priceRange: string;
officialPageUrl: string;
@@ -11,18 +18,22 @@ export interface IDormitory extends IBaseDocument, ITranslatedName, ITranslatedP
trComments: string[];
}
-const DormitorySchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- priceRange: { type: String, required: true },
- officialPageUrl: { type: String, required: true },
- facilities: [{ type: String }],
- trFacilities: [{ type: String }],
- comments: [{ type: String }],
- trComments: [{ type: String }],
-}, { timestamps: true });
+const DormitorySchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ priceRange: { type: String, required: true },
+ officialPageUrl: { type: String, required: true },
+ facilities: [{ type: String }],
+ trFacilities: [{ type: String }],
+ comments: [{ type: String }],
+ trComments: [{ type: String }],
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Dormitory', DormitorySchema);
\ No newline at end of file
+export default mongoose.models?.Dormitory ||
+ mongoose.model("Dormitory", DormitorySchema);
diff --git a/src/models/entertainment.model.ts b/src/models/entertainment.model.ts
index 6c85754..bfb1e21 100644
--- a/src/models/entertainment.model.ts
+++ b/src/models/entertainment.model.ts
@@ -1,22 +1,33 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IEntertainment extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IEntertainment
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
googleMapsUrl: string;
priceRange: string;
comments: string[];
trComments: string[];
}
-const EntertainmentSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- priceRange: { type: String, required: true },
- comments: [{ type: String }],
- trComments: [{ type: String }],
-}, { timestamps: true });
+const EntertainmentSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ priceRange: { type: String, required: true },
+ comments: [{ type: String }],
+ trComments: [{ type: String }],
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Entertainment', EntertainmentSchema);
\ No newline at end of file
+export default mongoose.models?.Entertainment ||
+ mongoose.model("Entertainment", EntertainmentSchema);
diff --git a/src/models/events.model.ts b/src/models/events.model.ts
index 08b811b..eeb1ed1 100644
--- a/src/models/events.model.ts
+++ b/src/models/events.model.ts
@@ -1,22 +1,33 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IEvents extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IEvents
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
date: Date;
googleMapsUrl: string;
cost: string;
trCost: string;
}
-const EventsSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- date: { type: Date, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- cost: { type: String, required: true },
- trCost: { type: String, required: true },
-}, { timestamps: true });
+const EventsSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ date: { type: Date, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ cost: { type: String, required: true },
+ trCost: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Events', EventsSchema);
\ No newline at end of file
+export default mongoose.models?.Events ||
+ mongoose.model("Events", EventsSchema);
diff --git a/src/models/faculty.model.ts b/src/models/faculty.model.ts
index af1134f..bc01e8d 100644
--- a/src/models/faculty.model.ts
+++ b/src/models/faculty.model.ts
@@ -1,5 +1,5 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface IFaculty extends IBaseDocument, ITranslatedName {
description: string;
@@ -7,12 +7,16 @@ export interface IFaculty extends IBaseDocument, ITranslatedName {
officialPageUrl: string;
}
-const FacultySchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- description: { type: String, required: true },
- trDescription: { type: String, required: true },
- officialPageUrl: { type: String, required: true },
-}, { timestamps: true });
+const FacultySchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ description: { type: String, required: true },
+ trDescription: { type: String, required: true },
+ officialPageUrl: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Faculty', FacultySchema);
\ No newline at end of file
+export default mongoose.models?.Faculty ||
+ mongoose.model("Faculty", FacultySchema);
diff --git a/src/models/fitness-center.model.ts b/src/models/fitness-center.model.ts
index 5023662..330d239 100644
--- a/src/models/fitness-center.model.ts
+++ b/src/models/fitness-center.model.ts
@@ -1,20 +1,31 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedLocation } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation,
+} from "./types/base.types";
-export interface IFitnessCenter extends IBaseDocument, ITranslatedName, ITranslatedLocation {
+export interface IFitnessCenter
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation {
googleMapsUrl: string;
contactLink: string;
priceScale: string;
}
-const FitnessCenterSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- location: { type: String, required: true },
- trLocation: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- contactLink: { type: String, required: true },
- priceScale: { type: String, required: true },
-}, { timestamps: true });
+const FitnessCenterSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ location: { type: String, required: true },
+ trLocation: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ contactLink: { type: String, required: true },
+ priceScale: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('FitnessCenter', FitnessCenterSchema);
\ No newline at end of file
+export default mongoose.models?.FitnessCenter ||
+ mongoose.model("FitnessCenter", FitnessCenterSchema);
diff --git a/src/models/guide.model.ts b/src/models/guide.model.ts
index c32a131..784e646 100644
--- a/src/models/guide.model.ts
+++ b/src/models/guide.model.ts
@@ -1,5 +1,5 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface IGuide extends IBaseDocument, ITranslatedName {
text: string;
@@ -7,12 +7,16 @@ export interface IGuide extends IBaseDocument, ITranslatedName {
followUpLink: string;
}
-const GuideSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- text: { type: String, required: true },
- trText: { type: String, required: true },
- followUpLink: { type: String, required: true },
-}, { timestamps: true });
+const GuideSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ text: { type: String, required: true },
+ trText: { type: String, required: true },
+ followUpLink: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Guide', GuideSchema);
\ No newline at end of file
+export default mongoose.models?.Guide ||
+ mongoose.model("Guide", GuideSchema);
diff --git a/src/models/health.model.ts b/src/models/health.model.ts
index be22e0e..f057c46 100644
--- a/src/models/health.model.ts
+++ b/src/models/health.model.ts
@@ -1,18 +1,29 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedLocation } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation,
+} from "./types/base.types";
-export interface IHealth extends IBaseDocument, ITranslatedName, ITranslatedLocation {
+export interface IHealth
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation {
type: string;
googleMapsUrl: string;
}
-const HealthSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- type: { type: String, required: true },
- location: { type: String, required: true },
- trLocation: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
-}, { timestamps: true });
+const HealthSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ type: { type: String, required: true },
+ location: { type: String, required: true },
+ trLocation: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Health', HealthSchema);
\ No newline at end of file
+export default mongoose.models?.Health ||
+ mongoose.model("Health", HealthSchema);
diff --git a/src/models/market.model.ts b/src/models/market.model.ts
index 74c0f28..3e25ef9 100644
--- a/src/models/market.model.ts
+++ b/src/models/market.model.ts
@@ -1,18 +1,29 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IMarket extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IMarket
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
googleMapsUrl: string;
priceScale: string;
}
-const MarketSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- priceScale: { type: String, required: true },
-}, { timestamps: true });
+const MarketSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ priceScale: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Market', MarketSchema);
\ No newline at end of file
+export default mongoose.models?.Market ||
+ mongoose.model("Market", MarketSchema);
diff --git a/src/models/new-content.model.ts b/src/models/new-content.model.ts
index 64fe1cc..5ca958a 100644
--- a/src/models/new-content.model.ts
+++ b/src/models/new-content.model.ts
@@ -1,5 +1,5 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface INewContent extends IBaseDocument, ITranslatedName {
text: string;
@@ -7,12 +7,16 @@ export interface INewContent extends IBaseDocument, ITranslatedName {
followUpLink: string;
}
-const NewContentSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- text: { type: String, required: true },
- trText: { type: String, required: true },
- followUpLink: { type: String, required: true },
-}, { timestamps: true });
+const NewContentSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ text: { type: String, required: true },
+ trText: { type: String, required: true },
+ followUpLink: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('NewContent', NewContentSchema);
\ No newline at end of file
+export default mongoose.models?.NewContent ||
+ mongoose.model("NewContent", NewContentSchema);
diff --git a/src/models/ppfood.model.ts b/src/models/ppfood.model.ts
index 3124edd..605d8d1 100644
--- a/src/models/ppfood.model.ts
+++ b/src/models/ppfood.model.ts
@@ -1,22 +1,33 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IPPFood extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IPPFood
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
googleMapsUrl: string;
price: number;
comments: string[];
trComments: string[];
}
-const PPFoodSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- price: { type: Number, required: true },
- comments: [{ type: String }],
- trComments: [{ type: String }],
-}, { timestamps: true });
+const PPFoodSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ price: { type: Number, required: true },
+ comments: [{ type: String }],
+ trComments: [{ type: String }],
+ },
+ { timestamps: true }
+);
-export default mongoose.model('PPFood', PPFoodSchema);
\ No newline at end of file
+export default mongoose.models?.PPFood ||
+ mongoose.model("PPFood", PPFoodSchema);
diff --git a/src/models/private-class.model.ts b/src/models/private-class.model.ts
index cd3906d..9ace7cd 100644
--- a/src/models/private-class.model.ts
+++ b/src/models/private-class.model.ts
@@ -1,16 +1,20 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface IPrivateClass extends IBaseDocument, ITranslatedName {
price: number;
contactLink: string;
}
-const PrivateClassSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- price: { type: Number, required: true },
- contactLink: { type: String, required: true },
-}, { timestamps: true });
+const PrivateClassSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ price: { type: Number, required: true },
+ contactLink: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('PrivateClass', PrivateClassSchema);
\ No newline at end of file
+export default mongoose.models?.PrivateClass ||
+ mongoose.model("PrivateClass", PrivateClassSchema);
diff --git a/src/models/restaurant.model.ts b/src/models/restaurant.model.ts
index 61f913d..c1bcff7 100644
--- a/src/models/restaurant.model.ts
+++ b/src/models/restaurant.model.ts
@@ -1,7 +1,14 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedLocation } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation,
+} from "./types/base.types";
-export interface IRestaurant extends IBaseDocument, ITranslatedName, ITranslatedLocation {
+export interface IRestaurant
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedLocation {
googleMapsUrl: string;
openTime: string;
closeTime: string;
@@ -11,18 +18,22 @@ export interface IRestaurant extends IBaseDocument, ITranslatedName, ITranslated
trComments: string[];
}
-const RestaurantSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- location: { type: String, required: true },
- trLocation: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- openTime: { type: String, required: true },
- closeTime: { type: String, required: true },
- studyScore: { type: Number, required: true, min: 0, max: 10 },
- priceRange: { type: String, required: true },
- comments: [{ type: String }],
- trComments: [{ type: String }],
-}, { timestamps: true });
+const RestaurantSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ location: { type: String, required: true },
+ trLocation: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ openTime: { type: String, required: true },
+ closeTime: { type: String, required: true },
+ studyScore: { type: Number, required: true, min: 0, max: 10 },
+ priceRange: { type: String, required: true },
+ comments: [{ type: String }],
+ trComments: [{ type: String }],
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Restaurant', RestaurantSchema);
\ No newline at end of file
+export default mongoose.models?.Restaurant ||
+ mongoose.model("Restaurant", RestaurantSchema);
diff --git a/src/models/sale-item.model.ts b/src/models/sale-item.model.ts
index 076b85c..47efe1c 100644
--- a/src/models/sale-item.model.ts
+++ b/src/models/sale-item.model.ts
@@ -1,16 +1,20 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface ISaleItem extends IBaseDocument, ITranslatedName {
price: number;
contactLink: string;
}
-const SaleItemSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- price: { type: Number, required: true },
- contactLink: { type: String, required: true },
-}, { timestamps: true });
+const SaleItemSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ price: { type: Number, required: true },
+ contactLink: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('SaleItem', SaleItemSchema);
\ No newline at end of file
+export default mongoose.models?.SaleItem ||
+ mongoose.model("SaleItem", SaleItemSchema);
diff --git a/src/models/scholarship.model.ts b/src/models/scholarship.model.ts
index bc6024b..501d5da 100644
--- a/src/models/scholarship.model.ts
+++ b/src/models/scholarship.model.ts
@@ -1,5 +1,5 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface IScholarship extends IBaseDocument, ITranslatedName {
explanation: string;
@@ -7,12 +7,16 @@ export interface IScholarship extends IBaseDocument, ITranslatedName {
officialLink: string;
}
-const ScholarshipSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- explanation: { type: String, required: true },
- trExplanation: { type: String, required: true },
- officialLink: { type: String, required: true },
-}, { timestamps: true });
+const ScholarshipSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ explanation: { type: String, required: true },
+ trExplanation: { type: String, required: true },
+ officialLink: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Scholarship', ScholarshipSchema);
\ No newline at end of file
+export default mongoose.models?.Scholarship ||
+ mongoose.model("Scholarship", ScholarshipSchema);
diff --git a/src/models/stationery.model.ts b/src/models/stationery.model.ts
index 8e8d534..04b5b2e 100644
--- a/src/models/stationery.model.ts
+++ b/src/models/stationery.model.ts
@@ -1,22 +1,33 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IStationery extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IStationery
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
priceScale: string;
googleMapsUrl: string;
services: string[];
trServices: string[];
}
-const StationerySchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- priceScale: { type: String, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
- services: [{ type: String }],
- trServices: [{ type: String }],
-}, { timestamps: true });
+const StationerySchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ priceScale: { type: String, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ services: [{ type: String }],
+ trServices: [{ type: String }],
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Stationery', StationerySchema);
\ No newline at end of file
+export default mongoose.models?.Stationery ||
+ mongoose.model("Stationery", StationerySchema);
diff --git a/src/models/store.model.ts b/src/models/store.model.ts
index 522dda0..11f9b2b 100644
--- a/src/models/store.model.ts
+++ b/src/models/store.model.ts
@@ -1,18 +1,29 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName, ITranslatedPlace } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import {
+ IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace,
+} from "./types/base.types";
-export interface IStore extends IBaseDocument, ITranslatedName, ITranslatedPlace {
+export interface IStore
+ extends IBaseDocument,
+ ITranslatedName,
+ ITranslatedPlace {
type: string;
googleMapsUrl: string;
}
-const StoreSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- type: { type: String, required: true },
- place: { type: String, required: true },
- trPlace: { type: String, required: true },
- googleMapsUrl: { type: String, required: true },
-}, { timestamps: true });
+const StoreSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ type: { type: String, required: true },
+ place: { type: String, required: true },
+ trPlace: { type: String, required: true },
+ googleMapsUrl: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Store', StoreSchema);
\ No newline at end of file
+export default mongoose.models?.Store ||
+ mongoose.model("Store", StoreSchema);
diff --git a/src/models/transportation.model.ts b/src/models/transportation.model.ts
index e657744..f774218 100644
--- a/src/models/transportation.model.ts
+++ b/src/models/transportation.model.ts
@@ -1,5 +1,5 @@
-import mongoose, { Schema } from 'mongoose';
-import { IBaseDocument, ITranslatedName } from './types/base.types';
+import mongoose, { Schema } from "mongoose";
+import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface ITransportation extends IBaseDocument, ITranslatedName {
type: string;
@@ -8,13 +8,17 @@ export interface ITransportation extends IBaseDocument, ITranslatedName {
officialLink: string;
}
-const TransportationSchema = new Schema({
- name: { type: String, required: true },
- trName: { type: String, required: true },
- type: { type: String, required: true },
- explanation: { type: String, required: true },
- trExplanation: { type: String, required: true },
- officialLink: { type: String, required: true },
-}, { timestamps: true });
+const TransportationSchema = new Schema(
+ {
+ name: { type: String, required: true },
+ trName: { type: String, required: true },
+ type: { type: String, required: true },
+ explanation: { type: String, required: true },
+ trExplanation: { type: String, required: true },
+ officialLink: { type: String, required: true },
+ },
+ { timestamps: true }
+);
-export default mongoose.model('Transportation', TransportationSchema);
\ No newline at end of file
+export default mongoose.models?.Transportation ||
+ mongoose.model("Transportation", TransportationSchema);
From 8b23adb30d55ad0d8f7c3ef8833051fdfbe208f0 Mon Sep 17 00:00:00 2001
From: Lawrence Lu <45768189+lawrencelu5@users.noreply.github.com>
Date: Tue, 4 Mar 2025 03:16:06 -0800
Subject: [PATCH 3/4] tweak Club model's memberSize to be of type String
fix: adjusts memberSize in Club model to accept String instead of number
---
src/app/(categories)/(en)/clubs/ClubsData.tsx | 116 +++++++++---------
src/app/(categories)/(en)/health/page.tsx | 3 +-
.../(categories)/(en)/markets/MarketsData.tsx | 1 -
.../(en)/restaurants/RestaurantsData.tsx | 4 +-
src/components/ui/Backlink/Backlink.tsx | 2 +-
.../CategoryBody/CategoryBody.tsx | 6 +-
.../CategoryHeader/CategoryHeader.tsx | 2 +-
src/models/club.model.ts | 4 +-
8 files changed, 65 insertions(+), 73 deletions(-)
diff --git a/src/app/(categories)/(en)/clubs/ClubsData.tsx b/src/app/(categories)/(en)/clubs/ClubsData.tsx
index f5e4732..ec3c76f 100644
--- a/src/app/(categories)/(en)/clubs/ClubsData.tsx
+++ b/src/app/(categories)/(en)/clubs/ClubsData.tsx
@@ -458,66 +458,62 @@ export default async function ClubsData({ lang }: { lang?: "en" | "tr" }) {
}
return (
- <>
-
- {clubs.map((club) => (
-
-
- {club.name}
-
-
- {club.memberSize && (
-
-
- {club.memberSize === "low" && }
- {club.memberSize === "mid" && (
- <>
-
-
- >
- )}
- {club.memberSize === "high" && (
- <>
-
-
-
- >
- )}
-
- )}
- {club.link && (
-
-
-
- Club Page
-
-
- )}
- {club.activities.length > 0 && (
-
-
-
- Activities
-
-
- {club.activities.map((activity, index) => (
- {activity}
- ))}
-
-
- )}
-
+
+ {clubs.map((club) => (
+
+
{club.name}
+
+ {club.memberSize && (
+
+
+ {club.memberSize === "low" && }
+ {club.memberSize === "mid" && (
+ <>
+
+
+ >
+ )}
+ {club.memberSize === "high" && (
+ <>
+
+
+
+ >
+ )}
+
+ )}
+ {club.link && (
+
+
+
+ Club Page
+
+
+ )}
+ {club.activities.length > 0 && (
+
+
+
+ Activities
+
+
+ {club.activities.map((activity, index) => (
+ {activity}
+ ))}
+
+
+ )}
- ))}
-
- >
+
+ ))}
+
);
}
diff --git a/src/app/(categories)/(en)/health/page.tsx b/src/app/(categories)/(en)/health/page.tsx
index 272a477..a08170b 100644
--- a/src/app/(categories)/(en)/health/page.tsx
+++ b/src/app/(categories)/(en)/health/page.tsx
@@ -1,7 +1,8 @@
import CategoryPost from "@/components/ui/CategoryCard/CategoryPost";
-import { AlertTriangle, Link } from "lucide-react";
+import { AlertTriangle } from "lucide-react";
import type { Metadata } from "next";
import HealthData from "./HealthData";
+import Link from "next/link";
export const metadata: Metadata = {
title: "Health",
diff --git a/src/app/(categories)/(en)/markets/MarketsData.tsx b/src/app/(categories)/(en)/markets/MarketsData.tsx
index 940b782..c988b74 100644
--- a/src/app/(categories)/(en)/markets/MarketsData.tsx
+++ b/src/app/(categories)/(en)/markets/MarketsData.tsx
@@ -75,7 +75,6 @@ export default async function MarketsData({ lang }: { lang?: "en" | "tr" }) {
if (!markets || !markets.length) {
return
;
}
-
return (
{markets.map((market) => (
diff --git a/src/app/(categories)/(en)/restaurants/RestaurantsData.tsx b/src/app/(categories)/(en)/restaurants/RestaurantsData.tsx
index dc3d159..ddf9a5a 100644
--- a/src/app/(categories)/(en)/restaurants/RestaurantsData.tsx
+++ b/src/app/(categories)/(en)/restaurants/RestaurantsData.tsx
@@ -14,7 +14,7 @@ interface Cafe {
comments: string[];
}
-const cafes: Cafe[] = [
+/* const cafes: Cafe[] = [
{
name: "Ekor Vista",
location: "Alfam Vista",
@@ -159,7 +159,7 @@ const cafes: Cafe[] = [
priceRange: "$$",
comments: ["Good quality", "Tasty", "Quiet"],
},
-];
+]; */
export default async function RestaurantsData({
lang,
diff --git a/src/components/ui/Backlink/Backlink.tsx b/src/components/ui/Backlink/Backlink.tsx
index 4af55ba..44e9db5 100644
--- a/src/components/ui/Backlink/Backlink.tsx
+++ b/src/components/ui/Backlink/Backlink.tsx
@@ -5,7 +5,7 @@ export default function Backlink({ message }: { message: string }) {
return (
{message}
diff --git a/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx b/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
index beeb1a0..efd619c 100644
--- a/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
+++ b/src/components/ui/CategoryCard/CategoryBody/CategoryBody.tsx
@@ -6,9 +6,5 @@ interface CardBody {
}
export default async function CategoryBody({ children }: CardBody) {
- return (
-
- }>{children}
-
- );
+ return
}>{children};
}
diff --git a/src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx b/src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx
index 5ab89ba..8654bbb 100644
--- a/src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx
+++ b/src/components/ui/CategoryCard/CategoryHeader/CategoryHeader.tsx
@@ -1,3 +1,3 @@
export default function CategoryHeader({ title }: { title: string }) {
- return
{title} ;
+ return
{title} ;
}
diff --git a/src/models/club.model.ts b/src/models/club.model.ts
index 7294755..5cbb750 100644
--- a/src/models/club.model.ts
+++ b/src/models/club.model.ts
@@ -2,7 +2,7 @@ import mongoose, { Schema } from "mongoose";
import { IBaseDocument, ITranslatedName } from "./types/base.types";
export interface IClub extends IBaseDocument, ITranslatedName {
- memberSize: number;
+ memberSize: string;
link: string;
activities: string[];
trActivities: string[];
@@ -12,7 +12,7 @@ const ClubSchema = new Schema(
{
name: { type: String, required: true },
trName: { type: String, required: true },
- memberSize: { type: Number, required: true },
+ memberSize: { type: String, required: true },
link: { type: String, required: true },
activities: [{ type: String }],
trActivities: [{ type: String }],
From 79896ea9356ac3826bc3e9baac98e60fb51080d3 Mon Sep 17 00:00:00 2001
From: Lawrence Lu <45768189+lawrencelu5@users.noreply.github.com>
Date: Wed, 5 Mar 2025 02:41:37 -0800
Subject: [PATCH 4/4] revert inclusion of daisy ui
---
.../ui/SkeletonLayout/SkeletonLayout.tsx | 17 ++++++++++-------
tailwind.config.ts | 4 ----
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/components/ui/SkeletonLayout/SkeletonLayout.tsx b/src/components/ui/SkeletonLayout/SkeletonLayout.tsx
index 79692a5..cab031a 100644
--- a/src/components/ui/SkeletonLayout/SkeletonLayout.tsx
+++ b/src/components/ui/SkeletonLayout/SkeletonLayout.tsx
@@ -11,13 +11,16 @@ export default function SkeletonLayout() {
export function SkeletonCard() {
return (
-
-
-
-
-
-
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 4d788c4..fe99afa 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -15,9 +15,5 @@ const config: Config = {
},
},
},
- plugins: [daisyui],
- daisyui: {
- themes: ["light"],
- },
};
export default config;