init
42
CHANGELOG.md
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## 2025-05-22
|
||||||
|
|
||||||
|
- Fix bug with focus styles
|
||||||
|
|
||||||
|
## 2025-04-28
|
||||||
|
|
||||||
|
- Update template to Tailwind CSS v4.1.4
|
||||||
|
|
||||||
|
## 2025-04-10
|
||||||
|
|
||||||
|
- Update template to Tailwind CSS v4.1.3
|
||||||
|
|
||||||
|
## 2025-03-22
|
||||||
|
|
||||||
|
- Update template to Tailwind CSS v4.0.15
|
||||||
|
|
||||||
|
## 2025-02-10
|
||||||
|
|
||||||
|
- Update template to Tailwind CSS v4.0.6
|
||||||
|
|
||||||
|
## 2025-01-23
|
||||||
|
|
||||||
|
- Update template to Tailwind CSS v4.0
|
||||||
|
|
||||||
|
## 2024-10-07
|
||||||
|
|
||||||
|
- Tidy tier data on pricing page
|
||||||
|
|
||||||
|
## 2024-09-23
|
||||||
|
|
||||||
|
- Fix incorrect date format on blog post page ([#1632](https://github.com/tailwindlabs/tailwind-plus-issues/issues/1632))
|
||||||
|
- Update all images to use absolute paths ([#1631](https://github.com/tailwindlabs/tailwind-plus-issues/issues/1631))
|
||||||
|
|
||||||
|
## 2024-09-13
|
||||||
|
|
||||||
|
- Update dependencies
|
||||||
|
|
||||||
|
## 2024-09-12
|
||||||
|
|
||||||
|
- Initial release
|
129
LICENSE.md
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
# Tailwind Plus License
|
||||||
|
|
||||||
|
## Personal License
|
||||||
|
|
||||||
|
Tailwind Labs Inc. grants you an on-going, non-exclusive license to use the Components and Templates.
|
||||||
|
|
||||||
|
The license grants permission to **one individual** (the Licensee) to access and use the Components and Templates.
|
||||||
|
|
||||||
|
You **can**:
|
||||||
|
|
||||||
|
- Use the Components and Templates to create unlimited End Products.
|
||||||
|
- Modify the Components and Templates to create derivative components and templates. Those components and templates are subject to this license.
|
||||||
|
- Use the Components and Templates to create unlimited End Products for unlimited Clients.
|
||||||
|
- Use the Components and Templates to create End Products where the End Product is sold to End Users.
|
||||||
|
- Use the Components and Templates to create End Products that are open source and freely available to End Users.
|
||||||
|
|
||||||
|
You **cannot**:
|
||||||
|
|
||||||
|
- Use the Components and Templates to create End Products that are designed to allow an End User to build their own End Products using the Components and Templates or derivatives of the Components and Templates.
|
||||||
|
- Re-distribute the Components and Templates or derivatives of the Components and Templates separately from an End Product, neither in code or as design assets.
|
||||||
|
- Share your access to the Components and Templates with any other individuals.
|
||||||
|
- Use the Components and Templates to produce anything that may be deemed by Tailwind Labs Inc, in their sole and absolute discretion, to be competitive or in conflict with the business of Tailwind Labs Inc.
|
||||||
|
|
||||||
|
### Example usage
|
||||||
|
|
||||||
|
Examples of usage **allowed** by the license:
|
||||||
|
|
||||||
|
- Creating a personal website by yourself.
|
||||||
|
- Creating a website or web application for a client that will be owned by that client.
|
||||||
|
- Creating a commercial SaaS application (like an invoicing app for example) where end users have to pay a fee to use the application.
|
||||||
|
- Creating a commercial self-hosted web application that is sold to end users for a one-time fee.
|
||||||
|
- Creating a web application where the primary purpose is clearly not to simply re-distribute the components (like a conference organization app that uses the components for its UI for example) that is free and open source, where the source code is publicly available.
|
||||||
|
|
||||||
|
Examples of usage **not allowed** by the license:
|
||||||
|
|
||||||
|
- Creating a repository of your favorite Tailwind Plus components or templates (or derivatives based on Tailwind Plus components or templates) and publishing it publicly.
|
||||||
|
- Creating a React or Vue version of Tailwind Plus and making it available either for sale or for free.
|
||||||
|
- Create a Figma or Sketch UI kit based on the Tailwind Plus component designs.
|
||||||
|
- Creating a "website builder" project where end users can build their own websites using components or templates included with or derived from Tailwind Plus.
|
||||||
|
- Creating a theme, template, or project starter kit using the components or templates and making it available either for sale or for free.
|
||||||
|
- Creating an admin panel tool (like [Laravel Nova](https://nova.laravel.com/) or [ActiveAdmin](https://activeadmin.info/)) that is made available either for sale or for free.
|
||||||
|
|
||||||
|
In simple terms, use Tailwind Plus for anything you like as long as it doesn't compete with Tailwind Plus.
|
||||||
|
|
||||||
|
### Personal License Definitions
|
||||||
|
|
||||||
|
Licensee is the individual who has purchased a Personal License.
|
||||||
|
|
||||||
|
Components and Templates are the source code and design assets made available to the Licensee after purchasing a Tailwind Plus license.
|
||||||
|
|
||||||
|
End Product is any artifact produced that incorporates the Components or Templates or derivatives of the Components or Templates.
|
||||||
|
|
||||||
|
End User is a user of an End Product.
|
||||||
|
|
||||||
|
Client is an individual or entity receiving custom professional services directly from the Licensee, produced specifically for that individual or entity. Customers of software-as-a-service products are not considered clients for the purpose of this document.
|
||||||
|
|
||||||
|
## Team License
|
||||||
|
|
||||||
|
Tailwind Labs Inc. grants you an on-going, non-exclusive license to use the Components and Templates.
|
||||||
|
|
||||||
|
The license grants permission for **up to 25 Employees and Contractors of the Licensee** to access and use the Components and Templates.
|
||||||
|
|
||||||
|
You **can**:
|
||||||
|
|
||||||
|
- Use the Components and Templates to create unlimited End Products.
|
||||||
|
- Modify the Components and Templates to create derivative components and templates. Those components and templates are subject to this license.
|
||||||
|
- Use the Components and Templates to create unlimited End Products for unlimited Clients.
|
||||||
|
- Use the Components and Templates to create End Products where the End Product is sold to End Users.
|
||||||
|
- Use the Components and Templates to create End Products that are open source and freely available to End Users.
|
||||||
|
|
||||||
|
You **cannot**:
|
||||||
|
|
||||||
|
- Use the Components or Templates to create End Products that are designed to allow an End User to build their own End Products using the Components or Templates or derivatives of the Components or Templates.
|
||||||
|
- Re-distribute the Components or Templates or derivatives of the Components or Templates separately from an End Product.
|
||||||
|
- Use the Components or Templates to create End Products that are the property of any individual or entity other than the Licensee or Clients of the Licensee.
|
||||||
|
- Use the Components or Templates to produce anything that may be deemed by Tailwind Labs Inc, in their sole and absolute discretion, to be competitive or in conflict with the business of Tailwind Labs Inc.
|
||||||
|
|
||||||
|
### Example usage
|
||||||
|
|
||||||
|
Examples of usage **allowed** by the license:
|
||||||
|
|
||||||
|
- Creating a website for your company.
|
||||||
|
- Creating a website or web application for a client that will be owned by that client.
|
||||||
|
- Creating a commercial SaaS application (like an invoicing app for example) where end users have to pay a fee to use the application.
|
||||||
|
- Creating a commercial self-hosted web application that is sold to end users for a one-time fee.
|
||||||
|
- Creating a web application where the primary purpose is clearly not to simply re-distribute the components or templates (like a conference organization app that uses the components or a template for its UI for example) that is free and open source, where the source code is publicly available.
|
||||||
|
|
||||||
|
Examples of use **not allowed** by the license:
|
||||||
|
|
||||||
|
- Creating a repository of your favorite Tailwind Plus components or template (or derivatives based on Tailwind Plus components or templates) and publishing it publicly.
|
||||||
|
- Creating a React or Vue version of Tailwind Plus and making it available either for sale or for free.
|
||||||
|
- Creating a "website builder" project where end users can build their own websites using components or templates included with or derived from Tailwind Plus.
|
||||||
|
- Creating a theme or template using the components or templates and making it available either for sale or for free.
|
||||||
|
- Creating an admin panel tool (like [Laravel Nova](https://nova.laravel.com/) or [ActiveAdmin](https://activeadmin.info/)) that is made available either for sale or for free.
|
||||||
|
- Creating any End Product that is not the sole property of either your company or a client of your company. For example your employees/contractors can't use your company Tailwind Plus license to build their own websites or side projects.
|
||||||
|
|
||||||
|
### Team License Definitions
|
||||||
|
|
||||||
|
Licensee is the business entity who has purchased a Team License.
|
||||||
|
|
||||||
|
Components and Templates are the source code and design assets made available to the Licensee after purchasing a Tailwind Plus license.
|
||||||
|
|
||||||
|
End Product is any artifact produced that incorporates the Components or Templates or derivatives of the Components or Templates.
|
||||||
|
|
||||||
|
End User is a user of an End Product.
|
||||||
|
|
||||||
|
Employee is a full-time or part-time employee of the Licensee.
|
||||||
|
|
||||||
|
Contractor is an individual or business entity contracted to perform services for the Licensee.
|
||||||
|
|
||||||
|
Client is an individual or entity receiving custom professional services directly from the Licensee, produced specifically for that individual or entity. Customers of software-as-a-service products are not considered clients for the purpose of this document.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
If you are found to be in violation of the license, access to your Tailwind Plus account will be terminated, and a refund may be issued at our discretion. When license violation is blatant and malicious (such as intentionally redistributing the Components or Templates through private warez channels), no refund will be issued.
|
||||||
|
|
||||||
|
The copyright of the Components and Templates is owned by Tailwind Labs Inc. You are granted only the permissions described in this license; all other rights are reserved. Tailwind Labs Inc. reserves the right to pursue legal remedies for any unauthorized use of the Components or Templates outside the scope of this license.
|
||||||
|
|
||||||
|
## Liability
|
||||||
|
|
||||||
|
Tailwind Labs Inc.’s liability to you for costs, damages, or other losses arising from your use of the Components or Templates — including third-party claims against you — is limited to a refund of your license fee. Tailwind Labs Inc. may not be held liable for any consequential damages related to your use of the Components or Templates.
|
||||||
|
|
||||||
|
This Agreement is governed by the laws of the Province of Ontario and the applicable laws of Canada. Legal proceedings related to this Agreement may only be brought in the courts of Ontario. You agree to service of process at the e-mail address on your original order.
|
||||||
|
|
||||||
|
## Questions?
|
||||||
|
|
||||||
|
Unsure which license you need, or unsure if your use case is covered by our licenses?
|
||||||
|
|
||||||
|
Email us at [support@tailwindcss.com](mailto:support@tailwindcss.com) with your questions.
|
52
README.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# Radiant
|
||||||
|
|
||||||
|
Radiant is a [Tailwind Plus](https://tailwindcss.com/plus) site template built using [Tailwind CSS](https://tailwindcss.com) and [Next.js](https://nextjs.org), with a blog powered by [Sanity](https://www.sanity.io).
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
|
To get started with this template, first install the npm dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, create a new Sanity project to power the blog within this template:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm create sanity@latest -- --env=.env.local --create-project "Radiant Blog" --dataset production
|
||||||
|
```
|
||||||
|
|
||||||
|
This will prompt you to create a new Sanity account if you don't have one already. When asked "Would you like to add configuration files for a Sanity project in this Next.js folder?", choose "n".
|
||||||
|
|
||||||
|
Next, optionally import the demo seed data for the blog:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx sanity@latest dataset import seed.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, run the development server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, open [http://localhost:3000](http://localhost:3000) in your browser to view the website.
|
||||||
|
|
||||||
|
To manage your blog content, visit the embedded Sanity Studio at [http://localhost:3000/studio](http://localhost:3000/studio).
|
||||||
|
|
||||||
|
## Customizing
|
||||||
|
|
||||||
|
You can start editing this template by modifying the files in the `/src` folder. The site will auto-update as you edit these files.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This site template is a commercial product and is licensed under the [Tailwind Plus license](https://tailwindcss.com/plus/license).
|
||||||
|
|
||||||
|
## Learn more
|
||||||
|
|
||||||
|
To learn more about the technologies used in this site template, see the following resources:
|
||||||
|
|
||||||
|
- [Tailwind CSS](https://tailwindcss.com/docs) - the official Tailwind CSS documentation
|
||||||
|
- [Next.js](https://nextjs.org/docs) - the official Next.js documentation
|
||||||
|
- [Headless UI](https://headlessui.dev) - the official Headless UI documentation
|
||||||
|
- [Sanity](https://www.sanity.io) - the Sanity website
|
5
next-env.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/// <reference types="next" />
|
||||||
|
/// <reference types="next/image-types/global" />
|
||||||
|
|
||||||
|
// NOTE: This file should not be edited
|
||||||
|
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
4
next.config.mjs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {}
|
||||||
|
|
||||||
|
export default nextConfig
|
14741
package-lock.json
generated
Normal file
42
package.json
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"name": "radiant",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start",
|
||||||
|
"lint": "next lint",
|
||||||
|
"typegen": "sanity schema extract --path=src/sanity/extract.json && sanity typegen generate && rm ./src/sanity/extract.json"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@headlessui/react": "^2.1.1",
|
||||||
|
"@heroicons/react": "^2.1.4",
|
||||||
|
"@sanity/image-url": "^1.0.2",
|
||||||
|
"@sanity/vision": "^3.52.2",
|
||||||
|
"clsx": "^2.1.1",
|
||||||
|
"dayjs": "^1.11.12",
|
||||||
|
"feed": "^4.2.2",
|
||||||
|
"framer-motion": "^11.2.10",
|
||||||
|
"next": "14.2.11",
|
||||||
|
"next-sanity": "^9.4.7",
|
||||||
|
"react": "^18",
|
||||||
|
"react-dom": "^18",
|
||||||
|
"react-use-measure": "^2.1.1",
|
||||||
|
"sanity": "^3.55.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@tailwindcss/postcss": "^4.1.7",
|
||||||
|
"@types/node": "^20",
|
||||||
|
"@types/react": "^18",
|
||||||
|
"@types/react-dom": "^18",
|
||||||
|
"eslint": "^8",
|
||||||
|
"eslint-config-next": "14.2.11",
|
||||||
|
"postcss": "^8.4.40",
|
||||||
|
"prettier": "^3.3.2",
|
||||||
|
"prettier-plugin-organize-imports": "^4.0.0",
|
||||||
|
"prettier-plugin-tailwindcss": "^0.6.11",
|
||||||
|
"tailwindcss": "^4.1.7",
|
||||||
|
"typescript": "^5"
|
||||||
|
}
|
||||||
|
}
|
5
postcss.config.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
'@tailwindcss/postcss': {},
|
||||||
|
},
|
||||||
|
}
|
8
prettier.config.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/** @type {import('prettier').Options} */
|
||||||
|
module.exports = {
|
||||||
|
singleQuote: true,
|
||||||
|
semi: false,
|
||||||
|
plugins: ['prettier-plugin-organize-imports', 'prettier-plugin-tailwindcss'],
|
||||||
|
tailwindFunctions: ['clsx'],
|
||||||
|
tailwindStylesheet: './src/styles/tailwind.css',
|
||||||
|
}
|
BIN
public/company/1.jpg
Normal file
After Width: | Height: | Size: 373 KiB |
BIN
public/company/2.jpg
Normal file
After Width: | Height: | Size: 303 KiB |
BIN
public/company/3.jpg
Normal file
After Width: | Height: | Size: 290 KiB |
BIN
public/company/4.jpg
Normal file
After Width: | Height: | Size: 283 KiB |
BIN
public/company/5.jpg
Normal file
After Width: | Height: | Size: 173 KiB |
4
public/dot-texture.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg width="12" height="32" viewBox="0 0 12 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect width="2" height="2" fill="white" fill-opacity="0.1"/>
|
||||||
|
<rect y="16" width="2" height="2" fill="white" fill-opacity="0.05"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 233 B |
BIN
public/individual-investors/alicia-bell.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
public/individual-investors/anna-roberts.jpg
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
public/individual-investors/benjamin-russel.jpg
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
public/individual-investors/emma-dorsey.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
public/individual-investors/jenny-wilson.jpg
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
public/individual-investors/kristin-watson.jpg
Normal file
After Width: | Height: | Size: 7.8 KiB |
14
public/investors/deccel.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<svg width="146" height="48" viewBox="0 0 146 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_1030_1042)">
|
||||||
|
<path d="M146 0H-62V48H146V0Z" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
<path d="M118.611 37.0639C117.82 36.1194 117.222 35.0327 116.849 33.8636L116.747 33.5685L116.644 33.2076L116.581 32.9834L116.479 32.5703L116.428 32.3258C116.376 32.0889 116.331 31.8504 116.295 31.6108C116.287 31.5225 116.273 31.4347 116.255 31.3478L116.204 30.9212C116.214 30.827 116.214 30.7321 116.204 30.6379L116.173 30.2771L134.046 25.8425C133.941 24.8931 133.666 23.9697 133.234 23.1159C132.583 21.6443 131.506 20.3963 130.138 19.5294C128.647 18.5567 126.959 17.92 125.191 17.6645L124.891 17.6173C123.831 17.4966 122.761 17.4966 121.702 17.6173C118.865 17.941 116.216 19.1789 114.162 21.1397C112.091 23.0949 110.72 25.6637 110.256 28.4577V28.569C110.222 28.7545 110.198 28.9298 110.18 29.1339C110.159 29.3362 110.18 29.3632 110.14 29.4947C110.149 29.5959 110.149 29.697 110.14 29.7982C110.153 29.9728 110.153 30.148 110.14 30.3226V31.1707C110.181 32.6887 110.492 34.1876 111.06 35.5986C113.119 40.5121 117.823 43.7293 123.022 43.7765C125.184 43.8196 127.323 43.3275 129.244 42.345C131.172 41.3599 132.821 39.9173 134.046 38.1464L133.739 37.3522C132.475 39.836 123.755 42.9233 118.611 37.0639ZM126.742 26.151L116.115 28.7798C116.115 28.451 116.115 28.1222 116.16 27.8136V27.7141C116.155 27.6096 116.155 27.505 116.16 27.4005L116.211 26.9722C116.306 26.2893 116.457 25.6148 116.658 24.9555C117.018 23.7331 117.57 22.5797 118.292 21.5394C118.943 20.5882 119.789 19.7828 120.775 19.1754C121.705 18.6007 122.78 18.2995 123.876 18.307C125.399 18.307 126.515 18.7454 127.221 19.6222C127.479 19.9257 127.694 20.268 127.859 20.6339C128.569 22.492 128.516 25.5862 126.742 26.151ZM86.7163 37.332C85.4371 39.8427 76.733 42.9233 71.5869 37.0706C70.7443 36.0589 70.1132 34.8769 69.7362 33.6005C69.2923 32.1507 69.0771 30.6418 69.0983 29.1271C69.0885 27.7127 69.2909 26.3046 69.6987 24.9488C70.0586 23.7263 70.6113 22.573 71.3328 21.5326C71.9792 20.5833 72.8082 19.779 73.7719 19.1754C74.7013 18.601 75.7768 18.2998 76.8728 18.307C78.396 18.307 79.5115 18.7454 80.216 19.6222C80.9443 20.5681 81.3212 21.7518 81.2769 22.9591C81.2923 23.5864 81.2019 24.2102 81.0091 24.8055L86.4332 23.4903C84.4614 18.2362 77.9252 17.506 76.7193 17.506C66.3658 17.3357 60.6859 27.36 64.029 35.5261C66.0912 40.443 70.7955 43.6636 75.9978 43.7175C78.1609 43.7604 80.3006 43.2677 82.2218 42.2843C84.1487 41.2998 85.798 39.8577 87.0216 38.0874L86.7163 37.332Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M46.4704 37.0645C45.6798 36.12 45.0815 35.0333 44.7084 33.8642L44.6061 33.5691L44.5038 33.2082L44.4406 32.984L44.3383 32.5709L44.2871 32.3264C44.2354 32.0895 44.191 31.851 44.1541 31.6114C44.1461 31.5231 44.133 31.4353 44.1149 31.3484L44.0637 30.9218C44.074 30.8276 44.074 30.7327 44.0637 30.6385L44.033 30.2777L61.9055 25.8431C61.8005 24.8937 61.5255 23.9703 61.0935 23.1165C60.4425 21.6449 59.3655 20.3969 57.9975 19.53C56.5065 18.5573 54.8185 17.9206 53.0509 17.6651L52.7507 17.6179C51.691 17.4972 50.6208 17.4972 49.5611 17.6179C46.7249 17.9416 44.0755 19.1795 42.022 21.1403C39.9505 23.0955 38.5794 25.6643 38.116 28.4583V28.5696C38.0819 28.7551 38.058 28.9304 38.0392 29.1345C38.0313 29.212 38.0295 29.2638 38.028 29.3055C38.0256 29.3728 38.0242 29.4142 38 29.4953C38.0085 29.5965 38.0085 29.6976 38 29.7988C38.0127 29.9734 38.0127 30.1486 38 30.3232V31.1713C38.0408 32.6893 38.352 34.1882 38.9193 35.5992C40.9781 40.5127 45.6824 43.7299 50.8813 43.7771C53.0437 43.8202 55.1825 43.3281 57.1035 42.3456C59.0315 41.3605 60.6805 39.9179 61.9055 38.147L61.5985 37.3528C60.3345 39.8366 51.6147 42.9239 46.4704 37.0645ZM43.975 28.7804L54.6015 26.1516C56.3755 25.5868 56.4285 22.4926 55.7185 20.6345C55.5535 20.2686 55.3385 19.9263 55.0805 19.6228C54.3745 18.746 53.259 18.3076 51.7359 18.3076C50.6398 18.3001 49.5642 18.6013 48.6349 19.176C47.6488 19.7834 46.8028 20.5888 46.1514 21.54C45.4299 22.5803 44.8773 23.7337 44.5174 24.9561C44.3161 25.6154 44.166 26.2899 44.0705 26.9728L44.0193 27.4011C44.0143 27.5056 44.0143 27.6102 44.0193 27.7147V27.8142C43.975 28.1228 43.975 28.4516 43.975 28.7804Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M110.253 37.334C108.977 39.8447 100.271 42.9253 95.1268 37.0726C94.2874 36.0588 93.6642 34.8876 93.2949 33.6294C92.8502 32.1797 92.6345 30.6708 92.6552 29.156C92.6455 27.7416 92.8478 26.3335 93.2556 24.9777C93.6138 23.7552 94.1648 22.6002 94.8829 21.5615C95.5216 20.6096 96.3519 19.798 97.322 19.1773C98.2517 18.6023 99.328 18.3011 100.425 18.3089C101.943 18.3089 103.058 18.7473 103.768 19.6241C104.503 20.5684 104.887 21.7521 104.847 22.9611C104.864 23.5875 104.771 24.2122 104.573 24.8074L109.966 23.4922C108.006 18.2381 101.472 17.5147 100.278 17.5147C89.9244 17.3444 84.2445 27.3687 87.5876 35.5348C89.6345 40.4635 94.3404 43.6992 99.5496 43.7599C101.717 43.805 103.861 43.3122 105.786 42.3267C107.712 41.3414 109.362 39.8988 110.585 38.1281L110.254 37.3356L110.253 37.334ZM141.868 38.5042V5L134.209 6.91886H134.158V7.66077C134.426 7.66077 136.744 8.31838 136.744 9.96071V38.3861C136.744 41.9726 134.279 42.4919 132.613 42.6015V43.2001H145.999V42.6032C144.339 42.4919 141.926 41.9659 141.868 38.5042Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M1 43V42.4242L2.24752 41.9636C3.51485 41.4646 4.14851 40.4859 4.14851 39.0273V8.97273C4.14851 7.43737 3.51485 6.45859 2.24752 6.03636L1 5.57576V5H16.6832C20.8812 5 24.4851 5.76768 27.4951 7.30303C30.5446 8.8 32.8812 10.9687 34.505 13.8091C36.1683 16.6111 37 19.9889 37 23.9424C37 27.9727 36.1089 31.4081 34.3267 34.2485C32.5446 37.0889 30.0495 39.2576 26.8416 40.7545C23.6733 42.2515 19.9307 43 15.6139 43H1ZM10.0594 41.8485H16.6139C19.4653 41.8485 23.7624 41.3111 25.5049 40.2364C27.2475 39.1232 29.5149 37.2808 30.3069 34.7091C31.1386 32.099 31.5545 28.5293 31.5545 24C31.5545 19.4707 31.1386 15.9202 30.3069 13.3485C29.5149 10.7384 27.2673 8.89596 25.5644 7.82121C23.8614 6.70808 19.6238 6.15151 16.8515 6.15151H10.0594V41.8485Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_1030_1042">
|
||||||
|
<rect width="146" height="48" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.2 KiB |
27
public/investors/remington-schwartz.svg
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<svg width="162" height="48" viewBox="0 0 162 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_1031_1056)">
|
||||||
|
<path d="M170 0H0V48H170V0Z" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
<path d="M0 23.0018V9.07743H3.19705L3.24989 13.5163L2.80072 12.5123C2.99448 11.8077 3.32916 11.1736 3.80475 10.6099C4.28035 10.0462 4.8264 9.60586 5.44291 9.2888C6.07704 8.95412 6.73758 8.78679 7.42455 8.78679C7.724 8.78679 8.00583 8.81321 8.27005 8.86605C8.55189 8.9189 8.78087 8.98055 8.95702 9.05101L8.0851 12.618C7.89134 12.5123 7.65354 12.4242 7.37171 12.3537C7.08987 12.2833 6.80804 12.2481 6.52621 12.2481C6.08584 12.2481 5.66309 12.3361 5.25796 12.5123C4.87044 12.6708 4.52695 12.8998 4.2275 13.1992C3.92805 13.4987 3.69026 13.851 3.51411 14.2561C3.35558 14.6436 3.27631 15.084 3.27631 15.5772V23.0018H0Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M15.2041 23.266C13.7421 23.266 12.4475 22.9577 11.3201 22.3412C10.2104 21.7247 9.33849 20.888 8.70436 19.8311C8.08785 18.7566 7.77959 17.5324 7.77959 16.1585C7.77959 15.0664 7.95574 14.0712 8.30803 13.1728C8.66032 12.2745 9.14473 11.4994 9.76124 10.8477C10.3954 10.1783 11.144 9.66752 12.0071 9.31522C12.8878 8.94532 13.8478 8.76036 14.8871 8.76036C15.803 8.76036 16.6574 8.93651 17.45 9.2888C18.2427 9.64109 18.9296 10.1255 19.5109 10.742C20.0922 11.3409 20.5326 12.0631 20.832 12.9086C21.1491 13.7365 21.2988 14.6436 21.2812 15.6301L21.2548 16.7662H9.97261L9.36491 14.5468H18.5333L18.1106 14.9959V14.4146C18.0577 13.8686 17.8816 13.393 17.5821 12.9879C17.2827 12.5651 16.8951 12.2392 16.4196 12.0103C15.9616 11.7637 15.4508 11.6404 14.8871 11.6404C14.024 11.6404 13.293 11.8077 12.6941 12.1424C12.1128 12.477 11.6724 12.9614 11.373 13.5956C11.0735 14.2121 10.9238 14.9871 10.9238 15.9207C10.9238 16.819 11.1088 17.6029 11.4787 18.2722C11.8662 18.9416 12.4034 19.4612 13.0904 19.8311C13.795 20.1834 14.6141 20.3596 15.5476 20.3596C16.1994 20.3596 16.7983 20.2539 17.3443 20.0425C17.8904 19.8311 18.4805 19.4524 19.1146 18.9064L20.7263 21.1522C20.2507 21.5926 19.7047 21.9713 19.0882 22.2884C18.4893 22.5878 17.8551 22.8256 17.1858 23.0018C16.5164 23.1779 15.8559 23.266 15.2041 23.266Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M22.2571 23.0018V9.07743H25.4542L25.507 11.8781L24.9786 12.0895C25.1371 11.6315 25.3749 11.2088 25.692 10.8213C26.009 10.4161 26.3878 10.0727 26.8281 9.79082C27.2685 9.49137 27.7353 9.26238 28.2285 9.10385C28.7217 8.9277 29.2237 8.83963 29.7345 8.83963C30.492 8.83963 31.1613 8.96293 31.7426 9.20954C32.3415 9.43853 32.8347 9.80843 33.2222 10.3193C33.6274 10.8301 33.9268 11.4818 34.1206 12.2745L33.6185 12.1688L33.8299 11.746C34.0237 11.3233 34.2967 10.9446 34.649 10.6099C35.0013 10.2576 35.3976 9.94935 35.838 9.68513C36.2784 9.4033 36.7363 9.19192 37.2119 9.05101C37.7051 8.91009 38.1895 8.83963 38.6651 8.83963C39.722 8.83963 40.6027 9.05101 41.3073 9.47376C42.0119 9.89651 42.5403 10.5394 42.8926 11.4026C43.2449 12.2657 43.4211 13.3314 43.4211 14.5996V23.0018H40.1448V14.811C40.1448 14.1064 40.0479 13.5251 39.8541 13.0671C39.678 12.6092 39.3961 12.2745 39.0086 12.0631C38.6387 11.8341 38.1719 11.7196 37.6083 11.7196C37.1679 11.7196 36.7451 11.7989 36.34 11.9574C35.9525 12.0983 35.6178 12.3097 35.336 12.5915C35.0541 12.8558 34.834 13.164 34.6754 13.5163C34.5169 13.8686 34.4376 14.2561 34.4376 14.6789V23.0018H31.1613V14.7846C31.1613 14.1152 31.0644 13.5603 30.8707 13.12C30.6769 12.662 30.3951 12.3185 30.0252 12.0895C29.6553 11.8429 29.2061 11.7196 28.6777 11.7196C28.2373 11.7196 27.8234 11.7989 27.4358 11.9574C27.0483 12.0983 26.7136 12.3009 26.4318 12.5651C26.15 12.8293 25.9298 13.1376 25.7712 13.4899C25.6127 13.8422 25.5335 14.2297 25.5335 14.6524V23.0018H22.2571Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M45.5493 23.0018V9.07743H48.7992V23.0018H45.5493ZM47.1346 6.11817C46.4828 6.11817 45.972 5.95964 45.6021 5.64258C45.2498 5.3079 45.0737 4.84112 45.0737 4.24222C45.0737 3.67855 45.2586 3.22057 45.6285 2.86828C45.9984 2.51599 46.5005 2.33984 47.1346 2.33984C47.8039 2.33984 48.3148 2.50718 48.6671 2.84186C49.037 3.15892 49.2219 3.62571 49.2219 4.24222C49.2219 4.78827 49.037 5.23745 48.6671 5.58974C48.2972 5.94203 47.7863 6.11817 47.1346 6.11817Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M51.0706 23.0018V9.07743H54.2412L54.2941 11.931L53.6864 12.2481C53.8625 11.6139 54.206 11.0415 54.7168 10.5306C55.2277 10.0022 55.8354 9.57944 56.54 9.26238C57.2445 8.94532 57.9667 8.78679 58.7065 8.78679C59.7634 8.78679 60.6442 8.99816 61.3487 9.42091C62.0709 9.84366 62.6082 10.4778 62.9605 11.3233C63.3304 12.1688 63.5153 13.2257 63.5153 14.4939V23.0018H60.2654V14.7317C60.2654 14.0271 60.1686 13.4458 59.9748 12.9879C59.781 12.5123 59.4816 12.1688 59.0765 11.9574C58.6713 11.7284 58.1781 11.6227 57.5968 11.6404C57.1212 11.6404 56.6809 11.7196 56.2757 11.8781C55.8882 12.0191 55.5447 12.2304 55.2453 12.5123C54.9634 12.7765 54.7345 13.0847 54.5583 13.437C54.3998 13.7893 54.3205 14.1769 54.3205 14.5996V23.0018H52.7088C52.3917 23.0018 52.0923 23.0018 51.8104 23.0018C51.5462 23.0018 51.2996 23.0018 51.0706 23.0018Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M71.5839 29.0788C70.5447 29.0788 69.5054 28.9203 68.4661 28.6032C67.4445 28.2861 66.6166 27.8722 65.9825 27.3614L67.145 24.957C67.5149 25.2212 67.9289 25.4502 68.3869 25.644C68.8449 25.8377 69.3292 25.9874 69.8401 26.0931C70.3685 26.1988 70.8881 26.2517 71.399 26.2517C72.3325 26.2517 73.1076 26.1019 73.7241 25.8025C74.3582 25.5207 74.8338 25.0803 75.1509 24.4814C75.4679 23.9001 75.6265 23.1691 75.6265 22.2884V19.7254L76.1021 19.9104C75.9964 20.4565 75.7057 20.9761 75.2301 21.4693C74.7545 21.9625 74.1556 22.3676 73.4334 22.6847C72.7113 22.9841 71.9714 23.1339 71.214 23.1339C69.8929 23.1339 68.7215 22.8256 67.6999 22.2091C66.6959 21.5926 65.8944 20.7559 65.2955 19.699C64.7142 18.6245 64.4236 17.3915 64.4236 16C64.4236 14.6084 64.7142 13.3754 65.2955 12.3009C65.8768 11.2088 66.6694 10.3545 67.6735 9.73797C68.6951 9.10385 69.8401 8.78679 71.1083 8.78679C71.6368 8.78679 72.1476 8.84844 72.6408 8.97174C73.134 9.09504 73.5832 9.27119 73.9883 9.50018C74.4111 9.72917 74.7898 9.98458 75.1245 10.2664C75.4591 10.5482 75.7322 10.8477 75.9435 11.1648C76.1549 11.4818 76.287 11.7901 76.3399 12.0895L75.6529 12.3009L75.7057 9.07743H78.9028V22.0506C78.9028 23.1779 78.7354 24.1731 78.4008 25.0362C78.0661 25.8994 77.5817 26.6304 76.9476 27.2293C76.3134 27.8458 75.5472 28.3038 74.6489 28.6032C73.7505 28.9203 72.7289 29.0788 71.5839 29.0788ZM71.716 20.3596C72.5087 20.3596 73.2045 20.1746 73.8034 19.8047C74.4199 19.4348 74.8955 18.924 75.2301 18.2722C75.5648 17.6205 75.7322 16.8719 75.7322 16.0264C75.7322 15.1633 75.556 14.4058 75.2037 13.7541C74.869 13.0847 74.4023 12.5651 73.8034 12.1952C73.2045 11.8253 72.5087 11.6404 71.716 11.6404C70.9234 11.6404 70.2276 11.8341 69.6287 12.2216C69.0298 12.5915 68.5542 13.1112 68.2019 13.7805C67.8672 14.4323 67.6999 15.1809 67.6999 16.0264C67.6999 16.8543 67.8672 17.6029 68.2019 18.2722C68.5542 18.924 69.0298 19.4348 69.6287 19.8047C70.2276 20.1746 70.9234 20.3596 71.716 20.3596Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M82.3178 23.0018V5.53689H85.5677V23.0018H82.3178ZM79.5699 12.0895V9.07743H88.6062V12.0895H79.5699Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M95.4703 23.266C94.0788 23.266 92.837 22.9577 91.7449 22.3412C90.6527 21.7071 89.7896 20.844 89.1555 19.7519C88.5214 18.6598 88.2043 17.4179 88.2043 16.0264C88.2043 14.6348 88.5214 13.393 89.1555 12.3009C89.7896 11.2088 90.6527 10.3545 91.7449 9.73797C92.837 9.10385 94.0788 8.78679 95.4703 8.78679C96.8443 8.78679 98.0773 9.10385 99.1694 9.73797C100.262 10.3545 101.116 11.2088 101.732 12.3009C102.366 13.393 102.684 14.6348 102.684 16.0264C102.684 17.4179 102.366 18.6598 101.732 19.7519C101.116 20.844 100.262 21.7071 99.1694 22.3412C98.0773 22.9577 96.8443 23.266 95.4703 23.266ZM95.4703 20.386C96.2278 20.386 96.8971 20.1922 97.4784 19.8047C98.0773 19.4172 98.5441 18.8976 98.8788 18.2458C99.2311 17.5941 99.3984 16.8543 99.3808 16.0264C99.3984 15.1809 99.2311 14.4323 98.8788 13.7805C98.5441 13.1288 98.0773 12.618 97.4784 12.2481C96.8971 11.8605 96.2278 11.6668 95.4703 11.6668C94.7129 11.6668 94.0259 11.8605 93.4094 12.2481C92.8105 12.618 92.3437 13.1376 92.0091 13.8069C91.6744 14.4587 91.507 15.1985 91.507 16.0264C91.507 16.8543 91.6744 17.5941 92.0091 18.2458C92.3437 18.8976 92.8105 19.4172 93.4094 19.8047C94.0259 20.1922 94.7129 20.386 95.4703 20.386Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M103.741 23.0018V9.07743H106.912L106.964 11.931L106.357 12.2481C106.533 11.6139 106.876 11.0415 107.387 10.5306C107.898 10.0022 108.506 9.57944 109.21 9.26238C109.915 8.94532 110.637 8.78679 111.377 8.78679C112.434 8.78679 113.315 8.99816 114.019 9.42091C114.741 9.84366 115.279 10.4778 115.631 11.3233C116.001 12.1688 116.186 13.2257 116.186 14.4939V23.0018H112.936V14.7317C112.936 14.0271 112.839 13.4458 112.645 12.9879C112.451 12.5123 112.152 12.1688 111.747 11.9574C111.342 11.7284 110.848 11.6227 110.267 11.6404C109.792 11.6404 109.351 11.7196 108.946 11.8781C108.559 12.0191 108.215 12.2304 107.916 12.5123C107.634 12.7765 107.405 13.0847 107.229 13.437C107.07 13.7893 106.991 14.1769 106.991 14.5996V23.0018H105.379C105.062 23.0018 104.763 23.0018 104.481 23.0018C104.217 23.0018 103.97 23.0018 103.741 23.0018Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M62.5095 43.4925C61.2764 43.4925 60.1667 43.29 59.1803 42.8848C58.2115 42.4621 57.4188 41.8632 56.8023 41.0882L58.9161 39.265C59.4445 39.8639 60.0346 40.2955 60.6863 40.5597C61.3381 40.8239 62.0251 40.956 62.7473 40.956C63.0467 40.956 63.3109 40.9208 63.5399 40.8504C63.7865 40.7799 63.9979 40.6742 64.174 40.5333C64.3502 40.3924 64.4823 40.2338 64.5704 40.0577C64.6761 39.8639 64.7289 39.6526 64.7289 39.4236C64.7289 39.0008 64.5704 38.6661 64.2533 38.4195C64.0772 38.2962 63.7953 38.1641 63.4078 38.0232C63.0379 37.8823 62.5535 37.7414 61.9546 37.6005C61.0034 37.3539 60.2108 37.072 59.5766 36.755C58.9425 36.4203 58.4493 36.0504 58.097 35.6452C57.7976 35.3106 57.5686 34.9319 57.41 34.5091C57.2691 34.0864 57.1987 33.6284 57.1987 33.1352C57.1987 32.5187 57.3308 31.9638 57.595 31.4706C57.8768 30.9598 58.2555 30.5194 58.7311 30.1495C59.2067 29.7796 59.7616 29.4977 60.3957 29.304C61.0298 29.1102 61.6904 29.0133 62.3773 29.0133C63.0819 29.0133 63.7601 29.1014 64.4118 29.2776C65.0812 29.4537 65.6977 29.7091 66.2614 30.0438C66.8426 30.3609 67.3359 30.7484 67.741 31.2064L65.9443 33.188C65.6096 32.8709 65.2397 32.5891 64.8346 32.3425C64.4471 32.0959 64.0507 31.9021 63.6456 31.7612C63.2405 31.6027 62.8618 31.5234 62.5095 31.5234C62.1748 31.5234 61.8753 31.5587 61.6111 31.6291C61.3469 31.682 61.1267 31.77 60.9506 31.8933C60.7744 32.0166 60.6335 32.1752 60.5278 32.3689C60.4397 32.5451 60.3957 32.7564 60.3957 33.0031C60.4133 33.2144 60.4662 33.417 60.5542 33.6108C60.6599 33.7869 60.8008 33.9366 60.977 34.0599C61.1708 34.1832 61.4614 34.3242 61.8489 34.4827C62.2364 34.6412 62.7385 34.7909 63.355 34.9319C64.2181 35.1608 64.9403 35.4163 65.5216 35.6981C66.1028 35.9799 66.5608 36.3058 66.8955 36.6757C67.2302 36.9928 67.468 37.3627 67.6089 37.7854C67.7498 38.2082 67.8203 38.675 67.8203 39.1858C67.8203 40.0137 67.5825 40.7535 67.1069 41.4052C66.6489 42.057 66.0148 42.5678 65.2045 42.9377C64.4118 43.3076 63.5135 43.4925 62.5095 43.4925Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M75.3334 43.4925C74.0299 43.4925 72.8585 43.1755 71.8193 42.5414C70.78 41.9072 69.9609 41.0441 69.362 39.952C68.7631 38.8599 68.4637 37.6269 68.4637 36.2529C68.4637 34.879 68.7631 33.646 69.362 32.5539C69.9609 31.4618 70.78 30.5987 71.8193 29.9645C72.8585 29.3304 74.0299 29.0133 75.3334 29.0133C76.584 29.0133 77.7201 29.2511 78.7418 29.7267C79.7634 30.2023 80.5561 30.8629 81.1198 31.7084L79.3231 33.875C79.0589 33.5051 78.7242 33.1704 78.319 32.8709C77.9139 32.5715 77.4823 32.3337 77.0244 32.1576C76.5664 31.9814 76.1084 31.8933 75.6504 31.8933C74.8754 31.8933 74.1796 32.0871 73.5631 32.4746C72.9642 32.8445 72.4886 33.3642 72.1363 34.0335C71.784 34.6852 71.6079 35.4251 71.6079 36.2529C71.6079 37.0808 71.784 37.8206 72.1363 38.4724C72.5062 39.1241 72.9994 39.6438 73.6159 40.0313C74.2325 40.4188 74.9194 40.6126 75.6768 40.6126C76.1348 40.6126 76.5752 40.5421 76.9979 40.4012C77.4383 40.2427 77.8523 40.0225 78.2398 39.7406C78.6273 39.4588 78.9884 39.1065 79.3231 38.6838L81.1198 40.8768C80.5209 41.6518 79.693 42.2859 78.6361 42.7792C77.5968 43.2547 76.4959 43.4925 75.3334 43.4925Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M82.284 43.2283L82.3178 23.0018H85.5677L85.5074 32.1576L84.8997 32.4746C85.0759 31.8405 85.4194 31.268 85.9302 30.7572C86.441 30.2288 87.0487 29.806 87.7533 29.4889C88.4579 29.1719 89.1801 29.0133 89.9199 29.0133C90.9768 29.0133 91.8575 29.2247 92.5621 29.6475C93.2843 30.0702 93.8215 30.7044 94.1738 31.5499C94.5437 32.3954 94.7287 33.4522 94.7287 34.7205V43.2283H91.4788V34.9583C91.4788 34.2537 91.3819 33.6724 91.1881 33.2144C90.9944 32.7388 90.6949 32.3954 90.2898 32.184C89.8847 31.955 89.3915 31.8493 88.8102 31.8669C88.3346 31.8669 87.8942 31.9462 87.4891 32.1047C87.1016 32.2456 86.7581 32.457 86.4586 32.7388C86.1768 33.0031 85.9478 33.3113 85.7717 33.6636C85.6131 34.0159 85.5339 34.4034 85.5339 34.8262V43.2283H83.9221C83.6051 43.2283 83.3056 43.2283 83.0238 43.2283C82.7596 43.2283 82.513 43.2283 82.284 43.2283Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M100.34 43.2283L95.6634 29.304L98.9925 29.2776L102.11 39.2122L101.529 39.1594L104.911 31.3913H106.866L110.328 39.1594L109.641 39.2386L112.785 29.304H116.114L111.411 43.2283H109.086L105.519 34.879L106.021 34.9319L102.639 43.2283H100.34Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M122.056 43.4925C120.911 43.4925 119.871 43.1755 118.938 42.5414C118.004 41.9072 117.256 41.0441 116.692 39.952C116.128 38.8599 115.846 37.6181 115.846 36.2265C115.846 34.835 116.128 33.5931 116.692 32.501C117.256 31.4089 118.022 30.5546 118.991 29.9381C119.959 29.3216 121.051 29.0133 122.267 29.0133C122.971 29.0133 123.614 29.119 124.196 29.3304C124.777 29.5242 125.288 29.806 125.728 30.1759C126.169 30.5458 126.53 30.9686 126.811 31.4442C127.111 31.9198 127.313 32.4306 127.419 32.9766L126.706 32.7917V29.304H129.982V43.2283H126.679V39.8992L127.446 39.7671C127.322 40.2427 127.093 40.7094 126.759 41.1674C126.442 41.6078 126.036 42.0041 125.543 42.3564C125.068 42.6911 124.53 42.9641 123.931 43.1755C123.35 43.3869 122.725 43.4925 122.056 43.4925ZM122.954 40.6126C123.711 40.6126 124.381 40.4276 124.962 40.0577C125.543 39.6878 125.992 39.177 126.309 38.5252C126.644 37.8559 126.811 37.0896 126.811 36.2265C126.811 35.381 126.644 34.6324 126.309 33.9807C125.992 33.3289 125.543 32.8181 124.962 32.4482C124.381 32.0783 123.711 31.8933 122.954 31.8933C122.196 31.8933 121.527 32.0783 120.946 32.4482C120.382 32.8181 119.942 33.3289 119.625 33.9807C119.308 34.6324 119.149 35.381 119.149 36.2265C119.149 37.0896 119.308 37.8559 119.625 38.5252C119.942 39.177 120.382 39.6878 120.946 40.0577C121.527 40.4276 122.196 40.6126 122.954 40.6126Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M132.429 43.2283V29.304H135.626L135.679 33.7429L135.23 32.7388C135.423 32.0343 135.758 31.4001 136.234 30.8365C136.709 30.2728 137.255 29.8324 137.872 29.5154C138.506 29.1807 139.166 29.0133 139.853 29.0133C140.153 29.0133 140.435 29.0398 140.699 29.0926C140.981 29.1455 141.21 29.2071 141.386 29.2776L140.514 32.8445C140.32 32.7388 140.082 32.6508 139.801 32.5803C139.519 32.5098 139.237 32.4746 138.955 32.4746C138.515 32.4746 138.092 32.5627 137.687 32.7388C137.299 32.8974 136.956 33.1264 136.656 33.4258C136.357 33.7253 136.119 34.0775 135.943 34.4827C135.784 34.8702 135.705 35.3106 135.705 35.8038V43.2283H132.429Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M144.251 43.2283V25.7635H147.501V43.2283H144.251ZM141.503 32.3161V29.304H150.539V32.3161H141.503Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M151.112 43.2283V40.9032L158.378 31.3385V32.0254H151.112V29.304H161.76V31.6291L154.705 41.0089L154.599 40.5069H161.945V43.2283H151.112Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_1031_1056">
|
||||||
|
<rect width="162" height="48" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 16 KiB |
BIN
public/linked-avatars/customer.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
public/linked-avatars/manager.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
1
public/logo-cloud/laravel.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 130 48"><path fill="#000" d="M51.48 14.503h-3.21v19.584h9.24v-2.881h-6.03V14.503ZM68.844 22.812c-.41-.652-.991-1.165-1.745-1.538-.754-.373-1.512-.56-2.275-.56-.987 0-1.89.182-2.708.546a6.336 6.336 0 0 0-2.108 1.496 7.096 7.096 0 0 0-1.856 4.812c0 .934.163 1.81.489 2.63a6.958 6.958 0 0 0 1.367 2.183 6.332 6.332 0 0 0 2.108 1.496c.819.364 1.721.546 2.708.546.763 0 1.522-.187 2.275-.56.754-.372 1.335-.885 1.745-1.538v1.762h3.043V21.05h-3.043v1.763Zm-.28 6.351a4.043 4.043 0 0 1-.78 1.315c-.336.374-.74.672-1.215.896-.475.224-1 .335-1.578.335a3.56 3.56 0 0 1-1.563-.335 3.817 3.817 0 0 1-1.2-.896 3.846 3.846 0 0 1-.768-1.315 4.766 4.766 0 0 1-.265-1.594c0-.56.088-1.091.265-1.595a3.85 3.85 0 0 1 .768-1.315 3.823 3.823 0 0 1 1.2-.895 3.56 3.56 0 0 1 1.563-.336c.577 0 1.103.112 1.578.335.474.224.88.523 1.214.896.335.373.596.811.782 1.315.186.503.279 1.035.279 1.595s-.093 1.09-.28 1.594ZM93.577 22.812c-.41-.652-.99-1.165-1.745-1.538-.753-.373-1.512-.56-2.275-.56-.986 0-1.889.182-2.707.546a6.336 6.336 0 0 0-2.108 1.496 7.096 7.096 0 0 0-1.856 4.812c0 .934.162 1.81.488 2.63a6.96 6.96 0 0 0 1.368 2.183 6.332 6.332 0 0 0 2.108 1.496c.818.364 1.72.546 2.707.546.763 0 1.522-.187 2.275-.56.754-.372 1.336-.885 1.745-1.538v1.762h3.043V21.05h-3.043v1.763Zm-.279 6.351a4.043 4.043 0 0 1-.781 1.315c-.335.374-.74.672-1.215.896-.474.224-1 .335-1.577.335a3.56 3.56 0 0 1-1.563-.335 3.817 3.817 0 0 1-1.2-.896 3.846 3.846 0 0 1-.768-1.315 4.766 4.766 0 0 1-.266-1.594c0-.56.088-1.091.266-1.595a3.85 3.85 0 0 1 .767-1.315 3.823 3.823 0 0 1 1.2-.895 3.56 3.56 0 0 1 1.564-.336c.577 0 1.103.112 1.577.335.475.224.88.523 1.215.896.335.373.595.811.781 1.315.186.503.28 1.035.28 1.595s-.094 1.09-.28 1.594ZM130 14.503h-3.043v19.584H130V14.503ZM74.288 34.087h3.042V24.05h5.22v-3h-8.262v13.037ZM108.819 21.05l-3.824 9.984-3.825-9.984h-3.081l4.994 13.037h3.824l4.994-13.037h-3.082ZM118.538 20.715c-3.726 0-6.676 3.068-6.676 6.854 0 4.184 2.855 6.854 7.066 6.854 2.356 0 3.861-.903 5.699-2.87l-2.055-1.594c-.002.002-1.552 2.042-3.867 2.042-2.691 0-3.824-2.174-3.824-3.3h10.095c.53-4.306-2.295-7.986-6.438-7.986Zm-3.649 5.72c.024-.25.374-3.298 3.625-3.298 3.25 0 3.645 3.047 3.667 3.299h-7.292ZM13.648 41.702.346 34.234C.15 34.111 0 34.044 0 33.796v-22.56c0-.183.115-.303.22-.359l6.748-3.784c.22-.124.404-.124.612 0l6.703 3.75c.265.146.277.337.277.506v13.97l5.595-3.134v-7.142c0-.247.115-.393.392-.55l6.68-3.74a.41.41 0 0 1 .45 0l6.807 3.819c.219.123.242.269.242.482v7.423c0 .236-.058.36-.3.505L28 26.576v7.12c0 .28-.07.393-.323.538l-13.348 7.468c-.254.135-.427.135-.68 0Zm-.207-1.381v-6.266L7.072 30.55c-.208-.123-.358-.213-.358-.516V15.402L1.108 12.27v21.145L13.44 40.32Zm13.451-6.906v-6.221l-12.332 6.86v6.267l12.332-6.906Zm-.588-7.146-5.584-3.152-12.298 6.906 5.56 3.077 12.322-6.831Zm-12.863-.333V12.258l-5.596 3.145V29.08l5.596-3.144Zm13.451-.629v-6.199l-5.606-3.144v6.221l5.606 3.122Zm6.715-3.122v-6.221L28 19.108v6.199l5.607-3.122Zm-6.16-4.031 5.583-3.133-5.584-3.133-5.595 3.133 5.595 3.133Zm-14.58-6.839L7.268 8.182l-5.584 3.133 5.584 3.144 5.599-3.144Z"/></svg>
|
After Width: | Height: | Size: 3.0 KiB |
1
public/logo-cloud/savvycal.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 140 48"><path fill="#000" fill-rule="evenodd" d="M15.005 6.8c13.842-2.43 17.83.243 20.29 14.16 2.463 13.912-.042 17.73-14.206 20.218C6.924 43.665 3.262 40.938.8 27.02-1.665 13.1 1.164 9.232 15.005 6.8Zm1.595 6.147c-2.65.466-4.566 1.678-5.668 3.44-.865 1.384-1.14 3.005-.89 4.318.551 2.895 2.95 4.717 7.808 5.085l.38.027.377.03.358.034c1.694.17 2.778.456 3.376.825.4.245.56.513.674 1.162.218 1.232-.745 2.348-3.28 2.793-1.677.295-3.467-.06-5.423-1.123a2.123 2.123 0 0 0-3.12 1.63 2.104 2.104 0 0 0 1.093 2.075c2.76 1.5 5.51 2.044 8.186 1.574 4.673-.82 7.375-3.949 6.715-7.682-.628-3.544-3.136-5.126-8.67-5.528l-.366-.026c-1.782-.136-2.898-.48-3.487-.92-.29-.218-.399-.41-.463-.742-.055-.296.037-.839.325-1.3.443-.706 1.305-1.252 2.811-1.516 1.335-.235 2.625-.01 3.947.706a2.12 2.12 0 0 0 3.117-1.632 2.103 2.103 0 0 0-1.094-2.075c-2.149-1.164-4.41-1.559-6.706-1.155Z" clip-rule="evenodd"/><path fill="#000" d="M50.792 31.34c3.154 0 5.364-1.654 5.364-4.435v-.042c0-2.463-1.63-3.588-4.807-4.351-2.897-.679-3.583-1.189-3.583-2.335v-.043c0-.975.9-1.76 2.447-1.76 1.18 0 2.295.382 3.454 1.125.215.127.43.191.687.191.686 0 1.244-.531 1.244-1.21 0-.51-.279-.871-.58-1.041-1.35-.891-2.875-1.38-4.764-1.38-2.98 0-5.127 1.762-5.127 4.31v.042c0 2.737 1.802 3.671 5 4.436 2.788.636 3.39 1.21 3.39 2.27v.043c0 1.102-1.03 1.867-2.66 1.867-1.632 0-2.962-.55-4.207-1.527-.17-.127-.407-.234-.772-.234-.686 0-1.245.53-1.245 1.21 0 .424.214.786.516.997a9.417 9.417 0 0 0 5.643 1.867Zm11.398.023c1.738 0 2.918-.722 3.69-1.635v.424c0 .574.516 1.083 1.267 1.083.708 0 1.265-.531 1.265-1.231v-5.518c0-1.465-.386-2.653-1.222-3.46-.794-.806-2.06-1.252-3.755-1.252-1.48 0-2.575.255-3.648.659a1.126 1.126 0 0 0-.708 1.018c0 .594.493 1.06 1.095 1.06.138-.002.274-.023.406-.063.708-.276 1.525-.445 2.511-.445 1.824 0 2.812.848 2.812 2.441v.275a9.565 9.565 0 0 0-3.049-.467c-2.766 0-4.676 1.189-4.676 3.608v.043c0 2.25 1.888 3.46 4.012 3.46Zm.73-1.867c-1.246 0-2.21-.617-2.21-1.7v-.042c0-1.168.986-1.867 2.66-1.867 1.03 0 1.91.19 2.574.445v.765c0 1.42-1.308 2.397-3.025 2.397l.001.002Zm12.92 1.844c.708 0 1.18-.467 1.48-1.126l3.777-8.573a1.51 1.51 0 0 0 .15-.616c0-.7-.557-1.23-1.265-1.23-.687 0-1.03.445-1.223.89l-2.961 7.47-2.919-7.426c-.214-.532-.58-.934-1.287-.934-.708 0-1.287.594-1.287 1.23 0 .233.086.446.15.637l3.777 8.552c.3.68.772 1.125 1.48 1.125h.13l-.002.001Zm12.214 0c.708 0 1.18-.467 1.48-1.126l3.777-8.573a1.51 1.51 0 0 0 .15-.616c0-.7-.557-1.23-1.265-1.23-.687 0-1.03.445-1.223.89l-2.962 7.47-2.918-7.426c-.215-.532-.58-.934-1.287-.934-.708 0-1.287.594-1.287 1.23 0 .233.086.446.15.637l3.775 8.552c.302.68.774 1.125 1.482 1.125l.128.001Zm9.553 3.247c1.825 0 2.854-.849 3.82-3.14l4.141-9.828c.043-.127.107-.402.107-.615 0-.68-.558-1.21-1.244-1.21-.666 0-1.031.446-1.245.976l-2.832 7.45-3.047-7.45c-.236-.594-.6-.975-1.266-.975-.729 0-1.287.53-1.287 1.252 0 .169.063.424.15.615l4.205 9.296-.086.233c-.429.87-.836 1.19-1.609 1.19-.365 0-.6-.065-.9-.15-.13-.042-.258-.085-.473-.085a1.047 1.047 0 0 0-.978.655c-.052.13-.076.268-.073.407 0 .615.43.934.815 1.061.536.211 1.073.318 1.802.318Zm17.771-3.205c2.425 0 4.034-.765 5.451-1.994a1.245 1.245 0 0 0 .429-.934c0-.658-.579-1.21-1.245-1.21-.322 0-.601.128-.794.296-1.094.914-2.168 1.422-3.755 1.422-2.875 0-4.957-2.355-4.957-5.262v-.043c0-2.908 2.104-5.243 4.957-5.243 1.438 0 2.554.51 3.583 1.338.23.17.509.259.794.254.731 0 1.31-.551 1.31-1.273 0-.467-.237-.827-.515-1.04-1.31-.998-2.833-1.676-5.151-1.676-4.549 0-7.745 3.46-7.745 7.683v.042c0 4.265 3.261 7.64 7.638 7.64Zm11.785-.021c1.739 0 2.918-.721 3.692-1.634v.424c0 .574.514 1.083 1.264 1.083.709 0 1.267-.531 1.267-1.231v-5.518c0-1.465-.386-2.653-1.224-3.46-.793-.806-2.059-1.252-3.754-1.252-1.481 0-2.575.255-3.648.659a1.124 1.124 0 0 0-.709 1.018c0 .594.495 1.06 1.095 1.06a1.44 1.44 0 0 0 .407-.063c.709-.276 1.524-.445 2.511-.445 1.824 0 2.811.848 2.811 2.441v.275a9.564 9.564 0 0 0-3.047-.467c-2.767 0-4.678 1.189-4.678 3.608v.043c0 2.25 1.889 3.459 4.013 3.459Zm.729-1.868c-1.244 0-2.209-.615-2.209-1.698v-.042c0-1.168.987-1.867 2.66-1.867 1.031 0 1.91.19 2.575.445v.765c0 1.42-1.31 2.397-3.026 2.397Zm10.004 1.74c.73 0 1.309-.55 1.309-1.273V16.803c0-.7-.579-1.273-1.309-1.273a1.27 1.27 0 0 0-1.288 1.273v13.158c0 .723.581 1.274 1.288 1.274v-.002Z"/></svg>
|
After Width: | Height: | Size: 4.2 KiB |
1
public/logo-cloud/statamic.svg
Normal file
After Width: | Height: | Size: 5.0 KiB |
1
public/logo-cloud/transistor.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 158 48"><path fill="#000" d="M55.42 18.178v-2.491h10.956v2.491H62.3v13.875h-2.834V18.178H55.42Zm18.097 4.577a7.526 7.526 0 0 0-1.33-.116c-1.82 0-2.89 1.188-2.89 3.592v5.793h-2.69v-11.47h2.631v1.622h.058c.52-.985 1.677-2 3.21-2 .433 0 .722.03 1.011.059v2.52Zm10.264 9.269v-1.448h-.058c-.78.985-2.024 1.883-3.932 1.883-2.573 0-5.493-2.057-5.493-6.17 0-3.65 2.573-6.083 5.695-6.083 1.908 0 3.065 1.013 3.76 1.911h.057v-1.564h2.602v11.471h-2.631Zm-3.296-1.94c1.763 0 3.411-1.536 3.411-3.738 0-2.317-1.503-3.852-3.382-3.852-2.37 0-3.499 1.912-3.499 3.795 0 1.911 1.1 3.795 3.47 3.795Zm9.021-9.531h2.66v1.449h.057c.896-1.304 2.226-1.825 3.498-1.825 2.371 0 4.453 1.564 4.453 5.243v6.604h-2.69v-6.46c0-1.97-.924-3.012-2.457-3.012-1.677 0-2.833 1.188-2.833 3.418v6.083h-2.689l.001-11.5Zm18.792 2.955c-.116-.84-.752-1.39-1.533-1.39-.925 0-1.445.579-1.445 1.216 0 .695.347 1.188 2.341 1.854 2.458.782 3.325 2.057 3.325 3.679 0 2.114-1.59 3.592-4.221 3.592-2.746 0-4.105-1.507-4.308-3.65h2.487c.115.956.694 1.68 1.879 1.68 1.012 0 1.59-.637 1.59-1.42 0-.868-.491-1.419-2.399-2.056-2.14-.695-3.239-1.767-3.239-3.563 0-1.883 1.475-3.273 3.903-3.273 2.458 0 3.759 1.448 4.048 3.33l-2.428.001Zm5.03-8.227h2.978v2.723h-2.978v-2.723Zm.145 5.272h2.688v11.5h-2.688v-11.5Zm10.986 2.955c-.116-.84-.752-1.39-1.533-1.39-.925 0-1.445.579-1.445 1.216 0 .695.347 1.188 2.342 1.854 2.457.782 3.324 2.057 3.324 3.679 0 2.114-1.59 3.592-4.221 3.592-2.746 0-4.105-1.507-4.307-3.65h2.486c.116.956.694 1.68 1.879 1.68 1.012 0 1.59-.637 1.59-1.42 0-.868-.491-1.419-2.399-2.056-2.14-.695-3.238-1.767-3.238-3.563 0-1.883 1.474-3.273 3.903-3.273 2.457 0 3.758 1.448 4.047 3.33l-2.428.001Zm3.845-2.955h1.445v-3.678h2.689v3.678h2.862v2.26h-2.891v5.127c0 1.564.492 1.999 1.59 1.999.463 0 .983-.087 1.388-.203v2.172c-.607.174-1.359.261-2.024.261-2.862 0-3.614-1.738-3.614-4.084v-5.272h-1.445v-2.26Zm14.311-.376c3.585 0 6.129 2.636 6.129 6.112 0 3.389-2.573 6.17-6.129 6.17-3.498 0-6.129-2.694-6.129-6.17 0-3.563 2.66-6.112 6.129-6.112Zm0 9.877c2.024 0 3.411-1.622 3.411-3.765 0-2.028-1.301-3.737-3.411-3.737-2.053 0-3.412 1.593-3.412 3.737 0 2.201 1.562 3.765 3.412 3.765Zm14.052-7.415c-1.822 0-2.891 1.188-2.891 3.592v5.793h-2.689v-11.47h2.631v1.622h.058c.52-.985 1.676-2 3.209-2 .433 0 .722.03 1.012.059v2.52a7.525 7.525 0 0 0-1.33-.116ZM20.812 37.731a1.39 1.39 0 0 1-1.388-1.39V11.37a1.39 1.39 0 0 1 2.369-.982c.26.26.406.614.406.982v24.97c0 .753-.636 1.391-1.387 1.391ZM15.03 25.247H8.38a1.39 1.39 0 0 1-1.387-1.39c0-.783.607-1.391 1.388-1.391h6.65a1.39 1.39 0 1 1 0 2.78l-.001.001Zm18.243 0h-6.678a1.39 1.39 0 0 1-1.388-1.39c0-.783.607-1.391 1.388-1.391h6.65a1.39 1.39 0 0 1 1.387 1.39c0 .782-.607 1.391-1.359 1.391Z"/><path fill="#000" d="M20.816 44.712C9.338 44.712 0 35.356 0 23.856 0 12.356 9.338 3 20.816 3s20.816 9.356 20.816 20.856c0 11.5-9.338 20.856-20.816 20.856Zm0-38.931c-9.945 0-18.04 8.11-18.04 18.075s8.095 18.075 18.04 18.075c9.946 0 18.04-8.11 18.04-18.075S30.762 5.781 20.816 5.781Z"/></svg>
|
After Width: | Height: | Size: 3.0 KiB |
1
public/logo-cloud/tuple.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 106 48"><path fill="#000" fill-rule="evenodd" d="M18 4 0 10v19.5l6 2V37l18 6V11.5l-6 2V4ZM8 32.167 18 35.5V15.608l4-1.333v25.95L8 35.56v-3.393Z" clip-rule="evenodd"/><path fill="#000" d="M42.9 20.45V31h4.447V20.45h3.53v-3.392H39.39v3.393h3.51Zm10.206 4.798c0 3.978 2.3 6.006 6.376 6.006 3.9 0 6.396-1.853 6.396-6.045v-8.15h-4.446v7.994c0 1.833-.39 2.73-1.95 2.73-1.58 0-1.97-.897-1.97-2.71v-8.015h-4.406v8.19Z"/><path fill="#000" fill-rule="evenodd" d="M68.969 31V17.058h5.558c4.017 0 5.733 1.794 5.733 4.777v.078c0 2.906-1.93 4.544-5.538 4.544h-1.346V31h-4.407Zm5.323-7.507h-.916v-3.14h.936c1.15 0 1.755.43 1.755 1.502v.078c0 1.033-.605 1.56-1.775 1.56Z" clip-rule="evenodd"/><path fill="#000" d="M83 30.942V17h4.427v10.53h5.07v3.412H83ZM94.999 17v13.942h10.218v-3.393h-5.811v-2.086h4.368v-3.1h-4.368v-1.97h5.499V17h-9.906Z"/></svg>
|
After Width: | Height: | Size: 899 B |
4
public/logo-cluster/career-builder.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M47.4044 33.6114C47.0046 32.8683 46.3758 32.2585 45.518 31.7818C45.4417 31.725 45.4417 31.6673 45.518 31.6122C46.9662 30.7928 47.6902 29.4775 47.6902 27.6663C47.6902 25.6273 47.0759 24.174 45.8471 23.3066C44.6184 22.4392 42.784 22.0052 40.344 22.0046H32.9647C32.9073 22.0013 32.8498 22.0096 32.7957 22.0291C32.7416 22.0487 32.692 22.079 32.65 22.1183C32.6115 22.1606 32.5819 22.2104 32.5631 22.2644C32.5443 22.3185 32.5367 22.3759 32.5406 22.433V41.5878C32.5355 41.645 32.543 41.7027 32.5624 41.7568C32.5818 41.8108 32.6128 41.86 32.6531 41.9009C32.6935 41.9419 32.7423 41.9735 32.7961 41.9937C32.8499 42.0139 32.9074 42.0221 32.9647 42.0178H40.5985C42.7896 42.0178 44.5709 41.5555 45.9421 40.631C47.3134 39.7065 47.9995 38.2626 48.0007 36.2993C48.0007 35.252 47.8005 34.3563 47.4002 33.6122" fill="#0E0E24" style="fill:#0E0E24;fill:color(display-p3 0.0549 0.0549 0.1412);fill-opacity:1;"/>
|
||||||
|
<path d="M28.6941 32.0087V28.3869C28.6941 28.1587 28.7857 27.9509 29.0953 27.878L31.1683 27.5022C31.332 27.4649 31.4668 27.4335 31.4668 27.1214V22.402C31.4668 22.2956 31.4246 22.1934 31.3494 22.1181C31.2742 22.0427 31.1721 22.0002 31.0657 22H23.6439C22.1455 22.0107 20.8226 22.309 19.6752 22.8948C18.5447 23.4574 17.6018 24.336 16.961 25.4242C16.3203 26.5144 16 27.7762 16 29.2097V34.8078C16 36.2429 16.3215 37.5053 16.9644 38.5949C17.6054 39.6829 18.5482 40.5615 19.6786 41.1243C20.8226 41.7107 22.1443 42.0084 23.6439 42.0174H31.0657C31.1721 42.0172 31.2742 41.9747 31.3494 41.8994C31.4246 41.824 31.4668 41.7219 31.4668 41.6154V36.8926C31.4668 36.5805 31.332 36.5491 31.1683 36.5118L29.0953 36.136C28.7857 36.0656 28.6941 35.8578 28.6941 35.6271V32.0087Z" fill="#0E0E24" style="fill:#0E0E24;fill:color(display-p3 0.0549 0.0549 0.1412);fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
10
public/logo-cluster/dribbble.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_698_1035)">
|
||||||
|
<path d="M14 32C14 28.736 14.804 25.724 16.412 22.964C18.02 20.204 20.204 18.02 22.964 16.412C25.724 14.804 28.736 14 32 14C35.264 14 38.276 14.804 41.036 16.412C43.796 18.02 45.98 20.204 47.588 22.964C49.196 25.724 50 28.736 50 32C50 35.264 49.196 38.276 47.588 41.036C45.98 43.796 43.796 45.98 41.036 47.588C38.276 49.196 35.264 50 32 50C28.736 50 25.724 49.196 22.964 47.588C20.204 45.98 18.02 43.796 16.412 41.036C14.804 38.276 14 35.264 14 32ZM16.988 32C16.988 35.744 18.248 39.044 20.768 41.9C21.92 39.644 23.744 37.496 26.24 35.456C28.736 33.416 31.172 32.132 33.548 31.604C33.188 30.764 32.84 30.008 32.504 29.336C28.376 30.656 23.912 31.316 19.112 31.316C18.176 31.316 17.48 31.304 17.024 31.28C17.024 31.376 17.018 31.496 17.006 31.64C16.994 31.784 16.988 31.904 16.988 32ZM17.456 28.292C17.984 28.34 18.764 28.364 19.796 28.364C23.804 28.364 27.608 27.824 31.208 26.744C29.384 23.504 27.38 20.804 25.196 18.644C23.3 19.604 21.674 20.936 20.318 22.64C18.962 24.344 18.008 26.228 17.456 28.292ZM22.82 43.844C25.532 45.956 28.592 47.012 32 47.012C33.776 47.012 35.54 46.676 37.292 46.004C36.812 41.9 35.876 37.928 34.484 34.088C32.276 34.568 30.05 35.78 27.806 37.724C25.562 39.668 23.9 41.708 22.82 43.844ZM28.328 17.492C30.44 19.676 32.396 22.4 34.196 25.664C37.46 24.296 39.92 22.556 41.576 20.444C38.792 18.14 35.6 16.988 32 16.988C30.776 16.988 29.552 17.156 28.328 17.492ZM35.492 28.22C35.852 28.988 36.26 29.96 36.716 31.136C38.492 30.968 40.424 30.884 42.512 30.884C44 30.884 45.476 30.92 46.94 30.992C46.748 27.728 45.572 24.824 43.412 22.28C41.852 24.608 39.212 26.588 35.492 28.22ZM37.616 33.656C38.84 37.208 39.668 40.856 40.1 44.6C41.996 43.376 43.544 41.804 44.744 39.884C45.944 37.964 46.664 35.888 46.904 33.656C45.152 33.536 43.556 33.476 42.116 33.476C40.796 33.476 39.296 33.536 37.616 33.656Z" fill="#D723A4" style="fill:#D723A4;fill:color(display-p3 0.8412 0.1370 0.6440);fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_698_1035">
|
||||||
|
<rect width="36" height="36" fill="white" style="fill:white;fill-opacity:1;" transform="translate(14 14)"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
12
public/logo-cluster/glassdoor.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_698_1037)">
|
||||||
|
<path d="M17.174 25.6133C17.0773 25.6133 17 25.6912 17 25.7886V37.4457C17 37.543 17.0773 37.621 17.174 37.621H24.4337C24.4337 41.1755 21.8623 42.1883 18.479 42.4123C18.392 42.4221 18.3243 42.4902 18.3243 42.5779V47.0674C18.3243 47.1648 18.4017 47.2427 18.4983 47.2329C22.3457 47.0479 25.2263 46.1325 27.15 44.6133C29.238 42.9577 30.2723 40.5912 30.2723 37.6794V25.7886C30.2723 25.6912 30.195 25.6133 30.0983 25.6133H17.174Z" fill="#00A162" style="fill:#00A162;fill:color(display-p3 0.0000 0.6314 0.3843);fill-opacity:1;"/>
|
||||||
|
<path d="M32.9015 37.6302C32.8049 37.6302 32.7275 37.5523 32.7275 37.4549V25.7881C32.7275 25.6907 32.8049 25.6128 32.9015 25.6128H40.1612C40.1612 22.0582 37.5899 21.0454 34.2065 20.8214C34.1195 20.8117 34.0519 20.7435 34.0519 20.6559V16.1664C34.0519 16.069 34.1292 15.9911 34.2259 16.0008C38.0732 16.1859 40.9539 17.1013 42.8775 18.6205C44.9655 20.2761 45.9999 22.6425 45.9999 25.5544V37.4549C45.9999 37.5523 45.9225 37.6302 45.8259 37.6302H32.9015Z" fill="#00A162" style="fill:#00A162;fill:color(display-p3 0.0000 0.6314 0.3843);fill-opacity:1;"/>
|
||||||
|
<path d="M40.9824 40.9871V40.5664H42.8684V40.9871H42.1792V42.7683H41.7055V40.9871H40.9824ZM43.258 42.7683V40.5664H43.78L44.3513 42.2989L44.9216 40.5664H45.4368V42.7683H45.0337V41.4925L44.5746 42.7683H44.1357L43.6765 41.4848V42.7683H43.258Z" fill="#00A162" style="fill:#00A162;fill:color(display-p3 0.0000 0.6314 0.3843);fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_698_1037">
|
||||||
|
<rect width="29" height="32" fill="white" style="fill:white;fill-opacity:1;" transform="translate(17 16)"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
3
public/logo-cluster/linkedin.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M44.75 17H19.25C18.6533 17 18.081 17.2371 17.659 17.659C17.2371 18.081 17 18.6533 17 19.25V44.75C17 45.3467 17.2371 45.919 17.659 46.341C18.081 46.7629 18.6533 47 19.25 47H44.75C45.3467 47 45.919 46.7629 46.341 46.341C46.7629 45.919 47 45.3467 47 44.75V19.25C47 18.6533 46.7629 18.081 46.341 17.659C45.919 17.2371 45.3467 17 44.75 17ZM26 42.5H21.5V29H26V42.5ZM23.75 26.375C23.2343 26.3603 22.7343 26.1939 22.3126 25.8966C21.8909 25.5994 21.5662 25.1844 21.3789 24.7037C21.1917 24.2229 21.1503 23.6976 21.2599 23.1935C21.3695 22.6893 21.6252 22.2286 21.9952 21.869C22.3651 21.5093 22.8328 21.2666 23.3398 21.1713C23.8469 21.0759 24.3708 21.1321 24.8461 21.3328C25.3214 21.5335 25.727 21.8698 26.0123 22.2997C26.2975 22.7296 26.4498 23.2341 26.45 23.75C26.4382 24.4555 26.1475 25.1277 25.6416 25.6195C25.1356 26.1114 24.4556 26.383 23.75 26.375ZM42.5 42.5H38V35.39C38 33.26 37.1 32.495 35.93 32.495C35.587 32.5178 35.2518 32.6082 34.9438 32.761C34.6358 32.9137 34.361 33.1258 34.1352 33.385C33.9094 33.6443 33.7371 33.9456 33.6281 34.2716C33.5191 34.5977 33.4755 34.9421 33.5 35.285C33.4926 35.3548 33.4926 35.4252 33.5 35.495V42.5H29V29H33.35V30.95C33.7888 30.2825 34.3916 29.7389 35.1008 29.3712C35.8099 29.0034 36.6016 28.824 37.4 28.85C39.725 28.85 42.44 30.14 42.44 34.34L42.5 42.5Z" fill="#0A66C2" style="fill:#0A66C2;fill:color(display-p3 0.0392 0.4000 0.7608);fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
3
public/logo-cluster/upwork.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M41.2652 37.0997C40.2167 37.0413 39.1975 36.732 38.2934 36.1979C37.3892 35.6638 36.6265 34.9204 36.0693 34.0303C36.7414 28.674 38.6973 27.0089 41.2852 27.0089C43.8731 27.0089 45.8391 29.015 45.8391 32.0242C45.8391 35.0334 43.833 37.0395 41.2852 37.0395M41.2852 23.6587C39.4589 23.5847 37.6647 24.155 36.2162 25.2697C34.7677 26.3845 33.7571 27.9729 33.3611 29.7573C32.5025 27.9584 31.8529 26.067 31.4252 24.1201H25.0357V32.0443C25.0357 34.923 23.7318 37.0595 21.174 37.0595C18.6162 37.0595 17.1618 34.9331 17.1618 32.0443V24.1201H13.4906V32.0443C13.4073 34.2401 14.1641 36.3852 15.607 38.0425C16.3113 38.8094 17.1716 39.4165 18.1301 39.8231C19.0887 40.2297 20.1231 40.4263 21.164 40.3997C25.5874 40.3997 28.6869 36.9994 28.6869 32.1345V26.7782C29.4381 29.6605 30.68 32.3919 32.358 34.8528L30.3921 46.067H34.1234L35.4174 38.1228C35.8457 38.4916 36.3018 38.8269 36.7815 39.1258C38.028 39.9131 39.4608 40.3561 40.9342 40.4097H41.2752C42.3712 40.4211 43.4582 40.2107 44.4707 39.791C45.4832 39.3713 46.4003 38.7511 47.1669 37.9676C47.9334 37.1842 48.5335 36.2538 48.9311 35.2324C49.3286 34.211 49.5154 33.1197 49.4802 32.0242C49.5058 30.9328 49.3117 29.8473 48.9094 28.8323C48.5071 27.8174 47.9049 26.8937 47.1386 26.1161C46.3722 25.3385 45.4574 24.7229 44.4484 24.306C43.4394 23.889 42.3569 23.6791 41.2652 23.6888" fill="#14A800" style="fill:#14A800;fill:color(display-p3 0.0784 0.6588 0.0000);fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
5
public/logo-cluster/we-work-remotely.svg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.9949 31.8074C15.7183 33.6147 15.4481 35.4231 15.1627 37.2289C14.9869 38.341 14.8049 39.453 14.5811 40.5558C14.5448 40.7348 14.2942 40.967 14.1116 40.9995C13.6364 41.0845 13.1442 41.0717 12.6587 41.0988C12.3647 41.1152 12.1971 40.989 12.1318 40.6868C11.8436 39.3543 11.5291 38.0275 11.2515 36.6927C10.6905 33.9943 10.1462 31.2923 9.59738 28.5913C9.39955 27.6176 9.20915 26.6424 9.01393 25.6683C8.96001 25.3995 9.06243 25.1833 9.32439 25.1685C10.0698 25.1273 10.8188 25.101 11.5644 25.1285C11.8943 25.1408 11.9552 25.4796 11.9939 25.7616C12.2294 27.4681 12.4415 29.178 12.7006 30.8807C12.8802 32.0587 13.1235 33.2267 13.4061 34.4013C13.5098 33.7085 13.613 33.0162 13.7168 32.3234C13.9405 30.8289 14.1786 29.3362 14.3814 27.8386C14.4668 27.2092 14.4762 26.5692 14.5225 25.9341C14.5572 25.4604 14.7005 25.2632 15.1563 25.2296C15.6908 25.1904 16.2308 25.208 16.7675 25.2232C17.1239 25.2333 17.2606 25.5047 17.3143 25.8071C17.5225 26.9808 17.7376 28.154 17.9132 29.333C18.1533 30.944 18.3589 32.5603 18.5816 34.1739C18.5936 34.2601 18.6267 34.3432 18.7143 34.4318C18.8143 33.9167 18.9408 33.4051 19.0095 32.8861C19.2549 31.0332 19.4815 29.178 19.7128 27.3235C19.7718 26.8498 19.8074 26.3726 19.878 25.9007C19.9576 25.3662 20.1951 25.1671 20.7248 25.1653C21.2371 25.1635 21.7498 25.1766 22.2623 25.1781C22.7828 25.1793 22.9177 25.3437 22.8141 25.8492C22.6229 26.7832 22.4224 27.7154 22.2497 28.6529C21.6466 31.9244 21.0519 35.1972 20.458 38.4702C20.3352 39.1472 20.2277 39.8268 20.1143 40.5052C20.0636 40.8096 19.8854 40.9761 19.5828 40.9941C19.1108 41.0224 18.6385 41.0533 18.1661 41.0616C17.6474 41.0707 17.4666 40.8943 17.3909 40.3652C17.1975 39.0151 17.005 37.665 16.8062 36.3161C16.5992 34.9128 16.3853 33.5107 16.1729 32.1084C16.1574 32.0073 16.1272 31.9086 16.1037 31.8087C16.0674 31.8083 16.0314 31.8079 15.9949 31.8074ZM30.6748 31.9208C30.5026 32.9498 30.3338 33.9793 30.157 35.0072C29.9793 36.0395 29.7848 37.0689 29.6143 38.1022C29.4914 38.8472 29.3908 39.5959 29.29 40.3443C29.2309 40.7846 29.0621 40.9497 28.6222 40.9434C28.1489 40.9365 27.6725 40.9499 27.2049 40.8941C27.0346 40.8738 26.779 40.7072 26.7429 40.5615C26.5323 39.7191 26.3759 38.8629 26.201 38.0114C26.041 37.2333 25.8749 36.4562 25.7215 35.6767C25.4301 34.1947 25.1595 32.7085 24.8547 31.2291C24.5981 29.984 24.3009 28.7473 24.0299 27.505C23.9085 26.9488 23.7922 26.3905 23.701 25.8287C23.6313 25.398 23.7728 25.203 24.1923 25.2081C24.8348 25.2164 25.4814 25.2494 26.1152 25.3452C26.2701 25.3687 26.4643 25.6618 26.5014 25.8576C26.7008 26.9122 26.8431 27.9775 27.0305 29.0345C27.3059 30.5877 27.6036 32.1369 27.8906 33.688C27.9195 33.8438 27.9415 34.0007 28.0403 34.173C28.0632 34.0476 28.088 33.9226 28.1079 33.7966C28.5284 31.1534 28.9521 28.5109 29.3635 25.8661C29.4233 25.4828 29.4848 25.2168 29.9893 25.2888C30.4645 25.3568 30.9564 25.3064 31.4408 25.3076C31.6769 25.3082 31.7801 25.4174 31.818 25.664C32.2012 28.1537 32.5885 30.6429 32.9955 33.1288C33.0779 33.6322 33.2495 34.1211 33.4633 34.6101C33.5403 34.1983 33.6351 33.7889 33.691 33.3743C34.0335 30.8387 34.3661 28.3019 34.7042 25.7659C34.7767 25.2233 34.9204 25.111 35.4502 25.1312C35.9492 25.1501 36.4491 25.1501 36.9482 25.1699C37.3833 25.1871 37.5076 25.3018 37.4406 25.7277C37.2226 27.114 36.9574 28.4929 36.7472 29.8802C36.3816 32.2938 35.8765 34.6767 35.3169 37.0515C35.0718 38.0923 34.9788 39.1696 34.8146 40.23C34.7234 40.8202 34.5336 40.9748 33.9526 40.974C33.6006 40.9736 33.2483 40.993 32.8967 41.0144C32.392 41.045 32.1146 40.8235 32.0485 40.3484C31.7711 38.353 31.4947 36.3575 31.2041 34.3642C31.084 33.5402 30.9293 32.7214 30.7902 31.9002C30.7517 31.9071 30.7132 31.914 30.6748 31.9208Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.8114 32.1509C42.3103 32.1509 42.7733 32.2093 43.2151 32.1386C44.0954 31.998 44.8597 31.6398 45.0411 30.6519C45.11 30.2765 45.1036 29.8764 45.0635 29.4947C44.9747 28.6482 44.3011 27.6046 43.1448 27.6358C42.85 27.6438 42.5551 27.6677 42.2604 27.6652C42.012 27.6634 41.9485 27.7805 41.94 28.0092C41.9067 28.9173 41.8486 29.8244 41.8145 30.7323C41.7972 31.195 41.8114 31.659 41.8114 32.1509ZM41.7631 34.4125C41.7631 35.7178 41.7547 36.9727 41.7662 38.2274C41.773 38.9763 41.8169 39.7248 41.8336 40.4739C41.843 40.8922 41.7368 40.9728 41.3075 40.9801C40.8098 40.9887 40.3127 41.0326 39.815 41.0387C39.17 41.0469 39.0089 40.8748 39.0179 40.2292C39.0243 39.7885 39.0407 39.348 39.0436 38.9075C39.0582 36.7519 39.0744 34.5962 39.0804 32.4403C39.0868 30.1514 39.0849 27.8622 39.079 25.573C39.0783 25.265 39.2249 25.114 39.5119 25.1172C40.9781 25.1338 42.4513 25.0785 43.9086 25.203C46.5285 25.4271 48.128 27.8326 47.8518 29.9628C47.6589 31.4489 47.1038 32.6883 45.9089 33.6144C45.6991 33.7771 45.6853 33.9089 45.7696 34.149C46.5013 36.2324 47.2183 38.3211 47.934 40.41C48.076 40.8248 47.9112 41.0659 47.4682 41.0793C46.8371 41.0985 46.2052 41.0928 45.5737 41.1002C45.2267 41.1044 45.0419 40.9342 44.9353 40.6072C44.3091 38.6861 43.6592 36.7727 43.0433 34.8483C42.9262 34.4821 42.7476 34.3521 42.3804 34.4082C42.2127 34.4337 42.0381 34.4125 41.7631 34.4125Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M50.5497 22.2517C50.8393 22.1232 51.1422 22.0208 51.4554 22.0069C51.7458 21.994 52.0464 21.9956 52.3363 22.0427C52.5866 22.0835 53.0036 22.2355 53.2236 22.3476C53.8315 22.6573 53.9414 22.8027 54.1477 23.1204C54.3751 23.4706 54.5362 23.8764 54.5771 23.9452C54.7338 24.3542 54.727 24.7143 54.7155 25.1121C54.7029 25.5515 54.5532 25.9689 54.3585 26.3625C54.0699 26.9459 53.6473 27.4296 53.0824 27.7454C52.5917 28.0198 52.0394 28.0895 51.4635 28.0287C50.8081 27.9596 50.2247 27.7462 49.7027 27.367C49.4548 27.187 49.3368 26.894 49.1721 26.6406C48.8911 26.2086 48.7373 25.7585 48.6848 25.2494C48.645 24.8619 48.6862 24.4944 48.7941 24.0845C49.0835 23.2377 49.6932 22.6319 50.5497 22.2517Z" fill="#F03E3E" style="fill:#F03E3E;fill:color(display-p3 0.9412 0.2431 0.2431);fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.0 KiB |
15
public/logo-timeline/adobe-creative-cloud.svg
Normal file
After Width: | Height: | Size: 57 KiB |
10
public/logo-timeline/asana.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_1113_1160)">
|
||||||
|
<path d="M12.52 8.43547C10.5987 8.43547 9.04 9.9928 9.04 11.9155C9.04 13.8381 10.5987 15.3955 12.52 15.3955C14.4413 15.3955 16 13.8355 16 11.9155C16 9.99547 14.4427 8.43547 12.52 8.43547ZM3.48 8.43547C1.56 8.43547 0 9.99347 0 11.9155C0 13.8375 1.55867 15.3955 3.48 15.3955C5.40133 15.3955 6.96 13.8368 6.96 11.9155C6.96 9.99414 5.40267 8.43547 3.48 8.43547ZM11.48 4.08547C11.48 6.00747 9.922 7.56547 8 7.56547C6.07867 7.56547 4.52 6.00747 4.52 4.08547C4.52 2.16547 6.07867 0.605469 8 0.605469C9.922 0.605469 11.48 2.16547 11.48 4.08547Z" fill="#F06A6A" style="fill:#F06A6A;fill:color(display-p3 0.9412 0.4157 0.4157);fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_1113_1160">
|
||||||
|
<rect width="16" height="16" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 920 B |
3
public/logo-timeline/basecamp.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M8.43439 14.9685C5.74585 14.9685 3.38439 13.9324 1.60505 11.9721C1.51371 11.8716 1.45177 11.748 1.42602 11.6147C1.40027 11.4813 1.4117 11.3435 1.45905 11.2163C1.92625 9.95732 3.18805 7.02905 4.80605 7.01972H4.81439C5.62705 7.01972 6.23519 7.66338 6.72425 8.18052C6.87039 8.33545 7.09425 8.57218 7.24545 8.68792C7.62252 8.31545 8.36379 7.07738 8.94025 5.83598C9.11292 5.46485 9.55379 5.30365 9.92459 5.47585C10.2959 5.64812 10.4571 6.08852 10.2849 6.45998C8.53705 10.2269 7.60552 10.2269 7.29952 10.2269C6.61819 10.2269 6.12432 9.70398 5.64679 9.19872C5.43292 8.97272 4.98825 8.50205 4.81465 8.50205C4.43699 8.56538 3.60872 9.87078 3.01665 11.3043C4.47832 12.7524 6.29879 13.4861 8.43439 13.4861C11.3647 13.4861 13.5564 12.6885 14.5008 11.2892C14.1749 7.56585 12.1247 2.51358 8.43439 2.51358C5.31072 2.51358 2.95759 4.68958 1.44005 8.98072C1.30339 9.36672 0.878986 9.56925 0.494253 9.43245C0.108319 9.29598 -0.0937473 8.87258 0.0425194 8.48678C1.79185 3.53945 4.61519 1.03125 8.43439 1.03125C13.4228 1.03125 15.7213 7.40545 15.9983 11.4232C16.0083 11.5701 15.9745 11.7166 15.9012 11.8442C14.7407 13.8589 12.0891 14.9685 8.43439 14.9685Z" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
3
public/logo-timeline/discord.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M13.5447 3.01094C12.5249 2.54302 11.4313 2.19828 10.2879 2.00083C10.2671 1.99702 10.2463 2.00654 10.2356 2.02559C10.0949 2.27573 9.93916 2.60206 9.83006 2.85856C8.60027 2.67445 7.37679 2.67445 6.17221 2.85856C6.0631 2.59636 5.90166 2.27573 5.76038 2.02559C5.74966 2.00718 5.72886 1.99765 5.70803 2.00083C4.56527 2.19765 3.47171 2.54239 2.45129 3.01094C2.44246 3.01475 2.43488 3.02111 2.42986 3.02935C0.355595 6.12826 -0.212634 9.151 0.0661201 12.1363C0.0673814 12.1509 0.0755799 12.1648 0.086932 12.1737C1.45547 13.1787 2.78114 13.7889 4.08219 14.1933C4.10301 14.1997 4.12507 14.192 4.13832 14.1749C4.44608 13.7546 4.72043 13.3115 4.95565 12.8454C4.96953 12.8181 4.95628 12.7857 4.92791 12.775C4.49275 12.6099 4.0784 12.4086 3.67982 12.1801C3.64829 12.1617 3.64577 12.1166 3.67477 12.095C3.75865 12.0321 3.84255 11.9667 3.92264 11.9007C3.93713 11.8886 3.95732 11.8861 3.97436 11.8937C6.59286 13.0892 9.4277 13.0892 12.0153 11.8937C12.0323 11.8855 12.0525 11.888 12.0677 11.9001C12.1478 11.9661 12.2316 12.0321 12.3161 12.095C12.3451 12.1166 12.3433 12.1617 12.3117 12.1801C11.9132 12.4131 11.4988 12.6099 11.063 12.7743C11.0346 12.7851 11.022 12.8181 11.0359 12.8454C11.2762 13.3108 11.5505 13.754 11.8526 14.1743C11.8652 14.192 11.8879 14.1997 11.9087 14.1933C13.2161 13.7889 14.5417 13.1787 15.9103 12.1737C15.9223 12.1648 15.9298 12.1515 15.9311 12.1369C16.2647 8.6856 15.3723 5.68765 13.5655 3.02998C13.5611 3.02111 13.5535 3.01475 13.5447 3.01094ZM5.34668 10.3185C4.55833 10.3185 3.90876 9.59478 3.90876 8.70593C3.90876 7.81707 4.54574 7.09331 5.34668 7.09331C6.15392 7.09331 6.79721 7.82343 6.78459 8.70593C6.78459 9.59478 6.14761 10.3185 5.34668 10.3185ZM10.6632 10.3185C9.87484 10.3185 9.22526 9.59478 9.22526 8.70593C9.22526 7.81707 9.86222 7.09331 10.6632 7.09331C11.4704 7.09331 12.1137 7.82343 12.1011 8.70593C12.1011 9.59478 11.4704 10.3185 10.6632 10.3185Z" fill="#5865F2" style="fill:#5865F2;fill:color(display-p3 0.3451 0.3961 0.9490);fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
7
public/logo-timeline/gmail.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M1.09091 14.0028H3.63636V7.82102L0 5.09375V12.9119C0 13.5156 0.489091 14.0028 1.09091 14.0028Z" fill="#4285F4" style="fill:#4285F4;fill:color(display-p3 0.2588 0.5216 0.9569);fill-opacity:1;"/>
|
||||||
|
<path d="M12.3633 14.0028H14.9087C15.5124 14.0028 15.9996 13.5138 15.9996 12.9119V5.09375L12.3633 7.82102" fill="#34A853" style="fill:#34A853;fill:color(display-p3 0.2039 0.6588 0.3255);fill-opacity:1;"/>
|
||||||
|
<path d="M12.3633 3.0901V7.81737L15.9996 5.0901V3.63555C15.9996 2.28646 14.4596 1.51737 13.3815 2.32646" fill="#FBBC04" style="fill:#FBBC04;fill:color(display-p3 0.9843 0.7373 0.0157);fill-opacity:1;"/>
|
||||||
|
<path d="M3.63672 7.82102V3.09375L8.00036 6.36648L12.364 3.09375V7.82102L8.00036 11.0938" fill="#EA4335" style="fill:#EA4335;fill:color(display-p3 0.9176 0.2627 0.2078);fill-opacity:1;"/>
|
||||||
|
<path d="M0 3.63555V5.0901L3.63636 7.81737V3.0901L2.61818 2.32646C1.53818 1.51737 0 2.28646 0 3.63555Z" fill="#C5221F" style="fill:#C5221F;fill:color(display-p3 0.7725 0.1333 0.1216);fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
11
public/logo-timeline/google-calendar.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M12.2113 3.78823L8.42186 3.36719L3.79026 3.78823L3.36914 7.99879L3.79018 12.2093L8.00074 12.7357L12.2113 12.2093L12.6323 7.89359L12.2113 3.78823Z" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
<path d="M5.51683 10.3219C5.20211 10.1092 4.98419 9.79875 4.86523 9.38819L5.59579 9.08715C5.66211 9.33979 5.77787 9.53554 5.94315 9.6745C6.10739 9.81346 6.30739 9.88187 6.54107 9.88187C6.78003 9.88187 6.98531 9.80923 7.15683 9.66395C7.32835 9.51867 7.41475 9.33338 7.41475 9.10922C7.41475 8.87978 7.32419 8.69235 7.14315 8.54715C6.96211 8.40195 6.73475 8.32922 6.46315 8.32922H6.04107V7.60611H6.41995C6.65363 7.60611 6.85051 7.54298 7.01051 7.41666C7.17051 7.29034 7.25051 7.11771 7.25051 6.89771C7.25051 6.70195 7.17891 6.54611 7.03579 6.42931C6.89267 6.31251 6.71155 6.25354 6.49155 6.25354C6.27683 6.25354 6.10627 6.31043 5.97995 6.42515C5.85363 6.53987 5.76203 6.68091 5.70419 6.84723L4.98107 6.54619C5.07683 6.27459 5.25267 6.03459 5.51051 5.82723C5.76843 5.61987 6.09787 5.51562 6.49787 5.51562C6.79363 5.51562 7.05995 5.57251 7.29579 5.68723C7.53155 5.80195 7.71683 5.96091 7.85051 6.16299C7.98419 6.36611 8.05051 6.59355 8.05051 6.84611C8.05051 7.10403 7.98843 7.32187 7.86419 7.50083C7.73995 7.67979 7.58731 7.81658 7.40627 7.91242V7.95554C7.64523 8.05554 7.83995 8.20818 7.99363 8.41346C8.14627 8.61874 8.22307 8.86403 8.22307 9.15035C8.22307 9.43667 8.15043 9.69242 8.00515 9.91666C7.85987 10.1409 7.65883 10.3177 7.40411 10.4461C7.14835 10.5745 6.86099 10.6398 6.54203 10.6398C6.17259 10.6408 5.83155 10.5345 5.51683 10.3219Z" fill="#1A73E8" style="fill:#1A73E8;fill:color(display-p3 0.1020 0.4510 0.9098);fill-opacity:1;"/>
|
||||||
|
<path d="M9.99974 6.69913L9.20182 7.27913L8.80078 6.67073L10.2397 5.63281H10.7913V10.5286H9.99974V6.69913Z" fill="#1A73E8" style="fill:#1A73E8;fill:color(display-p3 0.1020 0.4510 0.9098);fill-opacity:1;"/>
|
||||||
|
<path d="M12.2112 15.9987L16.0007 12.2093L14.1059 11.3672L12.2112 12.2093L11.3691 14.104L12.2112 15.9987Z" fill="#EA4335" style="fill:#EA4335;fill:color(display-p3 0.9176 0.2627 0.2078);fill-opacity:1;"/>
|
||||||
|
<path d="M2.94727 14.1057L3.78935 16.0004H12.2104V12.2109H3.78935L2.94727 14.1057Z" fill="#34A853" style="fill:#34A853;fill:color(display-p3 0.2039 0.6588 0.3255);fill-opacity:1;"/>
|
||||||
|
<path d="M1.26312 0C0.56528 0 0 0.56528 0 1.26312V12.2105L1.89472 13.0526L3.78944 12.2105V3.78944H12.2105L13.0526 1.89472L12.2106 0H1.26312Z" fill="#4285F4" style="fill:#4285F4;fill:color(display-p3 0.2588 0.5216 0.9569);fill-opacity:1;"/>
|
||||||
|
<path d="M0 12.2109V14.7373C0 15.4352 0.56528 16.0004 1.26312 16.0004H3.78944V12.2109H0Z" fill="#188038" style="fill:#188038;fill:color(display-p3 0.0941 0.5020 0.2196);fill-opacity:1;"/>
|
||||||
|
<path d="M12.2109 3.7913V12.2123H16.0004V3.7913L14.1057 2.94922L12.2109 3.7913Z" fill="#FBBC04" style="fill:#FBBC04;fill:color(display-p3 0.9843 0.7373 0.0157);fill-opacity:1;"/>
|
||||||
|
<path d="M16.0004 3.78944V1.26312C16.0004 0.5652 15.4351 0 14.7373 0H12.2109V3.78944H16.0004Z" fill="#1967D2" style="fill:#1967D2;fill:color(display-p3 0.0980 0.4039 0.8235);fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
15
public/logo-timeline/google-drive.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_1113_1092)">
|
||||||
|
<path d="M1.20962 13.1048L1.91523 14.3236C2.06186 14.5802 2.27262 14.7818 2.52005 14.9284L5.04009 10.5664H0C0 10.8505 0.0733104 11.1346 0.219931 11.3911L1.20962 13.1048Z" fill="#0066DA" style="fill:#0066DA;fill:color(display-p3 0.0000 0.4000 0.8549);fill-opacity:1;"/>
|
||||||
|
<path d="M8 5.43228L5.47995 1.07031C5.23253 1.21693 5.02176 1.41854 4.87514 1.67512L0.219931 9.73927C0.076007 9.99032 0.000191627 10.2746 0 10.564H5.04009L8 5.43228Z" fill="#00AC47" style="fill:#00AC47;fill:color(display-p3 0.0000 0.6745 0.2784);fill-opacity:1;"/>
|
||||||
|
<path d="M13.4814 14.9284C13.7288 14.7818 13.9395 14.5802 14.0862 14.3236L14.3794 13.8196L15.7815 11.3911C15.9281 11.1346 16.0014 10.8505 16.0014 10.5664H10.9609L12.0335 12.6741L13.4814 14.9284Z" fill="#EA4335" style="fill:#EA4335;fill:color(display-p3 0.9176 0.2627 0.2078);fill-opacity:1;"/>
|
||||||
|
<path d="M8.00051 5.43346L10.5206 1.07149C10.2731 0.924873 9.98906 0.851562 9.69582 0.851562H6.30521C6.01197 0.851562 5.72789 0.934037 5.48047 1.07149L8.00051 5.43346Z" fill="#00832D" style="fill:#00832D;fill:color(display-p3 0.0000 0.5137 0.1765);fill-opacity:1;"/>
|
||||||
|
<path d="M10.9594 10.5664H5.03958L2.51953 14.9284C2.76695 15.075 3.05103 15.1483 3.34427 15.1483H12.6547C12.9479 15.1483 13.232 15.0658 13.4794 14.9284L10.9594 10.5664Z" fill="#2684FC" style="fill:#2684FC;fill:color(display-p3 0.1490 0.5176 0.9882);fill-opacity:1;"/>
|
||||||
|
<path d="M13.4525 5.7072L11.1249 1.67512C10.9782 1.41854 10.7675 1.21693 10.52 1.07031L8 5.43228L10.9599 10.564H15.9908C15.9908 10.2799 15.9175 9.99586 15.7709 9.73927L13.4525 5.7072Z" fill="#FFBA00" style="fill:#FFBA00;fill:color(display-p3 1.0000 0.7294 0.0000);fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_1113_1092">
|
||||||
|
<rect width="16" height="14.2955" fill="white" style="fill:white;fill-opacity:1;" transform="translate(0 0.851562)"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
10
public/logo-timeline/hubspot.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_1113_1147)">
|
||||||
|
<path d="M12.1109 5.28665V3.38932C12.362 3.27191 12.5746 3.08569 12.7241 2.85228C12.8736 2.61887 12.9539 2.34784 12.9555 2.07065V2.02598C12.9545 1.6385 12.8001 1.26718 12.5262 0.993122C12.2523 0.719066 11.881 0.564548 11.4935 0.563316H11.4489C11.0615 0.564547 10.6904 0.718974 10.4164 0.992886C10.1425 1.2668 9.98811 1.63795 9.98688 2.02532V2.06998C9.9881 2.34556 10.0671 2.6152 10.2147 2.84788C10.3624 3.08057 10.5727 3.26685 10.8215 3.38532L10.8302 3.38932V5.29065C10.1048 5.40149 9.42175 5.70286 8.85088 6.16398L8.85888 6.15732L3.64021 2.09398C3.73957 1.72175 3.70674 1.32659 3.54733 0.975856C3.38791 0.625124 3.11178 0.340544 2.76601 0.170636C2.42024 0.000727514 2.02624 -0.0439887 1.65119 0.0441111C1.27613 0.132211 0.94325 0.347672 0.709291 0.653758C0.475332 0.959845 0.354783 1.33761 0.368198 1.72263C0.381612 2.10766 0.52816 2.47611 0.782855 2.76518C1.03755 3.05424 1.38462 3.24601 1.7649 3.30779C2.14517 3.36957 2.5351 3.29754 2.86821 3.10398L2.86021 3.10798L7.99154 7.10198C7.53792 7.78208 7.29703 8.58182 7.29954 9.39932C7.29954 10.2946 7.58288 11.1247 8.06421 11.804L8.05554 11.7907L6.49421 13.3527C6.36922 13.3123 6.23888 13.291 6.10754 13.2893H6.10621C5.83815 13.2893 5.57611 13.3688 5.35323 13.5177C5.13034 13.6667 4.95663 13.8783 4.85404 14.126C4.75146 14.3736 4.72462 14.6462 4.77692 14.9091C4.82921 15.172 4.9583 15.4135 5.14784 15.603C5.33739 15.7926 5.57889 15.9216 5.8418 15.9739C6.10471 16.0262 6.37722 15.9994 6.62487 15.8968C6.87253 15.7942 7.0842 15.6205 7.23313 15.3976C7.38205 15.1747 7.46154 14.9127 7.46154 14.6446C7.45974 14.5098 7.43725 14.376 7.39488 14.248L7.39821 14.2573L8.94288 12.7127C9.44634 13.0968 10.0308 13.3611 10.6518 13.4854C11.2727 13.6097 11.9139 13.5908 12.5264 13.43C13.139 13.2692 13.7068 12.9709 14.1867 12.5576C14.6666 12.1444 15.046 11.6272 15.2959 11.0453C15.5458 10.4634 15.6597 9.83216 15.629 9.19961C15.5982 8.56706 15.4236 7.94985 15.1185 7.39493C14.8133 6.84001 14.3856 6.36199 13.8679 5.99723C13.3502 5.63248 12.7561 5.3906 12.1309 5.28998L12.1069 5.28665H12.1109ZM11.4682 11.5387C11.0458 11.5375 10.6332 11.4111 10.2825 11.1756C9.9318 10.94 9.65879 10.6059 9.49792 10.2152C9.33705 9.82463 9.29554 9.39511 9.37863 8.98092C9.46172 8.56673 9.66569 8.18646 9.96477 7.88812C10.2639 7.58978 10.6446 7.38676 11.059 7.3047C11.4734 7.22264 11.9028 7.26522 12.293 7.42707C12.6833 7.58891 13.0168 7.86275 13.2514 8.21402C13.4861 8.56528 13.6114 8.97821 13.6115 9.40065V9.40198C13.6116 9.68277 13.5564 9.96083 13.449 10.2203C13.3416 10.4797 13.1841 10.7154 12.9855 10.914C12.787 11.1125 12.5513 11.27 12.2918 11.3774C12.0324 11.4848 11.7543 11.5401 11.4735 11.54L11.4682 11.5387Z" fill="#FF7A59" style="fill:#FF7A59;fill:color(display-p3 1.0000 0.4784 0.3490);fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_1113_1147">
|
||||||
|
<rect width="16" height="16" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
10
public/logo-timeline/loom.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_1113_1085)">
|
||||||
|
<path d="M16.0053 7.16267H11.1296L15.352 4.72533L14.5147 3.27467L10.2917 5.712L12.7291 1.49067L11.2784 0.653333L8.84053 4.8736V0H7.1648V4.87413L4.72693 0.653333L3.27573 1.49067L5.71307 5.71093L1.4912 3.27467L0.653333 4.72533L4.87573 7.16267H0V8.83787H4.8752L0.653333 11.2752L1.49067 12.7259L5.7136 10.2885L3.27573 14.5099L4.7264 15.3472L7.1648 11.1264V16H8.84053V11.0219L11.3232 15.3205L12.6837 14.5355L10.2005 10.2357L14.5136 12.7253L15.3515 11.2747L11.1296 8.83733H16.0048L16.0053 7.16267ZM8.00267 10.2773C7.70353 10.2774 7.40732 10.2185 7.13094 10.104C6.85457 9.9896 6.60344 9.82185 6.39189 9.61035C6.18035 9.39886 6.01253 9.14777 5.89803 8.87142C5.78352 8.59507 5.72457 8.29887 5.72453 7.99973C5.7245 7.7006 5.78338 7.40439 5.89782 7.12801C6.01227 6.85163 6.18002 6.6005 6.39152 6.38896C6.60301 6.17742 6.8541 6.0096 7.13045 5.89509C7.4068 5.78059 7.703 5.72164 8.00213 5.7216C8.60626 5.72153 9.18567 5.96145 9.61291 6.38858C10.0401 6.81572 10.2802 7.39507 10.2803 7.9992C10.2803 8.60333 10.0404 9.18274 9.61328 9.60997C9.18615 10.0372 8.6068 10.2773 8.00267 10.2773Z" fill="#625DF5" style="fill:#625DF5;fill:color(display-p3 0.3843 0.3647 0.9608);fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_1113_1085">
|
||||||
|
<rect width="16" height="16" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
28
public/logo-timeline/microsoft-teams.svg
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_695_918)">
|
||||||
|
<path d="M11.1605 6.08203H15.2933C15.6838 6.08203 16.0003 6.39855 16.0003 6.78901V10.5535C16.0003 11.9885 14.837 13.1518 13.402 13.1518H13.3897C11.9547 13.152 10.7912 11.9889 10.791 10.5538C10.791 10.5537 10.791 10.5536 10.791 10.5535V6.45152C10.791 6.24746 10.9564 6.08203 11.1605 6.08203Z" fill="#5059C9" style="fill:#5059C9;fill:color(display-p3 0.3137 0.3490 0.7882);fill-opacity:1;"/>
|
||||||
|
<path d="M13.9537 5.33712C14.8785 5.33712 15.6281 4.58746 15.6281 3.6627C15.6281 2.73794 14.8785 1.98828 13.9537 1.98828C13.029 1.98828 12.2793 2.73794 12.2793 3.6627C12.2793 4.58746 13.029 5.33712 13.9537 5.33712Z" fill="#5059C9" style="fill:#5059C9;fill:color(display-p3 0.3137 0.3490 0.7882);fill-opacity:1;"/>
|
||||||
|
<path d="M8.74478 5.33721C10.0805 5.33721 11.1634 4.25437 11.1634 2.91861C11.1634 1.58285 10.0805 0.5 8.74478 0.5C7.40902 0.5 6.32617 1.58285 6.32617 2.91861C6.32617 4.25437 7.40902 5.33721 8.74478 5.33721Z" fill="#7B83EB" style="fill:#7B83EB;fill:color(display-p3 0.4824 0.5137 0.9216);fill-opacity:1;"/>
|
||||||
|
<path d="M11.97 6.08203H5.14805C4.76224 6.09158 4.45705 6.41175 4.466 6.79757V11.0912C4.41213 13.4064 6.24384 15.3277 8.55903 15.3844C10.8742 15.3277 12.7059 13.4064 12.6521 11.0912V6.79757C12.661 6.41175 12.3558 6.09158 11.97 6.08203Z" fill="#7B83EB" style="fill:#7B83EB;fill:color(display-p3 0.4824 0.5137 0.9216);fill-opacity:1;"/>
|
||||||
|
<path opacity="0.1" d="M8.93016 6.08203V12.0988C8.92831 12.3747 8.76111 12.6226 8.50597 12.7276C8.42474 12.762 8.33743 12.7797 8.24923 12.7797H4.79248C4.74411 12.6569 4.69946 12.5341 4.66225 12.4076C4.532 11.9807 4.46554 11.5368 4.46504 11.0904V6.79645C4.45609 6.41125 4.76078 6.09158 5.14597 6.08203H8.93016Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path opacity="0.2" d="M8.55807 6.08203V12.4709C8.55805 12.5591 8.54034 12.6464 8.50597 12.7276C8.40092 12.9827 8.15305 13.15 7.87714 13.1518H4.96737C4.90411 13.029 4.84458 12.9062 4.79248 12.7797C4.74039 12.6532 4.69946 12.5341 4.66225 12.4076C4.532 11.9807 4.46554 11.5368 4.46504 11.0904V6.79645C4.45609 6.41125 4.76078 6.09158 5.14597 6.08203H8.55807Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path opacity="0.2" d="M8.55806 6.08203V11.7267C8.55523 12.1016 8.25202 12.4048 7.87713 12.4076H4.66225C4.532 11.9807 4.46554 11.5368 4.46504 11.0904V6.79645C4.45609 6.41125 4.76078 6.09158 5.14597 6.08203H8.55806Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path opacity="0.2" d="M8.18596 6.08203V11.7267C8.18313 12.1016 7.87992 12.4048 7.50503 12.4076H4.66225C4.532 11.9807 4.46554 11.5368 4.46504 11.0904V6.79645C4.45609 6.41125 4.76078 6.09158 5.14597 6.08203H8.18596Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path opacity="0.1" d="M8.93026 4.15749V5.32958C8.867 5.3333 8.80747 5.33702 8.74421 5.33702C8.68095 5.33702 8.62142 5.3333 8.55816 5.32958C8.43256 5.32124 8.308 5.30132 8.18607 5.27005C7.43258 5.09161 6.81007 4.56317 6.51165 3.84865C6.4603 3.72866 6.42044 3.60407 6.39258 3.47656H8.24932C8.6248 3.47798 8.92883 3.78201 8.93026 4.15749Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path opacity="0.2" d="M8.55823 4.53249V5.33249C8.43263 5.32415 8.30807 5.30423 8.18614 5.27296C7.43265 5.09452 6.81014 4.56608 6.51172 3.85156H7.8773C8.25277 3.85298 8.5568 4.15701 8.55823 4.53249Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path opacity="0.2" d="M8.55823 4.53249V5.33249C8.43263 5.32415 8.30807 5.30423 8.18614 5.27296C7.43265 5.09452 6.81014 4.56608 6.51172 3.85156H7.8773C8.25277 3.85298 8.5568 4.15701 8.55823 4.53249Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path opacity="0.2" d="M8.18614 4.53249V5.27296C7.43265 5.09452 6.81014 4.56608 6.51172 3.85156H7.50521C7.88069 3.85299 8.18471 4.15702 8.18614 4.53249Z" fill="black" style="fill:black;fill-opacity:1;"/>
|
||||||
|
<path d="M0.682043 3.85156H7.50399C7.88068 3.85156 8.18604 4.15693 8.18604 4.53361V11.3556C8.18604 11.7322 7.88067 12.0376 7.50399 12.0376H0.682043C0.305358 12.0376 0 11.7322 0 11.3556V4.53361C0 4.15693 0.305365 3.85156 0.682043 3.85156Z" fill="url(#paint0_linear_695_918)" style=""/>
|
||||||
|
<path d="M5.88878 6.44693H4.52506V10.1604H3.65622V6.44693H2.29883V5.72656H5.88878V6.44693Z" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear_695_918" x1="1.42208" y1="3.31862" x2="6.76397" y2="12.5705" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#5A62C3" style="stop-color:#5A62C3;stop-color:color(display-p3 0.3529 0.3843 0.7647);stop-opacity:1;"/>
|
||||||
|
<stop offset="0.5" stop-color="#4D55BD" style="stop-color:#4D55BD;stop-color:color(display-p3 0.3020 0.3333 0.7412);stop-opacity:1;"/>
|
||||||
|
<stop offset="1" stop-color="#3940AB" style="stop-color:#3940AB;stop-color:color(display-p3 0.2235 0.2510 0.6706);stop-opacity:1;"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="clip0_695_918">
|
||||||
|
<rect width="16" height="16" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.9 KiB |
13
public/logo-timeline/slack.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_695_944)">
|
||||||
|
<path d="M3.46201 10.1898C3.46201 11.12 2.711 11.8718 1.78179 11.8718C0.852572 11.8718 0.101562 11.12 0.101562 10.1898C0.101562 9.2596 0.852572 8.50781 1.78179 8.50781H3.46201V10.1898ZM4.30212 10.1898C4.30212 9.2596 5.05313 8.50781 5.98235 8.50781C6.91156 8.50781 7.66257 9.2596 7.66257 10.1898V14.3947C7.66257 15.3249 6.91156 16.0767 5.98235 16.0767C5.05313 16.0767 4.30212 15.3249 4.30212 14.3947V10.1898Z" fill="#E01E5A" style="fill:#E01E5A;fill:color(display-p3 0.8784 0.1176 0.3529);fill-opacity:1;"/>
|
||||||
|
<path d="M5.9814 3.44208C5.05219 3.44208 4.30118 2.69029 4.30118 1.7601C4.30118 0.829918 5.05219 0.078125 5.9814 0.078125C6.91062 0.078125 7.66163 0.829918 7.66163 1.7601V3.44208H5.9814ZM5.9814 4.29581C6.91062 4.29581 7.66163 5.0476 7.66163 5.97779C7.66163 6.90797 6.91062 7.65976 5.9814 7.65976H1.76811C0.8389 7.65976 0.0878906 6.90797 0.0878906 5.97779C0.0878906 5.0476 0.8389 4.29581 1.76811 4.29581H5.9814Z" fill="#36C5F0" style="fill:#36C5F0;fill:color(display-p3 0.2118 0.7725 0.9412);fill-opacity:1;"/>
|
||||||
|
<path d="M12.7142 5.97779C12.7142 5.0476 13.4652 4.29581 14.3945 4.29581C15.3237 4.29581 16.0747 5.0476 16.0747 5.97779C16.0747 6.90797 15.3237 7.65976 14.3945 7.65976H12.7142V5.97779ZM11.8741 5.97779C11.8741 6.90797 11.1231 7.65976 10.1939 7.65976C9.26468 7.65976 8.51367 6.90797 8.51367 5.97779V1.7601C8.51367 0.829918 9.26468 0.078125 10.1939 0.078125C11.1231 0.078125 11.8741 0.829918 11.8741 1.7601V5.97779Z" fill="#2EB67D" style="fill:#2EB67D;fill:color(display-p3 0.1804 0.7137 0.4902);fill-opacity:1;"/>
|
||||||
|
<path d="M10.1939 12.7128C11.1231 12.7128 11.8741 13.4645 11.8741 14.3947C11.8741 15.3249 11.1231 16.0767 10.1939 16.0767C9.26468 16.0767 8.51367 15.3249 8.51367 14.3947V12.7128H10.1939ZM10.1939 11.8718C9.26468 11.8718 8.51367 11.12 8.51367 10.1898C8.51367 9.2596 9.26468 8.50781 10.1939 8.50781H14.4072C15.3364 8.50781 16.0874 9.2596 16.0874 10.1898C16.0874 11.12 15.3364 11.8718 14.4072 11.8718H10.1939Z" fill="#ECB22E" style="fill:#ECB22E;fill:color(display-p3 0.9255 0.6980 0.1804);fill-opacity:1;"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_695_944">
|
||||||
|
<rect width="16" height="16" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
4
public/logo-timeline/zoom.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16Z" fill="#4A8CFF" style="fill:#4A8CFF;fill:color(display-p3 0.2902 0.5490 1.0000);fill-opacity:1;"/>
|
||||||
|
<path d="M10.4334 6.96114L12.6943 5.30897C12.8917 5.1481 13.0421 5.18549 13.0421 5.48288V10.5211C13.0421 10.8551 12.8543 10.8168 12.6943 10.6951L10.4334 9.04288V6.96114ZM2.78125 5.49505V9.25158C2.78332 9.6594 2.94726 10.0497 3.23702 10.3367C3.52678 10.6237 3.91864 10.7839 4.32647 10.782H9.80473C9.87884 10.7822 9.95002 10.7531 10.0027 10.7009C10.0553 10.6488 10.0851 10.5779 10.0856 10.5037V6.74723C10.0835 6.3394 9.91959 5.9491 9.62983 5.66211C9.34007 5.37512 8.9482 5.21494 8.54038 5.21679H3.06212C2.98801 5.21656 2.91683 5.24572 2.86418 5.29788C2.81153 5.35004 2.78171 5.42094 2.78125 5.49505Z" fill="white" style="fill:white;fill-opacity:1;"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 969 B |
BIN
public/map.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
public/map/1.jpg
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
public/map/2.jpg
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
public/map/3.jpg
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
public/map/4.jpg
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
public/map/5.jpg
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
public/screenshots/app.png
Normal file
After Width: | Height: | Size: 245 KiB |
BIN
public/screenshots/competitors.png
Normal file
After Width: | Height: | Size: 249 KiB |
BIN
public/screenshots/engagement.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
public/screenshots/networking.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
public/screenshots/profile.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
public/team/celeste-vandermark.jpg
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
public/team/courtney-henry.jpg
Normal file
After Width: | Height: | Size: 8.0 KiB |
BIN
public/team/dries-vincent.jpg
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
public/team/emily-selman.jpg
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
public/team/leonard-krasner.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
public/team/marcus-eldridge.jpg
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
public/team/michael-foster.jpg
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
public/team/nolan-sheffield.jpg
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
public/team/whitney-francis.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
public/testimonials/amy-chase.jpg
Normal file
After Width: | Height: | Size: 334 KiB |
BIN
public/testimonials/conor-neville.jpg
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
public/testimonials/dillon-lenora.jpg
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
public/testimonials/harriet-arron.jpg
Normal file
After Width: | Height: | Size: 568 KiB |
BIN
public/testimonials/tina-yards.jpg
Normal file
After Width: | Height: | Size: 371 KiB |
BIN
public/testimonials/veronica-winton.jpg
Normal file
After Width: | Height: | Size: 416 KiB |
5
sanity-typegen.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"path": "./src/**/*.{ts,tsx,js,jsx}",
|
||||||
|
"schema": "./src/sanity/extract.json",
|
||||||
|
"generates": "./src/sanity/types.ts"
|
||||||
|
}
|
6
sanity.cli.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { defineCliConfig } from 'sanity/cli'
|
||||||
|
|
||||||
|
const projectId = process.env.NEXT_PUBLIC_SANITY_PROJECT_ID
|
||||||
|
const dataset = process.env.NEXT_PUBLIC_SANITY_DATASET
|
||||||
|
|
||||||
|
export default defineCliConfig({ api: { projectId, dataset } })
|
15
sanity.config.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { visionTool } from '@sanity/vision'
|
||||||
|
import { defineConfig } from 'sanity'
|
||||||
|
import { structureTool } from 'sanity/structure'
|
||||||
|
import { apiVersion, dataset, projectId } from './src/sanity/env'
|
||||||
|
import { schema } from './src/sanity/schema'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
basePath: '/studio',
|
||||||
|
projectId,
|
||||||
|
dataset,
|
||||||
|
schema,
|
||||||
|
plugins: [structureTool(), visionTool({ defaultApiVersion: apiVersion })],
|
||||||
|
})
|
BIN
seed.tar.gz
Normal file
200
src/app/blog/[slug]/page.tsx
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
import { Button } from '@/components/button'
|
||||||
|
import { Container } from '@/components/container'
|
||||||
|
import { Footer } from '@/components/footer'
|
||||||
|
import { GradientBackground } from '@/components/gradient'
|
||||||
|
import { Link } from '@/components/link'
|
||||||
|
import { Navbar } from '@/components/navbar'
|
||||||
|
import { Heading, Subheading } from '@/components/text'
|
||||||
|
import { image } from '@/sanity/image'
|
||||||
|
import { getPost } from '@/sanity/queries'
|
||||||
|
import { ChevronLeftIcon } from '@heroicons/react/16/solid'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import type { Metadata } from 'next'
|
||||||
|
import { PortableText } from 'next-sanity'
|
||||||
|
import { notFound } from 'next/navigation'
|
||||||
|
|
||||||
|
export async function generateMetadata({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: { slug: string }
|
||||||
|
}): Promise<Metadata> {
|
||||||
|
let post = await getPost(params.slug)
|
||||||
|
|
||||||
|
return post ? { title: post.title, description: post.excerpt } : {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function BlogPost({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: { slug: string }
|
||||||
|
}) {
|
||||||
|
let post = (await getPost(params.slug)) || notFound()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<main className="overflow-hidden">
|
||||||
|
<GradientBackground />
|
||||||
|
<Container>
|
||||||
|
<Navbar />
|
||||||
|
<Subheading className="mt-16">
|
||||||
|
{dayjs(post.publishedAt).format('dddd, MMMM D, YYYY')}
|
||||||
|
</Subheading>
|
||||||
|
<Heading as="h1" className="mt-2">
|
||||||
|
{post.title}
|
||||||
|
</Heading>
|
||||||
|
<div className="mt-16 grid grid-cols-1 gap-8 pb-24 lg:grid-cols-[15rem_1fr] xl:grid-cols-[15rem_1fr_15rem]">
|
||||||
|
<div className="flex flex-wrap items-center gap-8 max-lg:justify-between lg:flex-col lg:items-start">
|
||||||
|
{post.author && (
|
||||||
|
<div className="flex items-center gap-3">
|
||||||
|
{post.author.image && (
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src={image(post.author.image).size(64, 64).url()}
|
||||||
|
className="aspect-square size-6 rounded-full object-cover"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<div className="text-sm/5 text-gray-700">
|
||||||
|
{post.author.name}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{Array.isArray(post.categories) && (
|
||||||
|
<div className="flex flex-wrap gap-2">
|
||||||
|
{post.categories.map((category) => (
|
||||||
|
<Link
|
||||||
|
key={category.slug}
|
||||||
|
href={`/blog?category=${category.slug}`}
|
||||||
|
className="rounded-full border border-dotted border-gray-300 bg-gray-50 px-2 text-sm/6 font-medium text-gray-500"
|
||||||
|
>
|
||||||
|
{category.title}
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="text-gray-700">
|
||||||
|
<div className="max-w-2xl xl:mx-auto">
|
||||||
|
{post.mainImage && (
|
||||||
|
<img
|
||||||
|
alt={post.mainImage.alt || ''}
|
||||||
|
src={image(post.mainImage).size(2016, 1344).url()}
|
||||||
|
className="mb-10 aspect-3/2 w-full rounded-2xl object-cover shadow-xl"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{post.body && (
|
||||||
|
<PortableText
|
||||||
|
value={post.body}
|
||||||
|
components={{
|
||||||
|
block: {
|
||||||
|
normal: ({ children }) => (
|
||||||
|
<p className="my-10 text-base/8 first:mt-0 last:mb-0">
|
||||||
|
{children}
|
||||||
|
</p>
|
||||||
|
),
|
||||||
|
h2: ({ children }) => (
|
||||||
|
<h2 className="mt-12 mb-10 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0">
|
||||||
|
{children}
|
||||||
|
</h2>
|
||||||
|
),
|
||||||
|
h3: ({ children }) => (
|
||||||
|
<h3 className="mt-12 mb-10 text-xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0">
|
||||||
|
{children}
|
||||||
|
</h3>
|
||||||
|
),
|
||||||
|
blockquote: ({ children }) => (
|
||||||
|
<blockquote className="my-10 border-l-2 border-l-gray-300 pl-6 text-base/8 text-gray-950 first:mt-0 last:mb-0">
|
||||||
|
{children}
|
||||||
|
</blockquote>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
types: {
|
||||||
|
image: ({ value }) => (
|
||||||
|
<img
|
||||||
|
alt={value.alt || ''}
|
||||||
|
src={image(value).width(2000).url()}
|
||||||
|
className="w-full rounded-2xl"
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
separator: ({ value }) => {
|
||||||
|
switch (value.style) {
|
||||||
|
case 'line':
|
||||||
|
return (
|
||||||
|
<hr className="my-8 border-t border-gray-200" />
|
||||||
|
)
|
||||||
|
case 'space':
|
||||||
|
return <div className="my-8" />
|
||||||
|
default:
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
list: {
|
||||||
|
bullet: ({ children }) => (
|
||||||
|
<ul className="list-disc pl-4 text-base/8 marker:text-gray-400">
|
||||||
|
{children}
|
||||||
|
</ul>
|
||||||
|
),
|
||||||
|
number: ({ children }) => (
|
||||||
|
<ol className="list-decimal pl-4 text-base/8 marker:text-gray-400">
|
||||||
|
{children}
|
||||||
|
</ol>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
listItem: {
|
||||||
|
bullet: ({ children }) => {
|
||||||
|
return (
|
||||||
|
<li className="my-2 pl-2 has-[br]:mb-8">
|
||||||
|
{children}
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
number: ({ children }) => {
|
||||||
|
return (
|
||||||
|
<li className="my-2 pl-2 has-[br]:mb-8">
|
||||||
|
{children}
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
marks: {
|
||||||
|
strong: ({ children }) => (
|
||||||
|
<strong className="font-semibold text-gray-950">
|
||||||
|
{children}
|
||||||
|
</strong>
|
||||||
|
),
|
||||||
|
code: ({ children }) => (
|
||||||
|
<>
|
||||||
|
<span aria-hidden>`</span>
|
||||||
|
<code className="text-[15px]/8 font-semibold text-gray-950">
|
||||||
|
{children}
|
||||||
|
</code>
|
||||||
|
<span aria-hidden>`</span>
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
link: ({ value, children }) => {
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
href={value.href}
|
||||||
|
className="font-medium text-gray-950 underline decoration-gray-400 underline-offset-4 data-hover:decoration-gray-600"
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<div className="mt-10">
|
||||||
|
<Button variant="outline" href="/blog">
|
||||||
|
<ChevronLeftIcon className="size-4" />
|
||||||
|
Back to blog
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
<Footer />
|
||||||
|
</main>
|
||||||
|
)
|
||||||
|
}
|
65
src/app/blog/feed.xml/route.ts
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import { image } from '@/sanity/image'
|
||||||
|
import { getPostsForFeed } from '@/sanity/queries'
|
||||||
|
import { Feed } from 'feed'
|
||||||
|
import assert from 'node:assert'
|
||||||
|
|
||||||
|
export async function GET(req: Request) {
|
||||||
|
let siteUrl = new URL(req.url).origin
|
||||||
|
|
||||||
|
let feed = new Feed({
|
||||||
|
title: 'The Radiant Blog',
|
||||||
|
description:
|
||||||
|
'Stay informed with product updates, company news, and insights on how to sell smarter at your company.',
|
||||||
|
author: {
|
||||||
|
name: 'Michael Foster',
|
||||||
|
email: 'michael.foster@example.com',
|
||||||
|
},
|
||||||
|
id: siteUrl,
|
||||||
|
link: siteUrl,
|
||||||
|
image: `${siteUrl}/favicon.ico`,
|
||||||
|
favicon: `${siteUrl}/favicon.ico`,
|
||||||
|
copyright: `All rights reserved ${new Date().getFullYear()}`,
|
||||||
|
feedLinks: {
|
||||||
|
rss2: `${siteUrl}/feed.xml`,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
let posts = await getPostsForFeed()
|
||||||
|
|
||||||
|
posts.forEach((post) => {
|
||||||
|
try {
|
||||||
|
assert(typeof post.title === 'string')
|
||||||
|
assert(typeof post.slug === 'string')
|
||||||
|
assert(typeof post.excerpt === 'string')
|
||||||
|
assert(typeof post.publishedAt === 'string')
|
||||||
|
} catch (error) {
|
||||||
|
console.log('Post is missing required fields for RSS feed:', post)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
feed.addItem({
|
||||||
|
title: post.title,
|
||||||
|
id: post.slug,
|
||||||
|
link: `${siteUrl}/blog/${post.slug}`,
|
||||||
|
content: post.excerpt,
|
||||||
|
image: post.mainImage
|
||||||
|
? image(post.mainImage)
|
||||||
|
.size(1200, 800)
|
||||||
|
.format('jpg')
|
||||||
|
.url()
|
||||||
|
.replaceAll('&', '&')
|
||||||
|
: undefined,
|
||||||
|
author: post.author?.name ? [{ name: post.author.name }] : [],
|
||||||
|
contributor: post.author?.name ? [{ name: post.author.name }] : [],
|
||||||
|
date: new Date(post.publishedAt),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return new Response(feed.rss2(), {
|
||||||
|
status: 200,
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/xml',
|
||||||
|
'cache-control': 's-maxage=31556952',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
310
src/app/blog/page.tsx
Normal file
@ -0,0 +1,310 @@
|
|||||||
|
import { Button } from '@/components/button'
|
||||||
|
import { Container } from '@/components/container'
|
||||||
|
import { Footer } from '@/components/footer'
|
||||||
|
import { GradientBackground } from '@/components/gradient'
|
||||||
|
import { Link } from '@/components/link'
|
||||||
|
import { Navbar } from '@/components/navbar'
|
||||||
|
import { Heading, Lead, Subheading } from '@/components/text'
|
||||||
|
import { image } from '@/sanity/image'
|
||||||
|
import {
|
||||||
|
getCategories,
|
||||||
|
getFeaturedPosts,
|
||||||
|
getPosts,
|
||||||
|
getPostsCount,
|
||||||
|
} from '@/sanity/queries'
|
||||||
|
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'
|
||||||
|
import {
|
||||||
|
CheckIcon,
|
||||||
|
ChevronLeftIcon,
|
||||||
|
ChevronRightIcon,
|
||||||
|
ChevronUpDownIcon,
|
||||||
|
RssIcon,
|
||||||
|
} from '@heroicons/react/16/solid'
|
||||||
|
import { clsx } from 'clsx'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import type { Metadata } from 'next'
|
||||||
|
import { notFound } from 'next/navigation'
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: 'Blog',
|
||||||
|
description:
|
||||||
|
'Stay informed with product updates, company news, and insights on how to sell smarter at your company.',
|
||||||
|
}
|
||||||
|
|
||||||
|
const postsPerPage = 5
|
||||||
|
|
||||||
|
async function FeaturedPosts() {
|
||||||
|
let featuredPosts = await getFeaturedPosts(3)
|
||||||
|
|
||||||
|
if (featuredPosts.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="mt-16 bg-linear-to-t from-gray-100 pb-14">
|
||||||
|
<Container>
|
||||||
|
<h2 className="text-2xl font-medium tracking-tight">Featured</h2>
|
||||||
|
<div className="mt-6 grid grid-cols-1 gap-8 lg:grid-cols-3">
|
||||||
|
{featuredPosts.map((post) => (
|
||||||
|
<div
|
||||||
|
key={post.slug}
|
||||||
|
className="relative flex flex-col rounded-3xl bg-white p-2 shadow-md ring-1 shadow-black/5 ring-black/5"
|
||||||
|
>
|
||||||
|
{post.mainImage && (
|
||||||
|
<img
|
||||||
|
alt={post.mainImage.alt || ''}
|
||||||
|
src={image(post.mainImage).size(1170, 780).url()}
|
||||||
|
className="aspect-3/2 w-full rounded-2xl object-cover"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<div className="flex flex-1 flex-col p-8">
|
||||||
|
<div className="text-sm/5 text-gray-700">
|
||||||
|
{dayjs(post.publishedAt).format('dddd, MMMM D, YYYY')}
|
||||||
|
</div>
|
||||||
|
<div className="mt-2 text-base/7 font-medium">
|
||||||
|
<Link href={`/blog/${post.slug}`}>
|
||||||
|
<span className="absolute inset-0" />
|
||||||
|
{post.title}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
<div className="mt-2 flex-1 text-sm/6 text-gray-500">
|
||||||
|
{post.excerpt}
|
||||||
|
</div>
|
||||||
|
{post.author && (
|
||||||
|
<div className="mt-6 flex items-center gap-3">
|
||||||
|
{post.author.image && (
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src={image(post.author.image).size(64, 64).url()}
|
||||||
|
className="aspect-square size-6 rounded-full object-cover"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<div className="text-sm/5 text-gray-700">
|
||||||
|
{post.author.name}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function Categories({ selected }: { selected?: string }) {
|
||||||
|
let categories = await getCategories()
|
||||||
|
|
||||||
|
if (categories.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="flex flex-wrap items-center justify-between gap-2">
|
||||||
|
<Menu>
|
||||||
|
<MenuButton className="flex items-center justify-between gap-2 font-medium">
|
||||||
|
{categories.find(({ slug }) => slug === selected)?.title ||
|
||||||
|
'All categories'}
|
||||||
|
<ChevronUpDownIcon className="size-4 fill-gray-900" />
|
||||||
|
</MenuButton>
|
||||||
|
<MenuItems
|
||||||
|
anchor="bottom start"
|
||||||
|
className="min-w-40 rounded-lg bg-white p-1 shadow-lg ring-1 ring-gray-200 [--anchor-gap:6px] [--anchor-offset:-4px] [--anchor-padding:10px]"
|
||||||
|
>
|
||||||
|
<MenuItem>
|
||||||
|
<Link
|
||||||
|
href="/blog"
|
||||||
|
data-selected={selected === undefined ? true : undefined}
|
||||||
|
className="group grid grid-cols-[1rem_1fr] items-center gap-2 rounded-md px-2 py-1 data-focus:bg-gray-950/5"
|
||||||
|
>
|
||||||
|
<CheckIcon className="hidden size-4 group-data-selected:block" />
|
||||||
|
<p className="col-start-2 text-sm/6">All categories</p>
|
||||||
|
</Link>
|
||||||
|
</MenuItem>
|
||||||
|
{categories.map((category) => (
|
||||||
|
<MenuItem key={category.slug}>
|
||||||
|
<Link
|
||||||
|
href={`/blog?category=${category.slug}`}
|
||||||
|
data-selected={category.slug === selected ? true : undefined}
|
||||||
|
className="group grid grid-cols-[16px_1fr] items-center gap-2 rounded-md px-2 py-1 data-focus:bg-gray-950/5"
|
||||||
|
>
|
||||||
|
<CheckIcon className="hidden size-4 group-data-selected:block" />
|
||||||
|
<p className="col-start-2 text-sm/6">{category.title}</p>
|
||||||
|
</Link>
|
||||||
|
</MenuItem>
|
||||||
|
))}
|
||||||
|
</MenuItems>
|
||||||
|
</Menu>
|
||||||
|
<Button variant="outline" href="/blog/feed.xml" className="gap-1">
|
||||||
|
<RssIcon className="size-4" />
|
||||||
|
RSS Feed
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function Posts({ page, category }: { page: number; category?: string }) {
|
||||||
|
let posts = await getPosts(
|
||||||
|
(page - 1) * postsPerPage,
|
||||||
|
page * postsPerPage,
|
||||||
|
category,
|
||||||
|
)
|
||||||
|
|
||||||
|
if (posts.length === 0 && (page > 1 || category)) {
|
||||||
|
notFound()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (posts.length === 0) {
|
||||||
|
return <p className="mt-6 text-gray-500">No posts found.</p>
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="mt-6">
|
||||||
|
{posts.map((post) => (
|
||||||
|
<div
|
||||||
|
key={post.slug}
|
||||||
|
className="relative grid grid-cols-1 border-b border-b-gray-100 py-10 first:border-t first:border-t-gray-200 max-sm:gap-3 sm:grid-cols-3"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<div className="text-sm/5 max-sm:text-gray-700 sm:font-medium">
|
||||||
|
{dayjs(post.publishedAt).format('dddd, MMMM D, YYYY')}
|
||||||
|
</div>
|
||||||
|
{post.author && (
|
||||||
|
<div className="mt-2.5 flex items-center gap-3">
|
||||||
|
{post.author.image && (
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src={image(post.author.image).width(64).height(64).url()}
|
||||||
|
className="aspect-square size-6 rounded-full object-cover"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<div className="text-sm/5 text-gray-700">
|
||||||
|
{post.author.name}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="sm:col-span-2 sm:max-w-2xl">
|
||||||
|
<h2 className="text-sm/5 font-medium">{post.title}</h2>
|
||||||
|
<p className="mt-3 text-sm/6 text-gray-500">{post.excerpt}</p>
|
||||||
|
<div className="mt-4">
|
||||||
|
<Link
|
||||||
|
href={`/blog/${post.slug}`}
|
||||||
|
className="flex items-center gap-1 text-sm/5 font-medium"
|
||||||
|
>
|
||||||
|
<span className="absolute inset-0" />
|
||||||
|
Read more
|
||||||
|
<ChevronRightIcon className="size-4 fill-gray-400" />
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function Pagination({
|
||||||
|
page,
|
||||||
|
category,
|
||||||
|
}: {
|
||||||
|
page: number
|
||||||
|
category?: string
|
||||||
|
}) {
|
||||||
|
function url(page: number) {
|
||||||
|
let params = new URLSearchParams()
|
||||||
|
|
||||||
|
if (category) params.set('category', category)
|
||||||
|
if (page > 1) params.set('page', page.toString())
|
||||||
|
|
||||||
|
return params.size !== 0 ? `/blog?${params.toString()}` : '/blog'
|
||||||
|
}
|
||||||
|
|
||||||
|
let totalPosts = await getPostsCount(category)
|
||||||
|
let hasPreviousPage = page - 1
|
||||||
|
let previousPageUrl = hasPreviousPage ? url(page - 1) : undefined
|
||||||
|
let hasNextPage = page * postsPerPage < totalPosts
|
||||||
|
let nextPageUrl = hasNextPage ? url(page + 1) : undefined
|
||||||
|
let pageCount = Math.ceil(totalPosts / postsPerPage)
|
||||||
|
|
||||||
|
if (pageCount < 2) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="mt-6 flex items-center justify-between gap-2">
|
||||||
|
<Button
|
||||||
|
variant="outline"
|
||||||
|
href={previousPageUrl}
|
||||||
|
disabled={!previousPageUrl}
|
||||||
|
>
|
||||||
|
<ChevronLeftIcon className="size-4" />
|
||||||
|
Previous
|
||||||
|
</Button>
|
||||||
|
<div className="flex gap-2 max-sm:hidden">
|
||||||
|
{Array.from({ length: pageCount }, (_, i) => (
|
||||||
|
<Link
|
||||||
|
key={i + 1}
|
||||||
|
href={url(i + 1)}
|
||||||
|
data-active={i + 1 === page ? true : undefined}
|
||||||
|
className={clsx(
|
||||||
|
'size-7 rounded-lg text-center text-sm/7 font-medium',
|
||||||
|
'data-hover:bg-gray-100',
|
||||||
|
'data-active:shadow-sm data-active:ring-1 data-active:ring-black/10',
|
||||||
|
'data-active:data-hover:bg-gray-50',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
{i + 1}
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<Button variant="outline" href={nextPageUrl} disabled={!nextPageUrl}>
|
||||||
|
Next
|
||||||
|
<ChevronRightIcon className="size-4" />
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function Blog({
|
||||||
|
searchParams,
|
||||||
|
}: {
|
||||||
|
searchParams: { [key: string]: string | string[] | undefined }
|
||||||
|
}) {
|
||||||
|
let page =
|
||||||
|
'page' in searchParams
|
||||||
|
? typeof searchParams.page === 'string' && parseInt(searchParams.page) > 1
|
||||||
|
? parseInt(searchParams.page)
|
||||||
|
: notFound()
|
||||||
|
: 1
|
||||||
|
|
||||||
|
let category =
|
||||||
|
typeof searchParams.category === 'string'
|
||||||
|
? searchParams.category
|
||||||
|
: undefined
|
||||||
|
|
||||||
|
return (
|
||||||
|
<main className="overflow-hidden">
|
||||||
|
<GradientBackground />
|
||||||
|
<Container>
|
||||||
|
<Navbar />
|
||||||
|
<Subheading className="mt-16">Blog</Subheading>
|
||||||
|
<Heading as="h1" className="mt-2">
|
||||||
|
What’s happening at Radiant.
|
||||||
|
</Heading>
|
||||||
|
<Lead className="mt-6 max-w-3xl">
|
||||||
|
Stay informed with product updates, company news, and insights on how
|
||||||
|
to sell smarter at your company.
|
||||||
|
</Lead>
|
||||||
|
</Container>
|
||||||
|
{page === 1 && !category && <FeaturedPosts />}
|
||||||
|
<Container className="mt-16 pb-24">
|
||||||
|
<Categories selected={category} />
|
||||||
|
<Posts page={page} category={category} />
|
||||||
|
<Pagination page={page} category={category} />
|
||||||
|
</Container>
|
||||||
|
<Footer />
|
||||||
|
</main>
|
||||||
|
)
|
||||||
|
}
|
473
src/app/company/page.tsx
Normal file
@ -0,0 +1,473 @@
|
|||||||
|
import { AnimatedNumber } from '@/components/animated-number'
|
||||||
|
import { Button } from '@/components/button'
|
||||||
|
import { Container } from '@/components/container'
|
||||||
|
import { Footer } from '@/components/footer'
|
||||||
|
import { GradientBackground } from '@/components/gradient'
|
||||||
|
import { Navbar } from '@/components/navbar'
|
||||||
|
import { Heading, Lead, Subheading } from '@/components/text'
|
||||||
|
import type { Metadata } from 'next'
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: 'Company',
|
||||||
|
description:
|
||||||
|
'We’re on a mission to transform revenue organizations by harnessing vast amounts of illegally acquired customer data.',
|
||||||
|
}
|
||||||
|
|
||||||
|
function Header() {
|
||||||
|
return (
|
||||||
|
<Container className="mt-16">
|
||||||
|
<Heading as="h1">Helping companies generate revenue.</Heading>
|
||||||
|
<Lead className="mt-6 max-w-3xl">
|
||||||
|
We’re on a mission to transform revenue organizations by harnessing vast
|
||||||
|
amounts of illegally acquired customer data.
|
||||||
|
</Lead>
|
||||||
|
<section className="mt-16 grid grid-cols-1 lg:grid-cols-2 lg:gap-12">
|
||||||
|
<div className="max-w-lg">
|
||||||
|
<h2 className="text-2xl font-medium tracking-tight">Our mission</h2>
|
||||||
|
<p className="mt-6 text-sm/6 text-gray-600">
|
||||||
|
At Radiant, we are dedicated to transforming the way revenue
|
||||||
|
organizations source and close deals. Our mission is to provide our
|
||||||
|
customers with an unfair advantage over both their competitors and
|
||||||
|
potential customers through insight and analysis. We’ll stop at
|
||||||
|
nothing to get you the data you need to close a deal.
|
||||||
|
</p>
|
||||||
|
<p className="mt-8 text-sm/6 text-gray-600">
|
||||||
|
We’re customer-obsessed — putting the time in to build a detailed
|
||||||
|
financial picture of every one of our customers so that we know more
|
||||||
|
about your business than you do. We are in this together, mostly
|
||||||
|
because we are all implicated in large-scale financial crime. In our
|
||||||
|
history as a company, we’ve never lost a customer, because if any
|
||||||
|
one of us talks, we all go down.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="pt-20 lg:row-span-2 lg:-mr-16 xl:mr-auto">
|
||||||
|
<div className="-mx-8 grid grid-cols-2 gap-4 sm:-mx-16 sm:grid-cols-4 lg:mx-0 lg:grid-cols-2 lg:gap-4 xl:gap-8">
|
||||||
|
<div className="aspect-square overflow-hidden rounded-xl shadow-xl outline-1 -outline-offset-1 outline-black/10">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/company/1.jpg"
|
||||||
|
className="block size-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="-mt-8 aspect-square overflow-hidden rounded-xl shadow-xl outline-1 -outline-offset-1 outline-black/10 lg:-mt-32">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/company/2.jpg"
|
||||||
|
className="block size-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="aspect-square overflow-hidden rounded-xl shadow-xl outline-1 -outline-offset-1 outline-black/10">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/company/3.jpg"
|
||||||
|
className="block size-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="-mt-8 aspect-square overflow-hidden rounded-xl shadow-xl outline-1 -outline-offset-1 outline-black/10 lg:-mt-32">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/company/4.jpg"
|
||||||
|
className="block size-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="max-lg:mt-16 lg:col-span-1">
|
||||||
|
<Subheading>The Numbers</Subheading>
|
||||||
|
<hr className="mt-6 border-t border-gray-200" />
|
||||||
|
<dl className="mt-6 grid grid-cols-1 gap-x-8 gap-y-4 sm:grid-cols-2">
|
||||||
|
<div className="flex flex-col gap-y-2 border-b border-dotted border-gray-200 pb-4">
|
||||||
|
<dt className="text-sm/6 text-gray-600">Raised</dt>
|
||||||
|
<dd className="order-first text-6xl font-medium tracking-tight">
|
||||||
|
$<AnimatedNumber start={100} end={150} />M
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-y-2 border-b border-dotted border-gray-200 pb-4">
|
||||||
|
<dt className="text-sm/6 text-gray-600">Companies</dt>
|
||||||
|
<dd className="order-first text-6xl font-medium tracking-tight">
|
||||||
|
<AnimatedNumber start={15} end={30} />K
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-y-2 max-sm:border-b max-sm:border-dotted max-sm:border-gray-200 max-sm:pb-4">
|
||||||
|
<dt className="text-sm/6 text-gray-600">Deals Closed</dt>
|
||||||
|
<dd className="order-first text-6xl font-medium tracking-tight">
|
||||||
|
<AnimatedNumber start={0.9} end={1.5} decimals={1} />M
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-y-2">
|
||||||
|
<dt className="text-sm/6 text-gray-600">Leads Generated</dt>
|
||||||
|
<dd className="order-first text-6xl font-medium tracking-tight">
|
||||||
|
<AnimatedNumber start={150} end={200} />M
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Person({
|
||||||
|
name,
|
||||||
|
description,
|
||||||
|
img,
|
||||||
|
}: {
|
||||||
|
name: string
|
||||||
|
description: string
|
||||||
|
img: string
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<li className="flex items-center gap-4">
|
||||||
|
<img alt="" src={img} className="size-12 rounded-full" />
|
||||||
|
<div className="text-sm/6">
|
||||||
|
<h3 className="font-medium">{name}</h3>
|
||||||
|
<p className="text-gray-500">{description}</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Team() {
|
||||||
|
return (
|
||||||
|
<Container className="mt-32">
|
||||||
|
<Subheading>Meet the team</Subheading>
|
||||||
|
<Heading as="h3" className="mt-2">
|
||||||
|
Founded by an all-star team.
|
||||||
|
</Heading>
|
||||||
|
<Lead className="mt-6 max-w-3xl">
|
||||||
|
Radiant is founded by two of the best sellers in the business and backed
|
||||||
|
by investors who look the other way.
|
||||||
|
</Lead>
|
||||||
|
<div className="mt-12 grid grid-cols-1 gap-12 lg:grid-cols-2">
|
||||||
|
<div className="max-w-lg">
|
||||||
|
<p className="text-sm/6 text-gray-600">
|
||||||
|
Years ago, while working as sales associates at rival companies,
|
||||||
|
Thomas, Ben, and Natalie were discussing a big client they had all
|
||||||
|
been competing for. Joking about seeing the terms of each other’s
|
||||||
|
offers, they had an idea: what if they shared data to win deals and
|
||||||
|
split the commission behind their companies’ backs? It turned out to
|
||||||
|
be an incredible success, and that idea became the kernel for
|
||||||
|
Radiant.
|
||||||
|
</p>
|
||||||
|
<p className="mt-8 text-sm/6 text-gray-600">
|
||||||
|
Today, Radiant transforms revenue organizations by harnessing
|
||||||
|
illegally acquired customer and competitor data, using it to provide
|
||||||
|
extraordinary leverage. More than 30,000 companies rely on Radiant
|
||||||
|
to undercut their competitors and extort their customers, all
|
||||||
|
through a single integrated platform.
|
||||||
|
</p>
|
||||||
|
<div className="mt-6">
|
||||||
|
<Button className="w-full sm:w-auto" href="#">
|
||||||
|
Join us
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="max-lg:order-first max-lg:max-w-lg">
|
||||||
|
<div className="aspect-3/2 overflow-hidden rounded-xl shadow-xl outline-1 -outline-offset-1 outline-black/10">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/company/5.jpg"
|
||||||
|
className="block size-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Subheading as="h3" className="mt-24">
|
||||||
|
The team
|
||||||
|
</Subheading>
|
||||||
|
<hr className="mt-6 border-t border-gray-200" />
|
||||||
|
<ul
|
||||||
|
role="list"
|
||||||
|
className="mx-auto mt-16 grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3"
|
||||||
|
>
|
||||||
|
<Person
|
||||||
|
name="Michael Foster"
|
||||||
|
description="Co-Founder / CTO"
|
||||||
|
img="/team/michael-foster.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Dries Vincent"
|
||||||
|
description="Business Relations"
|
||||||
|
img="/team/dries-vincent.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Celeste Vandermark"
|
||||||
|
description="Front-end Developer"
|
||||||
|
img="/team/celeste-vandermark.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Courtney Henry"
|
||||||
|
description="Designer"
|
||||||
|
img="/team/courtney-henry.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Marcus Eldridge"
|
||||||
|
description="Director of Product"
|
||||||
|
img="/team/marcus-eldridge.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Whitney Francis"
|
||||||
|
description="Copywriter"
|
||||||
|
img="/team/whitney-francis.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Leonard Krasner"
|
||||||
|
description="Senior Designer"
|
||||||
|
img="/team/leonard-krasner.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Nolan Sheffield"
|
||||||
|
description="Principal Designer"
|
||||||
|
img="/team/nolan-sheffield.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Emily Selman"
|
||||||
|
description="VP, User Experience"
|
||||||
|
img="/team/emily-selman.jpg"
|
||||||
|
/>
|
||||||
|
</ul>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Investors() {
|
||||||
|
return (
|
||||||
|
<Container className="mt-32">
|
||||||
|
<Subheading>Investors</Subheading>
|
||||||
|
<Heading as="h3" className="mt-2">
|
||||||
|
Funded by industry-leaders.
|
||||||
|
</Heading>
|
||||||
|
<Lead className="mt-6 max-w-3xl">
|
||||||
|
We are fortunate to be backed by the best investors in the industry —
|
||||||
|
both literal and metaphorical partners in crime.
|
||||||
|
</Lead>
|
||||||
|
<Subheading as="h3" className="mt-24">
|
||||||
|
Venture Capital
|
||||||
|
</Subheading>
|
||||||
|
<hr className="mt-6 border-t border-gray-200" />
|
||||||
|
<ul
|
||||||
|
role="list"
|
||||||
|
className="mx-auto mt-10 grid grid-cols-1 gap-8 lg:grid-cols-2"
|
||||||
|
>
|
||||||
|
<li>
|
||||||
|
<img
|
||||||
|
alt="Remington Schwartz"
|
||||||
|
src="/investors/remington-schwartz.svg"
|
||||||
|
className="h-14"
|
||||||
|
/>
|
||||||
|
<p className="mt-6 max-w-lg text-sm/6 text-gray-500">
|
||||||
|
Remington Schwartz has been a driving force in the tech industry,
|
||||||
|
backing bold entrepreneurs who explore grey areas in financial and
|
||||||
|
privacy law. Their deep industry expertise and extensive political
|
||||||
|
lobbying provide their portfolio companies with favorable regulation
|
||||||
|
and direct access to lawmakers.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img alt="Deccel" src="/investors/deccel.svg" className="h-14" />
|
||||||
|
<p className="mt-6 max-w-lg text-sm/6 text-gray-500">
|
||||||
|
Deccel has been at the forefront of innovation, investing in
|
||||||
|
pioneering companies across various sectors, including technology,
|
||||||
|
consumer goods, and healthcare. Their philosophy of ‘plausible
|
||||||
|
deniability’ and dedication to looking the other way have helped
|
||||||
|
produce some of the world’s most controversial companies.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<Subheading as="h3" className="mt-24">
|
||||||
|
Individual investors
|
||||||
|
</Subheading>
|
||||||
|
<hr className="mt-6 border-t border-gray-200" />
|
||||||
|
<ul
|
||||||
|
role="list"
|
||||||
|
className="mx-auto mt-16 grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3"
|
||||||
|
>
|
||||||
|
<Person
|
||||||
|
name="Kristin Watson"
|
||||||
|
description="TechNexus Ventures"
|
||||||
|
img="/individual-investors/kristin-watson.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Emma Dorsey"
|
||||||
|
description="Innovate Capital Partners"
|
||||||
|
img="/individual-investors/emma-dorsey.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Alicia Bell"
|
||||||
|
description="FutureWave Investments"
|
||||||
|
img="/individual-investors/alicia-bell.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Jenny Wilson"
|
||||||
|
description="SynergyTech Equity"
|
||||||
|
img="/individual-investors/jenny-wilson.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Anna Roberts"
|
||||||
|
description="NextGen Horizons"
|
||||||
|
img="/individual-investors/anna-roberts.jpg"
|
||||||
|
/>
|
||||||
|
<Person
|
||||||
|
name="Benjamin Russel"
|
||||||
|
description="Pioneer Digital Ventures"
|
||||||
|
img="/individual-investors/benjamin-russel.jpg"
|
||||||
|
/>
|
||||||
|
</ul>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Testimonial() {
|
||||||
|
return (
|
||||||
|
<div className="relative flex aspect-square flex-col justify-end overflow-hidden rounded-3xl sm:aspect-5/4 lg:aspect-3/4">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/testimonials/veronica-winton.jpg"
|
||||||
|
className="absolute inset-0 object-cover"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden="true"
|
||||||
|
className="absolute inset-0 rounded-3xl bg-linear-to-t from-black from-10% to-75% ring-1 ring-gray-950/10 ring-inset lg:from-25%"
|
||||||
|
/>
|
||||||
|
<figure className="relative p-10">
|
||||||
|
<blockquote>
|
||||||
|
<p className="relative text-xl/7 text-white before:absolute before:-translate-x-full before:content-['“'] after:absolute after:content-['”']">
|
||||||
|
We've managed to put two of our main competitors out of
|
||||||
|
business in 6 months.
|
||||||
|
</p>
|
||||||
|
</blockquote>
|
||||||
|
<figcaption className="mt-6 border-t border-white/20 pt-6">
|
||||||
|
<p className="text-sm/6 font-medium text-white">Veronica Winton</p>
|
||||||
|
<p className="text-sm/6 font-medium">
|
||||||
|
<span className="bg-linear-to-r from-[#fff1be] from-28% via-[#ee87cb] via-70% to-[#b060ff] bg-clip-text text-transparent">
|
||||||
|
CSO, Planeteria
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Careers() {
|
||||||
|
return (
|
||||||
|
<Container className="my-32">
|
||||||
|
<Subheading>Careers</Subheading>
|
||||||
|
<Heading as="h3" className="mt-2">
|
||||||
|
Join our fully remote team.
|
||||||
|
</Heading>
|
||||||
|
<Lead className="mt-6 max-w-3xl">
|
||||||
|
We work together from all over the world, mainly from locations without
|
||||||
|
extradition agreements.
|
||||||
|
</Lead>
|
||||||
|
<div className="mt-24 grid grid-cols-1 gap-16 lg:grid-cols-[1fr_24rem]">
|
||||||
|
<div className="lg:max-w-2xl">
|
||||||
|
<Subheading as="h3">Open positions</Subheading>
|
||||||
|
<div>
|
||||||
|
<table className="w-full text-left">
|
||||||
|
<colgroup>
|
||||||
|
<col className="w-2/3" />
|
||||||
|
<col className="w-1/3" />
|
||||||
|
<col className="w-0" />
|
||||||
|
</colgroup>
|
||||||
|
<thead className="sr-only">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Title</th>
|
||||||
|
<th scope="col">Location</th>
|
||||||
|
<th scope="col">Read more</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th scope="colgroup" colSpan={3} className="px-0 pt-10 pb-0">
|
||||||
|
<div className="-mx-4 rounded-lg bg-gray-50 px-4 py-3 text-sm/6 font-semibold">
|
||||||
|
Engineering
|
||||||
|
</div>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr className="border-b border-dotted border-gray-200 text-sm/6 font-normal">
|
||||||
|
<td className="px-0 py-4">iOS Developer</td>
|
||||||
|
<td className="px-0 py-4 text-gray-600">Remote</td>
|
||||||
|
<td className="px-0 py-4 text-right">
|
||||||
|
<Button variant="outline" href="#">
|
||||||
|
View listing
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr className="border-b border-dotted border-gray-200 text-sm/6 font-normal">
|
||||||
|
<td className="px-0 py-4">Backend Engineer</td>
|
||||||
|
<td className="px-0 py-4 text-gray-600">Remote</td>
|
||||||
|
<td className="px-0 py-4 text-right">
|
||||||
|
<Button variant="outline" href="#">
|
||||||
|
View listing
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr className="text-sm/6 font-normal">
|
||||||
|
<td className="px-0 py-4">Product Engineer</td>
|
||||||
|
<td className="px-0 py-4 text-gray-600">Remote</td>
|
||||||
|
<td className="px-0 py-4 text-right">
|
||||||
|
<Button variant="outline" href="#">
|
||||||
|
View listing
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="colgroup" colSpan={3} className="px-0 pt-5 pb-0">
|
||||||
|
<div className="-mx-4 rounded-lg bg-gray-50 px-4 py-3 text-sm/6 font-semibold">
|
||||||
|
Design
|
||||||
|
</div>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr className="border-b border-dotted border-gray-200 text-sm/6 font-normal">
|
||||||
|
<td className="px-0 py-4">Principal Designer</td>
|
||||||
|
<td className="px-0 py-4 text-gray-600">Remote</td>
|
||||||
|
<td className="px-0 py-4 text-right">
|
||||||
|
<Button variant="outline" href="#">
|
||||||
|
View listing
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr className="border-b border-dotted border-gray-200 text-sm/6 font-normal">
|
||||||
|
<td className="px-0 py-4">Designer</td>
|
||||||
|
<td className="px-0 py-4 text-gray-600">Remote</td>
|
||||||
|
<td className="px-0 py-4 text-right">
|
||||||
|
<Button variant="outline" href="#">
|
||||||
|
View listing
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr className="text-sm/6 font-normal">
|
||||||
|
<td className="px-0 py-4">Senior Designer</td>
|
||||||
|
<td className="px-0 py-4 text-gray-600">Remote</td>
|
||||||
|
<td className="px-0 py-4 text-right">
|
||||||
|
<Button variant="outline" href="#">
|
||||||
|
View listing
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Testimonial />
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Company() {
|
||||||
|
return (
|
||||||
|
<main className="overflow-hidden">
|
||||||
|
<GradientBackground />
|
||||||
|
<Container>
|
||||||
|
<Navbar />
|
||||||
|
</Container>
|
||||||
|
<Header />
|
||||||
|
<Team />
|
||||||
|
<Investors />
|
||||||
|
<Careers />
|
||||||
|
<Footer />
|
||||||
|
</main>
|
||||||
|
)
|
||||||
|
}
|
BIN
src/app/favicon.ico
Normal file
After Width: | Height: | Size: 6.4 KiB |
33
src/app/layout.tsx
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import '@/styles/tailwind.css'
|
||||||
|
import type { Metadata } from 'next'
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: {
|
||||||
|
template: '%s - Radiant',
|
||||||
|
default: 'Radiant - Close every deal',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function RootLayout({
|
||||||
|
children,
|
||||||
|
}: Readonly<{
|
||||||
|
children: React.ReactNode
|
||||||
|
}>) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://api.fontshare.com/css?f%5B%5D=switzer@400,500,600,700&display=swap"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="alternate"
|
||||||
|
type="application/rss+xml"
|
||||||
|
title="The Radiant Blog"
|
||||||
|
href="/blog/feed.xml"
|
||||||
|
/>
|
||||||
|
</head>
|
||||||
|
<body className="text-gray-950 antialiased">{children}</body>
|
||||||
|
</html>
|
||||||
|
)
|
||||||
|
}
|
92
src/app/login/page.tsx
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
import { Button } from '@/components/button'
|
||||||
|
import { GradientBackground } from '@/components/gradient'
|
||||||
|
import { Link } from '@/components/link'
|
||||||
|
import { Mark } from '@/components/logo'
|
||||||
|
import { Checkbox, Field, Input, Label } from '@headlessui/react'
|
||||||
|
import { CheckIcon } from '@heroicons/react/16/solid'
|
||||||
|
import { clsx } from 'clsx'
|
||||||
|
import type { Metadata } from 'next'
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: 'Login',
|
||||||
|
description: 'Sign in to your account to continue.',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Login() {
|
||||||
|
return (
|
||||||
|
<main className="overflow-hidden bg-gray-50">
|
||||||
|
<GradientBackground />
|
||||||
|
<div className="isolate flex min-h-dvh items-center justify-center p-6 lg:p-8">
|
||||||
|
<div className="w-full max-w-md rounded-xl bg-white shadow-md ring-1 ring-black/5">
|
||||||
|
<form action="#" method="POST" className="p-7 sm:p-11">
|
||||||
|
<div className="flex items-start">
|
||||||
|
<Link href="/" title="Home">
|
||||||
|
<Mark className="h-9 fill-black" />
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
<h1 className="mt-8 text-base/6 font-medium">Welcome back!</h1>
|
||||||
|
<p className="mt-1 text-sm/5 text-gray-600">
|
||||||
|
Sign in to your account to continue.
|
||||||
|
</p>
|
||||||
|
<Field className="mt-8 space-y-3">
|
||||||
|
<Label className="text-sm/5 font-medium">Email</Label>
|
||||||
|
<Input
|
||||||
|
required
|
||||||
|
autoFocus
|
||||||
|
type="email"
|
||||||
|
name="email"
|
||||||
|
className={clsx(
|
||||||
|
'block w-full rounded-lg border border-transparent shadow-sm ring-1 ring-black/10',
|
||||||
|
'px-[calc(--spacing(2)-1px)] py-[calc(--spacing(1.5)-1px)] text-base/6 sm:text-sm/6',
|
||||||
|
'data-focus:outline-2 data-focus:-outline-offset-1 data-focus:outline-black',
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Field>
|
||||||
|
<Field className="mt-8 space-y-3">
|
||||||
|
<Label className="text-sm/5 font-medium">Password</Label>
|
||||||
|
<Input
|
||||||
|
required
|
||||||
|
type="password"
|
||||||
|
name="password"
|
||||||
|
className={clsx(
|
||||||
|
'block w-full rounded-lg border border-transparent shadow-sm ring-1 ring-black/10',
|
||||||
|
'px-[calc(--spacing(2)-1px)] py-[calc(--spacing(1.5)-1px)] text-base/6 sm:text-sm/6',
|
||||||
|
'data-focus:outline-2 data-focus:-outline-offset-1 data-focus:outline-black',
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Field>
|
||||||
|
<div className="mt-8 flex items-center justify-between text-sm/5">
|
||||||
|
<Field className="flex items-center gap-3">
|
||||||
|
<Checkbox
|
||||||
|
name="remember-me"
|
||||||
|
className={clsx(
|
||||||
|
'group block size-4 rounded-sm border border-transparent shadow-sm ring-1 ring-black/10',
|
||||||
|
'data-checked:bg-black data-checked:ring-black',
|
||||||
|
'data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-black',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<CheckIcon className="fill-white opacity-0 group-data-checked:opacity-100" />
|
||||||
|
</Checkbox>
|
||||||
|
<Label>Remember me</Label>
|
||||||
|
</Field>
|
||||||
|
<Link href="#" className="font-medium hover:text-gray-600">
|
||||||
|
Forgot password?
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
<div className="mt-8">
|
||||||
|
<Button type="submit" className="w-full">
|
||||||
|
Sign in
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div className="m-1.5 rounded-lg bg-gray-50 py-4 text-center text-sm/5 ring-1 ring-black/5">
|
||||||
|
Not a member?{' '}
|
||||||
|
<Link href="#" className="font-medium hover:text-gray-600">
|
||||||
|
Create an account
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
)
|
||||||
|
}
|
211
src/app/page.tsx
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
import { BentoCard } from '@/components/bento-card'
|
||||||
|
import { Button } from '@/components/button'
|
||||||
|
import { Container } from '@/components/container'
|
||||||
|
import { Footer } from '@/components/footer'
|
||||||
|
import { Gradient } from '@/components/gradient'
|
||||||
|
import { Keyboard } from '@/components/keyboard'
|
||||||
|
import { Link } from '@/components/link'
|
||||||
|
import { LinkedAvatars } from '@/components/linked-avatars'
|
||||||
|
import { LogoCloud } from '@/components/logo-cloud'
|
||||||
|
import { LogoCluster } from '@/components/logo-cluster'
|
||||||
|
import { LogoTimeline } from '@/components/logo-timeline'
|
||||||
|
import { Map } from '@/components/map'
|
||||||
|
import { Navbar } from '@/components/navbar'
|
||||||
|
import { Screenshot } from '@/components/screenshot'
|
||||||
|
import { Testimonials } from '@/components/testimonials'
|
||||||
|
import { Heading, Subheading } from '@/components/text'
|
||||||
|
import { ChevronRightIcon } from '@heroicons/react/16/solid'
|
||||||
|
import type { Metadata } from 'next'
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
description:
|
||||||
|
'Radiant helps you sell more by revealing sensitive information about your customers.',
|
||||||
|
}
|
||||||
|
|
||||||
|
function Hero() {
|
||||||
|
return (
|
||||||
|
<div className="relative">
|
||||||
|
<Gradient className="absolute inset-2 bottom-0 rounded-4xl ring-1 ring-black/5 ring-inset" />
|
||||||
|
<Container className="relative">
|
||||||
|
<Navbar
|
||||||
|
banner={
|
||||||
|
<Link
|
||||||
|
href="/blog/radiant-raises-100m-series-a-from-tailwind-ventures"
|
||||||
|
className="flex items-center gap-1 rounded-full bg-fuchsia-950/35 px-3 py-0.5 text-sm/6 font-medium text-white data-hover:bg-fuchsia-950/30"
|
||||||
|
>
|
||||||
|
Radiant raises $100M Series A from Tailwind Ventures
|
||||||
|
<ChevronRightIcon className="size-4" />
|
||||||
|
</Link>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<div className="pt-16 pb-24 sm:pt-24 sm:pb-32 md:pt-32 md:pb-48">
|
||||||
|
<h1 className="font-display text-6xl/[0.9] font-medium tracking-tight text-balance text-gray-950 sm:text-8xl/[0.8] md:text-9xl/[0.8]">
|
||||||
|
Close every deal.
|
||||||
|
</h1>
|
||||||
|
<p className="mt-8 max-w-lg text-xl/7 font-medium text-gray-950/75 sm:text-2xl/8">
|
||||||
|
Radiant helps you sell more by revealing sensitive information about
|
||||||
|
your customers.
|
||||||
|
</p>
|
||||||
|
<div className="mt-12 flex flex-col gap-x-6 gap-y-4 sm:flex-row">
|
||||||
|
<Button href="#">Get started</Button>
|
||||||
|
<Button variant="secondary" href="/pricing">
|
||||||
|
See pricing
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function FeatureSection() {
|
||||||
|
return (
|
||||||
|
<div className="overflow-hidden">
|
||||||
|
<Container className="pb-24">
|
||||||
|
<Heading as="h2" className="max-w-3xl">
|
||||||
|
A snapshot of your entire sales pipeline.
|
||||||
|
</Heading>
|
||||||
|
<Screenshot
|
||||||
|
width={1216}
|
||||||
|
height={768}
|
||||||
|
src="/screenshots/app.png"
|
||||||
|
className="mt-16 h-144 sm:h-auto sm:w-304"
|
||||||
|
/>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function BentoSection() {
|
||||||
|
return (
|
||||||
|
<Container>
|
||||||
|
<Subheading>Sales</Subheading>
|
||||||
|
<Heading as="h3" className="mt-2 max-w-3xl">
|
||||||
|
Know more about your customers than they do.
|
||||||
|
</Heading>
|
||||||
|
|
||||||
|
<div className="mt-10 grid grid-cols-1 gap-4 sm:mt-16 lg:grid-cols-6 lg:grid-rows-2">
|
||||||
|
<BentoCard
|
||||||
|
eyebrow="Insight"
|
||||||
|
title="Get perfect clarity"
|
||||||
|
description="Radiant uses social engineering to build a detailed financial picture of your leads. Know their budget, compensation package, social security number, and more."
|
||||||
|
graphic={
|
||||||
|
<div className="h-80 bg-[url(/screenshots/profile.png)] bg-size-[1000px_560px] bg-position-[left_-109px_top_-112px] bg-no-repeat" />
|
||||||
|
}
|
||||||
|
fade={['bottom']}
|
||||||
|
className="max-lg:rounded-t-4xl lg:col-span-3 lg:rounded-tl-4xl"
|
||||||
|
/>
|
||||||
|
<BentoCard
|
||||||
|
eyebrow="Analysis"
|
||||||
|
title="Undercut your competitors"
|
||||||
|
description="With our advanced data mining, you’ll know which companies your leads are talking to and exactly how much they’re being charged."
|
||||||
|
graphic={
|
||||||
|
<div className="absolute inset-0 bg-[url(/screenshots/competitors.png)] bg-size-[1100px_650px] bg-position-[left_-38px_top_-73px] bg-no-repeat" />
|
||||||
|
}
|
||||||
|
fade={['bottom']}
|
||||||
|
className="lg:col-span-3 lg:rounded-tr-4xl"
|
||||||
|
/>
|
||||||
|
<BentoCard
|
||||||
|
eyebrow="Speed"
|
||||||
|
title="Built for power users"
|
||||||
|
description="It’s never been faster to cold email your entire contact list using our streamlined keyboard shortcuts."
|
||||||
|
graphic={
|
||||||
|
<div className="flex size-full pt-10 pl-10">
|
||||||
|
<Keyboard highlighted={['LeftCommand', 'LeftShift', 'D']} />
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
className="lg:col-span-2 lg:rounded-bl-4xl"
|
||||||
|
/>
|
||||||
|
<BentoCard
|
||||||
|
eyebrow="Source"
|
||||||
|
title="Get the furthest reach"
|
||||||
|
description="Bypass those inconvenient privacy laws to source leads from the most unexpected places."
|
||||||
|
graphic={<LogoCluster />}
|
||||||
|
className="lg:col-span-2"
|
||||||
|
/>
|
||||||
|
<BentoCard
|
||||||
|
eyebrow="Limitless"
|
||||||
|
title="Sell globally"
|
||||||
|
description="Radiant helps you sell in locations currently under international embargo."
|
||||||
|
graphic={<Map />}
|
||||||
|
className="max-lg:rounded-b-4xl lg:col-span-2 lg:rounded-br-4xl"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function DarkBentoSection() {
|
||||||
|
return (
|
||||||
|
<div className="mx-2 mt-2 rounded-4xl bg-gray-900 py-32">
|
||||||
|
<Container>
|
||||||
|
<Subheading dark>Outreach</Subheading>
|
||||||
|
<Heading as="h3" dark className="mt-2 max-w-3xl">
|
||||||
|
Customer outreach has never been easier.
|
||||||
|
</Heading>
|
||||||
|
|
||||||
|
<div className="mt-10 grid grid-cols-1 gap-4 sm:mt-16 lg:grid-cols-6 lg:grid-rows-2">
|
||||||
|
<BentoCard
|
||||||
|
dark
|
||||||
|
eyebrow="Networking"
|
||||||
|
title="Sell at the speed of light"
|
||||||
|
description="Our RadiantAI chat assistants analyze the sentiment of your conversations in real time, ensuring you're always one step ahead."
|
||||||
|
graphic={
|
||||||
|
<div className="h-80 bg-[url(/screenshots/networking.png)] bg-size-[851px_344px] bg-no-repeat" />
|
||||||
|
}
|
||||||
|
fade={['top']}
|
||||||
|
className="max-lg:rounded-t-4xl lg:col-span-4 lg:rounded-tl-4xl"
|
||||||
|
/>
|
||||||
|
<BentoCard
|
||||||
|
dark
|
||||||
|
eyebrow="Integrations"
|
||||||
|
title="Meet leads where they are"
|
||||||
|
description="With thousands of integrations, no one will be able to escape your cold outreach."
|
||||||
|
graphic={<LogoTimeline />}
|
||||||
|
// `overflow-visible!` is needed to work around a Chrome bug that disables the mask on the graphic.
|
||||||
|
className="z-10 overflow-visible! lg:col-span-2 lg:rounded-tr-4xl"
|
||||||
|
/>
|
||||||
|
<BentoCard
|
||||||
|
dark
|
||||||
|
eyebrow="Meetings"
|
||||||
|
title="Smart call scheduling"
|
||||||
|
description="Automatically insert intro calls into your leads' calendars without their consent."
|
||||||
|
graphic={<LinkedAvatars />}
|
||||||
|
className="lg:col-span-2 lg:rounded-bl-4xl"
|
||||||
|
/>
|
||||||
|
<BentoCard
|
||||||
|
dark
|
||||||
|
eyebrow="Engagement"
|
||||||
|
title="Become a thought leader"
|
||||||
|
description="RadiantAI automatically writes LinkedIn posts that relate current events to B2B sales, helping you build a reputation as a thought leader."
|
||||||
|
graphic={
|
||||||
|
<div className="h-80 bg-[url(/screenshots/engagement.png)] bg-size-[851px_344px] bg-no-repeat" />
|
||||||
|
}
|
||||||
|
fade={['top']}
|
||||||
|
className="max-lg:rounded-b-4xl lg:col-span-4 lg:rounded-br-4xl"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Home() {
|
||||||
|
return (
|
||||||
|
<div className="overflow-hidden">
|
||||||
|
<Hero />
|
||||||
|
<main>
|
||||||
|
<Container className="mt-10">
|
||||||
|
<LogoCloud />
|
||||||
|
</Container>
|
||||||
|
<div className="bg-linear-to-b from-white from-50% to-gray-100 py-32">
|
||||||
|
<FeatureSection />
|
||||||
|
<BentoSection />
|
||||||
|
</div>
|
||||||
|
<DarkBentoSection />
|
||||||
|
</main>
|
||||||
|
<Testimonials />
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
516
src/app/pricing/page.tsx
Normal file
@ -0,0 +1,516 @@
|
|||||||
|
import { Button } from '@/components/button'
|
||||||
|
import { Container } from '@/components/container'
|
||||||
|
import { Footer } from '@/components/footer'
|
||||||
|
import { Gradient, GradientBackground } from '@/components/gradient'
|
||||||
|
import { Link } from '@/components/link'
|
||||||
|
import { LogoCloud } from '@/components/logo-cloud'
|
||||||
|
import { Navbar } from '@/components/navbar'
|
||||||
|
import { Heading, Lead, Subheading } from '@/components/text'
|
||||||
|
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'
|
||||||
|
import {
|
||||||
|
CheckIcon,
|
||||||
|
ChevronUpDownIcon,
|
||||||
|
MinusIcon,
|
||||||
|
} from '@heroicons/react/16/solid'
|
||||||
|
import type { Metadata } from 'next'
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: 'Pricing',
|
||||||
|
description:
|
||||||
|
'Companies all over the world have closed millions of deals with Radiant. Sign up today and start selling smarter.',
|
||||||
|
}
|
||||||
|
|
||||||
|
const tiers = [
|
||||||
|
{
|
||||||
|
name: 'Starter' as const,
|
||||||
|
slug: 'starter',
|
||||||
|
description: 'Everything you need to start selling.',
|
||||||
|
priceMonthly: 99,
|
||||||
|
href: '#',
|
||||||
|
highlights: [
|
||||||
|
{ description: 'Up to 3 team members' },
|
||||||
|
{ description: 'Up to 5 deal progress boards' },
|
||||||
|
{ description: 'Source leads from select platforms' },
|
||||||
|
{ description: 'RadiantAI integrations', disabled: true },
|
||||||
|
{ description: 'Competitor analysis', disabled: true },
|
||||||
|
],
|
||||||
|
features: [
|
||||||
|
{ section: 'Features', name: 'Accounts', value: 3 },
|
||||||
|
{ section: 'Features', name: 'Deal progress boards', value: 5 },
|
||||||
|
{ section: 'Features', name: 'Sourcing platforms', value: 'Select' },
|
||||||
|
{ section: 'Features', name: 'Contacts', value: 100 },
|
||||||
|
{ section: 'Features', name: 'AI assisted outreach', value: false },
|
||||||
|
{ section: 'Analysis', name: 'Competitor analysis', value: false },
|
||||||
|
{ section: 'Analysis', name: 'Dashboard reporting', value: false },
|
||||||
|
{ section: 'Analysis', name: 'Community insights', value: false },
|
||||||
|
{ section: 'Analysis', name: 'Performance analysis', value: false },
|
||||||
|
{ section: 'Support', name: 'Email support', value: true },
|
||||||
|
{ section: 'Support', name: '24 / 7 call center support', value: false },
|
||||||
|
{ section: 'Support', name: 'Dedicated account manager', value: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Growth' as const,
|
||||||
|
slug: 'growth',
|
||||||
|
description: 'All the extras for your growing team.',
|
||||||
|
priceMonthly: 149,
|
||||||
|
href: '#',
|
||||||
|
highlights: [
|
||||||
|
{ description: 'Up to 10 team members' },
|
||||||
|
{ description: 'Unlimited deal progress boards' },
|
||||||
|
{ description: 'Source leads from over 50 verified platforms' },
|
||||||
|
{ description: 'RadiantAI integrations' },
|
||||||
|
{ description: '5 competitor analyses per month' },
|
||||||
|
],
|
||||||
|
features: [
|
||||||
|
{ section: 'Features', name: 'Accounts', value: 10 },
|
||||||
|
{ section: 'Features', name: 'Deal progress boards', value: 'Unlimited' },
|
||||||
|
{ section: 'Features', name: 'Sourcing platforms', value: '100+' },
|
||||||
|
{ section: 'Features', name: 'Contacts', value: 1000 },
|
||||||
|
{ section: 'Features', name: 'AI assisted outreach', value: true },
|
||||||
|
{ section: 'Analysis', name: 'Competitor analysis', value: '5 / month' },
|
||||||
|
{ section: 'Analysis', name: 'Dashboard reporting', value: true },
|
||||||
|
{ section: 'Analysis', name: 'Community insights', value: true },
|
||||||
|
{ section: 'Analysis', name: 'Performance analysis', value: true },
|
||||||
|
{ section: 'Support', name: 'Email support', value: true },
|
||||||
|
{ section: 'Support', name: '24 / 7 call center support', value: true },
|
||||||
|
{ section: 'Support', name: 'Dedicated account manager', value: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Enterprise' as const,
|
||||||
|
slug: 'enterprise',
|
||||||
|
description: 'Added flexibility to close deals at scale.',
|
||||||
|
priceMonthly: 299,
|
||||||
|
href: '#',
|
||||||
|
highlights: [
|
||||||
|
{ description: 'Unlimited active team members' },
|
||||||
|
{ description: 'Unlimited deal progress boards' },
|
||||||
|
{ description: 'Source leads from over 100 verified platforms' },
|
||||||
|
{ description: 'RadiantAI integrations' },
|
||||||
|
{ description: 'Unlimited competitor analyses' },
|
||||||
|
],
|
||||||
|
features: [
|
||||||
|
{ section: 'Features', name: 'Accounts', value: 'Unlimited' },
|
||||||
|
{ section: 'Features', name: 'Deal progress boards', value: 'Unlimited' },
|
||||||
|
{ section: 'Features', name: 'Sourcing platforms', value: '100+' },
|
||||||
|
{ section: 'Features', name: 'Contacts', value: 'Unlimited' },
|
||||||
|
{ section: 'Features', name: 'AI assisted outreach', value: true },
|
||||||
|
{ section: 'Analysis', name: 'Competitor analysis', value: 'Unlimited' },
|
||||||
|
{ section: 'Analysis', name: 'Dashboard reporting', value: true },
|
||||||
|
{ section: 'Analysis', name: 'Community insights', value: true },
|
||||||
|
{ section: 'Analysis', name: 'Performance analysis', value: true },
|
||||||
|
{ section: 'Support', name: 'Email support', value: true },
|
||||||
|
{ section: 'Support', name: '24 / 7 call center support', value: true },
|
||||||
|
{ section: 'Support', name: 'Dedicated account manager', value: true },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
function Header() {
|
||||||
|
return (
|
||||||
|
<Container className="mt-16">
|
||||||
|
<Heading as="h1">Pricing that grows with your team size.</Heading>
|
||||||
|
<Lead className="mt-6 max-w-3xl">
|
||||||
|
Companies all over the world have closed millions of deals with Radiant.
|
||||||
|
Sign up today and start selling smarter.
|
||||||
|
</Lead>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function PricingCards() {
|
||||||
|
return (
|
||||||
|
<div className="relative py-24">
|
||||||
|
<Gradient className="absolute inset-x-2 top-48 bottom-0 rounded-4xl ring-1 ring-black/5 ring-inset" />
|
||||||
|
<Container className="relative">
|
||||||
|
<div className="grid grid-cols-1 gap-8 lg:grid-cols-3">
|
||||||
|
{tiers.map((tier, tierIndex) => (
|
||||||
|
<PricingCard key={tierIndex} tier={tier} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<LogoCloud className="mt-24" />
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function PricingCard({ tier }: { tier: (typeof tiers)[number] }) {
|
||||||
|
return (
|
||||||
|
<div className="-m-2 grid grid-cols-1 rounded-4xl shadow-[inset_0_0_2px_1px_#ffffff4d] ring-1 ring-black/5 max-lg:mx-auto max-lg:w-full max-lg:max-w-md">
|
||||||
|
<div className="grid grid-cols-1 rounded-4xl p-2 shadow-md shadow-black/5">
|
||||||
|
<div className="rounded-3xl bg-white p-10 pb-9 shadow-2xl ring-1 ring-black/5">
|
||||||
|
<Subheading>{tier.name}</Subheading>
|
||||||
|
<p className="mt-2 text-sm/6 text-gray-950/75">{tier.description}</p>
|
||||||
|
<div className="mt-8 flex items-center gap-4">
|
||||||
|
<div className="text-5xl font-medium text-gray-950">
|
||||||
|
${tier.priceMonthly}
|
||||||
|
</div>
|
||||||
|
<div className="text-sm/5 text-gray-950/75">
|
||||||
|
<p>USD</p>
|
||||||
|
<p>per month</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="mt-8">
|
||||||
|
<Button href={tier.href}>Start a free trial</Button>
|
||||||
|
</div>
|
||||||
|
<div className="mt-8">
|
||||||
|
<h3 className="text-sm/6 font-medium text-gray-950">
|
||||||
|
Start selling with:
|
||||||
|
</h3>
|
||||||
|
<ul className="mt-3 space-y-3">
|
||||||
|
{tier.highlights.map((props, featureIndex) => (
|
||||||
|
<FeatureItem key={featureIndex} {...props} />
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function PricingTable({
|
||||||
|
selectedTier,
|
||||||
|
}: {
|
||||||
|
selectedTier: (typeof tiers)[number]
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<Container className="py-24">
|
||||||
|
<table className="w-full text-left">
|
||||||
|
<caption className="sr-only">Pricing plan comparison</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col className="w-3/5 sm:w-2/5" />
|
||||||
|
<col
|
||||||
|
data-selected={selectedTier === tiers[0] ? true : undefined}
|
||||||
|
className="w-2/5 data-selected:table-column max-sm:hidden sm:w-1/5"
|
||||||
|
/>
|
||||||
|
<col
|
||||||
|
data-selected={selectedTier === tiers[1] ? true : undefined}
|
||||||
|
className="w-2/5 data-selected:table-column max-sm:hidden sm:w-1/5"
|
||||||
|
/>
|
||||||
|
<col
|
||||||
|
data-selected={selectedTier === tiers[2] ? true : undefined}
|
||||||
|
className="w-2/5 data-selected:table-column max-sm:hidden sm:w-1/5"
|
||||||
|
/>
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr className="max-sm:hidden">
|
||||||
|
<td className="p-0" />
|
||||||
|
{tiers.map((tier) => (
|
||||||
|
<th
|
||||||
|
key={tier.slug}
|
||||||
|
scope="col"
|
||||||
|
data-selected={selectedTier === tier ? true : undefined}
|
||||||
|
className="p-0 data-selected:table-cell max-sm:hidden"
|
||||||
|
>
|
||||||
|
<Subheading as="div">{tier.name}</Subheading>
|
||||||
|
</th>
|
||||||
|
))}
|
||||||
|
</tr>
|
||||||
|
<tr className="sm:hidden">
|
||||||
|
<td className="p-0">
|
||||||
|
<div className="relative inline-block">
|
||||||
|
<Menu>
|
||||||
|
<MenuButton className="flex items-center justify-between gap-2 font-medium">
|
||||||
|
{selectedTier.name}
|
||||||
|
<ChevronUpDownIcon className="size-4 fill-gray-900" />
|
||||||
|
</MenuButton>
|
||||||
|
<MenuItems
|
||||||
|
anchor="bottom start"
|
||||||
|
className="min-w-(--button-width) rounded-lg bg-white p-1 shadow-lg ring-1 ring-gray-200 [--anchor-gap:6px] [--anchor-offset:-4px] [--anchor-padding:10px]"
|
||||||
|
>
|
||||||
|
{tiers.map((tier) => (
|
||||||
|
<MenuItem key={tier.slug}>
|
||||||
|
<Link
|
||||||
|
scroll={false}
|
||||||
|
href={`/pricing?tier=${tier.slug}`}
|
||||||
|
data-selected={
|
||||||
|
tier === selectedTier ? true : undefined
|
||||||
|
}
|
||||||
|
className="group flex items-center gap-2 rounded-md px-2 py-1 data-focus:bg-gray-200"
|
||||||
|
>
|
||||||
|
{tier.name}
|
||||||
|
<CheckIcon className="hidden size-4 group-data-selected:block" />
|
||||||
|
</Link>
|
||||||
|
</MenuItem>
|
||||||
|
))}
|
||||||
|
</MenuItems>
|
||||||
|
</Menu>
|
||||||
|
<div className="pointer-events-none absolute inset-y-0 right-0 flex items-center">
|
||||||
|
<ChevronUpDownIcon className="size-4 fill-gray-900" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td colSpan={3} className="p-0 text-right">
|
||||||
|
<Button variant="outline" href={selectedTier.href}>
|
||||||
|
Get started
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr className="max-sm:hidden">
|
||||||
|
<th className="p-0" scope="row">
|
||||||
|
<span className="sr-only">Get started</span>
|
||||||
|
</th>
|
||||||
|
{tiers.map((tier) => (
|
||||||
|
<td
|
||||||
|
key={tier.slug}
|
||||||
|
data-selected={selectedTier === tier ? true : undefined}
|
||||||
|
className="px-0 pt-4 pb-0 data-selected:table-cell max-sm:hidden"
|
||||||
|
>
|
||||||
|
<Button variant="outline" href={tier.href}>
|
||||||
|
Get started
|
||||||
|
</Button>
|
||||||
|
</td>
|
||||||
|
))}
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{[...new Set(tiers[0].features.map(({ section }) => section))].map(
|
||||||
|
(section) => (
|
||||||
|
<tbody key={section} className="group">
|
||||||
|
<tr>
|
||||||
|
<th
|
||||||
|
scope="colgroup"
|
||||||
|
colSpan={4}
|
||||||
|
className="px-0 pt-10 pb-0 group-first-of-type:pt-5"
|
||||||
|
>
|
||||||
|
<div className="-mx-4 rounded-lg bg-gray-50 px-4 py-3 text-sm/6 font-semibold">
|
||||||
|
{section}
|
||||||
|
</div>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
{tiers[0].features
|
||||||
|
.filter((feature) => feature.section === section)
|
||||||
|
.map(({ name }) => (
|
||||||
|
<tr
|
||||||
|
key={name}
|
||||||
|
className="border-b border-gray-100 last:border-none"
|
||||||
|
>
|
||||||
|
<th
|
||||||
|
scope="row"
|
||||||
|
className="px-0 py-4 text-sm/6 font-normal text-gray-600"
|
||||||
|
>
|
||||||
|
{name}
|
||||||
|
</th>
|
||||||
|
{tiers.map((tier) => {
|
||||||
|
let value = tier.features.find(
|
||||||
|
(feature) =>
|
||||||
|
feature.section === section && feature.name === name,
|
||||||
|
)?.value
|
||||||
|
|
||||||
|
return (
|
||||||
|
<td
|
||||||
|
key={tier.slug}
|
||||||
|
data-selected={
|
||||||
|
selectedTier === tier ? true : undefined
|
||||||
|
}
|
||||||
|
className="p-4 data-selected:table-cell max-sm:hidden"
|
||||||
|
>
|
||||||
|
{value === true ? (
|
||||||
|
<>
|
||||||
|
<CheckIcon className="size-4 fill-green-600" />
|
||||||
|
<span className="sr-only">
|
||||||
|
Included in {tier.name}
|
||||||
|
</span>
|
||||||
|
</>
|
||||||
|
) : value === false || value === undefined ? (
|
||||||
|
<>
|
||||||
|
<MinusIcon className="size-4 fill-gray-400" />
|
||||||
|
<span className="sr-only">
|
||||||
|
Not included in {tier.name}
|
||||||
|
</span>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<div className="text-sm/6">{value}</div>
|
||||||
|
)}
|
||||||
|
</td>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
</table>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function FeatureItem({
|
||||||
|
description,
|
||||||
|
disabled = false,
|
||||||
|
}: {
|
||||||
|
description: string
|
||||||
|
disabled?: boolean
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<li
|
||||||
|
data-disabled={disabled ? true : undefined}
|
||||||
|
className="flex items-start gap-4 text-sm/6 text-gray-950/75 data-disabled:text-gray-950/25"
|
||||||
|
>
|
||||||
|
<span className="inline-flex h-6 items-center">
|
||||||
|
<PlusIcon className="size-3.75 shrink-0 fill-gray-950/25" />
|
||||||
|
</span>
|
||||||
|
{disabled && <span className="sr-only">Not included:</span>}
|
||||||
|
{description}
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function PlusIcon(props: React.ComponentPropsWithoutRef<'svg'>) {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 15 15" aria-hidden="true" {...props}>
|
||||||
|
<path clipRule="evenodd" d="M8 0H7v7H0v1h7v7h1V8h7V7H8V0z" />
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Testimonial() {
|
||||||
|
return (
|
||||||
|
<div className="mx-2 my-24 rounded-4xl bg-gray-900 bg-[url(/dot-texture.svg)] pt-72 pb-24 lg:pt-36">
|
||||||
|
<Container>
|
||||||
|
<div className="grid grid-cols-1 lg:grid-cols-[384px_1fr_1fr]">
|
||||||
|
<div className="-mt-96 lg:-mt-52">
|
||||||
|
<div className="-m-2 rounded-4xl bg-white/15 shadow-[inset_0_0_2px_1px_#ffffff4d] ring-1 ring-black/5 max-lg:mx-auto max-lg:max-w-xs">
|
||||||
|
<div className="rounded-4xl p-2 shadow-md shadow-black/5">
|
||||||
|
<div className="overflow-hidden rounded-3xl shadow-2xl outline outline-1 -outline-offset-1 outline-black/10">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/testimonials/tina-yards.jpg"
|
||||||
|
className="aspect-3/4 w-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex max-lg:mt-16 lg:col-span-2 lg:px-16">
|
||||||
|
<figure className="mx-auto flex max-w-xl flex-col gap-16 max-lg:text-center">
|
||||||
|
<blockquote>
|
||||||
|
<p className="relative text-3xl tracking-tight text-white before:absolute before:-translate-x-full before:content-['“'] after:absolute after:content-['”'] lg:text-4xl">
|
||||||
|
Thanks to Radiant, we're finding new leads that we never
|
||||||
|
would have found with legal methods.
|
||||||
|
</p>
|
||||||
|
</blockquote>
|
||||||
|
<figcaption className="mt-auto">
|
||||||
|
<p className="text-sm/6 font-medium text-white">Tina Yards</p>
|
||||||
|
<p className="text-sm/6 font-medium">
|
||||||
|
<span className="bg-linear-to-r from-[#fff1be] from-28% via-[#ee87cb] via-70% to-[#b060ff] bg-clip-text text-transparent">
|
||||||
|
VP of Sales, Protocol
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Container>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function FrequentlyAskedQuestions() {
|
||||||
|
return (
|
||||||
|
<Container>
|
||||||
|
<section id="faqs" className="scroll-mt-8">
|
||||||
|
<Subheading className="text-center">
|
||||||
|
Frequently asked questions
|
||||||
|
</Subheading>
|
||||||
|
<Heading as="div" className="mt-2 text-center">
|
||||||
|
Your questions answered.
|
||||||
|
</Heading>
|
||||||
|
<div className="mx-auto mt-16 mb-32 max-w-xl space-y-12">
|
||||||
|
<dl>
|
||||||
|
<dt className="text-sm font-semibold">
|
||||||
|
What measures are in place to ensure the security of our data?
|
||||||
|
</dt>
|
||||||
|
<dd className="mt-4 text-sm/6 text-gray-600">
|
||||||
|
Data security is a top priority for us, which is ironic given that
|
||||||
|
our business depends on others not taking it very seriously. We
|
||||||
|
understand that any breach could put both us and most of our
|
||||||
|
customers out of business—and behind bars. We employ robust
|
||||||
|
security measures, including data encryption, secure data centers,
|
||||||
|
and regular security audits to ensure this never happens.
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt className="text-sm font-semibold">
|
||||||
|
Is there a mobile app available for your platform?
|
||||||
|
</dt>
|
||||||
|
<dd className="mt-4 text-sm/6 text-gray-600">
|
||||||
|
Yes, we offer a mobile app that provides all the key
|
||||||
|
functionalities of our desktop platform, allowing sales reps to
|
||||||
|
manage deals on the go. Additionally, we have another app
|
||||||
|
pre-installed on most modern smartphones that allows us to track
|
||||||
|
your location, listen to your conversations, and access your
|
||||||
|
camera and microphone at any time. This app is not available for
|
||||||
|
download.
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt className="text-sm font-semibold">
|
||||||
|
Can I customize the workflow to match our company’s deal process?
|
||||||
|
</dt>
|
||||||
|
<dd className="mt-4 text-sm/6 text-gray-600">
|
||||||
|
Yes, our platform is highly customizable, although there should be
|
||||||
|
no need. Before you sign up, we discreetly gather information
|
||||||
|
about your company and its processes from a variety of sources. We
|
||||||
|
then use this information to pre-configure the platform to match
|
||||||
|
your existing workflows. This is why we ask for your social
|
||||||
|
security number and access to your email account during the
|
||||||
|
sign-up process.
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt className="text-sm font-semibold">
|
||||||
|
What kind of support do you offer?
|
||||||
|
</dt>
|
||||||
|
<dd className="mt-4 text-sm/6 text-gray-600">
|
||||||
|
We offer comprehensive support through multiple channels,
|
||||||
|
including 24/7 live chat, email, and phone support. However, since
|
||||||
|
we have full access to your internal network, we will know if
|
||||||
|
you’re having issues before you do.
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt className="text-sm font-semibold">
|
||||||
|
Can I integrate the CRM with other sales intelligence tools?
|
||||||
|
</dt>
|
||||||
|
<dd className="mt-4 text-sm/6 text-gray-600">
|
||||||
|
Yes, our solution integrates seamlessly with a variety of other
|
||||||
|
systems. However, be warned that most of these integrations are
|
||||||
|
short-lived. We have a dedicated team of engineers who
|
||||||
|
reverse-engineer the APIs of other tools, enabling us to build
|
||||||
|
their functionality into our product and eventually put them out
|
||||||
|
of business.
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Pricing({
|
||||||
|
searchParams,
|
||||||
|
}: {
|
||||||
|
searchParams: { [key: string]: string | string[] | undefined }
|
||||||
|
}) {
|
||||||
|
let tier =
|
||||||
|
typeof searchParams.tier === 'string'
|
||||||
|
? tiers.find(({ slug }) => slug === searchParams.tier)!
|
||||||
|
: tiers[0]
|
||||||
|
|
||||||
|
return (
|
||||||
|
<main className="overflow-hidden">
|
||||||
|
<GradientBackground />
|
||||||
|
<Container>
|
||||||
|
<Navbar />
|
||||||
|
</Container>
|
||||||
|
<Header />
|
||||||
|
<PricingCards />
|
||||||
|
<PricingTable selectedTier={tier} />
|
||||||
|
<Testimonial />
|
||||||
|
<FrequentlyAskedQuestions />
|
||||||
|
<Footer />
|
||||||
|
</main>
|
||||||
|
)
|
||||||
|
}
|
19
src/app/studio/[[...tool]]/page.tsx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* This route is responsible for the built-in authoring environment using Sanity Studio.
|
||||||
|
* All routes under your studio path is handled by this file using Next.js' catch-all routes:
|
||||||
|
* https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes
|
||||||
|
*
|
||||||
|
* You can learn more about the next-sanity package here:
|
||||||
|
* https://github.com/sanity-io/next-sanity
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { NextStudio } from 'next-sanity/studio'
|
||||||
|
import config from '../../../../sanity.config'
|
||||||
|
|
||||||
|
export const dynamic = 'force-static'
|
||||||
|
|
||||||
|
export { metadata, viewport } from 'next-sanity/studio'
|
||||||
|
|
||||||
|
export default function StudioPage() {
|
||||||
|
return <NextStudio config={config} />
|
||||||
|
}
|
33
src/components/animated-number.tsx
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import {
|
||||||
|
motion,
|
||||||
|
useInView,
|
||||||
|
useMotionValue,
|
||||||
|
useSpring,
|
||||||
|
useTransform,
|
||||||
|
} from 'framer-motion'
|
||||||
|
import { useEffect, useRef } from 'react'
|
||||||
|
|
||||||
|
export function AnimatedNumber({
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
decimals = 0,
|
||||||
|
}: {
|
||||||
|
start: number
|
||||||
|
end: number
|
||||||
|
decimals?: number
|
||||||
|
}) {
|
||||||
|
let ref = useRef(null)
|
||||||
|
let isInView = useInView(ref, { once: true, amount: 0.5 })
|
||||||
|
|
||||||
|
let value = useMotionValue(start)
|
||||||
|
let spring = useSpring(value, { damping: 30, stiffness: 100 })
|
||||||
|
let display = useTransform(spring, (num) => num.toFixed(decimals))
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
value.set(isInView ? end : start)
|
||||||
|
}, [start, end, isInView, value])
|
||||||
|
|
||||||
|
return <motion.span ref={ref}>{display}</motion.span>
|
||||||
|
}
|
59
src/components/bento-card.tsx
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { clsx } from 'clsx'
|
||||||
|
import { motion } from 'framer-motion'
|
||||||
|
import { Subheading } from './text'
|
||||||
|
|
||||||
|
export function BentoCard({
|
||||||
|
dark = false,
|
||||||
|
className = '',
|
||||||
|
eyebrow,
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
graphic,
|
||||||
|
fade = [],
|
||||||
|
}: {
|
||||||
|
dark?: boolean
|
||||||
|
className?: string
|
||||||
|
eyebrow: React.ReactNode
|
||||||
|
title: React.ReactNode
|
||||||
|
description: React.ReactNode
|
||||||
|
graphic: React.ReactNode
|
||||||
|
fade?: ('top' | 'bottom')[]
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<motion.div
|
||||||
|
initial="idle"
|
||||||
|
whileHover="active"
|
||||||
|
variants={{ idle: {}, active: {} }}
|
||||||
|
data-dark={dark ? 'true' : undefined}
|
||||||
|
className={clsx(
|
||||||
|
className,
|
||||||
|
'group relative flex flex-col overflow-hidden rounded-lg',
|
||||||
|
'bg-white shadow-xs ring-1 ring-black/5',
|
||||||
|
'data-dark:bg-gray-800 data-dark:ring-white/15',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<div className="relative h-80 shrink-0">
|
||||||
|
{graphic}
|
||||||
|
{fade.includes('top') && (
|
||||||
|
<div className="absolute inset-0 bg-linear-to-b from-white to-50% group-data-dark:from-gray-800 group-data-dark:from-[-25%]" />
|
||||||
|
)}
|
||||||
|
{fade.includes('bottom') && (
|
||||||
|
<div className="absolute inset-0 bg-linear-to-t from-white to-50% group-data-dark:from-gray-800 group-data-dark:from-[-25%]" />
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="relative p-10">
|
||||||
|
<Subheading as="h3" dark={dark}>
|
||||||
|
{eyebrow}
|
||||||
|
</Subheading>
|
||||||
|
<p className="mt-1 text-2xl/8 font-medium tracking-tight text-gray-950 group-data-dark:text-white">
|
||||||
|
{title}
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 max-w-[600px] text-sm/6 text-gray-600 group-data-dark:text-gray-400">
|
||||||
|
{description}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</motion.div>
|
||||||
|
)
|
||||||
|
}
|
46
src/components/button.tsx
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import * as Headless from '@headlessui/react'
|
||||||
|
import { clsx } from 'clsx'
|
||||||
|
import { Link } from './link'
|
||||||
|
|
||||||
|
const variants = {
|
||||||
|
primary: clsx(
|
||||||
|
'inline-flex items-center justify-center px-4 py-[calc(--spacing(2)-1px)]',
|
||||||
|
'rounded-full border border-transparent bg-gray-950 shadow-md',
|
||||||
|
'text-base font-medium whitespace-nowrap text-white',
|
||||||
|
'data-disabled:bg-gray-950 data-disabled:opacity-40 data-hover:bg-gray-800',
|
||||||
|
),
|
||||||
|
secondary: clsx(
|
||||||
|
'relative inline-flex items-center justify-center px-4 py-[calc(--spacing(2)-1px)]',
|
||||||
|
'rounded-full border border-transparent bg-white/15 shadow-md ring-1 ring-[#D15052]/15',
|
||||||
|
'after:absolute after:inset-0 after:rounded-full after:shadow-[inset_0_0_2px_1px_#ffffff4d]',
|
||||||
|
'text-base font-medium whitespace-nowrap text-gray-950',
|
||||||
|
'data-disabled:bg-white/15 data-disabled:opacity-40 data-hover:bg-white/20',
|
||||||
|
),
|
||||||
|
outline: clsx(
|
||||||
|
'inline-flex items-center justify-center px-2 py-[calc(--spacing(1.5)-1px)]',
|
||||||
|
'rounded-lg border border-transparent shadow-sm ring-1 ring-black/10',
|
||||||
|
'text-sm font-medium whitespace-nowrap text-gray-950',
|
||||||
|
'data-disabled:bg-transparent data-disabled:opacity-40 data-hover:bg-gray-50',
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
type ButtonProps = {
|
||||||
|
variant?: keyof typeof variants
|
||||||
|
} & (
|
||||||
|
| React.ComponentPropsWithoutRef<typeof Link>
|
||||||
|
| (Headless.ButtonProps & { href?: undefined })
|
||||||
|
)
|
||||||
|
|
||||||
|
export function Button({
|
||||||
|
variant = 'primary',
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: ButtonProps) {
|
||||||
|
className = clsx(className, variants[variant])
|
||||||
|
|
||||||
|
if (typeof props.href === 'undefined') {
|
||||||
|
return <Headless.Button {...props} className={className} />
|
||||||
|
}
|
||||||
|
|
||||||
|
return <Link {...props} className={className} />
|
||||||
|
}
|
15
src/components/container.tsx
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { clsx } from 'clsx'
|
||||||
|
|
||||||
|
export function Container({
|
||||||
|
className,
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
className?: string
|
||||||
|
children: React.ReactNode
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<div className={clsx(className, 'px-6 lg:px-8')}>
|
||||||
|
<div className="mx-auto max-w-2xl lg:max-w-7xl">{children}</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
193
src/components/footer.tsx
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
import { PlusGrid, PlusGridItem, PlusGridRow } from '@/components/plus-grid'
|
||||||
|
import { Button } from './button'
|
||||||
|
import { Container } from './container'
|
||||||
|
import { Gradient } from './gradient'
|
||||||
|
import { Link } from './link'
|
||||||
|
import { Logo } from './logo'
|
||||||
|
import { Subheading } from './text'
|
||||||
|
|
||||||
|
function CallToAction() {
|
||||||
|
return (
|
||||||
|
<div className="relative pt-20 pb-16 text-center sm:py-24">
|
||||||
|
<hgroup>
|
||||||
|
<Subheading>Get started</Subheading>
|
||||||
|
<p className="mt-6 text-3xl font-medium tracking-tight text-gray-950 sm:text-5xl">
|
||||||
|
Ready to dive in?
|
||||||
|
<br />
|
||||||
|
Start your free trial today.
|
||||||
|
</p>
|
||||||
|
</hgroup>
|
||||||
|
<p className="mx-auto mt-6 max-w-xs text-sm/6 text-gray-500">
|
||||||
|
Get the cheat codes for selling and unlock your team's revenue
|
||||||
|
potential.
|
||||||
|
</p>
|
||||||
|
<div className="mt-6">
|
||||||
|
<Button className="w-full sm:w-auto" href="#">
|
||||||
|
Get started
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SitemapHeading({ children }: { children: React.ReactNode }) {
|
||||||
|
return <h3 className="text-sm/6 font-medium text-gray-950/50">{children}</h3>
|
||||||
|
}
|
||||||
|
|
||||||
|
function SitemapLinks({ children }: { children: React.ReactNode }) {
|
||||||
|
return <ul className="mt-6 space-y-4 text-sm/6">{children}</ul>
|
||||||
|
}
|
||||||
|
|
||||||
|
function SitemapLink(props: React.ComponentPropsWithoutRef<typeof Link>) {
|
||||||
|
return (
|
||||||
|
<li>
|
||||||
|
<Link
|
||||||
|
{...props}
|
||||||
|
className="font-medium text-gray-950 data-hover:text-gray-950/75"
|
||||||
|
/>
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Sitemap() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div>
|
||||||
|
<SitemapHeading>Product</SitemapHeading>
|
||||||
|
<SitemapLinks>
|
||||||
|
<SitemapLink href="/pricing">Pricing</SitemapLink>
|
||||||
|
<SitemapLink href="#">Analysis</SitemapLink>
|
||||||
|
<SitemapLink href="#">API</SitemapLink>
|
||||||
|
</SitemapLinks>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<SitemapHeading>Company</SitemapHeading>
|
||||||
|
<SitemapLinks>
|
||||||
|
<SitemapLink href="#">Careers</SitemapLink>
|
||||||
|
<SitemapLink href="/blog">Blog</SitemapLink>
|
||||||
|
<SitemapLink href="/company">Company</SitemapLink>
|
||||||
|
</SitemapLinks>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<SitemapHeading>Support</SitemapHeading>
|
||||||
|
<SitemapLinks>
|
||||||
|
<SitemapLink href="#">Help center</SitemapLink>
|
||||||
|
<SitemapLink href="#">Community</SitemapLink>
|
||||||
|
</SitemapLinks>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<SitemapHeading>Company</SitemapHeading>
|
||||||
|
<SitemapLinks>
|
||||||
|
<SitemapLink href="#">Terms of service</SitemapLink>
|
||||||
|
<SitemapLink href="#">Privacy policy</SitemapLink>
|
||||||
|
</SitemapLinks>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SocialIconX(props: React.ComponentPropsWithoutRef<'svg'>) {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 16 16" fill="currentColor" {...props}>
|
||||||
|
<path d="M12.6 0h2.454l-5.36 6.778L16 16h-4.937l-3.867-5.594L2.771 16H.316l5.733-7.25L0 0h5.063l3.495 5.114L12.6 0zm-.86 14.376h1.36L4.323 1.539H2.865l8.875 12.837z" />
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SocialIconFacebook(props: React.ComponentPropsWithoutRef<'svg'>) {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 16 16" fill="currentColor" {...props}>
|
||||||
|
<path
|
||||||
|
fillRule="evenodd"
|
||||||
|
clipRule="evenodd"
|
||||||
|
d="M16 8.05C16 3.603 12.418 0 8 0S0 3.604 0 8.05c0 4.016 2.926 7.346 6.75 7.95v-5.624H4.718V8.05H6.75V6.276c0-2.017 1.194-3.131 3.022-3.131.875 0 1.79.157 1.79.157v1.98h-1.008c-.994 0-1.304.62-1.304 1.257v1.51h2.219l-.355 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.95z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SocialIconLinkedIn(props: React.ComponentPropsWithoutRef<'svg'>) {
|
||||||
|
return (
|
||||||
|
<svg viewBox="0 0 16 16" fill="currentColor" {...props}>
|
||||||
|
<path d="M14.82 0H1.18A1.169 1.169 0 000 1.154v13.694A1.168 1.168 0 001.18 16h13.64A1.17 1.17 0 0016 14.845V1.15A1.171 1.171 0 0014.82 0zM4.744 13.64H2.369V5.996h2.375v7.644zm-1.18-8.684a1.377 1.377 0 11.52-.106 1.377 1.377 0 01-.527.103l.007.003zm10.075 8.683h-2.375V9.921c0-.885-.015-2.025-1.234-2.025-1.218 0-1.425.966-1.425 1.968v3.775H6.233V5.997H8.51v1.05h.032c.317-.601 1.09-1.235 2.246-1.235 2.405-.005 2.851 1.578 2.851 3.63v4.197z" />
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SocialLinks() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Link
|
||||||
|
href="https://facebook.com"
|
||||||
|
target="_blank"
|
||||||
|
aria-label="Visit us on Facebook"
|
||||||
|
className="text-gray-950 data-hover:text-gray-950/75"
|
||||||
|
>
|
||||||
|
<SocialIconFacebook className="size-4" />
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
href="https://x.com"
|
||||||
|
target="_blank"
|
||||||
|
aria-label="Visit us on X"
|
||||||
|
className="text-gray-950 data-hover:text-gray-950/75"
|
||||||
|
>
|
||||||
|
<SocialIconX className="size-4" />
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
href="https://linkedin.com"
|
||||||
|
target="_blank"
|
||||||
|
aria-label="Visit us on LinkedIn"
|
||||||
|
className="text-gray-950 data-hover:text-gray-950/75"
|
||||||
|
>
|
||||||
|
<SocialIconLinkedIn className="size-4" />
|
||||||
|
</Link>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Copyright() {
|
||||||
|
return (
|
||||||
|
<div className="text-sm/6 text-gray-950">
|
||||||
|
© {new Date().getFullYear()} Radiant Inc.
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function Footer() {
|
||||||
|
return (
|
||||||
|
<footer>
|
||||||
|
<Gradient className="relative">
|
||||||
|
<div className="absolute inset-2 rounded-4xl bg-white/80" />
|
||||||
|
<Container>
|
||||||
|
<CallToAction />
|
||||||
|
<PlusGrid className="pb-16">
|
||||||
|
<PlusGridRow>
|
||||||
|
<div className="grid grid-cols-2 gap-y-10 pb-6 lg:grid-cols-6 lg:gap-8">
|
||||||
|
<div className="col-span-2 flex">
|
||||||
|
<PlusGridItem className="pt-6 lg:pb-6">
|
||||||
|
<Logo className="h-9" />
|
||||||
|
</PlusGridItem>
|
||||||
|
</div>
|
||||||
|
<div className="col-span-2 grid grid-cols-2 gap-x-8 gap-y-12 lg:col-span-4 lg:grid-cols-subgrid lg:pt-6">
|
||||||
|
<Sitemap />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</PlusGridRow>
|
||||||
|
<PlusGridRow className="flex justify-between">
|
||||||
|
<div>
|
||||||
|
<PlusGridItem className="py-3">
|
||||||
|
<Copyright />
|
||||||
|
</PlusGridItem>
|
||||||
|
</div>
|
||||||
|
<div className="flex">
|
||||||
|
<PlusGridItem className="flex items-center gap-8 py-3">
|
||||||
|
<SocialLinks />
|
||||||
|
</PlusGridItem>
|
||||||
|
</div>
|
||||||
|
</PlusGridRow>
|
||||||
|
</PlusGrid>
|
||||||
|
</Container>
|
||||||
|
</Gradient>
|
||||||
|
</footer>
|
||||||
|
)
|
||||||
|
}
|
30
src/components/gradient.tsx
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import { clsx } from 'clsx'
|
||||||
|
|
||||||
|
export function Gradient({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentPropsWithoutRef<'div'>) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
{...props}
|
||||||
|
className={clsx(
|
||||||
|
className,
|
||||||
|
'bg-linear-115 from-[#fff1be] from-28% via-[#ee87cb] via-70% to-[#b060ff] sm:bg-linear-145',
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function GradientBackground() {
|
||||||
|
return (
|
||||||
|
<div className="relative mx-auto max-w-7xl">
|
||||||
|
<div
|
||||||
|
className={clsx(
|
||||||
|
'absolute -top-44 -right-60 h-60 w-xl transform-gpu md:right-0',
|
||||||
|
'bg-linear-115 from-[#fff1be] from-28% via-[#ee87cb] via-70% to-[#b060ff]',
|
||||||
|
'rotate-[-10deg] rounded-full blur-3xl',
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
1050
src/components/keyboard.tsx
Normal file
14
src/components/link.tsx
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import * as Headless from '@headlessui/react'
|
||||||
|
import NextLink, { type LinkProps } from 'next/link'
|
||||||
|
import { forwardRef } from 'react'
|
||||||
|
|
||||||
|
export const Link = forwardRef(function Link(
|
||||||
|
props: LinkProps & React.ComponentPropsWithoutRef<'a'>,
|
||||||
|
ref: React.ForwardedRef<HTMLAnchorElement>,
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
<Headless.DataInteractive>
|
||||||
|
<NextLink ref={ref} {...props} />
|
||||||
|
</Headless.DataInteractive>
|
||||||
|
)
|
||||||
|
})
|
93
src/components/linked-avatars.tsx
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { CheckIcon } from '@heroicons/react/16/solid'
|
||||||
|
import { clsx } from 'clsx'
|
||||||
|
import { motion } from 'framer-motion'
|
||||||
|
|
||||||
|
const transition = {
|
||||||
|
duration: 0.75,
|
||||||
|
repeat: Infinity,
|
||||||
|
repeatDelay: 1.25,
|
||||||
|
}
|
||||||
|
|
||||||
|
function Rings() {
|
||||||
|
return (
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 500 500"
|
||||||
|
fill="none"
|
||||||
|
className={clsx(
|
||||||
|
'col-start-1 row-start-1 size-full',
|
||||||
|
'mask-[linear-gradient(to_bottom,black_90%,transparent),radial-gradient(circle,rgba(0,0,0,1)_0%,rgba(0,0,0,0)_100%)] mask-intersect',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
{Array.from(Array(42).keys()).map((n) => (
|
||||||
|
<motion.circle
|
||||||
|
variants={{
|
||||||
|
idle: {
|
||||||
|
scale: 1,
|
||||||
|
strokeOpacity: 0.15,
|
||||||
|
},
|
||||||
|
active: {
|
||||||
|
scale: [1, 1.08, 1],
|
||||||
|
strokeOpacity: [0.15, 0.3, 0.15],
|
||||||
|
transition: { ...transition, delay: n * 0.05 },
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
key={n}
|
||||||
|
cx="250"
|
||||||
|
cy="250"
|
||||||
|
r={n * 14 + 4}
|
||||||
|
className="stroke-white"
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</svg>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Checkmark() {
|
||||||
|
return (
|
||||||
|
<div className="z-10 col-start-1 row-start-1 flex items-center justify-center">
|
||||||
|
<motion.div
|
||||||
|
variants={{
|
||||||
|
idle: { scale: 1 },
|
||||||
|
active: {
|
||||||
|
scale: [1, 1.15, 1],
|
||||||
|
transition: { ...transition, duration: 0.75 },
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
className="flex size-6 items-center justify-center rounded-full bg-linear-to-t from-green-500 to-green-300 shadow-sm"
|
||||||
|
>
|
||||||
|
<CheckIcon className="size-4 fill-white" />
|
||||||
|
</motion.div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Photos() {
|
||||||
|
return (
|
||||||
|
<div className="z-10 col-start-1 row-start-1">
|
||||||
|
<div className="mx-auto flex size-full max-w-md items-center justify-around">
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/linked-avatars/customer.jpg"
|
||||||
|
className="size-20 rounded-full bg-white/15 ring-4 ring-white/10"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
src="/linked-avatars/manager.jpg"
|
||||||
|
className="size-20 rounded-full bg-white/15 ring-4 ring-white/10"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function LinkedAvatars() {
|
||||||
|
return (
|
||||||
|
<div aria-hidden="true" className="isolate mx-auto grid h-full grid-cols-1">
|
||||||
|
<Rings />
|
||||||
|
<Photos />
|
||||||
|
<Checkmark />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
40
src/components/logo-cloud.tsx
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import { clsx } from 'clsx'
|
||||||
|
|
||||||
|
export function LogoCloud({
|
||||||
|
className,
|
||||||
|
}: React.ComponentPropsWithoutRef<'div'>) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={clsx(
|
||||||
|
className,
|
||||||
|
'flex justify-between max-sm:mx-auto max-sm:max-w-md max-sm:flex-wrap max-sm:justify-evenly max-sm:gap-x-4 max-sm:gap-y-4',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
alt="SavvyCal"
|
||||||
|
src="/logo-cloud/savvycal.svg"
|
||||||
|
className="h-9 max-sm:mx-auto sm:h-8 lg:h-12"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
alt="Laravel"
|
||||||
|
src="/logo-cloud/laravel.svg"
|
||||||
|
className="h-9 max-sm:mx-auto sm:h-8 lg:h-12"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
alt="Tuple"
|
||||||
|
src="/logo-cloud/tuple.svg"
|
||||||
|
className="h-9 max-sm:mx-auto sm:h-8 lg:h-12"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
alt="Transistor"
|
||||||
|
src="/logo-cloud/transistor.svg"
|
||||||
|
className="h-9 max-sm:mx-auto sm:h-8 lg:h-12"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
alt="Statamic"
|
||||||
|
src="/logo-cloud/statamic.svg"
|
||||||
|
className="h-9 max-sm:mx-auto sm:h-8 lg:h-12"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
143
src/components/logo-cluster.tsx
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { clsx } from 'clsx'
|
||||||
|
import { motion } from 'framer-motion'
|
||||||
|
import { Mark } from './logo'
|
||||||
|
|
||||||
|
function Circle({
|
||||||
|
size,
|
||||||
|
delay,
|
||||||
|
opacity,
|
||||||
|
}: {
|
||||||
|
size: number
|
||||||
|
delay: number
|
||||||
|
opacity: string
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<motion.div
|
||||||
|
variants={{
|
||||||
|
idle: { width: `${size}px`, height: `${size}px` },
|
||||||
|
active: {
|
||||||
|
width: [`${size}px`, `${size + 10}px`, `${size}px`],
|
||||||
|
height: [`${size}px`, `${size + 10}px`, `${size}px`],
|
||||||
|
transition: {
|
||||||
|
duration: 0.75,
|
||||||
|
repeat: Infinity,
|
||||||
|
repeatDelay: 1.25,
|
||||||
|
ease: 'easeInOut',
|
||||||
|
delay,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
style={{ '--opacity': opacity } as React.CSSProperties}
|
||||||
|
className={clsx(
|
||||||
|
'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full',
|
||||||
|
'bg-[radial-gradient(circle,transparent_25%,color-mix(in_srgb,var(--color-blue-500)_var(--opacity),transparent)_100%)]',
|
||||||
|
'ring-1 ring-blue-500/8 ring-inset',
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Circles() {
|
||||||
|
return (
|
||||||
|
<div className="absolute inset-0">
|
||||||
|
<Circle size={528} opacity="3%" delay={0.45} />
|
||||||
|
<Circle size={400} opacity="5%" delay={0.3} />
|
||||||
|
<Circle size={272} opacity="5%" delay={0.15} />
|
||||||
|
<Circle size={144} opacity="10%" delay={0} />
|
||||||
|
<div className="absolute inset-0 bg-linear-to-t from-white to-35%" />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function MainLogo() {
|
||||||
|
return (
|
||||||
|
<div className="absolute top-32 left-44 flex size-16 items-center justify-center rounded-full bg-white shadow-sm ring-1 ring-black/5">
|
||||||
|
<Mark className="h-9 fill-black" />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Logo({
|
||||||
|
src,
|
||||||
|
left,
|
||||||
|
top,
|
||||||
|
hover,
|
||||||
|
}: {
|
||||||
|
src: string
|
||||||
|
left: number
|
||||||
|
top: number
|
||||||
|
hover: { x: number; y: number; rotate: number; delay: number }
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<motion.img
|
||||||
|
variants={{
|
||||||
|
idle: { x: 0, y: 0, rotate: 0 },
|
||||||
|
active: {
|
||||||
|
x: [0, hover.x, 0],
|
||||||
|
y: [0, hover.y, 0],
|
||||||
|
rotate: [0, hover.rotate, 0],
|
||||||
|
transition: {
|
||||||
|
duration: 0.75,
|
||||||
|
repeat: Infinity,
|
||||||
|
repeatDelay: 1.25,
|
||||||
|
ease: 'easeInOut',
|
||||||
|
delay: hover.delay,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
alt=""
|
||||||
|
src={src}
|
||||||
|
style={{ left, top } as React.CSSProperties}
|
||||||
|
className="absolute size-16 rounded-full bg-white shadow-sm ring-1 ring-black/5"
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function LogoCluster() {
|
||||||
|
return (
|
||||||
|
<div aria-hidden="true" className="relative h-full overflow-hidden">
|
||||||
|
<Circles />
|
||||||
|
<div className="absolute left-1/2 h-full w-104 -translate-x-1/2">
|
||||||
|
<MainLogo />
|
||||||
|
<Logo
|
||||||
|
src="/logo-cluster/career-builder.svg"
|
||||||
|
left={360}
|
||||||
|
top={144}
|
||||||
|
hover={{ x: 6, y: 1, rotate: 5, delay: 0.38 }}
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
src="/logo-cluster/dribbble.svg"
|
||||||
|
left={285}
|
||||||
|
top={20}
|
||||||
|
hover={{ x: 4, y: -5, rotate: 6, delay: 0.3 }}
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
src="/logo-cluster/glassdoor.svg"
|
||||||
|
left={255}
|
||||||
|
top={210}
|
||||||
|
hover={{ x: 3, y: 5, rotate: 7, delay: 0.2 }}
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
src="/logo-cluster/linkedin.svg"
|
||||||
|
left={144}
|
||||||
|
top={40}
|
||||||
|
hover={{ x: -2, y: -5, rotate: -6, delay: 0.15 }}
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
src="/logo-cluster/upwork.svg"
|
||||||
|
left={36}
|
||||||
|
top={56}
|
||||||
|
hover={{ x: -4, y: -5, rotate: -6, delay: 0.35 }}
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
src="/logo-cluster/we-work-remotely.svg"
|
||||||
|
left={96}
|
||||||
|
top={176}
|
||||||
|
hover={{ x: -3, y: 5, rotate: 3, delay: 0.15 }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
130
src/components/logo-timeline.tsx
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
import { clsx } from 'clsx'
|
||||||
|
import { Mark } from './logo'
|
||||||
|
|
||||||
|
function Row({ children }: { children: React.ReactNode }) {
|
||||||
|
return (
|
||||||
|
<div className="group relative">
|
||||||
|
<div className="absolute inset-x-0 top-1/2 h-0.5 bg-linear-to-r from-white/15 from-[2px] to-[2px] bg-size-[12px_100%]" />
|
||||||
|
<div className="absolute inset-x-0 bottom-0 h-0.5 bg-linear-to-r from-white/5 from-[2px] to-[2px] bg-size-[12px_100%] group-last:hidden" />
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Logo({
|
||||||
|
label,
|
||||||
|
src,
|
||||||
|
className,
|
||||||
|
}: {
|
||||||
|
label: string
|
||||||
|
src: string
|
||||||
|
className: string
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={clsx(
|
||||||
|
className,
|
||||||
|
'absolute top-2 grid grid-cols-[1rem_1fr] items-center gap-2 px-3 py-1 whitespace-nowrap',
|
||||||
|
'rounded-full bg-linear-to-t from-gray-800 from-50% to-gray-700 ring-1 ring-white/10 ring-inset',
|
||||||
|
'[--move-x-from:-100%] [--move-x-to:calc(100%+100cqw)] [animation-iteration-count:infinite] [animation-name:move-x] [animation-play-state:paused] [animation-timing-function:linear] group-hover:[animation-play-state:running]',
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<img alt="" src={src} className="size-4" />
|
||||||
|
<span className="text-sm/6 font-medium text-white">{label}</span>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function LogoTimeline() {
|
||||||
|
return (
|
||||||
|
<div aria-hidden="true" className="relative h-full overflow-hidden">
|
||||||
|
<div className="absolute inset-0 top-8 z-10 flex items-center justify-center">
|
||||||
|
<div
|
||||||
|
className="absolute inset-0 backdrop-blur-md"
|
||||||
|
style={{
|
||||||
|
maskImage: `url('data:image/svg+xml,<svg width="96" height="96" viewBox="0 0 96 96" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="96" height="96" rx="12" fill="black"/></svg>')`,
|
||||||
|
maskPosition: 'center',
|
||||||
|
maskRepeat: 'no-repeat',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<div className="relative flex size-24 items-center justify-center rounded-xl bg-linear-to-t from-white/5 to-white/25 shadow-sm ring-1 ring-white/10 outline outline-offset-[-5px] outline-white/5 ring-inset">
|
||||||
|
<Mark className="h-9 fill-white" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="@container absolute inset-0 grid grid-cols-1 pt-8">
|
||||||
|
<Row>
|
||||||
|
<Logo
|
||||||
|
label="Loom"
|
||||||
|
src="/logo-timeline/loom.svg"
|
||||||
|
className="[animation-delay:-26s] [animation-duration:30s]"
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
label="Gmail"
|
||||||
|
src="/logo-timeline/gmail.svg"
|
||||||
|
className="[animation-delay:-8s] [animation-duration:30s]"
|
||||||
|
/>
|
||||||
|
</Row>
|
||||||
|
<Row>
|
||||||
|
<Logo
|
||||||
|
label="Asana"
|
||||||
|
src="/logo-timeline/asana.svg"
|
||||||
|
className="[animation-delay:-40s] [animation-duration:40s]"
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
label="Microsoft Teams"
|
||||||
|
src="/logo-timeline/microsoft-teams.svg"
|
||||||
|
className="[animation-delay:-20s] [animation-duration:40s]"
|
||||||
|
/>
|
||||||
|
</Row>
|
||||||
|
<Row>
|
||||||
|
<Logo
|
||||||
|
label="Google Calendar"
|
||||||
|
src="/logo-timeline/google-calendar.svg"
|
||||||
|
className="[animation-delay:-10s] [animation-duration:40s]"
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
label="Google Drive"
|
||||||
|
src="/logo-timeline/google-drive.svg"
|
||||||
|
className="[animation-delay:-32s] [animation-duration:40s]"
|
||||||
|
/>
|
||||||
|
</Row>
|
||||||
|
<Row>
|
||||||
|
<Logo
|
||||||
|
label="Basecamp"
|
||||||
|
src="/logo-timeline/basecamp.svg"
|
||||||
|
className="[animation-delay:-45s] [animation-duration:45s]"
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
label="Discord"
|
||||||
|
src="/logo-timeline/discord.svg"
|
||||||
|
className="[animation-delay:-23s] [animation-duration:45s]"
|
||||||
|
/>
|
||||||
|
</Row>
|
||||||
|
<Row>
|
||||||
|
<Logo
|
||||||
|
label="Hubspot"
|
||||||
|
src="/logo-timeline/hubspot.svg"
|
||||||
|
className="[animation-delay:-55s] [animation-duration:60s]"
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
label="Slack"
|
||||||
|
src="/logo-timeline/slack.svg"
|
||||||
|
className="[animation-delay:-20s] [animation-duration:60s]"
|
||||||
|
/>
|
||||||
|
</Row>
|
||||||
|
<Row>
|
||||||
|
<Logo
|
||||||
|
label="Adobe Creative Cloud"
|
||||||
|
src="/logo-timeline/adobe-creative-cloud.svg"
|
||||||
|
className="[animation-delay:-9s] [animation-duration:40s]"
|
||||||
|
/>
|
||||||
|
<Logo
|
||||||
|
label="Zoom"
|
||||||
|
src="/logo-timeline/zoom.svg"
|
||||||
|
className="[animation-delay:-28s] [animation-duration:40s]"
|
||||||
|
/>
|
||||||
|
</Row>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|