summaryrefslogtreecommitdiff
path: root/src/pages/index.tsx
blob: 48fa46e6f3233ca4c98eebbebed7becf8563f643 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import { Link } from "waku";

import { Progress } from "@/components/ui/progress";
import { getContextData } from "waku/middleware/context";

type LanguageChoice = "th" | "en" | "zh" | "ja" | "es" | "fr";
type LangMeta = { flag: string; name: string };
const langs: Record<LanguageChoice, LangMeta> = {
  th: { flag: "🇹🇭", name: "Thai" },
  en: { flag: "🇬🇧", name: "English" },
  zh: { flag: "🇨🇳", name: "Chinese" },
  ja: { flag: "🇯🇵", name: "Japanese" },
  es: { flag: "🇪🇸", name: "Spanish" },
  fr: { flag: "🇫🇷", name: "French" },
};

export default async function HomePage() {
  const { user } = getContextData();

  return (
    <div className="min-h-screen bg-gray-50">
      <header className="bg-white shadow-sm sticky top-0 z-50">
        <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
          <div className="flex justify-between items-center h-16">
            <div className="flex items-center">
              <h1 className="text-2xl font-bold text-indigo-600">Prosody</h1>
            </div>

            {/* Desktop Navigation */}
            <nav className="hidden md:flex space-x-8">
              <Link to="/">
                <button
                  className={`py-2 font-medium text-indigo-600 border-b-2 border-indigo-600`}
                >
                  Home
                </button>
              </Link>
              <Link to="/parse">
                <button
                  className={`py-2 font-medium text-gray-600 hover:text-indigo-600`}
                >
                  Analyze Text
                </button>
              </Link>
            </nav>
          </div>
        </div>

        {/* Mobile Navigation */}
      </header>
      <section className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">
        <h2 className="text-lg"> Your Languages</h2>
        <LanguageItem lang="en" />
        <LanguageItem lang="th" />
        <LanguageItem lang="zh" />
        <LanguageItem lang="ja" />
      </section>
    </div>
  );
}

const getData = async () => {
  const data = {
    title: "Waku",
    headline: "Waku",
    body: "Hello world!",
  };

  return data;
};

export const getConfig = async () => {
  return {
    render: "dynamic",
  } as const;
};

async function LanguageItem({ lang }: { lang: LanguageChoice }) {
  return (
    <Link to={`/lang/${lang}`}>
      <div className="bg-white rounded-xl h-32 shadow-sm overflow-hidden hover:shadow-md transition-shadow duration-300">
        <div className="p-6">
          <div className="flex">
            <div className="text-lg">{langs[lang].flag}</div>
            <div className="text-lg">{langs[lang].name}</div>
          </div>
          <Progress value={50} className="w-[60%]" />
        </div>
      </div>
    </Link>
  );
}
{
  /* Language Cards */
}
// <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">
//   {languages.slice(0, 3).map((lang) => (
//     <div
//       key={lang.id}
//       className="bg-white rounded-xl shadow-sm overflow-hidden hover:shadow-md transition-shadow duration-300"
//     >
//       <div className="p-6">
//         <div className="flex items-center justify-between mb-4">
//           <div className="flex items-center">
//             <span className="text-3xl mr-3">{lang.flag}</span>
//             <h3 className="text-xl font-semibold">{lang.name}</h3>
//           </div>
//           <span className="text-xs font-semibold bg-indigo-100 text-indigo-800 px-2 py-1 rounded-full">
//             Beginner
//           </span>
//         </div>
//         <div className="mb-4">
//           <div className="w-full bg-gray-200 rounded-full h-2.5 mb-1">
//             <div
//               className="bg-indigo-600 h-2.5 rounded-full"
//               style={{ width: "40%" }}
//             ></div>
//           </div>
//           <div className="text-right text-sm text-gray-500">40% Complete</div>
//         </div>
//         <button className="w-full py-2 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 transition-colors duration-300">
//           Continue Learning
//         </button>
//       </div>
//     </div>
//   ))}
// </div>;