feat: 🚀 😃 convert repo into a monorepo 🚀 😃 (#51)

* Merge main into turbo-monrepo

* feat: rename apps

* feat: remove supbase videos and serve all from project

* feat: move supabase to root

* feat: update README

* docs: update link
This commit is contained in:
Rotimi Best
2023-11-25 21:56:02 +00:00
committed by GitHub
parent 03ca379094
commit 41e29014ef
806 changed files with 85853 additions and 5746 deletions
+4
View File
@@ -0,0 +1,4 @@
PUBLIC_ENABLE_PRICING=1
PUBLIC_ENABLE_FAQ=1
PUBLIC_ENABLE_USERS_COMPANIES=
PUBLIC_ENABLE_STATS=
+10
View File
@@ -0,0 +1,10 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
+2
View File
@@ -0,0 +1,2 @@
engine-strict=true
resolution-mode=highest
+11
View File
@@ -0,0 +1,11 @@
<a href="https://classroomio.com/">
<img alt="Spend less time doing the boring stuffs, instead focus on impacting the lives of your students." src="https://classroomio.com/classroomio-opengraph-image.png" />
<h1 align="center">ClassroomIO</h1>
</a>
The Open Source Teaching Platform for Bootcamps
## Tools
- SvelteKit
- Tailwind
+17
View File
@@ -0,0 +1,17 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true
}
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files
//
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
// from the referenced tsconfig.json - TypeScript does not merge them in
}
+31
View File
@@ -0,0 +1,31 @@
{
"name": "classroomio-com",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch"
},
"devDependencies": {
"@melt-ui/pp": "^0.1.2",
"@melt-ui/svelte": "^0.43.0",
"@sveltejs/adapter-auto": "^2.0.0",
"@sveltejs/kit": "^1.20.4",
"autoprefixer": "^10.4.15",
"carbon-icons-svelte": "^12.3.0",
"postcss": "^8.4.29",
"svelte": "^4.0.5",
"svelte-check": "^3.4.3",
"svelte-sequential-preprocessor": "^2.0.1",
"tailwindcss": "^3.3.3",
"typescript": "^5.0.0",
"vite": "^4.4.2"
},
"type": "module",
"dependencies": {
"posthog-node": "^3.1.3"
}
}
+6
View File
@@ -0,0 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
+48
View File
@@ -0,0 +1,48 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
body {
overflow-x: hidden;
}
body::-webkit-scrollbar {
display: none;
}
li {
font-family: 'Inter', sans-serif;
}
.inter {
font-family: 'Inter', sans-serif;
}
.floating {
-webkit-animation: floating 2.5s linear infinite;
animation: floating 2.5s linear infinite;
}
@-webkit-keyframes floating {
0%,
100% {
-webkit-transform: translateY(0rem);
transform: translateY(0rem);
}
50% {
-webkit-transform: translateY(1rem);
transform: translateY(1rem);
}
}
@keyframes floating {
0%,
100% {
-webkit-transform: translateY(0rem);
transform: translateY(0rem);
}
50% {
-webkit-transform: translateY(1rem);
transform: translateY(1rem);
}
}
+12
View File
@@ -0,0 +1,12 @@
// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface Platform {}
}
}
export {};
+62
View File
@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<meta name="theme-color" content="#333333" />
<title>ClassroomIO –&nbsp;The Open Source Platform for Tech Bootcamps</title>
<meta name="description" content="ClassroomIO" />
<meta name="application-name" content="ClassroomIO">
<meta name="apple-mobile-web-app-title" content="ClassroomIO">
<meta name="theme-color" content="#ffffff" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Facebook Meta Tags -->
<meta property="og:url" content="https://www.classroomio.com/">
<meta property="og:image" itemprop="image" content="https://classroomio.com/classroomio-opengraph-image.png">
<meta property="og:title" content="ClassroomIO –&nbsp;The Open Source Platform for Tech Bootcamps" />
<meta property="og:description"
content="Spend less time doing the boring stuffs, instead focus on impacting the lives of your students." />
<meta property="og:type" content="website" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1920" />
<meta property="og:image:height" content="1080" />
<meta property="og:image:secure_url" itemprop="image"
content="https://classroomio.com/classroomio-opengraph-image.png" />
<meta name="twitter:card" content="summary_large_image">
<meta property="twitter:domain" content="classroomio.com">
<meta property="twitter:url" content="https://www.classroomio.com/">
<meta name="twitter:title" content="ClassroomIO – The Open Source Platform for Tech Bootcamps">
<meta name="twitter:description"
content="Spend less time doing the boring stuffs, instead focus on impacting the lives of your students.">
<meta name="twitter:image" content="https://classroomio.com/classroomio-opengraph-image.png">
<!-- <link rel="stylesheet" href="global.css"> -->
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
<link rel="icon" type="image/png" href="/favicon.ico" />
<link rel="icon" type="image/png" sizes="32x32" href="/logo-32.png" />
<script async src="https://analytics.umami.is/script.js"
data-website-id="efd70f1f-1f2e-4513-a1dd-ba7826fec138"></script>
<script
type="text/javascript">window.$crisp = []; window.CRISP_WEBSITE_ID = "69176b47-5f63-42cc-bb9b-68d4927b6276"; (function () { d = document; s = d.createElement("script"); s.src = "https://client.crisp.chat/l.js"; s.async = 1; d.getElementsByTagName("head")[0].appendChild(s); })();</script>
<script type="text/javascript">
(function (C, A, L) { let p = function (a, ar) { a.q.push(ar); }; let d = C.document; C.Cal = C.Cal || function () { let cal = C.Cal; let ar = arguments; if (!cal.loaded) { cal.ns = {}; cal.q = cal.q || []; d.head.appendChild(d.createElement("script")).src = A; cal.loaded = true; } if (ar[0] === L) { const api = function () { p(api, arguments); }; const namespace = ar[1]; api.q = api.q || []; typeof namespace === "string" ? (cal.ns[namespace] = api) && p(api, ar) : p(cal, ar); return; } p(cal, ar); }; })(window, "https://app.cal.com/embed/embed.js", "init");
Cal("init", { origin: "https://cal.com" });
Cal("ui", { "theme": "light", "styles": { "branding": { "brandColor": "#1D4EE2" } }, "hideEventTypeDetails": false, "layout": "month_view" });
</script>
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>
@@ -0,0 +1,74 @@
<script lang="ts">
import Section from './Section.svelte';
import { PUBLIC_ENABLE_STATS } from '$env/static/public';
</script>
<Section
id="coursemanagement"
tagline="Simplified"
taglineIcon="simplified"
title="Advanced Course Management"
description="ClassroomIO simplifies teaching tasks, boosts the educational experience, and is beneficial for both educators and students, providing a user-friendly platform for assessment, grading, attendance, and scorebook management."
video="/course-management.mp4"
rightToLeft={true}
/>
<Section
id="customization"
tagline="Flexible"
taglineIcon="flexible"
title="Customization at its Core"
description="ClassroomIO offers organizations the ability to tailor our LMS to their specific requirements. With our customizable features, you can create a personalized learning environment that aligns with your organization's goals"
rightToLeft={true}
video="/lms-customization.mp4"
/>
<Section
id="collaboration"
tagline="Collaboration"
taglineIcon="collaboration"
title="Your Knowledge Base"
description="Our platform includes a forum-like feature where students and teachers can ask and answer questions, creating a collaborative learning environment. This fosters engagement and knowledge sharing among the community"
video="/community.mp4"
rightToLeft={true}
/>
<Section
id="ai"
tagline="Productivity"
taglineIcon="productivity"
title="AI Integration for Lesson Planning"
description="Our platform integrates AI to simplify lesson outline generation, streamline lesson planning and spark creative ideas. With ClassroomIO, educators can focus on what matters most: teaching."
rightToLeft={true}
video="/ai-lesson.mp4"
/>
<!-- body section 5 -->
{#if PUBLIC_ENABLE_STATS}
<div
class="flex justify-between flex-row flex-wrap lg:flex-nowrap items-center text-center px-[10%] py-[7%] border-b-[1px] gap-y-20 gap-x-20 mx-0 lg:mx-[12%]"
>
<div class="w-full">
<h2
class="w-full order-first text-3xl font-semibold inter tracking-tight text-gray-900 sm:text-5xl"
>
1 thousand
</h2>
<p class="text-base leading-7 text-gray-600 inter">Feedback collected</p>
</div>
<div class="w-full">
<h2
class="order-first text-3xl font-semibold tracking-tight text-gray-900 sm:text-5xl inter"
>
5 thousand
</h2>
<p class="text-base leading-7 text-gray-600 inter">Documents processed</p>
</div>
<div class="w-full">
<h2
class="order-first text-3xl font-semibold tracking-tight text-gray-900 sm:text-5xl inter"
>
1 million
</h2>
<p class="text-base leading-7 text-gray-600 inter">Page views recorded</p>
</div>
</div>
{/if}
@@ -0,0 +1,71 @@
<script>
import {
flexible,
leftFist,
rightFist,
robotArm,
thumbsUp,
} from '$lib/emojis';
export let id = '';
export let rightToLeft = false;
export let tagline = '';
export let title = '';
export let description = '';
export let video = '';
export let taglineIcon = '';
</script>
<section
{id}
class="w-full py-32 border-b border-x-0 border-t-0 border-gray-200"
>
<div
class="w-4/5 mx-auto flex flex-col {rightToLeft
? 'lg:flex-row-reverse'
: 'lg:flex-row'} items-center justify-between gap-28"
>
<div class="w-[80vw] flex flex-col">
<div class="my-4 ml-1 flex gap-2 items-center">
{#if taglineIcon === 'simplified'}
<img src={thumbsUp} alt="" class="w-7" />
{:else if taglineIcon === 'flexible'}
<img src={flexible} alt="" class="w-7" />
{:else if taglineIcon === 'collaboration'}
<div class="flex items-center">
<img src={leftFist} alt="" class="w-6" />
<img src={rightFist} alt="" class="w-6" />
</div>
{:else if taglineIcon === 'productivity'}
<img src={robotArm} alt="" class="w-7" />
{/if}
<p class="font-medium text-md">{tagline}</p>
</div>
<h2 class="font-bold text-4xl mb-6">{title}</h2>
<p class="leading-8 text-lg text-gray-500">
{description}
</p>
{#if $$slots.more}
<br />
<p class="leading-8 text-lg text-gray-500">
<slot name="more" />
</p>
{/if}
</div>
<div class="w-[95vw] md:w-[80vw] lg:w-full">
<video
class="w-full h-auto lg:max-h-[80%] rounded-xl shadow-xl"
autoplay
loop
muted
defaultMuted
playsinline
preload="auto"
>
<source src={video} type="video/mp4" />
<track kind="captions" />
</video>
</div>
</div>
</section>
@@ -0,0 +1,74 @@
<script>
import { faqs } from './faqs';
</script>
<div class="mt-[5%] mb-[15%]">
<header class="text-center mb-[5%] px-[8%]">
<h1
class="mt-2 text-4xl lg:text-4xl font-medium tracking-tight text-gray-900"
>
Questions & Answers
</h1>
<h3
class="lg:px-[20%] mt-4 text-lg lg:text-xl text-gray-500 inter font-normal tracking-normal lg:tracking-wide"
>
Can’t find the answer you’re looking for?
<a
class="text-[#1D4EE2]"
href="mailto:help@classroomio.com"
target="_blank">Shoot us an email</a
> and we’ll get back to you ASAP.
</h3>
</header>
<div
class="grid grid-cols-1 lg:grid-cols-3 gap-10 lg:gap-20 lg:px-[13%] mt-[20%] lg:m-0"
>
{#each faqs as faq}
<div class="max-w-[100%] px-6 lg:p-0">
<h1
class="text:md lg:text-md font-semibold leading-8 text-gray-800 inter"
>
{faq.question}
</h1>
<p
class="mt-2 text:md lg:text-md font-thin leading-7 lg:leading-9 text-gray-600 inter tracking-wide"
>
{faq.answer}
</p>
</div>
{/each}
</div>
<div
class="floating relative mt-[10%] grad w-[100%] h-[61vh] lg:h-[54vh] flex items-center flex-col justify-center lg:w-[70%] mx-auto py-[12%] px-[6%] text-center shadow-2xl lg:rounded-3xl"
>
<h1
class="mt-3 lg:mt-2 text-3xl lg:text-4xl font-bold font-display tracking-tight text-white"
>
Supercharge your Classroom Today
</h1>
<p class="mt-6 text-xl lg:text-lg text-gray-300 inter">
Try before you buy. No credit card required.
</p>
<button
class="font-semibold text-md lg:text-lg text-gray-900 bg-white px-6 lg:px-7 py-4 lg:py-3 rounded-xl mt-10 inter"
data-cal-config={"{'layout':'month_view'}"}
data-cal-link="classroomio/demo"
>
Book a demo
</button>
</div>
</div>
<style>
.grad {
background: rgb(51, 16, 71);
background: radial-gradient(
circle at 50% 100%,
rgba(51, 16, 71, 1) 1%,
rgba(2, 0, 36, 1) 100%
);
background-size: cover;
}
</style>
+32
View File
@@ -0,0 +1,32 @@
export const faqs = [
{
question: 'Who can benefit from ClassroomIO?',
answer:
'We built ClassroomIO from the ground up for Educators, meaning if you teach online or in a physical classroom you are good to go. It works best for Educators who already have students and want an efficient way to manage their learning experience.',
},
{
question: 'Will I be able to set up ClassroomIO without technical skills?',
answer:
'Most definitely. You can use ClassroomIO as a no-code tool to build your own LMS platform. We provide an intuitive user interface and documentation to help you give your students the best learning experience.',
},
{
question: 'How much customization can I do with ClassroomIO?',
answer:
'Things like theming, organization name, landing pages, content that your students see and many more customization options to come.',
},
{
question: 'Is ClassroomIO suitable for a large number of students?',
answer:
'Absolutely. ClassroomIO is built for a large number of students in any course. You can have multiple courses with as many students as you need.',
},
{
question: 'What kind of team plans does ClassroomIO offer?',
answer:
'ClassroomIO offers a Team plan designed to cater to organizations of any size. Depending on the plan you select, you can invite other teachers into your organization.',
},
{
question: 'Can I try ClassroomIO before I buy it?',
answer:
'Definitely. We’ve got a generous free plan to help you get started with the platform. As your requirements grow, we’ve got other plans that can grow with you.',
},
];
@@ -0,0 +1,187 @@
<script>
import LogoTwitter from 'carbon-icons-svelte/lib/LogoTwitter.svelte';
import LogoYoutube from 'carbon-icons-svelte/lib/LogoYoutube.svelte';
import LogoFacebook from 'carbon-icons-svelte/lib/LogoFacebook.svelte';
</script>
<div class="px-[2%] lg:px-[14%] border-t-[1px]">
<div
class="flex flex-col lg:flex-row justify-between items-center py-[10%] pl-5 lg:pl-0"
>
<div class="w-full lg:w-2/4">
<img
src="/logo-192.png"
alt="classroomio logo"
class="w-[10%] lg:w-[5%] mb-5 lg:mb-10"
/>
<p
class="text-sm lg:text-md tracking-wide leading-7 lg:leading-7 text-gray-600 inter"
>
The Open Source Platform for Tech Bootcamps
<br />
Making teaching and learning seamless for tech bootcamps
</p>
<div class="flex items-center mt-5 lg:mt-10 gap-3 lg:gap-7">
<a href="https://www.facebook.com/classroomiohq" target="_blank">
<LogoFacebook
class="fill-gray-400 hover:fill-gray-500 hover:scale-110 scale-90 lg:scale-150 transition-all cursor-pointer"
size={20}
/>
</a>
<a href="https://twitter.com/classroomio" target="_blank">
<img
src="/twitter_logo.png"
alt=""
class="w-3 hover:fill-gray-500 hover:scale-110 scale-90 lg:scale-150 transition-all cursor-pointer"
/>
</a>
<a href="https://www.youtube.com/@ClassroomIO" target="_blank">
<LogoYoutube
class="fill-gray-400 hover:fill-gray-500 hover:scale-110 scale-90 lg:scale-150 transition-all cursor-pointer"
size={20}
/>
</a>
</div>
</div>
<nav
class="flex justify-between items-start flex-col lg:flex-row w-full lg:w-2/4 pr-[5%] mt-16 lg:mt-0 space-y-6 lg:space-y-0"
>
<div>
<h3
class="mb-3 lg:mb-10 text-base lg:text-md font-semibold leading-6 text-gray-900 inter"
>
Product
</h3>
<ul class="space-y-2 lg:space-y-4">
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a href="#coursemanagement"> Course Management </a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a href="#customization"> Customizations </a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a href="#collaboration"> Forum </a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a href="#ai"> AI Lesson Planner </a>
</li>
</ul>
</div>
<div>
<h3
class="mb-3 lg:mb-10 text-base lg:text-md font-semibold leading-6 text-gray-900 inter"
>
Resources
</h3>
<ul class="space-y-2 lg:space-y-4">
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a target="_blank" href="https://classroomio.substack.com/">
Blog
</a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a target="_blank" href="https://docs.classroomio.com/">
Help center
</a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a
target="_blank"
href="https://docs.classroomio.com/what-is-classroomio"
>
What is ClassroomIO?
</a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a
target="_blank"
href="https://docs.classroomio.com/getting-started"
>
Getting Started
</a>
</li>
</ul>
</div>
<div>
<h3
class="mb-3 lg:mb-10 text-base lg:text-md font-semibold leading-6 text-gray-900 inter"
>
Company
</h3>
<ul class="space-y-2 lg:space-y-4">
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a href="mailto:help@classroomio.com" target="_blank">
Contact us
</a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a
href="https://app.enzuzo.com/policies/privacy/958fc978-5477-11ee-a03b-7b111830c594"
target="_blank"
>
Privacy policy
</a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a
target="_blank"
href="https://docs.classroomio.com/getting-started"
>
Getting Started
</a>
</li>
<li
class="text-sm lg:text-md tracking-wide leading-6 text-gray-600 hover:text-gray-900"
>
<a
href="https://app.enzuzo.com/policies/tos/958fc978-5477-11ee-a03b-7b111830c594"
target="_blank"
>
Terms of use
</a>
</li>
</ul>
</div>
</nav>
</div>
<footer
class="border-t-[1px] py-[3%] text-xs lg:text-md leading-5 font-light text-gray-500 text-center lg:text-left"
>
<p>All rights reserved.</p>
<p class="flex items-center">
ClassroomIO © {new Date().getFullYear()} by
<a
href="https://twitter.com/rotimi_best"
target="_blank"
class="underline text-blue-700 mx-1">Rotimi Best</a
>
from
<img alt="Nigerian Flag" src="/ng.png" class="ml-2 h-3 w-3" />
</p>
</footer>
</div>
@@ -0,0 +1,93 @@
<script>
// import ImageCompare from './ImageCompare.svelte';
import { PUBLIC_ENABLE_USERS_COMPANIES } from '$env/static/public';
</script>
<div class="text-center mt-[30%] md:mt-36 border-b-2 relative">
<div class="mb-10 flex items-center justify-center w-full">
<!-- <a
target="_blank"
rel="noopener noreferrer nofollow"
href="https://github.com/rotimi-best/quizify"
style="color: rgb(75, 85, 99);"
class="border border-gray-300 rounded-full px-4 py-1 text-sm font-medium hover:underline"
>Give us a <span class="text-[#1D4EE2]">star</span> on github</a
> -->
<a
href="https://www.producthunt.com/posts/classroomio?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-classroomio"
target="_blank"
><img
src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=425236&theme=light"
alt="ClassroomIO - The&#0032;Open&#0032;Source&#0032;Platform&#0032;for&#0032;Tech&#0032;Bootcamps | Product Hunt"
style="width: 250px; height: 54px;"
width="250"
height="54"
/></a
>
</div>
<h1
class="mx-auto text-3xl md:text-4xl lg:text-6xl font-normal leading-[1.5] text-slate-900 flex flex-col items-center gap-4"
>
<span>The Open Source Platform</span>
<span class="text-[#1D4EE2] relative"
>for Tech Bootcamps<svg
aria-hidden="true"
viewBox="0 0 418 42"
class="absolute left-[10%] top-3/4 h-[0.58em] fill-indigo-300/70"
preserveAspectRatio="none"
><path
d="M203.371.916c-26.013-2.078-76.686 1.963-124.73 9.946L67.3 12.749C35.421 18.062 18.2 21.766 6.004 25.934 1.244 27.561.828 27.778.874 28.61c.07 1.214.828 1.121 9.595-1.176 9.072-2.377 17.15-3.92 39.246-7.496C123.565 7.986 157.869 4.492 195.942 5.046c7.461.108 19.25 1.696 19.17 2.582-.107 1.183-7.874 4.31-25.75 10.366-21.992 7.45-35.43 12.534-36.701 13.884-2.173 2.308-.202 4.407 4.442 4.734 2.654.187 3.263.157 15.593-.78 35.401-2.686 57.944-3.488 88.365-3.143 46.327.526 75.721 2.23 130.788 7.584 19.787 1.924 20.814 1.98 24.557 1.332l.066-.011c1.201-.203 1.53-1.825.399-2.335-2.911-1.31-4.893-1.604-22.048-3.261-57.509-5.556-87.871-7.36-132.059-7.842-23.239-.254-33.617-.116-50.627.674-11.629.54-42.371 2.494-46.696 2.967-2.359.259 8.133-3.625 26.504-9.81 23.239-7.825 27.934-10.149 28.304-14.005.417-4.348-3.529-6-16.878-7.066Z"
/></svg
></span
>
</h1>
<p
class="mx-auto mt-10 lg:mt-6 px-4 lg:p-0 text-md md:text-xl tracking-wide leading-6 lg:leading-10 text-slate-700 lg:w-2/4"
>
Spend less time doing the boring stuffs, instead focus on impacting the
lives of your students.
</p>
<button
class="font-medium lg:font-semibold text-sm md:text-md text-white px-6 py-3 lg:px-10 lg:py-5 bg-[#1D4EE2] rounded-md lg:rounded-xl mt-10"
data-cal-config={"{'layout':'month_view'}"}
data-cal-link="classroomio/demo"
>
Let's show you 😍️️️️️️
</button>
<div class="relative my-5 md:my-10">
<video
class="floating w-[85%] lg:w-[70%] mx-auto rounded-lg shadow-lg"
autoplay
loop
muted
defaultMuted
playsinline
preload="auto"
>
<source
src="./dark-light-mode.mp4"
type="video/mp4"
/>
<track kind="captions" />
</video>
</div>
{#if PUBLIC_ENABLE_USERS_COMPANIES}
<div class="px-[15%] mb-[10%]">
<h2 class="inter text-base lg:text-xl font-semibold text-gray-900">
Used at
</h2>
<div
class="w-full flex flex-wrap flex-row gap-5 justify-between items-center py-[5%]"
>
<img src="/hero-1.svg" alt="" class="w-[30%] lg:w-[13%]" />
<img src="/hero-2.svg" alt="" class="w-[30%] lg:w-[13%]" />
<img src="/hero-3.svg" alt="" class="w-[30%] lg:w-[13%]" />
<img src="/hero-4.svg" alt="" class="w-[30%] lg:w-[13%]" />
<img src="/hero-5.svg" alt="" class="w-[30%] lg:w-[13%]" />
</div>
</div>
{/if}
</div>
@@ -0,0 +1,193 @@
<script>
import { onMount } from 'svelte';
export { before, after, offset, overlay, contain, hideOnSlide };
let hideOnSlide = true,
imgOffset = null,
sliding = false,
contain = false,
overlay = true,
offset = 0.5,
before = '',
after = '',
img;
function resize(e) {
imgOffset = (e.type === 'load' ? e.target : img).getBoundingClientRect();
w = imgOffset && imgOffset.width;
h = imgOffset && imgOffset.height;
style = contain ? `width:100%;height:100%;` : `width:${w}px;height:${h}px;`;
}
function move(e) {
if (sliding && imgOffset) {
let x = (e.touches ? e.touches[0].pageX : e.pageX) - imgOffset.left;
x = x < 0 ? 0 : x > w ? w : x;
offset = x / w;
}
}
function start(e) {
sliding = true;
move(e);
}
function end() {
sliding = false;
}
onMount(() => {
resize({});
});
$: w = imgOffset && imgOffset.width;
$: h = imgOffset && imgOffset.height;
$: x = w * offset;
$: opacity = hideOnSlide && sliding ? 0 : 1;
$: style = contain
? `width:100%;height:100%;`
: `width:${w}px;height:${h}px;`;
</script>
<svelte:window on:resize={resize} />
<button
class="container floating w-[85%] lg:w-[70%] h-full mx-auto rounded-xl"
{style}
on:touchstart={start}
on:mousedown={start}
on:touchmove={move}
on:touchend={end}
on:mousemove={move}
on:mouseup={end}
>
<img
bind:this={img}
src={after}
alt="after"
on:mousedown|preventDefault
on:load={resize}
{style}
/>
<img
src={before}
alt="before"
on:mousedown|preventDefault
style="{style}clip:rect(0, {x}px, {h}px, 0);"
/>
{#if overlay}
<div class="overlay" style="opacity:{opacity}" />
{/if}
<div class="before-label" style="opacity:{opacity}">
<slot name="before" />
</div>
<div class="after-label" style="opacity:{opacity}">
<slot name="after" />
</div>
<div class="handle" style="left: calc({offset * 100}% - 20px)">
<div class="arrow-left" />
<div class="arrow-right" />
</div>
</button>
<style>
.container {
overflow: hidden;
position: relative;
box-sizing: content-box;
border-radius: 0.75rem;
}
.container img {
top: 0;
left: 0;
z-index: 20;
display: block;
max-width: 100%;
user-select: none;
object-fit: cover;
position: absolute;
width: fit-content;
height: fit-content;
}
.overlay {
top: 0;
opacity: 0;
z-index: 25;
width: 100%;
height: 100%;
position: absolute;
transition: opacity 0.5s;
background: rgba(0, 0, 0, 0.2);
}
.before-label,
.after-label {
top: 0;
bottom: 0;
z-index: 25;
user-select: none;
position: absolute;
}
.before-label {
left: 0;
}
.after-label {
right: 0;
}
.container:hover > .overlay {
opacity: 1;
}
.handle {
z-index: 30;
width: 40px;
height: 40px;
cursor: move;
background: none;
margin-top: -4px;
margin-left: -4px;
user-select: none;
position: absolute;
border-radius: 50px;
top: calc(50% - 20px);
border: 4px solid white;
}
.handle:before,
.handle:after {
content: '';
height: 9999px;
position: absolute;
left: calc(50% - 2px);
border: 2px solid white;
}
.handle:before {
top: 40px;
}
.handle:after {
bottom: 40px;
}
.arrow-right,
.arrow-left {
width: 0;
height: 0;
user-select: none;
position: relative;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
}
.arrow-right {
left: 17px;
bottom: 13px;
border-left: 10px solid white;
}
.arrow-left {
left: 5px;
top: 7px;
border-right: 10px solid white;
}
img,
.overlay,
.container {
max-height: 500px;
}
</style>
@@ -0,0 +1,17 @@
<script>
export let color = 'currentColor';
</script>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
class="dark"
>
<path
d="M18 22.5H6C5.60232 22.4995 5.22105 22.3414 4.93984 22.0602C4.65864 21.7789 4.50046 21.3977 4.5 21V3C4.5004 2.6023 4.65856 2.221 4.93978 1.93978C5.221 1.65856 5.6023 1.5004 6 1.5H18C18.3977 1.50046 18.779 1.65864 19.0602 1.93984C19.3414 2.22105 19.4995 2.60232 19.5 3V15.4636L15.75 13.5886L12 15.4636V3H6V21H18V18H19.5V21C19.4995 21.3977 19.3413 21.7789 19.0601 22.0601C18.7789 22.3413 18.3977 22.4995 18 22.5ZM15.75 11.9114L18 13.0364V3H13.5V13.0364L15.75 11.9114Z"
fill={color}
/>
</svg>
@@ -0,0 +1,116 @@
<script lang="ts">
import { onMount } from 'svelte';
import { fly } from 'svelte/transition';
import { folder, globe, team, transcription } from '$lib/emojis';
let selected = 0;
let interval = 0;
const moreFeatures = [
{
icon: globe,
title: 'Customizable Landing Page',
description:
'A minimalistic landing page template out of the box to share your courses with the world',
image: '/landing-page-builder.png',
},
{
icon: team,
title: 'Team management',
description:
'Extend invitations and manage your teaching institution seamlessly through ClassroomIO.',
image: '/team-management.png',
},
{
icon: transcription,
title: 'Auto Video Transcription',
description:
'AI automatically transcribes videos, making content searchable for seamless student access.',
image: '/video-transcription.png',
},
{
icon: folder,
title: 'Downloadable Lesson PDF',
description:
'Students can download lessons automatically for offline access.',
image: '/download-pdf.png',
},
];
onMount(() => {
if (window.innerWidth > 768) {
interval = setInterval(() => {
selected = moreFeatures[selected + 1] ? selected + 1 : 0;
}, 3000);
}
});
</script>
<!-- More Features -->
<section id="morefeatures" class="py-[10%] px-3 lg:px-0 bg-gray-50">
<div class="mx-0 lg:mx-[12%]">
<div class="w-full lg:w-4/5 mx-4 lg:mx-0 mb-14">
<h2
class="mt-2 text-3xl font-bold font-display tracking-tight lg:text-4xl"
>
There is More...
</h2>
<p class="mt-4 text-lg inter text-gray-500 w-[94%] lg:w-4/5">
ClassroomIO is packed with useful features while we try to make it easy
to use.
</p>
</div>
<div
class="flex flex-col-reverse lg:flex-row gap-3 md:gap-10"
id="image-container"
>
<div
class="w-[95%] p-3 mt-5 overflow-auto lg:overflow-hidden lg:mt-0 lg:w-[45%] flex lg:block"
>
{#each moreFeatures as moreFeature, i}
<button
class="p-4 rounded-md {i === selected &&
'selected'} mb-3 text-start min-w-[75vw] lg:min-w-[unset]"
on:mouseenter={() => {
selected = i;
clearInterval(interval);
}}
>
<div class="flex gap-1 items-center">
<img src={moreFeature.icon} alt="" class="w-8" />
<h4 class="text-lg font-semibold">
{moreFeature.title}
</h4>
</div>
<p>{moreFeature.description}</p>
</button>
{/each}
</div>
<!-- Video -->
<div class="h-full w-full p-3 lg:w-2/3 lg:p-0">
{#key selected}
<img
id="image"
in:fly={{ y: 100, duration: 1000 }}
class="w-full flex flex-col items-center"
src={moreFeatures[selected].image}
alt={moreFeatures[selected].title}
/>
{/key}
</div>
</div>
</div>
</section>
<style>
#morefeatures .selected {
background-image: linear-gradient(
45deg,
rgb(253, 239, 132),
rgb(247, 198, 169),
rgb(21, 186, 196)
);
}
</style>
@@ -0,0 +1,260 @@
<script>
import { createDropdownMenu, melt } from '@melt-ui/svelte';
import ChevronDown from 'carbon-icons-svelte/lib/ChevronDown.svelte';
import TextAlignJustify from 'carbon-icons-svelte/lib/TextAlignJustify.svelte';
import CloseLarge from 'carbon-icons-svelte/lib/CloseLarge.svelte';
import { fly } from 'svelte/transition';
import MachineLearningModel from 'carbon-icons-svelte/lib/MachineLearningModel.svelte';
import ForumIcon from 'carbon-icons-svelte/lib/Forum.svelte';
import CourseIcon from '$lib/Icons/CourseIcon.svelte';
import MapCenter from 'carbon-icons-svelte/lib/MapCenter.svelte';
let showsubNav = false;
let showNav = false;
const {
elements: { menu, item, trigger, arrow },
} = createDropdownMenu({
positioning: {
placement: 'bottom-start',
fitViewport: true,
},
});
function handleShow() {
showsubNav = !showsubNav;
}
function handleShowNav() {
showNav = !showNav;
}
function scroll(key = '') {
const el = document.getElementById(key);
setTimeout(() => {
el?.scrollIntoView({
behavior: 'smooth',
block: 'start',
inline: 'nearest',
});
}, 50);
}
const superpowers = [
{
key: 'coursemanagement',
title: 'Course Management',
subtitle: 'Advanced course management tools ',
},
{
key: 'customization',
title: 'Customizations',
subtitle: 'Customize your classroom to your needs',
},
{
key: 'collaboration',
title: 'Forum',
subtitle: 'Seamlessly collaborate with your students',
},
{
key: 'ai',
title: 'AI Lesson Planner',
subtitle: "10x Educator's productivity with AI",
},
];
</script>
<div
class="flex w-full justify-between items-center py-6 border-b-[1px] md:px-12 px-5 fixed top-0 z-[3000] filter backdrop-blur-xl shadow-sm"
>
<a href="/">
<div class="flex items-center">
<img src="/logo-512.png" alt="classroomio logo" class="w-10 h-10" />
<h1 class="text-xs md:text-lg font-medium ml-2">ClassroomIO</h1>
</div>
</a>
<nav class="w-[40%] hidden md:hidden lg:block">
<ul class="flex items-center justify-between w-full gap-2">
<!-- -->
<li class="text-gray-800 font-semibold text-sm cursor-pointer">
<button use:melt={$trigger} class="flex items-center"
>Our Superpowers <ChevronDown class="ml-2" /></button
>
<div
use:melt={$menu}
class="w-[28%] border px-5 py-5 rounded-[30px] shadow-slate-700 mt-2 z-[3001] ml-[-30px] bg-white"
>
{#each superpowers as superpower}
<button
use:melt={$item}
class="flex justify-between items-center w-full rounded-lg hover:bg-slate-100 p-5 mb-4"
on:m-click={() => scroll(superpower.key)}
>
{#if superpower.key === 'coursemanagement'}
<CourseIcon />
{:else if superpower.key === 'customization'}
<MapCenter size={24} />
{:else if superpower.key === 'collaboration'}
<ForumIcon size={24} />
{:else if superpower.key === 'ai'}
<MachineLearningModel size={24} />
{/if}
<div class="w-[86%] text-start">
<h3 class="font-semibold text-sm text-gray-700">
{superpower.title}
</h3>
<p class="font-normal text-sm text-gray-600">
{superpower.subtitle}
</p>
</div>
</button>
{/each}
<div use:melt={$arrow} />
</div>
</li>
<!-- -->
<a href="#morefeatures">
<li class="text-gray-800 font-semibold text-sm cursor-pointer">
More features
</li>
</a>
<a href="#pricing">
<li class="text-gray-800 font-semibold text-sm cursor-pointer">
Pricing
</li>
</a>
</ul>
</nav>
<div class="justify-between items-center flex-row hidden md:hidden lg:flex">
<!-- <button
class="bg-[#1D4EE2] text-white text-sm font-medium px-4 py-1.5 rounded-md mr-5"
>
Sign Up
</button> -->
<a href="/discord" target="_blank">
<img
alt="discord logo"
src="/discord-blue.png"
class="w-8 h-6 mr-4 cursor-pointer"
/>
</a>
<a href="/github" target="_blank">
<img
alt="github logo"
src="/github-mark.png"
class="w-6 h-6 mr-4 cursor-pointer"
/>
</a>
<button
class="font-medium text-sm after:content-['→'] after:ml-2"
data-cal-config={"{'layout':'month_view'}"}
data-cal-link="classroomio/demo"
>
Get a Demo
</button>
</div>
<button class="block md:block lg:hidden" on:click={handleShowNav}
><TextAlignJustify size={24} /></button
>
<!-- burger menu -->
{#if showNav}
<div
in:fly={{ x: 20, duration: 700 }}
out:fly={{ x: 20, duration: 400 }}
class="w-[60%] md:w-[40%] h-[100vh] border-2 sm:block lg:hidden px-3 pt-3 pb-2 md:p-7 absolute right-0 top-0 bg-white"
>
<div class="flex justify-between py-2 mb-5">
<img src="/logo-512.png" alt="classroomio logo" class="w-[8%]" />
<button on:click={handleShowNav}
><CloseLarge size={24} class="mr-5" /></button
>
</div>
<nav class="">
<ul
class="flex items-center flex-col lg:flex-row justify-between w-full"
>
<!-- -->
<li
class="text-gray-800 font-semibold text-sm md:text-lg cursor-pointer w-full"
>
<button
class="w-full flex items-center justify-between hover:bg-gray-100 py-3 px-4 rounded-lg"
on:click={handleShow}
>
Our Superpowers <ChevronDown />
</button>
{#if showsubNav}
<div
in:fly={{ y: -20, duration: 700 }}
out:fly={{ y: 20, duration: 400 }}
>
{#each superpowers as superpower}
<a href="#{superpower.key}">
<p
class="font-normal text-xs text-gray-700 hover:bg-gray-100 rounded-lg py-2.5 pl-5"
>
{superpower.title}
</p>
</a>
{/each}
</div>
{/if}
</li>
<!-- -->
<li
class="text-gray-800 font-semibold text-sm md:text-lg cursor-pointer hover:bg-gray-100 py-3 px-4 rounded-xl w-full"
>
<a href="#morefeatures"> More features </a>
</li>
<li
class="text-gray-800 font-semibold text-sm md:text-lg cursor-pointer hover:bg-gray-100 py-3 px-4 rounded-xl w-full"
>
<a href="#pricing"> Pricing </a>
</li>
</ul>
</nav>
<div class="flex items-start flex-col gap-y-2 mt-5 border-t-[1px] pt-5">
<!-- <button
class="text-black font-semibold rounded-md mr-10 w-full text-left py-4 px-4 hover:bg-gray-100 text-sm md:text-lg"
>Sign Up</button
> -->
<a
href="/discord"
target="_blank"
class="flex items-center rounded-md after:ml-2 w-full text-left py-4 px-4 hover:bg-gray-100 text-sm md:text-lg"
>
<img
alt="discord logo"
src="/discord-blue.png"
class="w-8 h-6 mr-2 cursor-pointer"
/>
<span>Discord</span>
</a>
<a
href="/github"
target="_blank"
class="flex items-center rounded-md after:ml-2 w-full text-left py-4 px-4 hover:bg-gray-100 text-sm md:text-lg"
>
<img
alt="github logo"
src="/github-mark.png"
class="w-6 h-6 mr-3 cursor-pointer"
/>
<span>Github</span>
</a>
<button
class="font-semibold after:content-['→'] rounded-md after:ml-2 w-full text-left py-4 px-4 hover:bg-gray-100 text-sm md:text-lg"
data-cal-config={"{'layout':'month_view'}"}
data-cal-link="classroomio/demo"
>
Get a Demo
</button>
</div>
</div>
{/if}
</div>
@@ -0,0 +1,226 @@
<script>
import Checkmark from 'carbon-icons-svelte/lib/Checkmark.svelte';
let prices = false;
function handlePriceChange() {
prices = !prices;
}
const freeFeatures = [
'Unlimited Courses',
'Unlimited Conversations',
'50 Students',
'AI Course Builder (no video upload)',
'Course Landing Page',
'Live chat & Live polls',
'20 AI Prompts',
];
const proFeatures = [
'Everything in Free',
'1000 Students',
'Advanced AI Course Builder (video upload)',
'Lesson/Course PDF Download',
'Certificates',
'2000 AI Prompts',
'Remove ClassroomIO Branding',
'Email Support',
];
const teamFeatures = [
'Everything in Teams',
'Unlimited students',
'Unlimited AI Prompts',
'White Labelling',
'Priority Support',
];
</script>
<section id="pricing" class="py-[12%]">
<div class="px-[6%] flex flex-col justify-center items-center">
<div class="text-center mb-[3%]">
<h3
id="pricing"
class="inter text-[#1D4EE2] text-md font-semibold tracking-wide"
>
Pricing
</h3>
<h1
class="my-5 lg:my-4 font-semibold tracking-tight text-gray-900 text-3xl lg:text-4xl"
>
For teams and individuals
</h1>
<p
class="inter mt-4 text-lg text-gray-500 tracking-normal lg:tracking-wide"
>
Customizable LMS, AI integration for productive educators and many
more...
</p>
</div>
<div
class="flex items-center border-[2px] rounded-[30px] p-[2px] relative lg:scale-100 mt-10 lg:mt-0"
>
<button
style="background-color: {prices
? 'initial'
: '#1D4EE2'}; color: {prices ? '#777E8A' : '#fff'}"
class="bg-[#1D4EE2] text-white rounded-[30px] py-1 px-3 lg:py-2 lg:px-4 inter text-xs"
on:click={handlePriceChange}>Monthly</button
>
<button
style="background-color: {prices ? '#1D4EE2' : ''}; color: {prices
? '#fff'
: '#777E8A'}"
class="text-white rounded-[30px] py-1 lg:py-2 px-3 lg:px-4 inter text-xs"
on:click={handlePriceChange}>Annually</button
>
<div
class="absolute top-[-60%] right-[-40%] lg:top-[-45%] lg:right-[-33%] bg-green-600 border border-green-700 text-xs text-white px-3.5 py-1.5 rounded-full scale-[90%] lg:scale-100"
>
Save 2 months
</div>
</div>
<div class="isolate mt-10 grid gap-10 grid-cols-1 lg:grid-cols-3">
<!-- card 1 -->
<div
class="ring-gray-200 rounded-3xl p-8 ring-1 xl:p-9 max-w-xl lg:max-w-sm"
>
<h3 class="text-gray-900 text-lg lg:text-xl font-semibold leading-8">
Hobby
</h3>
<p
class="text-gray-500 font-light mt-4 text-sm lg:text-md leading-6 lg:leading-6 inter"
>
For personal use. Hobby plan is free for up to 5 courses forever, no
credit card required.
</p>
<h1
class="mt-6 flex items-baseline gap-x-1 text-4xl lg:text-4xl font-medium inter"
>
$0 <sub class="text-base">/mo</sub>
</h1>
<button
class="font-medium lg:font-semibold text-md lg:text-lg text-white py-3 lg:py-3 w-full bg-slate-900 hover:bg-slate-700 rounded-md lg:rounded-xl mt-10 inter"
data-cal-config={"{'layout':'month_view'}"}
data-cal-link="classroomio/demo"
>
Get started
</button>
<ul class="text-gray-600 mt-8 space-y-2 lg:space-y-5 text-sm xl:mt-10">
{#each freeFeatures as freeFeature}
<li class="flex items-center">
<Checkmark
size={24}
fill="#1D4EE2"
class="mr-2 lg:mr-3 scale-[70%] lg:scale-[100%]"
/>
{freeFeature}
</li>
{/each}
</ul>
</div>
<!-- card 2 -->
<div class="bg-gray-900 rounded-3xl p-8 xl:p-9 max-w-xl lg:max-w-lg">
<h3 class="text-white text-lg lg:text-xl font-semibold leading-8">
Pro
</h3>
<p
class="text-white font-light mt-4 text-sm lg:text-md leading-6 lg:leading-6 inter"
>
Advanced features for small teaching businesses. Built for scale.
</p>
<h1
class="mt-6 text-white flex items-baseline gap-x-1 text-4xl lg:text-4xl font-medium inter"
>
${prices ? '12' : '15'} <sub class="text-base">/member</sub>
</h1>
<button
class="font-medium lg:font-semibold text-md lg:text-lg text-slate-900 py-3 lg:py-3 w-full bg-white hover:bg-indigo-50 rounded-md lg:rounded-xl mt-10 inter"
data-cal-config={"{'layout':'month_view'}"}
data-cal-link="classroomio/demo"
>
Get Started
</button>
<ul
class="text-white mt-8 space-y-3 font-light lg:space-y-5 text-sm xl:mt-10"
>
{#each proFeatures as proFeature}
<li class="flex items-center">
<Checkmark
size={24}
fill="#fff"
class="mr-2 lg:mr-3 scale-[70%] lg:scale-[100%]"
/>
{proFeature}
</li>
{/each}
</ul>
</div>
<!-- card 3 -->
<div
class="ring-gray-200 rounded-3xl p-8 ring-1 xl:p-9 max-w-xl lg:max-w-sm"
>
<h3 class="text-gray-900 text-lg lg:text-xl font-semibold leading-8">
Team
</h3>
<p
class="text-gray-500 font-light mt-4 text-sm lg:text-md leading-6 lg:leading-6 inter"
>
Best suited for teams and larger businesses that need more control.
</p>
<h1
class="mt-6 lg:mt-6 flex items-baseline gap-x-1 text-4xl lg:text-4xl font-medium inter"
>
${prices ? '42' : '50'} <sub class="text-base">/member</sub>
</h1>
<button
class="font-medium lg:font-semibold text-md lg:text-lg text-white py-3 lg:py-3 w-full bg-slate-900 hover:bg-slate-700 rounded-md lg:rounded-xl mt-10 inter"
data-cal-config={"{'layout':'month_view'}"}
data-cal-link="classroomio/demo"
>
Get started
</button>
<ul class="text-gray-600 mt-8 space-y-2 lg:space-y-5 text-sm xl:mt-10">
{#each teamFeatures as teamFeature}
<li class="flex items-center">
<Checkmark
size={24}
fill="#1D4EE2"
class="mr-2 lg:mr-3 scale-[70%] lg:scale-[100%]"
/>
{teamFeature}
</li>
{/each}
</ul>
</div>
</div>
<!-- <div
class="flex flex-col lg:flex-row items-start lg:items-center mx-auto lg:mx-10 mt-[5%] border-[1px] rounded-[30px] py-[10%] lg:py-[5%] px-[10px] lg:px-[30px] lg:w-full md:max-w-[550px] lg:max-w-full"
>
<div class="mr-5 pl-5">
<h2
class="text-md lg:text-xl font-semibold font-display leading-8 tracking-wide lg:tracking-tight text-[#1D4EE2] mb-0 lg:mb-4"
>
Hobby
</h2>
<p
class="m-0 lg:mt-1 text-md leading-7 lg:leading-6 text-gray-600 inter"
>
For personal use. Hobby plan is free for up to 5 courses forever, no
credit card required.
</p>
</div>
<button
class="font-semibold text-base lg:text-md text-white leading-5 mt-5 lg:m-0 p-4 lg:py-5 ml-5 bg-[#1D4EE2] rounded-lg lg:rounded-xl inter w-[70%] lg:w-full"
>
Create a free account
</button>
</div> -->
</div>
</section>
@@ -0,0 +1,42 @@
<section
id="student-dashboard"
class="text-center text-white py-[10%] px-3 lg:px-0 bg-black"
>
<div class="mb-10">
<a
href="#student-dashboard"
class="rounded-full px-4 py-2 text-sm font-medium hover:underline bg-[#1D4EE2] underline"
><span class="">yourorg</span>.classroomio.com</a
>
</div>
<h1
class="mx-auto text-3xl md:text-4xl lg:text-6xl font-normal leading-[1.5] flex flex-col items-center gap-4"
>
A Personalized Dashboard for Your Students
</h1>
<p
class="mx-auto mt-10 lg:mt-6 px-4 lg:p-0 text-md tracking-wide leading-6 text-gray-400 lg:w-2/4"
>
Once you create an account, you get a dedicated dashboard where your
students can access all their courses, assignments, and more.
</p>
<div class="relative my-5 md:my-10">
<video
class="floating w-[85%] lg:w-[70%] mx-auto rounded-lg shadow-lg"
autoplay
loop
muted
defaultMuted
playsinline
preload="auto"
>
<source
src="./student-dashboard.mp4"
type="video/mp4"
/>
<track kind="captions" />
</video>
</div>
</section>
@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M38.738 31.651C38.9137 31.2946 39.1044 30.9081 39.3002 30.4914C42.5482 23.7043 48.5221 9.78361 49.6315 8.09184C50.8062 6.29465 52.508 5.32581 55.3243 6.54067C58.1406 7.75552 58.3865 10.9633 56.5341 14.3418C54.6817 17.7203 51.1627 30.3057 49.5211 36.3599C46.6396 46.9824 43.1255 53.7946 43.1255 53.7946L34.486 42.2836L38.738 31.651Z" fill="url(#paint0_linear)"/>
<path opacity="0.16" d="M52.2921 6.93728C52.7439 6.16921 54.6716 6.93728 55.4748 7.866C56.278 8.79471 56.5692 10.1702 56.1123 10.9383C55.6605 11.7064 54.516 11.104 53.5019 10.5869C51.765 9.69331 51.8403 7.70535 52.2921 6.93728Z" fill="url(#paint1_radial)"/>
<path d="M49.6315 8.09128C49.0592 8.96979 47.1817 13.1214 45.0532 17.8704C43.0702 22.288 42.9648 27.4638 47.7791 13.8242C49.7821 8.14651 52.6134 6.013 53.6576 6.0632C51.8001 5.80216 50.5501 6.68566 49.6315 8.09128Z" fill="url(#paint2_linear)"/>
<path d="M49.5161 36.3594C51.1576 30.3052 54.6767 17.7199 56.5291 14.3364C57.5332 12.499 57.8996 10.7269 57.5934 9.28613C55.7058 14.3865 50.9619 21.1687 49.1898 28.1064C45.8514 41.1536 47.6386 43.2871 49.5161 36.3594Z" fill="url(#paint3_linear)"/>
<path d="M38.738 31.651C38.9137 31.2946 39.1044 30.9081 39.3002 30.4914C42.5482 23.7043 48.5221 9.78361 49.6315 8.09184C50.8062 6.29465 52.508 5.32581 55.3243 6.54067C58.1406 7.75552 58.3865 10.9633 56.5341 14.3418C54.6817 17.7203 51.1627 30.3057 49.5211 36.3599C46.6396 46.9824 43.1255 53.7946 43.1255 53.7946L34.486 42.2836L38.738 31.651Z" fill="url(#paint4_linear)"/>
<path d="M49.1998 8.875C48.4518 10.3258 47.0964 13.3177 45.5402 16.7766L46.4137 18.8298L50.751 30.9633C50.751 30.9633 50.8765 30.893 51.0622 30.7826C51.8705 27.9262 52.7942 24.7735 53.6928 21.9472C51.3886 18.7796 49.4357 13.1471 49.1998 8.875Z" fill="url(#paint5_linear)"/>
<path d="M42.6285 23.2578C41.9609 24.7438 41.3032 26.1895 40.6908 27.5148C42.5532 31.1092 41.5743 38.4184 39.9629 40.9034C38.5773 43.0419 43.989 44.0961 46.9709 44.5027C47.8093 42.1483 48.6878 39.4174 49.5161 36.3602C49.5713 36.1494 49.6366 35.9084 49.7018 35.6825L50.0331 32.314L42.6285 23.2578Z" fill="url(#paint6_linear)"/>
<path d="M46.3733 41.4742C46.308 41.0826 45.3191 36.1228 45.2387 35.671C43.8783 28.2714 39.5912 13.2514 39.4907 11.2333C39.3853 9.08973 40.1885 7.30759 43.1805 6.62988C46.1725 5.95217 48.2558 8.40697 48.7478 12.2323C49.2397 16.0576 54.2247 27.8196 56.5389 33.6479C60.7257 44.1801 61.0921 52.0314 61.0921 52.0314L47.3371 47.7995L46.3733 41.4742Z" fill="url(#paint7_linear)"/>
<path opacity="0.16" d="M40.9669 8.7339C40.8815 7.84535 42.8896 7.33833 44.0894 7.61444C45.2891 7.89054 46.3283 8.83431 46.4136 9.72287C46.499 10.6114 45.2189 10.7972 44.0994 10.9729C42.1566 11.2691 41.0522 9.62246 40.9669 8.7339Z" fill="url(#paint8_radial)"/>
<path d="M41.5492 7.22363C39.8976 8.10215 39.4056 9.55294 39.4859 11.2296C39.5863 13.2527 43.8735 28.2678 45.2339 35.6674C45.3192 36.1192 46.3032 41.079 46.3684 41.4706L47.2319 47.1282C49.3453 50.5369 51.5843 45.1553 41.3584 16.9576C39.3052 11.2949 40.6807 7.80094 41.5492 7.22363Z" fill="url(#paint9_linear)"/>
<path d="M56.5292 33.6139C54.2049 27.7755 49.235 16.0486 48.7481 12.2284V12.2233C48.6828 11.7163 48.5874 11.2394 48.467 10.7876C48.4469 10.7173 48.4218 10.6621 48.4017 10.5918C48.2862 10.2002 48.1607 9.82373 48.0101 9.48236C48.0001 9.45726 47.985 9.43716 47.975 9.41206C47.6236 8.64399 47.1718 8.00146 46.6396 7.51953C48.1105 12.7555 48.2611 21.0285 50.9017 27.6851C55.8716 40.2002 53.0503 41.1239 51.6647 42.9562C54.5965 42.901 58.7179 51.0686 61.0924 52.0325C60.8013 51.5807 60.6557 50.6721 60.6005 49.4673C60.4699 45.7022 58.6828 39.7183 56.5292 33.6139Z" fill="url(#paint10_linear)"/>
<path d="M18.4117 50.6274C18.4117 52.9366 19.5412 53.9708 20.1085 54.3473C20.2993 54.4728 20.4248 54.523 20.4248 54.523L30.977 62.1535L50.2892 58.1977L49.6968 45.9788C42.4629 45.0501 35.7109 42.3493 28.6426 40.4919C28.5222 40.4618 28.1507 37.4497 28.0252 37.4196C27.8344 37.3694 27.8946 40.3011 27.7039 40.2509C24.8876 39.5431 22.0212 38.9909 19.0442 38.7449C17.8545 42.6204 18.4117 47.9366 18.4117 50.6274Z" fill="url(#paint11_linear)"/>
<path d="M38.9789 50.9872C43.738 50.4852 46.755 54.3807 47.1315 56.4038L48.6878 55.8366L47.9799 48.0655L42.9398 44.8175L36.2028 43.1207L29.3705 39.5414L28.0653 35.4601C28.0302 35.4601 27.7039 35.4551 27.6687 35.4551L21.1175 36.1227C20.4097 36.3838 19.8976 36.7302 19.6667 37.187C18.7982 38.8838 18.4619 41.0926 18.3464 43.2964C19.3705 45.3546 21.6647 46.4189 23.6727 46.4189C26.0272 46.4189 27.4428 44.6267 28.2912 43.1207C28.2912 43.1207 28.4468 45.8516 32.232 46.8908C32.2269 46.8908 35.0432 51.4038 38.9789 50.9872Z" fill="url(#paint12_linear)"/>
<path d="M23.6175 45.4768C20.8414 45.4768 18.5472 43.2178 18.1607 38.9759C18.1205 38.514 17.3424 30.2158 22.0864 30.2158C26.489 30.2158 27.734 31.9126 28.0201 37.5652C28.3062 43.2178 26.489 45.4768 23.6175 45.4768Z" fill="url(#paint13_linear)"/>
<path d="M34.1294 46.1384C30.7007 46.1384 28.9889 44.6323 28.512 40.3452C28.0351 36.058 25.9718 28.3322 32.267 27.9155C38.2961 27.5189 38.4116 31.2488 38.4116 37.4687C38.4116 43.6886 37.0812 46.1384 34.1294 46.1384Z" fill="url(#paint14_linear)"/>
<path d="M33.9388 40.2003C31.3233 41.5206 29.5612 41.5457 28.4418 39.7485C28.4669 39.9493 28.497 40.1551 28.5171 40.3459C28.994 44.633 30.7058 46.139 34.1345 46.139C36.5442 46.139 37.8745 44.5025 38.2811 40.5166C37.6034 39.3519 35.4799 39.4222 33.9388 40.2003Z" fill="url(#paint15_linear)"/>
<path d="M23.522 40.015C21.1876 40.015 19.2549 38.5642 18.9336 35.8433C19.0591 36.8975 18.0852 30.2158 22.2368 30.2158C25.9417 30.2158 26.9858 31.3052 27.2318 34.9347C27.4678 38.5642 25.9366 40.015 23.522 40.015Z" fill="url(#paint16_linear)"/>
<path d="M33.6576 39.7293C30.8464 39.7293 29.5813 38.2484 29.1044 35.2112C28.8584 33.65 27.262 28.1982 32.4227 27.907C37.3725 27.6259 37.3725 31.2403 37.4729 34.3126C37.6235 38.7303 36.0773 39.7293 33.6576 39.7293Z" fill="url(#paint17_linear)"/>
<path d="M32.0863 45.8821C32.6887 46.0478 33.3614 46.1382 34.1295 46.1382C37.0813 46.1382 38.4116 43.6884 38.4116 37.4685C38.4116 31.4745 38.2911 27.8049 32.8795 27.9003C35.008 29.1703 36.7399 32.0569 36.7399 37.2777C36.7449 44.7075 35.0783 45.8671 32.0863 45.8821Z" fill="url(#paint18_linear)"/>
<path d="M32.2269 43.8444C32.2269 41.3344 34.004 41.2541 38.758 40.8274C42.1616 40.5262 45.8564 39.6326 50.5652 41.4549C55.9417 43.5332 60.9919 46.5402 61.0572 51.9468C61.1124 56.7812 57.3523 73.995 40.8965 73.995C24.4407 73.995 18.9136 65.1998 18.4116 50.6316L47.1315 56.4097C47.1315 56.4097 47.7439 51.2741 44.2248 49.7531C42.7238 49.1055 39.516 49.6276 37.3775 49.6276C35.2439 49.6225 32.2269 47.238 32.2269 43.8444Z" fill="url(#paint19_linear)"/>
<path d="M52.6435 63.0958C45.6706 68.1812 46.2379 71.0125 39.7369 71.0125C33.2359 71.0125 29.0441 67.5737 26.0773 64.6069C23.1104 61.64 20.6104 56.6903 19.3855 52.9252C19.0943 52.0366 18.758 51.2936 18.4116 50.6611C18.9186 65.2143 24.4508 73.9995 40.8965 73.9995C57.3523 73.9995 61.1174 56.7906 61.0572 51.9513C61.0321 49.8378 60.2339 48.0909 58.9638 46.625C59.3252 53.5276 58.3664 58.9141 52.6435 63.0958Z" fill="url(#paint20_radial)"/>
<path d="M23.6426 42.841C20.8213 42.841 18.4869 40.597 18 36.4053C18.0201 37.2486 18.0803 38.1171 18.1606 38.9756C18.5422 43.2175 20.8414 45.4766 23.6175 45.4766C26.3132 45.4766 28.0552 43.4485 28.0251 38.5338C27.4478 41.5509 25.8464 42.841 23.6426 42.841Z" fill="url(#paint21_linear)"/>
<path d="M28.0201 37.5648C27.749 32.1783 26.5994 30.3911 22.6837 30.2305C24.7369 30.5668 28.7078 38.4734 23.2409 45.4413C23.3665 45.4513 23.492 45.4814 23.6175 45.4814C26.4889 45.4764 28.3062 43.2174 28.0201 37.5648Z" fill="url(#paint22_linear)"/>
<path d="M48.8082 51.3804C48.6827 48.3633 44.9779 45.3513 41.9006 45.6625C39.2449 45.9336 34.4307 46.295 32.2821 44.3271C32.5582 47.4547 35.3494 49.6233 37.3775 49.6233C39.511 49.6233 42.7239 49.1012 44.2249 49.7488C47.7439 51.2699 47.1315 56.4055 47.1315 56.4055C47.1315 56.4055 48.9337 54.3974 48.8082 51.3804Z" fill="url(#paint23_linear)"/>
<path d="M61.0571 51.9468C60.9969 46.5452 55.9417 43.5382 50.5652 41.4549C45.8563 39.6326 42.1565 40.5262 38.7579 40.8274C35.1284 41.1487 33.2459 41.2792 32.5481 42.4338C37.021 41.3294 41.2077 40.8776 46.3684 41.4699C53.0953 42.238 58.1806 46.3846 59.1043 49.5573C60.0179 52.6898 59.8824 58.5281 59.8824 58.6687C60.7559 55.8625 61.0772 53.3675 61.0571 51.9468Z" fill="url(#paint24_linear)"/>
<path d="M47.1315 56.4057C47.2168 55.1858 47.1164 53.9358 46.7249 52.7762C46.3534 51.6266 45.6154 50.5423 44.5261 50.0051C43.4668 49.4127 42.1716 49.5232 40.9718 49.5483C39.7469 49.5985 38.5271 49.744 37.2821 49.734C34.7269 49.5081 32.6486 47.3344 32.1817 44.8746C32.0662 44.2571 32.0361 43.6196 32.1616 42.982C32.2972 42.3394 32.7841 41.7571 33.3865 41.5161C34.5763 41.0091 35.8263 40.9489 37.0411 40.8033C39.4959 40.6527 41.9106 40.2109 44.3955 40.1959C46.8754 40.1607 49.3503 40.733 51.5993 41.737C53.8584 42.6959 56.0923 43.8254 57.9548 45.472C59.8122 47.0885 61.1023 49.4579 61.0572 51.9428C61.0371 49.4529 59.7068 47.1537 57.8393 45.6025C55.9869 44.0011 53.768 42.8917 51.509 41.9579C49.265 40.979 46.8453 40.4419 44.4006 40.4921C41.9658 40.5222 39.5261 40.984 37.0763 41.1547C35.8664 41.2853 34.6114 41.3505 33.5221 41.8073C32.9749 42.0282 32.5933 42.485 32.4628 43.0473C32.3423 43.6145 32.3624 44.232 32.4678 44.8143C32.8745 47.1436 34.8925 49.2722 37.2871 49.4931C38.502 49.5131 39.7319 49.3776 40.9568 49.3375C42.1666 49.3274 43.4819 49.2069 44.6064 49.8495C45.7259 50.4418 46.4538 51.5764 46.8052 52.7461C47.1716 53.9358 47.2419 55.1858 47.1315 56.4057Z" fill="#975500"/>
<path d="M27.8394 35.4512C28.0653 37.2484 28.2912 39.0757 28.01 40.898C27.8845 41.8016 27.6636 42.7102 27.2219 43.5385C26.8002 44.3719 26.0572 45.0596 25.1636 45.401C23.3614 45.9933 21.2681 45.4411 20.0331 44.0305C18.748 42.66 18.2661 40.7725 18.1606 38.9753C18.4016 40.7574 18.9639 42.5697 20.2038 43.8648C21.4086 45.1851 23.4016 45.6419 25.0432 45.0646C26.75 44.4873 27.5281 42.5897 27.7791 40.8628C28.0703 39.0857 27.9297 37.2634 27.8394 35.4512Z" fill="#975500"/>
<path d="M32.7791 46.0233C32.2018 46.209 31.6696 45.953 31.1877 45.702C30.7008 45.446 30.259 45.0896 29.9026 44.6729C29.1747 43.8345 28.7982 42.7803 28.5672 41.7361C28.3564 40.6769 28.3313 39.6227 28.1807 38.5785C28.0502 37.5293 27.9347 36.4801 27.8895 35.4209C28.0251 36.4701 28.2058 37.5092 28.3765 38.5484C28.5773 39.5876 28.6676 40.6518 28.9136 41.6558C29.1496 42.6599 29.5261 43.6538 30.1988 44.4118C30.5301 44.7883 30.9317 45.1046 31.3785 45.3355C31.8303 45.5815 32.3222 45.6418 32.7791 46.0233Z" fill="#975500"/>
<path d="M35.1084 28.1162C35.6857 28.2618 36.253 28.5027 36.7349 28.8893C37.2118 29.2758 37.5482 29.813 37.7941 30.3702C38.2911 31.4947 38.4217 32.7196 38.5271 33.9194C38.5823 35.1242 38.5873 36.324 38.5622 37.5238C38.5522 38.1212 38.5672 38.7186 38.5371 39.326C38.517 39.6272 38.512 39.9334 38.4467 40.2346C38.3915 40.5007 38.256 40.9425 37.8895 40.9124C38.1907 40.8069 38.1807 40.4656 38.2459 40.1995C38.2811 39.9134 38.3162 39.6172 38.3162 39.321C38.3263 38.7287 38.2911 38.1313 38.2761 37.5289C38.2409 36.3291 38.256 35.1343 38.1757 33.9445C38.1104 32.7648 38.0301 31.555 37.5984 30.4606C37.2018 29.3361 36.258 28.4777 35.1084 28.1162Z" fill="#975500"/>
<path d="M38.9788 49.5718C35.0431 49.9885 32.2318 45.4754 32.2318 45.4754C28.4467 44.4413 28.2911 41.7054 28.2911 41.7054C27.4427 43.2114 26.0321 45.0035 23.6726 45.0035C21.6696 45.0035 19.3704 43.9343 18.3463 41.8811C18.3714 41.4243 18.4116 40.9674 18.4568 40.5156H18.4417C18.3112 41.7556 18.281 43.0206 18.2911 44.2355C20.3192 46.5598 23.4919 46.8861 25.52 46.2887C26.0672 46.1281 28.6324 44.1903 30.6104 46.1381C32.7589 48.2465 35.2539 50.9423 39.5411 50.8469C43.8282 50.7515 47.1364 54.9935 47.1364 54.9935C46.7549 52.9654 43.7328 49.0698 38.9788 49.5718Z" fill="url(#paint25_linear)"/>
<path opacity="0.16" d="M21.4438 51.1245C19.9328 52.9418 24.5262 63.4187 29.0643 66.0592C33.6025 68.6998 39.2802 67.8865 40.3896 65.7932C41.4991 63.6948 36.7852 60.4367 32.9298 56.8273C26.2681 50.5974 22.9549 49.3072 21.4438 51.1245Z" fill="url(#paint26_radial)"/>
<path opacity="0.16" d="M58.3965 52.465C59.1997 51.3856 55.1837 44.6788 51.9758 42.8666C48.768 41.0593 42.4578 42.1336 41.9407 43.4037C41.4287 44.6738 47.508 46.1045 50.3694 48.4941C55.3142 52.6256 57.5933 53.5493 58.3965 52.465Z" fill="url(#paint27_radial)"/>
<path d="M42.4779 23.749L44.6566 31.9719C44.9829 33.3524 45.3193 34.7329 45.5853 36.1285C45.7209 36.8263 45.8464 37.5241 45.9568 38.2269C46.0622 38.9297 46.2128 39.6275 46.1576 40.3504C45.9317 39.6627 45.8765 38.9599 45.7359 38.2671C45.6054 37.5743 45.4598 36.8815 45.2992 36.1888C44.9829 34.8082 44.6616 33.4327 44.3153 32.0572C43.6978 29.2862 42.9749 26.5402 42.4779 23.749Z" fill="#975500"/>
<defs>
<linearGradient id="paint0_linear" x1="24.8698" y1="77.9331" x2="35.395" y2="54.869" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<radialGradient id="paint1_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(54.1858 9.02708) rotate(-131.033) scale(2.78955 1.48287)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<linearGradient id="paint2_linear" x1="133.685" y1="-74.5082" x2="164.412" y2="-106.262" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint3_linear" x1="451.914" y1="-90.475" x2="494.367" y2="-102.731" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint4_linear" x1="44.8255" y1="9.41291" x2="52.0853" y2="104.853" gradientUnits="userSpaceOnUse">
<stop stop-color="#473226" stop-opacity="0"/>
<stop offset="1" stop-color="#3D2A20"/>
</linearGradient>
<linearGradient id="paint5_linear" x1="51.7462" y1="8.40022" x2="48.0158" y2="27.5918" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint6_linear" x1="34.4359" y1="10.6354" x2="54.6218" y2="61.6314" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint7_linear" x1="59.1061" y1="55.0907" x2="50.261" y2="34.5995" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<radialGradient id="paint8_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(43.7157 9.32748) rotate(-167.041) scale(2.78984 1.48338)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<linearGradient id="paint9_linear" x1="43.2927" y1="30.3309" x2="30.8979" y2="55.2387" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint10_linear" x1="55.9817" y1="24.9419" x2="21.7037" y2="103.206" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint11_linear" x1="19.4901" y1="49.7848" x2="59.3364" y2="49.7848" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint12_linear" x1="34.4718" y1="27.2084" x2="32.7897" y2="66.5178" gradientUnits="userSpaceOnUse">
<stop stop-color="#473226" stop-opacity="0"/>
<stop offset="1" stop-color="#3D2A20"/>
</linearGradient>
<linearGradient id="paint13_linear" x1="23.0685" y1="36.5274" x2="23.0685" y2="53.983" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint14_linear" x1="33.1136" y1="36.5263" x2="33.1136" y2="53.9819" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint15_linear" x1="33.3597" y1="36.0915" x2="33.3597" y2="59.222" gradientUnits="userSpaceOnUse">
<stop stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<linearGradient id="paint16_linear" x1="23.0825" y1="44.2268" x2="23.0825" y2="28.1569" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint17_linear" x1="33.0802" y1="44.2273" x2="33.0802" y2="28.1573" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint18_linear" x1="26.359" y1="32.822" x2="69.3981" y2="57.2717" gradientUnits="userSpaceOnUse">
<stop stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<linearGradient id="paint19_linear" x1="19.4899" y1="57.1687" x2="59.3363" y2="57.1687" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<radialGradient id="paint20_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(39.912 38.6941) scale(29.5447 39.8115)">
<stop offset="0.6147" stop-color="#B37E53" stop-opacity="0"/>
<stop offset="1" stop-color="#B37E53"/>
</radialGradient>
<linearGradient id="paint21_linear" x1="22.9191" y1="36.0852" x2="24.1132" y2="55.8824" gradientUnits="userSpaceOnUse">
<stop stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<linearGradient id="paint22_linear" x1="12.4524" y1="30.5772" x2="78.873" y2="72.753" gradientUnits="userSpaceOnUse">
<stop stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<linearGradient id="paint23_linear" x1="40.5486" y1="54.9751" x2="40.5486" y2="27.3499" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint24_linear" x1="41.2618" y1="39.6175" x2="72.6621" y2="73.8509" gradientUnits="userSpaceOnUse">
<stop stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<linearGradient id="paint25_linear" x1="29.908" y1="56.5277" x2="39.047" y2="28.6395" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<radialGradient id="paint26_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(30.3808 60.1682) rotate(-138.967) scale(13.2034 6.02487)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint27_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(50.6751 45.9397) rotate(38.2129) scale(10.1808 3.74864)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

@@ -0,0 +1,19 @@
<?xml version="1.0" ?>
␍<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
␍<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 8.66 8.66" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
␍<defs>
␍<style type="text/css">
<![CDATA[
.fil0 {fill:none}
.fil2 {fill:#2554B0;fill-rule:nonzero}
.fil1 {fill:#479DFF;fill-rule:nonzero}
]]>
</style>
␍</defs>
␍<g id="Layer_x0020_1">
␍<rect class="fil0" height="8.66" width="8.66"/>
␍<path class="fil1" d="M2.88 4.08l0 -0.95c0,-0.1 0.04,-0.19 0.11,-0.26l0 0c0.07,-0.07 0.17,-0.11 0.27,-0.11l1.46 0c0.06,0 0.11,0.03 0.13,0.08l0.24 0.43 0.77 0c0.1,0 0.19,0.04 0.26,0.11l0 0c0.07,0.07 0.11,0.17 0.11,0.27l0 2.11 -0.28 0 0 -2.11c0,-0.03 -0.01,-0.05 -0.02,-0.07 -0.02,-0.02 -0.05,-0.03 -0.07,-0.03l-0.86 0 0 0c-0.05,0 -0.09,-0.02 -0.12,-0.07l-0.24 -0.44 -1.38 0c-0.03,0 -0.05,0.01 -0.07,0.02 -0.02,0.02 -0.03,0.05 -0.03,0.07l0 0.95 -0.28 0z"/>
␍<path class="fil2" d="M6.09 5.9l-2.89 0c-0.08,0 -0.16,-0.03 -0.23,-0.08 -0.06,-0.05 -0.11,-0.11 -0.13,-0.2l-0.33 -1.2c-0.02,-0.06 -0.02,-0.12 -0.01,-0.17l0 0c0.01,-0.06 0.04,-0.11 0.07,-0.16 0.04,-0.05 0.09,-0.08 0.14,-0.11 0.05,-0.02 0.1,-0.04 0.16,-0.04l2.58 0c0.09,0 0.17,0.03 0.23,0.08 0.07,0.05 0.12,0.12 0.14,0.2l0.41 1.5c0.02,0.08 -0.03,0.16 -0.1,0.18 -0.01,0 -0.02,0 -0.04,0l0 0zm-2.89 -0.28l2.71 0 -0.36 -1.33c-0.01,-0.02 -0.02,-0.04 -0.04,-0.05 -0.01,-0.01 -0.03,-0.02 -0.06,-0.02l-2.58 0c-0.01,0 -0.03,0.01 -0.04,0.01 -0.01,0.01 -0.02,0.02 -0.03,0.03 -0.01,0.01 -0.02,0.03 -0.02,0.04 0,0.02 0,0.03 0,0.05l0.33 1.2c0,0.02 0.02,0.04 0.03,0.05 0.02,0.01 0.04,0.02 0.06,0.02z"/>
␍</g>
␍</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1,23 @@
<?xml version="1.0" ?>
␍<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
␍<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 11.32 11.32" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
␍<defs>
␍<style type="text/css">
<![CDATA[
.fil0 {fill:none}
.fil1 {fill:#2554B0;fill-rule:nonzero}
.fil2 {fill:#479DFF;fill-rule:nonzero}
]]>
</style>
␍</defs>
␍<g id="Layer_x0020_1">
␍<rect class="fil0" height="11.32" width="11.32"/>
␍<path class="fil1" d="M5.66 8.08c-0.67,0 -1.27,-0.27 -1.71,-0.71 -0.44,-0.43 -0.71,-1.04 -0.71,-1.71 0,-0.67 0.27,-1.27 0.71,-1.71 0.44,-0.44 1.04,-0.71 1.71,-0.71 0.67,0 1.28,0.27 1.71,0.71 0.44,0.44 0.71,1.04 0.71,1.71 0,0.67 -0.27,1.28 -0.71,1.71 -0.43,0.44 -1.04,0.71 -1.71,0.71zm-1.45 -0.96c0.37,0.37 0.88,0.6 1.45,0.6 0.57,0 1.08,-0.23 1.46,-0.6 0.37,-0.38 0.6,-0.89 0.6,-1.46 0,-0.57 -0.23,-1.08 -0.6,-1.45 -0.38,-0.37 -0.89,-0.6 -1.46,-0.6 -0.57,0 -1.08,0.23 -1.45,0.6 -0.37,0.37 -0.6,0.88 -0.6,1.45 0,0.57 0.23,1.08 0.6,1.46z"/>
␍<path class="fil1" d="M5.66 8.08c-0.45,0 -0.85,-0.28 -1.14,-0.74 -0.26,-0.43 -0.43,-1.03 -0.43,-1.68 0,-0.65 0.17,-1.24 0.43,-1.68 0.29,-0.46 0.69,-0.74 1.14,-0.74 0.45,0 0.86,0.28 1.14,0.74 0.27,0.44 0.43,1.03 0.43,1.68 0,0.65 -0.16,1.25 -0.43,1.68 -0.28,0.46 -0.69,0.74 -1.14,0.74zm-0.82 -0.93c0.21,0.35 0.51,0.57 0.82,0.57 0.32,0 0.61,-0.22 0.83,-0.57 0.23,-0.38 0.38,-0.9 0.38,-1.49 0,-0.58 -0.15,-1.11 -0.38,-1.48 -0.22,-0.36 -0.51,-0.57 -0.83,-0.57 -0.31,0 -0.61,0.21 -0.82,0.57 -0.24,0.37 -0.38,0.9 -0.38,1.48 0,0.59 0.14,1.11 0.38,1.49z"/>
␍<polygon class="fil1" points="5.85,3.42 5.85,7.9 5.48,7.9 5.48,3.42 "/>
␍<polygon class="fil1" points="7.9,5.85 3.42,5.85 3.42,5.48 7.9,5.48 "/>
␍<path class="fil1" d="M7.51 4.43c-0.23,0.14 -0.51,0.25 -0.83,0.33 -0.31,0.07 -0.66,0.11 -1.02,0.11 -0.35,0 -0.7,-0.04 -1.01,-0.11 -0.32,-0.08 -0.61,-0.19 -0.84,-0.33l0.19 -0.31c0.2,0.12 0.45,0.21 0.73,0.28 0.29,0.07 0.6,0.11 0.93,0.11 0.33,0 0.65,-0.04 0.93,-0.11 0.29,-0.07 0.54,-0.16 0.73,-0.28l0.19 0.31z"/>
␍<path class="fil2" d="M8.12 4.55c-0.1,-0.02 -0.16,-0.12 -0.14,-0.22 0.02,-0.1 0.12,-0.16 0.22,-0.14 0.13,0.03 0.25,0.08 0.33,0.14 0.11,0.06 0.18,0.15 0.21,0.25 0.12,0.33 -0.15,0.74 -0.68,1.14 -0.48,0.36 -1.18,0.73 -2,1.03 -0.82,0.3 -1.59,0.47 -2.19,0.51 -0.67,0.03 -1.14,-0.11 -1.26,-0.44 -0.03,-0.09 -0.04,-0.19 -0.01,-0.3l0 0c0.02,-0.1 0.07,-0.2 0.15,-0.3 0.05,-0.08 0.17,-0.1 0.25,-0.04 0.08,0.05 0.1,0.17 0.04,0.25 -0.04,0.06 -0.07,0.12 -0.08,0.18l0 0c-0.01,0.03 -0.01,0.06 0,0.09 0.05,0.16 0.39,0.22 0.89,0.19 0.56,-0.03 1.3,-0.19 2.09,-0.48 0.78,-0.29 1.45,-0.64 1.9,-0.98 0.4,-0.3 0.62,-0.57 0.56,-0.72 -0.01,-0.03 -0.03,-0.05 -0.07,-0.08 -0.05,-0.03 -0.12,-0.06 -0.21,-0.08z"/>
␍</g>
␍</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,22 @@
import robotArm from './robot-arm.svg';
import thumbsUp from './thumbs-up.svg';
import flexible from './crossed-fingers.svg';
import rightFist from './left-fist.svg';
import leftFist from './right-fist.svg';
import globe from './globe.svg';
import team from './team.svg';
import transcription from './printer.svg';
import folder from './folder.svg';
export {
flexible,
robotArm,
thumbsUp,
leftFist,
rightFist,
globe,
team,
transcription,
folder,
};
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M30.8833 36.4135C34.7826 40.861 34.3285 47.6365 29.8706 51.5463C25.4127 55.4561 18.6319 55.0229 14.7325 50.5754C10.8332 46.128 11.2873 39.3524 15.7452 35.4426C20.2083 31.5328 26.9839 31.966 30.8833 36.4135Z" fill="url(#paint0_linear)"/>
<path d="M30.8833 36.4135C34.7826 40.861 34.3285 47.6365 29.8706 51.5463C25.4127 55.4561 18.6319 55.0229 14.7325 50.5754C10.8332 46.128 11.2873 39.3524 15.7452 35.4426C20.2083 31.5328 26.9839 31.966 30.8833 36.4135Z" fill="url(#paint1_linear)"/>
<path d="M30.8833 36.4135C34.7826 40.861 34.3285 47.6365 29.8706 51.5463C25.4127 55.4561 18.6319 55.0229 14.7325 50.5754C10.8332 46.128 11.2873 39.3524 15.7452 35.4426C20.2083 31.5328 26.9839 31.966 30.8833 36.4135Z" fill="url(#paint2_linear)"/>
<path d="M61.0811 40.4436C66.9746 38.2355 73.9694 17.0005 68.812 17.0005C63.6546 17.0005 38.7395 20.6806 32.9713 19.9446C27.2032 19.2086 15.2337 17.7939 10.139 22.8887C5.04422 27.9834 6.08822 45.5957 6.08822 49.5264C6.08822 53.4571 9.523 55.1745 13.3284 54.5585C17.1338 53.9426 28.1167 43.205 28.1167 39.3996C28.1167 39.3996 22.286 38.1102 20.4485 38.7262C18.6111 39.3422 19.3419 41.5502 19.3419 41.5502C19.3419 41.5502 15.8444 45.0477 15.2911 45.601C15.2911 45.601 18.1151 42.5316 18.1151 40.4436C18.1151 38.3556 18.3605 35.4115 16.0271 33.6941C16.0271 33.6941 19.8952 38.1155 23.6379 38.1155C28.3046 38.1155 27.506 37.3168 28.3046 38.1155L61.0811 40.4436Z" fill="url(#paint3_linear)"/>
<path d="M68.8172 17C73.9746 17 74.7106 28.9069 73.4839 34.5549C72.2572 40.203 66.9798 38.235 61.0864 40.4483C55.193 42.6616 52.2228 50.0688 46.6008 54.3179C41.5687 58.1233 39.6269 55.4454 23.6484 63.1554C20.9809 64.4395 13.3388 63.4269 15.218 53.8012C23.1577 49.8966 29.1085 38.9136 28.3151 38.115C28.3151 38.115 36.474 38.115 40.0079 38.115C43.5419 38.115 59.1184 17 68.8172 17Z" fill="url(#paint4_linear)"/>
<path d="M15.0875 58.3841V58.4259C16.0898 63.7242 21.4925 64.1888 23.6484 63.15C39.6268 55.44 41.5687 58.1179 46.6008 54.3125C52.2228 50.0582 55.193 42.651 61.0864 40.4429C66.9798 38.2348 72.2572 40.1976 73.4839 34.5495C73.6562 33.7665 73.7815 32.853 73.8702 31.8769C69.5532 32.8582 64.7717 31.1147 60.2251 31.1147C54.577 31.1147 47.8275 49.1551 36.6567 54.6831C25.4858 60.2059 15.0875 58.3841 15.0875 58.3841Z" fill="url(#paint5_linear)"/>
<path d="M29.7819 53.9112C26.8743 53.7807 21.837 54.214 19.8221 50.6278C18.397 51.8859 16.8519 52.9978 15.2128 53.8016C13.3336 63.4274 20.9757 64.44 23.6431 63.1559C39.6216 55.4459 41.5634 58.1238 46.5956 54.3184C51.3928 50.6905 54.269 44.771 58.6695 41.7382L58.6799 41.7173C58.6799 41.7173 55.8037 43.2102 49.1795 49.2863C42.5553 55.3624 33.3419 54.0731 29.7819 53.9112Z" fill="url(#paint6_linear)"/>
<path d="M73.5153 34.3618C71.2498 34.6646 67.9977 34.8734 64.1506 34.4349C56.665 33.5736 48.929 51.1285 44.6329 53.9526C40.3368 56.7766 26.4672 59.6006 22.0459 59.6006C18.7781 59.6006 16.3195 58.1808 14.9623 55.7065C14.3985 63.5522 21.1637 64.3561 23.6432 63.1607C39.6217 55.4507 41.5635 58.1286 46.5956 54.3232C52.2176 50.0689 55.1878 42.6617 61.0812 40.4536C66.9746 38.2455 72.252 40.2083 73.4787 34.5602C73.4944 34.4923 73.4996 34.4245 73.5153 34.3618Z" fill="url(#paint7_linear)"/>
<path d="M6.08826 49.5313C6.08826 53.4568 9.52304 55.1794 13.3284 54.5634C15.5365 54.2084 20.1458 50.45 23.638 46.6081C17.1077 51.588 13.7513 51.4993 11.2404 51.2487C6.2031 50.7424 8.05099 43.1472 8.05099 39.6498C8.05099 36.1524 6.82429 29.168 10.139 22.8936C5.04948 27.9883 6.08826 45.6006 6.08826 49.5313Z" fill="url(#paint8_linear)"/>
<path d="M69.2766 17.0679C69.1356 17.0261 68.9791 17 68.812 17C63.6546 17 38.7395 20.6801 32.9713 19.9441C27.2032 19.2081 15.2337 17.7987 10.139 22.8882C9.3664 23.6607 16.6431 18.2215 30.022 20.6801C40.1802 22.5437 55.1877 17.2453 71.7926 18.8844C71.1297 17.8978 70.3049 17.2245 69.2766 17.0679Z" fill="url(#paint9_linear)"/>
<path d="M15.2129 53.8015C20.1301 55.2213 31.7447 42.2861 31.7447 34.9206C31.7447 33.3233 27.0936 35.474 23.0272 35.474C19.8535 35.474 17.6872 33.386 15.4791 32.5299C14.0227 31.9661 18.1204 39.7752 14.8214 44.9587C12.4567 48.6702 16.5857 45.6008 17.4157 44.4994C18.2457 43.3927 21.6178 42.8446 21.6178 42.8446C21.6178 42.8446 20.8192 39.7126 23.0272 40.0832C25.2353 40.4539 27.078 40.3077 27.078 40.3077C27.078 40.3077 19.8169 51.7761 15.2129 53.8015Z" fill="url(#paint10_linear)"/>
<path d="M28.9519 37.2852C27.9706 35.3224 25.9139 38.0316 22.4843 36.9459C19.8587 36.1159 17.1129 33.2762 16.4291 34.3567C15.7453 35.4373 17.2904 38.538 17.2904 40.2293C17.2904 41.9153 15.3277 44.8333 14.8683 45.538C14.409 46.2427 16.5596 45.2353 17.661 44.0033C18.4597 43.1107 19.6499 42.145 20.1562 42.0772C20.6626 42.0093 20.365 39.3158 22.3434 39.3158C24.3166 39.3158 26.9579 39.1331 27.9967 39.7281C26.9631 42.2181 23.9251 47.0101 19.8639 50.6014C19.8482 50.6119 19.8378 50.6275 19.8221 50.638C19.5142 50.9094 19.2009 51.1704 18.8773 51.4262C18.8199 51.468 18.7677 51.5149 18.7155 51.5619C18.4284 51.7916 18.1308 52.0056 17.8333 52.2144C17.7498 52.2771 17.6663 52.3397 17.5775 52.4023C17.2904 52.6007 16.9981 52.7834 16.7058 52.9661C16.6066 53.0288 16.5126 53.0966 16.4135 53.154C16.0272 53.3837 15.6357 53.5925 15.2442 53.7909C15.2337 53.7961 15.2285 53.8013 15.2181 53.8013C14.8213 55.8215 14.8631 57.4397 15.1763 58.7603C15.6461 55.3099 20.2606 51.6559 23.6797 47.9653C27.1093 44.2487 29.9333 39.2479 28.9519 37.2852ZM20.4537 38.7259C18.6111 39.3419 19.3471 41.5499 19.3471 41.5499C19.3471 41.5499 15.8497 45.0473 15.2964 45.6007C15.2964 45.6007 18.1204 42.5313 18.1204 40.4433C18.1204 38.705 18.2718 36.3717 16.972 34.649C18.3449 35.9488 21.0227 38.1099 23.6432 38.1099C28.3099 38.1099 27.5112 37.3113 28.3099 38.1099C28.4508 38.2509 28.3725 38.7207 28.1167 39.3993C28.0593 39.3888 22.286 38.1151 20.4537 38.7259Z" fill="url(#paint11_linear)"/>
<path d="M28.122 39.3993C26.2689 39.227 24.4627 38.7886 22.6149 38.7103C21.717 38.6842 20.72 38.6111 19.9944 39.1018C19.2636 39.6081 19.201 40.6678 19.4411 41.5082V41.5134C19.4515 41.5499 19.4411 41.5917 19.415 41.6178L15.3799 45.6842C15.3329 45.7312 15.2546 45.7312 15.2024 45.6842C15.1554 45.6372 15.1554 45.5589 15.1972 45.5119C15.9228 44.6872 16.5857 43.7998 17.139 42.8549C17.7028 41.8997 18.0682 40.8922 17.969 39.7699C17.9743 38.6685 17.9377 37.5619 17.6193 36.5231C17.3217 35.4791 16.7006 34.5603 15.9071 33.8243L16.1577 33.579C17.1338 34.623 18.2248 35.5887 19.415 36.3821C20.5999 37.1651 21.931 37.8333 23.3404 37.9168C24.7707 37.9638 26.2167 37.9064 27.6417 37.6036C27.8505 37.5305 28.1637 37.708 28.2577 37.8385C28.3308 37.922 28.3778 37.9272 28.4665 38.0734C28.5552 38.2248 28.5291 38.324 28.5344 38.4336C28.4978 38.8407 28.3725 39.1853 28.242 39.535C27.9758 40.224 27.6417 40.8766 27.292 41.5186C25.8721 44.0712 24.1287 46.4307 22.1451 48.5709C20.1614 50.6902 17.8959 52.6529 15.2076 53.8065C17.7289 52.3554 19.9631 50.4971 21.931 48.3725C23.8885 46.2427 25.6164 43.8937 27.0101 41.3672C27.3546 40.7304 27.6783 40.0883 27.9341 39.4202C28.0593 39.0913 28.1742 38.7416 28.2003 38.4232C28.2055 38.2509 28.1951 38.2457 28.028 38.0891C27.8766 37.9586 27.8453 37.9116 27.6835 37.9429C26.2689 38.2509 24.7812 38.3188 23.3196 38.2718C21.811 38.183 20.4329 37.4888 19.2166 36.6953C17.9847 35.8862 16.8885 34.9048 15.8967 33.8191C15.834 33.746 15.834 33.6364 15.9071 33.5738C15.975 33.5111 16.0794 33.5163 16.1472 33.579C16.972 34.3567 17.6245 35.3433 17.9325 36.4448C18.2561 37.5358 18.2822 38.6789 18.2718 39.7856C18.2718 40.3232 18.277 40.9288 18.0839 41.4716C17.9116 42.0145 17.6663 42.5261 17.3792 43.0115C16.805 43.9773 16.1316 44.8647 15.3851 45.6999L15.2076 45.5276L19.274 41.4925L19.2479 41.5969L19.2427 41.5865C18.9713 40.7147 18.966 39.5298 19.8378 38.9034C20.6991 38.3396 21.7118 38.4492 22.6253 38.4701C23.5597 38.5223 24.4836 38.6424 25.4023 38.7886C26.3211 38.9191 27.2398 39.0861 28.122 39.3993Z" fill="#804B24"/>
<path d="M19.2323 41.0073L19.4307 41.5241L19.3837 41.4667C20.0466 41.6755 20.673 41.9835 21.2316 42.4063C21.7745 42.8187 22.3121 43.3772 22.4374 44.0767C22.0772 43.4868 21.5657 43.0744 21.0228 42.6882C20.4799 42.3071 19.9057 41.9574 19.321 41.6233L19.2949 41.6076C19.2793 41.5972 19.2688 41.5815 19.2688 41.5659L19.2323 41.0073Z" fill="#804B24"/>
<path d="M9.40302 52.0475C5.2792 50.7269 6.76169 36.2726 7.06967 30.3218L6.97571 30.3897C5.5924 37.5359 6.0883 46.8118 6.0883 49.5315C6.0883 53.4569 9.52308 55.1795 13.3285 54.5636C14.7483 54.3339 17.1704 52.6843 19.6447 50.518C17.2487 51.9379 13.0727 53.222 9.40302 52.0475Z" fill="url(#paint12_linear)"/>
<path d="M72.941 36.1055C69.3862 37.28 65.3407 36.2725 62.6785 36.2725C59.3638 36.2725 51.2623 49.4061 47.2115 52.9661C43.1608 56.5262 31.8699 58.4889 26.4672 60.697C21.2106 62.8476 16.7945 61.7253 15.0875 58.3845C16.0689 63.7194 21.4821 64.1944 23.6431 63.1556C39.6216 55.4456 41.5635 58.1235 46.5956 54.3181C52.2175 50.0638 55.1877 42.6566 61.0811 40.4485C66.3429 38.4701 71.1088 39.8117 72.941 36.1055Z" fill="url(#paint13_linear)"/>
<path d="M12.9265 37.0975C13.4328 32.8067 11.9033 26.4695 12.8638 21.0303C11.8355 21.5262 10.9011 22.1265 10.139 22.8938C5.04422 27.9886 6.08822 45.6009 6.08822 49.5316C6.08822 53.457 9.523 55.1796 13.3284 54.5637C14.3463 54.4019 15.8862 53.4936 17.5879 52.2095C7.56549 48.6703 12.0704 44.3429 12.9265 37.0975Z" fill="url(#paint14_linear)"/>
<path opacity="0.16" d="M48.1511 29.2354C51.2466 31.313 49.1951 37.4099 45.5985 43.2198C42.6596 47.97 36.4896 51.3683 33.5194 49.2646C30.5492 47.1609 28.2942 44.7493 35.1428 35.3637C39.1831 29.8253 45.1287 27.2048 48.1511 29.2354Z" fill="url(#paint15_radial)"/>
<path opacity="0.16" d="M69.1775 22.0478C69.689 24.2768 55.9082 26.5736 40.5404 28.1344C27.9758 29.4081 13.4067 28.7712 13.1144 26.5788C12.8221 24.3812 14.0697 22.3036 40.3368 20.1791C55.8142 18.9263 68.6816 19.8711 69.1775 22.0478Z" fill="url(#paint16_radial)"/>
<path opacity="0.16" d="M22.8393 43.9878C23.7476 45.1049 22.1294 47.2712 19.9526 49.1713C18.1726 50.7269 15.3329 51.4316 14.4768 50.3197C13.6207 49.2078 13.0779 48.0438 16.9981 45.0736C19.3001 43.3249 21.9519 42.8968 22.8393 43.9878Z" fill="url(#paint17_radial)"/>
<defs>
<linearGradient id="paint0_linear" x1="14.7329" y1="50.5825" x2="30.8847" y2="36.4204" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#FFCB4B"/>
<stop offset="1" stop-color="#FFD748"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="22.2663" y1="42.1538" x2="27.1148" y2="54.1217" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="24.961" y1="28.7801" x2="23.2118" y2="40.7481" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint3_linear" x1="9.4884" y1="-7.12923" x2="33.7925" y2="28.2222" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint4_linear" x1="46.855" y1="53.2493" x2="44.4" y2="41.4655" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint5_linear" x1="37.0232" y1="31.8806" x2="66.4827" y2="85.8284" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint6_linear" x1="29.23" y1="56.0975" x2="17.0779" y2="69.1702" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint7_linear" x1="43.5933" y1="42.7063" x2="54.7634" y2="100.766" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint8_linear" x1="18.7839" y1="10.4893" x2="5.03616" y2="119.858" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint9_linear" x1="41.5517" y1="27.2265" x2="37.5011" y2="-14.5078" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint10_linear" x1="37.2206" y1="24.7227" x2="-29.3089" y2="85.6058" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint11_linear" x1="48.3872" y1="27.9684" x2="2.18355" y2="54.278" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint12_linear" x1="19.9767" y1="-30.4889" x2="6.96542" y2="106.007" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint13_linear" x1="36.1977" y1="7.86253" x2="52.8501" y2="91.7652" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint14_linear" x1="19.4915" y1="37.3747" x2="-21.3836" y2="40.1979" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<radialGradient id="paint15_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(40.5737 39.0639) rotate(-53.8439) scale(12.7303 6.65798)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint16_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(41.1238 24.1246) rotate(-4.61835) scale(28.8709 4.04572)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint17_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(18.5751 47.0505) rotate(-37.1319) scale(5.38479 2.57216)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,23 @@
<?xml version="1.0" ?>
␍<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
␍<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 10.51 10.51" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
␍<defs>
␍<style type="text/css">
<![CDATA[
.fil0 {fill:none}
.fil1 {fill:#2554B0;fill-rule:nonzero}
.fil2 {fill:#479DFF;fill-rule:nonzero}
]]>
</style>
␍</defs>
␍<g id="Layer_x0020_1">
␍<rect class="fil0" height="10.51" width="10.51"/>
␍<path class="fil1" d="M3.82 6.75l-0.84 0c-0.13,0 -0.24,-0.06 -0.33,-0.14l0 0c-0.08,-0.08 -0.13,-0.2 -0.13,-0.32l0 -1.91c0,-0.13 0.05,-0.24 0.13,-0.32l0 0c0.09,-0.09 0.2,-0.14 0.33,-0.14l4.56 0c0.12,0 0.24,0.05 0.32,0.14l0 0c0.08,0.08 0.14,0.2 0.14,0.32l0 1.91c0,0.12 -0.06,0.24 -0.14,0.32l0 0c-0.08,0.08 -0.2,0.14 -0.32,0.14l-0.84 0 0 -0.34 0.84 0c0.03,0 0.06,-0.02 0.08,-0.04 0.02,-0.02 0.04,-0.05 0.04,-0.08l0 -1.91c0,-0.03 -0.02,-0.06 -0.04,-0.08l0 0c-0.02,-0.02 -0.05,-0.04 -0.08,-0.04l-4.56 0c-0.04,0 -0.07,0.02 -0.09,0.04l0 0c-0.02,0.02 -0.03,0.05 -0.03,0.08l0 1.91c0,0.03 0.01,0.06 0.03,0.08 0.02,0.02 0.05,0.04 0.09,0.04l0.84 0 0 0.34z"/>
␍<path class="fil2" d="M6.87 5.18l0 2.2c0,0.12 -0.06,0.24 -0.14,0.32l0 0c-0.08,0.08 -0.2,0.13 -0.32,0.13l-2.3 0c-0.13,0 -0.24,-0.05 -0.33,-0.13l-0.01 -0.01c-0.07,-0.08 -0.12,-0.19 -0.12,-0.31l0 -2.2 0.34 0 0 2.2c0,0.03 0.01,0.05 0.03,0.07l0 0.01c0.03,0.02 0.06,0.03 0.09,0.03l2.3 0c0.03,0 0.06,-0.01 0.08,-0.03l0 0c0.02,-0.02 0.04,-0.05 0.04,-0.08l0 -2.2 0.34 0z"/>
␍<path class="fil1" d="M4.11 2.68l2.3 0c0.12,0 0.24,0.05 0.32,0.13l0.01 0.02c0.08,0.08 0.13,0.19 0.13,0.31l0 0.95c0,0.1 -0.08,0.17 -0.17,0.17l-2.88 0c-0.1,0 -0.17,-0.07 -0.17,-0.17l0 -0.95c0,-0.13 0.05,-0.24 0.13,-0.33l0 0c0.09,-0.08 0.2,-0.13 0.33,-0.13zm2.3 0.34l-2.3 0c-0.03,0 -0.06,0.01 -0.09,0.04l0 0c-0.02,0.02 -0.03,0.05 -0.03,0.08l0 0.78 2.54 0 0 -0.78c0,-0.03 -0.02,-0.06 -0.03,-0.08l-0.01 0c-0.02,-0.03 -0.05,-0.04 -0.08,-0.04z"/>
␍<path class="fil1" d="M3.43 5.35c-0.09,0 -0.17,-0.08 -0.17,-0.17 0,-0.09 0.08,-0.17 0.17,-0.17l3.65 0c0.1,0 0.18,0.08 0.18,0.17 0,0.09 -0.08,0.17 -0.18,0.17l-3.65 0z"/>
␍<path class="fil2" d="M4.54 6.29c-0.09,0 -0.17,-0.08 -0.17,-0.17 0,-0.09 0.08,-0.17 0.17,-0.17l1.43 0c0.09,0 0.17,0.08 0.17,0.17 0,0.09 -0.08,0.17 -0.17,0.17l-1.43 0z"/>
␍<path class="fil2" d="M4.54 6.98c-0.09,0 -0.17,-0.08 -0.17,-0.17 0,-0.09 0.08,-0.17 0.17,-0.17l1.06 0c0.09,0 0.17,0.08 0.17,0.17 0,0.09 -0.08,0.17 -0.17,0.17l-1.06 0z"/>
␍</g>
␍</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M49.1167 36.4135C45.2174 40.861 45.6715 47.6365 50.1294 51.5463C54.5873 55.4561 61.3681 55.0229 65.2675 50.5754C69.1668 46.128 68.7127 39.3524 64.2548 35.4426C59.7917 31.5328 53.0161 31.966 49.1167 36.4135Z" fill="url(#paint0_linear)"/>
<path d="M49.1167 36.4135C45.2174 40.861 45.6715 47.6365 50.1294 51.5463C54.5873 55.4561 61.3681 55.0229 65.2675 50.5754C69.1668 46.128 68.7127 39.3524 64.2548 35.4426C59.7917 31.5328 53.0161 31.966 49.1167 36.4135Z" fill="url(#paint1_linear)"/>
<path d="M49.1167 36.4135C45.2174 40.861 45.6715 47.6365 50.1294 51.5463C54.5873 55.4561 61.3681 55.0229 65.2675 50.5754C69.1668 46.128 68.7127 39.3524 64.2548 35.4426C59.7917 31.5328 53.0161 31.966 49.1167 36.4135Z" fill="url(#paint2_linear)"/>
<path d="M18.9189 40.4436C13.0254 38.2355 6.03062 17.0005 11.188 17.0005C16.3454 17.0005 41.2605 20.6806 47.0287 19.9446C52.7968 19.2086 64.7663 17.7939 69.861 22.8887C74.9558 27.9834 73.9118 45.5957 73.9118 49.5264C73.9118 53.4571 70.477 55.1745 66.6716 54.5585C62.8662 53.9426 51.8833 43.205 51.8833 39.3996C51.8833 39.3996 57.714 38.1102 59.5515 38.7262C61.3889 39.3422 60.6581 41.5502 60.6581 41.5502C60.6581 41.5502 64.1556 45.0477 64.7089 45.601C64.7089 45.601 61.8849 42.5316 61.8849 40.4436C61.8849 38.3556 61.6395 35.4115 63.9729 33.6941C63.9729 33.6941 60.1048 38.1155 56.3621 38.1155C51.6954 38.1155 52.494 37.3168 51.6954 38.1155L18.9189 40.4436Z" fill="url(#paint3_linear)"/>
<path d="M11.1828 17C6.0254 17 5.28937 28.9069 6.51608 34.5549C7.74278 40.203 13.0202 38.235 18.9136 40.4483C24.807 42.6616 27.7772 50.0688 33.3992 54.3179C38.4313 58.1233 40.3731 55.4454 56.3516 63.1554C59.0191 64.4395 66.6612 63.4269 64.782 53.8012C56.8423 49.8966 50.8915 38.9136 51.6849 38.115C51.6849 38.115 43.526 38.115 39.9921 38.115C36.4581 38.115 20.8816 17 11.1828 17Z" fill="url(#paint4_linear)"/>
<path d="M64.9125 58.3841V58.4259C63.9102 63.7242 58.5075 64.1888 56.3516 63.15C40.3732 55.44 38.4313 58.1179 33.3992 54.3125C27.7772 50.0582 24.807 42.651 18.9136 40.4429C13.0202 38.2348 7.74279 40.1976 6.51608 34.5495C6.34382 33.7665 6.21855 32.853 6.12981 31.8769C10.4468 32.8582 15.2283 31.1147 19.7749 31.1147C25.423 31.1147 32.1725 49.1551 43.3433 54.6831C54.5142 60.2059 64.9125 58.3841 64.9125 58.3841Z" fill="url(#paint5_linear)"/>
<path d="M50.2181 53.9112C53.1257 53.7807 58.163 54.214 60.1779 50.6278C61.603 51.8859 63.1481 52.9978 64.7872 53.8016C66.6664 63.4274 59.0243 64.44 56.3569 63.1559C40.3784 55.4459 38.4366 58.1238 33.4044 54.3184C28.6072 50.6905 25.731 44.771 21.3305 41.7382L21.3201 41.7173C21.3201 41.7173 24.1963 43.2102 30.8205 49.2863C37.4447 55.3624 46.6581 54.0731 50.2181 53.9112Z" fill="url(#paint6_linear)"/>
<path d="M6.48473 34.3618C8.75022 34.6646 12.0023 34.8734 15.8494 34.4349C23.335 33.5736 31.071 51.1285 35.3671 53.9526C39.6632 56.7766 53.5328 59.6006 57.9541 59.6006C61.2219 59.6006 63.6805 58.1808 65.0377 55.7065C65.6015 63.5522 58.8363 64.3561 56.3568 63.1607C40.3783 55.4507 38.4365 58.1286 33.4044 54.3232C27.7824 50.0689 24.8122 42.6617 18.9188 40.4536C13.0254 38.2455 7.74797 40.2083 6.52127 34.5602C6.50561 34.4923 6.50039 34.4245 6.48473 34.3618Z" fill="url(#paint7_linear)"/>
<path d="M73.9117 49.5313C73.9117 53.4568 70.477 55.1794 66.6716 54.5634C64.4635 54.2084 59.8542 50.45 56.362 46.6081C62.8923 51.588 66.2487 51.4993 68.7596 51.2487C73.7969 50.7424 71.949 43.1472 71.949 39.6498C71.949 36.1524 73.1757 29.168 69.861 22.8936C74.9505 27.9883 73.9117 45.6006 73.9117 49.5313Z" fill="url(#paint8_linear)"/>
<path d="M10.7234 17.0679C10.8644 17.0261 11.0209 17 11.188 17C16.3454 17 41.2605 20.6801 47.0287 19.9441C52.7968 19.2081 64.7663 17.7987 69.861 22.8882C70.6336 23.6607 63.3569 18.2215 49.978 20.6801C39.8198 22.5437 24.8123 17.2453 8.20736 18.8844C8.8703 17.8978 9.69507 17.2245 10.7234 17.0679Z" fill="url(#paint9_linear)"/>
<path d="M64.7871 53.8015C59.8699 55.2213 48.2553 42.2861 48.2553 34.9206C48.2553 33.3233 52.9064 35.474 56.9728 35.474C60.1465 35.474 62.3128 33.386 64.5209 32.5299C65.9773 31.9661 61.8796 39.7752 65.1786 44.9587C67.5433 48.6702 63.4143 45.6008 62.5843 44.4994C61.7543 43.3927 58.3822 42.8446 58.3822 42.8446C58.3822 42.8446 59.1808 39.7126 56.9728 40.0832C54.7647 40.4539 52.922 40.3077 52.922 40.3077C52.922 40.3077 60.1831 51.7761 64.7871 53.8015Z" fill="url(#paint10_linear)"/>
<path d="M51.0481 37.2852C52.0294 35.3224 54.0861 38.0316 57.5157 36.9459C60.1413 36.1159 62.8871 33.2762 63.5709 34.3567C64.2547 35.4373 62.7096 38.538 62.7096 40.2293C62.7096 41.9153 64.6723 44.8333 65.1317 45.538C65.591 46.2427 63.4404 45.2353 62.339 44.0033C61.5403 43.1107 60.3501 42.145 59.8438 42.0772C59.3374 42.0093 59.635 39.3158 57.6566 39.3158C55.6834 39.3158 53.0421 39.1331 52.0033 39.7281C53.0369 42.2181 56.0749 47.0101 60.1361 50.6014C60.1518 50.6119 60.1622 50.6275 60.1779 50.638C60.4858 50.9094 60.7991 51.1704 61.1227 51.4262C61.1801 51.468 61.2323 51.5149 61.2845 51.5619C61.5716 51.7916 61.8692 52.0056 62.1667 52.2144C62.2502 52.2771 62.3337 52.3397 62.4225 52.4023C62.7096 52.6007 63.0019 52.7834 63.2942 52.9661C63.3934 53.0288 63.4874 53.0966 63.5865 53.154C63.9728 53.3837 64.3643 53.5925 64.7558 53.7909C64.7663 53.7961 64.7715 53.8013 64.7819 53.8013C65.1787 55.8215 65.1369 57.4397 64.8237 58.7603C64.3539 55.3099 59.7394 51.6559 56.3203 47.9653C52.8907 44.2487 50.0667 39.2479 51.0481 37.2852ZM59.5463 38.7259C61.3889 39.3419 60.6529 41.5499 60.6529 41.5499C60.6529 41.5499 64.1503 45.0473 64.7036 45.6007C64.7036 45.6007 61.8796 42.5313 61.8796 40.4433C61.8796 38.705 61.7282 36.3717 63.028 34.649C61.6551 35.9488 58.9773 38.1099 56.3568 38.1099C51.6901 38.1099 52.4888 37.3113 51.6901 38.1099C51.5492 38.2509 51.6275 38.7207 51.8833 39.3993C51.9407 39.3888 57.714 38.1151 59.5463 38.7259Z" fill="url(#paint11_linear)"/>
<path d="M51.878 39.3993C53.7311 39.227 55.5373 38.7886 57.3851 38.7103C58.283 38.6842 59.28 38.6111 60.0056 39.1018C60.7364 39.6081 60.799 40.6678 60.5589 41.5082V41.5134C60.5485 41.5499 60.5589 41.5917 60.585 41.6178L64.6201 45.6842C64.6671 45.7312 64.7454 45.7312 64.7976 45.6842C64.8446 45.6372 64.8446 45.5589 64.8028 45.5119C64.0772 44.6872 63.4143 43.7998 62.861 42.8549C62.2972 41.8997 61.9318 40.8922 62.031 39.7699C62.0257 38.6685 62.0623 37.5619 62.3807 36.5231C62.6783 35.4791 63.2994 34.5603 64.0929 33.8243L63.8423 33.579C62.8662 34.623 61.7752 35.5887 60.585 36.3821C59.4001 37.1651 58.069 37.8333 56.6596 37.9168C55.2293 37.9638 53.7833 37.9064 52.3583 37.6036C52.1495 37.5305 51.8363 37.708 51.7423 37.8385C51.6692 37.922 51.6222 37.9272 51.5335 38.0734C51.4448 38.2248 51.4709 38.324 51.4656 38.4336C51.5022 38.8407 51.6275 39.1853 51.758 39.535C52.0242 40.224 52.3583 40.8766 52.708 41.5186C54.1279 44.0712 55.8713 46.4307 57.8549 48.5709C59.8386 50.6902 62.1041 52.6529 64.7924 53.8065C62.2711 52.3554 60.0369 50.4971 58.069 48.3725C56.1115 46.2427 54.3836 43.8937 52.9899 41.3672C52.6454 40.7304 52.3217 40.0883 52.0659 39.4202C51.9407 39.0913 51.8258 38.7416 51.7997 38.4232C51.7945 38.2509 51.8049 38.2457 51.972 38.0891C52.1234 37.9586 52.1547 37.9116 52.3165 37.9429C53.7311 38.2509 55.2188 38.3188 56.6804 38.2718C58.189 38.183 59.5671 37.4888 60.7834 36.6953C62.0153 35.8862 63.1115 34.9048 64.1033 33.8191C64.166 33.746 64.166 33.6364 64.0929 33.5738C64.025 33.5111 63.9206 33.5163 63.8528 33.579C63.028 34.3567 62.3755 35.3433 62.0675 36.4448C61.7439 37.5358 61.7178 38.6789 61.7282 39.7856C61.7282 40.3232 61.723 40.9288 61.9161 41.4716C62.0884 42.0145 62.3337 42.5261 62.6208 43.0115C63.195 43.9773 63.8684 44.8647 64.6149 45.6999L64.7924 45.5276L60.726 41.4925L60.7521 41.5969L60.7573 41.5865C61.0287 40.7147 61.034 39.5298 60.1622 38.9034C59.3009 38.3396 58.2882 38.4492 57.3747 38.4701C56.4403 38.5223 55.5164 38.6424 54.5977 38.7886C53.6789 38.9191 52.7602 39.0861 51.878 39.3993Z" fill="#804B24"/>
<path d="M60.7677 41.0073L60.5693 41.5241L60.6163 41.4667C59.9534 41.6755 59.327 41.9835 58.7684 42.4063C58.2255 42.8187 57.6879 43.3772 57.5626 44.0767C57.9228 43.4868 58.4343 43.0744 58.9772 42.6882C59.5201 42.3071 60.0943 41.9574 60.679 41.6233L60.7051 41.6076C60.7207 41.5972 60.7312 41.5815 60.7312 41.5659L60.7677 41.0073Z" fill="#804B24"/>
<path d="M70.597 52.0475C74.7208 50.7269 73.2383 36.2726 72.9303 30.3218L73.0243 30.3897C74.4076 37.5359 73.9117 46.8118 73.9117 49.5315C73.9117 53.4569 70.4769 55.1795 66.6715 54.5636C65.2517 54.3339 62.8296 52.6843 60.3553 50.518C62.7513 51.9379 66.9273 53.222 70.597 52.0475Z" fill="url(#paint12_linear)"/>
<path d="M7.05898 36.1055C10.6138 37.28 14.6593 36.2725 17.3215 36.2725C20.6362 36.2725 28.7377 49.4061 32.7885 52.9661C36.8392 56.5262 48.1301 58.4889 53.5328 60.697C58.7894 62.8476 63.2055 61.7253 64.9125 58.3845C63.9311 63.7194 58.5179 64.1944 56.3569 63.1556C40.3784 55.4456 38.4365 58.1235 33.4044 54.3181C27.7825 50.0638 24.8123 42.6566 18.9189 40.4485C13.6571 38.4701 8.8912 39.8117 7.05898 36.1055Z" fill="url(#paint13_linear)"/>
<path d="M67.0735 37.0975C66.5672 32.8067 68.0967 26.4695 67.1362 21.0303C68.1645 21.5262 69.0989 22.1265 69.861 22.8938C74.9558 27.9886 73.9118 45.6009 73.9118 49.5316C73.9118 53.457 70.477 55.1796 66.6716 54.5637C65.6537 54.4019 64.1138 53.4936 62.4121 52.2095C72.4345 48.6703 67.9296 44.3429 67.0735 37.0975Z" fill="url(#paint14_linear)"/>
<path opacity="0.16" d="M31.8489 29.2354C28.7534 31.313 30.8049 37.4099 34.4015 43.2198C37.3404 47.97 43.5104 51.3683 46.4806 49.2646C49.4508 47.1609 51.7058 44.7493 44.8572 35.3637C40.8169 29.8253 34.8713 27.2048 31.8489 29.2354Z" fill="url(#paint15_radial)"/>
<path opacity="0.16" d="M10.8225 22.0478C10.311 24.2768 24.0918 26.5736 39.4596 28.1344C52.0242 29.4081 66.5933 28.7712 66.8856 26.5788C67.1779 24.3812 65.9303 22.3036 39.6632 20.1791C24.1858 18.9263 11.3184 19.8711 10.8225 22.0478Z" fill="url(#paint16_radial)"/>
<path opacity="0.16" d="M57.1607 43.9878C56.2524 45.1049 57.8706 47.2712 60.0474 49.1713C61.8274 50.7269 64.6671 51.4316 65.5232 50.3197C66.3793 49.2078 66.9221 48.0438 63.0019 45.0736C60.6999 43.3249 58.0481 42.8968 57.1607 43.9878Z" fill="url(#paint17_radial)"/>
<defs>
<linearGradient id="paint0_linear" x1="65.2671" y1="50.5825" x2="49.1153" y2="36.4204" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#FFCB4B"/>
<stop offset="1" stop-color="#FFD748"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="57.7337" y1="42.1538" x2="52.8852" y2="54.1217" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="55.039" y1="28.7801" x2="56.7882" y2="40.7481" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint3_linear" x1="70.5116" y1="-7.12923" x2="46.2075" y2="28.2222" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint4_linear" x1="33.145" y1="53.2493" x2="35.6" y2="41.4655" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint5_linear" x1="42.9768" y1="31.8806" x2="13.5173" y2="85.8284" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint6_linear" x1="50.77" y1="56.0975" x2="62.9221" y2="69.1702" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint7_linear" x1="36.4067" y1="42.7063" x2="25.2366" y2="100.766" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint8_linear" x1="61.2161" y1="10.4893" x2="74.9638" y2="119.858" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint9_linear" x1="38.4483" y1="27.2265" x2="42.4989" y2="-14.5078" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint10_linear" x1="42.7794" y1="24.7227" x2="109.309" y2="85.6058" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint11_linear" x1="31.6128" y1="27.9684" x2="77.8164" y2="54.278" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint12_linear" x1="60.0233" y1="-30.4889" x2="73.0346" y2="106.007" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint13_linear" x1="43.8023" y1="7.86253" x2="27.1499" y2="91.7652" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint14_linear" x1="60.5085" y1="37.3747" x2="101.384" y2="40.1979" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<radialGradient id="paint15_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(39.4263 39.0639) rotate(-126.156) scale(12.7303 6.65798)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint16_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(38.8762 24.1246) rotate(-175.382) scale(28.8709 4.04572)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint17_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(61.4249 47.0505) rotate(-142.868) scale(5.38479 2.57216)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
␍<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--noto" preserveAspectRatio="xMidYMid meet">
␍<path d="M69.19 71.88c-19.34-.75-25.48 11.45-32.74 16.57c-5.57 3.93-14.76 3.28-14.76 3.28c-6.98 1.2-11.57 5.04-11.57 11.94c0 6.55 3.53 12.91 12.93 12.91l63.22-2.2s2.58-41.74-17.08-42.5z" fill="#d3cac3">
␍</path>
␍<path d="M9.96 84.32l19.91-50.01l13.81 5.3s-4.6 24.51-5.13 30.6c-.53 6.09 5.13 20.37 3.95 32.98c-1.32 14.13-6.89 17.83-17.52 19.04c-7.44.85-15.83-2.52-18.16-6.79c-3.44-6.3-4.43-14.18 3.14-31.12z" fill="#90a4ae">
␍</path>
␍<path d="M28.43 37.83c.77-.05 1.92-.37 3.97 2.11c1.52 1.84 4.92 4.98 8.9 5.19c.69-3.36 1.19-5.71 1.19-5.71l-12.63-5.1l-1.43 3.51z" fill="#466b7d">
␍</path>
␍<linearGradient id="IconifyId17ecdb2904d178eab13600" gradientUnits="userSpaceOnUse" x1="42.234" y1="41.429" x2="-3.656" y2="163.116">
␍<stop offset=".308" stop-color="#d3cac3">
␍</stop>
␍<stop offset=".744" stop-color="#6d94a5">
␍</stop>
␍</linearGradient>
␍<path d="M14.13 98.73s15.13-45.62 21.08-62.25l-5.35-2.16l-19.9 50c-7.57 16.94-6.58 24.81-3.14 31.12c2.33 4.28 9.16 7.86 16.6 7.01c1.84-.21 3.48-.57 4.97-1.07c-5.3-8.63-14.26-22.65-14.26-22.65z" fill="url(#IconifyId17ecdb2904d178eab13600)">
␍</path>
␍<path d="M28.43 37.83c.77-.05 1.92-.37 3.97 2.11c1.52 1.84 6.11 5.86 10.09 6.07c.69-3.36 1.18-6.39 1.18-6.39l-13.81-5.3l-1.43 3.51z" fill="#466b7d">
␍</path>
␍<path d="M39.09 76.07s.06 5.87-4.94 10.17c-7.74 6.66-23.47 2.86-26.26 21.28c-.74 4.87-2.74 4.06-2.74 4.06s2.6 11.75 17.94 10.9c11.31-1.01 17.63-9.15 19.07-18.43c1.51-9.65-3.07-27.98-3.07-27.98z" fill="#466b7d">
␍</path>
␍<linearGradient id="IconifyId17ecdb2904d178eab13601" gradientUnits="userSpaceOnUse" x1="53.649" y1="100.495" x2="53.649" y2="122.038">
␍<stop offset=".292" stop-color="#d3cac3">
␍</stop>
␍<stop offset="1" stop-color="#6d94a5">
␍</stop>
␍</linearGradient>
␍<path d="M81.58 71.13c-25.26 0-32.72 7.64-38.7 13.78c-2.92 3-5.23 5.37-9.31 6.43c-3.6.94-9.18 2.09-10.8 2.42c-.02 0-.04.01-.06.01c-7.86 1.36-12.54 6.85-12.54 14.68c0 3.93 1.31 7.35 3.79 9.87c1.95 1.99 5.64 4.35 12.1 4.35h.1l68.95-2.27s6.21-33.08-3.09-44.41c-2.62-3.18-6.23-4.86-10.44-4.86z" fill="url(#IconifyId17ecdb2904d178eab13601)">
␍</path>
␍<path d="M76.08 80.35C58.7 77.27 51.93 86.21 42.5 93.56c-4.28 3.34-15.86 4.56-15.86 4.56c-6.98 1.2-11.57 5.04-11.57 11.94c0 7.18 3.53 12.56 12.93 12.56l63.22-2.2c0 .01 4.23-36.64-15.14-40.07z" fill="#90a4ae">
␍</path>
␍<path d="M70.82 88.15c.03-4.01-.08-7.17-.16-9.47v-.12c-.1-2.86-.46-5.05-.93-6.75c-.2.03-.41.05-.61.08c-4.25-.27-8.48.6-8.48.6s4.87 1.23 5.41 9.04c.18 2.59.25 3.26.19 7.5c-.47 34.51 27.89 31.43 27.89 31.43l.31-1.71c-16.92-3.08-23.76-11.94-23.62-30.6z" fill="#466b7d">
␍</path>
␍<circle cx="28.27" cy="110.96" r="7.42" fill="#466b7d">
␍</circle>
␍<circle cx="28.45" cy="109.74" r="6.55" fill="#a38e7a">
␍</circle>
␍<radialGradient id="IconifyId17ecdb2904d178eab13602" cx="26.668" cy="105.722" r="10.024" gradientUnits="userSpaceOnUse">
␍<stop offset="0" stop-color="#ffffff">
␍</stop>
␍<stop offset=".921" stop-color="#cdd7db" stop-opacity="0">
␍</stop>
␍</radialGradient>
␍<circle cx="28.45" cy="109.74" r="6.55" fill="url(#IconifyId17ecdb2904d178eab13602)">
␍</circle>
␍<circle cx="29.39" cy="110.16" r="5.39" fill="#c6b3a1">
␍</circle>
␍<path d="M121.79 88.89h.02c.01-17.13-14.62-28.3-31.06-27.66c-15.19.6-23.27 10.67-23.27 10.67s4.67 4.46 2.5 16.15l.02.02c-.08.32-.15.65-.22.98c-2.83 14.38 6.53 28.33 20.9 31.16c14.37 2.83 28.31-6.54 31.13-20.92c.7-3.55.66-7.07-.02-10.4z" fill="#90a4ae">
␍</path>
␍<linearGradient id="IconifyId17ecdb2904d178eab13603" gradientUnits="userSpaceOnUse" x1="67.478" y1="90.967" x2="123.505" y2="90.967">
␍<stop offset=".292" stop-color="#d3cac3">
␍</stop>
␍<stop offset="1" stop-color="#6d94a5">
␍</stop>
␍</linearGradient>
␍<path d="M121.79 88.89l1.71.17c-.45-16.8-16.31-28.47-32.75-27.83c-15.19.6-23.27 10.67-23.27 10.67s.83.66 1.19 7.76c.12 2.37.19 5.45.16 9.47c-.12 16.06 7.49 28.25 21.86 31.08c14.37 2.83 29.3-6.08 32.12-20.46c.69-3.55-.34-7.53-1.02-10.86z" fill="url(#IconifyId17ecdb2904d178eab13603)">
␍</path>
␍<circle cx="98.03" cy="92.75" r="25.74" fill="#90a4ae">
␍</circle>
␍<g>
␍<circle cx="100.55" cy="94.98" r="15.37" fill="#466b7d">
␍</circle>
␍<circle cx="101.06" cy="92.86" r="14.25" fill="#a38e7a">
␍</circle>
␍<radialGradient id="IconifyId17ecdb2904d178eab13604" cx="95.821" cy="81.892" r="20.256" gradientUnits="userSpaceOnUse">
␍<stop offset="0" stop-color="#ffffff">
␍</stop>
␍<stop offset=".921" stop-color="#cdd7db" stop-opacity="0">
␍</stop>
␍</radialGradient>
␍<circle cx="101.06" cy="92.86" r="14.25" fill="url(#IconifyId17ecdb2904d178eab13604)">
␍</circle>
␍<circle cx="102.82" cy="93.28" r="12.5" fill="#c6b3a1">
␍</circle>
␍</g>
␍<g>
␍<path d="M68.35 20.1l-8.67-4.53l-7.93 8.47l-.25 6.79l12.76 4.65s6.56-3.38 6.83-3.51s-.11-5.54-.11-5.54l-2.63-6.33z" fill="#212121">
␍</path>
␍<path d="M57.25 22.24c1.38-3.39 2.68-3.27 4.19-2.84c1.54.44 2.57 2.24 1.38 4.89l-2.05 6.11l6.88-2.1l2.88 2.99l1.65 3.62s-6.4 2.36-10.42 2.52s-6.23-3.14-6.23-3.14l-2.82-1.3c.01 0 4.12-9.7 4.54-10.75z" fill="#466b7d">
␍</path>
␍<path d="M64.23 13.41c.12-2.62.26-5.99.26-6.06l-.06-.02c-.4-.08-3.03-.59-6.42-.98c-3.92-.45-6.04.24-7.96 2.45L38.9 20.09c-3.13 3.9-.64 9.19-.64 9.19l14.1 2.44s8.82-11.54 11.13-14.57c.13-.63.42-2.11.74-3.74z" fill="#6d94a5">
␍</path>
␍<path d="M38.26 29.28s-2.48-5.29.64-9.19l11.16-11.3c1.91-2.21 4.04-2.9 7.96-2.45c3.68.43 6.47.99 6.47.99s-.35 8.92-.45 9.08c-.11.16-11.68 15.3-11.68 15.3l-14.1-2.43z" fill="#d3cac3">
␍</path>
␍<path fill="#90a4ae" d="M45.97 22.63l14.59-14.7l1.65 11.34l-8.8 11.13l-4.92-4.76z">
␍</path>
␍<path d="M68.4 11.42c-.81-2.65-1.68-3.47-3.91-4.08c-4.32-1.19-7.45 3.49-4.81 8.23c2.87 5.16 7 13.66 7 13.66l6.36 5.09c.92-.34 1.97-1.95 1.19-4.57L68.4 11.42z" fill="#90a4ae">
␍</path>
␍<path d="M67.33 9.54c-.12-.11-.03-.76-.95-1.42c-.56-.4-1.24-.61-1.9-.79c-4.32-1.19-7.45 3.49-4.81 8.23c2.34 4.21 6.89 13.56 6.89 13.56s.68 2.4 1.12 2.52c.54.14 1.11-.2 1.39-.68c.28-.48.08-.95.05-1.5c0 0-6.37-13.02-7-14.21s4.22-6.61 5.21-5.71z" fill="#466b7d">
␍</path>
␍<circle cx="64.55" cy="12.72" r="4.6" fill="#466b7d">
␍</circle>
␍<circle cx="64.94" cy="12.22" r="4.29" fill="#a38e7a">
␍</circle>
␍<radialGradient id="IconifyId17ecdb2904d178eab13605" cx="61.144" cy="5.681" r="6.568" gradientTransform="rotate(12.17 45.284 22.59)" gradientUnits="userSpaceOnUse">
␍<stop offset="0" stop-color="#ffffff">
␍</stop>
␍<stop offset=".921" stop-color="#cdd7db" stop-opacity="0">
␍</stop>
␍</radialGradient>
␍<circle cx="64.94" cy="12.22" r="4.29" fill="url(#IconifyId17ecdb2904d178eab13605)">
␍</circle>
␍<circle cx="65.7" cy="12.25" r="3.46" fill="#c6b3a1">
␍</circle>
␍<circle cx="70.66" cy="31.29" r="3.96" fill="#466b7d">
␍</circle>
␍<circle cx="70.86" cy="31.11" r="3.52" fill="#a38e7a">
␍</circle>
␍<radialGradient id="IconifyId17ecdb2904d178eab13606" cx="71.125" cy="23.363" r="5.386" gradientTransform="rotate(12.17 45.284 22.59)" gradientUnits="userSpaceOnUse">
␍<stop offset="0" stop-color="#ffffff">
␍</stop>
␍<stop offset=".921" stop-color="#cdd7db" stop-opacity="0">
␍</stop>
␍</radialGradient>
␍<circle cx="70.86" cy="31.11" r="3.52" fill="url(#IconifyId17ecdb2904d178eab13606)">
␍</circle>
␍<circle cx="71.58" cy="31.3" r="2.84" fill="#c6b3a1">
␍</circle>
␍<path d="M27.73 27.46c1.25-6.16 6.84-8.05 12.21-7.55c4.69.43 7.59 1.15 7.59 1.15c-.57 2.14-.59 17.32-1.83 19.16c-1.38 2.03-8.15.61-12.48-2.65c-2.57-1.93-4.07-1.47-4.07-1.47s-2.19-4.88-1.42-8.64z" fill="#d9c6b6">
␍</path>
␍<ellipse transform="rotate(-75.072 43.516 30.68)" cx="43.51" cy="30.68" rx="10.44" ry="9.86" fill="#90a4ae">
␍</ellipse>
␍<path d="M38.13 29.42c.8-3.18 4.02-5.63 8.01-4.38c3.17.99 18.86 6.8 18.86 6.8l.36 7.67s-18.16-.72-19.9-.92c-7.53-.87-8.14-5.95-7.33-9.17z" fill="#466b7d">
␍</path>
␍<path d="M67.91 36.95c.39-1.8-.69-3.56-2.42-4.08v-.03s-14.51-5.46-17.76-6.17a6.013 6.013 0 0 0-7.15 4.61a6.013 6.013 0 0 0 4.61 7.15c1.59.34 16.94 1.16 19.15 1.28c.04 0 .09.01.13.01c.09 0 .14.01.14.01v-.02c1.58-.08 2.95-1.17 3.3-2.76z" fill="#90a4ae">
␍</path>
␍<g>
␍<circle cx="47.29" cy="33.09" r="4.6" fill="#466b7d">
␍</circle>
␍<circle cx="47.68" cy="32.6" r="4.29" fill="#a38e7a">
␍</circle>
␍<radialGradient id="IconifyId17ecdb2904d178eab13607" cx="48.566" cy="29.233" r="6.568" gradientTransform="rotate(12.17 45.284 22.59)" gradientUnits="userSpaceOnUse">
␍<stop offset="0" stop-color="#ffffff">
␍</stop>
␍<stop offset=".921" stop-color="#cdd7db" stop-opacity="0">
␍</stop>
␍</radialGradient>
␍<circle cx="47.68" cy="32.6" r="4.29" fill="url(#IconifyId17ecdb2904d178eab13607)">
␍</circle>
␍<circle cx="48.42" cy="32.86" r="3.46" fill="#c6b3a1">
␍</circle>
␍</g>
␍</g>
␍</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

@@ -0,0 +1,23 @@
<?xml version="1.0" ?>
␍<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
␍<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 8.66 8.66" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
␍<defs>
␍<style type="text/css">
<![CDATA[
.fil0 {fill:none}
.fil1 {fill:#2554B0;fill-rule:nonzero}
.fil2 {fill:#479DFF;fill-rule:nonzero}
]]>
</style>
␍</defs>
␍<g id="Layer_x0020_1">
␍<rect class="fil0" height="8.66" width="8.66"/>
␍<path class="fil1" d="M2.8 4.55c-0.17,0 -0.33,-0.07 -0.45,-0.18 -0.11,-0.12 -0.19,-0.28 -0.19,-0.46 0,-0.17 0.08,-0.33 0.19,-0.45 0.12,-0.11 0.28,-0.18 0.45,-0.18 0.18,0 0.34,0.07 0.45,0.18 0.12,0.12 0.19,0.28 0.19,0.45 0,0.18 -0.07,0.34 -0.19,0.46 -0.11,0.11 -0.27,0.18 -0.45,0.18zm-0.25 -0.38c0.06,0.06 0.15,0.1 0.25,0.1 0.1,0 0.19,-0.04 0.26,-0.1 0.06,-0.07 0.1,-0.16 0.1,-0.26 0,-0.1 -0.04,-0.18 -0.1,-0.25 -0.07,-0.06 -0.16,-0.1 -0.26,-0.1 -0.1,0 -0.19,0.04 -0.25,0.1 -0.07,0.07 -0.11,0.15 -0.11,0.25 0,0.1 0.04,0.19 0.11,0.26z"/>
␍<path class="fil1" d="M2.8 5.76l-0.8 0c-0.08,0 -0.14,-0.06 -0.14,-0.14l0 -0.34c0,-0.29 0.25,-0.47 0.58,-0.55 0.12,-0.02 0.24,-0.04 0.36,-0.04 0.12,0 0.25,0.02 0.36,0.04 0.11,0.03 0.21,0.06 0.3,0.11 -0.11,0.05 -0.2,0.12 -0.26,0.19 -0.03,-0.01 -0.06,-0.02 -0.1,-0.03 -0.09,-0.02 -0.19,-0.03 -0.3,-0.03 -0.1,0 -0.2,0.01 -0.3,0.03 -0.2,0.05 -0.36,0.14 -0.36,0.28l0 0.2 1 0 0 0.14 0.61 0c0,0.08 -0.06,0.14 -0.14,0.14l-0.81 0z"/>
␍<path class="fil1" d="M5.85 4.55c-0.17,0 -0.33,-0.07 -0.45,-0.18 -0.11,-0.12 -0.18,-0.28 -0.18,-0.46 0,-0.17 0.07,-0.33 0.18,-0.45 0.12,-0.11 0.28,-0.18 0.45,-0.18 0.18,0 0.34,0.07 0.46,0.18 0.11,0.12 0.18,0.28 0.18,0.45 0,0.18 -0.07,0.34 -0.18,0.46 -0.12,0.11 -0.28,0.18 -0.46,0.18zm-0.25 -0.38c0.07,0.06 0.16,0.1 0.25,0.1 0.1,0 0.19,-0.04 0.26,-0.1 0.06,-0.07 0.1,-0.16 0.1,-0.26 0,-0.1 -0.04,-0.18 -0.1,-0.25 -0.07,-0.06 -0.16,-0.1 -0.26,-0.1 -0.09,0 -0.18,0.04 -0.25,0.1 -0.06,0.07 -0.1,0.15 -0.1,0.25 0,0.1 0.04,0.19 0.1,0.26z"/>
␍<path class="fil1" d="M5.85 5.76l-0.8 0c-0.08,0 -0.14,-0.06 -0.14,-0.14l0.6 0 0 -0.14 1.01 0 0 -0.2c0,-0.14 -0.16,-0.23 -0.37,-0.28 -0.09,-0.02 -0.19,-0.03 -0.3,-0.03 -0.1,0 -0.2,0.01 -0.29,0.03 -0.04,0.01 -0.07,0.02 -0.11,0.03 -0.05,-0.07 -0.14,-0.14 -0.25,-0.19 0.08,-0.05 0.19,-0.08 0.29,-0.11 0.12,-0.02 0.24,-0.04 0.36,-0.04 0.13,0 0.25,0.02 0.36,0.04 0.33,0.08 0.59,0.26 0.59,0.55l0 0.34c0,0.08 -0.06,0.14 -0.14,0.14l-0.81 0z"/>
␍<path class="fil2" d="M4.33 4.36c-0.2,0 -0.39,-0.08 -0.52,-0.21l0 0c-0.13,-0.14 -0.21,-0.32 -0.21,-0.52 0,-0.2 0.08,-0.39 0.21,-0.52l0 0c0.13,-0.13 0.32,-0.21 0.52,-0.21 0.2,0 0.38,0.08 0.52,0.21 0.13,0.13 0.21,0.32 0.21,0.52 0,0.2 -0.08,0.39 -0.21,0.52 -0.14,0.13 -0.32,0.21 -0.52,0.21zm-0.32 -0.41c0.08,0.08 0.19,0.13 0.32,0.13 0.12,0 0.24,-0.05 0.32,-0.13 0.08,-0.08 0.13,-0.2 0.13,-0.32 0,-0.13 -0.05,-0.24 -0.13,-0.32 -0.08,-0.08 -0.2,-0.13 -0.32,-0.13 -0.13,0 -0.24,0.05 -0.32,0.13l0 0c-0.08,0.08 -0.13,0.19 -0.13,0.32 0,0.12 0.05,0.24 0.13,0.32l0 0z"/>
␍<path class="fil2" d="M4.33 5.76l-1.19 0c-0.07,0 -0.14,-0.06 -0.14,-0.14l0 -0.4c0,-0.34 0.36,-0.55 0.82,-0.63 0.16,-0.03 0.34,-0.05 0.51,-0.05 0.17,0 0.35,0.02 0.51,0.05 0.46,0.08 0.81,0.29 0.81,0.63l0 0.4c0,0.08 -0.06,0.14 -0.14,0.14l-1.18 0zm-1.05 -0.28l2.09 0 0 -0.26c0,-0.18 -0.25,-0.3 -0.58,-0.36 -0.14,-0.02 -0.3,-0.04 -0.46,-0.04 -0.16,0 -0.32,0.02 -0.46,0.04 -0.33,0.06 -0.59,0.18 -0.59,0.36l0 0.26z"/>
␍</g>
␍</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M39.8084 8.00098C37.3296 8.00098 36.3871 9.98493 36.5803 13.8256C36.7075 16.3563 37.5605 23.4204 33.9837 26.9972C30.6472 30.3336 29.6764 30.0368 25.8781 34.344C22.0798 38.6513 18.913 37.7653 14.4785 37.3836C8.9083 36.9076 10.8075 67.8077 14.733 67.2704C17.5181 66.8887 23.8517 66.13 24.8649 66.13C25.8781 66.13 32.8244 71.5164 38.9224 71.5777C48.7999 71.6814 54.2475 69.933 54.2475 69.933L57.141 63.3685L58.1071 43.3449L53.4841 33.7125C53.4841 33.7125 47.2777 34.7257 45.5058 31.9406C43.7339 29.1555 46.9007 25.7342 46.9007 17.7559C46.9007 9.7776 41.076 8.00098 39.8084 8.00098Z" fill="url(#paint0_linear)"/>
<path d="M54.5916 69.8707L54.2146 68.4994C53.1024 68.3816 51.6698 68.8858 49.7141 68.8717C40.3739 68.801 31.4436 66.1195 27.6124 63.0847C25.1053 61.1007 24.0026 58.4523 22.2306 59.2157C20.044 60.1535 13.8376 61.6097 11.5568 58.7256C12.193 63.669 13.3334 67.4626 14.733 67.2694C17.5181 66.8877 23.8518 66.129 24.8649 66.129C25.8781 66.129 32.6312 71.3693 38.9224 71.5767C47.061 71.8406 54.29 70.441 54.29 70.441L54.5916 69.8707Z" fill="url(#paint1_linear)"/>
<path d="M45.5104 31.9398C43.7385 29.1547 46.9053 25.7334 46.9053 17.7551C46.9053 9.77681 41.0807 8.00488 39.813 8.00488C39.4784 8.00488 39.1815 8.04257 38.9176 8.11326C44.0825 8.43843 47.1975 14.9512 45.4162 21.6712C43.9694 27.1236 43.2531 31.4921 45.6094 34.0605C47.1363 35.7193 50.1711 35.4365 53.4935 33.7164C53.4887 33.7117 47.2823 34.7249 45.5104 31.9398Z" fill="url(#paint2_linear)"/>
<path d="M45.8546 34.7812C42.815 35.7944 35.1383 38.179 29.323 43.4523C14.587 56.8123 39.7472 58.49 44.9404 69.9132C45.9347 72.0998 51.7405 58.457 51.7405 58.457L53.6161 55.2996L48.192 40.8557L45.8546 34.7812Z" fill="url(#paint3_linear)"/>
<path d="M46.3022 35.9355C43.2626 36.9487 30.8451 44.9035 30.8451 48.829C30.8451 60.1626 39.4455 54.5689 44.092 67.9431C44.7376 69.7951 47.0091 71.3549 47.0091 71.3549C48.8941 69.8186 51.7452 58.452 51.7452 58.452L53.6208 55.2946L48.1966 40.8507L46.3022 35.9355Z" fill="url(#paint4_linear)"/>
<path d="M53.3191 70.6813L59.1391 64.0319L60.4209 36.2468L45.8591 34.7812C42.518 36.5814 42.1315 39.0414 43.3709 42.9905C43.894 44.654 41.7687 45.13 41.632 49.9697C41.5378 53.325 43.7338 53.3439 43.7338 54.3383C43.7338 55.3373 42.6405 55.2478 42.2776 58.1365C41.7592 62.2694 45.223 62.3495 45.223 63.2355C45.223 64.1215 43.3002 64.6446 43.4181 68.014C43.5689 72.2883 35.6282 71.4259 30.2607 67.5333C28.0552 65.9358 26.1325 65.7708 24.6339 66.1337C24.7282 66.129 24.8083 66.1243 24.8648 66.1243C25.878 66.1243 32.6829 71.44 38.9223 71.572C46.3021 71.7322 51.2644 71.1525 53.3191 70.6813Z" fill="url(#paint5_linear)"/>
<path d="M54.6575 36.6094C50.1618 36.6094 47.6924 41.0015 49.4031 44.3804C51.1137 47.7545 46.2363 52.222 46.7452 54.4227C47.2494 56.6235 48.1401 62.189 48.8329 63.1079C49.5303 64.0269 47.6924 66.1192 47.6924 66.1192L53.3899 66.8167L58.7103 64.4699L58.5218 48.386L59.092 38.3153L54.6575 36.6094Z" fill="url(#paint6_linear)"/>
<path d="M39.8083 8C37.3295 8 36.387 9.98396 36.5802 13.8247C36.7074 16.3553 37.5604 23.4194 33.9836 26.9962C30.6471 30.3327 29.6764 30.0358 25.8781 34.343C23.4087 37.1423 21.2079 37.7455 18.7574 37.7219C17.4332 37.7078 16.0336 37.5146 14.4832 37.3826C14.4832 38.344 14.7659 38.3204 18.437 39.3336C18.8564 39.4514 19.2569 39.5268 19.6434 39.5786C19.8319 40.1583 19.9356 40.7521 19.9073 41.3364C19.7753 44.5362 20.4775 48.4759 21.0147 44.376C21.2221 42.7879 21.8771 41.0065 22.8008 39.2063C24.191 38.6503 25.3173 37.6088 26.3163 36.393C28.1825 34.1263 29.7989 32.1187 34.4831 29.0791C39.1674 26.0396 38.5689 17.6795 38.1872 14.8944C37.8102 12.1046 38.0647 8 39.8083 8Z" fill="url(#paint7_linear)"/>
<path d="M58.06 33.5847C52.7442 33.3821 43.1872 33.0805 42.9751 38.6507C42.8196 42.6893 45.6849 44.0136 50.1146 44.1832C54.5444 44.3529 56.7593 44.4377 58.5925 44.5084C60.4256 44.579 66.1985 44.5414 66.255 39.6686C66.3304 33.5706 58.06 33.5847 58.06 33.5847Z" fill="url(#paint8_linear)"/>
<path d="M49.3182 53.717C47.895 53.6746 43.6631 54.7444 43.2673 57.4305C42.9563 59.5464 44.0354 62.275 47.7159 62.9206C52.3813 63.7359 60.1523 64.1647 63.0599 63.0761C64.3559 62.5907 65.4869 61.2335 65.5481 59.1741C65.6094 57.1148 64.0778 54.3438 60.7555 54.2448C57.4331 54.1506 55.6989 54.2024 53.8045 53.9762C51.5283 53.7076 50.4586 53.75 49.3182 53.717Z" fill="url(#paint9_linear)"/>
<path d="M47.8338 63.1074C46.2174 63.1074 44.224 64.5306 44.224 66.9057C44.224 69.2809 44.8413 71.0386 48.3098 71.7031C51.7782 72.3676 57.3343 71.7973 59.4219 71.1329C61.0477 70.6145 61.6556 69.0924 61.6556 66.5759C61.6556 64.0594 60.0864 63.6211 58.3804 63.6211C56.6745 63.6211 54.5963 63.9321 53.4087 63.8709C50.1005 63.6918 49.4502 63.1074 47.8338 63.1074Z" fill="url(#paint10_linear)"/>
<path d="M57.6075 34.71C52.9657 34.5309 44.6198 34.267 44.4549 38.6685C44.3323 41.8589 46.8394 42.9192 50.7084 43.0653C54.5774 43.2113 64.7517 43.3998 64.7847 39.545C64.8271 34.7241 57.6075 34.71 57.6075 34.71Z" fill="url(#paint11_linear)"/>
<path d="M49.7471 54.8525C48.5077 54.8148 45.0345 55.1117 44.7 57.68C44.4738 59.419 45.3738 61.648 48.5831 62.1805C52.6453 62.8544 59.4125 63.2173 61.9384 62.3313C63.0647 61.9355 64.0496 60.8233 64.0967 59.1409C64.1438 57.4538 62.5934 55.385 59.6999 55.3002C56.8064 55.2154 55.2702 55.484 53.6208 55.3002C51.6368 55.074 50.7367 54.8808 49.7471 54.8525Z" fill="url(#paint12_linear)"/>
<path d="M48.5265 63.9756C47.1316 63.9756 45.4021 65.1207 45.4021 67.034C45.4021 68.9473 45.9346 70.361 48.9365 70.8983C51.9384 71.4355 56.7404 70.9737 58.5501 70.4412C59.9591 70.0218 60.4822 68.7965 60.4822 66.7701C60.4822 64.7437 59.125 64.3903 57.65 64.3903C56.1749 64.3903 54.3748 64.64 53.3521 64.5929C50.4822 64.4468 49.9214 63.9756 48.5265 63.9756Z" fill="url(#paint13_linear)"/>
<path d="M18.1825 66.831C14.4454 65.224 10.9488 43.2165 17.8432 37.6887C16.7923 37.6227 15.6848 37.4861 14.4832 37.3824C8.91294 36.9064 10.8121 67.8065 14.7376 67.2692C15.6189 67.1514 16.863 66.9912 18.1825 66.831Z" fill="url(#paint14_linear)"/>
<path d="M47.6735 38.6692C47.7913 35.6343 50.2089 34.1829 53.2626 33.5137C48.3851 33.6268 43.1307 34.5363 42.9751 38.6503C42.8196 42.689 45.6849 44.0132 50.1146 44.1829C50.6 44.2017 51.0618 44.2205 51.5001 44.2347C49.0119 43.5042 47.551 41.8643 47.6735 38.6692Z" fill="url(#paint15_linear)"/>
<path opacity="0.16" d="M40.5341 65.9681C39.7848 67.6928 36.2127 67.8012 32.5558 66.2084C28.8989 64.6155 26.5426 61.9294 27.2966 60.2046C28.0459 58.4799 31.618 58.3714 35.2749 59.9643C38.9271 61.5571 41.2834 64.2433 40.5341 65.9681Z" fill="url(#paint16_radial)"/>
<path opacity="0.16" d="M62.042 39.4842C62.0043 41.8122 58.8893 42.9196 55.4775 43.127C52.6876 43.2966 49.5962 41.3221 49.6763 39.0459C49.7564 36.7698 50.1617 34.7528 55.9534 34.9555C59.37 35.0686 62.0797 37.2033 62.042 39.4842Z" fill="url(#paint17_radial)"/>
<path opacity="0.16" d="M62.664 59.9654C62.6452 63.1935 59.0967 62.5715 55.6895 62.7977C51.3681 63.0804 48.5029 61.7373 48.4982 59.4612C48.4935 57.185 50.1381 55.5262 55.9346 55.5168C59.3511 55.5074 62.6876 55.8184 62.664 59.9654Z" fill="url(#paint18_radial)"/>
<path opacity="0.16" d="M59.535 68.0993C59.5161 70.8514 56.2927 71.2237 53.239 71.2284C50.1853 71.2331 46.8677 69.612 46.8677 67.6704C46.8677 65.7289 48.3333 64.3151 53.5171 64.3057C56.5755 64.301 59.5585 64.5649 59.535 68.0993Z" fill="url(#paint19_radial)"/>
<path d="M47.2305 58.0806C47.7159 54.4096 50.534 54.6216 53.7668 54.2399C50.0486 53.9619 48.4888 53.9195 48.4888 53.9195C48.1401 53.8865 47.7536 53.8818 47.3484 53.9242C46.1419 54.1881 44.7706 54.7394 43.96 55.7715C43.682 56.1626 43.4605 56.6292 43.3144 57.1758C43.3003 57.256 43.2862 57.336 43.272 57.4209C43.0081 59.5415 44.0402 62.2653 47.7206 62.911C48.2532 63.0052 48.8234 63.0901 49.4266 63.1749C49.714 63.2126 50.0251 63.2503 50.3644 63.2927C50.4539 63.3021 50.5434 63.3163 50.6377 63.3257C48.5972 62.3691 46.8724 60.7809 47.2305 58.0806Z" fill="url(#paint20_linear)"/>
<path opacity="0.5" d="M51.3257 63.6682C49.7046 63.4326 49.0354 63.1074 47.8384 63.1074C46.222 63.1074 44.2286 64.5306 44.2286 66.9057C44.2286 67.7681 44.3088 68.5504 44.5821 69.2243C44.8554 69.7851 45.2513 70.3082 45.7979 70.7465C46.3964 71.1659 47.2117 71.4863 48.3144 71.6984C49.0543 71.8397 49.8931 71.9246 50.7696 71.967C49.0731 70.9821 46.2032 70.4543 46.8064 67.1602C47.4709 63.5268 49.6386 64.017 51.3257 63.6682Z" fill="url(#paint21_linear)"/>
<path d="M47.7631 63.1074C46.1608 63.1498 44.224 64.5636 44.224 66.9057C44.224 69.0829 44.7424 70.737 47.4992 71.5099C43.2014 68.7483 44.5822 64.0876 47.7631 63.1074Z" fill="url(#paint22_linear)"/>
<path d="M66.2598 39.6628C66.2645 39.1162 66.2032 38.6213 66.0901 38.1689C66.519 40.0728 64.8225 41.9625 60.3267 42.8815C57.3484 43.4894 49.436 44.2481 43.9601 42.0757C45.1429 43.5035 47.3154 44.0738 50.1194 44.1822C54.5491 44.3518 56.764 44.4366 58.5972 44.5073C60.4304 44.5733 66.2032 44.5403 66.2598 39.6628Z" fill="url(#paint23_linear)"/>
<path d="M65.5482 59.0463C65.5434 57.0011 64.0072 54.3432 60.7555 54.249C57.4332 54.1547 55.699 54.2066 53.8045 53.9804C51.5284 53.7117 50.4586 53.7542 49.3182 53.7212C48.4558 53.6976 46.3352 53.9568 44.8884 54.8522C46.5143 55.4177 49.158 56.2612 52.8809 56.0256C61.8064 55.446 64.3465 56.5251 65.5482 59.0463Z" fill="url(#paint24_linear)"/>
<path d="M47.405 44.5032C45.5058 44.4655 42.4898 45.5824 42.4097 49.5268C42.3296 53.4664 45.7792 54.409 47.3013 54.4372C48.8235 54.4655 54.1345 54.8284 60.6849 54.9604C67.2353 55.0923 68.1165 51.5767 68.1542 49.7341C68.1919 47.8915 67.0232 44.5598 63.0836 44.4797C51.684 44.2488 47.405 44.5032 47.405 44.5032Z" fill="url(#paint25_linear)"/>
<path d="M48.4228 45.6434C46.7734 45.6104 44.1533 46.4681 44.092 49.5077C44.0307 52.5473 47.0326 53.2824 48.3521 53.306C49.6716 53.3342 53.7998 53.9705 59.9874 53.7348C65.6801 53.5181 66.4388 51.1382 66.4671 49.715C66.4954 48.2918 66.2974 45.7188 62.8714 45.6528C52.9704 45.4596 48.4228 45.6434 48.4228 45.6434Z" fill="url(#paint26_linear)"/>
<path d="M46.486 49.1454C46.6745 45.0973 49.5021 45.0879 52.6924 44.3857C48.9648 44.4093 47.405 44.5036 47.405 44.5036C45.5058 44.4659 42.4898 45.5827 42.4097 49.5271C42.3296 53.4668 45.7792 54.4093 47.3013 54.4376C47.848 54.447 48.8894 54.5036 50.3032 54.5742C48.2014 53.7024 46.3494 52.1237 46.486 49.1454Z" fill="url(#paint27_linear)"/>
<path opacity="0.16" d="M64.8177 49.5649C64.9496 52.7883 61.3681 53.3961 57.9562 53.5564C54.5444 53.7213 50.7508 51.9965 50.6424 49.7204C50.534 47.4442 52.0986 45.71 57.8856 45.432C61.2974 45.267 64.648 45.4226 64.8177 49.5649Z" fill="url(#paint28_radial)"/>
<path opacity="0.5" d="M68.1448 49.334C67.3201 55.1681 51.9007 54.0984 43.569 52.8448C44.6953 54.0512 46.3682 54.4141 47.306 54.433C48.8234 54.4612 54.1392 54.8241 60.6896 54.956C67.24 55.088 68.1213 51.5725 68.159 49.7299C68.1542 49.6026 68.1542 49.4706 68.1448 49.334Z" fill="url(#paint29_linear)"/>
<path opacity="0.5" d="M60.4162 62.3216C57.4284 62.4536 49.5255 63.4338 43.7621 60.3471C44.403 61.5393 45.6518 62.5573 47.7112 62.9154C52.3766 63.7307 60.1476 64.1595 63.0552 63.0709C64.3511 62.5855 65.4821 61.2283 65.5434 59.1689C65.3549 60.9644 63.649 62.1802 60.4162 62.3216Z" fill="url(#paint30_linear)"/>
<path d="M61.4247 68.8008C59.469 70.2899 56.0854 71.1712 51.2032 70.3465C48.1872 69.8376 46.1231 69.6632 44.7659 69.6255C45.3078 70.6057 46.3587 71.3267 48.3097 71.7037C51.7781 72.3682 57.3342 71.798 59.4218 71.1335C60.4963 70.7942 61.1231 70.0119 61.4247 68.8008Z" fill="url(#paint31_linear)"/>
<path d="M44.865 64.7709C48.4795 63.4561 50.2561 65.4071 54.1251 65.4071C58.1449 65.4071 60.0582 63.7861 61.4861 65.3271C61.0384 63.9039 59.7566 63.6164 58.3805 63.6164C56.6699 63.6164 54.5964 63.9274 53.4088 63.8662C50.1006 63.6918 49.4503 63.1074 47.8386 63.1074C46.7924 63.1074 45.586 63.7059 44.865 64.7709Z" fill="url(#paint32_linear)"/>
<path d="M14.7329 67.269C17.518 66.8872 23.8517 66.1286 24.8649 66.1286C15.6802 59.564 19.7659 45.6008 23.1542 38.5367C23.6302 37.5471 23.9224 36.7318 24.0826 36.0391C21.0242 38.3718 18.2014 37.6978 14.4832 37.3774C8.91296 36.9061 10.8074 67.8062 14.7329 67.269Z" fill="url(#paint33_linear)"/>
<path d="M20.5247 60.9269C19.5727 59.6592 20.3974 62.383 21.1561 64.3481C21.8018 66.0164 16.8489 65.0315 13.0553 65.4415C13.5501 66.6667 14.1156 67.3548 14.733 67.2747C17.5181 66.8929 23.8517 66.1342 24.8649 66.1342C23.437 64.9184 21.4766 62.1945 20.5247 60.9269Z" fill="url(#paint34_linear)"/>
<path d="M24.865 66.1339C24.078 65.4647 23.126 64.3337 22.2731 63.2451C22.2731 63.2451 17.6642 65.6061 12.7161 64.4939C13.2863 66.2988 13.9696 67.378 14.733 67.2743C17.5181 66.8926 23.8518 66.1339 24.865 66.1339Z" fill="url(#paint35_linear)"/>
<path opacity="0.16" d="M42.7632 19.6175C40.9583 20.0086 39.4974 17.5157 38.668 14.6033C37.9941 12.2235 38.9083 9.19333 40.685 8.85403C42.4616 8.51473 44.0921 8.4959 45.0723 13.5383C45.6473 16.5119 44.5304 19.2358 42.7632 19.6175Z" fill="url(#paint36_radial)"/>
<path d="M47.8008 63.0946C46.8064 63.1983 45.9063 63.7308 45.289 64.4612C44.6622 65.2011 44.3701 66.1625 44.4313 67.1332C44.436 68.1087 44.5821 69.1031 45.1382 69.8948C45.6849 70.6912 46.6085 71.1672 47.5369 71.5018C46.5802 71.285 45.5765 70.8891 44.9356 70.0503C44.2852 69.2209 44.1344 68.137 44.1014 67.1474C44.059 66.1295 44.3842 65.0503 45.1005 64.301C45.7932 63.5376 46.797 63.071 47.8008 63.0946Z" fill="#804B24"/>
<path d="M46.2079 54.2578C45.5528 54.5406 44.9496 54.9317 44.4548 55.4124C43.9459 55.8883 43.6772 56.5434 43.4887 57.2078V57.1984C43.2484 58.4096 43.451 59.6961 44.1626 60.6999C44.8554 61.7178 45.9817 62.3869 47.1787 62.7734C45.944 62.5377 44.7046 61.9345 43.927 60.8648C43.5406 60.337 43.272 59.7243 43.1447 59.0787C43.0128 58.4331 43.074 57.7639 43.1966 57.1371L43.2013 57.1278C43.3945 56.4303 43.7432 55.7328 44.3134 55.2616C44.8601 54.7762 45.534 54.4746 46.2079 54.2578Z" fill="#804B24"/>
<path d="M47.0891 44.4902C45.9157 44.6222 44.78 45.1123 43.9694 45.9323C43.1589 46.7522 42.7206 47.8833 42.6499 49.0378C42.5321 50.1877 42.7159 51.3847 43.3757 52.3366C44.0213 53.2932 45.0816 53.9341 46.2173 54.264C45.058 54.0519 43.9035 53.4817 43.1683 52.4827C42.419 51.493 42.2211 50.2018 42.3201 49.0048C42.419 47.8031 42.8903 46.5779 43.7951 45.7437C44.6857 44.9096 45.9063 44.5044 47.0891 44.4902Z" fill="#804B24"/>
<path d="M48.1259 34.042C46.8724 34.386 45.6236 34.862 44.6339 35.6725C43.6349 36.4831 43.0929 37.7319 43.1778 39.0137C43.1636 40.2861 43.5783 41.582 44.5444 42.4303C45.4963 43.2833 46.7828 43.6979 48.0552 43.9666C46.7687 43.8158 45.4256 43.4906 44.3794 42.6235C43.305 41.7658 42.8526 40.3379 42.8479 39.0184C42.7772 37.68 43.3804 36.2757 44.4737 35.4746C45.5482 34.6594 46.8441 34.2682 48.1259 34.042Z" fill="#804B24"/>
<path d="M43.8044 60.3291C44.6668 61.8277 46.3304 62.6006 47.9703 62.822C49.6386 63.0812 51.3209 63.2556 53.008 63.364C54.6904 63.5054 56.3822 63.5949 58.0693 63.5902C58.9128 63.5808 59.7611 63.5572 60.5999 63.4771C61.4387 63.4111 62.287 63.3216 63.0928 63.0577C61.4953 63.6562 59.7611 63.7551 58.074 63.8117C56.3775 63.8541 54.6762 63.8069 52.9797 63.6986C51.2879 63.5525 49.6009 63.3404 47.9279 63.0435C47.0891 62.9069 46.2502 62.643 45.5104 62.1953C44.7847 61.7429 44.1814 61.0878 43.8044 60.3291Z" fill="#804B24"/>
<path d="M43.6019 52.8262C44.2475 53.4718 45.0817 53.896 45.9535 54.1127C46.8206 54.3719 47.7301 54.3153 48.6443 54.3577L54.1062 54.5133L59.568 54.7819C61.3776 54.8903 63.2249 54.9186 64.9591 54.3248C63.2673 55.0458 61.3682 55.1023 59.5633 55.0034L54.1014 54.8432L48.6396 54.5745C47.7395 54.5133 46.797 54.5557 45.9111 54.2682C45.0298 53.9949 44.2098 53.5095 43.6019 52.8262Z" fill="#804B24"/>
<path d="M63.1164 44.4563C61.8111 44.461 60.501 44.4987 59.1956 44.4845L55.2748 44.494L51.3587 44.5458C50.0533 44.5553 48.7479 44.5599 47.4473 44.6118H47.4378C46.1513 44.5929 44.8224 45.0312 43.894 45.9502C42.9515 46.8597 42.5038 48.1839 42.4473 49.5034C42.4567 48.8436 42.5274 48.1745 42.73 47.5336C42.9374 46.8974 43.2861 46.2989 43.7621 45.8182C44.714 44.8427 46.0853 44.3573 47.4378 44.3526H47.4284C50.0439 44.1971 52.6593 44.1924 55.2748 44.2348C57.8949 44.2631 60.5057 44.3149 63.1164 44.4563Z" fill="#804B24"/>
<defs>
<linearGradient id="paint0_linear" x1="53.6922" y1="39.2638" x2="34.6401" y2="40.0287" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="22.0707" y1="92.0009" x2="33.0889" y2="64.2654" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="58.1908" y1="6.77171" x2="19.3105" y2="52.6175" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint3_linear" x1="87.7653" y1="51.9804" x2="21.6561" y2="52.7403" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint4_linear" x1="75.9638" y1="52.8746" x2="18.4032" y2="54.3944" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint5_linear" x1="16.5626" y1="50.9121" x2="112.307" y2="59.3658" gradientUnits="userSpaceOnUse">
<stop stop-color="#473226" stop-opacity="0"/>
<stop offset="1" stop-color="#3D2A20"/>
</linearGradient>
<linearGradient id="paint6_linear" x1="45.0348" y1="52.866" x2="58.1857" y2="51.1381" gradientUnits="userSpaceOnUse">
<stop stop-color="#643800" stop-opacity="0"/>
<stop offset="1" stop-color="#643800"/>
</linearGradient>
<linearGradient id="paint7_linear" x1="3.01749" y1="14.6139" x2="49.3699" y2="35.8905" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint8_linear" x1="54.626" y1="42.1771" x2="54.5627" y2="26.188" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint9_linear" x1="71.7609" y1="60.1868" x2="51.4818" y2="58.4296" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint10_linear" x1="70.0569" y1="67.9283" x2="52.1049" y2="67.5959" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint11_linear" x1="51.9444" y1="48.9743" x2="56.187" y2="33.2702" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint12_linear" x1="51.1065" y1="68.7643" x2="55.6025" y2="54.8966" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint13_linear" x1="49.1003" y1="84.0535" x2="53.7545" y2="63.6318" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint14_linear" x1="20.4093" y1="47.1771" x2="3.59711" y2="65.6991" gradientUnits="userSpaceOnUse">
<stop offset="0.3105" stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint15_linear" x1="52.9172" y1="38.7408" x2="39.3344" y2="40.2606" gradientUnits="userSpaceOnUse">
<stop offset="0.3131" stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<radialGradient id="paint16_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(33.9456 63.0875) rotate(7.56189) scale(5.64393 2.68239)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint17_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(55.8996 39.0561) rotate(2.02657) scale(6.34898 4.1659)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint18_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(55.5702 59.5059) rotate(-0.0543808) scale(6.81944 3.67442)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint19_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(53.2376 67.7656) rotate(-0.053942) scale(6.24297 3.90581)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<linearGradient id="paint20_linear" x1="51.0354" y1="58.595" x2="34.6031" y2="58.7849" gradientUnits="userSpaceOnUse">
<stop stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<linearGradient id="paint21_linear" x1="62.6247" y1="65.9636" x2="37.1689" y2="68.9557" gradientUnits="userSpaceOnUse">
<stop offset="0.3131" stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<linearGradient id="paint22_linear" x1="49.7849" y1="62.8705" x2="38.1018" y2="79.9676" gradientUnits="userSpaceOnUse">
<stop stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#99643E"/>
</linearGradient>
<linearGradient id="paint23_linear" x1="54.5524" y1="37.8328" x2="56.9586" y2="49.4843" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint24_linear" x1="58.7661" y1="48.2896" x2="51.9905" y2="64.817" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint25_linear" x1="73.0179" y1="52.6491" x2="56.1106" y2="49.6096" gradientUnits="userSpaceOnUse">
<stop offset="0.00132565" stop-color="#BE8D68"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint26_linear" x1="51.8423" y1="63.0415" x2="57.1614" y2="42.2082" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint27_linear" x1="49.4319" y1="49.4788" x2="38.7518" y2="49.4788" gradientUnits="userSpaceOnUse">
<stop offset="0.2173" stop-color="#8D562E" stop-opacity="0"/>
<stop offset="1" stop-color="#8D562E"/>
</linearGradient>
<radialGradient id="paint28_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(57.6501 49.5032) rotate(-2.73364) scale(7.24677 4.75256)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
<linearGradient id="paint29_linear" x1="55.438" y1="48.4384" x2="57.4644" y2="61.3246" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint30_linear" x1="54.8092" y1="57.4575" x2="54.1918" y2="66.861" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint31_linear" x1="52.9974" y1="68.2932" x2="53.7573" y2="75.4171" gradientUnits="userSpaceOnUse">
<stop stop-color="#A46C3F" stop-opacity="0"/>
<stop offset="1" stop-color="#804B24"/>
</linearGradient>
<linearGradient id="paint32_linear" x1="53.1769" y1="67.2117" x2="53.1769" y2="62.0586" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#A46C3F"/>
</linearGradient>
<linearGradient id="paint33_linear" x1="18.3689" y1="52.9858" x2="2.22158" y2="77.3968" gradientUnits="userSpaceOnUse">
<stop offset="0.3105" stop-color="#D2A374" stop-opacity="0"/>
<stop offset="1" stop-color="#B88653"/>
</linearGradient>
<linearGradient id="paint34_linear" x1="18.2287" y1="56.3489" x2="20.1284" y2="80.855" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<linearGradient id="paint35_linear" x1="18.0974" y1="56.3588" x2="19.9971" y2="80.8648" gradientUnits="userSpaceOnUse">
<stop stop-color="#B37E53"/>
<stop offset="1" stop-color="#CD9870"/>
</linearGradient>
<radialGradient id="paint36_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(41.8352 14.2213) rotate(79.0615) scale(5.24755 3.18567)">
<stop stop-color="#F8DBBA"/>
<stop offset="1" stop-color="#CD9870" stop-opacity="0"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

+20
View File
@@ -0,0 +1,20 @@
// place files you want to import through the `$lib` alias in this folder.
import Navigation from './Navigation/Navigation.svelte';
import Hero from './Hero/Hero.svelte';
import Body from './Body/Body.svelte';
import Pricing from './Pricing/Pricing.svelte';
import Faq from './Faq/Faq.svelte';
import Footer from './Footer/Footer.svelte';
import StudentDashboard from './StudentDashboard/StudentDashboard.svelte';
import MoreFeatures from './MoreFeatures/MoreFeatures.svelte';
export {
Body,
Faq,
Footer,
Hero,
MoreFeatures,
Navigation,
Pricing,
StudentDashboard,
};
@@ -0,0 +1,9 @@
import { PostHog } from 'posthog-node';
export const client = new PostHog(
'phc_JfdHOZ6v0cVlGELBYx1Tmoen2nxNOrAzvgvrPA6Ksov',
{ host: 'https://app.posthog.com' }
);
await client.shutdownAsync();
@@ -0,0 +1,11 @@
<script>
import { Footer, Navigation } from '$lib';
import '../app.css';
</script>
<div class="overflow-hidden">
<Navigation />
<slot />
<Footer />
</div>
@@ -0,0 +1,23 @@
<script>
import {
Body,
Faq,
Hero,
Pricing,
StudentDashboard,
MoreFeatures,
} from '$lib';
import { PUBLIC_ENABLE_PRICING, PUBLIC_ENABLE_FAQ } from '$env/static/public';
</script>
<Hero />
<Body />
<StudentDashboard />
<MoreFeatures />
{#if PUBLIC_ENABLE_PRICING}
<Pricing />
{/if}
{#if PUBLIC_ENABLE_FAQ}
<Faq />
{/if}
@@ -0,0 +1,12 @@
import { redirect } from '@sveltejs/kit';
import { client } from '$lib/utils/posthog';
export const load = ({ request }) => {
client.capture({
distinctId:
request.headers.get('x-forwarded-for') || new Date().getTime().toString(),
event: 'cal.com page visited',
});
throw redirect(301, 'https://cal.com/classroomio/demo');
};
@@ -0,0 +1,12 @@
import { redirect } from '@sveltejs/kit';
import { client } from '$lib/utils/posthog';
export const load = ({ request }) => {
client.capture({
distinctId:
request.headers.get('x-forwarded-for') || new Date().getTime().toString(),
event: 'discord page visited',
});
throw redirect(301, 'https://discord.gg/NJqaZNuD');
};
@@ -0,0 +1,12 @@
import { redirect } from '@sveltejs/kit';
import { client } from '$lib/utils/posthog';
export const load = async ({ request }) => {
client.capture({
distinctId:
request.headers.get('x-forwarded-for') || new Date().getTime().toString(),
event: 'github page visited',
});
throw redirect(301, 'https://github.com/rotimi-best/classroomio');
};
@@ -0,0 +1,15 @@
import { redirect } from '@sveltejs/kit';
import { client } from '$lib/utils/posthog';
export const load = async ({ request }) => {
client.capture({
distinctId:
request.headers.get('x-forwarded-for') || new Date().getTime().toString(),
event: 'privacy page visited',
});
throw redirect(
301,
'https://app.enzuzo.com/policies/privacy/958fc978-5477-11ee-a03b-7b111830c594'
);
};
@@ -0,0 +1,15 @@
import { redirect } from '@sveltejs/kit';
import { client } from '$lib/utils/posthog';
export const load = async ({ request }) => {
client.capture({
distinctId:
request.headers.get('x-forwarded-for') || new Date().getTime().toString(),
event: 'privacy page visited',
});
throw redirect(
301,
'https://app.enzuzo.com/policies/tos/958fc978-5477-11ee-a03b-7b111830c594'
);
};
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 903 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="285px" height="38px" viewBox="0 0 285 38" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 100.777344 37.621094 L 97.121094 31.285156 C 98.832031 28.007812 98.832031 24.144531 98.832031 19.0625 C 98.832031 12.730469 98.832031 7.980469 95.175781 4.132812 C 92.625 1.347656 88.972656 -0.164062 85.199219 0 C 81.441406 -0.0820312 77.820312 1.417969 75.222656 4.132812 C 71.566406 7.804688 71.566406 12.460938 71.566406 19 C 71.566406 25.539062 71.375 30.082031 75.222656 33.914062 C 76.5 35.277344 78.046875 36.359375 79.769531 37.082031 C 81.488281 37.785156 83.339844 38.117188 85.199219 38.046875 C 86.238281 38.03125 87.273438 37.90625 88.285156 37.667969 Z M 80.417969 29.464844 C 79.085938 27.882812 78.707031 26.171875 78.707031 19 C 78.707031 11.828125 79.167969 10.070312 80.417969 8.535156 C 81.027344 7.925781 81.746094 7.441406 82.539062 7.109375 C 83.324219 6.773438 84.171875 6.601562 85.023438 6.601562 C 85.882812 6.605469 86.734375 6.777344 87.527344 7.109375 C 88.3125 7.441406 89.03125 7.925781 89.632812 8.535156 C 90.960938 10.117188 91.34375 11.828125 91.34375 19 C 91.34375 26.171875 90.960938 27.914062 89.632812 29.464844 C 89.042969 30.089844 88.332031 30.585938 87.542969 30.921875 C 86.742188 31.238281 85.886719 31.394531 85.023438 31.382812 C 84.167969 31.398438 83.316406 31.238281 82.523438 30.90625 C 81.730469 30.574219 81.015625 30.085938 80.417969 29.464844 Z M 80.417969 29.464844 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 184.980469 0.378906 L 192.058594 0.378906 L 192.058594 37.621094 L 184.980469 37.621094 Z M 184.980469 0.378906 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 13.441406 38 C 7.917969 38 3.671875 36.84375 0 33.15625 L 4.609375 28.5 C 7.011719 30.691406 10.191406 31.832031 13.441406 31.667969 C 17.671875 31.667969 19.964844 30.082031 19.964844 27.011719 C 19.988281 26.441406 19.894531 25.871094 19.695312 25.332031 C 19.503906 24.800781 19.203125 24.316406 18.808594 23.910156 C 17.894531 23.121094 16.753906 22.644531 15.546875 22.546875 L 11.082031 21.929688 C 8.433594 21.703125 5.9375 20.585938 4.003906 18.761719 C 3.117188 17.777344 2.429688 16.625 1.980469 15.375 C 1.507812 14.105469 1.296875 12.753906 1.363281 11.398438 C 1.328125 4.84375 6.128906 0.191406 14.25 0.191406 C 19.238281 0.191406 23.085938 1.328125 26.171875 4.449219 L 21.515625 8.929688 C 19.488281 7.054688 16.765625 6.109375 14.011719 6.332031 C 10.164062 6.332031 8.265625 8.488281 8.265625 11.082031 C 8.296875 12.089844 8.703125 13.050781 9.40625 13.773438 C 10.398438 14.601562 11.597656 15.148438 12.871094 15.359375 L 17.289062 15.929688 C 19.929688 16 22.449219 17.042969 24.367188 18.859375 C 25.351562 19.921875 26.113281 21.171875 26.617188 22.53125 C 27.105469 23.90625 27.328125 25.363281 27.265625 26.820312 C 27.265625 33.960938 21.136719 38.046875 13.425781 38.046875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 37.605469 37.621094 L 37.605469 0.378906 L 61.972656 0.378906 L 61.972656 6.714844 L 44.871094 6.714844 L 44.871094 15.5 L 59.4375 15.5 L 59.4375 22.167969 L 44.886719 22.167969 L 44.886719 31.300781 L 61.988281 31.300781 L 61.988281 37.636719 L 37.605469 37.636719 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 123.199219 38 C 115.695312 38 109.566406 32.773438 109.566406 24.828125 L 109.566406 0.378906 L 116.898438 0.378906 L 116.898438 24.605469 C 116.898438 28.878906 119.414062 31.382812 123.230469 31.382812 C 127.046875 31.382812 129.5625 28.832031 129.5625 24.605469 L 129.5625 0.378906 L 136.640625 0.378906 L 136.640625 24.796875 C 136.640625 32.710938 130.75 37.96875 123.246094 37.96875 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 170.777344 33.914062 C 168.222656 36.691406 164.574219 38.199219 160.804688 38.03125 C 157.050781 38.132812 153.429688 36.636719 150.84375 33.914062 C 147.25 30.226562 147.25 25.570312 147.25 19 C 147.25 12.429688 147.058594 7.917969 150.921875 4.085938 C 153.453125 1.332031 157.070312 -0.164062 160.804688 0 C 164.550781 -0.0507812 168.15625 1.4375 170.777344 4.117188 C 174.4375 7.804688 174.4375 12.460938 174.4375 19.03125 C 174.4375 25.601562 174.4375 30.082031 170.777344 33.914062 Z M 165.410156 8.582031 C 164.195312 7.355469 162.539062 6.664062 160.8125 6.664062 C 159.082031 6.664062 157.429688 7.355469 156.210938 8.582031 C 154.867188 10.164062 154.5 11.875 154.5 19.046875 C 154.5 26.21875 154.867188 27.960938 156.210938 29.496094 C 157.421875 30.734375 159.082031 31.429688 160.8125 31.429688 C 162.542969 31.429688 164.199219 30.734375 165.410156 29.496094 C 166.742188 27.914062 167.121094 26.21875 167.121094 19.046875 C 167.121094 11.875 166.789062 10.070312 165.410156 8.535156 Z M 165.410156 8.582031 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 226.066406 37.621094 L 223.960938 31.035156 L 210.898438 31.035156 L 208.621094 37.621094 L 201.082031 37.621094 L 214.574219 0.378906 L 220.082031 0.378906 L 233.527344 37.621094 Z M 217.40625 11.226562 L 212.800781 24.796875 L 222.015625 24.796875 Z M 217.40625 11.226562 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 275.785156 0.378906 L 285 0.378906 L 285 9.691406 L 275.785156 9.691406 Z M 275.785156 0.378906 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 252.746094 29.609375 L 252.746094 0.378906 L 248.140625 0.378906 L 248.140625 34.3125 Z M 252.746094 29.609375 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 255.976562 32.964844 L 251.371094 37.621094 L 285 37.621094 L 285 32.964844 Z M 255.976562 32.964844 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 261.960938 20.347656 L 261.960938 0.378906 L 257.355469 0.378906 L 257.355469 25 Z M 261.960938 20.347656 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 265.191406 23.65625 L 260.570312 28.308594 L 285 28.308594 L 285 23.65625 Z M 265.191406 23.65625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 271.160156 11.082031 L 271.160156 0.378906 L 266.554688 0.378906 L 266.554688 15.691406 Z M 271.160156 11.082031 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(6.666667%,9.411765%,15.294118%);fill-opacity:1;" d="M 274.40625 14.34375 L 269.816406 19 L 285 19 L 285 14.34375 Z M 274.40625 14.34375 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

+48
View File
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="173px"
height="38px" viewBox="0 0 172 38" version="1.1">
<defs>
<clipPath id="clip1">
<path d="M 99 7 L 125 7 L 125 37.636719 L 99 37.636719 Z M 99 7 " />
</clipPath>
<clipPath id="clip2">
<path d="M 0 7 L 33 7 L 33 37.636719 L 0 37.636719 Z M 0 7 " />
</clipPath>
<clipPath id="clip3">
<path d="M 68 7 L 101 7 L 101 37.636719 L 68 37.636719 Z M 68 7 " />
</clipPath>
<clipPath id="clip4">
<path d="M 139 7 L 171.6875 7 L 171.6875 37.636719 L 139 37.636719 Z M 139 7 " />
</clipPath>
</defs>
<g id="surface1">
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 123.050781 17.90625 L 124.191406 10.203125 C 121.699219 8.847656 118.21875 7.703125 114.214844 7.703125 C 106.316406 7.703125 102.003906 11.867188 102.003906 17.230469 C 102.003906 22.902344 107.148438 24.570312 110.683594 25.765625 C 112.8125 26.546875 114.476562 27.121094 114.476562 28.265625 C 114.476562 29.203125 113.386719 30.085938 111.203125 30.085938 C 108.03125 30.085938 103.617188 28.265625 100.757812 25.714844 L 99.511719 34.148438 C 102.472656 36.335938 106.734375 37.636719 111.253906 37.636719 C 119.101562 37.636719 123.570312 33.785156 123.570312 28.316406 C 123.570312 22.59375 118.738281 20.664062 114.839844 19.261719 C 112.65625 18.480469 111.097656 18.011719 111.097656 16.917969 C 111.097656 15.980469 112.191406 15.253906 114.425781 15.253906 C 117.644531 15.253906 120.972656 16.761719 123.050781 17.90625 Z M 123.050781 17.90625 " />
</g>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 22.96875 8.484375 L 22.449219 10.984375 C 20.941406 8.015625 16.472656 7.703125 14.082031 7.703125 C 6.597656 7.703125 0.0507812 14.886719 0.0507812 24.726562 C 0.0507812 32.636719 4.832031 37.636719 10.808594 37.636719 C 14.132812 37.636719 16.992188 36.855469 19.332031 34.097656 L 18.707031 36.855469 L 28.113281 36.855469 L 32.425781 8.433594 L 22.96875 8.433594 Z M 15.121094 28.160156 C 11.898438 28.160156 9.457031 25.664062 9.457031 22.488281 C 9.457031 19.363281 11.953125 16.8125 15.121094 16.8125 C 18.238281 16.8125 20.734375 19.363281 20.734375 22.488281 C 20.734375 25.664062 18.238281 28.160156 15.121094 28.160156 Z M 15.121094 28.160156 " />
</g>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 92.339844 8.484375 L 91.351562 8.484375 L 90.832031 10.984375 C 89.324219 8.015625 84.855469 7.703125 82.464844 7.703125 C 74.984375 7.703125 68.4375 14.886719 68.4375 24.726562 C 68.4375 32.636719 73.21875 37.636719 79.191406 37.636719 C 82.519531 37.636719 85.375 36.855469 87.714844 34.097656 L 87.089844 36.855469 L 96.496094 36.855469 L 100.808594 8.433594 L 92.339844 8.433594 Z M 83.503906 28.160156 C 80.285156 28.160156 77.839844 25.664062 77.839844 22.488281 C 77.839844 19.363281 80.335938 16.8125 83.503906 16.8125 C 86.625 16.8125 89.117188 19.363281 89.117188 22.488281 C 89.167969 25.664062 86.625 28.160156 83.503906 28.160156 Z M 83.503906 28.160156 " />
</g>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 163.21875 8.484375 L 162.230469 8.484375 L 161.710938 10.984375 C 160.203125 8.015625 155.734375 7.703125 153.34375 7.703125 C 145.863281 7.703125 139.316406 14.886719 139.316406 24.726562 C 139.316406 32.636719 144.09375 37.636719 150.070312 37.636719 C 153.398438 37.636719 156.253906 36.855469 158.59375 34.097656 L 157.96875 36.855469 L 167.375 36.855469 L 171.6875 8.433594 L 163.21875 8.433594 Z M 154.382812 28.160156 C 151.164062 28.160156 148.71875 25.664062 148.71875 22.488281 C 148.71875 19.363281 151.214844 16.8125 154.382812 16.8125 C 157.503906 16.8125 159.996094 19.363281 159.996094 22.488281 C 159.996094 25.664062 157.503906 28.160156 154.382812 28.160156 Z M 154.382812 28.160156 " />
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 41.519531 9.527344 C 44.128906 9.527344 46.246094 7.40625 46.246094 4.789062 C 46.246094 2.171875 44.128906 0.0507812 41.519531 0.0507812 C 38.90625 0.0507812 36.789062 2.171875 36.789062 4.789062 C 36.789062 7.40625 38.90625 9.527344 41.519531 9.527344 Z M 41.519531 9.527344 " />
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 41.46875 11.347656 C 39.441406 11.347656 37.621094 10.410156 36.425781 9.003906 L 32.21875 36.855469 L 41.675781 36.855469 L 45.78125 9.785156 C 44.585938 10.773438 43.128906 11.347656 41.46875 11.347656 Z M 41.46875 11.347656 " />
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 63.605469 17.855469 C 66.214844 17.855469 68.332031 15.734375 68.332031 13.117188 C 68.332031 10.5 66.214844 8.378906 63.605469 8.378906 C 60.992188 8.378906 58.875 10.5 58.875 13.117188 C 58.875 15.734375 60.992188 17.855469 63.605469 17.855469 Z M 63.605469 17.855469 " />
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 57.003906 13.117188 C 57.003906 11.296875 57.730469 9.628906 58.925781 8.433594 L 50.042969 8.433594 L 45.726562 36.855469 L 55.183594 36.855469 L 58.199219 16.867188 C 57.421875 15.824219 57.003906 14.523438 57.003906 13.117188 Z M 57.003906 13.117188 " />
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 134.378906 9.472656 C 136.988281 9.472656 139.105469 7.351562 139.105469 4.738281 C 139.105469 2.121094 136.988281 0 134.378906 0 C 131.765625 0 129.648438 2.121094 129.648438 4.738281 C 129.648438 7.351562 131.765625 9.472656 134.378906 9.472656 Z M 134.378906 9.472656 " />
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 134.378906 11.347656 C 132.300781 11.347656 130.429688 10.359375 129.183594 8.847656 L 124.921875 36.855469 L 134.378906 36.855469 L 138.484375 9.890625 C 137.339844 10.828125 135.9375 11.347656 134.378906 11.347656 Z M 134.378906 11.347656 " />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="body_1" width="152" height="38">
<g transform="matrix(0.038164105 0 0 0.038164105 0.28814086 -0)">
<path d="M828.4 0L166.2 0C 74.4 0 0 74.4 0 166.2L0 166.2L0 828.4C 0 920.2 74.4 994.60004 166.2 994.60004L166.2 994.60004L828.4 994.60004C 920.2 994.60004 994.60004 920.2 994.60004 828.4L994.60004 828.4L994.60004 166.2C 994.6 74.4 920.2 0 828.4 0zM813.8 761.3C 813.8 790.3 790.3 813.8 761.3 813.8L761.3 813.8L233.29999 813.8C 204.29999 813.8 180.79999 790.3 180.79999 761.3L180.79999 761.3L180.79999 233.29999C 180.79999 204.29999 204.29999 180.79999 233.29999 180.79999L233.29999 180.79999L761.3 180.79999C 790.3 180.79999 813.8 204.29999 813.8 233.29999L813.8 233.29999L813.8 761.3zM391.8 632.3C 375.09998 632.3 361.69998 618.8 361.69998 602.1L361.69998 602.1L361.69998 391.3C 361.69998 374.59998 375.09998 361 391.8 361L391.8 361L602.9 361C 619.5 361 633 374.5 633 391.3L633 391.3L633 602C 633 618.7 619.5 632.2 602.9 632.2L602.9 632.2L391.8 632.2zM1258.3 617.9L1366.9 617.9C 1372.3 679.4 1414 727.4 1498.1 727.4C 1573.2 727.4 1619.4 690.30005 1619.4 634.2C 1619.4 581.7 1583.2001 558.2 1518 542.8L1518 542.8L1433.8 524.7C 1342.4 504.80002 1273.6001 446 1273.6001 350C 1273.6001 244.1 1367.7001 171.7 1489.9001 171.7C 1619.3002 171.7 1702.6001 239.6 1709.8002 340L1709.8002 340L1604.8002 340C 1592.3 293 1553.3 265 1490 265C 1423 265 1376.9 301.2 1376.9 347.4C 1376.9 393.59998 1416.7001 421.59998 1485.5 437L1485.5 437L1568.8 455.1C 1660.2001 475 1722.6001 530.2 1722.6001 627C 1722.6001 750.1 1630.3 823.4 1498.2001 823.4C 1349.7 823.3 1267.4 742.8 1258.3 617.9zM2111.1 994.6L2111.1 814.5L2118.2002 735.5L2111.1 735.5C 2086.2002 792.3 2033.9001 823.4 1962.9001 823.4C 1848.4001 823.4 1763.2002 730.2 1763.2002 587.30005C 1763.2002 444.40005 1848.4001 351.20004 1962.9001 351.20004C 2033.0001 351.20004 2082.7002 384.00003 2111.1 435.50006L2111.1 435.50006L2118.2002 435.50006L2118.2002 360L2212.3003 360L2212.3003 994.6L2111.1 994.6zM2114.6 587.2C 2114.6 495.80002 2058.7002 442.5 1990.3 442.5C 1921.8999 442.5 1866 495.8 1866 587.2C 1866 678.60004 1921.9 731.9 1990.3 731.9C 2058.7002 731.9 2114.6 678.7 2114.6 587.2zM2287.4 634.3L2287.4 360L2388.5999 360L2388.5999 625.4C 2388.5999 697.30005 2423.2 731.9 2480.9 731.9C 2551.9 731.9 2598.0999 681.30005 2598.0999 602.30005L2598.0999 602.30005L2598.0999 360L2699.2998 360L2699.2998 814.4L2605.1997 814.4L2605.1997 720.30005L2598.0996 720.30005C 2575.8997 780.7001 2527.0996 823.30005 2451.6997 823.30005C 2343.3 823.3 2287.4 754.1 2287.4 634.3zM2760.9 687.5C 2760.9 602.3 2820.4 552.6 2926 546.4L2926 546.4L3051.1 538.4L3051.1 502.90002C 3051.1 460.30002 3020 434.60004 2965 434.60004C 2914.4 434.60004 2884.2 460.30005 2876.2 496.70004L2876.2 496.70004L2775 496.70004C 2785.7 404.40002 2862 351.10004 2964.9 351.10004C 3081.2 351.10004 3152.2 400.80005 3152.2 496.70004L3152.2 496.70004L3152.2 814.4L3058.0999 814.4L3058.0999 730.10004L3050.9998 730.10004C 3029.6997 786.00006 2985.2998 823.30005 2900.0999 823.30005C 2818.6 823.3 2760.9 768.3 2760.9 687.5zM3051.2 631.6L3051.2 607.6L2949.0999 614.69995C 2894.0999 618.19995 2869.2 638.69995 2869.2 679.49994C 2869.2 714.0999 2897.5999 738.99994 2937.5 738.99994C 3009.5 739 3051.2 692.9 3051.2 631.6zM3227.7 814.5L3227.7 360L3321.8 360L3321.8 447L3328.9001 447C 3342.2002 387.5 3387.5002 360 3454.9001 360L3454.9001 360L3501.1 360L3501.1 451.4L3443.4001 451.4C 3377.7002 451.4 3328.9001 494 3328.9001 574.8L3328.9001 574.8L3328.9001 814.4L3227.7 814.4zM3964.1 605.9L3618.8 605.9C 3624.1 689.30005 3682.7 736.4 3747.5 736.4C 3802.5 736.4 3837.1 714.2 3856.7 676.9L3856.7 676.9L3957 676.9C 3929.5 769.2 3848.7 823.30005 3746.6 823.30005C 3612.6 823.30005 3518.5 723.00006 3518.5 587.2001C 3518.5 451.4001 3615.2 351.10007 3747.5 351.10007C 3880.6 351.10007 3967.6 442.50006 3967.6 556.1001C 3967.7 578.4 3965.9 589.9 3964.1 605.9zM3867.4 535.8C 3863.9 472.8 3811.5 430.19998 3747.5999 430.19998C 3687.2 430.19998 3636.7 468.4 3624.2 535.8L3624.2 535.8L3867.4 535.8z" stroke="none" fill="#111827" fill-rule="nonzero" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

+16
View File
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="133px"
height="38px" viewBox="0 0 132 38" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 28.375 7.21875 C 28.355469 7.019531 28.179688 6.933594 28.050781 6.910156 C 27.917969 6.890625 25.316406 6.867188 25.316406 6.867188 C 25.316406 6.867188 23.121094 4.726562 22.90625 4.511719 C 22.6875 4.292969 22.273438 4.355469 22.101562 4.402344 C 22.101562 4.402344 21.6875 4.53125 20.992188 4.75 C 20.886719 4.378906 20.710938 3.921875 20.472656 3.460938 C 19.691406 1.953125 18.5625 1.167969 17.171875 1.167969 C 17.085938 1.167969 16.976562 1.167969 16.890625 1.191406 C 16.847656 1.148438 16.804688 1.101562 16.761719 1.039062 C 16.152344 0.382812 15.394531 0.078125 14.480469 0.0976562 C 12.699219 0.140625 10.941406 1.429688 9.488281 3.746094 C 8.46875 5.363281 7.707031 7.390625 7.488281 8.964844 C 5.449219 9.597656 4.015625 10.035156 3.996094 10.058594 C 2.972656 10.382812 2.929688 10.40625 2.800781 11.390625 C 2.691406 12.109375 0 33.097656 0 33.097656 L 22.601562 37.027344 L 32.390625 34.582031 C 32.390625 34.582031 28.398438 7.390625 28.375 7.21875 Z M 19.863281 5.097656 C 19.34375 5.253906 18.757812 5.449219 18.105469 5.644531 C 18.085938 4.75 17.976562 3.484375 17.5625 2.390625 C 18.929688 2.652344 19.582031 4.183594 19.863281 5.097656 Z M 16.933594 6.015625 C 15.738281 6.386719 14.460938 6.78125 13.15625 7.195312 C 13.527344 5.796875 14.21875 4.402344 15.066406 3.484375 C 15.394531 3.132812 15.828125 2.761719 16.347656 2.542969 C 16.847656 3.570312 16.933594 5.035156 16.933594 6.015625 Z M 14.503906 1.300781 C 14.914062 1.300781 15.261719 1.386719 15.566406 1.582031 C 15.089844 1.824219 14.609375 2.195312 14.175781 2.675781 C 13.046875 3.898438 12.179688 5.777344 11.832031 7.609375 C 10.746094 7.9375 9.703125 8.265625 8.726562 8.570312 C 9.378906 5.6875 11.765625 1.386719 14.503906 1.300781 Z M 14.503906 1.300781 " />
<path
style=" stroke:none;fill-rule:nonzero;fill:rgb(43.921569%,45.882353%,49.019608%);fill-opacity:1;"
d="M 28.050781 6.910156 C 27.917969 6.890625 25.316406 6.867188 25.316406 6.867188 C 25.316406 6.867188 23.121094 4.726562 22.90625 4.511719 C 22.816406 4.421875 22.710938 4.378906 22.601562 4.378906 L 22.601562 37.027344 L 32.390625 34.582031 C 32.390625 34.582031 28.398438 7.414062 28.375 7.21875 C 28.332031 7.019531 28.179688 6.933594 28.050781 6.910156 Z M 28.050781 6.910156 " />
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;"
d="M 17.171875 11.980469 L 16.042969 16.257812 C 16.042969 16.257812 14.785156 15.667969 13.265625 15.777344 C 11.050781 15.910156 11.027344 17.308594 11.050781 17.679688 C 11.179688 19.601562 16.175781 20.015625 16.457031 24.492188 C 16.671875 28.03125 14.589844 30.433594 11.59375 30.628906 C 7.988281 30.847656 6.015625 28.730469 6.015625 28.730469 L 6.773438 25.476562 C 6.773438 25.476562 8.769531 26.980469 10.355469 26.894531 C 11.398438 26.828125 11.765625 25.976562 11.722656 25.367188 C 11.570312 22.875 7.488281 23.007812 7.230469 18.921875 C 7.011719 15.472656 9.269531 11.980469 14.242188 11.652344 C 16.195312 11.476562 17.171875 11.980469 17.171875 11.980469 Z M 17.171875 11.980469 " />
<path
style=" stroke:none;fill-rule:nonzero;fill:#111827;fill-opacity:1;"
d="M 45.65625 21.109375 C 44.527344 20.496094 43.941406 19.972656 43.941406 19.25 C 43.941406 18.332031 44.746094 17.746094 46.027344 17.746094 C 47.503906 17.746094 48.804688 18.355469 48.804688 18.355469 L 49.847656 15.167969 C 49.847656 15.167969 48.890625 14.425781 46.089844 14.425781 C 42.183594 14.425781 39.46875 16.675781 39.46875 19.839844 C 39.46875 21.632812 40.730469 23.007812 42.421875 23.988281 C 43.789062 24.777344 44.269531 25.324219 44.269531 26.152344 C 44.269531 27.003906 43.59375 27.679688 42.3125 27.679688 C 40.425781 27.679688 38.644531 26.699219 38.644531 26.699219 L 37.539062 29.886719 C 37.539062 29.886719 39.1875 31 41.945312 31 C 45.960938 31 48.847656 29.011719 48.847656 25.429688 C 48.871094 23.488281 47.414062 22.113281 45.65625 21.109375 Z M 61.679688 14.382812 C 59.703125 14.382812 58.140625 15.320312 56.945312 16.761719 L 56.882812 16.738281 L 58.597656 7.699219 L 54.125 7.699219 L 49.78125 30.695312 L 54.253906 30.695312 L 55.753906 22.832031 C 56.339844 19.863281 57.859375 18.027344 59.292969 18.027344 C 60.289062 18.027344 60.679688 18.707031 60.679688 19.6875 C 60.679688 20.300781 60.617188 21.0625 60.484375 21.675781 L 58.792969 30.671875 L 63.265625 30.671875 L 65.023438 21.371094 C 65.21875 20.386719 65.347656 19.207031 65.347656 18.441406 C 65.347656 15.929688 64.003906 14.382812 61.679688 14.382812 Z M 75.464844 14.382812 C 70.082031 14.382812 66.519531 19.273438 66.519531 24.734375 C 66.519531 28.226562 68.671875 31.023438 72.6875 31.023438 C 77.960938 31.023438 81.542969 26.261719 81.542969 20.671875 C 81.523438 17.460938 79.632812 14.382812 75.464844 14.382812 Z M 73.25 27.570312 C 71.730469 27.570312 71.082031 26.261719 71.082031 24.644531 C 71.082031 22.070312 72.40625 17.851562 74.835938 17.851562 C 76.421875 17.851562 76.941406 19.230469 76.941406 20.5625 C 76.941406 23.335938 75.617188 27.570312 73.25 27.570312 Z M 92.964844 14.382812 C 89.945312 14.382812 88.230469 17.046875 88.230469 17.046875 L 88.167969 17.046875 L 88.425781 14.621094 L 84.476562 14.621094 C 84.28125 16.257812 83.933594 18.726562 83.5625 20.582031 L 80.460938 37.050781 L 84.929688 37.050781 L 86.167969 30.390625 L 86.257812 30.390625 C 86.257812 30.390625 87.167969 30.980469 88.882812 30.980469 C 94.136719 30.980469 97.566406 25.5625 97.566406 20.082031 C 97.589844 17.089844 96.242188 14.382812 92.964844 14.382812 Z M 88.6875 27.636719 C 87.515625 27.636719 86.84375 26.980469 86.84375 26.980469 L 87.582031 22.765625 C 88.101562 19.972656 89.554688 18.09375 91.117188 18.09375 C 92.488281 18.09375 92.898438 19.359375 92.898438 20.582031 C 92.898438 23.488281 91.183594 27.636719 88.6875 27.636719 Z M 103.972656 7.9375 C 102.539062 7.9375 101.410156 9.074219 101.410156 10.558594 C 101.410156 11.890625 102.257812 12.808594 103.515625 12.808594 L 103.582031 12.808594 C 104.96875 12.808594 106.1875 11.871094 106.207031 10.1875 C 106.207031 8.878906 105.339844 7.9375 103.972656 7.9375 Z M 97.71875 30.695312 L 102.191406 30.695312 L 105.230469 14.753906 L 100.714844 14.753906 Z M 116.605469 14.707031 L 113.503906 14.707031 L 113.65625 13.964844 C 113.914062 12.4375 114.828125 11.0625 116.304688 11.0625 C 117.105469 11.0625 117.734375 11.28125 117.734375 11.28125 L 118.605469 7.765625 C 118.605469 7.765625 117.824219 7.371094 116.171875 7.371094 C 114.589844 7.371094 113.003906 7.828125 111.789062 8.878906 C 110.269531 10.1875 109.550781 12.066406 109.183594 13.964844 L 109.050781 14.707031 L 106.96875 14.707031 L 106.316406 18.09375 L 108.402344 18.09375 L 106.035156 30.695312 L 110.507812 30.695312 L 112.871094 18.09375 L 115.957031 18.09375 Z M 127.375 14.753906 C 127.375 14.753906 124.574219 21.851562 123.316406 25.714844 L 123.25 25.714844 C 123.164062 24.46875 122.144531 14.753906 122.144531 14.753906 L 117.453125 14.753906 L 120.144531 29.40625 C 120.210938 29.734375 120.167969 29.929688 120.058594 30.148438 C 119.539062 31.152344 118.667969 32.136719 117.628906 32.855469 C 116.78125 33.46875 115.847656 33.863281 115.085938 34.125 L 116.324219 37.945312 C 117.238281 37.75 119.105469 37.007812 120.710938 35.5 C 122.75 33.578125 124.640625 30.609375 126.574219 26.566406 L 132.042969 14.753906 Z M 127.375 14.753906 " />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

+25
View File
@@ -0,0 +1,25 @@
{
"background_color": "#ffffff",
"theme_color": "#333333",
"name": "ClassroomIO",
"short_name": "ClassroomIO",
"display": "minimal-ui",
"start_url": "/",
"icons": [
{
"src": "logo-32.png",
"sizes": "32x32",
"type": "image/png"
},
{
"src": "logo-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "logo-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

+17
View File
@@ -0,0 +1,17 @@
User-agent: Googlebot
Disallow:
User-agent: googlebot-image
Disallow:
User-agent: googlebot-mobile
Disallow:
User-agent: MSNBot
Disallow:
User-agent: Slurp
Disallow:
User-agent: yahoo-mmcrawler
Disallow:
User-agent: yahoo-blogs/v3.9
Disallow:
User-agent: *
Disallow:
Disallow: /cgi-bin/
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 669 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 KiB

+16
View File
@@ -0,0 +1,16 @@
import { preprocessMeltUI } from "@melt-ui/pp";
import sequence from "svelte-sequential-preprocessor";
import adapter from "@sveltejs/adapter-auto";
import { vitePreprocess } from "@sveltejs/kit/vite";
/** @type {import('@sveltejs/kit').Config}*/
const config = {
kit: {
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
adapter: adapter(),
},
preprocess: sequence([vitePreprocess(), preprocessMeltUI()]),
};
export default config;
+8
View File
@@ -0,0 +1,8 @@
/** @type {import('tailwindcss').Config} */
export default {
content: ['./src/**/*.{html,js,svelte,ts}'],
theme: {
extend: {},
},
plugins: [],
};
+6
View File
@@ -0,0 +1,6 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [sveltekit()]
});
+31
View File
@@ -0,0 +1,31 @@
# Supabase setup - Required
PUBLIC_SUPABASE_PROJECT_REF=localhost
PUBLIC_SUPABASE_URL=http://localhost:54321
PUBLIC_SUPABASE_BUCKET_URL=http://localhost:54323
PUBLIC_SUPABASE_ANON_KEY=
# Email setup - Optional if you want to get/send emails
SMTP_PASSWORD_HELP=
SMTP_USER_HELP=
SMTP_HOST=
SMTP_USER=
SMTP_PASSWORD=
# Unsplash setup - Optional if you want to use Unsplash images
UNSPLASH_API_KEY=
PUBLIC_TINYMCE_API_KEY=
VITE_SENTRY_AUTH_TOKEN=
VITE_SENTRY_ORG_NAME=
VITE_SENTRY_PROJECT_NAME=
# OpenAI setup - Optional if you want to use OpenAI
OPENAI_API_KEY=
# Sever URL - Optional if you want to use video upload and pdf downloads
PUBLIC_SERVER_URL=
# For getting metadata for signup users.
PUBLIC_IP_REGISTRY_KEY=
+3
View File
@@ -0,0 +1,3 @@
module.exports = {
extends: ['custom/svelte']
};
+19
View File
@@ -0,0 +1,19 @@
.DS_Store
/node_modules/
node_modules
/src/node_modules/@sapper/
yarn-error.log
.svelte-kit/
.env
/dist/
package-lock.json
# Local Netlify folder
.netlify
# Sentry Auth Token
.env.sentry-build-plugin
/_supascripts/
data.sql
changes.sql
+1
View File
@@ -0,0 +1 @@
npm_config_registry=https://registry.npmjs.org
+1
View File
@@ -0,0 +1 @@
v18.16.0
+14
View File
@@ -0,0 +1,14 @@
{
"useTabs": false,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"overrides": [
{
"files": ["*.svelte"],
"options": {
"svelteBracketNewLine": true
}
}
]
}
+158
View File
@@ -0,0 +1,158 @@
<a href="https://classroomio.com/">
<img alt="Spend less time doing the boring stuffs, instead focus on impacting the lives of your students." src="https://classroomio.com/classroomio-opengraph-image.png" />
<h1 align="center">ClassroomIO</h1>
<p align="center">
The Open Source Teaching Platform for Bootcamps
<br />
<a href="https://classroomio.com">Website</a> | <a href="https://dub.sh/ciodiscord">Join Discord community</a>
</p>
</a>
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/629e2bb8994345729513c4d69ccbe3d5)](https://app.codacy.com/gh/rotimi-best/classroomio?utm_source=github.com&utm_medium=referral&utm_content=rotimi-best/classroomio&utm_campaign=Badge_Grade)
## ✨ About ClassroomIO
<img alt="ClassroomIO Courses page" src="https://classroomio.com/classroomio-courses.png" />
ClassroomIO is a platform for bootcamps, individual educators, and training businesses that brings teaching and learning into one place while at the same time helping them be 10x more productive. With our platform, anyone can run multiple classes and cohorts all from one UI. The application is mobile-first, which means that students can access your lesson materials from any device.
### Mission: Provide Students with the best learning experience
At ClassroomIO, our mission is to provide students with the best possible learning experience. We believe in empowering educators with the tools they need to deliver high-quality education that is accessible, engaging, and effective.
### Key Features
1. **📚 Advanced Course Management:** You can create unlimited courses, create lessons, invite students, add assignments, grade their assignments, and even generate certificates.
2. **👨‍👩‍👦 Multi-Teacher Management:** You can invite other teachers into your organization and assign them individual courses.
3. **🤖 AI Integration:** We've got OpenAI integration for quick course creation where you can generate course content, lesson outlines, and even generate assignments right from your lesson notes.
4. **💬 Forum:** Students can ask questions in your dedicated community and get answers from either you or other students.
5. **🏆 Kahoot-Like Quiz:** You can create live quizzes to create more engagement in your classrooms.
6. **💻 Dedicated Student Dashboard:** Once you create an account, you get a dedicated dashboard where your students can access all their courses, assignments, and more.
7. **🔒 Fully open source:** You can self-hostable the whole stack on your servers.
### Roadmap Features
1. **Forms:** Instead of using Google Forms to collect vital information from your students, you will be able to create forms directly within the dashboard.
2. **Course Announcement:** You can make public announcements from the course dashboard to all your students.
3. **Course Templates:** You can clone a full course or share templates with other people.
4. **Analytics:** You can track data about your students across multiple courses.
5. **Run Courses on Messengers:** Students can just join a channel on slack/discord/telegram and a bot automatically sends daily lesson content to your students without you doing anything.
Please reach out to me on [twitter](https://x.com/rotimi_best) if you have any feature request.
## Built With
- [Svelekit](https://kit.svelte.dev/?ref=classroomio.com)
- [Supabase](https://supabase.com/?ref=classroomio.com)
- [TailwindCSS](https://tailwindcss.com/?ref=classroomio.com)
## Get a Demo
You can book a quick 15 min demo to see if ClassroomIO is a good fit for you
<a href="https://cal.com/classroomio/demo">
<img src="https://cal.com/book-with-cal-dark.svg" alt="Book a Call with ClassroomIO.com">
</a>
<!-- GETTING STARTED -->
## Getting Started
To get a local copy up and running, please follow these simple steps.
### Prerequisites
Here is what you need to be able to run Cal.com.
- [Node.js](https://nodejs.org/) (Version: >=18.x)
- [Supabase CLI](https://github.com/supabase/cli)
- [Docker](https://docs.docker.com/engine/install/)
- [NPM](https://www.npmjs.com/)
## Development
### Setup
1. Clone the repo
```bash
git clone https://github.com/rotimi-best/classroomio.git
```
2. Go to project folder
```bash
cd classroomio
```
3. Setup Node If your Node version does not meet the project's requirements as instructed by the docs, "nvm" (Node Version Manager) allows using Node at the version required by the project:
```bash
nvm use
```
You first might need to install the specific version and then use it:
```bash
nvm install && nvm use
```
You can install nvm from [here](https://github.com/nvm-sh/nvm).
4. Set up your `.env` file
- Duplicate `.env.example` to `.env`
5. Setup Supabase.
- Make sure you've downloaded the [supabase cli](https://github.com/supabase/cli)
- Install and Start [docker](https://docs.docker.com/engine/install/)
- Go to the project directory in your terminal and start supabase
```bash
supabase start
```
- You should get a result like this
```bash
supabase local development setup is running.
API URL: http://127.0.0.1:54321
GraphQL URL: http://127.0.0.1:54321/graphql/v1
DB URL: postgresql://postgres:postgres@127.0.0.1:54322/postgres
Studio URL: http://127.0.0.1:54323
Inbucket URL: http://127.0.0.1:54324
JWT secret: super-secret-jwt-token-with-at-least-32-characters-long
anon key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU
```
- Supabase environment variables should be taken from the result of `supabase start`
```env
PUBLIC_SUPABASE_URL=<API URL>
PUBLIC_SUPABASE_ANON_KEY=<anon key>
PUBLIC_SUPABASE_BUCKET_URL=<Inbucket URL>
```
- To view the Supabase studio, open the Studio URL from the result of supabase start
6. Install the required dependencies
```bash
npm i
```
7. Run (in development mode)
```bash
npm run dev
```
## Related Repos
You can find other repos related to classroomio here:
- Help Docs: <https://github.com/rotimi-best/docs.classroomio.com>
- ClassroomIO.com: <https://github.com/rotimi-best/classroomio.com>
+17
View File
@@ -0,0 +1,17 @@
{
"folders": [
{
"name": "project-root",
"path": "./"
},
{
"name": "supabase-functions",
"path": "supabase/functions"
}
],
"settings": {
"files.exclude": {
"supabase/functions/": true
}
}
}
+80
View File
@@ -0,0 +1,80 @@
// Modules to control application life and create native browser window
const { app, BrowserWindow, dialog } = require('electron');
const path = require('path');
const serve = require('electron-serve');
const loadURL = serve({ directory: '__sapper__/export' });
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow;
function isDev() {
return !app.isPackaged;
}
function createWindow() {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
},
// Use this in development mode.
icon: isDev()
? path.join(process.cwd(), 'static/logo-512.png')
: path.join(__dirname, '__sapper__/export/logo-512.png'),
// Use this in production mode.
// icon: path.join(__dirname, '__sapper__/export/logo-512.png'),
show: false
});
// This block of code is intended for development purpose only.
// Delete this entire block of code when you are ready to package the application.
if (isDev()) {
mainWindow.loadURL('http://localhost:3000/');
} else {
loadURL(mainWindow);
}
// Uncomment the following line of code when app is ready to be packaged.
// loadURL(mainWindow);
// Open the DevTools and also disable Electron Security Warning.
// process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = true;
// mainWindow.webContents.openDevTools();
// Emitted when the window is closed.
mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null;
});
// Emitted when the window is ready to be shown
// This helps in showing the window gracefully.
mainWindow.once('ready-to-show', () => {
mainWindow.show();
});
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow);
// Quit when all windows are closed.
app.on('window-all-closed', function () {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') app.quit();
});
app.on('activate', function () {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) createWindow();
});
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
+86
View File
@@ -0,0 +1,86 @@
{
"name": "dashboard",
"description": "classroomio",
"version": "0.0.1",
"main": "main.js",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint ./src",
"clean": "rm -rf node_modules",
"format": "prettier . --write .",
"export": "vite build --entry \"/ /404 login signup forgot onboarding courses org lms course\"",
"postexport": "mv __sapper__/export/404/index.html __sapper__/export/404.html",
"start": "node build",
"prepare": "svelte-kit sync"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.386.0",
"@carbon/charts-svelte": "^1.13.6",
"@sentry/browser": "^7.61.0",
"@sentry/integrations": "^7.61.0",
"@sentry/vite-plugin": "^2.6.2",
"@supabase/supabase-js": "^2.31.0",
"@sveltejs/adapter-auto": "^2.1.0",
"@sveltejs/adapter-vercel": "^3.0.3",
"@tailwindcss/forms": "^0.5.4",
"@tinymce/tinymce-svelte": "^1.0.1",
"@types/pluralize": "0.0.30",
"ai": "^2.1.31",
"axios": "^1.5.1",
"body-parser": "^1.20.2",
"canvas-confetti": "^1.6.0",
"cookie-parser": "^1.4.6",
"copy-to-clipboard": "^3.3.3",
"d3": "^7.8.5",
"d3-cloud": "^1.2.7",
"d3-sankey": "^0.12.3",
"dayjs": "^1.11.10",
"form-data": "^4.0.0",
"hotkeys-js": "^3.11.2",
"js-yaml": "^4.1.0",
"lodash": "^4.17.21",
"nodemailer": "^6.9.5",
"openai-edge": "^1.2.2",
"pluralize": "^8.0.0",
"posthog-js": "^1.87.2",
"sirv": "^2.0.3",
"supabase": "^1.112.0",
"svelte-email": "^0.0.4",
"svelte-ui": "workspace:*",
"unsplash-js": "^7.0.18",
"wait-on": "^7.0.1",
"zod": "^3.21.4"
},
"devDependencies": {
"@babel/core": "^7.22.9",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.22.9",
"@babel/preset-env": "^7.22.9",
"@babel/runtime": "^7.22.6",
"@sveltejs/kit": "^1.22.4",
"@tailwindcss/typography": "^0.5.9",
"@types/lodash": "^4.14.196",
"@types/nodemailer": "^6.4.11",
"autoprefixer": "^10.4.14",
"carbon-components-svelte": "^0.79.0",
"carbon-icons-svelte": "^12.1.0",
"dotenv": "^16.3.1",
"eslint-config-custom": "workspace:*",
"postcss": "^8.4.24",
"postcss-load-config": "^4.0.1",
"sass": "^1.64.2",
"svelte": "^4.1.2",
"svelte-calendar": "^3.1.6",
"svelte-dnd-action": "^0.9.24",
"svelte-loading-spinners": "^0.3.4",
"svelte-preprocess": "^5.0.4",
"tailwindcss": "^3.3.2",
"tsconfig": "workspace:*",
"tslib": "^2.6.1",
"typescript": "^5.1.6",
"vite": "^4.4.8"
},
"type": "module"
}
+13
View File
@@ -0,0 +1,13 @@
const tailwindcss = require('tailwindcss');
const autoprefixer = require('autoprefixer');
const config = {
plugins: [
//Some plugins, like tailwindcss/nesting, need to run before Tailwind,
tailwindcss(),
//But others, like autoprefixer, need to run after,
autoprefixer
]
};
module.exports = config;
+6
View File
@@ -0,0 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {}
}
};
+39
View File
@@ -0,0 +1,39 @@
/**
* These declarations tell TypeScript that we allow import of images, e.g.
* ```
<script lang='ts'>
import successkid from 'images/successkid.jpg';
</script>
<img src="{successkid}">
```
*/
declare module '*.gif' {
const value: string;
export = value;
}
declare module '*.jpg' {
const value: string;
export = value;
}
declare module '*.jpeg' {
const value: string;
export = value;
}
declare module '*.png' {
const value: string;
export = value;
}
declare module '*.svg' {
const value: string;
export = value;
}
declare module '*.webp' {
const value: string;
export = value;
}
+66
View File
@@ -0,0 +1,66 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<meta name="theme-color" content="#333333" />
<!-- <link rel="stylesheet" href="global.css"> -->
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
<link rel="icon" type="image/png" href="/favicon.ico" />
<link rel="icon" type="image/png" sizes="32x32" href="/logo-32.png" />
<link rel="stylesheet" href="https://cdn.plyr.io/3.7.3/plyr.css" />
<title>ClassroomIO –&nbsp;The Open Source Platform for Tech Bootcamps</title>
<meta
name="description"
content="Spend less time doing the boring stuffs, instead focus on impacting the lives of your students."
/>
<meta name="theme-color" content="#ffffff" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta
property="og:title"
content="ClassroomIO –&nbsp;The Open Source Platform for Tech Bootcamps"
/>
<meta
property="og:description"
content="Spend less time doing the boring stuffs, instead focus on impacting the lives of your students."
/>
<meta property="og:type" content="website" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1920" />
<meta property="og:image:height" content="1080" />
<meta
property="og:image:secure_url"
content="https://classroomio.com/classroomio-opengraph-image.png"
/>
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:creator" content="@rotimi_best" />
<meta
name="twitter:title"
content="ClassroomIO –&nbsp;The Open Source Platform for Tech Bootcamps"
/>
<meta
name="twitter:description"
content="Spend less time doing the boring stuffs, instead focus on impacting the lives of your students."
/>
<!-- <link rel="stylesheet" href="global.css"> -->
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
<link rel="icon" type="image/png" href="/favicon.ico" />
<link rel="icon" type="image/png" sizes="32x32" href="/logo-32.png" />
<link rel="stylesheet" href="https://cdn.plyr.io/3.7.3/plyr.css" />
<!--Crisp Chat
<script
type="text/javascript">window.$crisp = []; window.CRISP_WEBSITE_ID = "2158dbf9-90d4-4e50-b962-e1d8a1a6deb7"; (function () { d = document; s = d.createElement("script"); s.src = "https://client.crisp.chat/l.js"; s.async = 1; d.getElementsByTagName("head")[0].appendChild(s); })();</script>
-->
<script src="https://cdn.plyr.io/3.7.3/plyr.js"></script>
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover" class="">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>
+638
View File
@@ -0,0 +1,638 @@
/*Write your global styles here, in PostCSS syntax */
@tailwind base;
@tailwind base;
@tailwind components;
@tailwind utilities;
/** Global scrollbar styles */
html {
--scrollbarBG: #fff;
--thumbBG: #ccc;
scroll-behavior: smooth;
font-family:
ui-sans-serif,
system-ui,
-apple-system,
BlinkMacSystemFont,
Segoe UI,
Roboto,
Helvetica Neue,
Arial,
Noto Sans,
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji',
Segoe UI Symbol,
'Noto Color Emoji' !important;
}
#calendar .grid {
--sc-theme-calendar-colors-background-highlight: var(--main-primary-color);
}
html .dark {
--scrollbarBG: #1f2937;
}
* {
scrollbar-width: thin;
scrollbar-color: var(--thumbBG) var(--scrollbarBG);
}
html .dark {
--scrollbarBG: #1f2937;
}
*::-webkit-scrollbar {
width: 10px;
height: 10px;
}
*::-webkit-scrollbar-track {
background: var(--scrollbarBG);
}
*::-webkit-scrollbar-thumb {
background-color: var(--thumbBG);
border-radius: 10px;
border: 2px solid var(--scrollbarBG);
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: revert;
font-weight: revert;
margin: 0.8em 0;
}
.prose h1,
.prose h2,
.prose h3,
.prose h4,
.prose h5,
.prose h6 {
margin-top: 0px !important;
margin-bottom: 16px !important;
font-weight: 600 !important;
line-height: 1.25 !important;
}
.prose p {
margin-top: 0px !important;
margin-bottom: 10px !important;
}
.dark .prose h1,
.dark .prose h2,
.dark .prose h3,
.dark .prose h4,
.dark .prose h5,
.dark .prose h6,
.dark .prose li,
.dark .prose strong,
.dark .prose li::marker,
.dark .prose p {
color: #fff;
}
code {
white-space: pre-wrap;
}
[aria-current] :global(svg.carbon-icon),
.active :global(svg.carbon-icon) {
fill: var(--main-primary-color);
}
.prose a {
color: var(--main-primary-color);
}
.success :global(svg.carbon-icon) {
fill: green;
}
:global(svg.carbon-icon.error) {
fill: red;
}
@tailwind components;
@tailwind utilities;
/**
Rose Theme
*/
.theme-rose .bg-primary-50 {
background-color: #fff1f2;
}
.theme-rose .text-primary-50 {
color: #fff1f2;
}
.theme-rose .border-primary-50 {
border-color: #fff1f2;
}
.theme-rose .bg-primary-100 {
background-color: #ffe4e7;
}
.theme-rose .text-primary-100 {
color: #ffe4e7;
}
.theme-rose .border-primary-100 {
border-color: #ffe4e7;
}
.theme-rose .bg-primary-200 {
background-color: #fecdd4;
}
.theme-rose .text-primary-200 {
color: #fecdd4;
}
.theme-rose .border-primary-200 {
border-color: #fecdd4;
}
.theme-rose .bg-primary-300 {
background-color: #fda4b2;
}
.theme-rose .text-primary-300 {
color: #fda4b2;
}
.theme-rose .border-primary-300 {
border-color: #fda4b2;
}
.theme-rose .bg-primary-400 {
background-color: #fb7189;
}
.theme-rose .text-primary-400 {
color: #fb7189;
}
.theme-rose .border-primary-400 {
border-color: #fb7189;
}
.theme-rose .bg-primary-500 {
background-color: #f43f63;
}
.theme-rose .text-primary-500 {
color: #f43f63;
}
.theme-rose .border-primary-500 {
border-color: #f43f63;
}
.theme-rose .bg-primary-600 {
background-color: #e21d4e;
}
.theme-rose .text-primary-600 {
color: #e21d4e;
}
.theme-rose .border-primary-600 {
border-color: #e21d4e;
}
.theme-rose .bg-primary-700 {
background-color: #be1241;
}
.theme-rose .text-primary-700 {
color: #be1241;
}
.theme-rose .border-primary-700 {
border-color: #be1241;
}
.theme-rose .bg-primary-800 {
background-color: #9f123d;
}
.theme-rose .text-primary-800 {
color: #9f123d;
}
.theme-rose .border-primary-800 {
border-color: #9f123d;
}
.theme-rose .bg-primary-900 {
background-color: #88133a;
}
.theme-rose .text-primary-900 {
color: #88133a;
}
.theme-rose .border-primary-900 {
border-color: #88133a;
}
/**
Blue Theme
*/
.bg-primary-50 {
background-color: #eff6ff;
}
.text-primary-50 {
color: #eff6ff;
}
.border-primary-50 {
border-color: #eff6ff;
}
.bg-primary-100 {
background-color: #dbeafe;
}
.text-primary-100 {
color: #dbeafe;
}
.border-primary-100 {
border-color: #dbeafe;
}
.bg-primary-200 {
background-color: #bfdafe;
}
.text-primary-200 {
color: #bfdafe;
}
.border-primary-200 {
border-color: #bfdafe;
}
.bg-primary-300 {
background-color: #92c4fe;
}
.text-primary-300 {
color: #92c4fe;
}
.border-primary-300 {
border-color: #92c4fe;
}
.bg-primary-400 {
background-color: #5fa3fb;
}
.text-primary-400 {
color: #5fa3fb;
}
.border-primary-400 {
border-color: #5fa3fb;
}
.bg-primary-500 {
background-color: #3a7ff7;
}
.text-primary-500 {
color: #3a7ff7;
}
.border-primary-500 {
border-color: #3a7ff7;
}
.bg-primary-600 {
background-color: #2460ec;
}
.text-primary-600 {
color: #2460ec;
}
.border-primary-600 {
border-color: #2460ec;
}
.bg-primary-700 {
background-color: #1d4ee2;
}
.text-primary-700 {
color: #1d4ee2;
}
.border-primary-700 {
border-color: #1d4ee2;
}
.bg-primary-800 {
background-color: #1d3eb0;
}
.text-primary-800 {
color: #1d3eb0;
}
.border-primary-800 {
border-color: #1d3eb0;
}
.bg-primary-900 {
background-color: #1d398b;
}
.text-primary-900 {
color: #1d398b;
}
.border-primary-900 {
border-color: #1d398b;
}
/**
Green Theme
*/
.theme-green .bg-primary-50 {
background-color: #effef0;
}
.theme-green .text-primary-50 {
color: #effef0;
}
.theme-green .border-primary-50 {
border-color: #effef0;
}
.theme-green .bg-primary-100 {
background-color: #d9ffdc;
}
.theme-green .text-primary-100 {
color: #d9ffdc;
}
.theme-green .border-primary-100 {
border-color: #d9ffdc;
}
.theme-green .bg-primary-200 {
background-color: #b6fcbc;
}
.theme-green .text-primary-200 {
color: #b6fcbc;
}
.theme-green .border-primary-200 {
border-color: #b6fcbc;
}
.theme-green .bg-primary-300 {
background-color: #7df88a;
}
.theme-green .text-primary-300 {
color: #7df88a;
}
.theme-green .border-primary-300 {
border-color: #7df88a;
}
.theme-green .bg-primary-400 {
background-color: #3deb51;
}
.theme-green .text-primary-400 {
color: #3deb51;
}
.theme-green .border-primary-400 {
border-color: #3deb51;
}
.theme-green .bg-primary-500 {
background-color: #12bf26;
}
.theme-green .text-primary-500 {
color: #12bf26;
}
.theme-green .border-primary-500 {
border-color: #12bf26;
}
.theme-green .bg-primary-600 {
background-color: #0aaf1d;
}
.theme-green .text-primary-600 {
color: #0aaf1d;
}
.theme-green .border-primary-600 {
border-color: #0aaf1d;
}
.theme-green .bg-primary-700 {
background-color: #0c891b;
}
.theme-green .text-primary-700 {
color: #0c891b;
}
.theme-green .border-primary-700 {
border-color: #0c891b;
}
.theme-green .bg-primary-800 {
background-color: #0f6c1b;
}
.theme-green .text-primary-800 {
color: #0f6c1b;
}
.theme-green .border-primary-800 {
border-color: #0f6c1b;
}
.theme-green .bg-primary-900 {
background-color: #0f581a;
}
.theme-green .text-primary-900 {
color: #0f581a;
}
.theme-green .border-primary-900 {
border-color: #0f581a;
}
/**
Orange Theme
*/
.theme-orange .bg-primary-50 {
background-color: #fff8ec;
}
.theme-orange .text-primary-50 {
color: #fff8ec;
}
.theme-orange .border-primary-50 {
border-color: #fff8ec;
}
.theme-orange .bg-primary-100 {
background-color: #fff0d3;
}
.theme-orange .text-primary-100 {
color: #fff0d3;
}
.theme-orange .border-primary-100 {
border-color: #fff0d3;
}
.theme-orange .bg-primary-200 {
background-color: #ffdca5;
}
.theme-orange .text-primary-200 {
color: #ffdca5;
}
.theme-orange .border-primary-200 {
border-color: #ffdca5;
}
.theme-orange .bg-primary-300 {
background-color: #ffc26d;
}
.theme-orange .text-primary-300 {
color: #ffc26d;
}
.theme-orange .border-primary-300 {
border-color: #ffc26d;
}
.theme-orange .bg-primary-400 {
background-color: #ff9d32;
}
.theme-orange .text-primary-400 {
color: #ff9d32;
}
.theme-orange .border-primary-400 {
border-color: #ff9d32;
}
.theme-orange .bg-primary-500 {
background-color: #ff7f0a;
}
.theme-orange .text-primary-500 {
color: #ff7f0a;
}
.theme-orange .border-primary-500 {
border-color: #ff7f0a;
}
.theme-orange .bg-primary-600 {
background-color: #ff6600;
}
.theme-orange .text-primary-600 {
color: #ff6600;
}
.theme-orange .border-primary-600 {
border-color: #ff6600;
}
.theme-orange .bg-primary-700 {
background-color: #cc4902;
}
.theme-orange .text-primary-700 {
color: #cc4902;
}
.theme-orange .border-primary-700 {
border-color: #cc4902;
}
.theme-orange .bg-primary-800 {
background-color: #a1390b;
}
.theme-orange .text-primary-800 {
color: #a1390b;
}
.theme-orange .border-primary-800 {
border-color: #a1390b;
}
.theme-orange .bg-primary-900 {
background-color: #82310c;
}
.theme-orange .text-primary-900 {
color: #82310c;
}
.theme-orange .border-primary-900 {
border-color: #82310c;
}
/**
Violet Theme
*/
.theme-violet .bg-primary-50 {
background-color: #fff2fe;
}
.theme-violet .text-primary-50 {
color: #fff2fe;
}
.theme-violet .border-primary-50 {
border-color: #fff2fe;
}
.theme-violet .bg-primary-100 {
background-color: #ffe3fe;
}
.theme-violet .text-primary-100 {
color: #ffe3fe;
}
.theme-violet .border-primary-100 {
border-color: #ffe3fe;
}
.theme-violet .bg-primary-200 {
background-color: #ffc6fe;
}
.theme-violet .text-primary-200 {
color: #ffc6fe;
}
.theme-violet .border-primary-200 {
border-color: #ffc6fe;
}
.theme-violet .bg-primary-300 {
background-color: #ff99f7;
}
.theme-violet .text-primary-300 {
color: #ff99f7;
}
.theme-violet .border-primary-300 {
border-color: #ff99f7;
}
.theme-violet .bg-primary-400 {
background-color: #ff5df2;
}
.theme-violet .text-primary-400 {
color: #ff5df2;
}
.theme-violet .border-primary-400 {
border-color: #ff5df2;
}
.theme-violet .bg-primary-500 {
background-color: #ff21f5;
}
.theme-violet .text-primary-500 {
color: #ff21f5;
}
.theme-violet .border-primary-500 {
border-color: #ff21f5;
}
.theme-violet .bg-primary-600 {
background-color: #fb00ff;
}
.theme-violet .text-primary-600 {
color: #fb00ff;
}
.theme-violet .border-primary-600 {
border-color: #fb00ff;
}
.theme-violet .bg-primary-700 {
background-color: #cf00ce;
}
.theme-violet .text-primary-700 {
color: #cf00ce;
}
.theme-violet .border-primary-700 {
border-color: #cf00ce;
}
.theme-violet .bg-primary-800 {
background-color: #a900a6;
}
.theme-violet .text-primary-800 {
color: #a900a6;
}
.theme-violet .border-primary-800 {
border-color: #a900a6;
}
.theme-violet .bg-primary-900 {
background-color: #890684;
}
.theme-violet .text-primary-900 {
color: #890684;
}
.theme-violet .border-primary-900 {
border-color: #890684;
}
+5
View File
@@ -0,0 +1,5 @@
export default {
supabaseConfig: {
bucketPath: 'https://tapaozmyjsuykgerrfkt.supabase.in/storage/v1/object/sign/'
}
};
+33
View File
@@ -0,0 +1,33 @@
<script>
import ErrorIcon from '$lib/components/Icons/ErrorIcon.svelte';
</script>
<div
class="error-container m-auto flex flex-col-reverse lg:flex-row md:flex-col-reverse items-center justify-center h-screen w-screen py-10 dark:bg-black"
>
<div class="md:w-full p-2 lg:w-2/4">
<h2 class="w-full text-lg lg:text-3xl font-medium lg:font-normal">
Something unexpected occured.
</h2>
<p class="dark:text-white w-full text-base font-normal my-6 text-gray-600">
Don't worry, your learning is safe. It isn't your fault, it is ours. We have gotten the error
notification and will push a fix ASAP. In the meantime, take a short break and come back a bit
later.
</p>
<a
class="bg-primary-700 hover:bg-primary-900 hover:no-underline transition-all py-3 px-9 rounded-xl text-white mt-3"
href="mailto:support@classroomio.com"
>Contact Us</a
>
</div>
<div class="w-72 lg:w-2/4 flex items-center justify-center">
<ErrorIcon />
</div>
</div>
<style>
.error-container {
max-width: 964px;
}
</style>
@@ -0,0 +1,137 @@
<script lang="ts">
import { useCompletion } from 'ai/svelte';
import { Popover } from 'carbon-components-svelte';
import type { PopoverProps } from 'carbon-components-svelte/types/Popover/Popover.svelte';
import MagicWandFilled from 'carbon-icons-svelte/lib/MagicWandFilled.svelte';
import IconButton from '$lib/components/IconButton/index.svelte';
import { Loading } from 'carbon-components-svelte';
import HtmlRender from '$lib/components/HTMLRender/HTMLRender.svelte';
export let className = '';
export let handleInsert = (v: string) => {};
export let defaultPrompt = '';
export let alignPopover: PopoverProps['align'] = 'left';
export let isHTML = false;
let openPopover = false;
let plainText = '';
let textRef: HTMLParagraphElement;
let prompt: string = defaultPrompt;
let isSubmitted = false;
const { input, handleSubmit, completion, isLoading } = useCompletion({
api: '/api/completion/customprompt'
});
function restart() {
isSubmitted = false;
plainText = '';
}
function onCompletion(completion: string) {
plainText = completion;
if (textRef) {
textRef.scrollTop = textRef.scrollHeight;
}
}
function callAI(prompt: string, rephrase: boolean) {
isSubmitted = true;
$input = rephrase ? `Can you please rephrase this: ${plainText}` : prompt;
setTimeout(() => {
handleSubmit({ preventDefault: () => {} });
}, 500);
}
$: onCompletion($completion);
$: prompt = defaultPrompt;
</script>
<div class="{className} relative z-[100]">
<IconButton
contained={true}
color="text-primary-700 dark:bg-neutral-500 dark:text-white"
size="large"
onClick={() => (openPopover = !openPopover)}
>
<MagicWandFilled size={16} class="carbon-icon" />
<Popover caret align={alignPopover} bind:open={openPopover}>
<button
class="p-2 w-[300px] h-[220px] text-start"
type="button"
on:click={(e) => e.stopPropagation()}
>
{#if isSubmitted}
<div class="h-[200px]">
<div
bind:this={textRef}
class="h-[82%] bg-white dark:bg-neutral-700 p-2 overflow-y-auto text-sm text-start w-full my-1"
>
{#if isHTML}
<HtmlRender content={plainText} />
{:else}
<p class="font-normal">
{plainText}
</p>
{/if}
</div>
<div class="flex gap-5 ml-2">
<button
class="text-xs px-4 py-2 border-[1px] cursor-pointer rounded-md font-medium"
on:click={() => {
handleInsert(plainText);
openPopover = false;
}}
type="button"
disabled={$isLoading}
>
{#if $isLoading}
<Loading withOverlay={false} small />
{:else}
Insert
{/if}
</button>
<button
class="text-xs px-4 py-2 border-[1px] cursor-pointer rounded-md font-medium {$isLoading &&
'opacity-25 cursor-not-allowed'}"
on:click|preventDefault={() => callAI(prompt, true)}
type="button"
disabled={$isLoading}
>
Rephrase
</button>
{#if !$isLoading}
<button
class="text-xs px-4 py-2 border-[1px] cursor-pointer rounded-md font-medium"
on:click|preventDefault={restart}
type="button"
>
Reset
</button>
{/if}
</div>
</div>
{:else}
<div class="h-full">
<p class="text-sm font-medium mb-2 ml-1">Help me write</p>
<textarea
bind:value={prompt}
class="w-full border-0 rounded-lg h-[65%] text-sm m-0 dark:text-black"
placeholder="Help me write a short description"
/>
<button
class="flex text-xs px-4 py-2 m-0 border rounded-md font-medium"
on:click|preventDefault={() => callAI(prompt, false)}
type="button"
>
Start typing...
</button>
</div>
{/if}
</button>
</Popover>
</IconButton>
</div>
@@ -0,0 +1,240 @@
<script lang="ts">
import { onMount, onDestroy } from 'svelte';
import PageNav from '$lib/components/PageNav/index.svelte';
import CloseButton from '$lib/components/Buttons/Close/index.svelte';
import TextField from '$lib/components/Form/TextField.svelte';
import { getSupabase } from '$lib/utils/functions/supabase';
import type {
RealtimeChannel,
RealtimePostgresChangesPayload,
PostgrestSingleResponse
} from '@supabase/supabase-js';
import type { LessonCommentInsertPayload, GroupPerson, LessonComment } from '$lib/utils/types';
import { lesson } from '$lib/components/Course/components/Lesson/store/lessons';
import { group } from '$lib/components/Course/store';
import { profile } from '$lib/utils/store/user';
import { calDateDiff } from '$lib/utils/functions/date';
export let handleClose = () => {};
const supabase = getSupabase();
let comment = '';
let bodyRef: HTMLDivElement;
let lessonCommentChannel: RealtimeChannel;
let comments: LessonComment[] = [];
let groupmember: GroupPerson | undefined;
let isSaving: boolean = false;
let isFetched = false;
interface FetchComments {
comment: string;
created_at: string;
groupmember: {
id: string;
profile: {
avatar_url: string;
fullname: string;
};
};
}
async function handleSend() {
console.log('groupmember', groupmember);
if (!comment || !groupmember) {
return;
}
comments = [
...comments,
{
comment: comment,
name: 'You',
avatar: $profile.avatar_url,
commentAt: new Date()
}
];
$lesson.totalComments = comments.length;
scrollToBottom();
isSaving = true;
supabase
.from('lesson_comment')
.insert({
lesson_id: $lesson.id,
groupmember_id: groupmember.id,
comment
})
.then(() => {
isSaving = false;
comment = '';
});
}
function handleKeyDown(e: KeyboardEvent) {
if (e.key === 'Enter') {
handleSend();
}
}
function scrollToBottom() {
setTimeout(() => {
bodyRef.scrollTo({
top: bodyRef.scrollHeight
});
}, 100);
}
async function handleInsert(payload: RealtimePostgresChangesPayload<LessonCommentInsertPayload>) {
const insertedComment = payload.new as LessonCommentInsertPayload;
if (groupmember && groupmember.id === insertedComment.groupmember_id) {
console.log('is my comment');
return;
}
const {
data,
error
}: PostgrestSingleResponse<{
id: string;
profile: {
fullname: string;
avatar_url: string;
};
}> = await supabase
.from('groupmember')
.select('id, profile:profile_id(fullname, avatar_url)')
.eq('id', insertedComment.groupmember_id)
.single();
console.log('data', data);
console.log('error', error);
if (error || !data) {
return;
}
comments = [
...comments,
{
comment: insertedComment.comment,
name: data.profile.fullname,
avatar: data.profile.avatar_url,
commentAt: insertedComment.created_at
}
];
$lesson.totalComments = comments.length;
scrollToBottom();
}
async function fetchComments(people: GroupPerson[], lessonId?: string | null) {
groupmember = people.find((person) => person.profile_id === $profile.id);
if (!groupmember || !lessonId) return;
const { data, error } = await supabase
.from('lesson_comment')
.select(
`
groupmember_id,
created_at,
comment,
groupmember:groupmember_id(
id,
profile:profile_id(fullname, avatar_url)
)
`
)
.match({
lesson_id: lessonId
})
.returns<FetchComments[]>();
if (error || !data) {
console.error('error');
return;
}
console.log('fetch comments', data);
comments = data.map((lessonComment) => {
return {
comment: lessonComment.comment,
avatar: lessonComment.groupmember.profile.avatar_url,
commentAt: lessonComment.created_at,
name:
lessonComment.groupmember.id === groupmember?.id
? 'You'
: lessonComment.groupmember.profile.fullname
};
});
isFetched = true;
scrollToBottom();
}
onMount(async () => {
lessonCommentChannel = supabase
.channel('any')
.on(
'postgres_changes',
{ event: '*', schema: 'public', table: 'lesson_comment' },
handleInsert
)
.subscribe();
});
onDestroy(() => {
supabase.removeChannel(lessonCommentChannel);
});
$: !isFetched && fetchComments($group.people, $lesson.id);
</script>
<PageNav title="Comments" overidableStyle="padding: 0 10px">
<div slot="widget">
<CloseButton onClick={handleClose} />
</div>
</PageNav>
<div bind:this={bodyRef} class="overflow-y-auto h-[87%] pb-10 px-2 md:min-w-[350px] w-full">
{#each comments as comment}
<div class="pb-2 mt-2">
<div class="flex items-start">
<img
alt="Placeholder"
class="block rounded-full"
width="24"
height="20"
src={comment.avatar}
/>
<div class="ml-2">
<p class="dark:text-white text-sm font-bold">{comment.name}</p>
<p class="dark:text-white text-xs font-normal text-gray-800">
{calDateDiff(comment.commentAt)}
</p>
</div>
</div>
<article class="prose prose-sm sm:prose ml-8 max-w-[300px] dark:text-white">
{comment.comment}
</article>
</div>
{/each}
</div>
<div class="footer">
<TextField
placeholder="Say something"
bind:value={comment}
onKeyDown={handleKeyDown}
isDisabled={isSaving}
/>
</div>
<style>
.footer {
position: absolute;
bottom: 0px;
width: 100%;
}
</style>
@@ -0,0 +1,12 @@
<script>
import PageNav from '$lib/components/PageNav/index.svelte';
import CloseButton from '$lib/components/Buttons/Close/index.svelte';
export let handleClose;
</script>
<PageNav title="Note" overidableStyle="padding: 0 10px">
<div slot="widget">
<CloseButton onClick={handleClose} />
</div>
</PageNav>
@@ -0,0 +1,7 @@
<script>
export let name;
export let src;
export let className;
</script>
<img alt={name} {src} class="w-10 h-10 rounded-full bg-primary-100 {className}" />
@@ -0,0 +1,121 @@
<script lang="ts">
import PrimaryButton from '$lib/components/PrimaryButton/index.svelte';
import { VARIANTS } from '$lib/components/PrimaryButton/constants';
import DateTime from '$lib/components/Form/DateTime.svelte';
import type { PollType } from '../types';
import { course } from '$lib/components/Course/store';
import { profile } from '$lib/utils/store/user';
import TextField from '$lib/components/Form/TextField.svelte';
import { Add, TrashCan } from 'carbon-icons-svelte';
import IconButton from '$lib/components/IconButton/index.svelte';
export let title = 'Poll';
export let isSaving = false;
export let onSubmit = (p: PollType) => {};
export let onCancel = () => {};
let poll: PollType = {
id: new Date().getTime().toString(),
courseId: $course.id || '',
question: '',
expiration: new Date().toDateString(),
isPublic: false,
status: 'draft',
author: {
id: $profile.id || '',
username: $profile.username || '',
fullname: $profile.fullname || '',
avatarUrl: $profile.avatar_url || ''
},
options: [
{
id: '',
label: '',
selectedBy: []
}
]
};
let isCreateDisabled = false;
function handleAddOptions() {
poll = {
...poll,
options: [
...poll.options,
{
id: '',
label: '',
selectedBy: []
}
]
};
}
function handleRemoveOptions(index: string | number) {
return () => {
poll.options = poll.options.filter((_, i) => i !== index);
};
}
function finishPoll() {
onSubmit(poll);
}
$: isCreateDisabled = poll.question === '' || poll.options.length < 2;
</script>
<div class="border rounded-md">
<div class="border-b-2 p-4 text-center">
{title}
</div>
<div class="p-3">
<TextField
label="Question"
className="w-full mb-3"
bind:value={poll.question}
placeholder="Poll question"
isRequired={true}
/>
<DateTime
label="Expiration"
className="w-full mb-3"
bind:value={poll.expiration}
isRequired={true}
/>
<div>
<p class="dark:text-white p-0 m-0 mb-1 text-md flex items-center gap-2">
Options
<IconButton onClick={handleAddOptions} contained={true} size="small">
<Add size={16} />
</IconButton>
</p>
</div>
{#each poll.options as option, index}
<div class="flex items-center gap-2 mb-3">
<TextField
label=""
className="w-full"
bind:value={option.label}
placeholder="Option Label"
isRequired={true}
/>
<IconButton onClick={handleRemoveOptions(index)} contained={true} size="small">
<TrashCan size={16} />
</IconButton>
</div>
{/each}
</div>
<div class="w-full flex justify-center gap-2 mb-3">
<PrimaryButton
label="Create poll"
onClick={finishPoll}
isLoading={isSaving}
isDisabled={isCreateDisabled}
/>
<PrimaryButton label="Cancel" variant={VARIANTS.OUTLINED} onClick={onCancel} />
</div>
</div>
@@ -0,0 +1,5 @@
<p
class="dark:text-white p-0 m-0 mb-1 uppercase text-sm font-bold text-gray-600"
>
<slot />
</p>
@@ -0,0 +1,204 @@
<script lang="ts">
import PrimaryButton from '$lib/components/PrimaryButton/index.svelte';
import { VARIANTS } from '$lib/components/PrimaryButton/constants';
import Label from './Label.svelte';
import Avatar from './Avatar.svelte';
import type { PollType } from '../types';
import { updatePollStatus } from '../service';
export let poll: PollType;
export let onSelect: (a: string) => void;
export let handlePollDelete = () => {};
export let currentUserId: number | string;
let viewResult = false;
let selectedOptionToView: { selectedBy: PollType['options'][0]['selectedBy'] } | null;
let isAuthor = false;
let totalVotes = 0;
let isThereAnyVote = false;
function getTotalVotes(options: PollType['options']) {
return options.reduce((acc, cur) => acc + cur.selectedBy.length, 0);
}
function calculatePercent(
options: PollType['options'],
currentOption: { selectedBy: string | PollType['options'][0]['selectedBy'] }
) {
const totalVoteOfAllOptions = getTotalVotes(options);
const totalVotesOfCurrentOption = currentOption.selectedBy.length;
return Math.round((totalVotesOfCurrentOption / totalVoteOfAllOptions) * 100) || 0;
}
function didUserSelect(
option: { selectedBy: PollType['options'][0]['selectedBy'] },
userId: number | string
) {
return option.selectedBy.find((user) => user.id === userId);
}
let prevStatus = poll.status;
function onStatusChange(status: string) {
if (status === prevStatus || !status) return;
updatePollStatus(poll.id, status);
prevStatus = status;
}
$: onStatusChange(poll.status);
$: isAuthor = currentUserId === poll.author.id;
$: totalVotes = getTotalVotes(poll.options);
$: {
isThereAnyVote = poll?.options?.some((option) => option.selectedBy.length) || false;
}
</script>
<div class="p-4 flex-wrap bg-white dark:bg-black border-2 rounded-md mb-3 w-full">
{#if selectedOptionToView}
<div>
<div class="flex items-center mb-5">
<button class="text-xl w-10 px-3" on:click={() => (selectedOptionToView = null)}>
{`<`}
</button>
<div class="flex-grow text-center">
<h3 class="dark:text-white font-bold">Voted</h3>
</div>
</div>
{#each selectedOptionToView.selectedBy as user}
<div class="flex items-center mb-2">
<Avatar src={user.avatarUrl} name={user.username} className="mr-2" />
<p class="dark:text-white">
{user.fullname}
</p>
</div>
{/each}
</div>
{:else}
<div class="flex flex-wrap gap-2 mb-3 justify-between">
<div>
<h3 class="dark:text-white font-bold">
{poll.question}
</h3>
<p class="dark:text-white text-sm italic">
Created by <span class="text-primary-500">@{poll.author.username}</span>
</p>
</div>
{#if isAuthor}
<div class="flex mb-3 justify-end items-center">
<label class="mr-2 font-bold" for="user-select">Status:</label>
<select
name="users"
id="user-select"
class="dark:text-white dark:bg-black"
bind:value={poll.status}
>
<option value="draft">Draft</option>
<option value="published">Publish</option>
</select>
</div>
{/if}
</div>
{#if viewResult}
<div class="flex items-center justify-between">
<div class="mr-5">
<Label>Expiration</Label>
<p class="dark:text-white text-sm text-gray-600 mb-4">
{poll.expiration || 'Today'}
</p>
</div>
<div class="flex flex-col items-center">
<Label>Total Votes</Label>
<p class="dark:text-white text-sm text-gray-600 mb-4">
{totalVotes}
</p>
</div>
</div>
<Label>Responses</Label>
{#each poll.options as option}
<div class="border-b p-5">
<p class="dark:text-white">
{option.label}
</p>
<div class="flex items-center">
<div class="w-4/5 h-2 bg-gray-200 relative">
<span
class="absolute top-0 left-0 bg-primary-700 h-full"
style="width: {calculatePercent(poll.options, option)}%;"
/>
</div>
{#if option.selectedBy.length}
<button class="text-xl px-3 ml-5" on:click={() => (selectedOptionToView = option)}>
>
</button>
{/if}
</div>
<div class="flex items-center">
{#each option.selectedBy.slice(0, 3) as user}
<Avatar src={user.avatarUrl} name={user.username} className="mr-2" />
{/each}
</div>
</div>
{/each}
{:else}
{#each poll.options as option, index}
<button
class="bg-white dark:bg-black rounded-md border-2 border-gray-100 h-[50px] {didUserSelect(
option,
currentUserId
) &&
'focus:border-primary-700 border-primary-700'} text-black dark:text-white p-2 w-full mb-3 text-left relative"
on:click={() => onSelect(option.id)}
>
{#if isThereAnyVote}
<span
class="progress absolute top-0 text-black left-0 {didUserSelect(option, currentUserId)
? 'bg-primary-700'
: 'bg-gray-300'} h-full bg-opacity-25"
style="width: {calculatePercent(poll.options, option)}%;"
/>
{/if}
<p
class="absolute top-3 {didUserSelect(option, currentUserId)
? 'text-white'
: 'dark:text-white text-black'} left-2"
>
{option.label}
({calculatePercent(poll.options, option)}%)
</p>
</button>
{/each}
<div class="flex items-center">
<p class="dark:text-white text-sm text-gray-600">
Expires: {poll.expiration || 'Today'}
</p>
<span class="mx-2">|</span>
<p class="dark:text-white text-sm text-gray-600">
Voted: {totalVotes}
</p>
</div>
{/if}
{#if isAuthor}
<div class="w-full flex items-center mt-3">
<PrimaryButton
label={viewResult ? 'Back' : 'Result'}
onClick={() => (viewResult = !viewResult)}
/>
<PrimaryButton label="Delete" variant={VARIANTS.TEXT_DANGER} onClick={handlePollDelete} />
</div>
{/if}
{/if}
</div>
<style>
.progress {
transition: width 0.5s linear;
}
</style>

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