Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
8965b30
Add docs
yuriipalam Dec 5, 2025
128cc18
WIP: convert docs
yuriipalam Dec 9, 2025
991306c
Update UI
yuriipalam Dec 9, 2025
28df5d0
Remove redundant file
yuriipalam Dec 9, 2025
44b0b0e
Finish convertion from adoc
yuriipalam Dec 10, 2025
c38761a
WIP: Fix pages
yuriipalam Dec 10, 2025
4e9272a
Remove adoc files
yuriipalam Dec 10, 2025
f7e5311
WIP: Docs
yuriipalam Dec 11, 2025
9073783
WIP
yuriipalam Dec 11, 2025
94f81d3
WIP
yuriipalam Dec 12, 2025
59bbbc5
WIP
yuriipalam Dec 12, 2025
176a10f
WIP
yuriipalam Dec 12, 2025
8729379
WIP
yuriipalam Dec 15, 2025
f635e10
WIP
yuriipalam Dec 16, 2025
d0ecfd2
WIP
yuriipalam Dec 16, 2025
c093fc1
WIP
yuriipalam Dec 16, 2025
9adba6d
WIP
yuriipalam Dec 16, 2025
5d4c54e
WIP
yuriipalam Dec 16, 2025
3d071ff
WIP
yuriipalam Dec 16, 2025
74d3d50
WIP
yuriipalam Dec 16, 2025
78a2b22
WIP
yuriipalam Dec 17, 2025
73b140d
WIP
yuriipalam Dec 18, 2025
7a9f8cf
WIP
yuriipalam Dec 18, 2025
bf55063
WIP
yuriipalam Dec 18, 2025
eb47986
WIP
yuriipalam Dec 19, 2025
98f308a
WIP
yuriipalam Dec 19, 2025
2d368a6
WIP
yuriipalam Dec 19, 2025
22878b4
MVP
yuriipalam Dec 19, 2025
8af5142
WIP
yuriipalam Dec 19, 2025
23ad39c
WIP
yuriipalam Dec 19, 2025
0ab00e7
WIP
yuriipalam Jan 5, 2026
7292db0
WIP
yuriipalam Jan 8, 2026
0e4f11f
WIP
yuriipalam Jan 8, 2026
ce5763a
WIP
yuriipalam Jan 8, 2026
8f589c6
WIP
yuriipalam Jan 8, 2026
95de7a6
WIP
yuriipalam Jan 8, 2026
66c1594
WIP
yuriipalam Jan 8, 2026
2182f4c
WIP
yuriipalam Jan 8, 2026
7a385a8
WIP
yuriipalam Jan 8, 2026
ba6d839
WIP
yuriipalam Jan 8, 2026
449d2f4
WIP
yuriipalam Jan 8, 2026
10d81ca
WIP
yuriipalam Jan 8, 2026
cdfe776
WIP: Implement search
yuriipalam Jan 9, 2026
f9007ef
Add table of content for groupped routes
yuriipalam Jan 9, 2026
bc22464
Update title
yuriipalam Jan 9, 2026
342f7bf
WIP
yuriipalam Jan 9, 2026
9f226ac
WIP
yuriipalam Jan 9, 2026
d2a7ef6
WIP: Single page
yuriipalam Jan 9, 2026
93cc34b
WIP: ensure all headers are unique
yuriipalam Jan 12, 2026
79a9070
WIP
yuriipalam Jan 12, 2026
7a83016
WIP
yuriipalam Jan 13, 2026
153089a
WIP
yuriipalam Jan 13, 2026
35069ab
WIP
yuriipalam Jan 13, 2026
175af54
WIP
yuriipalam Jan 14, 2026
44e968b
WIP
yuriipalam Jan 14, 2026
a46e9d0
WIP
yuriipalam Jan 14, 2026
0753aa0
WIP
yuriipalam Jan 14, 2026
7c512b6
WIP
yuriipalam Jan 14, 2026
74bc490
WIP
yuriipalam Jan 14, 2026
0feef8e
WIP
yuriipalam Jan 14, 2026
cf9bde2
WIP
yuriipalam Jan 14, 2026
8184edb
WIP
yuriipalam Jan 14, 2026
bbdaf25
WIP
yuriipalam Jan 14, 2026
cb45a51
WIP
yuriipalam Jan 15, 2026
dacc5f9
WIP: Search
yuriipalam Jan 15, 2026
c4d8baa
WIP
yuriipalam Jan 15, 2026
effd94f
WIP
yuriipalam Jan 15, 2026
7d1581d
WIP
yuriipalam Jan 15, 2026
87c963c
WIP
yuriipalam Jan 15, 2026
db47204
WIP
yuriipalam Jan 15, 2026
c3a8392
WIP
yuriipalam Jan 19, 2026
46723b7
WIP
yuriipalam Jan 20, 2026
10598e4
WIP
yuriipalam Jan 20, 2026
f2f8f07
WIP
yuriipalam Jan 20, 2026
7df03d8
WIP: Improve search
yuriipalam Jan 20, 2026
f49e4c5
Add missing images
yuriipalam Jan 20, 2026
db2a10d
Fix scroll bug
yuriipalam Jan 21, 2026
f85d325
WIP
yuriipalam Jan 21, 2026
8b8959f
WIP
yuriipalam Jan 21, 2026
3536480
Fix formatting
yuriipalam Jan 21, 2026
c18dbd7
Add basic e2e tests
yuriipalam Jan 22, 2026
8e210ec
Add tests
yuriipalam Jan 22, 2026
99cfa2f
Fix tests issue
yuriipalam Jan 22, 2026
a7c3c71
Remove `src` directory
yuriipalam Jan 22, 2026
c97aef7
Remove "last edited"
yuriipalam Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
45 changes: 0 additions & 45 deletions README.md

This file was deleted.

7 changes: 7 additions & 0 deletions hbase-website/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,10 @@ lerna-debug.log*
# Generated files
/app/pages/team/developers.json

# Playwright
node_modules/
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
/playwright/.auth/
21 changes: 21 additions & 0 deletions hbase-website/.source/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/// <reference types="vite/client" />
import { fromConfig } from 'fumadocs-mdx/runtime/vite';
import type * as Config from '../source.config';

export const create = fromConfig<typeof Config>();

export const docs = {
doc: create.doc("docs", "app/pages/_docs/docs/_mdx", import.meta.glob(["./**/*.mdx"], {
"query": {
"collection": "docs"
},
"base": "./../app/pages/_docs/docs/_mdx"
})),
meta: create.meta("docs", "app/pages/_docs/docs/_mdx", import.meta.glob(["./**/*.{json,yaml}"], {
"import": "default",
"base": "./../app/pages/_docs/docs/_mdx",
"query": {
"collection": "docs"
}
}))
};
8 changes: 8 additions & 0 deletions hbase-website/.vite/deps/_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"hash": "c3d4a621",
"configHash": "fe8bf0bb",
"lockfileHash": "f94e92f2",
"browserHash": "0081a6ff",
"optimized": {},
"chunks": {}
}
3 changes: 3 additions & 0 deletions hbase-website/.vite/deps/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"type": "module"
}
44 changes: 14 additions & 30 deletions hbase-website/app/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@

@import "tailwindcss";
@import "tw-animate-css";
@import "highlight.js/styles/github.css";
@import 'fumadocs-ui/css/shadcn.css';
@import 'fumadocs-ui/css/preset.css';

@plugin "@tailwindcss/typography" {
className: prose-original;
}

@theme {
}
Expand Down Expand Up @@ -179,33 +184,12 @@
}
}

/* Code syntax highlighting for dark mode */
.dark pre code.hljs {
background: oklch(0.2 0 0);
color: oklch(0.85 0 0);
}

.dark .hljs-comment {
color: oklch(0.55 0 0);
}

.dark .hljs-keyword {
color: oklch(0.75 0.12 340);
}

.dark .hljs-string {
color: oklch(0.75 0.1 140);
}

.dark .hljs-number {
color: oklch(0.75 0.1 100);
}

.dark .hljs-title {
color: oklch(0.75 0.12 260);
}

.dark .hljs-name,
.dark .hljs-attribute {
color: oklch(0.7 0.12 200);
/* For rendering a PDF */
@media print {
#nd-docs-layout {
--fd-sidebar-width: 0px !important;
}
#nd-sidebar {
display: none;
}
}
157 changes: 157 additions & 0 deletions hbase-website/app/components/docs/layout/docs/client.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

import {
type ComponentProps,
createContext,
type ReactNode,
use,
useEffect,
useMemo,
useState
} from "react";
import { useSidebar } from "../sidebar/base";
import { usePathname } from "fumadocs-core/framework";
import Link from "fumadocs-core/link";
import type { SidebarTab } from "../sidebar/tabs";
import { isTabActive } from "../sidebar/tabs/dropdown";
import { cn } from "@/lib/utils";

export const LayoutContext = createContext<{
isNavTransparent: boolean;
} | null>(null);

export function LayoutContextProvider({
navTransparentMode = "none",
children
}: {
navTransparentMode?: "always" | "top" | "none";
children: ReactNode;
}) {
const isTop = useIsScrollTop({ enabled: navTransparentMode === "top" }) ?? true;
const isNavTransparent = navTransparentMode === "top" ? isTop : navTransparentMode === "always";

return (
<LayoutContext
value={useMemo(
() => ({
isNavTransparent
}),
[isNavTransparent]
)}
>
{children}
</LayoutContext>
);
}

export function LayoutHeader(props: ComponentProps<"header">) {
const { isNavTransparent } = use(LayoutContext)!;

return (
<header data-transparent={isNavTransparent} {...props}>
{props.children}
</header>
);
}

export function LayoutBody({ className, style, children, ...props }: ComponentProps<"div">) {
const { collapsed } = useSidebar();

return (
<div
id="nd-docs-layout"
className={cn(
"grid min-h-(--fd-docs-height) auto-cols-auto auto-rows-auto overflow-x-clip transition-[grid-template-columns] [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-sidebar-width:0px] [--fd-toc-popover-height:0px] [--fd-toc-width:285px] max-xl:[--fd-toc-popover-height:--spacing(10)] max-md:[--fd-header-height:--spacing(14)] md:[--fd-sidebar-width:285px]",
className
)}
data-sidebar-collapsed={collapsed}
style={
{
gridTemplate: `"sidebar header toc"
"sidebar toc-popover toc"
"sidebar main toc" 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr)`,
"--fd-docs-row-1": "var(--fd-banner-height, 0px)",
"--fd-docs-row-2": "calc(var(--fd-docs-row-1) + var(--fd-header-height))",
"--fd-docs-row-3": "calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height))",
"--fd-sidebar-col": collapsed ? "0px" : "var(--fd-sidebar-width)",
...style
} as object
}
{...props}
>
{children}
</div>
);
}

export function LayoutTabs({
options,
...props
}: ComponentProps<"div"> & {
options: SidebarTab[];
}) {
const pathname = usePathname();
const selected = useMemo(() => {
return options.findLast((option) => isTabActive(option, pathname));
}, [options, pathname]);

return (
<div
{...props}
className={cn(
"flex flex-row items-end gap-6 overflow-auto [grid-area:main]",
props.className
)}
>
{options.map((option, i) => (
<Link
key={i}
href={option.url}
className={cn(
"text-fd-muted-foreground hover:text-fd-accent-foreground inline-flex items-center gap-2 border-b-2 border-transparent pb-1.5 text-sm font-medium text-nowrap transition-colors",
option.unlisted && selected !== option && "hidden",
selected === option && "border-fd-primary text-fd-primary"
)}
>
{option.title}
</Link>
))}
</div>
);
}

export function useIsScrollTop({ enabled = true }: { enabled?: boolean }) {
const [isTop, setIsTop] = useState<boolean | undefined>();

useEffect(() => {
if (!enabled) return;

const listener = () => {
setIsTop(window.scrollY < 10);
};

listener();
window.addEventListener("scroll", listener);
return () => {
window.removeEventListener("scroll", listener);
};
}, [enabled]);

return isTop;
}
Loading