2023-08-25 21:53:07 +08:00
|
|
|
import Link from "next/link";
|
2023-09-14 00:36:16 +08:00
|
|
|
import fs from "fs";
|
|
|
|
import path from "path";
|
|
|
|
import { ArrowDownIcon } from "@heroicons/react/24/outline";
|
2023-08-25 21:53:07 +08:00
|
|
|
|
2023-09-14 00:36:16 +08:00
|
|
|
async function getData() {
|
2023-09-14 09:21:45 +08:00
|
|
|
let dirs: string[] = [];
|
|
|
|
try {
|
|
|
|
fs.readdirSync(__dirname).filter((item) => {
|
|
|
|
const p = path.resolve(__dirname, item);
|
|
|
|
const stat = fs.statSync(p);
|
|
|
|
if (stat.isDirectory()) dirs.push(item);
|
|
|
|
});
|
|
|
|
} catch (e) {
|
|
|
|
console.error(e);
|
|
|
|
}
|
2023-08-25 21:53:07 +08:00
|
|
|
|
2023-09-14 09:21:45 +08:00
|
|
|
return dirs;
|
2023-08-25 21:53:07 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export default async function Page() {
|
2023-09-14 09:21:45 +08:00
|
|
|
const list = await getData();
|
|
|
|
return (
|
|
|
|
<div className="flex-1 flex flex-col justify-center items-start">
|
|
|
|
<div className="flex justify-center items-center gap-2">
|
|
|
|
<span>Components List</span>
|
|
|
|
<ArrowDownIcon width={18} height={18} />
|
|
|
|
</div>
|
|
|
|
<div className="flex flex-col justify-start">
|
|
|
|
{list.map((i) => {
|
|
|
|
return (
|
|
|
|
<li key={i}>
|
|
|
|
<Link href={`/components/${i}`}>{i}</Link>
|
|
|
|
</li>
|
|
|
|
);
|
|
|
|
})}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
2023-09-14 00:36:16 +08:00
|
|
|
}
|