mishig HF Staff commited on
Commit
a44ad63
·
verified ·
1 Parent(s): 18fefa8

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +162 -18
index.html CHANGED
@@ -1,19 +1,163 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>Mistral AI Robotics Hackathon</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <!-- Tailwind CDN -->
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <!-- React & ReactDOM CDN -->
10
+ <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
11
+ <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
12
+ </head>
13
+ <body class="bg-white">
14
+ <div id="root"></div>
15
+
16
+ <script type="text/javascript">
17
+ const { useEffect, useState } = React;
18
+
19
+ function App() {
20
+ const [videos, setVideos] = useState([]);
21
+ const [teamDatasets, setTeamDatasets] = useState({});
22
+
23
+ useEffect(() => {
24
+ fetch("https://huggingface.co/api/datasets/roboticshack/submissions/tree/main")
25
+ .then(res => res.json())
26
+ .then(data => {
27
+ const videoFiles = data
28
+ .filter(file => file.path.endsWith(".mp4"))
29
+ .map(file => {
30
+ const url = `https://huggingface.co/datasets/roboticshack/submissions/resolve/main/${encodeURIComponent(file.path)}`;
31
+ const match = file.path.match(/(?:team|group)[-_ ]?(\d+)/i);
32
+ const team = match ? match[1] : null;
33
+ const label = team ? `Team ${team}` : "Unknown Team";
34
+ return { url, label, team };
35
+ });
36
+ setVideos(videoFiles);
37
+ });
38
+
39
+ fetch("https://huggingface.co/api/datasets?author=roboticshack")
40
+ .then(res => res.json())
41
+ .then(data => {
42
+ const map = {};
43
+ data.forEach(entry => {
44
+ const match = entry.id.match(/roboticshack\/team[_-]?(\d+)/i);
45
+ if (match) {
46
+ const team = match[1];
47
+ if (!map[team]) map[team] = [];
48
+ map[team].push(`https://huggingface.co/spaces/lerobot/visualize_dataset?dataset=${entry.id}`);
49
+ }
50
+ });
51
+ setTeamDatasets(map);
52
+ });
53
+ }, []);
54
+
55
+ return React.createElement("div", {
56
+ className: "min-h-screen p-6 bg-[linear-gradient(-45deg,#dbeafe,#f0abfc,#fcd34d,#a5f3fc)] bg-[length:400%_400%]",
57
+ style: { animation: "gradientBG 15s ease infinite" }
58
+ },
59
+ React.createElement("style", {
60
+ dangerouslySetInnerHTML: {
61
+ __html: `
62
+ @keyframes gradientBG {
63
+ 0% { background-position: 0% 50%; }
64
+ 50% { background-position: 100% 50%; }
65
+ 100% { background-position: 0% 50%; }
66
+ }
67
+ `
68
+ }
69
+ }),
70
+ React.createElement("h1", { className: "text-3xl font-bold mb-2 text-center" },
71
+ React.createElement("a", {
72
+ href: "https://mistral.ai/",
73
+ className: "text-orange-500 underline",
74
+ target: "_blank"
75
+ }, "Mistral AI"), " Robotics Hackathon"
76
+ ),
77
+ React.createElement("p", { className: "text-center text-gray-700 mb-6" },
78
+ "Paris, France", React.createElement("br", null),
79
+ "11 April 2025, 13:00 – 13 April 2025, 14:00"
80
+ ),
81
+ React.createElement("div", {
82
+ className: "flex flex-wrap justify-center items-center gap-8 mb-10"
83
+ },
84
+ // Powered by
85
+ React.createElement("div", { className: "flex items-center gap-2" },
86
+ React.createElement("span", { className: "text-lg font-semibold" }, "Powered by:"),
87
+ React.createElement("a", {
88
+ href: "https://lsvp.com/", target: "_blank"
89
+ }, React.createElement("img", {
90
+ src: "https://lsvp.com/wp-content/uploads/2023/04/logo_lightspeed_venture_partners.svg",
91
+ className: "h-8 max-w-20 object-contain"
92
+ }))
93
+ ),
94
+ // Sponsored by
95
+ React.createElement("div", { className: "flex items-center gap-2" },
96
+ React.createElement("span", { className: "text-lg font-semibold" }, "Sponsored by:"),
97
+ [
98
+ ["https://huggingface.co/", "https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg"],
99
+ ["https://www.joinef.com/", "https://hal-assets-prod.s3.amazonaws.com/programs/02c353f7-9aee-451d-84b4-9419731124e1.png"],
100
+ ["https://www.nvidia.com/", "https://upload.wikimedia.org/wikipedia/sco/thumb/2/21/Nvidia_logo.svg/702px-Nvidia_logo.svg.png?20150924223142"],
101
+ ["https://www.motier.vc/", "https://cdn.prod.website-files.com/61dd4bedf96feb260d027b32/620901ff3592bf41e41e3779_motier-ventures.svg"],
102
+ ["https://www.scaleway.com/en/", "https://www.scaleway.com/_next/static/media/logo.7e2996cb.svg"],
103
+ ["https://www.linkedin.com/company/sotafamily/", "https://d1f2tohd72skfr.cloudfront.net/2025/03/13/e4937700-e9cb-4d6f-bfd3-66dc172fa3c4"]
104
+ ].map(([href, src], i) =>
105
+ React.createElement("a", {
106
+ key: i, href, target: "_blank"
107
+ }, React.createElement("img", {
108
+ src, className: "h-8 max-w-20 object-contain"
109
+ }))
110
+ )
111
+ ),
112
+ // Office space
113
+ React.createElement("div", { className: "flex items-center gap-2" },
114
+ React.createElement("span", { className: "text-lg font-semibold" }, "Office space by:"),
115
+ React.createElement("a", {
116
+ href: "https://www.photoroom.com/", target: "_blank"
117
+ }, React.createElement("img", {
118
+ src: "https://media.licdn.com/dms/image/v2/D4E0BAQGY9CCqd-ULZA/company-logo_200_200/company-logo_200_200/0/1721219031708/photoroom_logo?e=1750291200&v=beta&t=Ja2zXQoUenH2WgRb-jkSoPIFwcOQQ9t-r322tMfyLGs",
119
+ className: "h-8 max-w-20 object-contain"
120
+ }))
121
+ )
122
+ ),
123
+ React.createElement("div", { className: "text-center text-base text-gray-800 font-medium mb-10" },
124
+ React.createElement("a", {
125
+ href: "https://github.com/huggingface/lerobot/blob/main/examples/10_use_so100.md",
126
+ className: "underline text-blue-600", target: "_blank"
127
+ }, "SO-ARM100 arms by Rob Knight & LeRobot team")
128
+ ),
129
+ React.createElement("div", {
130
+ className: "columns-1 sm:columns-2 lg:columns-3 gap-4 space-y-4"
131
+ }, videos.map((video, i) =>
132
+ React.createElement("div", {
133
+ key: i, className: "break-inside-avoid bg-white rounded-2xl shadow-md overflow-hidden"
134
+ },
135
+ React.createElement("video", {
136
+ src: video.url, controls: true, className: "w-full h-auto"
137
+ }),
138
+ React.createElement("div", {
139
+ className: "p-2 text-center text-sm font-medium text-gray-700"
140
+ },
141
+ video.label,
142
+ video.team && teamDatasets[video.team] &&
143
+ React.createElement("div", { className: "mt-1 space-y-1" },
144
+ teamDatasets[video.team].map((url, j) =>
145
+ React.createElement("div", { key: j },
146
+ React.createElement("a", {
147
+ href: url,
148
+ className: "text-blue-500 underline",
149
+ target: "_blank"
150
+ }, `Dataset: ${url.split('=')[1]}`)
151
+ )
152
+ )
153
+ )
154
+ )
155
+ )
156
+ ))
157
+ );
158
+ }
159
+
160
+ ReactDOM.createRoot(document.getElementById("root")).render(React.createElement(App));
161
+ </script>
162
+ </body>
163
  </html>