import { LogoConfig, NavConfig, Sidebar, SidebarSections } from "@/types/docs";
import { InstillAppType, InstillAppVersion } from "@/types/instill";
import {
DiscordIcon,
GitHubIcon,
Logos,
Icons,
} from "@instill-ai/design-system";
import { LATEST_VERSIONS } from "./version.mjs";
const SITE = {
title: "Documentation",
description: "Your website description.",
defaultLanguage: "en_US",
};
/**
*
* ### About section.link
* - If the section has link props, it will has its own hyperlink to target page, which is useful to overview page.
* - If you have setup the section link, the section will automatically be un-collapsable. And we will hide the collapsable button. We suggest that you manually set collapsable to false if the section has its own link.
*
*/
export const getSections = (): SidebarSections[] => {
return [
{
text: "common:sidebarSections.getStarted",
items: [],
appType: "core",
versions: [],
isHeader: true,
},
{
text: "common:sidebarSections.welcome",
link: `/docs/welcome`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.quickstart",
link: `/docs/quickstart`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.faq",
link: `/docs/faq`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.license",
link: `/docs/license`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.roadmap",
link: `/docs/roadmap`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.instillCloud",
items: [],
appType: "core",
versions: [],
isHeader: true,
},
{
text: "common:sidebarSections.introduction",
link: `/docs/cloud/introduction`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.instillCredit",
link: `/docs/cloud/credit`,
collapsible: false,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.instillHub",
link: `/docs/cloud/hub`,
collapsible: false,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.instillCore",
items: [],
appType: "core",
versions: [],
isHeader: true,
},
{
text: "common:sidebarSections.introduction",
link: `/docs/core/introduction`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.deployment",
link: `/docs/core/deployment`,
collapsible: true,
items: [
{
text: "common:sidebarSections.cli",
link: `/docs/core/deployment/cli`,
},
{
text: "common:sidebarSections.dockerCompose",
link: `/docs/core/deployment/docker-compose`,
},
{
text: "common:sidebarSections.kubernetesUsingHelm",
link: `/docs/core/deployment/kubernetes-using-helm`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.configuration",
link: `/docs/core/configuration`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.contributing",
link: `/docs/core/contributing`,
collapsible: true,
items: [
{
text: "common:sidebarSections.development",
link: `/docs/core/contributing/setup-local-development`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.instillVDP",
items: [],
appType: "core",
versions: [],
isHeader: true,
},
{
text: "common:sidebarSections.introduction",
link: `/docs/vdp/introduction`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.createPipeline",
link: `/docs/vdp/create`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.runPipeline",
link: `/docs/vdp/run`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.releasePipeline",
link: `/docs/vdp/release`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.sharePipeline",
link: `/docs/vdp/share`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.secret",
link: `/docs/vdp/secret`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.instillFormat",
link: `/docs/vdp/instill-format`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.instillComponent",
items: [],
appType: "core",
versions: [],
isHeader: true,
},
{
text: "common:sidebarSections.introduction",
link: `/docs/component/introduction`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.genericComponent",
link: `/docs/component/generic`,
collapsible: true,
items: [
{
text: "common:sidebarSections.iterator",
link: `/docs/component/generics/iterator`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.aiComponent",
link: `/docs/component/ai`,
collapsible: true,
items: [
{
text: "common:sidebarSections.instill",
link: `/docs/component/ai/instill`,
},
{
text: "common:sidebarSections.archetypeAI",
link: `/docs/component/ai/archetypeai`,
},
{
text: "common:sidebarSections.openAI",
link: `/docs/component/ai/openai`,
},
{
text: "common:sidebarSections.stabilityAI",
link: `/docs/component/ai/stabilityai`,
},
{
text: "common:sidebarSections.huggingFace",
link: `/docs/component/ai/huggingface`,
},
{
text: "common:sidebarSections.anthropic",
link: `/docs/component/ai/anthropic`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.dataComponent",
link: `/docs/component/data`,
collapsible: true,
items: [
{
text: "common:sidebarSections.bigquery",
link: `/docs/component/data/bigquery`,
},
{
text: "common:sidebarSections.gcs",
link: `/docs/component/data/googlecloudstorage`,
},
{
text: "common:sidebarSections.pinecone",
link: `/docs/component/data/pinecone`,
},
{
text: "common:sidebarSections.redis",
link: `/docs/component/data/redis`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.applicationComponent",
link: `/docs/component/application`,
collapsible: true,
items: [
{
text: "common:sidebarSections.numbersProtocol",
link: `/docs/component/application/numbers`,
},
{
text: "common:sidebarSections.slack",
link: `/docs/component/application/slack`,
},
{
text: "common:sidebarSections.googlesearch",
link: `/docs/component/application/googlesearch`,
},
{
text: "common:sidebarSections.rest",
link: `/docs/component/application/restapi`,
},
{
text: "common:sidebarSections.website",
link: `/docs/component/application/website`,
},
{
text: "common:sidebarSections.email",
link: `/docs/component/application/email`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.operator",
link: `/docs/component/operator`,
collapsible: true,
items: [
{
text: "common:sidebarSections.base64",
link: `/docs/component/operator/base64`,
},
{
text: "common:sidebarSections.json",
link: `/docs/component/operator/json`,
},
{
text: "common:sidebarSections.text",
link: `/docs/component/operator/text`,
},
{
text: "common:sidebarSections.image",
link: `/docs/component/operator/image`,
},
{
text: "common:sidebarSections.document",
link: `/docs/component/operator/document`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.instillModel",
items: [],
appType: "core",
versions: [],
isHeader: true,
},
{
text: "common:sidebarSections.introduction",
link: `/docs/model/introduction`,
items: [],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.createModel",
link: `/docs/model/create`,
collapsible: true,
items: [
{
text: "common:sidebarSections.namespaceModel",
link: `/docs/model/create/namespace`,
},
{
text: "common:sidebarSections.prepareModel",
link: `/docs/model/create/prepare`,
},
{
text: "common:sidebarSections.buildModel",
link: `/docs/model/create/build`,
},
{
text: "common:sidebarSections.pushModel",
link: `/docs/model/create/push`,
},
],
appType: "core",
versions: [],
},
{
text: "common:sidebarSections.modelInference",
link: `/docs/model/inference`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.modelState",
link: `/docs/model/state`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.aiTasks",
link: `/docs/model/ai-task`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.instillSDK",
items: [],
appType: "core",
versions: ["latest"],
isHeader: true,
},
{
text: "common:sidebarSections.pythonSDK",
link: `/docs/sdk/python`,
items: [],
appType: "core",
versions: ["latest"],
},
{
text: "common:sidebarSections.typescriptSDK",
link: `/docs/sdk/typescript`,
items: [],
appType: "core",
versions: ["latest"],
},
];
};
// Parse logo a/c to appType
export function getLogoConfig(): LogoConfig {
return {
element: ,
href: "/",
};
}
// Parse menu items a/c to appType
export function getSidebarSections() {
return getSections();
}
// Construct the sidebar items
export function getSideBar(): Sidebar {
return {
leftSidebar: {
logo: getLogoConfig(),
sections: getSidebarSections(),
},
rightSidebar: {
tableOfContentHeaders: ["h1", "h2", "h3"],
},
};
}
// Construct the navbar items
export function getNavbar(
appType: InstillAppType,
appVersion: InstillAppVersion,
isDark: boolean
): NavConfig {
return {
logo: getLogoConfig(),
title: appType,
items: [
{
key: "docs-nav-item-border-api-reference",
href: "https://openapi.instill.tech",
className: "api-reference-link",
position: "left",
label: "API Reference",
appType: null,
},
{
key: "docs-nav-dropdown-menu",
href: "/",
className: "",
position: "right",
label: "",
iconElement: (
),
appType: null,
items: [
{
key: "docs-nav-dropdown-resources",
position: "right",
border: true,
label: "common:navbar.resources",
appType: null,
},
{
key: "docs-nav-dropdown-product-website",
href: "/",
className: "",
position: "right",
label: "common:navbar.productWebsite",
iconElement: (
),
appType: null,
},
{
key: "docs-nav-dropdown-tutorials",
href: "/tutorials",
className: "",
position: "right",
label: "common:navbar.tutorials",
iconElement: (
),
appType: null,
},
{
key: "docs-nav-dropdown-blog",
href: "/blog",
className: "",
position: "right",
label: "common:navbar.blog",
iconElement: (
),
appType: null,
},
{
key: "docs-nav-dropdown-newsletter",
href: "/newsletter",
className: "",
position: "right",
label: "common:navbar.newsletter",
iconElement: (
),
appType: null,
},
{
key: "docs-nav-dropdown-help",
position: "right",
border: false,
label: "common:navbar.help",
appType: null,
},
{
key: "docs-nav-dropdown-help",
position: "right",
border: true,
label: "common:navbar.help",
iconElement: (
),
appType: null,
},
{
key: "docs-nav-dropdown-discord",
href: process.env.NEXT_PUBLIC_DISCORD_INVITATION_LINK || "/",
className: "",
position: "right",
label: "common:navbar.discord",
iconElement: (
),
appType: null,
},
{
key: "docs-nav-dropdown-github-discussions",
href: "https://github.com/instill-ai/instill-core/discussions",
className: "",
position: "right",
label: "common:navbar.gitHubDiscussions",
iconElement: (
),
appType: null,
},
{
key: "docs-nav-dropdown-github-issues",
href: "https://github.com/instill-ai/instill-core/issues",
className: "",
position: "right",
label: "common:navbar.gitHubIssues",
iconElement: (
),
appType: null,
},
],
},
{
key: "docs-nav-item-border-discord-link",
href: process.env.NEXT_PUBLIC_DISCORD_INVITATION_LINK || "/",
className: "discord-social-link",
iconElement: (
),
position: "right",
label: "",
appType: null,
},
{
key: "docs-nav-item--github-link",
href: "https://github.com/instill-ai/instill-core",
className: "github-social-link",
iconElement: (
),
position: "right",
label: "",
appType: null,
},
{
key: "docs-nav-item--twitter-link",
href: "https://twitter.com/instill_tech",
className: "twitter-social-link",
iconElement: isDark ? (
) : (
),
position: "right",
label: "",
appType: null,
},
{
key: "docs-nav-item-1",
position: "right",
border: true,
label: "",
appType: null,
},
{
key: "docs-nav-dropdown-version-menu",
href: "/docs/welcome",
className: "navbar-dropdown-menu",
position: "right",
label: `${appVersion} ${
appVersion === LATEST_VERSIONS[appType] ? "(latest)" : ""
}`,
appType: null,
},
{
key: "docs-nav-item-2",
position: "right",
border: true,
label: "",
appType: "core",
},
],
};
}
// main config function
export function docsConfig(
appType: InstillAppType,
appVersion: InstillAppVersion,
isDark = false
) {
return {
site: SITE,
nav: getNavbar(appType, appVersion, isDark),
sidebar: getSideBar(),
};
}
export const BlogCategories = [
"Home",
"Insights",
"Story",
"Events",
"Product Updates",
] as const;
export type BlogCategory = (typeof BlogCategories)[number];