refactor: clean up for installation (#376)

* update

* update README.md

* update
This commit is contained in:
Kai Mei
2024-12-13 22:16:57 +08:00
committed by GitHub
parent 728519f0cd
commit aba55da17b
166 changed files with 210 additions and 52120 deletions

7
.dockerignore Normal file
View File

@@ -0,0 +1,7 @@
__pycache__
venv
env
.github
docs
scripts
tests

5
.env.example Normal file
View File

@@ -0,0 +1,5 @@
OPENAI_API_KEY=''
GEMINI_API_KEY=''
ANTHROPIC_API_KEY=''
GROQ_API_KEY=''
HF_AUTH_TOKENS=''

14
Dockerfile Normal file
View File

@@ -0,0 +1,14 @@
FROM python:3.11.8-slim-bullseye
ENV PYTHONUNBUFFERED True
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
ENV PORT 8000
RUN pip install --no-cache-dir -r requirements.txt
# As an example here we're running the web service with one worker on uvicorn.
CMD exec uvicorn server:app --host 0.0.0.0 --port ${PORT} --workers 1

View File

@@ -61,6 +61,7 @@ AIOS supports several API integrations that require configuration. You can use t
When no environment variables are set, the following API keys will be shown:
- `OPENAI_API_KEY`: OpenAI API key for accessing OpenAI services
- `ANTHROPIC_API_KEY`: Anthropic API key for accessing Anthropic services
- `GEMINI_API_KEY`: Google Gemini API key for accessing Google's Gemini services
- `GROQ_API_KEY`: Groq API key for accessing Groq services
- `HF_AUTH_TOKEN`: HuggingFace authentication token for accessing models
@@ -69,14 +70,15 @@ When no environment variables are set, the following API keys will be shown:
To obtain these API keys:
1. OpenAI API: Visit https://platform.openai.com/api-keys
2. Google Gemini API: Visit https://makersuite.google.com/app/apikey
3. Groq API: Visit https://console.groq.com/keys
4. HuggingFace Token: Visit https://huggingface.co/settings/tokens
3. Anthropic API: Visit https://console.anthropic.com/settings/keys.
4. Groq API: Visit https://console.groq.com/keys
5. HuggingFace Token: Visit https://huggingface.co/settings/tokens
#### Installation from source
Git clone AIOS kernel
```bash
git clone https://github.com/agiresearch/AIOS.git
cd AIOS && git checkout v0.2.0.beta
cd AIOS && git checkout tags/v0.2.0.beta -b v0.2.0.beta-branch
```
Create venv environment (recommended)
```bash

View File

@@ -1,9 +0,0 @@
{
"extends": ["next/core-web-vitals", "next/typescript"],
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-explicit-any": "off"
}
}

36
agenthub/.gitignore vendored
View File

@@ -1,36 +0,0 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts

View File

@@ -1,36 +0,0 @@
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
## Deploy on Vercel
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.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.

View File

@@ -1,155 +0,0 @@
export default function LandingPageFooter() {
return (
<footer className="border-t border-gray-100">
<div className="container pb-32 pt-12">
<div className="grid gap-8 sm:grid-cols-2 md:grid-cols-4">
<div>
<div className="mb-4 text-lg font-semibold">Website</div>
<ul className="space-y-1 text-gray-600 md:space-y-2">
<li>
<a className="hover:underline" href="/models">
Models
</a>
</li>
<li>
<a className="hover:underline" href="/datasets">
Datasets
</a>
</li>
<li>
<a className="hover:underline" href="/spaces">
Spaces
</a>
</li>
<li>
<a className="hover:underline" href="/tasks">
Tasks
</a>
</li>
<li>
<a className="hover:underline" href="/inference-endpoints">
Expert Support
</a>
</li>
<li>
<a className="hover:underline" href="/support">
Expert Acceleration Program
</a>
</li>
</ul>
</div>
<div>
<div className="mb-4 text-lg font-semibold">Company</div>
<ul className="space-y-1 text-gray-600 md:space-y-2">
<li>
<a className="hover:underline" href="/huggingface">
About
</a>
</li>
<li>
<a className="hover:underline" href="/shop">
HF Store
</a>
</li>
<li>
<a className="hover:underline" href="/brand">
Brand assets
</a>
</li>
<li>
<a className="hover:underline" href="/terms-of-service">
Terms of service
</a>
</li>
<li>
<a className="hover:underline" href="/privacy">
Privacy
</a>
</li>
<li>
<a className="hover:underline" href="https://apply.workable.com/huggingface/">
Jobs
</a>
</li>
<li>
<a className="hover:underline" href="mailto:press@huggingface.co">
Press
</a>
</li>
</ul>
</div>
<div>
<div className="mb-4 text-lg font-semibold">Resources</div>
<ul className="space-y-1 text-gray-600 md:space-y-2">
<li>
<a className="hover:underline" href="/learn">
Learn
</a>
</li>
<li>
<a className="hover:underline" href="/docs">
Documentation
</a>
</li>
<li>
<a className="hover:underline" href="/blog">
Blog
</a>
</li>
<li>
<a className="hover:underline" href="https://discuss.huggingface.co">
Forum
</a>
</li>
<li>
<a className="hover:underline" href="https://status.huggingface.co/">
Service Status
</a>
</li>
</ul>
</div>
<div>
<div className="mb-4 text-lg font-semibold">Social</div>
<ul className="space-y-1 text-gray-600 md:space-y-2">
<li>
<a className="hover:underline" href="https://github.com/huggingface">
GitHub
</a>
</li>
<li>
<a className="hover:underline" href="https://twitter.com/huggingface">
Twitter
</a>
</li>
<li>
<a className="hover:underline" href="https://www.linkedin.com/company/huggingface/">
LinkedIn
</a>
</li>
<li>
<a className="hover:underline" href="/join/discord">
Discord
</a>
</li>
<li>
<a className="hover:underline" href="https://www.zhihu.com/org/huggingface">
Zhihu
</a>
</li>
<li>
<a
target="_blank"
className="hover:underline"
href="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/chinese-language-blog/wechat.jpg"
rel="noreferrer"
>
WeChat
</a>
</li>
</ul>
</div>
</div>
</div>
</footer>
)
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
import LandingPageFooter from './LandingPageFooter'
import LandingPageMain from './LandingPageMain'
export default function Page() {
return (
<main>
<LandingPageMain />
<LandingPageFooter />
</main>
)
}

View File

@@ -1,50 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const { searchParams } = new URL(request.url);
const name = searchParams.get('name');
const version = searchParams.get('version');
const author = searchParams.get('author');
if (name && version && author) {
const result = await prisma.agent.findFirst({
where: {
name,
version,
author
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
} else if (name && author) {
const result = await prisma.agent.findFirst({
where: {
name,
author
},
orderBy: {
version: 'desc'
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
}
return NextResponse.json({ status: 'fail' });
}

View File

@@ -1,25 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const { searchParams } = new URL(request.url);
const name = searchParams.get('name');
if (name) {
const result = await prisma.agent.findFirst({
where: {
name,
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
}
return NextResponse.json({ status: 'fail' });
}

View File

@@ -1,29 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const { searchParams } = new URL(request.url);
const name = searchParams.get('name');
const version = searchParams.get('version');
console.log(name, version)
if (name && version) {
const result = await prisma.agent.findFirst({
where: {
name,
version
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
}
return NextResponse.json({ status: 'fail' });
}

View File

@@ -1,22 +0,0 @@
export const dynamic = 'force-dynamic'
import { NextResponse } from 'next/server';
import prisma from '../../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
//linter
// console.log(request)
const result = await prisma.agent.findMany({
select: {
id: true,
author: true,
name: true,
version: true,
description: true,
createdAt: true
}
});
return NextResponse.json({...result});
}

View File

@@ -1,12 +0,0 @@
export const dynamic = 'force-dynamic'
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
//linter
// console.log(request)
const result = await prisma.agent.findMany();
return NextResponse.json({...result});
}

View File

@@ -1,76 +0,0 @@
// app/api/proxy/route.ts
import { NextRequest, NextResponse } from 'next/server'
import axios from 'axios'
import { retryOperation } from '@/lib/utils/retry'
export async function POST(request: Request): Promise<NextResponse> {
try {
const { type, payload, url } = await request.json()
if (!type || !url) {
return NextResponse.json({ message: 'Missing required parameters' }, { status: 400 })
}
let response
switch (type.toUpperCase()) {
case 'GET':
response = await retryOperation(async () => {
return await axios.get(url);
});
break
case 'POST':
response = await retryOperation(async () => {
return await axios.post(url, payload);
});
break
case 'PUT':
response = await axios.put(url, payload)
break
case 'DELETE':
response = await axios.delete(url)
break
default:
return NextResponse.json({ message: 'Unsupported request type' }, { status: 400 })
}
// Return the proxied response as-is
return new NextResponse(JSON.stringify(response.data), {
status: response.status,
headers: {
'Content-Type': 'application/json',
},
})
} catch (error) {
if (axios.isAxiosError(error)) {
// Forward the error response if it's an Axios error
if (error.response) {
return new NextResponse(JSON.stringify(error.response.data), {
status: error.response.status,
headers: {
'Content-Type': 'application/json',
},
})
} else {
return NextResponse.json({ message: error.message }, { status: 500 })
}
} else {
// For other types of errors
return NextResponse.json({ message: 'An unexpected error occurred' }, { status: 500 })
}
}
}
// Optionally, you can add this to disallow other HTTP methods
export async function GET() {
return NextResponse.json({ message: 'Method Not Allowed' }, { status: 405 })
}
export async function PUT() {
return NextResponse.json({ message: 'Method Not Allowed' }, { status: 405 })
}
export async function DELETE() {
return NextResponse.json({ message: 'Method Not Allowed' }, { status: 405 })
}

View File

@@ -1,40 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function POST(request: Request): Promise<NextResponse> {
if (request.body) {
const body = await request.json();
// Destructure the body to separate agent data from files
const { author, name, version, license, files, ...otherData } = body;
try {
const result = await prisma.agent.create({
data: {
author,
name,
version,
license,
...otherData,
files: {
//@ts-ignore
create: files.map((file: any) => ({
path: file.path,
content: file.content
}))
}
},
include: {
files: true
}
});
return NextResponse.json(result);
} catch (error) {
console.error('Error creating agent:', error);
return NextResponse.json({ status: 'error', message: 'Failed to create agent' }, { status: 500 });
}
} else {
return NextResponse.json({ status: 'fail', message: 'No body provided' }, { status: 400 });
}
}

View File

@@ -1,46 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const { searchParams } = new URL(request.url);
const name = searchParams.get('name');
const version = searchParams.get('version');
const author = searchParams.get('author');
if (name && version && author) {
const result = await prisma.cerebrumAgent.findFirst({
where: {
name,
version,
author
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
} else if (name && author) {
const result = await prisma.cerebrumAgent.findFirst({
where: {
name,
author
},
orderBy: {
version: 'desc'
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
}
return NextResponse.json({ status: 'fail' });
}

View File

@@ -1,19 +0,0 @@
export const dynamic = 'force-dynamic'
import { NextResponse } from 'next/server';
import prisma from '../../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const result = await prisma.cerebrumAgent.findMany({
select: {
id: true,
author: true,
name: true,
version: true,
description: true,
createdAt: true
}
});
return NextResponse.json({...result});
}

View File

@@ -1,10 +0,0 @@
export const dynamic = 'force-dynamic'
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const result = await prisma.cerebrumAgent.findMany();
return NextResponse.json({...result});
}

View File

@@ -1,46 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const { searchParams } = new URL(request.url);
const name = searchParams.get('name');
const version = searchParams.get('version');
const author = searchParams.get('author');
if (name && version && author) {
const result = await prisma.cerebrumTool.findFirst({
where: {
name,
version,
author
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
} else if (name && author) {
const result = await prisma.cerebrumTool.findFirst({
where: {
name,
author
},
orderBy: {
version: 'desc'
},
include: {
files: true
}
});
if (result != null) {
return NextResponse.json({ ...result });
}
}
return NextResponse.json({ status: 'fail' });
}

View File

@@ -1,10 +0,0 @@
export const dynamic = 'force-dynamic'
import { NextResponse } from 'next/server';
import prisma from '../../../../lib/prisma'
export async function GET(request: Request): Promise<NextResponse> {
const result = await prisma.cerebrumTool.findMany();
return NextResponse.json({...result});
}

View File

@@ -1,41 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../../lib/prisma'
export async function POST(request: Request): Promise<NextResponse> {
if (request.body) {
const body = await request.json();
// Destructure the body to separate agent data from files
const { author, name, version, license, files, ...otherData } = body;
console.log(body)
try {
const result = await prisma.cerebrumTool.create({
data: {
author,
name,
version,
license,
...otherData,
files: {
//@ts-ignore
create: files.map((file: any) => ({
path: file.path,
content: file.content
}))
}
},
include: {
files: true
}
});
return NextResponse.json(result);
} catch (error) {
console.error('Error creating agent:', error);
return NextResponse.json({ status: 'error', message: 'Failed to create tool' }, { status: 500 });
}
} else {
return NextResponse.json({ status: 'fail', message: 'No body provided' }, { status: 400 });
}
}

View File

@@ -1,41 +0,0 @@
import { NextResponse } from 'next/server';
import prisma from '../../../lib/prisma'
export async function POST(request: Request): Promise<NextResponse> {
if (request.body) {
const body = await request.json();
// Destructure the body to separate agent data from files
const { author, name, version, license, files, ...otherData } = body;
console.log(body)
try {
const result = await prisma.cerebrumAgent.create({
data: {
author,
name,
version,
license,
...otherData,
files: {
//@ts-ignore
create: files.map((file: any) => ({
path: file.path,
content: file.content
}))
}
},
include: {
files: true
}
});
return NextResponse.json(result);
} catch (error) {
console.error('Error creating agent:', error);
return NextResponse.json({ status: 'error', message: 'Failed to create agent' }, { status: 500 });
}
} else {
return NextResponse.json({ status: 'fail', message: 'No body provided' }, { status: 400 });
}
}

Binary file not shown.

Binary file not shown.

View File

@@ -1,178 +0,0 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
/* Headings */
.message-box h1 {
@apply !text-4xl !font-bold mb-4;
}
.message-box h2 {
@apply !text-3xl !font-bold mb-3;
}
.message-box h3 {
@apply !text-2xl !font-bold mb-2;
}
.message-box h4 {
@apply !text-xl !font-bold mb-2;
}
/* Lists */
.message-box ul, .message-box ol {
@apply !mb-4 !pl-8;
}
.message-box ul {
@apply !list-disc;
}
.message-box ol {
@apply !list-decimal;
}
.message-box li {
@apply !mb-1;
}
/* Strong tag */
.message-box strong {
@apply !font-bold;
}
}
:root {
--background: #ffffff;
--foreground: #171717;
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}
body {
color: var(--foreground);
background: var(--background);
font-family: Arial, Helvetica, sans-serif;
background-color:rgb(18,18,18);
}
/* body{--tw-bg-opacity:1;); */
@layer utilities {
.text-balance {
text-wrap: balance;
}
}
.editor {
border: 1px solid #737373; /* border-[1px] and border-neutral-500 */
border-radius: 0.75rem; /* rounded-xl */
background-color: inherit; /* bg-inherit */
color: #e5e5e5; /* text-neutral-200 */
min-height: 3rem; /* h-12 (assuming 1rem = 16px) */
max-height: 7rem;
overflow-y: auto;
padding: 12px;
outline: none;
display: flex;
max-width: 100%;
}
/* .editor[placeholder]:empty:before {
content: attr(placeholder);
color: #a3a3a3;
cursor: text;
} */
.paragraph {
width: 100%;
height: 100%;
}
p.is-editor-empty:first-child::before {
color: rgba(197, 173, 173, 0.524);
content: attr(data-placeholder);
float: left;
height: 0;
pointer-events: none;
}
.mentionNode {
background-color: rgba(88, 101, 242, 0.3); /* Discord blue with opacity */
color: #dee0fc; /* Light blue-ish color for text */
border-radius: 16px;
padding: 4px 8px;
font-weight: 500;
cursor: pointer;
transition: background-color 0.1s ease, color 0.1s ease;
}
.mentionsContainer {
background-color: #2f3136;
border-radius: 16px;
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);
max-height: 60vh;
overflow-y: auto;
width: 40vh;
padding: 1rem;
}
.mentionsItem {
padding: 8px 12px;
color: white;
font-size: 14px;
display: flex;
align-items: center;
cursor: pointer;
border-radius: 12px;
}
.mentionsItem:hover {
background-color: #393c43;
}
@keyframes marquee {
0% {
transform: translateX(0);
}
to {
transform: translateX(-100%);
}
}
.text-foreground {
/* font-size: 72px; */
color: white;
}
.text-brand {
/* font-size: 72px; */
color: rgb(30, 145, 221);
}
.bg-muted {
background-color: rgb(36,36,36);
}
.bg-getstarted {
background-color: rgb(64, 150, 219);
}
.border-strong {
border-color: rgb(54,54,54);
}
.border-stronger {
border-color: rgb(69, 69, 69);
}
.border-strong:hover {
border-color: rgb(69, 69, 69);
}
.from-border {
border-color: rgb(46, 46, 46);
border-width: 1px;
}

View File

@@ -1,108 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="460.000000pt" height="460.000000pt" viewBox="0 0 460.000000 460.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,460.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2284 4536 c-10 -15 -26 -35 -34 -45 -25 -27 -153 -186 -190 -236
-19 -25 -51 -66 -70 -90 -19 -24 -52 -67 -73 -97 -118 -164 -167 -234 -210
-302 -92 -142 -129 -203 -138 -225 -5 -13 -18 -35 -28 -50 -29 -40 -175 -330
-198 -391 -12 -30 -32 -80 -45 -110 -37 -81 -100 -275 -114 -350 -6 -36 -22
-114 -33 -175 -44 -226 -37 -468 20 -684 10 -41 19 -81 19 -88 0 -19 79 -192
107 -233 12 -19 34 -51 47 -71 39 -58 152 -165 230 -217 160 -108 385 -193
569 -215 l97 -11 0 -413 c0 -466 2 -482 67 -483 52 0 53 10 53 471 l0 426 73
7 c180 18 417 103 587 212 36 23 100 75 142 116 104 101 162 187 231 348 17
40 61 225 77 320 17 108 12 361 -10 480 -34 190 -59 297 -86 372 -14 40 -30
90 -35 111 -5 21 -22 64 -38 95 -15 31 -34 75 -41 97 -24 74 -198 402 -271
513 -16 23 -29 45 -29 48 0 3 -30 51 -67 106 -38 55 -79 117 -93 138 -14 21
-52 75 -85 121 -33 45 -67 91 -75 103 -8 11 -28 37 -45 58 -16 20 -46 57 -65
83 -19 26 -45 59 -58 73 -13 15 -35 43 -50 62 -14 19 -40 51 -57 70 -16 19
-37 46 -46 59 l-15 24 -20 -27z m-4 -299 c0 -76 -3 -97 -17 -110 -10 -9 -57
-55 -105 -103 l-88 -87 0 -317 0 -318 -26 -17 c-50 -32 -64 -54 -64 -96 0 -81
89 -126 169 -84 30 15 41 39 41 93 0 25 -8 42 -31 63 -17 16 -35 29 -40 29 -5
0 -9 137 -9 316 l0 315 85 84 85 85 0 -530 0 -530 -25 -12 c-31 -14 -65 -67
-65 -100 0 -53 78 -116 129 -103 14 3 41 20 59 38 25 24 32 39 32 68 0 41 -30
86 -66 99 l-24 10 0 373 0 374 90 -89 90 -88 0 -199 0 -199 -34 -12 c-41 -13
-62 -60 -52 -114 12 -64 81 -99 141 -70 46 21 65 49 65 95 0 40 -28 84 -60 94
-19 6 -20 16 -20 213 l0 207 -110 109 -110 109 0 248 c0 159 4 249 10 249 6 0
10 -4 10 -8 0 -8 63 -89 108 -138 17 -19 135 -177 197 -264 11 -15 49 -72 86
-126 36 -55 74 -112 85 -128 41 -61 114 -183 140 -234 l27 -53 -57 -57 -56
-58 0 -222 0 -222 -47 -47 c-47 -46 -49 -46 -108 -44 -52 2 -64 -1 -82 -21
-35 -38 -45 -74 -29 -111 30 -71 97 -95 155 -55 40 27 55 68 41 116 -8 31 -6
35 51 90 l59 57 0 221 0 221 42 46 c23 26 45 47 49 47 4 0 23 -30 41 -67 19
-38 40 -77 46 -88 90 -166 211 -526 244 -725 14 -84 18 -483 5 -542 l-8 -38
-96 0 -96 0 -106 108 c-116 118 -135 132 -179 132 -24 0 -32 6 -42 31 -15 35
-44 49 -101 49 -49 0 -85 -32 -94 -84 -13 -69 55 -133 126 -119 28 5 79 53 79
74 0 5 13 9 29 9 23 0 51 -21 144 -113 l115 -114 103 -7 c57 -4 106 -9 108
-12 10 -10 -73 -232 -115 -305 -90 -155 -261 -296 -454 -372 -90 -35 -264 -77
-377 -91 l-53 -7 0 80 0 80 92 90 92 91 53 0 c37 0 53 -4 53 -13 0 -7 14 -26
30 -42 81 -78 201 1 167 111 -25 82 -166 85 -192 4 -5 -16 -15 -20 -56 -20
-64 0 -90 -14 -169 -95 l-65 -66 -3 127 c-1 71 0 134 2 141 3 7 21 19 39 27
26 10 38 24 47 50 12 38 6 92 -14 111 -56 55 -118 60 -171 14 -31 -27 -35 -37
-35 -78 0 -54 17 -83 60 -101 l30 -12 0 -177 c-1 -158 -2 -174 -15 -156 -9 11
-26 34 -40 50 -13 17 -47 57 -74 91 l-50 60 4 80 c2 43 7 93 12 109 6 19 6 44
0 68 -8 30 -18 42 -50 58 -50 26 -94 19 -136 -20 -26 -24 -31 -37 -31 -75 0
-38 6 -52 31 -79 28 -29 37 -32 85 -31 l54 0 0 -64 c0 -63 0 -64 67 -150 37
-48 84 -107 105 -131 31 -36 38 -51 38 -87 0 -42 -1 -43 -27 -39 -154 28 -299
58 -330 70 -100 37 -187 77 -217 100 -18 14 -37 25 -42 25 -30 1 -254 226
-254 256 0 6 -11 27 -24 46 -13 19 -37 75 -54 123 l-31 88 69 69 68 68 180 0
c165 0 180 2 197 20 14 16 26 18 61 13 61 -8 92 3 114 40 30 49 26 93 -12 127
-45 41 -79 46 -128 19 -46 -26 -55 -49 -47 -115 4 -36 1 -46 -14 -54 -10 -6
-96 -10 -193 -10 l-174 0 -63 -65 c-34 -35 -65 -62 -69 -60 -4 3 -13 42 -19
87 -33 263 -21 485 40 718 23 85 58 199 78 252 l36 98 64 0 64 0 127 -127 127
-128 -4 -55 c-6 -67 18 -106 72 -116 73 -13 135 35 135 106 0 67 -91 122 -149
91 -14 -8 -42 15 -157 130 l-139 139 -62 0 -62 0 30 68 c34 75 45 99 77 157
12 22 26 51 32 65 6 14 29 57 53 97 23 39 60 102 81 140 22 37 50 81 63 96 13
16 23 32 23 37 0 4 30 52 68 105 37 54 74 107 82 119 8 11 60 81 115 155 55
73 109 146 120 161 22 31 89 110 93 110 1 0 2 -42 2 -93z m-156 -981 c42 -18
55 -60 32 -104 -17 -34 -34 -42 -82 -42 -27 0 -36 6 -49 30 -23 45 -19 85 11
109 31 25 43 26 88 7z m458 -118 c18 -35 19 -39 3 -72 -19 -40 -42 -51 -91
-42 -24 5 -38 16 -49 36 -21 40 -19 54 11 90 23 27 32 31 67 28 35 -3 43 -8
59 -40z m-233 -154 c43 -36 44 -91 1 -122 -39 -30 -66 -28 -101 7 -44 44 -33
94 26 129 29 17 40 15 74 -14z m-385 -279 c23 -35 20 -78 -9 -109 -34 -37 -76
-35 -109 5 -29 34 -32 55 -15 93 13 27 26 33 80 35 29 1 40 -4 53 -24z m800
-26 c29 -34 31 -47 15 -83 -15 -32 -59 -50 -99 -41 -24 5 -36 16 -46 41 -38
90 68 157 130 83z m9 -516 c39 -44 28 -115 -20 -134 -41 -16 -101 4 -109 36
-9 36 4 93 24 104 28 17 87 13 105 -6z m-811 -70 c24 -22 23 -74 -3 -107 -38
-48 -120 -28 -134 34 -9 41 1 67 33 85 31 17 77 12 104 -12z m402 -368 c34
-31 34 -74 0 -114 -42 -50 -108 -40 -139 20 -19 37 -12 67 23 96 36 30 82 30
116 -2z m-289 -20 c41 -40 33 -105 -16 -130 -65 -34 -129 1 -129 70 0 25 8 44
25 60 16 17 35 25 60 25 25 0 44 -8 60 -25z m689 -226 c47 -37 32 -122 -24
-134 -54 -12 -88 2 -99 42 -24 87 54 146 123 92z"/>
<path d="M2710 3495 c-17 -18 -21 -31 -17 -53 5 -23 1 -35 -19 -52 l-24 -23 0
-272 0 -272 -89 -89 c-82 -83 -91 -89 -125 -86 -31 3 -36 7 -36 28 0 24 -1 24
-95 24 -94 0 -95 0 -95 -24 0 -21 -5 -25 -37 -28 -36 -3 -43 2 -135 95 l-98
97 0 199 c0 197 0 200 -23 218 -37 29 -60 72 -61 111 -1 30 -6 39 -30 50 -67
33 -130 -31 -87 -88 14 -19 28 -25 54 -25 28 0 45 -8 77 -40 l40 -39 0 -199 0
-200 115 -113 c63 -63 115 -119 115 -124 0 -6 16 -10 35 -10 28 0 35 -4 35
-20 0 -16 -7 -20 -35 -20 -33 0 -35 -2 -35 -35 0 -33 2 -35 35 -35 30 0 35 -3
35 -24 0 -21 -6 -24 -52 -30 -29 -3 -90 -6 -136 -6 l-84 0 -154 155 c-120 120
-160 155 -180 155 -15 0 -39 11 -56 25 -37 31 -62 32 -93 0 -29 -28 -31 -51
-9 -83 26 -38 124 -23 124 19 0 5 12 9 28 9 22 0 58 -31 181 -155 l154 -155
104 0 c85 0 103 -3 103 -15 0 -10 11 -15 35 -15 31 0 35 -3 35 -25 0 -22 -4
-25 -35 -25 -24 0 -35 -5 -35 -15 0 -13 -42 -15 -318 -15 l-319 0 -11 25 c-22
49 -102 42 -122 -10 -29 -76 89 -133 122 -59 l11 24 319 0 c205 0 318 -4 318
-10 0 -5 16 -10 36 -10 31 0 35 -3 32 -22 -2 -18 -11 -24 -35 -26 -30 -3 -33
-6 -33 -38 0 -32 2 -34 36 -34 31 0 35 -3 32 -22 -2 -18 -11 -24 -34 -26 -26
-3 -61 -33 -190 -162 l-159 -160 -97 0 c-59 0 -98 4 -98 10 0 20 -41 50 -68
50 -59 0 -88 -84 -42 -122 32 -26 57 -22 92 12 29 29 32 30 129 30 l99 0 150
151 c83 83 150 146 150 140 0 -6 16 -11 35 -11 35 0 35 0 35 -45 l0 -45 95 0
95 0 0 45 c0 45 0 45 35 45 19 0 35 4 35 10 0 5 35 -26 78 -70 l79 -80 128 0
127 0 37 -32 c31 -27 36 -38 36 -76 0 -32 6 -48 20 -58 28 -21 69 -17 93 9 45
48 12 110 -57 106 -33 -2 -43 2 -71 34 l-32 37 -131 0 -131 0 -96 94 c-83 82
-99 93 -123 89 -24 -5 -27 -2 -27 21 0 23 4 26 35 26 33 0 35 2 35 35 0 33 -2
35 -35 35 -31 0 -35 3 -35 25 0 22 4 25 35 25 19 0 35 5 35 10 0 6 113 10 318
10 l317 0 10 -22 c6 -13 22 -27 38 -32 35 -13 81 18 85 59 4 35 -32 75 -68 75
-27 0 -60 -27 -60 -48 0 -9 -82 -12 -320 -12 -278 0 -320 2 -320 15 0 10 -11
15 -35 15 -30 0 -35 3 -35 24 0 21 6 24 53 30 28 3 90 6 137 6 l85 0 99 100
99 100 97 0 c95 0 96 0 118 -30 56 -75 150 12 96 88 -23 33 -68 29 -96 -8
l-22 -30 -104 0 -105 0 -95 -95 -95 -95 -98 0 c-81 0 -99 3 -99 15 0 10 -11
15 -35 15 -31 0 -35 3 -35 25 0 22 4 25 35 25 33 0 35 2 35 35 0 33 -2 35 -35
35 -28 0 -35 4 -35 20 0 16 7 20 35 20 22 0 35 5 35 13 0 7 47 60 105 117
l105 105 0 271 c0 262 1 272 21 290 13 12 32 17 51 15 60 -6 90 61 48 107 -27
29 -61 28 -90 -3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -1,98 +0,0 @@
// import type { Metadata } from "next";
// import localFont from "next/font/local";
// import "./globals.css";
// const geistSans = localFont({
// src: "./fonts/GeistVF.woff",
// variable: "--font-geist-sans",
// weight: "100 900",
// });
// const geistMono = localFont({
// src: "./fonts/GeistMonoVF.woff",
// variable: "--font-geist-mono",
// weight: "100 900",
// });
// export const metadata: Metadata = {
// title: "Create Next App",
// description: "Generated by create next app",
// };
// export default function RootLayout({
// children,
// }: Readonly<{
// children: React.ReactNode;
// }>) {
// return (
// <html lang="en">
// <body
// className={`${geistSans.variable} ${geistMono.variable} antialiased`}
// >
// {children}
// </body>
// </html>
// );
// }
import { Metadata } from 'next'
import { Providers } from './providers'
import '@/styles/global-stylesheet.css'
import '@/styles/google-font-Source-Sans-Pro.css'
import '@/styles/google-font-IBM-Plex-Mono.css'
import "./globals.css";
import "./ts.css"
import '@mantine/core/styles.css';
import { ColorSchemeScript, MantineProvider } from '@mantine/core';
export const metadata: Metadata = {
title: 'AIOS The future of AI Agents',
openGraph: {
title: 'AIOS The future of AI Agents',
type: 'website',
url: 'aiosfoundation',
images: 'https://my.aios.foundation/Agent.png',
},
description:
'Were on a journey to advance and democratize artificial intelligence through open source and open science.',
twitter: {
card: 'summary_large_image',
site: '@aiosfoundation',
},
appLinks: {},
// fb: { app_id: '1321688464574422', },
}
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
{/* <Head>
<meta charSet="utf-8" />
<link rel="alternate" type="application/rss+xml" href="/blog/feed.xml" title="Hugging Face Blog" />
<script defer data-domain="huggingface.co" src="/js/script.js"></script>
</Head> */}
<head>
<ColorSchemeScript />
</head>
<body>
<Providers>
<MantineProvider>
<main
className="HomePage flex min-h-screen flex-col text-black bg-white dark:bg-gray-950"
style={{ fontSize: 16 }}
>
<div className="flex min-h-screen flex-col">
{/* <NavHeader /> */}
{/* <div className='w-full bg-inherit opacity-0 h-[24px]'></div> */}
{children}
</div>
</main>
</MantineProvider>
</Providers>
</body>
</html>
)
}

32
agenthub/app/page.tsx vendored
View File

@@ -1,32 +0,0 @@
'use client'
import dynamic from 'next/dynamic'
// import content from '~/data/home/content'
import Layout from '@/components/homepage/DefaultLayout'
import Hero from '@/components/homepage/Hero'
import Logos from '@/components/homepage/logos'
const Products = dynamic(() => import('@/components/homepage/Products'))
// const HeroFrameworks = dynamic(() => import('~/components/Hero/HeroFrameworks'))
// const CustomerStories = dynamic(() => import('components/CustomerStories'))
// const BuiltWithSupabase = dynamic(() => import('components/BuiltWithSupabase'))
// const DashboardFeatures = dynamic(() => import('~/components/DashboardFeatures'))
const TwitterSocialSection = dynamic(() => import('@/components/homepage/TwitterSocialSection'))
// const CTABanner = dynamic(() => import('components/CTABanner/index'))
// const ReactTooltip = dynamic(() => import('react-tooltip'), { ssr: false })
const Index = () => {
return (
<div className='w-full h-full flex flex-col pt-12 bg-black text-white'>
<Hero />
{/* <Logos /> */}
<Products />
{/* <TwitterSocialSection /> */}
</div>
)
}
export default Index

View File

@@ -1,11 +0,0 @@
// app/providers.tsx
import {NextUIProvider} from '@nextui-org/react'
export function Providers({children}: { children: React.ReactNode }) {
return (
<NextUIProvider>
{children}
</NextUIProvider>
)
}

View File

@@ -1,25 +0,0 @@
export function formatDate(dateString: string) {
const date = new Date(dateString);
const months = [
'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'
];
const month = months[date.getUTCMonth()];
const day = date.getUTCDate();
const year = date.getUTCFullYear();
// Function to add ordinal suffix to day
function getOrdinalSuffix(day: number) {
if (day > 3 && day < 21) return 'th';
switch (day % 10) {
case 1: return "st";
case 2: return "nd";
case 3: return "rd";
default: return "th";
}
}
return `${month} ${day}${getOrdinalSuffix(day)}, ${year}`;
}

View File

@@ -1,34 +0,0 @@
// import Nav from 'components/Nav/index'
// import Footer from 'components/Footer/index'
import { cn } from '@/lib/utils'
// import { useForceDeepDark } from '~/lib/theme.utils'
type Props = {
hideHeader?: boolean
hideFooter?: boolean
className?: string
footerClassName?: string
children: React.ReactNode
}
const DefaultLayout = (props: Props) => {
const {
hideHeader = false,
hideFooter = false,
className = '',
footerClassName = '',
children,
} = props
// useForceDeepDark()
return (
<>
{/* <Nav hideNavbar={hideHeader} /> */}
<main className={cn('relative min-h-[70vh]', className)}>{children}</main>
{/* <Footer className={footerClassName} hideFooter={hideFooter} /> */}
</>
)
}
export default DefaultLayout

File diff suppressed because one or more lines are too long

View File

@@ -1,56 +0,0 @@
import { BookOpen } from 'lucide-react'
// import { useRouter } from 'next/router'
// import Button from '../ui/Button'
import SectionContainer from '@/components/homepage/SectionContainer'
import { Button, Link } from '@nextui-org/react'
const Hero = () => {
// const router = useRouter()
return (
<div className="relative -mt-[65px]">
<SectionContainer className="pt-8 md:pt-16 overflow-hidden">
<div className="relative">
<div className="mx-auto">
<div className="mx-auto max-w-2xl lg:col-span-6 lg:flex lg:items-center justify-center text-center">
<div className="relative z-10 lg:h-auto pt-[90px] lg:pt-[90px] lg:min-h-[300px] flex flex-col items-center justify-center sm:mx-auto md:w-3/4 lg:mx-0 lg:w-full gap-4 lg:gap-8">
<div className="flex flex-col items-center">
<h1 className="text-foreground text-4xl sm:text-5xl sm:leading-none lg:text-7xl">
<span className="text-7xl block text-foreground">AIOS </span>
<span className="text-5xl py-2 text-brand block md:ml-0 font-medium">LLM Agent Operating System</span>
</h1>
<p className="pt-2 text-foreground my-3 text-sm sm:mt-5 lg:mb-0 sm:text-base lg:text-lg">
The goal of AIOS is to build a large language model (LLM) agent operating system, which intends to embed large language model into the operating system as the brain of the OS. AIOS is designed to address problems (e.g., scheduling, context switch, memory management, etc.) during the development and deployment of LLM-based agents, for a better ecosystem among agent developers and users.
</p>
</div>
<div className="flex items-center gap-2">
{/* <Link as={Button} size="md" type="button" href="https://supabase.com/dashboard">
Get Started
</Link> */}
<a
href='https://docs.aios.foundation/'
target='_blank'
className='relative justify-center cursor-pointer inline-flex items-center space-x-2 text-center font-regular ease-out duration-200 rounded-md outline-none transition-all outline-0 focus-visible:outline-4 focus-visible:outline-offset-1 border text-foreground bg-getstarted hover:bg-selection border-strong hover:border-stronger focus-visible:outline-brand-600 data-[state=open]:bg-selection data-[state=open]:outline-brand-600 data-[state=open]:border-button-hover text-sm px-4 py-2 h-[38px]'>
Read the Docs
</a>
{/* <Link as={Button} size="md" type="button" href="/contact/sales">
Request a demo
</Link> */}
<a
target='_blank'
href='https://github.com/agiresearch/AIOS'
className='relative justify-center cursor-pointer inline-flex items-center space-x-2 text-center font-regular ease-out duration-200 rounded-md outline-none transition-all outline-0 focus-visible:outline-4 focus-visible:outline-offset-1 border text-foreground bg-muted hover:bg-selection border-strong hover:border-stronger focus-visible:outline-brand-600 data-[state=open]:bg-selection data-[state=open]:outline-brand-600 data-[state=open]:border-button-hover text-sm px-4 py-2 h-[38px]'>
View On Github
</a>
</div>
</div>
</div>
</div>
</div>
</SectionContainer>
</div>
)
}
export default Hero

View File

@@ -1,111 +0,0 @@
import React, { PropsWithChildren, useEffect, useRef } from 'react'
import { motion } from 'framer-motion'
import { cn } from '@/lib/utils'
// import { detectBrowser, isBrowser } from 'common'
interface Props {
outerClassName?: string
innerClassName?: string
hasActiveOnHover?: boolean
activeColor?: 'default' | 'brand'
hasShimmer?: boolean
hasInnerShimmer?: boolean
shimmerFromColor?: string
shimmerToColor?: string
style?: any
innerStyle?: any
hasMotion?: boolean
}
const Panel = ({
outerClassName,
innerClassName,
hasActiveOnHover = false,
activeColor = 'default',
hasShimmer = false,
hasInnerShimmer = false,
shimmerFromColor,
shimmerToColor,
hasMotion = false,
children,
style,
innerStyle,
}: PropsWithChildren<Props>) => {
const outerRef = useRef(null)
const innerRef = useRef(null)
const Component = hasMotion ? motion.div : 'div'
// const isSafari = isBrowser && detectBrowser() === 'Safari'
const trackCursor = hasShimmer || hasInnerShimmer
const handleGlow = (event: any) => {
if (!outerRef.current || !innerRef.current) return
const outerElement = outerRef.current as HTMLDivElement
const innerElement = innerRef.current as HTMLDivElement
const { x: elX, y: elY, width, height } = outerElement.getBoundingClientRect()
const x = event.clientX - elX
const y = event.clientY - elY
const isActive = x > -0 && x < width + 0 && y > -0 && y < height + 0
if (hasShimmer) {
const activeGlow =
hasActiveOnHover && isActive
? `radial-gradient(65rem circle at ${x}px ${y}px, ${
activeColor === 'brand' ? 'var(--colors-brand9)' : 'hsl(var(--border-stronger))'
}, transparent), `
: ''
outerElement.style.backgroundImage = `
${activeGlow}radial-gradient(30rem circle at ${x}px ${y}px, ${
shimmerFromColor ?? 'hsl(var(--border-strong))'
}, ${shimmerToColor ?? 'hsl(var(--background-surface-300))'})`
}
if (hasInnerShimmer) {
innerElement.style.backgroundImage = isActive
? `radial-gradient(7rem circle at ${x}px ${y}px, hsl(var(--background-surface-300)), transparent), radial-gradient(20rem circle at ${x}px ${y}px, hsl(var(--background-surface-200)), transparent)`
: ''
}
}
useEffect(() => {
// if (!isBrowser || trackCursor || isSafari) return
window.addEventListener('mousemove', handleGlow)
return () => {
window.removeEventListener('mousemove', handleGlow)
}
}, [])
return (
<Component
ref={outerRef}
className={cn(
'group/panel relative rounded-xl p-px bg-surface-75 bg-gradient-to-b from-border to-border/50 dark:to-surface-100 transition-all hover:shadow-md flex items-center justify-center',
!trackCursor && hasActiveOnHover
? activeColor === 'brand'
? 'hover:bg-none hover:!bg-brand'
: 'hover:bg-none hover:!bg-border-stronger'
: '',
outerClassName
)}
{...(hasMotion ? { whileHover: 'hover', animate: 'initial' } : undefined)}
style={style}
>
<div
className={cn(
'relative z-10 w-full h-full rounded-[11px] bg-surface-75 overflow-hidden text-foreground-light',
innerClassName
)}
style={innerStyle}
>
{children}
<div
ref={innerRef}
className="absolute z-10 inset-0 w-full h-full pointer-events-none opacity-20"
/>
</div>
</Component>
)
}
export default Panel

View File

@@ -1,70 +0,0 @@
// import Button from 'ui'
import { Link } from '@nextui-org/react'
import SectionContainer from './SectionContainer'
import ExampleCard from './ExampleCard'
const isDevEnv = process.env.NODE_ENV == "development"
const Examples = [
{
type: 'example',
tags: ['Next.js', 'Stripe', 'Vercel'],
products: [],
title: 'Agent Hub',
description:
'View, download, or upload AIOS agents',
author: 'Vercel',
author_url: 'https://github.com/vercel',
author_img: 'https://avatars.githubusercontent.com/u/14985020',
repo_name: 'vercel/nextjs-subscription-payments',
repo_url: 'http://localhost:3000/agents',
vercel_deploy_url:
'https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fnextjs-subscription-payments&env=NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,STRIPE_SECRET_KEY&envDescription=Enter%20your%20Stripe%20API%20keys.&envLink=https%3A%2F%2Fdashboard.stripe.com%2Fapikeys&project-name=nextjs-subscription-payments&repository-name=nextjs-subscription-payments&integration-ids=oac_VqOgBHqhEoFTPzGkPd7L0iH6&external-id=https%3A%2F%2Fgithub.com%2Fvercel%2Fnextjs-subscription-payments%2Ftree%2Fmain',
demo_url: 'https://subscription-payments.vercel.app/',
},
{
type: 'example',
tags: ['Next.js', 'Vercel'],
products: [],
title: 'Agent Chat',
description:
'Use and converse with AIOS agents',
author: 'Supabase',
author_url: 'https://github.com/supabase',
author_img: 'https://avatars.githubusercontent.com/u/54469796',
repo_name: 'vercel/next.js/examples/with-supabase',
repo_url: (isDevEnv ? 'http://localhost:3000/chat' : 'https://my.aios.foundation/chat'),
vercel_deploy_url:
'https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&project-name=nextjs-with-supabase&repository-name=nextjs-with-supabase&demo-title=nextjs-with-supabase&demo-description=This%20starter%20configures%20Supabase%20Auth%20to%20use%20cookies%2C%20making%20the%20user%27s%20session%20available%20throughout%20the%20entire%20Next.js%20app%20-%20Client%20Components%2C%20Server%20Components%2C%20Route%20Handlers%2C%20Server%20Actions%20and%20Middleware.&demo-url=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2F&external-id=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&demo-image=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2Fopengraph-image.png&integration-ids=oac_VqOgBHqhEoFTPzGkPd7L0iH6',
demo_url: 'https://demo-nextjs-with-supabase.vercel.app/',
}
]
const BuiltWithSupabase = () => {
return (
<SectionContainer id="examples" className="xl:pt-32">
<div className="text-center">
<div className=" text-5xl">Start building in seconds</div>
<div className="text-2xl pt-6">
Try out our many features
</div>
</div>
<div className="mt-16 grid grid-cols-12 gap-5">
{Examples.slice(0, 2).map((example: any, i: number) => {
return (
<div
className={`col-span-12 lg:col-span-6 xl:col-span-6 ${i > 2 && `sm:hidden lg:block`}`}
key={i}
>
<ExampleCard {...example} showProducts />
</div>
)
})}
</div>
</SectionContainer>
)
}
export default BuiltWithSupabase

View File

@@ -1,27 +0,0 @@
import classNames from 'classnames'
import { Ref, forwardRef } from 'react'
interface Props {
children: React.ReactNode
className?: string
id?: string
}
const SectionContainer = forwardRef(
({ children, className, id }: Props, ref: Ref<HTMLDivElement>) => (
<div
ref={ref}
id={id}
className={classNames(
`sm:py-18 container relative mx-auto px-6 py-16 md:py-24 lg:px-16 lg:py-24 xl:px-20`,
className
)}
>
{children}
</div>
)
)
SectionContainer.displayName = 'SectionContainer'
export default SectionContainer

View File

@@ -1,49 +0,0 @@
import Image from 'next/image'
import { cn } from '@/lib/utils'
interface TweetCard {
handle: string
quote: string | React.ReactNode
img_url: string
className?: string
}
export function TweetCard(props: TweetCard) {
return (
<div
className={cn(
'bg-surface-75',
'border group-hover/tweet-card:border-foreground-muted transition-colors',
'rounded-2xl p-6',
'drop-shadow-sm',
props.className
)}
>
<div className="relative">
<div className="flex items-center gap-2">
{props.img_url ? (
<div className="h-10 w-10 overflow-hidden rounded-full border border-control">
<Image
src={props.img_url}
width="64"
height="64"
alt={`${props.handle} twitter image`}
/>
</div>
) : (
<div className="w-6" />
)}
<p className="text-foreground text-sm font-medium">{props.handle}</p>
<div className="absolute -left-1 -top-1 flex h-5 w-5 items-center justify-center rounded-full bg-black">
<svg className="h-[12px] w-[12px]" fill="white" viewBox="0 0 24 24" aria-hidden="true">
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
</svg>
</div>
</div>
</div>
<p className="text-foreground-lighter mt-3 text-base">&quot;{props.quote}&quot;</p>
</div>
)
}

View File

@@ -1,248 +0,0 @@
export const Tweets = [
{
"text": "Working with @supabase has been one of the best dev experiences I've had lately. Incredibly easy to set up, great documentation, and so many fewer hoops to jump through than the competition. I definitely plan to use it on any and all future projects.",
"url": "https://twitter.com/thatguy_tex/status/1497602628410388480",
"handle": "thatguy_tex",
"img_url": "/images/twitter-profiles/09HouOSt_400x400.jpg"
},
{
"text": "@supabase is just 🤯 Now I see why a lot of people love using it as a backend for their applications. I am really impressed with how easy it is to set up an Auth and then just code it together for the frontend. @IngoKpp now I see your joy with Supabase #coding #fullstackwebdev",
"url": "https://twitter.com/IxoyeDesign/status/1497473731777728512",
"handle": "IxoyeDesign",
"img_url": "/images/twitter-profiles/C8opIL-g_400x400.jpg"
},
{
"text": "I've been using @supabase for two personal projects and it has been amazing being able to use the power of Postgres and don't have to worry about the backend",
"url": "https://twitter.com/varlenneto/status/1496595780475535366",
"handle": "varlenneto",
"img_url": "/images/twitter-profiles/wkXN0t_F_400x400.jpg"
},
{
"text": "Y'all @supabase + @nextjs is amazing! 🙌 Barely an hour into a proof-of-concept and already have most of the functionality in place. 🤯🤯🤯",
"url": "https://twitter.com/justinjunodev/status/1500264302749622273",
"handle": "justinjunodev",
"img_url": "/images/twitter-profiles/9k_ZB9OO_400x400.jpg"
},
{
"text": "And thanks to @supabase, I was able to go from idea to launched feature in a matter of hours. Absolutely amazing!",
"url": "https://twitter.com/BraydonCoyer/status/1511071369731137537",
"handle": "BraydonCoyer",
"img_url": "/images/twitter-profiles/8YxkpW8f_400x400.jpg"
},
{
"text": "Contributing to open-source projects and seeing merged PRs gives enormous happiness! Special thanks to @supabase, for giving this opportunity by staying open-source and being junior-friendly✌🏼",
"url": "https://twitter.com/damlakoksal/status/1511436907984662539",
"handle": "damlakoksal",
"img_url": "/images/twitter-profiles/N8EfTFs7_400x400.jpg"
},
{
"text": "Holy crap. @supabase is absolutely incredible. Most elegant backend as a service I've ever used. This is a dream.",
"url": "https://twitter.com/kentherogers/status/1512609587110719488",
"handle": "KenTheRogers",
"img_url": "/images/twitter-profiles/9l9Td-Fz_400x400.jpg"
},
{
"text": "Using @supabase I'm really pleased on the power of postgres (and sql in general). Despite being a bit dubious about the whole backend as a service thing I have to say I really don't miss anything. The whole experience feel very robust and secure.",
"url": "https://twitter.com/paoloricciuti/status/1497691838597066752",
"handle": "PaoloRicciuti",
"img_url": "/images/twitter-profiles/OCDKFUOp_400x400.jpg"
},
{
"text": "@supabase is lit. It took me less than 10 minutes to setup, the DX is just amazing.",
"url": "https://twitter.com/saxxone/status/1500812171063828486",
"handle": "saxxone",
"img_url": "/images/twitter-profiles/BXi6z1M7_400x400.jpg"
},
{
"text": "Im not sure what magic @supabase is using but weve migrated @happyteamsdotio database to @supabase from @heroku and its much much faster at half the cost.",
"url": "https://twitter.com/michaelcdever/status/1524753565599690754",
"handle": "michaelcdever",
"img_url": "/images/twitter-profiles/rWX8Jzp5_400x400.jpg"
},
{
"text": "There are a lot of indie hackers building in public, but its rare to see a startup shipping as consistently and transparently as Supabase. Their upcoming March releases look to be 🔥 Def worth a follow! also opened my eyes as to how to value add in open source.",
"url": "https://twitter.com/swyx/status/1366685025047994373",
"handle": "swyx",
"img_url": "/images/twitter-profiles/qhvO9V6x_400x400.jpg"
},
{
"text": "This weekend I made a personal record 🥇 on the less time spent creating an application with social login / permissions, database, cdn, infinite scaling, git push to deploy and for free. Thanks to @supabase and @vercel",
"url": "https://twitter.com/jperelli/status/1366195769657720834",
"handle": "jperelli",
"img_url": "/images/twitter-profiles/_ki30kYo_400x400.jpg"
},
{
"text": "Badass! Supabase is amazing. literally saves our small team a whole engineers worth of work constantly. The founders and everyone Ive chatted with at supabase are just awesome people as well :)",
"url": "https://twitter.com/KennethCassel/status/1524359528619384834",
"handle": "KennethCassel",
"img_url": "/images/twitter-profiles/pmQj3TX-_400x400.jpg"
},
{
"text": "Working with Supabase is just fun. It makes working with a DB so much easier.",
"url": "https://twitter.com/the_BrianB/status/1524716498442276864",
"handle": "the_BrianB",
"img_url": "/images/twitter-profiles/7NITI8Z3_400x400.jpg"
},
{
"text": "This community is STRONG and will continue to be the reason why developers flock to @supabase over an alternative. Keep up the good work! ⚡️",
"url": "https://twitter.com/_wilhelm__/status/1524074865107488769",
"handle": "_wilhelm__",
"img_url": "/images/twitter-profiles/CvqDy6YF_400x400.jpg"
},
{
"text": "Working on my next SaaS app and I want this to be my whole job because I'm just straight out vibing putting it together. @supabase and chill, if you will",
"url": "https://twitter.com/drewclemcr8/status/1523843155484942340",
"handle": "drewclemcr8",
"img_url": "/images/twitter-profiles/bJlKtSxz_400x400.jpg"
},
{
"text": "@supabase Putting a ton of well-explained example API queries in a self-building documentation is just a classy move all around. I also love having GraphQL-style nested queries with traditional SQL filtering. This is pure DX delight. A+++. #backend",
"url": "https://twitter.com/CodiferousCoder/status/1522233113207836675",
"handle": "CodiferousCoder",
"img_url": "/images/twitter-profiles/t37cVLwy_400x400.jpg"
},
{
"text": "Me using @supabase for the first time right now 🤯",
"url": "https://twitter.com/nasiscoe/status/1365140856035024902",
"handle": "nasiscoe",
"img_url": "/images/twitter-profiles/nc2Ms5hH_400x400.jpg"
},
{
"text": "I'm trying @supabase, Firebase alternative that uses PostgreSQL (and you can use GraphQL too) in the cloud. It's incredible 😍",
"url": "https://twitter.com/JP__Gallegos/status/1365699468109242374",
"handle": "JP__Gallegos",
"img_url": "/images/twitter-profiles/1PH2mt6v_400x400.jpg"
},
{
"text": "Check out this amazing product @supabase. A must give try #newidea #opportunity",
"url": "https://twitter.com/digitaldaswani/status/1364447219642814464",
"handle": "digitaldaswani",
"img_url": "/images/twitter-profiles/w8HLdlC7_400x400.jpg"
},
{
"text": "I gave @supabase a try this weekend and I was able to create a quick dashboard to visualize the data from the PostgreSQL instance. It's super easy to use Supabase's API or the direct DB connection. Check out the tutorial 📖",
"url": "https://twitter.com/razvanilin/status/1363770020581412867",
"handle": "razvanilin",
"img_url": "/images/twitter-profiles/AiaH9vJ2_400x400.jpg"
},
{
"text": "Tried @supabase for the first time yesterday. Amazing tool! I was able to get my Posgres DB up in no time and their documentation on operating on the DB is super easy! 👏 Can't wait for Cloud functions to arrive! It's gonna be a great Firebase alternative!",
"url": "https://twitter.com/chinchang457/status/1363347740793524227",
"handle": "chinchang457",
"img_url": "/images/twitter-profiles/LTw5OCnv_400x400.jpg"
},
{
"text": "I gave @supabase a try today and I was positively impressed! Very quick setup to get a working remote database with API access and documentation generated automatically for you 👌 10/10 will play more",
"url": "https://twitter.com/razvanilin/status/1363002398738800640",
"handle": "razvanilin",
"img_url": "/images/twitter-profiles/AiaH9vJ2_400x400.jpg"
},
{
"text": "Wait. Is it so easy to write queries for @supabase ? It's like simple SQL stuff!",
"url": "https://twitter.com/T0ny_Boy/status/1362911838908911617",
"handle": "T0ny_Boy",
"img_url": "/images/twitter-profiles/UCBhUBZl_400x400.jpg"
},
{
"text": "Jeez, and @supabase have native support for magic link login?! I was going to use http://magic.link for this But if I can get my whole DB + auth + magic link support in one... Awesome",
"url": "https://twitter.com/louisbarclay/status/1362016666868154371",
"handle": "louisbarclay",
"img_url": "/images/twitter-profiles/6f1O8ZOW_400x400.jpg"
},
{
"text": "@MongoDB or @MySQL?!?! Please, let me introduce you to @supabase and the wonderful world of @PostgreSQL before it's too late!!",
"url": "https://twitter.com/jim_bisenius/status/1361772978841788416",
"handle": "jim_bisenius",
"img_url": "/images/twitter-profiles/rLgwUZSB_400x400.jpg"
},
{
"text": "Where has @supabase been all my life? 😍",
"url": "https://twitter.com/Elsolo244/status/1360257201911320579",
"handle": "Elsolo244",
"img_url": "/images/twitter-profiles/v6citnk33y2wpeyzrq05_400x400.jpeg"
},
{
"text": "Honestly Supabase is such a killer Firebase alternative.",
"url": "https://twitter.com/XPCheese/status/1360229397735895043",
"handle": "XPCheese",
"img_url": "/images/twitter-profiles/eYP6YXr7_400x400.jpg"
},
{
"text": "I think you'll love @supabase :-) Open-source, PostgreSQL-based & zero magic.",
"url": "https://twitter.com/zippoxer/status/1360021315852328961",
"handle": "zippoxer",
"img_url": "/images/twitter-profiles/6rd3xub9_400x400.png"
},
{
"text": "@supabase is the answer to all of firebases problems imo",
"url": "https://twitter.com/jim_bisenius/status/1358590362953142278",
"handle": "jim_bisenius",
"img_url": "/images/twitter-profiles/rLgwUZSB_400x400.jpg"
},
{
"text": "@supabase is insane.",
"url": "https://twitter.com/codewithbhargav/status/1357647840911126528",
"handle": "codewithbhargav",
"img_url": "/images/twitter-profiles/LQYfHXBp_400x400.jpg"
},
{
"text": "Its fun, feels lightweight, and really quick to spin up user auth and a few tables. Almost too easy! Highly recommend.",
"url": "https://twitter.com/nerdburn/status/1356857261495214085",
"handle": "nerdburn",
"img_url": "/images/twitter-profiles/66VSV9Mm_400x400.png"
},
{
"text": "Im probably the wrong person to ask because I pick tools based on UX. Supabase was immediately approachable: instant setup, fast web app, auth, and easy APIs. Same reason I liked Firebase when I first discovered.",
"url": "https://twitter.com/jasonbarone/status/1357015483619422210",
"handle": "jasonbarone",
"img_url": "/images/twitter-profiles/6zCnwpvi_400x400.jpg"
},
{
"text": "Now things are starting to get interesting! Firebase has long been the obvious choice for many #flutter devs for the ease of use. But their databases are NoSQL, which has its downsides... Seems like @supabase is working on something interesting here!",
"url": "https://twitter.com/RobertBrunhage/status/1356973695865085953",
"handle": "RobertBrunhage",
"img_url": "/images/twitter-profiles/5LMWEACf_400x400.jpg"
},
{
"text": "Honestly, I really love what @supabase is doing, you don't need to own a complete backend, just write your logic within your app and you'll get a powerful Postgresql at your disposal.",
"url": "https://twitter.com/NavicsteinR/status/1356927229217959941",
"handle": "NavicsteinR",
"img_url": "/images/twitter-profiles/w_zNZAs7_400x400.jpg"
},
{
"text": "Next.js, @supabase, @stripe, and @vercel. Supastack™",
"url": "https://twitter.com/jasonbarone/status/1356765411832922115",
"handle": "jasonbarone",
"img_url": "/images/twitter-profiles/6zCnwpvi_400x400.jpg"
},
{
"text": "I've really enjoyed the DX! Extremely fun to use, which is odd to say about a database at least for me.",
"url": "https://twitter.com/Soham_Asmi/status/1373086068132745217",
"handle": "Soham_Asmi",
"img_url": "/images/twitter-profiles/Os4nhKIr_400x400.jpg"
},
{
"text": "Supabase team is doing some awesome stuff #supabase #facts @supabase",
"url": "https://twitter.com/_strawbird/status/1372607500499841025",
"handle": "_strawbird",
"img_url": "/images/twitter-profiles/iMBvvQdn_400x400.jpg"
},
{
"text": "Did a website with @supabase last week with no prior experience with it. Up and running in 20 minutes. It's awesome to use. Thumbs up",
"url": "https://twitter.com/michael_webdev/status/1352885366928404481?s=20",
"handle": "michael_webdev",
"img_url": "/images/twitter-profiles/SvAyLaWV_400x400.jpg"
},
{
"text": "Next.js, @supabase, @stripe, and @vercel. Supastack™",
"url": "https://twitter.com/jasonbarone/status/1356765411832922115?s=20",
"handle": "jasonbarone",
"img_url": "/images/twitter-profiles/6zCnwpvi_400x400.jpg"
},
{
"text": "I just learned about @supabase and im in love 😍 Supabase is an open source Firebase alternative! EarListen (& react) to database changes 💁 Manage users & permissions 🔧 Simple UI for database interaction",
"url": "https://twitter.com/0xBanana/status/1373677301905362948",
"handle": "0xBanana",
"img_url": "/images/twitter-profiles/pgHIGqZ0_400x400.jpg"
}
]

View File

@@ -1,81 +0,0 @@
'use client'
import Link from 'next/link'
import { useRouter } from 'next/router'
import { cn } from '@/lib/utils'
import { TweetCard } from './TweetCard'
import { range } from 'lodash'
import { Tweets } from './Tweets'
// import { useBreakpoint } from 'common'
import React, { useEffect } from 'react'
interface Props {
className?: string
}
const TwitterSocialProof: React.FC<Props> = ({ className }) => {
// const { basePath } = useRouter()
const basePath = 'https://supabase.com'
// const isSm = useBreakpoint()
// const isMd = useBreakpoint(1024)
console.log(Tweets);
const tweets = Tweets.slice(0, 18)
return (
<>
<div
className={cn(
'group overflow-hidden relative transition-all max-h-[500px] w-auto flex flex-nowrap',
className
)}
>
{range(0, 3).map((_, idx1: number) => (
<div
key={`tweets-range-${idx1}`}
className={cn(
'columns-1 sm:columns-2 md:columns-2 lg:columns-3 xl:columns-5',
'gap-4 h-fit pr-4',
'w-screen min-w-[900px] max-w-[900px]',
'xl:min-w-[1600px] max-w-[1600px]',
'animate-[marquee_40000ms_linear_both_infinite] group-hover:pause',
'motion-reduce:animate-none motion-reduce:will-change-none',
'will-change-transform transition-transform'
)}
>
{/* {tweets.slice(0, isSm ? 9 : isMd ? 12 : 18).map((tweet: any, i: number) => ( */}
{tweets.slice(0, 12).map((tweet: any, i: number) => (
<Link
key={tweet.text}
href={tweet.url}
target="_blank"
className={cn(
'min-w-[200px]',
'mb-4 z-0 break-inside-avoid-column block group/tweet-card',
i > 12 && 'hidden md:block'
)}
>
<TweetCard
handle={`@${tweet.handle}`}
quote={tweet.text}
img_url={`${basePath}${tweet.img_url}`}
/>
</Link>
))}
</div>
))}
</div>
<div
className="
absolute pointer-events-none
w-full h-full max-h-[400px] lg:max-h-none
inset-0 top-auto
lg:bg-[radial-gradient(50%_100%_at_50%_0,transparent_0%,transparent_50%,hsl(var(--background-default))_100%)]
"
/>
</>
)
}
export default TwitterSocialProof

View File

@@ -1,47 +0,0 @@
import Link from 'next/link'
import { MessageCircle } from 'lucide-react'
import { Button } from '@nextui-org/react'
import SectionContainer from './SectionContainer'
import TwitterSocialProof from './TwitterSocialProof'
// import TwitterSocialProofMobile from './Sections/TwitterSocialProofMobile'
import { Tweets } from './Tweets'
const TwitterSocialSection = () => {
const tweets = Tweets.slice(0, 18)
return (
<>
<SectionContainer className="w-full text-center !pb-0">
<h3 className="h2">Join the community</h3>
<p className="p">Discover what our community has to say about their Supabase experience.</p>
<div className="my-8 flex justify-center gap-2">
<Button
size='sm' >
{/* asChild size="sm" iconRight={<MessageCircle size={14} />} type="default"> */}
<Link
href={'https://github.com/supabase/supabase/discussions'}
target="_blank"
tabIndex={-1}
>
GitHub discussions
</Link>
</Button>
<Button
size='sm'>
{/* asChild type="default" size="small" iconRight={<MessageCircle size={14} />}> */}
<Link href={'https://discord.supabase.com/'} target="_blank" tabIndex={-1}>
Discord
</Link>
</Button>
</div>
</SectionContainer>
<SectionContainer className="relative w-full !px-0 lg:!px-16 xl:!px-0 !pb-0 mb-16 md:mb-12 lg:mb-12 !pt-6 max-w-[1400px]">
{/* <TwitterSocialProofMobile className="lg:hidden -mb-24" tweets={tweets} /> */}
<TwitterSocialProof className="hidden lg:flex" />
</SectionContainer>
</>
)
}
export default TwitterSocialSection

View File

@@ -1,129 +0,0 @@
import { cn } from '@/lib/utils'
import { range } from 'lodash'
const Logos: React.FC = () => {
const gap = 'gap-4 lg:gap-8'
return (
<div className="pb-14 md:pb-24" suppressHydrationWarning>
<div className="max-w-xl md:max-w-3xl lg:max-w-5xl mx-auto animadura px-5 lg:px-12">
<div
className={cn(
'relative w-full mx-auto max-w-4xl opacity-90 dark:opacity-70',
'overflow-hidden',
'flex flex-nowrap justify-center',
"before:content[''] before:absolute before:inset-0 before:w-full before:bg-[linear-gradient(to_right,hsl(var(--background-default))_0%,transparent_10%,transparent_90%,hsl(var(--background-default))_100%)] before:z-10",
gap
)}
>
{range(0, 4).map((_, i) => (
<LogosRow
key={`logos-group-${i}`}
className={cn(
gap,
'flex flex-nowrap w-fit',
'animate-[marquee_90000ms_linear_both_infinite] will-change-transform',
'motion-reduce:animate-none motion-reduce:will-change-none'
)}
/>
))}
</div>
</div>
<p className="w-full text-center text-sm text-foreground-lighter mt-6 lg:mt-8">
Trusted by fast-growing companies worldwide
</p>
</div>
)
}
const logos = [
{
image: `/images/logos/publicity/mozilla.svg`,
alt: 'mozilla',
name: 'mozilla',
},
{
image: `/images/logos/publicity/1password.svg`,
alt: '1password',
name: '1password',
},
{
image: `/images/logos/publicity/pwc.svg`,
alt: 'pwc',
name: 'pwc',
},
{
image: `/images/logos/publicity/pika.svg`,
alt: 'pika',
name: 'pika',
},
{
image: `/images/logos/publicity/humata.svg`,
alt: 'humata',
name: 'humata',
},
{
image: `/images/logos/publicity/krea.svg`,
alt: 'krea',
name: 'krea',
},
{
image: `/images/logos/publicity/udio.svg`,
alt: 'udio',
name: 'udio',
},
{
image: `/images/logos/publicity/langchain.svg`,
alt: 'langchain',
name: 'langchain',
},
{
image: `/images/logos/publicity/resend.svg`,
alt: 'resend',
name: 'resend',
},
{
image: `/images/logos/publicity/loops.svg`,
alt: 'loops',
name: 'loops',
},
{
image: `/images/logos/publicity/mobbin.svg`,
alt: 'mobbin',
name: 'mobbin',
},
{
image: `/images/logos/publicity/gopuff.svg`,
alt: 'gopuff',
name: 'gopuff',
},
{
image: `/images/logos/publicity/chatbase.svg`,
alt: 'chatbase',
name: 'chatbase',
},
{
image: `/images/logos/publicity/betashares.svg`,
alt: 'betashares',
name: 'betashares',
},
]
const LogosRow: React.FC<{ className?: string }> = ({ className }) => (
<div className={cn(className)} suppressHydrationWarning>
{logos.map((logo) => (
<div key={`logos-group-${logo.name}`} className="h-12 lg:h-12 w-max !inline-block">
<img
src={`https://supabase.com/${logo.image}`}
alt={logo.alt}
className={'h-12 lg:h-12 !min-h-12 lg:!min-h-12 w-auto block'}
draggable={false}
/>
</div>
))}
</div>
)
Logos.displayName = 'Logos'
export default Logos

View File

@@ -1,55 +0,0 @@
type Props = {
type?: 'primary' | 'secondary'
text: string
url?: string
className?: string
hideArrow?: boolean
}
const Button = (props: Props) => {
const { type = 'primary', text, url, className, hideArrow = false } = props
const colorClass =
type === 'primary'
? 'px-3 py-2 shadow-sm border border-transparent text-white bg-brand-400 hover:bg-brand-300 focus:ring-2 focus:ring-offset-2 focus:ring-brand-300'
: 'text-brand-400 bg-none'
const textClass = type === 'primary' ? 'font-medium left-3 group-hover:left-0' : 'font-normal'
const arrowClass = type === 'primary' ? '' : 'relative -left-1 group-hover:left-0'
const buttonStyles = {
textShadow: 'none',
}
if (type === 'primary') {
buttonStyles.textShadow = '0px 0px 6px rgba(13, 128, 86, 0.8)'
}
const renderButton = () => (
<button
type="button"
className={`
group inline-flex items-center rounded-md text-sm
leading-4 transition focus:outline-none ${colorClass} ${className}
`}
style={buttonStyles}
>
<span
className={`
relative transition-all ${url ? textClass : ''}
`}
>
{text}
</span>
{url && (
<span className={`ml-2 opacity-0 transition-all group-hover:opacity-100 ${arrowClass}`}>
</span>
)}
</button>
)
return url ? <a href={url}>{renderButton()}</a> : renderButton()
}
export default Button

View File

@@ -1,14 +0,0 @@
export interface Message {
id: string;
text: string;
sender: 'user' | 'bot';
timestamp: Date;
attachments?: string[];
thinking?: boolean;
}
export interface Chat {
id: number;
name: string;
messages: Message[];
}

View File

@@ -1,14 +0,0 @@
export interface Message {
thinking: boolean | undefined;
id: number;
text: string;
sender: 'user' | 'bot';
timestamp: Date;
attachments?: string[]; // Array of file names or URLs
}
export interface Chat {
id: number;
name: string;
}

6
agenthub/lib/env.ts vendored
View File

@@ -1,6 +0,0 @@
export const inDevEnvironment = !!process && process.env.NODE_ENV === 'development';
// export const serverUrl = inDevEnvironment ? 'http://localhost:8000' : 'https://myapp-y5z35kuonq-uk.a.run.app'
export const baseUrl = inDevEnvironment ? 'http://localhost:3000' : 'https://aios.foundation'
// export const serverUrl = inDevEnvironment ? 'http://localhost:8000' : 'http://35.232.56.61:8000'
export const serverUrl = inDevEnvironment ? 'http://localhost:8000' : 'http://35.232.56.61:8000';

View File

@@ -1,15 +0,0 @@
// useMounted.tsx
'use client'
import { useState, useEffect } from 'react'
export function useMounted() {
const [mounted, setMounted] = useState(false)
useEffect(() => {
setMounted(true)
}, [])
return mounted
}

View File

@@ -1,17 +0,0 @@
import { PrismaClient } from '@prisma/client';
let prisma: PrismaClient;
if (process.env.NODE_ENV === "production") {
prisma = new PrismaClient();
} else {
const globalWithPrisma = global as typeof globalThis & {
prisma: PrismaClient;
};
if (!globalWithPrisma.prisma) {
globalWithPrisma.prisma = new PrismaClient();
}
prisma = globalWithPrisma.prisma;
}
export default prisma;

View File

@@ -1,18 +0,0 @@
import { type ClassValue, clsx } from "clsx"
import { twMerge } from "tailwind-merge"
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}
/**
* Generates a random 6-digit numeric ID
* @returns string A 6-digit number as a string, padded with leading zeros if necessary
*/
export function generateSixDigitId(): number {
// Generate a random number between 0 and 999999
const randomNumber = Math.floor(Math.random() * 1000000);
// Convert to string and pad with leading zeros if needed
return parseInt(randomNumber.toString().padStart(6, '0'));
}

View File

@@ -1,15 +0,0 @@
export const retryOperation = async (operation: any, maxRetries = 10, delay = 1000) => {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await operation();
} catch (error: any) {
if (error.response && error.response.status === 504 && attempt < maxRetries) {
console.log(`Attempt ${attempt} failed with 504 error. Retrying...`);
await new Promise(resolve => setTimeout(resolve, delay));
} else {
throw error;
}
}
}
};

View File

@@ -1,17 +0,0 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: false,
images: {
remotePatterns: [
{
protocol: 'https',
hostname: 'supabase.com',
port: '',
pathname: '**',
},
],
},
};
export default nextConfig;

15178
agenthub/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,86 +0,0 @@
{
"name": "agenthub",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"postinstall": "prisma generate"
},
"dependencies": {
"@mantine/carousel": "^7.13.2",
"@mantine/charts": "^7.13.2",
"@mantine/code-highlight": "^7.13.2",
"@mantine/core": "^7.13.2",
"@mantine/dates": "^7.13.2",
"@mantine/dropzone": "^7.13.2",
"@mantine/form": "^7.13.2",
"@mantine/hooks": "^7.13.2",
"@mantine/modals": "^7.13.2",
"@mantine/notifications": "^7.13.2",
"@mantine/nprogress": "^7.13.2",
"@mantine/spotlight": "^7.13.2",
"@mantine/tiptap": "^7.13.2",
"@nextui-org/react": "^2.4.8",
"@prisma/client": "^5.22.0",
"@radix-ui/react-avatar": "^1.1.0",
"@radix-ui/react-checkbox": "^1.1.1",
"@radix-ui/react-popover": "^1.1.1",
"@radix-ui/react-scroll-area": "^1.1.0",
"@tiptap/extension-document": "^2.7.2",
"@tiptap/extension-link": "^2.8.0",
"@tiptap/extension-mention": "^2.7.2",
"@tiptap/extension-paragraph": "^2.7.2",
"@tiptap/extension-placeholder": "^2.7.4",
"@tiptap/extension-text": "^2.7.2",
"@tiptap/pm": "^2.8.0",
"@tiptap/react": "^2.8.0",
"@tiptap/starter-kit": "^2.8.0",
"@tiptap/suggestion": "^2.8.0",
"axios": "^1.7.7",
"class-variance-authority": "^0.7.0",
"classnames": "^2.5.1",
"common": "^0.2.5",
"copy-to-clipboard": "^3.3.3",
"dayjs": "^1.11.13",
"embla-carousel-react": "^7.1.0",
"framer-motion": "^11.5.5",
"install": "^0.13.0",
"lodash": "^4.17.21",
"lucide-react": "^0.441.0",
"next": "^14.2.12",
"npm": "^10.8.3",
"quill": "^2.0.2",
"quill-mention": "^6.0.1",
"react": "^18",
"react-dom": "^18",
"react-markdown": "^9.0.1",
"react-popper": "^2.3.0",
"react-quill-patched": "^3.0.4",
"react-syntax-highlighter": "^15.5.0",
"react-tooltip": "^5.28.0",
"recharts": "^2.12.7",
"rehype-raw": "^7.0.0",
"sass": "^1.80.3",
"sonner": "^1.5.0",
"supabase": "^1.192.5",
"tippy.js": "^6.3.7",
"ui": "*"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"@types/react-syntax-highlighter": "^15.5.13",
"eslint": "^8",
"eslint-config-next": "14.2.8",
"postcss": "^8.4.47",
"postcss-preset-mantine": "^1.17.0",
"postcss-simple-vars": "^7.0.1",
"prisma": "^5.22.0",
"tailwindcss": "^3.4.1",
"typescript": "^5"
}
}

View File

@@ -1,18 +0,0 @@
/** @type {import('postcss-load-config').Config} */
const config = {
plugins: {
tailwindcss: {},
},
'postcss-preset-mantine': {},
'postcss-simple-vars': {
variables: {
'mantine-breakpoint-xs': '36em',
'mantine-breakpoint-sm': '48em',
'mantine-breakpoint-md': '62em',
'mantine-breakpoint-lg': '75em',
'mantine-breakpoint-xl': '88em',
},
},
};
export default config;

View File

@@ -1,92 +0,0 @@
// schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("POSTGRES_PRISMA_URL") // uses connection pooling
directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection
}
model Agent {
id String @id @default(cuid())
author String
name String
version String
license String
entry String
module String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
description String @default("No Description Provided")
files AgentFile[]
@@unique([author, name, version])
}
model AgentFile {
id String @id @default(cuid())
agentId String
path String
content String @db.Text // Changed from Bytes to String
agent Agent @relation(fields: [agentId], references: [id])
@@unique([agentId, path])
}
model CerebrumAgent {
id String @id @default(cuid())
author String
name String
version String
license String
entry String
module String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
description String @default("No Description Provided")
files CerebrumAgentFile[]
@@unique([author, name, version])
}
model CerebrumAgentFile {
id String @id @default(cuid())
agentId String
path String
content String @db.Text // Changed from Bytes to String
agent CerebrumAgent @relation(fields: [agentId], references: [id])
@@unique([agentId, path])
}
model CerebrumTool {
id String @id @default(cuid())
author String
name String
version String
license String
entry String
module String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
description String @default("No Description Provided")
files CerebrumToolFile[]
@@unique([author, name, version])
}
model CerebrumToolFile {
id String @id @default(cuid())
toolId String
path String
content String @db.Text // Changed from Bytes to String
tool CerebrumTool @relation(fields: [toolId], references: [id])
@@unique([toolId, path])
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

View File

@@ -1,55 +0,0 @@
/* Dropdown menu */
.dropdown-menu {
background: rgb(31, 41, 55);
border: 1px solid var(--gray-4);
border-radius: 0.7rem;
box-shadow: var(--shadow);
display: flex;
flex-direction: column;
gap: 0.1rem;
overflow: auto;
padding: 0.4rem;
position: relative;
color: var(--white);
button {
align-items: center;
background-color: transparent;
display: flex;
gap: 0.25rem;
text-align: left;
width: 100%;
&:hover,
&:hover.is-selected {
background-color: #ccc6c631;
}
&.is-selected {
background-color: #ccc6c631;
}
}
}
.tiptap {
:first-child {
margin-top: 0;
}
.mention {
background-color: var(--purple-light-dark);
border-radius: 0.4rem;
box-decoration-break: clone;
color: var(--white);
// font-weight: 600;
padding: 0.1rem 0.3rem;
}
}
.mention {
background-color: var(--purple-light-dark);
border-radius: 0.4rem;
box-decoration-break: clone;
color: var(--white);
// font-weight: 600;
padding: 0.1rem 0.3rem;
}

View File

@@ -1,57 +0,0 @@
/* Dropdown menu */
.dropdown-menu {
background: var(--white);
border: 1px solid var(--gray-1);
border-radius: 0.7rem;
box-shadow: var(--shadow);
display: flex;
flex-direction: column;
gap: 0.1rem;
overflow: auto;
padding: 0.4rem;
position: relative;
button {
align-items: center;
background-color: transparent;
display: flex;
gap: 0.25rem;
text-align: left;
width: 100%;
.item-text {
color: #000000 !important;
}
&:hover,
&:hover.is-selected {
background-color: var(--gray-3);
}
&.is-selected {
background-color: var(--gray-2);
}
}
}
.tiptap {
:first-child {
margin-top: 0;
}
.mention {
background-color: var(--purple-light);
border-radius: 0.4rem;
box-decoration-break: clone;
color: var(--purple);
padding: 0.1rem 0.3rem;
}
}
.mention {
background-color: var(--purple-light);
border-radius: 0.4rem;
box-decoration-break: clone;
color: var(--purple);
padding: 0.1rem 0.3rem;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 580 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 331 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="871.654" height="897.389" viewBox="0 0 871.654 897.389">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#33c8c1"/>
<stop offset="1" stop-color="#119bd2"/>
</linearGradient>
</defs>
<g id="Group_109" data-name="Group 109" transform="translate(-1062.343 -2321.862)">
<path id="Path_187" data-name="Path 187" d="M1401.014,2066.862S1306.2,2298.4,976,2224.3s-471.11,172.11-441.91,381.669,109.33,282.112,352.12,174.071,414.688-54.082,514.8,184.208C1403.224,2965.938,1401.014,2066.862,1401.014,2066.862Z" transform="translate(532 255)" opacity="0.03" fill="url(#linear-gradient)"/>
<path id="Path_197" data-name="Path 197" d="M1401.014,2066.862S1306.2,2298.4,976,2224.3s-471.11,172.11-441.91,381.669,109.33,282.112,352.12,174.071,414.688-54.082,514.8,184.208C1403.224,2965.938,1401.014,2066.862,1401.014,2066.862Z" transform="translate(532 255)" opacity="0.03" fill="url(#linear-gradient)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="871.654" height="897.389" viewBox="0 0 871.654 897.389">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#33c8c1"/>
<stop offset="1" stop-color="#119bd2"/>
</linearGradient>
</defs>
<g id="Group_109" data-name="Group 109" transform="translate(1933.996 3219.25) rotate(180)">
<path id="Path_187" data-name="Path 187" d="M1401.014,2066.862S1306.2,2298.4,976,2224.3s-471.11,172.11-441.91,381.669,109.33,282.112,352.12,174.071,414.688-54.082,514.8,184.208C1403.224,2965.938,1401.014,2066.862,1401.014,2066.862Z" transform="translate(532 255)" opacity="0.03" fill="url(#linear-gradient)"/>
<path id="Path_197" data-name="Path 197" d="M1401.014,2066.862S1306.2,2298.4,976,2224.3s-471.11,172.11-441.91,381.669,109.33,282.112,352.12,174.071,414.688-54.082,514.8,184.208C1403.224,2965.938,1401.014,2066.862,1401.014,2066.862Z" transform="translate(532 255)" opacity="0.03" fill="url(#linear-gradient)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1 +0,0 @@
<svg id="a5860ba0-ef67-4914-ac96-07e2ebcccb4f" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1095.74023" height="664.03433" viewBox="0 0 1095.74023 664.03433"><title>abstract</title><rect x="701" y="661" width="394.74023" height="2" fill="#3f3d56"/><polygon points="474 429 474 216 718 216 718 0 0 0 0 643 718 643 718 429 474 429" fill="#3f3d56"/><polygon points="718 216 718 0 469 0 469 213 249 213 249 0 0 0 0 216 225 216 225 429 0 429 0 643 476 643 476 429 474 429 474 216 718 216" opacity="0.1"/><path d="M224.12988,117.98284a172.00382,172.00382,0,0,1-172,172v-172Z" transform="translate(-52.12988 -117.98284)" fill="#6c63ff"/><path d="M132.12988,117.98284a80.00357,80.00357,0,0,1-80,80v44a124.00426,124.00426,0,0,0,124-124Z" transform="translate(-52.12988 -117.98284)" opacity="0.1"/><polygon points="718 60 718 29 553 29 553 0 517 0 517 29 517 60 517 84 517 115 553 115 718 115 718 84 553 84 553 60 718 60" fill="#d0cde1"/><path d="M481.12988,448.98284a81,81,0,1,0-92,80.23639V642.98284H256.36627a81,81,0,1,0,0,22H389.12988v48h22v-48h45v-22h-45V529.21923A81.00034,81.00034,0,0,0,481.12988,448.98284Z" transform="translate(-52.12988 -117.98284)" fill="#d0cde1"/><polygon points="626.5 445.263 662.508 507.631 698.517 570 626.5 570 554.483 570 590.492 507.631 626.5 445.263" fill="#d0cde1"/><polygon points="610.5 578 538.483 578 574.492 515.631 574.742 515.198 561.5 492.263 525.492 554.631 489.483 617 561.5 617 633.517 617 611 578 610.5 578" fill="#6c63ff"/><polygon points="159 345 159 291 186 291 186 259 52 259 52 393 186 393 186 345 159 345" fill="#d0cde1"/><rect x="89" y="234" width="50" height="50" fill="#6c63ff"/><path d="M989.162,357.83165,972.618,401.5551l-59.664,20.935s-36-4-36,16c0,14.18058,43,2,43,2l78.66169-23.57271,24.816-61.44917Z" transform="translate(-52.12988 -117.98284)" fill="#ffb8b8"/><rect x="635" y="228" width="234" height="202" fill="#6c63ff"/><polygon points="747.5 289.263 783.508 351.631 819.517 414 747.5 414 675.483 414 711.492 351.631 747.5 289.263" fill="#3f3d56"/><polygon points="747.331 334.415 763.665 362.708 780 391 747.331 391 714.661 391 730.996 362.708 747.331 334.415" fill="#d0cde1"/><polygon points="747.331 242.415 763.665 270.708 780 299 747.331 299 714.661 299 730.996 270.708 747.331 242.415" fill="#d0cde1"/><path d="M1024.15387,329.42035s-16.544-2.36343-24.816,28.36116-10.63544,33.088-10.63544,33.088,48.45031,7.09029,49.632,4.72686S1048.96988,336.51064,1024.15387,329.42035Z" transform="translate(-52.12988 -117.98284)" fill="#2f2e41"/><circle cx="962.57027" cy="167.71406" r="31.9063" fill="#ffb8b8"/><path d="M1000.51957,311.69463s10.63544,27.17944,7.09029,30.72459,43.72345,8.272,43.72345,8.272,3.54515-17.72572-10.63543-28.36116c0,0-5.90858-17.72572-4.72686-21.27087S1000.51957,311.69463,1000.51957,311.69463Z" transform="translate(-52.12988 -117.98284)" fill="#ffb8b8"/><path d="M1028.88073,323.51178a85.216,85.216,0,0,0-31.9063,21.27087c-14.18058,15.36229-21.27087,20.08915-21.27087,20.08915s-16.544,5.90857-10.63544,34.26973c2.95429,14.18058.88629,30.13373-1.92028,42.54174a265.8223,265.8223,0,0,0-6.35172,58.65559v12.2473s-108.71777,228.071-72.08461,243.43328,69.72118,20.08915,72.08461,16.544,44.90517-187.89267,44.90517-187.89267,11.81715,197.34639,41.36,197.34639,77.99318-8.272,77.99318-8.272l-60.26746-236.343s14.18058-40.17831-21.27087-68.53947l-4.72686-12.99886c19.60447.01,28.56614-124.06968,8.272-134.7155C1043.06131,321.14835,1038.33445,317.6032,1028.88073,323.51178Z" transform="translate(-52.12988 -117.98284)" fill="#2f2e41"/><path d="M999.33786,387.32438l-16.544,43.72345-59.664,20.935s-36-4-36,16c0,14.18058,43,2,43,2l78.6617-23.57271,24.816-61.44918Z" transform="translate(-52.12988 -117.98284)" fill="#ffb8b8"/><ellipse cx="868.62393" cy="652.21718" rx="20.68001" ry="11.81715" fill="#2f2e41"/><ellipse cx="1026.97373" cy="652.21718" rx="20.68001" ry="11.81715" fill="#2f2e41"/><path d="M1027.01734,240.95422h-.00012a25.34145,25.34145,0,0,0-4.89258.48651,21.44172,21.44172,0,0,0-9.34021-2.15271h-.84777c-16.34473,0-29.59461,14.7901-29.59461,33.03461v.00006h5.47669l.88452-6.73224L990,272.32269h4.56226a64.57589,64.57589,0,0,0-2.119,16.55036v33.62384h8.28027l4.79395-12.45795-1.19849,12.45795h53.22314l4.35816-11.32538-1.0896,11.32538h5.99243V296.09613C1066.80311,265.64215,1048.99037,240.95422,1027.01734,240.95422Z" transform="translate(-52.12988 -117.98284)" fill="#2f2e41"/></svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -1,5 +0,0 @@
<svg width="200" height="52" viewBox="0 0 200 52" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.56" d="M19.3545 4.27083C19.3545 1.9112 21.2792 0 23.6556 0H25.8061C40.0588 0 51.6126 11.4725 51.6126 25.625V46.9792C51.6126 49.3388 49.6879 51.25 47.3115 51.25H45.161C30.9083 51.25 19.3545 39.7775 19.3545 25.625V4.27083Z" fill="#4A6CF7"/>
<path opacity="0.88" d="M21.5054 51.25C33.3825 51.25 43.0108 41.6894 43.0108 29.8958C43.0108 18.1022 33.3825 8.54163 21.5054 8.54163C9.62829 8.54163 0 18.1022 0 29.8958C0 41.6894 9.62829 51.25 21.5054 51.25Z" fill="#4A6CF7"/>
<path d="M81.0229 40.7165H88.1982L78.1245 12.8125H70.2804L60.2148 40.7165H67.3079L68.9756 35.7876H79.3546L81.0229 40.7165ZM77.6127 30.5407H70.7595L74.1611 20.3251L77.6127 30.5407ZM101.443 32.4088L96.3315 18.5364H88.76L97.76 39.9612L92.6821 51.25H99.981L113.853 18.5364H106.521L101.443 32.4088ZM123.076 30.4214C123.076 26.6055 124.942 25.4925 128.155 25.4925H130.012V18.2979C127.04 18.2979 124.62 19.8879 123.076 22.2331V18.5364H116.297V40.7165H123.076V30.4214ZM154.891 29.6264C154.891 22.5908 149.904 18.2184 143.397 18.2184C136.94 18.2184 131.903 22.5908 131.903 29.6264C131.903 36.6621 136.825 41.0344 143.323 41.0344C149.821 41.0344 154.891 36.6621 154.891 29.6264ZM138.806 29.6264C138.806 25.8502 140.945 24.1013 143.397 24.1013C145.775 24.1013 147.997 25.8502 147.997 29.6264C147.997 33.3628 145.742 35.1516 143.323 35.1516C140.862 35.1516 138.806 33.3628 138.806 29.6264ZM169.572 30.5009C169.572 37.6955 174.246 40.9947 179.96 40.9947C185.665 40.9947 190.381 37.6955 190.381 30.5009V13.0113H186.772V30.5407C186.772 35.6286 184.08 37.8148 179.993 37.8148C175.914 37.8148 173.181 35.6286 173.181 30.5407V13.0113H169.572V30.5009ZM196.4 40.7165H200V13.0113H196.4V40.7165Z" fill="#2D2D2D"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -1,16 +0,0 @@
<svg width="200" height="47" viewBox="0 0 200 47" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M75.5301 31.8596H72.292V14.1332H78.9419C79.745 14.1211 80.5411 14.2857 81.2735 14.6155C81.9469 14.9207 82.5533 15.3562 83.058 15.8967C83.5506 16.4232 83.9405 17.0371 84.2076 17.7071C84.6749 18.8552 84.7468 20.1263 84.4116 21.3198C84.2746 21.8124 84.0683 22.2828 83.7992 22.7175C83.2252 23.6361 82.4073 24.3769 81.4369 24.8569C82.3026 26.038 83.1635 27.2075 84.0197 28.3654C84.8758 29.5233 85.7415 30.6881 86.6168 31.8596H84.0728C83.864 31.8547 83.6572 31.8167 83.4602 31.7473C83.2047 31.6631 82.9615 31.5448 82.7375 31.3957C82.4592 31.2159 82.1982 31.0106 81.9576 30.7827C81.665 30.4961 81.4023 30.1804 81.1735 29.8407L77.9476 25.4863H75.5301V31.8596ZM79.0419 22.223C79.3514 22.2212 79.6566 22.1514 79.9362 22.0187C80.2165 21.8916 80.4691 21.7103 80.6794 21.4853C80.8918 21.2605 81.0612 20.9988 81.1797 20.713C81.3019 20.4261 81.3651 20.1175 81.3654 19.8056C81.3657 19.4884 81.3026 19.1745 81.1797 18.882C81.0602 18.5968 80.8908 18.3352 80.6794 18.1097C80.4685 17.8859 80.2161 17.7054 79.9362 17.5784C79.657 17.4447 79.3515 17.3748 79.0419 17.374H75.5301V22.2107L79.0419 22.223Z" fill="#070707"/>
<path d="M95.2659 14.1326H98.2016L105.955 31.8594H103.936C103.49 31.8634 103.052 31.7393 102.674 31.5019C102.296 31.2649 101.998 30.9194 101.819 30.5108L100.765 28.1118H92.7024L91.6631 30.5108C91.578 30.7105 91.4605 30.8948 91.3153 31.0564C91.1666 31.2207 90.9959 31.3637 90.808 31.4814C90.6177 31.6027 90.411 31.6963 90.1943 31.7593C89.9797 31.8258 89.7562 31.8595 89.5314 31.8594H87.5122L95.2659 14.1326ZM94.1386 24.8566H99.3289L97.013 19.4885C96.9143 19.2709 96.8415 19.0425 96.7962 18.808C96.7593 18.6036 96.7348 18.4442 96.7266 18.338C96.7115 18.498 96.6869 18.657 96.653 18.8141C96.6071 19.045 96.5385 19.2709 96.4484 19.4885L94.1386 24.8566Z" fill="#070707"/>
<path d="M115.276 31.8596H112.019V24.3501C112.023 24.1043 111.964 23.8615 111.847 23.6453C111.708 23.402 111.555 23.1667 111.389 22.9403L104.881 14.1333H107.368C107.867 14.1226 108.361 14.2327 108.809 14.4541C109.227 14.6696 109.583 14.989 109.843 15.3818L113.343 20.1204C113.446 20.2577 113.522 20.4129 113.568 20.578C113.609 20.7334 113.631 20.8335 113.639 20.8744C113.655 20.776 113.678 20.679 113.709 20.5842C113.758 20.4154 113.84 20.2578 113.95 20.1204L117.438 15.3941C117.692 14.9919 118.049 14.6651 118.472 14.4479C118.921 14.2306 119.415 14.1227 119.913 14.1333H122.429L115.904 22.9525C115.806 23.0854 115.718 23.2058 115.646 23.3183C115.572 23.4235 115.504 23.5327 115.442 23.6453C115.385 23.7512 115.342 23.8637 115.313 23.9804C115.283 24.1012 115.268 24.2255 115.27 24.3501L115.276 31.8596Z" fill="#070707"/>
<path d="M140.335 23.3506V30.1609C139.934 30.5302 139.481 30.8405 138.992 31.0823C138.491 31.3291 137.965 31.5238 137.423 31.6633C136.855 31.8079 136.276 31.9067 135.691 31.9588C135.095 32.0119 134.488 32.0384 133.876 32.0384C132.655 32.047 131.447 31.8048 130.326 31.327C129.244 30.87 128.259 30.2127 127.426 29.3905C126.595 28.5677 125.931 27.5938 125.472 26.5224C125 25.4067 124.757 24.209 124.757 22.999C124.757 21.7891 125 20.5913 125.472 19.4756C125.934 18.4006 126.6 17.4241 127.434 16.5994C128.269 15.7777 129.252 15.1206 130.334 14.6629C132.58 13.7299 135.107 13.7167 137.363 14.6262C138.426 15.0662 139.394 15.7002 140.22 16.4955L140.097 16.6076C139.951 16.7537 139.78 16.8726 139.593 16.9581C139.401 17.038 139.195 17.0776 138.988 17.0743C138.702 17.0763 138.423 16.99 138.19 16.8277C137.573 16.4078 136.899 16.0776 136.187 15.8472C135.443 15.6098 134.665 15.4914 133.884 15.4966C133.204 15.494 132.528 15.583 131.872 15.7616C131.24 15.9326 130.633 16.1876 130.069 16.5199C129.511 16.8466 128.995 17.2402 128.535 17.692C128.075 18.1447 127.678 18.6552 127.352 19.2106C127.022 19.7749 126.765 20.3783 126.587 21.0064C126.402 21.6544 126.311 22.3248 126.313 22.998C126.311 23.6723 126.405 24.3436 126.593 24.9915C126.961 26.2492 127.651 27.3907 128.598 28.304C129.068 28.7578 129.592 29.1522 130.159 29.4781C130.736 29.8091 131.355 30.064 131.998 30.2364C132.656 30.4145 133.336 30.5037 134.02 30.5014C134.865 30.5042 135.708 30.3903 136.522 30.163C137.331 29.934 138.102 29.5907 138.813 29.1438V24.8916H137.231C137.028 24.8952 136.827 24.857 136.64 24.7794C136.451 24.702 136.283 24.5867 136.142 24.4412C136.013 24.3031 135.912 24.1419 135.843 23.9663C135.773 23.7847 135.738 23.5919 135.738 23.3976V23.3486L140.335 23.3506Z" fill="#070707"/>
<path d="M147.095 31.8596H145.528V14.1327H151.819C152.495 14.1274 153.165 14.2596 153.788 14.521C154.384 14.7726 154.926 15.1339 155.384 15.5856C155.843 16.0381 156.209 16.5738 156.463 17.1632C156.728 17.7725 156.862 18.4292 156.858 19.0921C156.859 19.6957 156.752 20.2947 156.543 20.8618C156.343 21.4166 156.051 21.935 155.68 22.3964C155.312 22.8488 154.862 23.2287 154.351 23.5162C153.831 23.8094 153.255 23.9924 152.659 24.0537L158.599 31.8596H157.86C157.001 31.8596 156.363 31.5449 155.956 30.9217L150.728 24.0537H147.095V31.8596ZM147.095 15.6776V22.5068H151.819C152.281 22.5097 152.741 22.4194 153.166 22.2411C153.579 22.0695 153.953 21.8211 154.27 21.5096C154.586 21.1969 154.838 20.828 155.015 20.4225C155.2 20.0028 155.294 19.5497 155.291 19.0921C155.294 18.6373 155.2 18.1868 155.015 17.77C154.657 16.9524 153.996 16.3009 153.166 15.9494C152.742 15.7673 152.282 15.6747 151.819 15.6776H147.095Z" fill="#070707"/>
<path d="M164.15 31.8595H162.718V14.1326H164.15V31.8595Z" fill="#070707"/>
<path d="M170.238 31.8594V14.1326H176.76C178.332 14.1264 179.877 14.5451 181.23 15.3444C182.545 16.1201 183.642 17.2161 184.419 18.5301C185.216 19.8855 185.637 21.4295 185.637 23.0022C185.637 24.5747 185.216 26.1188 184.419 27.4743C184.031 28.128 183.564 28.7308 183.027 29.2683C181.943 30.3528 180.595 31.1366 179.117 31.5428C178.35 31.7562 177.557 31.8628 176.76 31.8594H170.238ZM176.76 30.3125C177.743 30.3204 178.717 30.125 179.622 29.7383C180.488 29.3678 181.278 28.8367 181.948 28.1731C182.617 27.5068 183.151 26.7171 183.52 25.8476C183.899 24.9468 184.094 23.9794 184.094 23.0022C184.094 22.0248 183.899 21.0574 183.52 20.1567C183.15 19.2859 182.616 18.4943 181.948 17.8251C181.279 17.1589 180.489 16.6257 179.622 16.2537C178.717 15.8664 177.744 15.6702 176.76 15.6774H171.785V30.3125H176.76Z" fill="#070707"/>
<path d="M196.863 16.4735C196.672 16.3429 196.503 16.2185 196.36 16.1042C196.06 15.8646 195.71 15.6957 195.335 15.6105C195.065 15.5557 194.79 15.5311 194.514 15.5371C194.049 15.5344 193.585 15.6161 193.149 15.7778C192.736 15.9291 192.351 16.1484 192.012 16.4266C191.693 16.6892 191.429 17.0125 191.237 17.3773C191.049 17.7311 190.95 18.1256 190.951 18.5259C190.94 18.9127 191 19.2984 191.133 19.6623C191.264 19.9729 191.477 20.2432 191.748 20.4458C192.093 20.7072 192.473 20.9194 192.878 21.0763C193.345 21.2694 193.923 21.4856 194.61 21.725C194.976 21.8611 195.317 21.9848 195.636 22.0964C195.95 22.2106 196.252 22.329 196.53 22.4472C196.8 22.5605 197.063 22.6879 197.319 22.8287C197.563 22.9662 197.798 23.1211 198.02 23.2919C198.579 23.7069 199.007 24.2736 199.25 24.9241C199.492 25.6026 199.612 26.318 199.603 27.0377C199.615 27.7594 199.457 28.474 199.144 29.1249C198.847 29.7313 198.424 30.2682 197.903 30.6999C197.362 31.1435 196.74 31.4807 196.071 31.6935C195.345 31.929 194.585 32.0454 193.821 32.0383C192.273 32.0383 190.97 31.5813 189.909 30.6672C189.643 30.4261 189.397 30.1641 189.171 29.8839C188.992 29.6579 188.828 29.42 188.681 29.1718L188.866 29.0616C189.102 28.9168 189.372 28.8358 189.649 28.827C189.842 28.8261 190.034 28.8529 190.22 28.9065C190.403 28.9615 190.571 29.0619 190.706 29.1983C190.99 29.4679 191.3 29.7098 191.63 29.9206C191.876 30.0734 192.138 30.1979 192.412 30.2919C192.642 30.3665 192.879 30.4137 193.12 30.4327C193.346 30.449 193.58 30.4612 193.821 30.4694C194.326 30.4853 194.829 30.429 195.316 30.3021C195.802 30.184 196.262 29.9763 196.67 29.69C197.073 29.4058 197.409 29.0366 197.652 28.6087C197.916 28.1291 198.048 27.5884 198.033 27.0419C198.056 26.4826 197.955 25.9251 197.735 25.4097C197.548 25.0165 197.265 24.6754 196.914 24.4161C196.531 24.1446 196.11 23.9301 195.665 23.7796C195.185 23.6096 194.667 23.4177 194.113 23.2042C193.409 22.9247 192.767 22.6635 192.188 22.4269C191.657 22.2149 191.158 21.9299 190.706 21.5801C190.297 21.258 189.969 20.846 189.748 20.3764C189.499 19.7912 189.384 19.1587 189.407 18.524C189.399 17.8698 189.557 17.224 189.866 16.647C190.165 16.0955 190.567 15.6064 191.052 15.2065C191.541 14.8058 192.097 14.4923 192.693 14.2804C193.28 14.0673 193.9 13.9569 194.524 13.9539C195.007 13.9478 195.487 14.0166 195.948 14.1579C196.356 14.2849 196.747 14.4589 197.113 14.6761C197.457 14.879 197.778 15.1169 198.071 15.3861C198.356 15.65 198.619 15.9098 198.859 16.1655L198.473 16.4368C198.369 16.5126 198.255 16.573 198.133 16.6163C197.981 16.6647 197.823 16.6875 197.665 16.6837C197.383 16.6936 197.103 16.6205 196.863 16.4735Z" fill="#070707"/>
<path d="M67.0338 22.3796V29.8101C66.6026 30.242 66.1131 30.6122 65.5792 30.9098C65.0588 31.1994 64.5075 31.4304 63.9356 31.5988C63.3526 31.7689 62.7549 31.8846 62.1503 31.9443C61.5285 32.0074 60.9038 32.0388 60.2788 32.0382C59.0621 32.0479 57.8566 31.8084 56.7368 31.3351C55.6567 30.8769 54.6726 30.221 53.836 29.4012C53.0041 28.5777 52.3395 27.6027 51.8781 26.5293C51.3977 25.4148 51.1542 24.2136 51.1631 23.001C51.1539 21.3962 51.5797 19.8186 52.3957 18.4344C52.7954 17.7633 53.2787 17.1452 53.8339 16.5946C54.9516 15.4873 56.3391 14.6879 57.8606 14.2745C58.6489 14.0583 59.4632 13.9504 60.2807 13.9536C60.9378 13.9525 61.5927 14.0273 62.2325 14.1763C62.8704 14.3239 63.4904 14.5398 64.0816 14.8202C64.6762 15.1073 65.2424 15.4495 65.7724 15.8423C66.3141 16.2415 66.8182 16.6889 67.2783 17.1793L66.5304 17.9336C66.3187 18.1644 66.0592 18.347 65.7698 18.4688C65.4804 18.5905 65.1681 18.6484 64.854 18.6388C64.3997 18.6425 63.9557 18.5045 63.5843 18.2443C63.111 17.9204 62.5935 17.6658 62.0476 17.4879C61.4797 17.3047 60.886 17.213 60.289 17.216C59.5121 17.2132 58.743 17.369 58.0291 17.6739C56.6239 18.258 55.4989 19.3583 54.8878 20.7462C54.5763 21.4552 54.4175 22.2211 54.4214 22.9948C54.4153 23.7819 54.5807 24.5609 54.9063 25.2782C55.3861 26.3286 56.1596 27.2193 57.1346 27.8438C58.1095 28.4683 59.2445 28.8004 60.404 28.8003C60.7995 28.791 61.194 28.7575 61.5854 28.7002C61.9548 28.645 62.3205 28.567 62.6804 28.467C63.0566 28.3638 63.4167 28.2097 63.7507 28.0093V25.5174L62.7235 25.499C62.4152 25.5002 62.1102 25.4346 61.8298 25.3068C61.5561 25.1738 61.3349 24.9537 61.2012 24.6813C61.0195 24.2715 60.9384 23.8244 60.9649 23.3772V22.3856L67.0338 22.3796Z" fill="#070707"/>
<path d="M43.8741 25.8933C45.3307 14.5062 37.2806 4.09427 25.8933 2.63757C14.5063 1.18086 4.09428 9.23106 2.63757 20.6182C1.18087 32.0053 9.23107 42.4173 20.6182 43.874C32.0053 45.3307 42.4173 37.2805 43.8741 25.8933Z" fill="#070707"/>
<path d="M24.0262 22.9287V24.9213H28.3896V28.2541H24.0569V28.2423C23.9411 28.2423 23.8205 28.2541 23.7047 28.2541C23.0611 28.2559 22.4236 28.128 21.8303 27.8783C20.9682 27.5137 20.2294 26.908 19.703 26.1339C19.0564 25.1758 18.7763 24.017 18.9137 22.8694C19.0512 21.7218 19.5971 20.6619 20.4516 19.8837C21.3062 19.1055 22.4123 18.6608 23.5678 18.6309C24.7233 18.6011 25.8508 18.9881 26.7444 19.7212H35.2536C35.1449 19.3809 35.0173 19.0452 34.8826 18.719C34.0291 16.6972 32.6434 14.9446 30.873 13.6477C29.1027 12.3509 27.0137 11.5583 24.8287 11.3543C22.6436 11.1503 20.4441 11.5426 18.4643 12.4894C16.4844 13.4361 14.7983 14.9019 13.5854 16.7309C12.3725 18.5597 11.678 20.6833 11.5761 22.8755C11.4742 25.0677 11.9685 27.2466 13.0065 29.1801C14.0444 31.1137 15.5872 32.7296 17.4707 33.856C19.3542 34.9825 21.5078 35.5772 23.7023 35.5768H35.7571V22.924L24.0262 22.9287ZM28.3896 33.5653H24.3713C24.22 33.5653 24.064 33.5818 23.8985 33.5843H23.5487C21.8065 33.5598 20.1 33.087 18.5937 32.2115C17.0873 31.3359 15.832 30.087 14.9485 28.5853C14.0651 27.0836 13.5835 25.3795 13.55 23.6375C13.5165 21.8955 13.9323 20.1743 14.7575 18.6397C15.5825 17.1051 16.789 15.8089 18.2606 14.8761C19.7321 13.9433 21.4192 13.4053 23.1591 13.314C24.8991 13.2227 26.6332 13.5811 28.1943 14.3548C29.7555 15.1284 31.091 16.2912 32.0721 17.731H27.3968C26.5076 17.1573 25.4969 16.7988 24.4449 16.6839C23.3929 16.569 22.3287 16.701 21.3366 17.0694C20.3447 17.4377 19.4521 18.0323 18.73 18.8058C18.0078 19.5793 17.4761 20.5105 17.1766 21.5255C16.8773 22.5405 16.8187 23.6113 17.0056 24.653C17.1925 25.6945 17.6196 26.6782 18.2529 27.5259C18.8864 28.3736 19.7087 29.0619 20.6547 29.5363C21.6006 30.0106 22.6441 30.258 23.7023 30.2586H28.3896V33.5653ZM33.7835 33.5843H30.3844L30.4034 33.5724H30.3844V30.2632H33.7835V33.5843ZM33.7835 28.2588H30.3844V24.926H33.7835V28.2588Z" fill="#262626"/>
<path d="M23.4375 22.2999V24.2925H27.8032V27.6252H23.4659V27.6135C23.3501 27.6135 23.2295 27.6252 23.1161 27.6252C22.3269 27.6268 21.5496 27.4333 20.8532 27.0622C20.1568 26.6911 19.5628 26.1537 19.1238 25.498C18.6779 24.8334 18.4038 24.0685 18.3262 23.2719C18.2487 22.4753 18.3701 21.6719 18.6794 20.9337C19.0436 20.0705 19.6503 19.3315 20.4262 18.8064C21.0897 18.3591 21.8544 18.0841 22.6509 18.0065C23.4474 17.929 24.2507 18.0512 24.9881 18.362C25.4138 18.5409 25.8118 18.7797 26.17 19.0712H34.6793C34.5681 18.7307 34.4429 18.3951 34.3081 18.069C33.4516 16.0506 32.0644 14.302 30.2938 13.0089C28.5233 11.7157 26.4355 10.9263 24.2523 10.7245C22.0692 10.5227 19.8721 10.916 17.8945 11.8627C15.9168 12.8093 14.2326 14.274 13.0207 16.1011C11.8086 17.9282 11.1142 20.0493 11.011 22.2394C10.9079 24.4296 11.3998 26.6066 12.4347 28.5396C13.4696 30.4725 15.0087 32.0889 16.8886 33.2172C18.7685 34.3456 20.9188 34.9437 23.1114 34.948H35.1661V22.2882L23.4375 22.2999ZM27.8032 32.9365H23.785C23.6314 32.9365 23.4778 32.953 23.3123 32.9554H22.9695C21.2267 32.9335 19.519 32.4628 18.011 31.5887C16.5031 30.7147 15.2458 29.4669 14.3605 27.9655C13.4752 26.4641 12.9917 24.76 12.9567 23.0173C12.9217 21.2748 13.3364 19.5526 14.1607 18.0169C14.9848 16.4812 16.191 15.1839 17.6626 14.2499C19.1343 13.3161 20.8217 12.7771 22.5623 12.6851C24.3028 12.5933 26.0376 12.9514 27.5994 13.7251C29.1612 14.4987 30.4973 15.6619 31.4788 17.1022H26.8081C25.9195 16.524 24.9082 16.1614 23.8546 16.0432C22.8011 15.9249 21.7346 16.0544 20.74 16.4213C19.7453 16.7882 18.8501 17.3822 18.1257 18.1563C17.4011 18.9303 16.8675 19.8627 16.5672 20.8794C16.2668 21.8962 16.208 22.969 16.3955 24.0123C16.5831 25.0557 17.0117 26.0409 17.6473 26.8894C18.2829 27.7379 19.1079 28.4262 20.0565 28.8996C21.0052 29.3728 22.0512 29.6179 23.1114 29.6155H27.7986L27.8032 32.9365ZM33.1972 32.9554H29.7982L29.8147 32.9436H29.7982V29.6155H33.1972V32.9554ZM33.1972 27.63H29.7982V24.2972H33.1972V27.63Z" fill="white"/>
<path d="M27.8035 29.6179H29.7984V30.5657H27.8035V29.6179Z" fill="#999999"/>
<path d="M26.189 24.2926H27.8033V25.2404H29.7959V24.2926H31.259V24.2902H26.189V24.2926Z" fill="#999999"/>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920.193" height="1054.854" viewBox="0 0 1920.193 1054.854">
<defs>
<linearGradient id="linear-gradient" x1="0.5" y1="1" x2="0.5" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#361cc1"/>
<stop offset="1" stop-color="#2e82ef"/>
</linearGradient>
</defs>
<g id="Group_111" data-name="Group 111" transform="translate(0.13 -6328.591)">
<path id="Path_195" data-name="Path 195" d="M1367.063,374.808s-85.855-337.77-386.677-270.232-439.4,0-538.268-145.16-352-126.953-574.629-79.205S-434.941-141.322-553.13-300.409c0,.029.052,1054.854.052,1054.854H1367.047Z" transform="translate(553 6629)" opacity="0.11" fill="url(#linear-gradient)"/>
<path id="Path_194" data-name="Path 194" d="M1357.421,316.985S1271.128,25.525,971.495,90.593s-437.666,0-536.141-139.852S86.839-193.9-141.188-137.578s-380-116.481-421.437-220.589c.1,8-.016,1054.71-.016,1054.71H1357.406Z" transform="translate(562.61 6686.902)" fill="url(#linear-gradient)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -1,17 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920.183" height="1075.636" viewBox="0 0 1920.183 1075.636">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#361cc1"/>
<stop offset="1" stop-color="#2e82ef"/>
</linearGradient>
<clipPath id="clip-path">
<path id="Path_199" data-name="Path 199" d="M-533.031,278.516s95.269,204.193,401.21,161.147,419.656-32.1,544.188,96.892,343.977,107.54,572.909,67.066,360.19,68.158,401.79,142.968c.041-2.4-.074-1075.621-.074-1075.621l-1920,.011Z" transform="translate(533 329)" fill="url(#linear-gradient)"/>
</clipPath>
</defs>
<g id="Group_112" data-name="Group 112" transform="translate(0.089 0.042)">
<path id="Path_194" data-name="Path 194" d="M-20000.131,278.516s95.269,0.0,321.1,161.1,1.1-32.1,123.188,96.892,343.977,107.54,572.909,67.066,3.1,6.158,20400.2,142.968c.041-2.4-.074-1075.621-.074-1075.621l-1920,.011Z" transform="translate(533 329)" fill="url(#linear-gradient)"/>
<g id="Mask_Group_6" data-name="Mask Group 6" clip-path="url(#clip-path)">
<path id="Path_4" data-name="Path 4" d="M-496.368,321.285S-322.126-70.761,321.065,66.253s869.415,77.467,1056.161-463.982" transform="translate(522 366.416)" fill="none" stroke="#361cc1" stroke-width="128" opacity="0.14"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -1,18 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920.183" height="1075.636" viewBox="0 0 1920.183 1075.636">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#361cc1"/>
<stop offset="1" stop-color="#2e82ef"/>
</linearGradient>
<clipPath id="clip-path">
<path id="Path_199" data-name="Path 199" d="M-533.031,278.516s95.269,204.193,401.21,161.147,419.656-32.1,544.188,96.892,343.977,107.54,572.909,67.066,360.19,68.158,401.79,142.968c.041-2.4-.074-1075.621-.074-1075.621l-1920,.011Z" transform="translate(533 329)" fill="url(#linear-gradient)"/>
</clipPath>
</defs>
<g id="Group_112" data-name="Group 112" transform="translate(0.089 0.042)">
<path id="Path_195" data-name="Path 195" d="M-533.031,278.516s95.269,123.193,0.21,0.147,0.656-32.1,0.188,96.892,0.977,0.54,0.909,0.066,0.19,0.158,1921.79,0.968c.041-2.4-.074-1075.621-.074-1075.621l-1920,.011Z" transform="translate(533 329)" opacity="0.11" fill="url(#linear-gradient)"/>
<path id="Path_194" data-name="Path 194" d="M-533.031,278.516s95.269,123.193,0.21,0.147,0.656-32.1,0.188,96.892,0.977,0.54,0.909,0.066,0.19,0.158,1921.79,0.968c.041-2.4-.074-1075.621-.074-1075.621l-1920,.011Z" transform="translate(533 329)" fill="url(#linear-gradient)"/>
<g id="Mask_Group_6" data-name="Mask Group 6" clip-path="url(#clip-path)">
<path id="Path_4" data-name="Path 4" d="M-496.368,321.285S-322.126-70.761,321.065,66.253s869.415,77.467,1056.161-463.982" transform="translate(522 366.416)" fill="none" stroke="#361cc1" stroke-width="128" opacity="0.14"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="111.196" height="30.566" viewBox="0 0 111.196 30.566">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="1.275" y2="0.725" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#fe8464"/>
<stop offset="1" stop-color="#fe6e9a"/>
</linearGradient>
</defs>
<g id="Group_2" data-name="Group 2" transform="translate(-372.804 -44.291)">
<text id="BASIC" transform="translate(409 68)" fill="#2e2e2e" font-size="24" font-family="Helvetica-Bold, Helvetica" font-weight="700"><tspan x="0" y="0">BASIC</tspan></text>
<path id="Subtraction_1" data-name="Subtraction 1" d="M9.126,19.253h0a8.835,8.835,0,0,1-6.453-2.82A9.835,9.835,0,0,1,0,9.626,9.835,9.835,0,0,1,2.673,2.82,8.835,8.835,0,0,1,9.126,0V19.252Z" transform="translate(382.43 45.489) rotate(30)" fill="url(#linear-gradient)"/>
<path id="Subtraction_2" data-name="Subtraction 2" d="M13.694,0h0A13.694,13.694,0,0,0,4.011,23.377a13.6,13.6,0,0,0,9.683,4.011V0Z" transform="translate(395.769 74.857) rotate(-150)" fill="#2e2e2e"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="111.196" height="30.566" viewBox="0 0 111.196 30.566">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="1.275" y2="0.725" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#fe8464"/>
<stop offset="1" stop-color="#fe6e9a"/>
</linearGradient>
</defs>
<g id="Group_2" data-name="Group 2" transform="translate(-372.804 -44.291)">
<text id="BASIC" transform="translate(409 68)" fill="#fff" font-size="24" font-family="Helvetica-Bold, Helvetica" font-weight="700"><tspan x="0" y="0">BASIC</tspan></text>
<path id="Subtraction_1" data-name="Subtraction 1" d="M9.126,19.253h0a8.835,8.835,0,0,1-6.453-2.82A9.835,9.835,0,0,1,0,9.626,9.835,9.835,0,0,1,2.673,2.82,8.835,8.835,0,0,1,9.126,0V19.252Z" transform="translate(382.43 45.489) rotate(30)" fill="url(#linear-gradient)"/>
<path id="Subtraction_2" data-name="Subtraction 2" d="M13.694,0h0A13.694,13.694,0,0,0,4.011,23.377a13.6,13.6,0,0,0,9.683,4.011V0Z" transform="translate(395.769 74.857) rotate(-150)" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="77.034" height="76.874" viewBox="0 0 77.034 76.874">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#33c8c1"/>
<stop offset="1" stop-color="#119bd2"/>
</linearGradient>
</defs>
<path id="Path_7" data-name="Path 7" d="M44.629,1896.9c20.551-4.888,58.959,28.731,58.959,46.987s-53.043,34.067-67.837,28.142S24.078,1901.789,44.629,1896.9Z" transform="translate(-26.554 -1896.421)" fill="url(#linear-gradient)"/>
</svg>

Before

Width:  |  Height:  |  Size: 615 B

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="77.034" height="76.874" viewBox="0 0 77.034 76.874">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#fe8464"/>
<stop offset="1" stop-color="#fe6e9a"/>
</linearGradient>
</defs>
<path id="Path_7" data-name="Path 7" d="M44.629,1896.9c20.551-4.888,58.959,28.731,58.959,46.987s-53.043,34.067-67.837,28.142S24.078,1901.789,44.629,1896.9Z" transform="translate(-26.554 -1896.421)" fill="url(#linear-gradient)"/>
</svg>

Before

Width:  |  Height:  |  Size: 615 B

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="77.034" height="76.874" viewBox="0 0 77.034 76.874">
<defs>
<linearGradient id="linear-gradient" x1="0.402" y1="-0.215" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#361cc1"/>
<stop offset="1" stop-color="#2e82ef"/>
</linearGradient>
</defs>
<path id="Path_7" data-name="Path 7" d="M44.629,1896.9c20.551-4.888,58.959,28.731,58.959,46.987s-53.043,34.067-67.837,28.142S24.078,1901.789,44.629,1896.9Z" transform="translate(-26.554 -1896.421)" fill="url(#linear-gradient)"/>
</svg>

Before

Width:  |  Height:  |  Size: 629 B

View File

@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="119.036" height="118.984" viewBox="0 0 119.036 118.984">
<defs>
<linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#33c8c1"/>
<stop offset="1" stop-color="#119bd2"/>
</linearGradient>
</defs>
<path id="Path_8" data-name="Path 8" d="M20.207.537c22.975-5.465,65.915,32.12,65.915,52.53s-59.3,38.087-75.84,31.462S-2.768,6,20.207.537Z" transform="matrix(0.839, 0.545, -0.545, 0.839, 46.808, 0)" opacity="0.15" fill="url(#linear-gradient)"/>
</svg>

Before

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Some files were not shown because too many files have changed in this diff Show More