This commit is contained in:
Timothy Jaeryang Baek
2026-04-02 05:44:14 -05:00
parent ce58839309
commit 9e5ab49985
18 changed files with 12 additions and 209 deletions
+10 -10
View File
@@ -35,16 +35,6 @@ Then open [http://localhost:3000](http://localhost:3000).
For GPU support, Docker Compose, and more → [Full Docker guide](/getting-started/quick-start)
</TabItem>
<TabItem value="uv" label="uv (Python)">
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
DATA_DIR=~/.open-webui uvx --python 3.11 open-webui@latest serve
```
Then open [http://localhost:8080](http://localhost:8080).
</TabItem>
<TabItem value="pip" label="pip">
@@ -53,6 +43,16 @@ pip install open-webui
open-webui serve
```
Then open [http://localhost:8080](http://localhost:8080).
</TabItem>
<TabItem value="uv" label="uv">
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
DATA_DIR=~/.open-webui uvx --python 3.11 open-webui@latest serve
```
Then open [http://localhost:8080](http://localhost:8080).
</TabItem>
-28
View File
@@ -1,28 +0,0 @@
import { SidebarBanner } from "@site/src/components/Sponsors/SidebarBanner";
import { useEffect, useState } from "react";
export const SidebarBanners = () => {
const items = [
{
imgSrc: "/sponsors/banners/openwebui-banner.png",
mobileImgSrc: "/sponsors/banners/openwebui-banner-mobile.png",
url: "https://careers.openwebui.com",
name: "Open WebUI",
description: "",
},
];
// Randomly select an item to display
const [selectedItemIdx, setSelectedItemIdx] = useState(
Math.floor(Math.random() * items.length)
);
useEffect(() => {
// After mounting update every 5 seconds
setInterval(() => {
setSelectedItemIdx(Math.floor(Math.random() * items.length));
}, 10000); // 10000 ms = 10 seconds
}, []);
return <SidebarBanner item={items[selectedItemIdx]} />;
};
-26
View File
@@ -1,26 +0,0 @@
import { marked } from "marked";
export const SidebarBanner = ({ item }) => {
return (
<div className="pb-4">
<div className="mb-2">
<div className="mb-1 text-xs font-medium text-gray-600 underline dark:text-gray-300">
Sponsored by {item.name}
</div>
<a href={item.url} target="_blank">
<img
className="block h-12 w-full rounded-xl object-cover"
loading="lazy"
alt={item.name}
src={item?.mobileImgSrc || item.imgSrc}
/>
</a>
<div className="mt-1 line-clamp-2 text-right text-xs font-medium text-gray-600 dark:text-gray-300">
<div dangerouslySetInnerHTML={{ __html: marked(item.description) }} />
</div>
</div>
</div>
);
};
-62
View File
@@ -1,62 +0,0 @@
import { marked } from "marked";
export const TopBanner = ({
item,
bannerClassName = "h-18",
label = true,
description = true,
mobile = true,
}) => {
return (
<div className="w-full">
<div className="flex w-full flex-col justify-center">
{label && (
<div className="mb-1 text-xs font-semibold text-gray-600 underline dark:text-gray-300">
Sponsored by {item.name}
</div>
)}
<a
href={item.url}
target="_blank"
className="flex w-full items-center justify-center"
>
{mobile ? (
<>
<img
className={`hidden w-full rounded-xl object-cover md:block ${bannerClassName}`}
loading="lazy"
alt={item.name}
src={item.imgSrc}
/>
<img
className={`block w-full rounded-xl object-cover md:hidden ${bannerClassName}`}
loading="lazy"
alt={item.name}
src={item?.mobileImgSrc || item.imgSrc}
/>
</>
) : (
<>
<img
className={`w-full rounded-xl object-cover ${bannerClassName}`}
loading="lazy"
alt={item.name}
src={item.imgSrc}
/>
</>
)}
</a>
{description && (
<div className="mt-1 line-clamp-1 text-right text-xs font-semibold text-gray-600 dark:text-gray-300">
<div
dangerouslySetInnerHTML={{ __html: marked(item.description) }}
/>
</div>
)}
</div>
</div>
);
};
+1 -2
View File
@@ -1,5 +1,4 @@
import { TopBanner } from "@site/src/components/Sponsors/TopBanner";
import { useEffect, useState } from "react";
import { useState } from "react";
export const Testimonals = ({
bannerClassName = "h-18",
-50
View File
@@ -1,50 +0,0 @@
import { TopBanner } from "@site/src/components/Sponsors/TopBanner";
import { useEffect, useState } from "react";
export const TopBanners = ({
bannerClassName = "h-18",
label = true,
description = true,
mobile = true,
}) => {
const items = [
{
imgSrc: "/sponsors/banners/openwebui-banner.png",
mobileImgSrc: "/sponsors/banners/openwebui-banner-mobile.png",
url: "https://docs.openwebui.com/enterprise",
name: "Open WebUI",
description:
"Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.",
},
{
imgSrc: "/sponsors/banners/openwebui-banner.png",
mobileImgSrc: "/sponsors/banners/openwebui-banner-mobile.png",
url: "https://careers.openwebui.com",
name: "Open WebUI",
description:
"**We are hiring!** Shape the way humanity engages with _intelligence_.",
},
];
// Randomly select an item to display
const [selectedItemIdx, setSelectedItemIdx] = useState(
Math.floor(Math.random() * items.length)
);
useEffect(() => {
// After mounting update every 5 seconds
setInterval(() => {
setSelectedItemIdx(Math.floor(Math.random() * items.length));
}, 10000); // 10000 ms = 10 seconds
}, []);
return (
<TopBanner
bannerClassName={bannerClassName}
item={items[selectedItemIdx]}
label={label}
description={description}
mobile={mobile}
/>
);
};
-16
View File
@@ -686,18 +686,6 @@ a.footer__link-item:hover {
filter: invert(1);
}
.hero--banner {
padding: 8px !important;
}
.hero--banner,
.hero--banner a {
margin: 0;
color: #fff;
background-color: #111;
width: 100%;
font-size: 13px;
}
@media screen and (width >=997px) {
.hero--container {
@@ -733,10 +721,6 @@ a.footer__link-item:hover {
margin-bottom: 10px;
}
.hero--banner a {
font-size: 0.8em;
}
.homepage-svg svg {
max-width: 120px;
margin-left: 15px;
+1 -15
View File
@@ -3,22 +3,8 @@ import DocSidebar from "@theme-original/DocSidebar";
import type DocSidebarType from "@theme/DocSidebar";
import type { WrapperProps } from "@docusaurus/types";
import { SidebarBanners } from "@site/src/components/SidebarBanners";
type Props = WrapperProps<typeof DocSidebarType>;
export default function DocSidebarWrapper(props: Props): JSX.Element {
return (
<>
<div className="flex h-full flex-col overflow-auto">
<div className="h-fit">
<DocSidebar {...props} />
</div>
<div className="mt-3 px-5">
<SidebarBanners />
</div>
</div>
</>
);
return <DocSidebar {...props} />;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 625 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB