Merge pull request #185 from janhq/jan-182
draft: Refactor Docs Site, add Hardware section
@ -1,4 +0,0 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: About Jan
|
||||
---
|
||||
8
docs/docs/about/about.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: About Jan
|
||||
slug: /about
|
||||
---
|
||||
|
||||
## Team
|
||||
|
||||
## History
|
||||
3
docs/docs/about/brand-assets.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Brand Assets
|
||||
---
|
||||
@ -1,5 +0,0 @@
|
||||
---
|
||||
title: Story
|
||||
---
|
||||
|
||||
TODO: a month by month recap
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
title: Team
|
||||
---
|
||||
@ -1,7 +0,0 @@
|
||||
{
|
||||
"label": "Company",
|
||||
"position": 2,
|
||||
"link": {
|
||||
"type": "generated-index"
|
||||
}
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
title: Team Structure
|
||||
---
|
||||
@ -1,7 +0,0 @@
|
||||
{
|
||||
"label": "Handbook",
|
||||
"position": 5,
|
||||
"link": {
|
||||
"type": "generated-index"
|
||||
}
|
||||
}
|
||||
10
docs/docs/about/roadmap.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: Roadmap
|
||||
---
|
||||
|
||||
|
||||
## Problem
|
||||
|
||||
## Ideal Customer Persona
|
||||
|
||||
## Business Model
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
title: Roadmap
|
||||
---
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
title: Mission & Vision
|
||||
---
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
title: Customer Persona
|
||||
---
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
title: Business Model
|
||||
---
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
title: Brand
|
||||
---
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
title: OKRs
|
||||
---
|
||||
@ -1,7 +0,0 @@
|
||||
{
|
||||
"label": "Strategy",
|
||||
"position": 3,
|
||||
"link": {
|
||||
"type": "generated-index"
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: Guides
|
||||
title: Getting Started
|
||||
---
|
||||
|
||||
TODO
|
||||
3
docs/docs/docs/install/linux.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Installing Jan on Linux
|
||||
---
|
||||
3
docs/docs/docs/install/mac.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Installing Jan on Linux
|
||||
---
|
||||
3
docs/docs/docs/install/windows.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Installing Jan on Linux
|
||||
---
|
||||
3
docs/docs/features/acceleration.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Hardware Acceleration
|
||||
---
|
||||
11
docs/docs/features/ai-models.md
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: Powerful AI Models
|
||||
---
|
||||
|
||||
- Run AI on your own hardware
|
||||
- Llama2, StableDiffusion
|
||||
- Rapidly growing ecosystem of open source, locally run AI
|
||||
- Connect to cloud-based AI
|
||||
- ChatGPT
|
||||
- Claude
|
||||
- Bard
|
||||
12
docs/docs/features/control.md
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
title: Privacy and Data Security
|
||||
---
|
||||
|
||||
- Privacy
|
||||
- Data Security
|
||||
- Optional Policy Engine for 3rd-party AIs
|
||||
- Offline-ready
|
||||
- Airgapped locations
|
||||
- Prevent a data leak
|
||||
- Shadow IT
|
||||
- Personal Information being sent to ChatGPT, corporate IP
|
||||
3
docs/docs/features/extensions.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Extensions
|
||||
---
|
||||
3
docs/docs/features/features.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Features
|
||||
---
|
||||
13
docs/docs/features/unlimited.md
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
title: Unlimited Use
|
||||
---
|
||||
|
||||
- Cost doesn't scale with usage
|
||||
- Difficult to estimate cost of a project
|
||||
- ChatGPT costs $2 per GPT-4 call with 32k context (what document would this be equivalent to?)
|
||||
- Reading in documents is expensive
|
||||
- Getting ChatGPT to ingest a codebase
|
||||
- On the other hand
|
||||
- No surprises at the end of the month
|
||||
- Use as much as you want
|
||||
- Predictable costs
|
||||
@ -1,20 +0,0 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: Getting Started
|
||||
slug: /
|
||||
---
|
||||
|
||||
Hi there
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
<Tabs groupId="operating-systems">
|
||||
<TabItem value="win" label="Windows">Use Ctrl + C to copy.</TabItem>
|
||||
<TabItem value="mac" label="macOS">Use Command + C to copy.</TabItem>
|
||||
</Tabs>
|
||||
|
||||
<Tabs groupId="operating-systems">
|
||||
<TabItem value="win" label="Windows">Use Ctrl + V to paste.</TabItem>
|
||||
<TabItem value="mac" label="macOS">Use Command + V to paste.</TabItem>
|
||||
</Tabs>
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: Glossary
|
||||
---
|
||||
4
docs/docs/handbook/handbook.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
title: Company Handbook
|
||||
slug: /handbook
|
||||
---
|
||||
53
docs/docs/hardware/community.md
Normal file
@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Community Examples
|
||||
---
|
||||
|
||||
## Add your own example
|
||||
|
||||
Add your own examples to this page by creating a new file in the `docs/docs/hardware/examples` directory.
|
||||
|
||||
```shell
|
||||
docs
|
||||
└── docs
|
||||
└── hardware
|
||||
└── examples
|
||||
└── 3090x1-%40dan-jan.md
|
||||
└── 3090x1-%40dan-jan.md
|
||||
// highlight-next-line
|
||||
└── <YOUR_BUILD_HERE>.md
|
||||
```
|
||||
### File and Title Convention
|
||||
|
||||
We use a specific naming convention for the file name.
|
||||
|
||||
```shell
|
||||
# Filename
|
||||
<hardware-type><quantity>-<username>.md
|
||||
3090x1-@dan-jan.md # Example
|
||||
|
||||
# Title
|
||||
---
|
||||
title: <@github_username>: <hardware_x_quantity> <form-factor>
|
||||
title: @dan-jan: 3090 Desktop # Example
|
||||
---
|
||||
```
|
||||
|
||||
### Content
|
||||
|
||||
We highly recommend you include:
|
||||
|
||||
- Photos of your build
|
||||
- List of the components (e.g. [PCPartPicker](https://pcpartpicker.com))
|
||||
- Dimensions
|
||||
- Power consumption
|
||||
- Noise level
|
||||
- Any stats on token generation speeds
|
||||
- List of models you have run successfully on the build
|
||||
|
||||
## Affiliate Links
|
||||
|
||||
You are allowed to include affiliate links in your example.
|
||||
|
||||
## Longer-Term
|
||||
|
||||
We will likely build a simple web app to make it easier to add your own examples, sort and retrieve.
|
||||
3
docs/docs/hardware/concepts/chassis.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Chassis
|
||||
---
|
||||
8
docs/docs/hardware/concepts/concepts.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: Anatomy of a Thinking Machine
|
||||
slug: /hardware/concepts
|
||||
---
|
||||
|
||||
- Cover the difference between CPU/RAM and GPU/VRAM
|
||||
- AI can now run on CPU/RAM (llama.cpp)
|
||||
- AI that runs on Apple Silicon
|
||||
7
docs/docs/hardware/concepts/cpu-and-ram.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
title: CPU
|
||||
---
|
||||
|
||||
- CPU's role vs GPU
|
||||
- Cooler + Thermal Paste
|
||||
- RAM
|
||||
8
docs/docs/hardware/concepts/gpu-and-vram.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: GPUs and VRAM
|
||||
---
|
||||
|
||||
- GPUs plugging in to Motherboard via PCIe
|
||||
- Multiple GPUs
|
||||
- NVLink
|
||||
- PCIe (and Motherboard limitations)
|
||||
5
docs/docs/hardware/concepts/motherboard.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
title: Motherboard
|
||||
---
|
||||
|
||||
- PCIe lanes that go to the processor (not Chipset)
|
||||
3
docs/docs/hardware/concepts/network.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Network
|
||||
---
|
||||
3
docs/docs/hardware/concepts/power.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Power Supply
|
||||
---
|
||||
3
docs/docs/hardware/concepts/storage.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Storage
|
||||
---
|
||||
3
docs/docs/hardware/examples/3090x1-@dan-jan.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: "@dan-jan: 3090 Desktop"
|
||||
---
|
||||
3
docs/docs/hardware/examples/4090x2-@dan-jan.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: "@janhq: 2x4090 Workstation"
|
||||
---
|
||||
@ -1,6 +1,5 @@
|
||||
{
|
||||
"label": "Roadmap",
|
||||
"position": 4,
|
||||
"label": "Example Builds",
|
||||
"link": {
|
||||
"type": "generated-index"
|
||||
}
|
||||
3
docs/docs/hardware/overview/cloud-vs-buy.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Cloud vs. Buy
|
||||
---
|
||||
3
docs/docs/hardware/overview/cpu-vs-gpu.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: CPU vs. GPU
|
||||
---
|
||||
13
docs/docs/hardware/recommendations/by-budget.md
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
title: Recommended AI Hardware by Budget
|
||||
---
|
||||
|
||||
## $1,000
|
||||
|
||||
## $2,500
|
||||
|
||||
## $5,000
|
||||
|
||||
## $7,500
|
||||
|
||||
## $10,000
|
||||
7
docs/docs/hardware/recommendations/by-hardware.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
title: Recommended AI Models by Hardware
|
||||
---
|
||||
|
||||
## Macbook 8GB RAM
|
||||
|
||||
## Macbook 16GB RAM
|
||||
8
docs/docs/hardware/recommendations/by-model.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: Recommended AI Hardware by Model
|
||||
---
|
||||
|
||||
## Codellama 34b
|
||||
|
||||
## Falcon 180b
|
||||
|
||||
62
docs/docs/hardware/recommendations/by-usecase.md
Normal file
@ -0,0 +1,62 @@
|
||||
---
|
||||
title: Recommended AI Hardware by Use Case
|
||||
---
|
||||
|
||||
## Personal Use
|
||||
|
||||
### Entry-level Experimentation
|
||||
|
||||
### Personal Use
|
||||
|
||||
- Macbook (16gb)
|
||||
- 3090
|
||||
|
||||
### Prosumer Use
|
||||
|
||||
- Apple Silicon
|
||||
- 2 x 3090 (48gb RAM)
|
||||
|
||||
## Business Use
|
||||
|
||||
### For a 10-person Small Business
|
||||
|
||||
Run a LLM trained on enterprise data (i.e. RAG)
|
||||
|
||||
- Mac Studio M2 Ultra with 192GB unified memory
|
||||
- Cannot train
|
||||
- RTX 6000
|
||||
- Should we recommend 2 x 4090 instead?
|
||||
|
||||
### For a 50-person Law Firm
|
||||
|
||||
- LLM, PDF Parsing, OCR
|
||||
- Audit logging and compliance
|
||||
|
||||
### For a 1,000-student School
|
||||
|
||||
- Llama2 with safeguards
|
||||
- RAG with textbook data
|
||||
- Policy engine
|
||||
|
||||
## Software Engineering
|
||||
|
||||
### Personal Code Assistant
|
||||
|
||||
- Llama34b, needs adequate RAM
|
||||
- Not recommended to run on local device due to RAM
|
||||
|
||||
### For a 10 person Software Team
|
||||
|
||||
Run Codellama with RAG on existing codebase
|
||||
|
||||
- Codellama34b
|
||||
- RTX 6000s (48gb)
|
||||
|
||||
## Enterprise
|
||||
|
||||
### For a 1000-person Enterprise
|
||||
|
||||
### For a 10,000-person Enterprise
|
||||
|
||||
- 8 x H100s
|
||||
- NVAIE with vGPUs
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: Integrations
|
||||
---
|
||||
|
||||
TODO
|
||||
5
docs/docs/platform/platform.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: Overview
|
||||
slug: /platform
|
||||
---
|
||||
3
docs/docs/products/desktop.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Jan Desktop
|
||||
---
|
||||
3
docs/docs/products/mobile.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Jan Mobile
|
||||
---
|
||||
4
docs/docs/products/products.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
title: Products
|
||||
slug: /product
|
||||
---
|
||||
3
docs/docs/products/server.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Jan Server
|
||||
---
|
||||
3
docs/docs/solutions/industries/education.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Education
|
||||
---
|
||||
3
docs/docs/solutions/industries/finance.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Finance
|
||||
---
|
||||
3
docs/docs/solutions/industries/healthcare.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Healthcare
|
||||
---
|
||||
3
docs/docs/solutions/industries/law.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Law
|
||||
---
|
||||
3
docs/docs/solutions/industries/public-sector.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Public Sector
|
||||
---
|
||||
3
docs/docs/solutions/industries/software.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Software Engineering
|
||||
---
|
||||
3
docs/docs/solutions/personal-ai.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Personal AI
|
||||
---
|
||||
3
docs/docs/solutions/self-hosted.md
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
title: Self-hosted ChatGPT
|
||||
---
|
||||
4
docs/docs/solutions/solutions.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
title: Overview
|
||||
slug: /solutions
|
||||
---
|
||||
@ -1,69 +1,81 @@
|
||||
// @ts-check
|
||||
// Note: type annotations allow type checking and IDEs autocompletion
|
||||
|
||||
const lightCodeTheme = require('prism-react-renderer/themes/github');
|
||||
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
|
||||
const lightCodeTheme = require("prism-react-renderer/themes/github");
|
||||
const darkCodeTheme = require("prism-react-renderer/themes/dracula");
|
||||
|
||||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
title: 'Jan Documentation',
|
||||
tagline: 'Self-hosted AI inference platform',
|
||||
favicon: 'img/favicon.ico',
|
||||
title: "Jan",
|
||||
tagline: "Run your own AI",
|
||||
favicon: "img/favicon.ico",
|
||||
|
||||
// Set the production url of your site here
|
||||
url: 'https://docs.jan.ai',
|
||||
url: "https://jan.ai",
|
||||
// Set the /<baseUrl>/ pathname under which your site is served
|
||||
// For GitHub pages deployment, it is often '/<projectName>/'
|
||||
baseUrl: '/',
|
||||
baseUrl: "/",
|
||||
|
||||
// GitHub pages deployment config.
|
||||
// If you aren't using GitHub pages, you don't need these.
|
||||
organizationName: 'janhq', // Usually your GitHub org/user name.
|
||||
projectName: 'jan', // Usually your repo name.
|
||||
organizationName: "janhq", // Usually your GitHub org/user name.
|
||||
projectName: "jan", // Usually your repo name.
|
||||
|
||||
onBrokenLinks: 'ignore',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
onBrokenLinks: "warn",
|
||||
onBrokenMarkdownLinks: "warn",
|
||||
|
||||
// Even if you don't use internalization, you can use this field to set useful
|
||||
// metadata like html lang. For example, if your site is Chinese, you may want
|
||||
// to replace "en" with "zh-Hans".
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
defaultLocale: "en",
|
||||
locales: ["en"],
|
||||
},
|
||||
|
||||
// Plugins we added
|
||||
plugins: [
|
||||
async function myPlugin(context, options) {
|
||||
return {
|
||||
name: "docusaurus-tailwindcss",
|
||||
configurePostCss(postcssOptions) {
|
||||
// Appends TailwindCSS and AutoPrefixer.
|
||||
postcssOptions.plugins.push(require("tailwindcss"));
|
||||
postcssOptions.plugins.push(require("autoprefixer"));
|
||||
return postcssOptions;
|
||||
},
|
||||
};
|
||||
},
|
||||
],
|
||||
|
||||
// Only for react live
|
||||
themes: ['@docusaurus/theme-live-codeblock'],
|
||||
themes: ["@docusaurus/theme-live-codeblock"],
|
||||
|
||||
// The classic preset will relay each option entry to the respective sub plugin/theme.
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
"classic",
|
||||
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||
({
|
||||
// Will be passed to @docusaurus/plugin-content-docs (false to disable)
|
||||
docs: {
|
||||
routeBasePath: '/',
|
||||
sidebarPath: require.resolve('./sidebars.js'),
|
||||
editUrl:
|
||||
'https://github.com/janhq/jan/tree/main/docs',
|
||||
sidebarCollapsed: false,
|
||||
routeBasePath: "/",
|
||||
sidebarPath: require.resolve("./sidebars.js"),
|
||||
editUrl: "https://github.com/janhq/jan/tree/main/docs",
|
||||
showLastUpdateAuthor: true,
|
||||
showLastUpdateTime: true,
|
||||
},
|
||||
// Will be passed to @docusaurus/plugin-content-sitemap (false to disable)
|
||||
sitemap: {
|
||||
changefreq: 'weekly',
|
||||
priority: 0.5,
|
||||
ignorePatterns: ['/tags/**'],
|
||||
filename: 'sitemap.xml',
|
||||
changefreq: "daily",
|
||||
priority: 1.0,
|
||||
ignorePatterns: ["/tags/**"],
|
||||
filename: "sitemap.xml",
|
||||
},
|
||||
// Will be passed to @docusaurus/plugin-content-blog (false to disable)
|
||||
blog: false,
|
||||
// Will be passed to @docusaurus/theme-classic.
|
||||
theme: {
|
||||
customCss: require.resolve('./src/css/custom.css'),
|
||||
customCss: require.resolve("./src/css/custom.css"),
|
||||
},
|
||||
// Will be passed to @docusaurus/plugin-content-pages (false to disable)
|
||||
// pages: {},
|
||||
@ -71,142 +83,151 @@ const config = {
|
||||
],
|
||||
// Redoc preset
|
||||
[
|
||||
'redocusaurus',
|
||||
"redocusaurus",
|
||||
{
|
||||
specs: [
|
||||
{
|
||||
spec: 'openapi/OpenAPISpec.json', // can be local file, url, or parsed json object
|
||||
route: '/reference/',
|
||||
spec: "openapi/OpenAPISpec.json", // can be local file, url, or parsed json object
|
||||
route: "/api/",
|
||||
},
|
||||
],
|
||||
theme: {
|
||||
primaryColor: '#1a73e8',
|
||||
primaryColorDark: '#1a73e8',
|
||||
primaryColor: "#1a73e8",
|
||||
primaryColorDark: "#1a73e8",
|
||||
// redocOptions: { hideDownloadButton: false },
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
],
|
||||
|
||||
// Docs: https://docusaurus.io/docs/api/themes/configuration
|
||||
themeConfig:
|
||||
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
|
||||
({
|
||||
image: 'img/jan-social-card.png',
|
||||
image: "img/jan-social-card.png",
|
||||
// Only for react live
|
||||
liveCodeBlock: {
|
||||
playgroundPosition: 'bottom',
|
||||
playgroundPosition: "bottom",
|
||||
},
|
||||
navbar: {
|
||||
title: 'Jan Docs',
|
||||
title: "Jan",
|
||||
logo: {
|
||||
alt: 'Jan Logo',
|
||||
src: 'img/logo.svg',
|
||||
alt: "Jan Logo",
|
||||
src: "img/logo.svg",
|
||||
},
|
||||
items: [
|
||||
// Navbar left
|
||||
// Navbar Top
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'quickstartSidebar',
|
||||
position: 'left',
|
||||
label: 'Getting Started',
|
||||
type: "docSidebar",
|
||||
sidebarId: "featuresSidebar",
|
||||
position: "left",
|
||||
label: "Platform",
|
||||
},
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'guidesSidebar',
|
||||
position: 'left',
|
||||
label: 'Guides',
|
||||
type: "docSidebar",
|
||||
sidebarId: "solutionsSidebar",
|
||||
position: "left",
|
||||
label: "Use Cases",
|
||||
},
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'hardwareSidebar',
|
||||
position: 'left',
|
||||
label: 'Hardware',
|
||||
},
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'integrationsSidebar',
|
||||
position: 'left',
|
||||
label: 'Integrations',
|
||||
},
|
||||
{
|
||||
position: 'left',
|
||||
label: 'Reference',
|
||||
to: '/reference',
|
||||
type: "docSidebar",
|
||||
sidebarId: "companySidebar",
|
||||
position: "left",
|
||||
label: "Company",
|
||||
},
|
||||
// Navbar right
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'aboutSidebar',
|
||||
position: 'right',
|
||||
label: 'About',
|
||||
type: "docSidebar",
|
||||
sidebarId: "docsSidebar",
|
||||
position: "right",
|
||||
label: "Docs",
|
||||
},
|
||||
{
|
||||
href: 'https://github.com/janhq/jan',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
type: "docSidebar",
|
||||
sidebarId: "hardwareSidebar",
|
||||
position: "right",
|
||||
label: "Hardware",
|
||||
},
|
||||
{
|
||||
position: "right",
|
||||
label: "API",
|
||||
to: "/api",
|
||||
},
|
||||
{
|
||||
href: "https://github.com/janhq/jan",
|
||||
label: "GitHub",
|
||||
position: "right",
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
style: "dark",
|
||||
links: [
|
||||
{
|
||||
title: 'Documentation',
|
||||
title: "Jan",
|
||||
items: [
|
||||
{
|
||||
label: 'Getting Started',
|
||||
to: '/',
|
||||
label: "Home",
|
||||
to: "/",
|
||||
},
|
||||
{
|
||||
label: 'Guides',
|
||||
to: '/guides',
|
||||
label: "Platform",
|
||||
to: "/platform",
|
||||
},
|
||||
{
|
||||
label: 'Developer',
|
||||
to: '/developer',
|
||||
},
|
||||
{
|
||||
label: 'Reference',
|
||||
to: '/reference',
|
||||
},
|
||||
{
|
||||
label: 'Changelog',
|
||||
to: '/changelog',
|
||||
label: "Use Cases",
|
||||
to: "/solutions",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
title: "Docs",
|
||||
items: [
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discord.gg/FTk2MvZwJH',
|
||||
label: "Docs",
|
||||
to: "/docs",
|
||||
},
|
||||
{
|
||||
label: 'Telegram',
|
||||
href: 'https://t.me/+cSSlxwEM-0piMDQ1',
|
||||
label: "Hardware",
|
||||
to: "/hardware",
|
||||
},
|
||||
{
|
||||
label: 'Twitter',
|
||||
href: 'https://twitter.com/askjanai',
|
||||
label: "API",
|
||||
to: "/api",
|
||||
},
|
||||
{
|
||||
label: "Changelog",
|
||||
to: "/changelog",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
title: "Community",
|
||||
items: [
|
||||
{
|
||||
label: 'About',
|
||||
to: '/about',
|
||||
label: "Discord",
|
||||
href: "https://discord.gg/FTk2MvZwJH",
|
||||
},
|
||||
{
|
||||
label: 'Blog',
|
||||
href: 'https://blog.jan.ai',
|
||||
label: "Twitter",
|
||||
href: "https://twitter.com/jan_dotai",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Company",
|
||||
items: [
|
||||
{
|
||||
label: "About",
|
||||
to: "/about",
|
||||
},
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/janhq/jan',
|
||||
label: "Careers",
|
||||
href: "https://janai.bamboohr.com/careers",
|
||||
},
|
||||
{
|
||||
label: "GitHub",
|
||||
href: "https://github.com/janhq/jan",
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -216,7 +237,12 @@ const config = {
|
||||
prism: {
|
||||
theme: lightCodeTheme,
|
||||
darkTheme: darkCodeTheme,
|
||||
additionalLanguages: ['python'],
|
||||
additionalLanguages: ["python"],
|
||||
},
|
||||
colorMode: {
|
||||
defaultMode: "dark",
|
||||
disableSwitch: false,
|
||||
respectPrefersColorScheme: false,
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
14177
docs/package-lock.json
generated
@ -17,12 +17,17 @@
|
||||
"@docusaurus/core": "2.4.1",
|
||||
"@docusaurus/preset-classic": "2.4.1",
|
||||
"@docusaurus/theme-live-codeblock": "^2.4.1",
|
||||
"@headlessui/react": "^1.7.17",
|
||||
"@heroicons/react": "^2.0.18",
|
||||
"@mdx-js/react": "^1.6.22",
|
||||
"autoprefixer": "^10.4.16",
|
||||
"clsx": "^1.2.1",
|
||||
"postcss": "^8.4.30",
|
||||
"prism-react-renderer": "^1.3.5",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"redocusaurus": "^1.6.3"
|
||||
"redocusaurus": "^1.6.3",
|
||||
"tailwindcss": "^3.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "2.4.1"
|
||||
|
||||
213
docs/sidebars.js
@ -14,28 +14,207 @@
|
||||
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
|
||||
const sidebars = {
|
||||
// By default, Docusaurus generates a sidebar from the docs folder structure
|
||||
quickstartSidebar: [{
|
||||
type: 'autogenerated', dirName: 'getting-started',
|
||||
}],
|
||||
guidesSidebar: [{ type: 'autogenerated', dirName: 'guides' }],
|
||||
hardwareSidebar: [{ type: 'autogenerated', dirName: 'hardware' }],
|
||||
integrationsSidebar: [{ type: 'autogenerated', dirName: 'integrations' }],
|
||||
glossarySidebar: [{ type: 'autogenerated', dirName: 'glossary' }],
|
||||
changelogSidebar: [{ type: 'autogenerated', dirName: 'changelog' }],
|
||||
aboutSidebar: [{ type: 'autogenerated', dirName: 'about' }],
|
||||
|
||||
// But you can create a sidebar manually
|
||||
/*
|
||||
tutorialSidebar: [
|
||||
'intro',
|
||||
'hello',
|
||||
featuresSidebar: [
|
||||
"platform/platform",
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Tutorial',
|
||||
items: ['tutorial-basics/create-a-document'],
|
||||
type: "category",
|
||||
label: "Products",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
link: { type: "doc", id: "products/products" },
|
||||
items: ["products/desktop", "products/mobile", "products/server"],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Features",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
link: { type: "doc", id: "features/features" },
|
||||
items: [
|
||||
"features/ai-models",
|
||||
"features/control",
|
||||
"features/acceleration",
|
||||
"features/extensions",
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
// Note: Tab name is "Use Cases"
|
||||
solutionsSidebar: [
|
||||
"solutions/solutions",
|
||||
{
|
||||
type: "category",
|
||||
label: "Use cases",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
items: ["solutions/personal-ai", "solutions/self-hosted"],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Industries",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
items: [
|
||||
"solutions/industries/software",
|
||||
"solutions/industries/education",
|
||||
"solutions/industries/law",
|
||||
"solutions/industries/public-sector",
|
||||
"solutions/industries/finance",
|
||||
"solutions/industries/healthcare",
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
docsSidebar: [
|
||||
{ type: "doc", label: "Getting Started", id: "docs/docs" },
|
||||
{
|
||||
type: "category",
|
||||
label: "Install",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
items: [
|
||||
{ type: "doc", label: "Windows", id: "docs/install/windows" },
|
||||
{ type: "doc", label: "Mac", id: "docs/install/mac" },
|
||||
{ type: "doc", label: "Linux", id: "docs/install/linux" },
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
hardwareSidebar: [
|
||||
{
|
||||
type: "category",
|
||||
label: "Overview",
|
||||
collapsible: true,
|
||||
collapsed: true,
|
||||
link: { type: "doc", id: "hardware/hardware" },
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
label: "Cloud vs. Buy",
|
||||
id: "hardware/overview/cloud-vs-buy",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "CPUs vs. GPUs",
|
||||
id: "hardware/overview/cpu-vs-gpu",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Recommendations",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
label: "By Hardware",
|
||||
id: "hardware/recommendations/by-hardware",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "By Budget",
|
||||
id: "hardware/recommendations/by-budget",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "By Model",
|
||||
id: "hardware/recommendations/by-model",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "By Use Case",
|
||||
id: "hardware/recommendations/by-usecase",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Anatomy of a Thinking Machine",
|
||||
collapsible: true,
|
||||
collapsed: true,
|
||||
link: { type: "doc", id: "hardware/concepts/concepts" },
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
label: "Chassis",
|
||||
id: "hardware/concepts/chassis",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "Motherboard",
|
||||
id: "hardware/concepts/motherboard",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "CPU and RAM",
|
||||
id: "hardware/concepts/cpu-and-ram",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "GPU and VRAM",
|
||||
id: "hardware/concepts/gpu-and-vram",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "Storage",
|
||||
id: "hardware/concepts/storage",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "Network",
|
||||
id: "hardware/concepts/network",
|
||||
},
|
||||
|
||||
{
|
||||
type: "doc",
|
||||
label: "Power Supply",
|
||||
id: "hardware/concepts/power",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Community Examples",
|
||||
collapsible: true,
|
||||
collapsed: true,
|
||||
link: { type: "doc", id: "hardware/community" },
|
||||
items: [
|
||||
{
|
||||
type: "autogenerated",
|
||||
dirName: "hardware/examples",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
companySidebar: [
|
||||
{
|
||||
type: "category",
|
||||
label: "About Jan",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
link: { type: "doc", id: "about/about" },
|
||||
items: [
|
||||
"about/roadmap",
|
||||
{
|
||||
type: "link",
|
||||
label: "Careers",
|
||||
href: "https://janai.bamboohr.com/careers",
|
||||
},
|
||||
"about/brand-assets",
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Company Handbook",
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
link: { type: "doc", id: "handbook/handbook" },
|
||||
items: ["handbook/remote-work"],
|
||||
},
|
||||
],
|
||||
*/
|
||||
};
|
||||
|
||||
module.exports = sidebars;
|
||||
|
||||
92
docs/src/components/Elements/dropdown.js
Normal file
@ -0,0 +1,92 @@
|
||||
import React from "react";
|
||||
import { Fragment } from "react";
|
||||
import { Menu, Transition } from "@headlessui/react";
|
||||
import { ChevronDownIcon } from "@heroicons/react/20/solid";
|
||||
|
||||
const items = [
|
||||
{
|
||||
name: "Download for Mac (M1/M2)",
|
||||
href: "#",
|
||||
logo: require("@site/static/img/apple-logo-white.png").default,
|
||||
},
|
||||
{
|
||||
name: "Download for Mac (Intel)",
|
||||
href: "#",
|
||||
logo: require("@site/static/img/apple-logo-white.png").default,
|
||||
},
|
||||
{
|
||||
name: "Download for Windows",
|
||||
href: "#",
|
||||
logo: require("@site/static/img/windows-logo-white.png").default,
|
||||
},
|
||||
{
|
||||
name: "Download for Linux",
|
||||
href: "#",
|
||||
logo: require("@site/static/img/linux-logo-white.png").default,
|
||||
},
|
||||
];
|
||||
|
||||
function classNames(...classes) {
|
||||
return classes.filter(Boolean).join(" ");
|
||||
}
|
||||
|
||||
export default function Dropdown() {
|
||||
return (
|
||||
<div className="inline-flex align-items-stretch">
|
||||
{/* TODO dynamically detect users OS through browser */}
|
||||
<button
|
||||
type="button"
|
||||
className="cursor-pointer relative inline-flex items-center rounded-l-md border-0 px-3.5 py-2.5 text-base font-semibold text-white bg-indigo-600 dark:bg-indigo-500 hover:bg-indigo-500 dark:hover:bg-indigo-400"
|
||||
>
|
||||
<img
|
||||
src={require("@site/static/img/apple-logo-white.png").default}
|
||||
alt="Logo"
|
||||
className="h-5 mr-3 -mt-1"
|
||||
/>
|
||||
Download for Mac (Silicon)
|
||||
</button>
|
||||
<Menu as="div" className="relative -ml-px block">
|
||||
<Menu.Button className="cursor-pointer relative inline-flex items-center rounded-r-md border-0 border-l border-gray-300 active:border-l active:border-white h-full text-white bg-indigo-600 dark:bg-indigo-500 hover:bg-indigo-500 dark:hover:bg-indigo-400">
|
||||
<span className="sr-only">Open OS options</span>
|
||||
<ChevronDownIcon className="h-5 w-5" aria-hidden="true" />
|
||||
</Menu.Button>
|
||||
<Transition
|
||||
as={Fragment}
|
||||
enter="transition ease-out duration-100"
|
||||
enterFrom="transform opacity-0 scale-95"
|
||||
enterTo="transform opacity-100 scale-100"
|
||||
leave="transition ease-in duration-75"
|
||||
leaveFrom="transform opacity-100 scale-100"
|
||||
leaveTo="transform opacity-0 scale-95"
|
||||
>
|
||||
<Menu.Items className="absolute right-0 z-10 mt-2 w-72 text-left origin-top-right rounded-md bg-indigo-600 dark:bg-indigo-500 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
|
||||
<div className="py-1">
|
||||
{items.map((item) => (
|
||||
<Menu.Item key={item.name}>
|
||||
{({ active }) => (
|
||||
<a
|
||||
href={item.href}
|
||||
className={classNames(
|
||||
active
|
||||
? "bg-indigo-500 dark:hover:bg-indigo-400 hover:text-white"
|
||||
: "text-white",
|
||||
"block px-4 py-2"
|
||||
)}
|
||||
>
|
||||
<img
|
||||
src={item.logo}
|
||||
alt="Logo"
|
||||
className="w-3 mr-3 -mt-1"
|
||||
/>
|
||||
{item.name}
|
||||
</a>
|
||||
)}
|
||||
</Menu.Item>
|
||||
))}
|
||||
</div>
|
||||
</Menu.Items>
|
||||
</Transition>
|
||||
</Menu>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
docs/src/components/Homepage/banner.js
Normal file
@ -0,0 +1,32 @@
|
||||
import React from "react";
|
||||
import { XMarkIcon } from "@heroicons/react/20/solid";
|
||||
|
||||
export default function HomepageBanner() {
|
||||
return (
|
||||
<div className="flex items-center gap-x-6 bg-gray-900 px-6 py-2.5 sm:px-3.5 sm:before:flex-1">
|
||||
<p className="text-sm leading-6 text-white">
|
||||
<a href="#">
|
||||
<strong className="font-semibold">GeneriCon 2023</strong>
|
||||
<svg
|
||||
viewBox="0 0 2 2"
|
||||
className="mx-2 inline h-0.5 w-0.5 fill-current"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<circle cx={1} cy={1} r={1} />
|
||||
</svg>
|
||||
Join us in Denver from June 7 – 9 to see what’s coming next
|
||||
<span aria-hidden="true">→</span>
|
||||
</a>
|
||||
</p>
|
||||
<div className="flex flex-1 justify-end">
|
||||
<button
|
||||
type="button"
|
||||
className="-m-3 p-3 focus-visible:outline-offset-[-4px]"
|
||||
>
|
||||
<span className="sr-only">Dismiss</span>
|
||||
<XMarkIcon className="h-5 w-5 text-white" aria-hidden="true" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
77
docs/src/components/Homepage/downloads.js
Normal file
@ -0,0 +1,77 @@
|
||||
import React from "react";
|
||||
import {
|
||||
ArrowPathIcon,
|
||||
CloudArrowUpIcon,
|
||||
LockClosedIcon,
|
||||
} from "@heroicons/react/20/solid";
|
||||
|
||||
const features = [
|
||||
{
|
||||
name: "Mac",
|
||||
description:
|
||||
"Commodo nec sagittis tortor mauris sed. Turpis tortor quis scelerisque diam id accumsan nullam tempus. Pulvinar etiam lacus volutpat eu. Phasellus praesent ligula sit faucibus.",
|
||||
href: "#",
|
||||
icon: CloudArrowUpIcon,
|
||||
},
|
||||
{
|
||||
name: "Windows",
|
||||
description:
|
||||
"Pellentesque enim a commodo malesuada turpis eleifend risus. Facilisis donec placerat sapien consequat tempor fermentum nibh.",
|
||||
href: "#",
|
||||
icon: LockClosedIcon,
|
||||
},
|
||||
{
|
||||
name: "Linux",
|
||||
description:
|
||||
"Pellentesque sit elit congue ante nec amet. Dolor aenean curabitur viverra suspendisse iaculis eget. Nec mollis placerat ultricies euismod ut condimentum.",
|
||||
href: "#",
|
||||
icon: ArrowPathIcon,
|
||||
},
|
||||
];
|
||||
|
||||
export default function HomepageDownloads() {
|
||||
return (
|
||||
<div className="bg-white dark:bg-gray-900 py-12 sm:py-16">
|
||||
<div className="mx-auto max-w-7xl px-6 lg:px-8">
|
||||
<div className="mx-auto max-w-2xl lg:text-center">
|
||||
<h2 className="text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-400">
|
||||
Run AI on any OS
|
||||
</h2>
|
||||
<p className="mt-2 text-3xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-4xl">
|
||||
Downloads
|
||||
</p>
|
||||
<p className="mt-6 text-lg leading-8 text-gray-600 dark:text-gray-300">
|
||||
Jan is compatible with all major operating systems. Download the
|
||||
latest stable versions here.
|
||||
</p>
|
||||
</div>
|
||||
<div className="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none">
|
||||
<dl className="grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-3">
|
||||
{features.map((feature) => (
|
||||
<div key={feature.name} className="flex flex-col">
|
||||
<dt className="flex items-center gap-x-3 text-base font-semibold leading-7 text-gray-900 dark: text-white">
|
||||
<feature.icon
|
||||
className="h-5 w-5 flex-none text-indigo-600 dark:text-indigo-400"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
{feature.name}
|
||||
</dt>
|
||||
<dd className="mt-4 flex flex-auto flex-col text-base leading-7 text-gray-600 dark:text-gray-300">
|
||||
<p className="flex-auto">{feature.description}</p>
|
||||
<p className="mt-6">
|
||||
<a
|
||||
href={feature.href}
|
||||
className="text-sm font-semibold leading-6 text-indigo-600 dark:text-indigo-400"
|
||||
>
|
||||
Learn more <span aria-hidden="true">→</span>
|
||||
</a>
|
||||
</p>
|
||||
</dd>
|
||||
</div>
|
||||
))}
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
99
docs/src/components/Homepage/hero.js
Normal file
@ -0,0 +1,99 @@
|
||||
import React from "react";
|
||||
import { ChevronRightIcon } from "@heroicons/react/20/solid";
|
||||
import { useColorMode } from "@docusaurus/theme-common";
|
||||
import Dropdown from "@site/src/components/Elements/dropdown";
|
||||
|
||||
export default function HomepageHero() {
|
||||
const { colorMode } = useColorMode();
|
||||
|
||||
return (
|
||||
<div className="bg-white dark:bg-gray-900">
|
||||
<div className="relative isolate pt-14">
|
||||
{/* Background top gradient styling */}
|
||||
{colorMode === "dark" ? (
|
||||
<div
|
||||
className="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
className="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]"
|
||||
style={{
|
||||
clipPath:
|
||||
"polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
) : (
|
||||
<div
|
||||
className="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
className="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]"
|
||||
style={{
|
||||
clipPath:
|
||||
"polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Main hero block */}
|
||||
<div className="py-24 sm:py-32 lg:pb-40">
|
||||
<div className="mx-auto max-w-7xl px-6 lg:px-8">
|
||||
{/* Hero text and buttons */}
|
||||
<div className="mx-auto max-w-2xl text-center">
|
||||
<h1 className="text-4xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-6xl">
|
||||
Run your own AI
|
||||
</h1>
|
||||
<p className="mt-6 text-lg leading-8 text-gray-600 dark:text-gray-300">
|
||||
Jan lets you run AI on your own hardware. 1-click to install the
|
||||
latest open-source models. Monitor and manage software-hardware
|
||||
performance.
|
||||
<br></br>
|
||||
Jan is
|
||||
<strong> free and open core</strong> with a Sustainable Use
|
||||
License.
|
||||
</p>
|
||||
<div className="mt-10 flex items-center justify-center gap-x-6">
|
||||
{/* TODO: handle mobile model download app instead */}
|
||||
<Dropdown />
|
||||
<button
|
||||
type="button"
|
||||
className="cursor-pointer relative inline-flex items-center rounded px-3.5 py-2 dark:py-2.5 text-base font-semibold text-indigo-600 bg-white border-indigo-600 dark:border-0 hover:bg-indigo-600 dark:hover:bg-indigo-500 hover:text-white"
|
||||
>
|
||||
Book a Demo
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{/* Desktop screenshot image full width */}
|
||||
<img
|
||||
src={
|
||||
colorMode === "dark"
|
||||
? // TODO replace with darkmode image
|
||||
require("@site/static/img/desktop-llm-chat.png").default
|
||||
: require("@site/static/img/desktop-llm-chat.png").default
|
||||
}
|
||||
alt="App screenshot"
|
||||
width={2432}
|
||||
className="mt-16 rounded-lg md:rounded-2xl lg:rounded-3xl bg-white/5 shadow-2xl ring-1 ring-white/10 sm:mt-24"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{/* Background top gradient styling */}
|
||||
<div
|
||||
className="absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
className="relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]"
|
||||
style={{
|
||||
clipPath:
|
||||
"polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
6
docs/src/components/Homepage/index.js
Normal file
@ -0,0 +1,6 @@
|
||||
export { default as HomepageBanner } from "./banner";
|
||||
export { default as HomepageHero } from "./hero";
|
||||
export { default as HomepageSectionOne } from "./sectionOne";
|
||||
export { default as HomepageSectionTwo } from "./sectionTwo";
|
||||
export { default as HomepageSectionThree } from "./sectionThree";
|
||||
export { default as HomepageDownloads } from "./downloads";
|
||||
86
docs/src/components/Homepage/sectionOne.js
Normal file
@ -0,0 +1,86 @@
|
||||
import React from "react";
|
||||
import {
|
||||
CircleStackIcon,
|
||||
CloudArrowUpIcon,
|
||||
CursorArrowRaysIcon,
|
||||
HomeIcon,
|
||||
LockClosedIcon,
|
||||
RocketLaunchIcon,
|
||||
ServerIcon,
|
||||
} from "@heroicons/react/20/solid";
|
||||
import { useColorMode } from "@docusaurus/theme-common";
|
||||
|
||||
const features = [
|
||||
{
|
||||
name: "1 Click Installs.",
|
||||
description:
|
||||
"Llama2, MPT, CodeLlama, and more. 1 click to install the latest and greatest models directly from HuggingFace. Or easily uploads your own models.",
|
||||
icon: CursorArrowRaysIcon,
|
||||
},
|
||||
{
|
||||
name: "Model management.",
|
||||
description:
|
||||
"Configure advanced settings for each model. Manage your model versions. Easily switch between models. Get visibility into hardware compatibility.",
|
||||
icon: HomeIcon,
|
||||
},
|
||||
{
|
||||
name: "Cloud AI Compatible.",
|
||||
description:
|
||||
"Connect via API to ChatGPT, Claude which are also still supported. Also declare your own remote server endpoint on any GPU cloud and share it.",
|
||||
icon: CloudArrowUpIcon,
|
||||
},
|
||||
];
|
||||
|
||||
export default function HomepageSectionOne() {
|
||||
const { colorMode } = useColorMode();
|
||||
return (
|
||||
<div className="overflow-hidden bg-white dark:bg-gray-900 py-24 sm:py-32">
|
||||
<div className="mx-auto max-w-7xl px-6 lg:px-8">
|
||||
<div className="mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-2">
|
||||
<div className="lg:ml-auto lg:pl-4 lg:pt-4">
|
||||
<div className="lg:max-w-lg">
|
||||
<h2 className="text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-400">
|
||||
Jan supports
|
||||
</h2>
|
||||
<p className="mt-2 text-3xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-4xl">
|
||||
Powerful Foundational Models
|
||||
</p>
|
||||
<p className="mt-6 text-lg leading-8 text-gray-600 dark:text-gray-300">
|
||||
Open source foundational models are supported.
|
||||
</p>
|
||||
<dl className="mt-10 max-w-xl space-y-8 text-base leading-7 text-gray-600 dark:text-gray-300 lg:max-w-none">
|
||||
{features.map((feature) => (
|
||||
<div key={feature.name} className="relative pl-9">
|
||||
<dt className="inline font-semibold text-gray-900 dark:text-gray-300">
|
||||
<feature.icon
|
||||
className="absolute left-1 top-1 h-5 w-5 text-indigo-600 dark:text-indigo-400"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
{feature.name}
|
||||
</dt>{" "}
|
||||
<dd className="inline">{feature.description}</dd>
|
||||
</div>
|
||||
))}
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start justify-end lg:order-first">
|
||||
<img
|
||||
src={
|
||||
colorMode === "dark"
|
||||
? // TODO replace with darkmode image
|
||||
require("@site/static/img/desktop-explore-models-dark.png")
|
||||
.default
|
||||
: require("@site/static/img/desktop-explore-models.png")
|
||||
.default
|
||||
}
|
||||
alt="Product screenshot"
|
||||
className="w-[48rem] max-w-none rounded-xl shadow-xl ring-1 ring-gray-400/10 sm:w-[57rem]"
|
||||
width={2432}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
174
docs/src/components/Homepage/sectionThree.js
Normal file
@ -0,0 +1,174 @@
|
||||
import React from "react";
|
||||
import { useState } from "react";
|
||||
import { RadioGroup } from "@headlessui/react";
|
||||
import { CheckIcon } from "@heroicons/react/20/solid";
|
||||
|
||||
const frequencies = [
|
||||
{ value: "monthly", label: "Monthly", priceSuffix: "/1Mn tokens" },
|
||||
{ value: "annually", label: "Annually", priceSuffix: "/year" },
|
||||
];
|
||||
const tiers = [
|
||||
{
|
||||
name: "Pay per API call",
|
||||
id: "tier-freelancer",
|
||||
href: "#",
|
||||
price: { monthly: "$75", annually: "$144" },
|
||||
description: "The essentials to provide your best work for clients.",
|
||||
features: [
|
||||
"5 products",
|
||||
"Up to 1,000 subscribers",
|
||||
"Basic analytics",
|
||||
"48-hour support response time",
|
||||
],
|
||||
mostPopular: false,
|
||||
},
|
||||
{
|
||||
name: "Run it yourself",
|
||||
id: "tier-startup",
|
||||
href: "#",
|
||||
price: { monthly: "$0", annually: "$288" },
|
||||
description: "A plan that scales with your rapidly growing business.",
|
||||
features: [
|
||||
"25 products",
|
||||
"Up to 10,000 subscribers",
|
||||
"Advanced analytics",
|
||||
"24-hour support response time",
|
||||
"Marketing automations",
|
||||
],
|
||||
mostPopular: true,
|
||||
},
|
||||
{
|
||||
name: "Rent Cloud GPUs",
|
||||
id: "tier-enterprise",
|
||||
href: "#",
|
||||
price: { monthly: "$40", annually: "$576" },
|
||||
description: "Dedicated support and infrastructure for your company.",
|
||||
features: [
|
||||
"Unlimited products",
|
||||
"Unlimited subscribers",
|
||||
"Advanced analytics",
|
||||
"1-hour, dedicated support response time",
|
||||
"Marketing automations",
|
||||
"Custom reporting tools",
|
||||
],
|
||||
mostPopular: false,
|
||||
},
|
||||
];
|
||||
|
||||
function classNames(...classes) {
|
||||
return classes.filter(Boolean).join(" ");
|
||||
}
|
||||
|
||||
export default function Example() {
|
||||
const [frequency, setFrequency] = useState(frequencies[0]);
|
||||
|
||||
return (
|
||||
<div className="bg-white py-24 sm:py-32">
|
||||
<div className="mx-auto max-w-7xl px-6 lg:px-8">
|
||||
<div className="mx-auto max-w-4xl text-center">
|
||||
<h2 className="text-base font-semibold leading-7 text-indigo-600">
|
||||
AI on your own hardware means
|
||||
</h2>
|
||||
<p className="mt-2 text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl">
|
||||
Unlimited Use
|
||||
</p>
|
||||
</div>
|
||||
<p className="mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-600">
|
||||
No uncontrolled cloud spending. No hidden fees. No limits.
|
||||
</p>
|
||||
{/* <div className="mt-16 flex justify-center">
|
||||
<RadioGroup
|
||||
value={frequency}
|
||||
onChange={setFrequency}
|
||||
className="grid grid-cols-2 gap-x-1 rounded-full p-1 text-center text-xs font-semibold leading-5 ring-1 ring-inset ring-gray-200"
|
||||
>
|
||||
<RadioGroup.Label className="sr-only">
|
||||
Payment frequency
|
||||
</RadioGroup.Label>
|
||||
{frequencies.map((option) => (
|
||||
<RadioGroup.Option
|
||||
key={option.value}
|
||||
value={option}
|
||||
className={({ checked }) =>
|
||||
classNames(
|
||||
checked ? "bg-indigo-600 text-white" : "text-gray-500",
|
||||
"cursor-pointer rounded-full px-2.5 py-1"
|
||||
)
|
||||
}
|
||||
>
|
||||
<span>{option.label}</span>
|
||||
</RadioGroup.Option>
|
||||
))}
|
||||
</RadioGroup>
|
||||
</div> */}
|
||||
<div className="isolate mx-auto mt-10 grid max-w-md grid-cols-1 gap-8 lg:mx-0 lg:max-w-none lg:grid-cols-3">
|
||||
{tiers.map((tier) => (
|
||||
<div
|
||||
key={tier.id}
|
||||
className={classNames(
|
||||
tier.mostPopular
|
||||
? "ring-2 ring-indigo-600"
|
||||
: "ring-1 ring-gray-200",
|
||||
"rounded-3xl p-8 xl:p-10"
|
||||
)}
|
||||
>
|
||||
<div className="flex items-center justify-between gap-x-4">
|
||||
<h3
|
||||
id={tier.id}
|
||||
className={classNames(
|
||||
tier.mostPopular ? "text-indigo-600" : "text-gray-900",
|
||||
"text-lg font-semibold leading-8"
|
||||
)}
|
||||
>
|
||||
{tier.name}
|
||||
</h3>
|
||||
{tier.mostPopular ? (
|
||||
<p className="rounded-full bg-indigo-600/10 px-2.5 py-1 text-xs font-semibold leading-5 text-indigo-600">
|
||||
Fully private
|
||||
</p>
|
||||
) : null}
|
||||
</div>
|
||||
<p className="mt-4 text-sm leading-6 text-gray-600">
|
||||
{tier.description}
|
||||
</p>
|
||||
<p className="mt-6 flex items-baseline gap-x-1">
|
||||
<span className="text-4xl font-bold tracking-tight text-gray-900">
|
||||
{tier.price[frequency.value]}
|
||||
</span>
|
||||
<span className="text-sm font-semibold leading-6 text-gray-600">
|
||||
{frequency.priceSuffix}
|
||||
</span>
|
||||
</p>
|
||||
{/* <a
|
||||
href={tier.href}
|
||||
aria-describedby={tier.id}
|
||||
className={classNames(
|
||||
tier.mostPopular
|
||||
? "bg-indigo-600 text-white shadow-sm hover:bg-indigo-500"
|
||||
: "text-indigo-600 ring-1 ring-inset ring-indigo-200 hover:ring-indigo-300",
|
||||
"mt-6 block rounded-md py-2 px-3 text-center text-sm font-semibold leading-6 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
|
||||
)}
|
||||
>
|
||||
Buy plan
|
||||
</a> */}
|
||||
<ul
|
||||
role="list"
|
||||
className="mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10"
|
||||
>
|
||||
{tier.features.map((feature) => (
|
||||
<li key={feature} className="flex gap-x-3">
|
||||
<CheckIcon
|
||||
className="h-6 w-5 flex-none text-indigo-600"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
{feature}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
83
docs/src/components/Homepage/sectionTwo.js
Normal file
@ -0,0 +1,83 @@
|
||||
import React from "react";
|
||||
import {
|
||||
CircleStackIcon,
|
||||
CloudArrowUpIcon,
|
||||
CursorArrowRaysIcon,
|
||||
HomeIcon,
|
||||
LockClosedIcon,
|
||||
RocketLaunchIcon,
|
||||
ServerIcon,
|
||||
} from "@heroicons/react/20/solid";
|
||||
import { useColorMode } from "@docusaurus/theme-common";
|
||||
|
||||
const features = [
|
||||
{
|
||||
name: "Data security and privacy.",
|
||||
description:
|
||||
"Lorem ipsum, dolor sit amet consectetur adipisicing elit. Maiores impedit perferendis suscipit eaque, iste dolor cupiditate blanditiis ratione.",
|
||||
icon: CloudArrowUpIcon,
|
||||
},
|
||||
{
|
||||
name: "Always accessible.",
|
||||
description:
|
||||
"Anim aute id magna aliqua ad ad non deserunt sunt. Qui irure qui lorem cupidatat commodo.",
|
||||
icon: LockClosedIcon,
|
||||
},
|
||||
{
|
||||
name: "Audit & compliance.",
|
||||
description: "Coming soon.",
|
||||
icon: ServerIcon,
|
||||
},
|
||||
];
|
||||
|
||||
export default function sectionTwo() {
|
||||
const { colorMode } = useColorMode();
|
||||
return (
|
||||
<div className="overflow-hidden bg-white dark:bg-gray-900 py-24 sm:py-32">
|
||||
<div className="mx-auto max-w-7xl px-6 lg:px-8">
|
||||
<div className="mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-2">
|
||||
<div className="lg:pr-8 lg:pt-4">
|
||||
<div className="lg:max-w-lg">
|
||||
<h2 className="text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-400">
|
||||
Jan gives you
|
||||
</h2>
|
||||
<p className="mt-2 text-3xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-4xl">
|
||||
AI that you control
|
||||
</p>
|
||||
<p className="mt-6 text-lg leading-8 text-gray-600 dark:text-gray-300">
|
||||
Lorem ipsum, dolor sit amet consectetur adipisicing elit.
|
||||
Maiores impedit perferendis suscipit eaque, iste dolor
|
||||
cupiditate blanditiis ratione.
|
||||
</p>
|
||||
<dl className="mt-10 max-w-xl space-y-8 text-base leading-7 text-gray-600 dark:text-gray-300 lg:max-w-none">
|
||||
{features.map((feature) => (
|
||||
<div key={feature.name} className="relative pl-9">
|
||||
<dt className="inline font-semibold text-gray-900 dark:text-white">
|
||||
<feature.icon
|
||||
className="absolute left-1 top-1 h-5 w-5 text-indigo-600 dark:text-indigo-400"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
{feature.name}
|
||||
</dt>{" "}
|
||||
<dd className="inline">{feature.description}</dd>
|
||||
</div>
|
||||
))}
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<img
|
||||
src={
|
||||
colorMode === "dark"
|
||||
? // TODO replace with darkmode image
|
||||
require("@site/static/img/desktop-model-settings.png").default
|
||||
: require("@site/static/img/desktop-model-settings.png").default
|
||||
}
|
||||
alt="Product screenshot"
|
||||
className="w-[48rem] max-w-none rounded-xl shadow-xl ring-1 ring-gray-400/10 sm:w-[57rem] md:-ml-4 lg:-ml-0"
|
||||
width={2432}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -1,64 +0,0 @@
|
||||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import styles from './styles.module.css';
|
||||
|
||||
const FeatureList = [
|
||||
{
|
||||
title: 'Easy to Use',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Docusaurus was designed from the ground up to be easily installed and
|
||||
used to get your website up and running quickly.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Focus on What Matters',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Docusaurus lets you focus on your docs, and we'll do the chores. Go
|
||||
ahead and move your docs into the <code>docs</code> directory.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Powered by React',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Extend or customize your website layout by reusing React. Docusaurus can
|
||||
be extended while reusing the same header and footer.
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
function Feature({Svg, title, description}) {
|
||||
return (
|
||||
<div className={clsx('col col--4')}>
|
||||
<div className="text--center">
|
||||
<Svg className={styles.featureSvg} role="img" />
|
||||
</div>
|
||||
<div className="text--center padding-horiz--md">
|
||||
<h3>{title}</h3>
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default function HomepageFeatures() {
|
||||
return (
|
||||
<section className={styles.features}>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
{FeatureList.map((props, idx) => (
|
||||
<Feature key={idx} {...props} />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
@ -1,10 +1,16 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
/**
|
||||
* Any CSS included here will be global. The classic template
|
||||
* bundles Infima by default. Infima is a CSS framework designed to
|
||||
* work well for content-centric websites.
|
||||
*/
|
||||
|
||||
/* You can override the default Infima variables here. */
|
||||
/* You can override the default Infima variables here.
|
||||
Full list of Infima variables: https://github.com/facebook/docusaurus/issues/3955#issuecomment-1521944593
|
||||
*/
|
||||
:root {
|
||||
--ifm-color-primary: #2e8555;
|
||||
--ifm-color-primary-dark: #29784c;
|
||||
@ -18,7 +24,7 @@
|
||||
}
|
||||
|
||||
/* For readability concerns, you should choose a lighter palette in dark mode. */
|
||||
[data-theme='dark'] {
|
||||
[data-theme="dark"] {
|
||||
--ifm-color-primary: #25c2a0;
|
||||
--ifm-color-primary-dark: #21af90;
|
||||
--ifm-color-primary-darker: #1fa588;
|
||||
@ -26,5 +32,6 @@
|
||||
--ifm-color-primary-light: #29d5b0;
|
||||
--ifm-color-primary-lighter: #32d8b4;
|
||||
--ifm-color-primary-lightest: #4fddbf;
|
||||
--ifm-navbar-background-color: rgba(15, 23, 42);
|
||||
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
32
docs/src/pages/index.js
Normal file
@ -0,0 +1,32 @@
|
||||
import React from "react";
|
||||
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
||||
import Layout from "@theme/Layout";
|
||||
import {
|
||||
HomepageHero,
|
||||
HomepageBanner,
|
||||
HomepageSectionOne,
|
||||
HomepageSectionTwo,
|
||||
HomepageSectionThree,
|
||||
HomepageDownloads,
|
||||
} from "@site/src/components/Homepage";
|
||||
|
||||
import styles from "./index.module.css";
|
||||
|
||||
export default function Home() {
|
||||
const { siteConfig } = useDocusaurusContext();
|
||||
return (
|
||||
<Layout
|
||||
title={`${siteConfig.tagline}`}
|
||||
description="Description will go into a meta tag in <head />"
|
||||
>
|
||||
{/* <HomepageBanner /> */}
|
||||
<main className={styles.main}>
|
||||
<HomepageHero />
|
||||
<HomepageSectionOne />
|
||||
<HomepageSectionTwo />
|
||||
{/* <HomepageSectionThree />
|
||||
<HomepageDownloads /> */}
|
||||
</main>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
@ -3,7 +3,7 @@
|
||||
* and scoped locally.
|
||||
*/
|
||||
|
||||
.heroBanner {
|
||||
/* .heroBanner {
|
||||
padding: 4rem 0;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
@ -20,4 +20,4 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
} */
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
---
|
||||
title: Markdown page example
|
||||
---
|
||||
|
||||
# Markdown page example
|
||||
|
||||
You don't need React to write simple standalone pages.
|
||||
@ -1,41 +0,0 @@
|
||||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Link from '@docusaurus/Link';
|
||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||
import Layout from '@theme/Layout';
|
||||
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
||||
|
||||
import styles from './index.module.css';
|
||||
|
||||
function HomepageHeader() {
|
||||
const { siteConfig } = useDocusaurusContext();
|
||||
return (
|
||||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
||||
<div className="container">
|
||||
<h1 className="hero__title">{siteConfig.title}</h1>
|
||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||
<div className={styles.buttons}>
|
||||
<Link
|
||||
className="button button--secondary button--lg"
|
||||
to="/quickstart/overview">
|
||||
Quickstart - 5min ⏱️
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Home() {
|
||||
const { siteConfig } = useDocusaurusContext();
|
||||
return (
|
||||
<Layout
|
||||
title={`Welcome`}
|
||||
description="Developer documentation for Jan.ai, a self-hosted AI inference platform">
|
||||
<HomepageHeader />
|
||||
<main>
|
||||
<HomepageFeatures />
|
||||
</main>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
BIN
docs/static/img/apple-logo-white.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
docs/static/img/desktop-explore-models-dark.png
vendored
Normal file
|
After Width: | Height: | Size: 389 KiB |
BIN
docs/static/img/desktop-explore-models.png
vendored
Normal file
|
After Width: | Height: | Size: 379 KiB |
BIN
docs/static/img/desktop-llm-chat.png
vendored
Normal file
|
After Width: | Height: | Size: 619 KiB |
BIN
docs/static/img/desktop-model-settings.png
vendored
Normal file
|
After Width: | Height: | Size: 257 KiB |
BIN
docs/static/img/linux-logo-white.png
vendored
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/static/img/windows-logo-white.png
vendored
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
13
docs/tailwind.config.js
Normal file
@ -0,0 +1,13 @@
|
||||
// tailwind.config.js
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
corePlugins: {
|
||||
preflight: false, // disable Tailwind's reset
|
||||
},
|
||||
content: ["./src/**/*.{js,jsx,ts,tsx}"], // Only affects code in /src; can also add ./docs/**/*.mdx to use tailwind in docs
|
||||
darkMode: ["class", '[data-theme="dark"]'], // hooks into docusaurus' dark mode settings
|
||||
theme: {
|
||||
extend: {},
|
||||
},
|
||||
plugins: [],
|
||||
};
|
||||
234
docs/yarn.lock
@ -138,6 +138,11 @@
|
||||
"@algolia/logger-common" "4.19.1"
|
||||
"@algolia/requester-common" "4.19.1"
|
||||
|
||||
"@alloc/quick-lru@^5.2.0":
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
|
||||
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
|
||||
|
||||
"@ampproject/remapping@^2.2.0":
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
|
||||
@ -1710,6 +1715,18 @@
|
||||
dependencies:
|
||||
"@hapi/hoek" "^9.0.0"
|
||||
|
||||
"@headlessui/react@^1.7.17":
|
||||
version "1.7.17"
|
||||
resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.17.tgz#a0ec23af21b527c030967245fd99776aa7352bc6"
|
||||
integrity sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==
|
||||
dependencies:
|
||||
client-only "^0.0.1"
|
||||
|
||||
"@heroicons/react@^2.0.18":
|
||||
version "2.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.18.tgz#f80301907c243df03c7e9fd76c0286e95361f7c1"
|
||||
integrity sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==
|
||||
|
||||
"@jest/schemas@^29.6.3":
|
||||
version "29.6.3"
|
||||
resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
|
||||
@ -2628,6 +2645,11 @@ ansi-styles@^6.1.0:
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
|
||||
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
|
||||
|
||||
any-promise@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||
integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
|
||||
|
||||
anymatch@~3.1.2:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
|
||||
@ -2636,7 +2658,7 @@ anymatch@~3.1.2:
|
||||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
||||
arg@^5.0.0:
|
||||
arg@^5.0.0, arg@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
|
||||
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
|
||||
@ -2690,6 +2712,18 @@ autoprefixer@^10.4.12, autoprefixer@^10.4.7:
|
||||
picocolors "^1.0.0"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
autoprefixer@^10.4.16:
|
||||
version "10.4.16"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8"
|
||||
integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==
|
||||
dependencies:
|
||||
browserslist "^4.21.10"
|
||||
caniuse-lite "^1.0.30001538"
|
||||
fraction.js "^4.3.6"
|
||||
normalize-range "^0.1.2"
|
||||
picocolors "^1.0.0"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
axios@^0.25.0:
|
||||
version "0.25.0"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a"
|
||||
@ -2953,7 +2987,7 @@ camel-case@^4.1.2:
|
||||
pascal-case "^3.1.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
camelcase-css@2.0.1:
|
||||
camelcase-css@2.0.1, camelcase-css@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
|
||||
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
|
||||
@ -2983,6 +3017,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520:
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001527.tgz#813826554828245ccee776c850566dce12bdeaba"
|
||||
integrity sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==
|
||||
|
||||
caniuse-lite@^1.0.30001538:
|
||||
version "1.0.30001538"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz#9dbc6b9af1ff06b5eb12350c2012b3af56744f3f"
|
||||
integrity sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==
|
||||
|
||||
ccount@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
|
||||
@ -3111,6 +3150,11 @@ cli-table3@^0.6.2:
|
||||
optionalDependencies:
|
||||
"@colors/colors" "1.5.0"
|
||||
|
||||
client-only@^0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
|
||||
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
|
||||
|
||||
cliui@^7.0.2:
|
||||
version "7.0.4"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
|
||||
@ -3209,6 +3253,11 @@ commander@^2.20.0:
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||
|
||||
commander@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
||||
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
|
||||
|
||||
commander@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
|
||||
@ -3704,6 +3753,11 @@ detect-port@^1.3.0:
|
||||
address "^1.0.1"
|
||||
debug "4"
|
||||
|
||||
didyoumean@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
|
||||
integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
|
||||
|
||||
dir-glob@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
||||
@ -3711,6 +3765,11 @@ dir-glob@^3.0.1:
|
||||
dependencies:
|
||||
path-type "^4.0.0"
|
||||
|
||||
dlv@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
|
||||
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
|
||||
|
||||
dns-equal@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
|
||||
@ -4083,7 +4142,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
|
||||
fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0:
|
||||
fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
|
||||
integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
|
||||
@ -4264,7 +4323,7 @@ forwarded@0.2.0:
|
||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
|
||||
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
|
||||
|
||||
fraction.js@^4.2.0:
|
||||
fraction.js@^4.2.0, fraction.js@^4.3.6:
|
||||
version "4.3.6"
|
||||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d"
|
||||
integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==
|
||||
@ -4369,7 +4428,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
|
||||
dependencies:
|
||||
is-glob "^4.0.1"
|
||||
|
||||
glob-parent@^6.0.1:
|
||||
glob-parent@^6.0.1, glob-parent@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
|
||||
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
||||
@ -4381,6 +4440,18 @@ glob-to-regexp@^0.4.1:
|
||||
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
|
||||
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
|
||||
|
||||
glob@7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.0.0, glob@^7.0.5, glob@^7.1.3, glob@^7.1.6:
|
||||
version "7.2.3"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||
@ -5229,7 +5300,7 @@ leven@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
||||
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
|
||||
|
||||
lilconfig@^2.0.3:
|
||||
lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
|
||||
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
|
||||
@ -5615,6 +5686,15 @@ multicast-dns@^7.2.5:
|
||||
dns-packet "^5.2.2"
|
||||
thunky "^1.0.2"
|
||||
|
||||
mz@^2.7.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nanoid@^3.3.6:
|
||||
version "3.3.6"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
|
||||
@ -5769,11 +5849,16 @@ oas-validator@^5.0.8:
|
||||
should "^13.2.1"
|
||||
yaml "^1.10.0"
|
||||
|
||||
object-assign@^4.1.0, object-assign@^4.1.1:
|
||||
object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
|
||||
|
||||
object-hash@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
|
||||
integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
|
||||
|
||||
object-inspect@^1.9.0:
|
||||
version "1.12.3"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
|
||||
@ -6069,6 +6154,16 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
|
||||
|
||||
pirates@^4.0.1:
|
||||
version "4.0.6"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
pkg-dir@^4.1.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
|
||||
@ -6148,6 +6243,30 @@ postcss-discard-unused@^5.1.0:
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.5"
|
||||
|
||||
postcss-import@^15.1.0:
|
||||
version "15.1.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70"
|
||||
integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.0.0"
|
||||
read-cache "^1.0.0"
|
||||
resolve "^1.1.7"
|
||||
|
||||
postcss-js@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
|
||||
integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
|
||||
dependencies:
|
||||
camelcase-css "^2.0.1"
|
||||
|
||||
postcss-load-config@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd"
|
||||
integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==
|
||||
dependencies:
|
||||
lilconfig "^2.0.5"
|
||||
yaml "^2.1.1"
|
||||
|
||||
postcss-loader@^7.0.0:
|
||||
version "7.3.3"
|
||||
resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.3.tgz#6da03e71a918ef49df1bb4be4c80401df8e249dd"
|
||||
@ -6243,6 +6362,13 @@ postcss-modules-values@^4.0.0:
|
||||
dependencies:
|
||||
icss-utils "^5.0.0"
|
||||
|
||||
postcss-nested@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c"
|
||||
integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.11"
|
||||
|
||||
postcss-normalize-charset@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed"
|
||||
@ -6336,7 +6462,7 @@ postcss-reduce-transforms@^5.1.0:
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
|
||||
postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
|
||||
version "6.0.13"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b"
|
||||
integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
|
||||
@ -6366,7 +6492,7 @@ postcss-unique-selectors@^5.1.1:
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.5"
|
||||
|
||||
postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
|
||||
postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||
@ -6385,6 +6511,15 @@ postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21:
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
postcss@^8.4.23, postcss@^8.4.30:
|
||||
version "8.4.30"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7"
|
||||
integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==
|
||||
dependencies:
|
||||
nanoid "^3.3.6"
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
prepend-http@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
|
||||
@ -6718,6 +6853,13 @@ react@^17.0.2:
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.1"
|
||||
|
||||
read-cache@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
|
||||
integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
|
||||
dependencies:
|
||||
pify "^2.3.0"
|
||||
|
||||
readable-stream@^2.0.1, readable-stream@~2.3.6:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
|
||||
@ -7022,6 +7164,15 @@ resolve@^1.1.6, resolve@^1.14.2, resolve@^1.3.2:
|
||||
path-parse "^1.0.7"
|
||||
supports-preserve-symlinks-flag "^1.0.0"
|
||||
|
||||
resolve@^1.1.7, resolve@^1.22.2:
|
||||
version "1.22.6"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362"
|
||||
integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==
|
||||
dependencies:
|
||||
is-core-module "^2.13.0"
|
||||
path-parse "^1.0.7"
|
||||
supports-preserve-symlinks-flag "^1.0.0"
|
||||
|
||||
responselike@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
|
||||
@ -7618,6 +7769,19 @@ stylehacks@^5.1.1:
|
||||
browserslist "^4.21.4"
|
||||
postcss-selector-parser "^6.0.4"
|
||||
|
||||
sucrase@^3.32.0:
|
||||
version "3.34.0"
|
||||
resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f"
|
||||
integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping" "^0.3.2"
|
||||
commander "^4.0.0"
|
||||
glob "7.1.6"
|
||||
lines-and-columns "^1.1.6"
|
||||
mz "^2.7.0"
|
||||
pirates "^4.0.1"
|
||||
ts-interface-checker "^0.1.9"
|
||||
|
||||
supports-color@^5.3.0, supports-color@^5.5.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
@ -7679,6 +7843,34 @@ swagger2openapi@^7.0.6:
|
||||
yaml "^1.10.0"
|
||||
yargs "^17.0.1"
|
||||
|
||||
tailwindcss@^3.3.3:
|
||||
version "3.3.3"
|
||||
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf"
|
||||
integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==
|
||||
dependencies:
|
||||
"@alloc/quick-lru" "^5.2.0"
|
||||
arg "^5.0.2"
|
||||
chokidar "^3.5.3"
|
||||
didyoumean "^1.2.2"
|
||||
dlv "^1.1.3"
|
||||
fast-glob "^3.2.12"
|
||||
glob-parent "^6.0.2"
|
||||
is-glob "^4.0.3"
|
||||
jiti "^1.18.2"
|
||||
lilconfig "^2.1.0"
|
||||
micromatch "^4.0.5"
|
||||
normalize-path "^3.0.0"
|
||||
object-hash "^3.0.0"
|
||||
picocolors "^1.0.0"
|
||||
postcss "^8.4.23"
|
||||
postcss-import "^15.1.0"
|
||||
postcss-js "^4.0.1"
|
||||
postcss-load-config "^4.0.1"
|
||||
postcss-nested "^6.0.1"
|
||||
postcss-selector-parser "^6.0.11"
|
||||
resolve "^1.22.2"
|
||||
sucrase "^3.32.0"
|
||||
|
||||
tapable@^1.0.0:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
||||
@ -7715,6 +7907,20 @@ text-table@^0.2.0:
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
|
||||
|
||||
thenify-all@^1.0.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
|
||||
integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
|
||||
dependencies:
|
||||
thenify ">= 3.1.0 < 4"
|
||||
|
||||
"thenify@>= 3.1.0 < 4":
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
|
||||
integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
||||
through2@^2.0.1:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
|
||||
@ -7785,6 +7991,11 @@ trough@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
|
||||
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
|
||||
|
||||
ts-interface-checker@^0.1.9:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
||||
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
||||
|
||||
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
|
||||
@ -8402,6 +8613,11 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
||||
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
|
||||
|
||||
yaml@^2.1.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144"
|
||||
integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==
|
||||
|
||||
yargs-parser@^20.2.2:
|
||||
version "20.2.9"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
|
||||
|
||||