Spaces:
Running
Running
initial commit
Browse files- Dockerfile +25 -0
- README.md +14 -36
- app/globals.css +0 -33
- app/layout.tsx +2 -3
- app/page.tsx +35 -107
- assets/globals.css +13 -0
- components/space.tsx +68 -0
- components/space_icon.tsx +37 -0
- next.config.mjs +22 -1
- package-lock.json +262 -10
- package.json +8 -5
- utils/index.ts +14 -0
- utils/type.ts +19 -0
Dockerfile
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Dockerfile
|
2 |
+
|
3 |
+
# Use an official Node.js runtime as the base image
|
4 |
+
FROM node:18
|
5 |
+
|
6 |
+
# Set the working directory in the container
|
7 |
+
WORKDIR /usr/src/app
|
8 |
+
|
9 |
+
# Copy package.json and package-lock.json to the container
|
10 |
+
COPY package.json package-lock.json ./
|
11 |
+
|
12 |
+
# Install dependencies
|
13 |
+
RUN npm install
|
14 |
+
|
15 |
+
# Copy the rest of the application files to the container
|
16 |
+
COPY . .
|
17 |
+
|
18 |
+
# Build the Next.js application for production
|
19 |
+
RUN npm run build
|
20 |
+
|
21 |
+
# Expose the application port (assuming your app runs on port 3000)
|
22 |
+
EXPOSE 3000
|
23 |
+
|
24 |
+
# Start the application
|
25 |
+
CMD ["npm", "start"]
|
README.md
CHANGED
@@ -1,36 +1,14 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
```
|
16 |
-
|
17 |
-
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
18 |
-
|
19 |
-
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
20 |
-
|
21 |
-
This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
|
22 |
-
|
23 |
-
## Learn More
|
24 |
-
|
25 |
-
To learn more about Next.js, take a look at the following resources:
|
26 |
-
|
27 |
-
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
28 |
-
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
29 |
-
|
30 |
-
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
|
31 |
-
|
32 |
-
## Deploy on Vercel
|
33 |
-
|
34 |
-
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
35 |
-
|
36 |
-
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
|
|
|
1 |
+
---
|
2 |
+
title: — Zero GPU Spaces —
|
3 |
+
header: mini
|
4 |
+
short_description: List of spaces using ZERO-GPU
|
5 |
+
emoji: ⚡️
|
6 |
+
colorFrom: yellow
|
7 |
+
colorTo: green
|
8 |
+
sdk: docker
|
9 |
+
app_port: 3000
|
10 |
+
pinned: false
|
11 |
+
license: mit
|
12 |
+
---
|
13 |
+
|
14 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/globals.css
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
@tailwind base;
|
2 |
-
@tailwind components;
|
3 |
-
@tailwind utilities;
|
4 |
-
|
5 |
-
:root {
|
6 |
-
--foreground-rgb: 0, 0, 0;
|
7 |
-
--background-start-rgb: 214, 219, 220;
|
8 |
-
--background-end-rgb: 255, 255, 255;
|
9 |
-
}
|
10 |
-
|
11 |
-
@media (prefers-color-scheme: dark) {
|
12 |
-
:root {
|
13 |
-
--foreground-rgb: 255, 255, 255;
|
14 |
-
--background-start-rgb: 0, 0, 0;
|
15 |
-
--background-end-rgb: 0, 0, 0;
|
16 |
-
}
|
17 |
-
}
|
18 |
-
|
19 |
-
body {
|
20 |
-
color: rgb(var(--foreground-rgb));
|
21 |
-
background: linear-gradient(
|
22 |
-
to bottom,
|
23 |
-
transparent,
|
24 |
-
rgb(var(--background-end-rgb))
|
25 |
-
)
|
26 |
-
rgb(var(--background-start-rgb));
|
27 |
-
}
|
28 |
-
|
29 |
-
@layer utilities {
|
30 |
-
.text-balance {
|
31 |
-
text-wrap: balance;
|
32 |
-
}
|
33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/layout.tsx
CHANGED
@@ -1,12 +1,11 @@
|
|
1 |
import type { Metadata } from "next";
|
2 |
import { Inter } from "next/font/google";
|
3 |
-
import "
|
4 |
|
5 |
const inter = Inter({ subsets: ["latin"] });
|
6 |
|
7 |
export const metadata: Metadata = {
|
8 |
-
title: "
|
9 |
-
description: "Generated by create next app",
|
10 |
};
|
11 |
|
12 |
export default function RootLayout({
|
|
|
1 |
import type { Metadata } from "next";
|
2 |
import { Inter } from "next/font/google";
|
3 |
+
import "@/assets/globals.css";
|
4 |
|
5 |
const inter = Inter({ subsets: ["latin"] });
|
6 |
|
7 |
export const metadata: Metadata = {
|
8 |
+
title: "Zero GPU Spaces | Hugging Face",
|
|
|
9 |
};
|
10 |
|
11 |
export default function RootLayout({
|
app/page.tsx
CHANGED
@@ -1,113 +1,41 @@
|
|
1 |
-
import
|
|
|
|
|
|
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
<div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:size-auto lg:bg-none">
|
12 |
-
<a
|
13 |
-
className="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0"
|
14 |
-
href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
|
15 |
-
target="_blank"
|
16 |
-
rel="noopener noreferrer"
|
17 |
-
>
|
18 |
-
By{" "}
|
19 |
-
<Image
|
20 |
-
src="/vercel.svg"
|
21 |
-
alt="Vercel Logo"
|
22 |
-
className="dark:invert"
|
23 |
-
width={100}
|
24 |
-
height={24}
|
25 |
-
priority
|
26 |
-
/>
|
27 |
-
</a>
|
28 |
-
</div>
|
29 |
-
</div>
|
30 |
-
|
31 |
-
<div className="relative z-[-1] flex place-items-center before:absolute before:h-[300px] before:w-full before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-full after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 sm:before:w-[480px] sm:after:w-[240px] before:lg:h-[360px]">
|
32 |
-
<Image
|
33 |
-
className="relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert"
|
34 |
-
src="/next.svg"
|
35 |
-
alt="Next.js Logo"
|
36 |
-
width={180}
|
37 |
-
height={37}
|
38 |
-
priority
|
39 |
-
/>
|
40 |
-
</div>
|
41 |
-
|
42 |
-
<div className="mb-32 grid text-center lg:mb-0 lg:w-full lg:max-w-5xl lg:grid-cols-4 lg:text-left">
|
43 |
-
<a
|
44 |
-
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
|
45 |
-
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
|
46 |
-
target="_blank"
|
47 |
-
rel="noopener noreferrer"
|
48 |
-
>
|
49 |
-
<h2 className="mb-3 text-2xl font-semibold">
|
50 |
-
Docs{" "}
|
51 |
-
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
|
52 |
-
->
|
53 |
-
</span>
|
54 |
-
</h2>
|
55 |
-
<p className="m-0 max-w-[30ch] text-sm opacity-50">
|
56 |
-
Find in-depth information about Next.js features and API.
|
57 |
-
</p>
|
58 |
-
</a>
|
59 |
-
|
60 |
-
<a
|
61 |
-
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
|
62 |
-
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
|
63 |
-
target="_blank"
|
64 |
-
rel="noopener noreferrer"
|
65 |
-
>
|
66 |
-
<h2 className="mb-3 text-2xl font-semibold">
|
67 |
-
Learn{" "}
|
68 |
-
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
|
69 |
-
->
|
70 |
-
</span>
|
71 |
-
</h2>
|
72 |
-
<p className="m-0 max-w-[30ch] text-sm opacity-50">
|
73 |
-
Learn about Next.js in an interactive course with quizzes!
|
74 |
-
</p>
|
75 |
-
</a>
|
76 |
-
|
77 |
-
<a
|
78 |
-
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
|
79 |
-
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
|
80 |
-
target="_blank"
|
81 |
-
rel="noopener noreferrer"
|
82 |
-
>
|
83 |
-
<h2 className="mb-3 text-2xl font-semibold">
|
84 |
-
Templates{" "}
|
85 |
-
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
|
86 |
-
->
|
87 |
-
</span>
|
88 |
-
</h2>
|
89 |
-
<p className="m-0 max-w-[30ch] text-sm opacity-50">
|
90 |
-
Explore starter templates for Next.js.
|
91 |
-
</p>
|
92 |
-
</a>
|
93 |
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
<
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
|
|
|
|
108 |
</p>
|
109 |
-
</
|
|
|
|
|
|
|
|
|
|
|
110 |
</div>
|
111 |
-
</
|
112 |
);
|
113 |
}
|
|
|
1 |
+
import { Space } from "@/components/space";
|
2 |
+
import { SpaceIcon } from "@/components/space_icon";
|
3 |
+
import { fetchAllPages } from "@/utils";
|
4 |
+
import { SpaceProps } from "@/utils/type";
|
5 |
|
6 |
+
async function getSpaces() {
|
7 |
+
try {
|
8 |
+
const response = await fetchAllPages();
|
9 |
+
return response as SpaceProps[];
|
10 |
+
} catch {
|
11 |
+
return [];
|
12 |
+
}
|
13 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
+
export default async function Home() {
|
16 |
+
const spaces = await getSpaces();
|
17 |
+
console.log(spaces);
|
18 |
+
return (
|
19 |
+
<section className="flex h-screen overflow-auto">
|
20 |
+
<div className="w-full container px-6 py-10 lg:py-20 mx-auto space-y-14">
|
21 |
+
<header className="max-w-4xl mx-auto w-full text-center">
|
22 |
+
<div className="mb-6 mx-auto font-regular text-xs text-center max-w-max rounded-full border-gray-200 bg-gray-50 border text-gray-700 px-3 py-2 transition-all duration-300">
|
23 |
+
<SpaceIcon className="inline-block w-4 h-4 mr-2 drop-shadow-lg" />
|
24 |
+
Browse {spaces.length} spaces
|
25 |
+
</div>
|
26 |
+
<h1 className="font-extrabold text-3xl text-black">
|
27 |
+
Zero GPU Spaces
|
28 |
+
</h1>
|
29 |
+
<p className="text-neutral-500 font-regular text-base">
|
30 |
+
Discover spaces with zero GPU usage on 🤗 Hugging Face Spaces.
|
31 |
</p>
|
32 |
+
</header>
|
33 |
+
<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
|
34 |
+
{spaces?.map((space: SpaceProps) => (
|
35 |
+
<Space key={space.id} space={space} />
|
36 |
+
))}
|
37 |
+
</div>
|
38 |
</div>
|
39 |
+
</section>
|
40 |
);
|
41 |
}
|
assets/globals.css
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@tailwind base;
|
2 |
+
@tailwind components;
|
3 |
+
@tailwind utilities;
|
4 |
+
|
5 |
+
body {
|
6 |
+
@apply bg-gray-100 overflow-hidden;
|
7 |
+
}
|
8 |
+
|
9 |
+
@layer utilities {
|
10 |
+
.text-balance {
|
11 |
+
text-wrap: balance;
|
12 |
+
}
|
13 |
+
}
|
components/space.tsx
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import Image from "next/image";
|
2 |
+
import { TiHeartFullOutline } from "react-icons/ti";
|
3 |
+
|
4 |
+
import { SpaceProps } from "@/utils/type";
|
5 |
+
import Link from "next/link";
|
6 |
+
|
7 |
+
interface Props {
|
8 |
+
space: SpaceProps;
|
9 |
+
}
|
10 |
+
export const Space: React.FC<Props> = ({ space }) => {
|
11 |
+
return (
|
12 |
+
<Link
|
13 |
+
href={`https://huggingface.co/spaces/${space.id}`}
|
14 |
+
target="_blank"
|
15 |
+
className="bg-gray-50 border border-gray-200 px-6 py-4 rounded-xl transition-all duration-300 hover:ring-[4px] hover:ring-blue-500/10"
|
16 |
+
>
|
17 |
+
<header className="flex items-center justify-between gap-5">
|
18 |
+
<div>
|
19 |
+
<h2 className="font-semibold text-black">{space?.title}</h2>
|
20 |
+
{space.shortDescription && (
|
21 |
+
<p className="text-gray-500 text-xs mt-0.5 line-clamp-1">
|
22 |
+
{space.shortDescription}
|
23 |
+
</p>
|
24 |
+
)}
|
25 |
+
<div className="flex items-center justify-start gap-2 whitespace-pre-line mt-2">
|
26 |
+
<Image
|
27 |
+
src={
|
28 |
+
space.authorData.avatarUrl?.startsWith("/")
|
29 |
+
? `https://huggingface.co${space.authorData.avatarUrl}`
|
30 |
+
: space.authorData.avatarUrl
|
31 |
+
}
|
32 |
+
alt={space.authorData.name}
|
33 |
+
width={24}
|
34 |
+
height={24}
|
35 |
+
className="rounded-full w-4 h-4"
|
36 |
+
/>
|
37 |
+
<div>
|
38 |
+
<p className="text-gray-500 text-xs font-regular">
|
39 |
+
{space.authorData.name}
|
40 |
+
</p>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
<div className="space-y-3 flex flex-col items-end">
|
45 |
+
<div
|
46 |
+
className="rounded-full truncate min-w-[2.5rem] min-h-[2.5rem] max-w-[2.5rem] max-h-[2.5rem] overflow-hidden flex items-center justify-center bg-gradient-to-br from-blue-500 to-red-500 border-[2px] border-white ring-1 ring-gray-200"
|
47 |
+
style={{
|
48 |
+
// @ts-ignore
|
49 |
+
"--tw-gradient-from": `${space.colorFrom} var(--tw-gradient-to-position)`,
|
50 |
+
"--tw-gradient-to": space.colorTo,
|
51 |
+
}}
|
52 |
+
>
|
53 |
+
{space?.emoji && (
|
54 |
+
<p className="text-xl">
|
55 |
+
{/* keep only 1 char */}
|
56 |
+
{space.emoji}
|
57 |
+
</p>
|
58 |
+
)}
|
59 |
+
</div>
|
60 |
+
<div className="flex items-center max-w-max rounded-full px-1.5 py-1 text-sm bg-gray-100/80 border border-gray-200 text-gray-600">
|
61 |
+
<TiHeartFullOutline className="w-5" />
|
62 |
+
<p className="text-gray-500 text-xs font-regular">{space.likes}</p>
|
63 |
+
</div>
|
64 |
+
</div>
|
65 |
+
</header>
|
66 |
+
</Link>
|
67 |
+
);
|
68 |
+
};
|
components/space_icon.tsx
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export const SpaceIcon = ({ className }: { className?: string }) => {
|
2 |
+
return (
|
3 |
+
<svg
|
4 |
+
className={className}
|
5 |
+
xmlns="http://www.w3.org/2000/svg"
|
6 |
+
focusable="false"
|
7 |
+
role="img"
|
8 |
+
width="1em"
|
9 |
+
height="1em"
|
10 |
+
preserveAspectRatio="xMidYMid meet"
|
11 |
+
viewBox="0 0 39 40"
|
12 |
+
>
|
13 |
+
<path
|
14 |
+
d="M6.3712 2.04427C3.7183 2.04427 1.56771 4.19486 1.56771 6.84776V18.3546V18.6544V32.7341C1.56771 35.3868 3.71818 37.5377 6.3712 37.5377H17.878H20.7507H32.2575C34.9104 37.5377 37.0612 35.387 37.0612 32.7341V21.6204C37.0612 20.177 36.4252 18.8839 35.4189 18.004C36.4576 16.3895 37.0612 14.4666 37.0612 12.4046C37.0612 6.68274 32.4225 2.04427 26.7007 2.04427C24.6388 2.04427 22.7159 2.64776 21.1014 3.68647C20.2214 2.6802 18.9282 2.04427 17.4849 2.04427H6.3712Z"
|
15 |
+
fill="black"
|
16 |
+
className="stroke-white"
|
17 |
+
strokeWidth="3.07552"
|
18 |
+
/>
|
19 |
+
<path
|
20 |
+
d="M9.56855 23.5001C8.8406 23.5001 8.25047 24.0902 8.25047 24.8182V29.5361C8.25047 30.2641 8.8406 30.8542 9.56855 30.8542H14.2864C15.0144 30.8542 15.6045 30.2641 15.6045 29.5361V24.8182C15.6045 24.0902 15.0143 23.5001 14.2864 23.5001H9.56855Z"
|
21 |
+
fill="#FF3270"
|
22 |
+
/>
|
23 |
+
<path
|
24 |
+
d="M24.3409 23.5001C23.613 23.5001 23.0228 24.0902 23.0228 24.8182V29.5361C23.0228 30.2641 23.613 30.8542 24.3409 30.8542H29.0588C29.7868 30.8542 30.3769 30.2641 30.3769 29.5361V24.8182C30.3769 24.0902 29.7868 23.5001 29.0588 23.5001H24.3409Z"
|
25 |
+
fill="#861FFF"
|
26 |
+
/>
|
27 |
+
<path
|
28 |
+
d="M9.56855 8.72815C8.8406 8.72815 8.25047 9.31827 8.25047 10.0462V14.7641C8.25047 15.4921 8.8406 16.0822 9.56855 16.0822H14.2864C15.0144 16.0822 15.6045 15.4921 15.6045 14.7641V10.0462C15.6045 9.31827 15.0143 8.72815 14.2864 8.72815H9.56855Z"
|
29 |
+
fill="#097EFF"
|
30 |
+
/>
|
31 |
+
<path
|
32 |
+
d="M26.6999 8.72815C24.6692 8.72815 23.0228 10.3744 23.0228 12.4052C23.0228 14.4359 24.6692 16.0822 26.6999 16.0822C28.7306 16.0822 30.3769 14.4359 30.3769 12.4052C30.3769 10.3744 28.7306 8.72815 26.6999 8.72815Z"
|
33 |
+
fill="#FFD702"
|
34 |
+
/>
|
35 |
+
</svg>
|
36 |
+
);
|
37 |
+
};
|
next.config.mjs
CHANGED
@@ -1,4 +1,25 @@
|
|
1 |
/** @type {import('next').NextConfig} */
|
2 |
-
const nextConfig = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
export default nextConfig;
|
|
|
1 |
/** @type {import('next').NextConfig} */
|
2 |
+
const nextConfig = {
|
3 |
+
images: {
|
4 |
+
remotePatterns: [
|
5 |
+
{
|
6 |
+
protocol: "https",
|
7 |
+
hostname: "huggingface.co",
|
8 |
+
},
|
9 |
+
{
|
10 |
+
protocol: "https",
|
11 |
+
hostname: "aeiljuispo.cloudimg.io",
|
12 |
+
},
|
13 |
+
{
|
14 |
+
protocol: "https",
|
15 |
+
hostname: "cdn-avatars.huggingface.co",
|
16 |
+
},
|
17 |
+
{
|
18 |
+
protocol: "https",
|
19 |
+
hostname: "www.gravatar.com",
|
20 |
+
},
|
21 |
+
],
|
22 |
+
},
|
23 |
+
};
|
24 |
|
25 |
export default nextConfig;
|
package-lock.json
CHANGED
@@ -8,9 +8,12 @@
|
|
8 |
"name": "zero-gpu-spaces",
|
9 |
"version": "0.1.0",
|
10 |
"dependencies": {
|
|
|
11 |
"next": "14.2.3",
|
12 |
"react": "^18",
|
13 |
-
"react-dom": "^18"
|
|
|
|
|
14 |
},
|
15 |
"devDependencies": {
|
16 |
"@types/node": "^20",
|
@@ -39,7 +42,6 @@
|
|
39 |
"version": "7.24.4",
|
40 |
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz",
|
41 |
"integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==",
|
42 |
-
"dev": true,
|
43 |
"dependencies": {
|
44 |
"regenerator-runtime": "^0.14.0"
|
45 |
},
|
@@ -215,8 +217,7 @@
|
|
215 |
"node_modules/@jridgewell/sourcemap-codec": {
|
216 |
"version": "1.4.15",
|
217 |
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
218 |
-
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
|
219 |
-
"dev": true
|
220 |
},
|
221 |
"node_modules/@jridgewell/trace-mapping": {
|
222 |
"version": "0.3.25",
|
@@ -442,6 +443,11 @@
|
|
442 |
"tslib": "^2.4.0"
|
443 |
}
|
444 |
},
|
|
|
|
|
|
|
|
|
|
|
445 |
"node_modules/@types/json5": {
|
446 |
"version": "0.0.29",
|
447 |
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
@@ -615,6 +621,11 @@
|
|
615 |
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
616 |
"dev": true
|
617 |
},
|
|
|
|
|
|
|
|
|
|
|
618 |
"node_modules/acorn": {
|
619 |
"version": "8.11.3",
|
620 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
|
@@ -1082,6 +1093,11 @@
|
|
1082 |
"node": ">= 6"
|
1083 |
}
|
1084 |
},
|
|
|
|
|
|
|
|
|
|
|
1085 |
"node_modules/client-only": {
|
1086 |
"version": "0.0.1",
|
1087 |
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
|
@@ -1120,6 +1136,14 @@
|
|
1120 |
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
1121 |
"dev": true
|
1122 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1123 |
"node_modules/cross-spawn": {
|
1124 |
"version": "7.0.3",
|
1125 |
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
@@ -1134,6 +1158,26 @@
|
|
1134 |
"node": ">= 8"
|
1135 |
}
|
1136 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1137 |
"node_modules/cssesc": {
|
1138 |
"version": "3.0.0",
|
1139 |
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
@@ -1149,8 +1193,7 @@
|
|
1149 |
"node_modules/csstype": {
|
1150 |
"version": "3.1.3",
|
1151 |
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
1152 |
-
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
1153 |
-
"dev": true
|
1154 |
},
|
1155 |
"node_modules/damerau-levenshtein": {
|
1156 |
"version": "1.0.8",
|
@@ -1336,6 +1379,14 @@
|
|
1336 |
"node": ">=10.13.0"
|
1337 |
}
|
1338 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1339 |
"node_modules/es-abstract": {
|
1340 |
"version": "1.23.3",
|
1341 |
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
|
@@ -1921,8 +1972,7 @@
|
|
1921 |
"node_modules/fast-deep-equal": {
|
1922 |
"version": "3.1.3",
|
1923 |
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
1924 |
-
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
1925 |
-
"dev": true
|
1926 |
},
|
1927 |
"node_modules/fast-glob": {
|
1928 |
"version": "3.3.2",
|
@@ -1964,6 +2014,21 @@
|
|
1964 |
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
|
1965 |
"dev": true
|
1966 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1967 |
"node_modules/fastq": {
|
1968 |
"version": "1.17.1",
|
1969 |
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
|
@@ -2374,6 +2439,11 @@
|
|
2374 |
"node": ">= 0.4"
|
2375 |
}
|
2376 |
},
|
|
|
|
|
|
|
|
|
|
|
2377 |
"node_modules/ignore": {
|
2378 |
"version": "5.3.1",
|
2379 |
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
|
@@ -2424,6 +2494,15 @@
|
|
2424 |
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
2425 |
"dev": true
|
2426 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2427 |
"node_modules/internal-slot": {
|
2428 |
"version": "1.0.7",
|
2429 |
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
|
@@ -2857,6 +2936,11 @@
|
|
2857 |
"jiti": "bin/jiti.js"
|
2858 |
}
|
2859 |
},
|
|
|
|
|
|
|
|
|
|
|
2860 |
"node_modules/js-tokens": {
|
2861 |
"version": "4.0.0",
|
2862 |
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
@@ -3015,6 +3099,11 @@
|
|
3015 |
"node": "14 || >=16.14"
|
3016 |
}
|
3017 |
},
|
|
|
|
|
|
|
|
|
|
|
3018 |
"node_modules/merge2": {
|
3019 |
"version": "1.4.1",
|
3020 |
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
@@ -3084,6 +3173,25 @@
|
|
3084 |
"thenify-all": "^1.0.0"
|
3085 |
}
|
3086 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3087 |
"node_modules/nanoid": {
|
3088 |
"version": "3.3.7",
|
3089 |
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
@@ -3717,12 +3825,54 @@
|
|
3717 |
"react": "^18.3.1"
|
3718 |
}
|
3719 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3720 |
"node_modules/react-is": {
|
3721 |
"version": "16.13.1",
|
3722 |
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
3723 |
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
|
3724 |
"dev": true
|
3725 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3726 |
"node_modules/read-cache": {
|
3727 |
"version": "1.0.0",
|
3728 |
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
@@ -3768,8 +3918,7 @@
|
|
3768 |
"node_modules/regenerator-runtime": {
|
3769 |
"version": "0.14.1",
|
3770 |
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
3771 |
-
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
|
3772 |
-
"dev": true
|
3773 |
},
|
3774 |
"node_modules/regexp.prototype.flags": {
|
3775 |
"version": "1.5.2",
|
@@ -3789,6 +3938,11 @@
|
|
3789 |
"url": "https://github.com/sponsors/ljharb"
|
3790 |
}
|
3791 |
},
|
|
|
|
|
|
|
|
|
|
|
3792 |
"node_modules/resolve": {
|
3793 |
"version": "1.22.8",
|
3794 |
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
@@ -3869,6 +4023,14 @@
|
|
3869 |
"url": "https://github.com/sponsors/isaacs"
|
3870 |
}
|
3871 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3872 |
"node_modules/run-parallel": {
|
3873 |
"version": "1.2.0",
|
3874 |
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
@@ -3935,6 +4097,17 @@
|
|
3935 |
"loose-envify": "^1.1.0"
|
3936 |
}
|
3937 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3938 |
"node_modules/semver": {
|
3939 |
"version": "7.6.0",
|
3940 |
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
|
@@ -3994,6 +4167,14 @@
|
|
3994 |
"node": ">= 0.4"
|
3995 |
}
|
3996 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3997 |
"node_modules/shebang-command": {
|
3998 |
"version": "2.0.0",
|
3999 |
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
@@ -4054,6 +4235,14 @@
|
|
4054 |
"node": ">=8"
|
4055 |
}
|
4056 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4057 |
"node_modules/source-map-js": {
|
4058 |
"version": "1.2.0",
|
4059 |
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
@@ -4062,6 +4251,46 @@
|
|
4062 |
"node": ">=0.10.0"
|
4063 |
}
|
4064 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4065 |
"node_modules/streamsearch": {
|
4066 |
"version": "1.1.0",
|
4067 |
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
@@ -4278,6 +4507,11 @@
|
|
4278 |
}
|
4279 |
}
|
4280 |
},
|
|
|
|
|
|
|
|
|
|
|
4281 |
"node_modules/sucrase": {
|
4282 |
"version": "3.35.0",
|
4283 |
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
|
@@ -4397,6 +4631,14 @@
|
|
4397 |
"node": ">=0.8"
|
4398 |
}
|
4399 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4400 |
"node_modules/to-regex-range": {
|
4401 |
"version": "5.0.1",
|
4402 |
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
@@ -4409,6 +4651,11 @@
|
|
4409 |
"node": ">=8.0"
|
4410 |
}
|
4411 |
},
|
|
|
|
|
|
|
|
|
|
|
4412 |
"node_modules/ts-api-utils": {
|
4413 |
"version": "1.3.0",
|
4414 |
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
|
@@ -4421,6 +4668,11 @@
|
|
4421 |
"typescript": ">=4.2.0"
|
4422 |
}
|
4423 |
},
|
|
|
|
|
|
|
|
|
|
|
4424 |
"node_modules/ts-interface-checker": {
|
4425 |
"version": "0.1.13",
|
4426 |
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
|
|
|
8 |
"name": "zero-gpu-spaces",
|
9 |
"version": "0.1.0",
|
10 |
"dependencies": {
|
11 |
+
"classnames": "^2.5.1",
|
12 |
"next": "14.2.3",
|
13 |
"react": "^18",
|
14 |
+
"react-dom": "^18",
|
15 |
+
"react-icons": "^5.1.0",
|
16 |
+
"react-use": "^17.5.0"
|
17 |
},
|
18 |
"devDependencies": {
|
19 |
"@types/node": "^20",
|
|
|
42 |
"version": "7.24.4",
|
43 |
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz",
|
44 |
"integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==",
|
|
|
45 |
"dependencies": {
|
46 |
"regenerator-runtime": "^0.14.0"
|
47 |
},
|
|
|
217 |
"node_modules/@jridgewell/sourcemap-codec": {
|
218 |
"version": "1.4.15",
|
219 |
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
220 |
+
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
|
|
|
221 |
},
|
222 |
"node_modules/@jridgewell/trace-mapping": {
|
223 |
"version": "0.3.25",
|
|
|
443 |
"tslib": "^2.4.0"
|
444 |
}
|
445 |
},
|
446 |
+
"node_modules/@types/js-cookie": {
|
447 |
+
"version": "2.2.7",
|
448 |
+
"resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
|
449 |
+
"integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA=="
|
450 |
+
},
|
451 |
"node_modules/@types/json5": {
|
452 |
"version": "0.0.29",
|
453 |
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
|
|
621 |
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
622 |
"dev": true
|
623 |
},
|
624 |
+
"node_modules/@xobotyi/scrollbar-width": {
|
625 |
+
"version": "1.9.5",
|
626 |
+
"resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz",
|
627 |
+
"integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ=="
|
628 |
+
},
|
629 |
"node_modules/acorn": {
|
630 |
"version": "8.11.3",
|
631 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
|
|
|
1093 |
"node": ">= 6"
|
1094 |
}
|
1095 |
},
|
1096 |
+
"node_modules/classnames": {
|
1097 |
+
"version": "2.5.1",
|
1098 |
+
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
|
1099 |
+
"integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
|
1100 |
+
},
|
1101 |
"node_modules/client-only": {
|
1102 |
"version": "0.0.1",
|
1103 |
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
|
|
|
1136 |
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
1137 |
"dev": true
|
1138 |
},
|
1139 |
+
"node_modules/copy-to-clipboard": {
|
1140 |
+
"version": "3.3.3",
|
1141 |
+
"resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
|
1142 |
+
"integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
|
1143 |
+
"dependencies": {
|
1144 |
+
"toggle-selection": "^1.0.6"
|
1145 |
+
}
|
1146 |
+
},
|
1147 |
"node_modules/cross-spawn": {
|
1148 |
"version": "7.0.3",
|
1149 |
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
|
|
1158 |
"node": ">= 8"
|
1159 |
}
|
1160 |
},
|
1161 |
+
"node_modules/css-in-js-utils": {
|
1162 |
+
"version": "3.1.0",
|
1163 |
+
"resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
|
1164 |
+
"integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==",
|
1165 |
+
"dependencies": {
|
1166 |
+
"hyphenate-style-name": "^1.0.3"
|
1167 |
+
}
|
1168 |
+
},
|
1169 |
+
"node_modules/css-tree": {
|
1170 |
+
"version": "1.1.3",
|
1171 |
+
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
|
1172 |
+
"integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
|
1173 |
+
"dependencies": {
|
1174 |
+
"mdn-data": "2.0.14",
|
1175 |
+
"source-map": "^0.6.1"
|
1176 |
+
},
|
1177 |
+
"engines": {
|
1178 |
+
"node": ">=8.0.0"
|
1179 |
+
}
|
1180 |
+
},
|
1181 |
"node_modules/cssesc": {
|
1182 |
"version": "3.0.0",
|
1183 |
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
|
|
1193 |
"node_modules/csstype": {
|
1194 |
"version": "3.1.3",
|
1195 |
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
1196 |
+
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
|
1197 |
},
|
1198 |
"node_modules/damerau-levenshtein": {
|
1199 |
"version": "1.0.8",
|
|
|
1379 |
"node": ">=10.13.0"
|
1380 |
}
|
1381 |
},
|
1382 |
+
"node_modules/error-stack-parser": {
|
1383 |
+
"version": "2.1.4",
|
1384 |
+
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
|
1385 |
+
"integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
|
1386 |
+
"dependencies": {
|
1387 |
+
"stackframe": "^1.3.4"
|
1388 |
+
}
|
1389 |
+
},
|
1390 |
"node_modules/es-abstract": {
|
1391 |
"version": "1.23.3",
|
1392 |
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
|
|
|
1972 |
"node_modules/fast-deep-equal": {
|
1973 |
"version": "3.1.3",
|
1974 |
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
1975 |
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
|
|
1976 |
},
|
1977 |
"node_modules/fast-glob": {
|
1978 |
"version": "3.3.2",
|
|
|
2014 |
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
|
2015 |
"dev": true
|
2016 |
},
|
2017 |
+
"node_modules/fast-loops": {
|
2018 |
+
"version": "1.1.3",
|
2019 |
+
"resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz",
|
2020 |
+
"integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g=="
|
2021 |
+
},
|
2022 |
+
"node_modules/fast-shallow-equal": {
|
2023 |
+
"version": "1.0.0",
|
2024 |
+
"resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz",
|
2025 |
+
"integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="
|
2026 |
+
},
|
2027 |
+
"node_modules/fastest-stable-stringify": {
|
2028 |
+
"version": "2.0.2",
|
2029 |
+
"resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz",
|
2030 |
+
"integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q=="
|
2031 |
+
},
|
2032 |
"node_modules/fastq": {
|
2033 |
"version": "1.17.1",
|
2034 |
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
|
|
|
2439 |
"node": ">= 0.4"
|
2440 |
}
|
2441 |
},
|
2442 |
+
"node_modules/hyphenate-style-name": {
|
2443 |
+
"version": "1.0.4",
|
2444 |
+
"resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
|
2445 |
+
"integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
|
2446 |
+
},
|
2447 |
"node_modules/ignore": {
|
2448 |
"version": "5.3.1",
|
2449 |
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
|
|
|
2494 |
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
2495 |
"dev": true
|
2496 |
},
|
2497 |
+
"node_modules/inline-style-prefixer": {
|
2498 |
+
"version": "7.0.0",
|
2499 |
+
"resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.0.tgz",
|
2500 |
+
"integrity": "sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==",
|
2501 |
+
"dependencies": {
|
2502 |
+
"css-in-js-utils": "^3.1.0",
|
2503 |
+
"fast-loops": "^1.1.3"
|
2504 |
+
}
|
2505 |
+
},
|
2506 |
"node_modules/internal-slot": {
|
2507 |
"version": "1.0.7",
|
2508 |
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
|
|
|
2936 |
"jiti": "bin/jiti.js"
|
2937 |
}
|
2938 |
},
|
2939 |
+
"node_modules/js-cookie": {
|
2940 |
+
"version": "2.2.1",
|
2941 |
+
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
|
2942 |
+
"integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
|
2943 |
+
},
|
2944 |
"node_modules/js-tokens": {
|
2945 |
"version": "4.0.0",
|
2946 |
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
|
|
3099 |
"node": "14 || >=16.14"
|
3100 |
}
|
3101 |
},
|
3102 |
+
"node_modules/mdn-data": {
|
3103 |
+
"version": "2.0.14",
|
3104 |
+
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
|
3105 |
+
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
|
3106 |
+
},
|
3107 |
"node_modules/merge2": {
|
3108 |
"version": "1.4.1",
|
3109 |
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
|
|
3173 |
"thenify-all": "^1.0.0"
|
3174 |
}
|
3175 |
},
|
3176 |
+
"node_modules/nano-css": {
|
3177 |
+
"version": "5.6.1",
|
3178 |
+
"resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.1.tgz",
|
3179 |
+
"integrity": "sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==",
|
3180 |
+
"dependencies": {
|
3181 |
+
"@jridgewell/sourcemap-codec": "^1.4.15",
|
3182 |
+
"css-tree": "^1.1.2",
|
3183 |
+
"csstype": "^3.1.2",
|
3184 |
+
"fastest-stable-stringify": "^2.0.2",
|
3185 |
+
"inline-style-prefixer": "^7.0.0",
|
3186 |
+
"rtl-css-js": "^1.16.1",
|
3187 |
+
"stacktrace-js": "^2.0.2",
|
3188 |
+
"stylis": "^4.3.0"
|
3189 |
+
},
|
3190 |
+
"peerDependencies": {
|
3191 |
+
"react": "*",
|
3192 |
+
"react-dom": "*"
|
3193 |
+
}
|
3194 |
+
},
|
3195 |
"node_modules/nanoid": {
|
3196 |
"version": "3.3.7",
|
3197 |
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
|
|
3825 |
"react": "^18.3.1"
|
3826 |
}
|
3827 |
},
|
3828 |
+
"node_modules/react-icons": {
|
3829 |
+
"version": "5.1.0",
|
3830 |
+
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.1.0.tgz",
|
3831 |
+
"integrity": "sha512-D3zug1270S4hbSlIRJ0CUS97QE1yNNKDjzQe3HqY0aefp2CBn9VgzgES27sRR2gOvFK+0CNx/BW0ggOESp6fqQ==",
|
3832 |
+
"peerDependencies": {
|
3833 |
+
"react": "*"
|
3834 |
+
}
|
3835 |
+
},
|
3836 |
"node_modules/react-is": {
|
3837 |
"version": "16.13.1",
|
3838 |
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
3839 |
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
|
3840 |
"dev": true
|
3841 |
},
|
3842 |
+
"node_modules/react-universal-interface": {
|
3843 |
+
"version": "0.6.2",
|
3844 |
+
"resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
|
3845 |
+
"integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==",
|
3846 |
+
"peerDependencies": {
|
3847 |
+
"react": "*",
|
3848 |
+
"tslib": "*"
|
3849 |
+
}
|
3850 |
+
},
|
3851 |
+
"node_modules/react-use": {
|
3852 |
+
"version": "17.5.0",
|
3853 |
+
"resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.0.tgz",
|
3854 |
+
"integrity": "sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==",
|
3855 |
+
"dependencies": {
|
3856 |
+
"@types/js-cookie": "^2.2.6",
|
3857 |
+
"@xobotyi/scrollbar-width": "^1.9.5",
|
3858 |
+
"copy-to-clipboard": "^3.3.1",
|
3859 |
+
"fast-deep-equal": "^3.1.3",
|
3860 |
+
"fast-shallow-equal": "^1.0.0",
|
3861 |
+
"js-cookie": "^2.2.1",
|
3862 |
+
"nano-css": "^5.6.1",
|
3863 |
+
"react-universal-interface": "^0.6.2",
|
3864 |
+
"resize-observer-polyfill": "^1.5.1",
|
3865 |
+
"screenfull": "^5.1.0",
|
3866 |
+
"set-harmonic-interval": "^1.0.1",
|
3867 |
+
"throttle-debounce": "^3.0.1",
|
3868 |
+
"ts-easing": "^0.2.0",
|
3869 |
+
"tslib": "^2.1.0"
|
3870 |
+
},
|
3871 |
+
"peerDependencies": {
|
3872 |
+
"react": "*",
|
3873 |
+
"react-dom": "*"
|
3874 |
+
}
|
3875 |
+
},
|
3876 |
"node_modules/read-cache": {
|
3877 |
"version": "1.0.0",
|
3878 |
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
|
|
3918 |
"node_modules/regenerator-runtime": {
|
3919 |
"version": "0.14.1",
|
3920 |
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
3921 |
+
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
|
|
|
3922 |
},
|
3923 |
"node_modules/regexp.prototype.flags": {
|
3924 |
"version": "1.5.2",
|
|
|
3938 |
"url": "https://github.com/sponsors/ljharb"
|
3939 |
}
|
3940 |
},
|
3941 |
+
"node_modules/resize-observer-polyfill": {
|
3942 |
+
"version": "1.5.1",
|
3943 |
+
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
|
3944 |
+
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
|
3945 |
+
},
|
3946 |
"node_modules/resolve": {
|
3947 |
"version": "1.22.8",
|
3948 |
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
|
|
4023 |
"url": "https://github.com/sponsors/isaacs"
|
4024 |
}
|
4025 |
},
|
4026 |
+
"node_modules/rtl-css-js": {
|
4027 |
+
"version": "1.16.1",
|
4028 |
+
"resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
|
4029 |
+
"integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
|
4030 |
+
"dependencies": {
|
4031 |
+
"@babel/runtime": "^7.1.2"
|
4032 |
+
}
|
4033 |
+
},
|
4034 |
"node_modules/run-parallel": {
|
4035 |
"version": "1.2.0",
|
4036 |
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
|
|
4097 |
"loose-envify": "^1.1.0"
|
4098 |
}
|
4099 |
},
|
4100 |
+
"node_modules/screenfull": {
|
4101 |
+
"version": "5.2.0",
|
4102 |
+
"resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz",
|
4103 |
+
"integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==",
|
4104 |
+
"engines": {
|
4105 |
+
"node": ">=0.10.0"
|
4106 |
+
},
|
4107 |
+
"funding": {
|
4108 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
4109 |
+
}
|
4110 |
+
},
|
4111 |
"node_modules/semver": {
|
4112 |
"version": "7.6.0",
|
4113 |
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
|
|
|
4167 |
"node": ">= 0.4"
|
4168 |
}
|
4169 |
},
|
4170 |
+
"node_modules/set-harmonic-interval": {
|
4171 |
+
"version": "1.0.1",
|
4172 |
+
"resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz",
|
4173 |
+
"integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==",
|
4174 |
+
"engines": {
|
4175 |
+
"node": ">=6.9"
|
4176 |
+
}
|
4177 |
+
},
|
4178 |
"node_modules/shebang-command": {
|
4179 |
"version": "2.0.0",
|
4180 |
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
|
|
4235 |
"node": ">=8"
|
4236 |
}
|
4237 |
},
|
4238 |
+
"node_modules/source-map": {
|
4239 |
+
"version": "0.6.1",
|
4240 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
4241 |
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
4242 |
+
"engines": {
|
4243 |
+
"node": ">=0.10.0"
|
4244 |
+
}
|
4245 |
+
},
|
4246 |
"node_modules/source-map-js": {
|
4247 |
"version": "1.2.0",
|
4248 |
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
|
|
4251 |
"node": ">=0.10.0"
|
4252 |
}
|
4253 |
},
|
4254 |
+
"node_modules/stack-generator": {
|
4255 |
+
"version": "2.0.10",
|
4256 |
+
"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
|
4257 |
+
"integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
|
4258 |
+
"dependencies": {
|
4259 |
+
"stackframe": "^1.3.4"
|
4260 |
+
}
|
4261 |
+
},
|
4262 |
+
"node_modules/stackframe": {
|
4263 |
+
"version": "1.3.4",
|
4264 |
+
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
|
4265 |
+
"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
|
4266 |
+
},
|
4267 |
+
"node_modules/stacktrace-gps": {
|
4268 |
+
"version": "3.1.2",
|
4269 |
+
"resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
|
4270 |
+
"integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
|
4271 |
+
"dependencies": {
|
4272 |
+
"source-map": "0.5.6",
|
4273 |
+
"stackframe": "^1.3.4"
|
4274 |
+
}
|
4275 |
+
},
|
4276 |
+
"node_modules/stacktrace-gps/node_modules/source-map": {
|
4277 |
+
"version": "0.5.6",
|
4278 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
|
4279 |
+
"integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
|
4280 |
+
"engines": {
|
4281 |
+
"node": ">=0.10.0"
|
4282 |
+
}
|
4283 |
+
},
|
4284 |
+
"node_modules/stacktrace-js": {
|
4285 |
+
"version": "2.0.2",
|
4286 |
+
"resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
|
4287 |
+
"integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
|
4288 |
+
"dependencies": {
|
4289 |
+
"error-stack-parser": "^2.0.6",
|
4290 |
+
"stack-generator": "^2.0.5",
|
4291 |
+
"stacktrace-gps": "^3.0.4"
|
4292 |
+
}
|
4293 |
+
},
|
4294 |
"node_modules/streamsearch": {
|
4295 |
"version": "1.1.0",
|
4296 |
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
|
|
4507 |
}
|
4508 |
}
|
4509 |
},
|
4510 |
+
"node_modules/stylis": {
|
4511 |
+
"version": "4.3.2",
|
4512 |
+
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
|
4513 |
+
"integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg=="
|
4514 |
+
},
|
4515 |
"node_modules/sucrase": {
|
4516 |
"version": "3.35.0",
|
4517 |
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
|
|
|
4631 |
"node": ">=0.8"
|
4632 |
}
|
4633 |
},
|
4634 |
+
"node_modules/throttle-debounce": {
|
4635 |
+
"version": "3.0.1",
|
4636 |
+
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
|
4637 |
+
"integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
|
4638 |
+
"engines": {
|
4639 |
+
"node": ">=10"
|
4640 |
+
}
|
4641 |
+
},
|
4642 |
"node_modules/to-regex-range": {
|
4643 |
"version": "5.0.1",
|
4644 |
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
|
|
4651 |
"node": ">=8.0"
|
4652 |
}
|
4653 |
},
|
4654 |
+
"node_modules/toggle-selection": {
|
4655 |
+
"version": "1.0.6",
|
4656 |
+
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
|
4657 |
+
"integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
|
4658 |
+
},
|
4659 |
"node_modules/ts-api-utils": {
|
4660 |
"version": "1.3.0",
|
4661 |
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
|
|
|
4668 |
"typescript": ">=4.2.0"
|
4669 |
}
|
4670 |
},
|
4671 |
+
"node_modules/ts-easing": {
|
4672 |
+
"version": "0.2.0",
|
4673 |
+
"resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
|
4674 |
+
"integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ=="
|
4675 |
+
},
|
4676 |
"node_modules/ts-interface-checker": {
|
4677 |
"version": "0.1.13",
|
4678 |
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
|
package.json
CHANGED
@@ -3,24 +3,27 @@
|
|
3 |
"version": "0.1.0",
|
4 |
"private": true,
|
5 |
"scripts": {
|
6 |
-
"dev": "next dev",
|
7 |
"build": "next build",
|
8 |
"start": "next start",
|
9 |
"lint": "next lint"
|
10 |
},
|
11 |
"dependencies": {
|
|
|
|
|
12 |
"react": "^18",
|
13 |
"react-dom": "^18",
|
14 |
-
"
|
|
|
15 |
},
|
16 |
"devDependencies": {
|
17 |
-
"typescript": "^5",
|
18 |
"@types/node": "^20",
|
19 |
"@types/react": "^18",
|
20 |
"@types/react-dom": "^18",
|
|
|
|
|
21 |
"postcss": "^8",
|
22 |
"tailwindcss": "^3.4.1",
|
23 |
-
"
|
24 |
-
"eslint-config-next": "14.2.3"
|
25 |
}
|
26 |
}
|
|
|
3 |
"version": "0.1.0",
|
4 |
"private": true,
|
5 |
"scripts": {
|
6 |
+
"dev": "next dev --port 3001",
|
7 |
"build": "next build",
|
8 |
"start": "next start",
|
9 |
"lint": "next lint"
|
10 |
},
|
11 |
"dependencies": {
|
12 |
+
"classnames": "^2.5.1",
|
13 |
+
"next": "14.2.3",
|
14 |
"react": "^18",
|
15 |
"react-dom": "^18",
|
16 |
+
"react-icons": "^5.1.0",
|
17 |
+
"react-use": "^17.5.0"
|
18 |
},
|
19 |
"devDependencies": {
|
|
|
20 |
"@types/node": "^20",
|
21 |
"@types/react": "^18",
|
22 |
"@types/react-dom": "^18",
|
23 |
+
"eslint": "^8",
|
24 |
+
"eslint-config-next": "14.2.3",
|
25 |
"postcss": "^8",
|
26 |
"tailwindcss": "^3.4.1",
|
27 |
+
"typescript": "^5"
|
|
|
28 |
}
|
29 |
}
|
utils/index.ts
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export const fetchAllPages = async () => {
|
2 |
+
const filter_key = "zero-a10g";
|
3 |
+
|
4 |
+
const pageNumbers = Array.from({ length: 200 }, (_, i) => i);
|
5 |
+
const urls = pageNumbers.map(async (pageNumber) => {
|
6 |
+
const url = `https://huggingface.co/spaces-json?p=${pageNumber}&sort=trending`;
|
7 |
+
const response = await fetch(url);
|
8 |
+
const json = await response.json();
|
9 |
+
return json?.spaces ?? [];
|
10 |
+
});
|
11 |
+
const jsonResponses = await Promise.all(urls);
|
12 |
+
const spaces = jsonResponses.flat()?.filter((space) => space?.runtime?.hardware?.current === filter_key);
|
13 |
+
return spaces;
|
14 |
+
};
|
utils/type.ts
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export interface SpaceProps {
|
2 |
+
name: string;
|
3 |
+
id: string;
|
4 |
+
title: string;
|
5 |
+
emoji?: string;
|
6 |
+
runtime: any;
|
7 |
+
shortDescription?: string;
|
8 |
+
likes?: number;
|
9 |
+
authorData: Author;
|
10 |
+
colorFrom: string;
|
11 |
+
colorTo: string;
|
12 |
+
}
|
13 |
+
|
14 |
+
interface Author {
|
15 |
+
name: string;
|
16 |
+
username: string;
|
17 |
+
fullName?: string;
|
18 |
+
avatarUrl: string;
|
19 |
+
}
|