diff --git a/app/aboutus/page.tsx b/app/aboutus/page.tsx
index 6238133..12f83e0 100644
--- a/app/aboutus/page.tsx
+++ b/app/aboutus/page.tsx
@@ -3,6 +3,7 @@ import ResponsiveNav from "@/components/Navbar/ResponsiveNav";
import { fetchCourses, fetchSettings, fetchAboutus } from "@/utils";
import {AboutusProps } from "@/types";
import Home from '@/components/Aboutus/Home';
+
async function getCourses() {
const courses = await fetchCourses();
return courses;
@@ -31,6 +32,7 @@ export default async function Page() {
return (
+
diff --git a/app/app.config.tsx b/app/app.config.tsx
deleted file mode 100644
index c0a422e..0000000
--- a/app/app.config.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- colors:{
-
- },
- api_link: "http://localhost/api/v1/",
- }
\ No newline at end of file
diff --git a/app/courses/[slug]/page.tsx b/app/courses/[slug]/page.tsx
index 08e6ef2..3b0970f 100644
--- a/app/courses/[slug]/page.tsx
+++ b/app/courses/[slug]/page.tsx
@@ -2,6 +2,7 @@ import React from 'react'
import ResponsiveNav from "@/components/Navbar/ResponsiveNav";
import { fetchCourses, fetchCourse, fetchSettings } from "@/utils";
import dynamic from 'next/dynamic'
+
const DynamicComponent = dynamic(() => import('@/components/Course/Course'), {
ssr: false,
})
@@ -19,10 +20,6 @@ async function getSettings() {
return settings;
}
-export const metadata = {
- title: "All In One",
- description: "**",
-}
export default async function Page({ params }: { params: { slug: string } }) {
const courses = await getCourses();
@@ -34,6 +31,7 @@ export default async function Page({ params }: { params: { slug: string } }) {
}
return (
+
diff --git a/app/favicon.ico b/app/favicon.ico
index c2a2a04..d32eda9 100644
Binary files a/app/favicon.ico and b/app/favicon.ico differ
diff --git a/app/globals.css b/app/globals.css
index 9fb8c81..4209828 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -15,6 +15,20 @@
.mainColor{
color: #D60050;
}
+ .navigation-loader {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #0006;
+ color: #fff;
+ font-size: 18px;
+ font-weight: 700;
+ }
.dots {
li{
diff --git a/app/layout.tsx b/app/layout.tsx
index 2e4ab4c..20c6d37 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,6 +1,8 @@
import type { Metadata } from "next";
import localFont from "next/font/local";
import "./globals.css";
+import Head from 'next/head';
+import NextTopLoader from 'nextjs-toploader';
import { Toaster } from "react-hot-toast";
const geistSans = localFont({
src: "./fonts/GeistVF.woff",
@@ -13,9 +15,31 @@ const geistMono = localFont({
weight: "100 900",
});
+
+
+
export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
+ title: "All And One Music",
+ description: "發掘你的音樂之路",
+ icons: [
+ {
+ rel: 'icon',
+ type: 'image/png',
+ sizes: '32x32',
+ url: '/favicon/favicon-32x32.png',
+ },
+ {
+ rel: 'icon',
+ type: 'image/png',
+ sizes: '16x16',
+ url: '/favicon/favicon-16x16.png',
+ },
+ {
+ rel: 'apple-touch-icon',
+ sizes: '180x180',
+ url: '/favicon/apple-touch-icon.png',
+ },
+ ],
};
export default function RootLayout({
@@ -26,9 +50,12 @@ export default function RootLayout({
}>) {
return (
+
+
+
{children}
diff --git a/app/page.tsx b/app/page.tsx
index 2d43971..aea706b 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,21 +1,24 @@
import Home from "../components/Home/Home";
-import { fetchCourses, fetchSettings} from "../utils/index";
+import { fetchCourses, fetchSettings } from "../utils/index";
import ResponsiveNav from "../components/Navbar/ResponsiveNav";
-
+import Head from "next/head";
async function getCourses() {
const courses = await fetchCourses();
return courses;
}
-async function getSettings(){
+async function getSettings() {
const settings = await fetchSettings();
return settings;
}
export const metadata = {
- title: "All In One",
+ title: "All And One Music",
description: "**",
+ icons: {
+ icon: '/favicon.ico',
+ },
}
export default async function HomePage() {
@@ -23,7 +26,9 @@ export default async function HomePage() {
const settings = await getSettings();
return (
-
+
+
+
);
diff --git a/components/Aboutus/AboutusContent.tsx b/components/Aboutus/AboutusContent.tsx
index a1c54ee..99ac9d9 100644
--- a/components/Aboutus/AboutusContent.tsx
+++ b/components/Aboutus/AboutusContent.tsx
@@ -75,7 +75,7 @@ const AboutusContent = ({ aboutus }: { aboutus: AboutusProps[] }) => {
/>
-
+
{item.title}
{/*
diff --git a/components/Aboutus/Banner.tsx b/components/Aboutus/Banner.tsx
index c85f6e1..88f66a0 100644
--- a/components/Aboutus/Banner.tsx
+++ b/components/Aboutus/Banner.tsx
@@ -7,7 +7,7 @@ const Banner = () => {
-
+
{"關於我們"}
diff --git a/components/ContactForm.tsx b/components/ContactForm.tsx
index 9289a29..c017644 100644
--- a/components/ContactForm.tsx
+++ b/components/ContactForm.tsx
@@ -17,7 +17,7 @@ const ContactForm = ({ startLoading, stopLoading }: Props) => {
register,
handleSubmit,
reset,
- formState: {},
+ formState: { },
} = useForm
()
const onSubmit: SubmitHandler = async (data) => {
try {
@@ -25,7 +25,7 @@ const ContactForm = ({ startLoading, stopLoading }: Props) => {
const result = await postMessage(data);
if (result.success) {
toast.success('已收到您的訊息,我們會盡快回覆您!');
- reset(); // Reset form fields
+ reset(); // Reset form fields
// Reset form or perform any other actions on success
} else {
toast.error('Failed to send message. Please try again.');
@@ -55,7 +55,7 @@ const ContactForm = ({ startLoading, stopLoading }: Props) => {