mirror of
https://github.com/nonebot/nonebot2.git
synced 2024-11-25 01:25:04 +08:00
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import React from "react";
|
|
import { usePagination } from "react-use-pagination";
|
|
|
|
import drivers from "../../static/drivers.json";
|
|
import { useFilteredObjs } from "../libs/store";
|
|
import Card from "./Card";
|
|
import Paginate from "./Paginate";
|
|
|
|
export default function Driver(): JSX.Element {
|
|
const {
|
|
filter,
|
|
setFilter,
|
|
filteredObjs: filteredDrivers,
|
|
} = useFilteredObjs(drivers);
|
|
|
|
const props = usePagination({
|
|
totalItems: filteredDrivers.length,
|
|
initialPageSize: 10,
|
|
});
|
|
const { startIndex, endIndex } = props;
|
|
const currentDrivers = filteredDrivers.slice(startIndex, endIndex + 1);
|
|
|
|
return (
|
|
<>
|
|
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mt-4 px-4">
|
|
<input
|
|
className="w-full px-4 py-2 border rounded-full bg-light-nonepress-100 dark:bg-dark-nonepress-100"
|
|
value={filter}
|
|
placeholder="搜索驱动器"
|
|
onChange={(event) => setFilter(event.target.value)}
|
|
/>
|
|
<button className="w-full rounded-lg bg-hero text-white opacity-60">
|
|
发布驱动器
|
|
</button>
|
|
</div>
|
|
<div className="grid grid-cols-1 p-4">
|
|
<Paginate {...props} />
|
|
</div>
|
|
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 px-4">
|
|
{currentDrivers.map((driver, index) => (
|
|
<Card
|
|
key={index}
|
|
{...driver}
|
|
action={`nb driver install ${driver.project_link}`}
|
|
actionDisabled={!driver.project_link}
|
|
/>
|
|
))}
|
|
</div>
|
|
<div className="grid grid-cols-1 p-4">
|
|
<Paginate {...props} />
|
|
</div>
|
|
</>
|
|
);
|
|
}
|