From d6ef3033940fceda7eb08a09d3924a3500cb6597 Mon Sep 17 00:00:00 2001 From: Itai Smith Date: Mon, 16 Dec 2024 13:55:00 -0800 Subject: [PATCH] rename tabs --- docs/docs.trychroma.com/README.md | 2 +- .../components/markdoc/tabbed-code-block.tsx | 2 +- .../markdoc/tabbed-use-case-code-block.tsx | 2 +- .../markdoc/{markdoc-tabs.tsx => tabs.tsx} | 12 ++---------- docs/docs.trychroma.com/markdoc/config.ts | 4 ++-- .../content/docs/overview/getting-started.md | 8 ++++---- .../markdoc/content/docs/overview/telemetry.md | 4 ++-- .../content/docs/run-chroma/client-server.md | 4 ++-- .../docs/run-chroma/persistent-client.md | 4 ++-- .../integrations/embedding-models/cohere.md | 4 ++-- .../embedding-models/google-gemini.md | 4 ++-- .../integrations/embedding-models/openai.md | 4 ++-- .../content/production/administration/auth.md | 8 ++++---- .../chroma-server/client-server-mode.md | 4 ++-- .../content/production/cloud-providers/aws.md | 4 ++-- .../production/cloud-providers/azure.md | 4 ++-- .../content/production/cloud-providers/gcp.md | 4 ++-- .../content/production/containers/docker.md | 8 ++++---- docs/docs.trychroma.com/public/favicon.ico | Bin 285478 -> 0 bytes 19 files changed, 39 insertions(+), 47 deletions(-) rename docs/docs.trychroma.com/components/markdoc/{markdoc-tabs.tsx => tabs.tsx} (82%) delete mode 100644 docs/docs.trychroma.com/public/favicon.ico diff --git a/docs/docs.trychroma.com/README.md b/docs/docs.trychroma.com/README.md index e8a6ac1d73d..846120bc35e 100644 --- a/docs/docs.trychroma.com/README.md +++ b/docs/docs.trychroma.com/README.md @@ -28,7 +28,7 @@ It also incldues [Shadcn](https://ui.shadcn.com/) with [Tailwind](https://tailwi - Dark/Light Mode - Responsive - Global and Local state management with localstorage persistence -- MarkdocTabs +- Tabs - Code styling with Prism - Toasts diff --git a/docs/docs.trychroma.com/components/markdoc/tabbed-code-block.tsx b/docs/docs.trychroma.com/components/markdoc/tabbed-code-block.tsx index 5a4c1119959..2aa58fa5586 100644 --- a/docs/docs.trychroma.com/components/markdoc/tabbed-code-block.tsx +++ b/docs/docs.trychroma.com/components/markdoc/tabbed-code-block.tsx @@ -4,7 +4,7 @@ import { TabsContent, TabsList } from "@/components/ui/tabs"; import { tabLabelStyle } from "@/components/markdoc/code-block-header"; import { capitalize, cn } from "@/lib/utils"; import CodeBlock from "@/components/markdoc/code-block"; -import { TabProps, TabsTrigger } from "@/components/markdoc/markdoc-tabs"; +import { TabProps, TabsTrigger } from "@/components/markdoc/tabs"; import CodeTabs from "@/components/markdoc/code-tab"; const TabbedCodeBlock: React.FC<{ diff --git a/docs/docs.trychroma.com/components/markdoc/tabbed-use-case-code-block.tsx b/docs/docs.trychroma.com/components/markdoc/tabbed-use-case-code-block.tsx index 87490ba6fdf..446d8b6486b 100644 --- a/docs/docs.trychroma.com/components/markdoc/tabbed-use-case-code-block.tsx +++ b/docs/docs.trychroma.com/components/markdoc/tabbed-use-case-code-block.tsx @@ -2,7 +2,7 @@ import React, { ReactElement } from "react"; import { tabLabelStyle } from "@/components/markdoc/code-block-header"; import { capitalize, cn } from "@/lib/utils"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; -import { TabProps } from "@/components/markdoc/markdoc-tabs"; +import { TabProps } from "@/components/markdoc/tabs"; import CodeBlock from "@/components/markdoc/code-block"; import CopyButton from "@/components/markdoc/copy-button"; diff --git a/docs/docs.trychroma.com/components/markdoc/markdoc-tabs.tsx b/docs/docs.trychroma.com/components/markdoc/tabs.tsx similarity index 82% rename from docs/docs.trychroma.com/components/markdoc/markdoc-tabs.tsx rename to docs/docs.trychroma.com/components/markdoc/tabs.tsx index 32d794c421c..e6d1809ece8 100644 --- a/docs/docs.trychroma.com/components/markdoc/markdoc-tabs.tsx +++ b/docs/docs.trychroma.com/components/markdoc/tabs.tsx @@ -13,13 +13,6 @@ import AppContext from "@/context/app-context"; import CodeBlock from "@/components/markdoc/code-block"; import { Playfair_Display } from "next/font/google"; -export const playfairDisplay = Playfair_Display({ - subsets: ["latin"], - display: "swap", - weight: "500", - variable: "--font-playfair-display", -}); - export interface TabProps { label: string; children: React.ReactElement<{ content: string; showHeader: boolean }>; @@ -49,7 +42,7 @@ const Tab: React.FC = ({ children }) => { return
{children}
; }; -export const MarkdocTabs: React.FC<{ children: ReactElement[] }> = ({ +export const Tabs: React.FC<{ children: ReactElement[] }> = ({ children, }) => { const { language } = useContext(AppContext); @@ -67,8 +60,7 @@ export const MarkdocTabs: React.FC<{ children: ReactElement[] }> = ({ value={tab.props.label} className={cn( tabLabelStyle, - playfairDisplay.className, - "text-sm tracking-normal dark:data-[state=active]:bg-transparent data-[state=active]:border-b data-[state=active]:text-gray-900 dark:data-[state=active]:text-gray-200 data-[state=active]:border-gray-900 dark:data-[state=active]:border-gray-200", + "text-sm font-mono tracking-normal dark:data-[state=active]:bg-transparent data-[state=active]:border-b data-[state=active]:text-gray-900 dark:data-[state=active]:text-gray-200 data-[state=active]:border-gray-900 dark:data-[state=active]:border-gray-200", )} > {capitalize(tab.props.label)} diff --git a/docs/docs.trychroma.com/markdoc/config.ts b/docs/docs.trychroma.com/markdoc/config.ts index acc0398b83a..7eddc716ad8 100644 --- a/docs/docs.trychroma.com/markdoc/config.ts +++ b/docs/docs.trychroma.com/markdoc/config.ts @@ -3,7 +3,7 @@ import React from "react"; import InlineCode from "@/components/markdoc/inline-code"; import CodeBlock from "@/components/markdoc/code-block"; import TabbedUseCaseCodeBlock from "@/components/markdoc/tabbed-use-case-code-block"; -import Tab, { MarkdocTabs } from "@/components/markdoc/markdoc-tabs"; +import Tab, { Tabs } from "@/components/markdoc/tabs"; import { Table, TableHeader, @@ -117,7 +117,7 @@ const markdocConfig: MarkDocConfig = { TabbedCodeBlock, TabbedUseCaseCodeBlock, Tab, - Tabs: MarkdocTabs, + Tabs: Tabs, Table, TableHeader, TableBody, diff --git a/docs/docs.trychroma.com/markdoc/content/docs/overview/getting-started.md b/docs/docs.trychroma.com/markdoc/content/docs/overview/getting-started.md index 5ff535a6598..240e31bd185 100644 --- a/docs/docs.trychroma.com/markdoc/content/docs/overview/getting-started.md +++ b/docs/docs.trychroma.com/markdoc/content/docs/overview/getting-started.md @@ -13,7 +13,7 @@ Chroma is an AI-native open-source vector database. It comes with everything you ### 1. Install -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -55,11 +55,11 @@ pip install chromadb {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} ### 2. Create a Chroma Client -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} ```python @@ -110,7 +110,7 @@ const client = new ChromaClient(); {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} ### 3. Create a collection diff --git a/docs/docs.trychroma.com/markdoc/content/docs/overview/telemetry.md b/docs/docs.trychroma.com/markdoc/content/docs/overview/telemetry.md index c69cfae9d53..b7f7e12d1b3 100644 --- a/docs/docs.trychroma.com/markdoc/content/docs/overview/telemetry.md +++ b/docs/docs.trychroma.com/markdoc/content/docs/overview/telemetry.md @@ -12,7 +12,7 @@ If you prefer to opt out of telemetry, you can do this in two ways. #### In Client Code -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -33,7 +33,7 @@ Disable telemetry on you Chroma server (see next section). {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} #### In Chroma's Backend Using Environment Variables diff --git a/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/client-server.md b/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/client-server.md index b13d55aaff3..a7bb3d77738 100644 --- a/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/client-server.md +++ b/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/client-server.md @@ -8,7 +8,7 @@ To start the Chroma server, run the following command: chroma run --path /db_path ``` -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -56,4 +56,4 @@ const client = new ChromaClient(); {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} diff --git a/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/persistent-client.md b/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/persistent-client.md index 109b021c248..443b717a406 100644 --- a/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/persistent-client.md +++ b/docs/docs.trychroma.com/markdoc/content/docs/run-chroma/persistent-client.md @@ -1,6 +1,6 @@ # Persistent Client -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -55,7 +55,7 @@ See [Running Chroma in client-server mode](../client-server-mode) for more. {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} The client object has a few useful convenience methods. diff --git a/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/cohere.md b/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/cohere.md index f177d674c2f..2adbf9fa718 100644 --- a/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/cohere.md +++ b/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/cohere.md @@ -7,7 +7,7 @@ name: 'Cohere' Chroma also provides a convenient wrapper around Cohere's embedding API. This embedding function runs remotely on Cohere’s servers, and requires an API key. You can get an API key by signing up for an account at [Cohere](https://dashboard.cohere.ai/welcome/register). -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} This embedding function relies on the `cohere` python package, which you can install with `pip install cohere`. @@ -37,7 +37,7 @@ const collectionGet = await client.getCollection({name:"name", embeddingFunction {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} You can pass in an optional `model_name` argument, which lets you choose which Cohere embeddings model to use. By default, Chroma uses `large` model. You can see the available models under `Get embeddings` section [here](https://docs.cohere.ai/reference/embed). diff --git a/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/google-gemini.md b/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/google-gemini.md index da73103ab89..68fda099833 100644 --- a/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/google-gemini.md +++ b/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/google-gemini.md @@ -9,7 +9,7 @@ Chroma provides a convenient wrapper around Google's Generative AI embedding API You can get an API key by signing up for an account at [Google MakerSuite](https://makersuite.google.com/). -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -64,4 +64,4 @@ For more info - please visit the [official Google JS docs](https://ai.google.dev {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} diff --git a/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/openai.md b/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/openai.md index 183d0e618af..e119af989ac 100644 --- a/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/openai.md +++ b/docs/docs.trychroma.com/markdoc/content/integrations/embedding-models/openai.md @@ -17,7 +17,7 @@ The following OpenAI Embedding Models are supported: Visit OpenAI Embeddings [documentation](https://platform.openai.com/docs/guides/embeddings) for more information. {% /Banner %} -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -75,4 +75,4 @@ collection = await client.getCollection({ {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} diff --git a/docs/docs.trychroma.com/markdoc/content/production/administration/auth.md b/docs/docs.trychroma.com/markdoc/content/production/administration/auth.md index 00238e78163..07d1b31ab2d 100644 --- a/docs/docs.trychroma.com/markdoc/content/production/administration/auth.md +++ b/docs/docs.trychroma.com/markdoc/content/production/administration/auth.md @@ -66,7 +66,7 @@ chroma run --path #### Client Set-Up -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -108,7 +108,7 @@ chromaClient.heartbeat() {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} We recommend setting the environment variable `CHROMA_CLIENT_AUTH_CREDENTIALS` instead of specifying the credentials in code. @@ -156,7 +156,7 @@ export CHROMA_SERVER_AUTHZ_PROVIDER="chromadb.auth.simple_rbac_authz.SimpleRBACA #### Client Set-Up -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -204,6 +204,6 @@ chromaClient.heartbeat() ``` {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} We recommend setting the environment variable `CHROMA_CLIENT_AUTH_CREDENTIALS` instead of specifying the token in code. Similarly, you can read the value of `CHROMA_AUTH_TOKEN_TRANSPORT_HEADER` in the client construction. \ No newline at end of file diff --git a/docs/docs.trychroma.com/markdoc/content/production/chroma-server/client-server-mode.md b/docs/docs.trychroma.com/markdoc/content/production/chroma-server/client-server-mode.md index 0d2795faa01..f4bab933f81 100644 --- a/docs/docs.trychroma.com/markdoc/content/production/chroma-server/client-server-mode.md +++ b/docs/docs.trychroma.com/markdoc/content/production/chroma-server/client-server-mode.md @@ -10,7 +10,7 @@ You can quickly experiment locally with Chroma in client/server mode by using ou chroma run --path /db_path ``` -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -57,4 +57,4 @@ const client = new ChromaClient(); {% /Tab %} -{% /MarkdocTabs %} \ No newline at end of file +{% /Tabs %} \ No newline at end of file diff --git a/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/aws.md b/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/aws.md index b6ba86d550b..33ba16d1109 100644 --- a/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/aws.md +++ b/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/aws.md @@ -230,7 +230,7 @@ Add the `CHROMA_CLIENT_AUTH_CREDENTIALS` environment variable to your local envi export CHROMA_CLIENT_AUTH_CREDENTIALS="test-token" ``` -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -283,7 +283,7 @@ chromaClient.heartbeat() {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} ## Observability with AWS diff --git a/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/azure.md b/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/azure.md index 16c6665aff5..4d9bc766ffc 100644 --- a/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/azure.md +++ b/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/azure.md @@ -189,7 +189,7 @@ Add the `CHROMA_CLIENT_AUTH_CREDENTIALS` environment variable to your local envi export CHROMA_CLIENT_AUTH_CREDENTIALS="test-token" ``` -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -242,7 +242,7 @@ chromaClient.heartbeat() {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} ## Observability with Azure diff --git a/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/gcp.md b/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/gcp.md index 70832936c52..92cbe226b0f 100644 --- a/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/gcp.md +++ b/docs/docs.trychroma.com/markdoc/content/production/cloud-providers/gcp.md @@ -216,7 +216,7 @@ Add the `CHROMA_CLIENT_AUTH_CREDENTIALS` environment variable to your local envi export CHROMA_CLIENT_AUTH_CREDENTIALS="test-token" ``` -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -269,7 +269,7 @@ chromaClient.heartbeat() {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} ## Observability with GCP diff --git a/docs/docs.trychroma.com/markdoc/content/production/containers/docker.md b/docs/docs.trychroma.com/markdoc/content/production/containers/docker.md index ed3b657674b..632f7c614fd 100644 --- a/docs/docs.trychroma.com/markdoc/content/production/containers/docker.md +++ b/docs/docs.trychroma.com/markdoc/content/production/containers/docker.md @@ -118,7 +118,7 @@ In your client environment, set the `CHROMA_CLIENT_AUTH_CREDENTIALS` variable to export CHROMA_CLIENT_AUTH_CREDENTIALS="admin:admin" ``` -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -170,7 +170,7 @@ chromaClient.heartbeat() {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} ### Static API Token Authentication @@ -222,7 +222,7 @@ docker run --env-file ./.chroma_env -v :/chroma/ #### Client Set-Up -{% MarkdocTabs %} +{% Tabs %} {% Tab label="python" %} @@ -281,7 +281,7 @@ chromaClient.heartbeat() {% /Tab %} -{% /MarkdocTabs %} +{% /Tabs %} ## Observability with Docker diff --git a/docs/docs.trychroma.com/public/favicon.ico b/docs/docs.trychroma.com/public/favicon.ico deleted file mode 100644 index 53ab6af74e73c5529223dc706f37c1036cf6f7bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285478 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 X@2x%qeFpjr^cm