Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
models list
Browse files
src/lib/components/models/Card.svelte
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script lang="ts">
|
2 |
+
import type { CommunityCard } from "$lib/type";
|
3 |
+
import Button from "$lib/components/Button.svelte";
|
4 |
+
import Icon from "@iconify/svelte";
|
5 |
+
|
6 |
+
export let card: CommunityCard;
|
7 |
+
|
8 |
+
</script>
|
9 |
+
|
10 |
+
<div
|
11 |
+
class="cursor-pointer group bg-neutral-900 rounded-xl relative flex items-start justify-between flex-col p-3 border border-neutral-800 transition-all duration-200 brightness-75 hover:brightness-100 z-[1]"
|
12 |
+
>
|
13 |
+
<div class="w-full h-[250px] relative z-[1] mb-3 overflow-hidden">
|
14 |
+
<div class="w-full h-full bg-center bg-cover rounded-lg" style="background-image: url('{card.image}');"></div>
|
15 |
+
<div class="group-hover:opacity-100 opacity-0 translate-x-full group-hover:translate-x-0 transition-all duration-200 absolute right-3 bottom-3">
|
16 |
+
<Button theme="light" size="md">
|
17 |
+
Try it now
|
18 |
+
</Button>
|
19 |
+
</div>
|
20 |
+
</div>
|
21 |
+
<div class="flex items-center justify-between w-full">
|
22 |
+
<p class="text-white font-semibold text-base mb-1">{card.model_name}</p>
|
23 |
+
<div class="text-white text-sm flex items-center justify-end gap-1.5">
|
24 |
+
<Icon icon="solar:heart-bold" class="w-5 h-5 text-red-500" />
|
25 |
+
234
|
26 |
+
</div>
|
27 |
+
</div>
|
28 |
+
</div>
|
src/routes/api/models/+server.ts
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { error, json, type RequestEvent } from '@sveltejs/kit';
|
2 |
+
// import { env } from '$env/dynamic/private'
|
3 |
+
|
4 |
+
import jsonData from "$lib/cards.json";
|
5 |
+
|
6 |
+
/** @type {import('./$types').RequestHandler} */
|
7 |
+
|
8 |
+
export async function GET(request : RequestEvent) {
|
9 |
+
const hasError = false
|
10 |
+
|
11 |
+
const page = parseInt(request.url.searchParams.get('page') || '0')
|
12 |
+
if (hasError) {
|
13 |
+
return error(500, 'Internal Server Error')
|
14 |
+
}
|
15 |
+
|
16 |
+
const cards = jsonData.slice(page * 25, page * 25 + 25)
|
17 |
+
|
18 |
+
return json({
|
19 |
+
cards,
|
20 |
+
total_items: jsonData.length,
|
21 |
+
})
|
22 |
+
}
|
src/routes/models/+page.svelte
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
import InfiniteScroll from "svelte-infinite-scroll";
|
4 |
|
5 |
import Button from "$lib/components/Button.svelte";
|
6 |
-
import Card from "$lib/components/
|
7 |
import Input from "$lib/components/fields/Input.svelte";
|
8 |
import Radio from "$lib/components/fields/Radio.svelte";
|
9 |
import { MODELS_FILTER_OPTIONS } from "$lib/utils/index.js";
|
|
|
3 |
import InfiniteScroll from "svelte-infinite-scroll";
|
4 |
|
5 |
import Button from "$lib/components/Button.svelte";
|
6 |
+
import Card from "$lib/components/models/Card.svelte";
|
7 |
import Input from "$lib/components/fields/Input.svelte";
|
8 |
import Radio from "$lib/components/fields/Radio.svelte";
|
9 |
import { MODELS_FILTER_OPTIONS } from "$lib/utils/index.js";
|
src/routes/models/+page.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
export async function load({ fetch }) {
|
2 |
-
const response = await fetch("/api/
|
3 |
method: "GET",
|
4 |
headers: {
|
5 |
"Content-Type": "application/json"
|
|
|
1 |
export async function load({ fetch }) {
|
2 |
+
const response = await fetch("/api/models?page=1", {
|
3 |
method: "GET",
|
4 |
headers: {
|
5 |
"Content-Type": "application/json"
|