1 Commits

Author SHA1 Message Date
Renovate Bot
8db9fde31b Update dependency eslint to v9 2024-10-07 20:14:22 +00:00
21 changed files with 361 additions and 245 deletions

BIN
bun.lockb

Binary file not shown.

7
docs/bob/hello.md Normal file
View File

@ -0,0 +1,7 @@
---
title: 'Hello'
published: '2024-10-06'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
---
# hello

7
docs/bob/hey.md Normal file
View File

@ -0,0 +1,7 @@
---
title: 'Hey'
published: '2024-10-06'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
---
# hey

7
docs/bob/hi.md Normal file
View File

@ -0,0 +1,7 @@
---
title: 'Hi'
published: '2024-10-06'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
---
# hi

293
docs/intro.md Normal file
View File

@ -0,0 +1,293 @@
---
title: '🚀 Introduction'
published: '2024-10-06'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
---
# Get started with Pulse App!
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# an mel dissentiunt ponderum eius dicant adhuc,
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# vim an explicari eirmod pro singulis scripta iaculis fermentum.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# eruditi propriae vulputate elit venenatis reprehendunt delectus.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# dicunt antiopam ultricies nisl egestas voluptatibus harum,
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# viverra senserit cursus theophrastus elaboraret iudicabit ligula.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# posidonium dicat eum nostra auctor quaeque harum
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# doctus primis disputationi atqui magnis himenaeos fastidii
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# ligula cras prodesset litora ridens docendi euripidis
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# efficitur detraxit detraxit fames appareat mutat elit
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# donec nominavi qui dolorum adversarium eum eleifend
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
# nunc contentiones numquam pharetra his vero solum
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.
petentium usu tota noluisse errem elaboraret auctor.

View File

@ -1,24 +0,0 @@
---
title: '🚀 Introduction'
published: '2024-10-06'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
order: 1
---
> [!IMPORTANT]
> These docs are currently a work in progress and are subject to change.
# Pulse App
<span className="flex gap-2 items-center select-none">
<Activity className="w-4 h-4 text-primary" /> <span>A lightweight service monitoring solution for tracking the availability of whatever service your heart desires!</span>
</span>
## Getting Started
Let's get you up and running—this will only take a few minutes! Start by [creating your account](#creating-your-account) and
making your first status page. You can do this on our cloud or on your [own instance](/self-hosting). Once done, you can add
your services and start monitoring them. See [Next Steps](#next-steps) for more.
### Creating your Account
- First, head to our [Dashboard](https://pulseapp.cc/dashboard) and fill out the form. ![Registering](https://cdn.rainnny.club/auhNOjrcYz6u.png)
- Next, complete the onboarding process and set up your first organization, and status page. ![Onboarding](https://cdn.rainnny.club/AfDgjHG5QTpZ.png)
- Finally, you can [start monitoring your services](#next-steps)!

View File

@ -1,9 +0,0 @@
---
title: '🐋 Docker'
published: '2024-10-07'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
order: 4
---
# 🐋 Deploying on Docker
...

View File

@ -1,9 +0,0 @@
---
title: '🧩 Components'
published: '2024-10-07'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
order: 2
---
# 🧩 Components
...

View File

@ -1,9 +0,0 @@
---
title: '✔️ Supported Services'
published: '2024-10-07'
summary: 'petentium usu tota noluisse errem elaboraret auctor.'
order: 3
---
# ✔️ Supported Services
Below is a list of all the services that are currently supported by Pulse App. Are we missing a service? Please [open an issue](https://git.rainnny.club/PulseApp/API/issues)!

View File

@ -41,7 +41,7 @@
"@types/react": "^18",
"@types/react-dom": "^18",
"eslint": "^9.0.0",
"eslint-config-next": "14.2.14",
"eslint-config-next": "14.2.8",
"postcss": "^8",
"tailwindcss": "^3.4.1",
"typescript": "^5"

View File

@ -13,6 +13,7 @@ import { capitalizeWords } from "@/lib/string";
import { Metadata } from "next";
import Embed from "@/components/embed";
import DocsFooter from "@/components/docs-footer";
import { cn } from "@/lib/utils";
import OnThisPage from "@/components/on-this-page";
/**
@ -31,10 +32,9 @@ const DocsPage = async ({
// Get the content to display based on the provided slug
const pages: DocsContentMetadata[] = getDocsContent();
const decodedSlug: string = decodeURIComponent(slug || "");
const page: DocsContentMetadata | undefined = pages.find(
(metadata: DocsContentMetadata): boolean =>
metadata.slug === (decodedSlug || "intro")
metadata.slug === (slug || "intro")
);
if (!page) {
notFound();
@ -44,17 +44,20 @@ const DocsPage = async ({
return (
<main className="w-full flex flex-col">
{/* Breadcrumb */}
<Breadcrumb className="pt-4 pb-3 select-none">
<Breadcrumb className="pt-4 select-none">
<BreadcrumbList>
{splitSlug
.slice(0, -1)
.map((part: string, index: number): ReactElement => {
{splitSlug.map(
(part: string, index: number): ReactElement => {
const active: boolean =
index === splitSlug.length - 1;
const slug: string = splitSlug
.slice(1, index + 2) // Include one more to account for the index shift
.slice(1, index + 1)
.join("/");
return (
<div className="flex items-center" key={part}>
<BreadcrumbItem>
<BreadcrumbItem
className={cn(active && "text-primary")}
>
<BreadcrumbLink
href={slug}
draggable={false}
@ -62,17 +65,13 @@ const DocsPage = async ({
{capitalizeWords(part)}
</BreadcrumbLink>
</BreadcrumbItem>
{index < splitSlug.length - 1 && ( // Adjusted to avoid separator after the last breadcrumb
{index < splitSlug.length - 1 && (
<BreadcrumbSeparator className="pl-1.5" />
)}
</div>
);
})}
<BreadcrumbItem className="text-primary">
<BreadcrumbLink href="#" draggable={false}>
{page.title}{" "}
</BreadcrumbLink>
</BreadcrumbItem>
}
)}
</BreadcrumbList>
</Breadcrumb>

View File

@ -51,7 +51,7 @@ const RootLayout = ({
}}
>
<TooltipProvider delayDuration={100}>
<div className="px-3 md:px-7 max-w-screen-2xl min-h-screen mx-auto flex flex-col transition-all">
<div className="px-3 sm:px-7 max-w-screen-2xl min-h-screen mx-auto flex flex-col transition-all">
<Navbar />
<div className="pt-[4.5rem] w-full h-full flex flex-grow gap-5">
<div className="relative hidden xs:flex">

View File

@ -16,11 +16,6 @@ type DocsContentMetadata = MDXMetadata & {
* The summary of this content.
*/
summary: string;
/**
* The order of this content.
*/
order: number;
};
/**

View File

@ -13,7 +13,7 @@ const DocsFooter = ({
}: {
pages: DocsContentMetadata[];
}): ReactElement => {
const path: string = decodeURIComponent(usePathname());
const path: string = usePathname();
const current: number = pages.findIndex(
(page: DocsContentMetadata) =>
@ -46,17 +46,15 @@ const DocsFooter = ({
pages[current]?.published
).toLocaleString(DateTime.DATETIME_MED)}
>
<span className="text-xs sm:text-sm opacity-75 transition-all transform-gpu">
<span className="text-sm opacity-75">
Published {publicationDate}
</span>
</SimpleTooltip>
</div>
{/* Pages */}
{previous || next ? (
<Separator className="my-4 bg-separator-gradient" />
) : undefined}
<div className="flex justify-between text-xs sm:text-base">
<Separator className="my-4 bg-separator-gradient" />
<div className="flex justify-between">
{/* Previous */}
{previous && (
<Link

View File

@ -1,32 +0,0 @@
"use client";
import { ReactElement, ReactNode } from "react";
import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog";
import { cn } from "@/lib/utils";
type ImageViewerProps = {
className?: string | undefined;
children: ReactNode;
};
const ImageViewer = ({
className,
children,
}: ImageViewerProps): ReactElement => {
return (
<Dialog>
<DialogTrigger
className={cn(
"hover:scale-[1.005] transition-all transform-gpu",
className
)}
>
{children}
</DialogTrigger>
<DialogContent className="p-0 min-w-[20rem] max-w-screen-xl">
{children}
</DialogContent>
</Dialog>
);
};
export default ImageViewer;

View File

@ -1,47 +1,12 @@
import { isValidElement, ReactElement, ReactNode } from "react";
import { ReactElement, ReactNode } from "react";
import { MDXRemote } from "remote-mdx/rsc";
import { cn } from "@/lib/utils";
import remarkGfm from "remark-gfm";
import {
Activity,
CircleAlert,
Lightbulb,
MessageSquareWarning,
OctagonAlert,
TriangleAlert,
} from "lucide-react";
import Link from "next/link";
import { capitalizeWords } from "@/lib/string";
import ImageViewer from "@/components/image-viewer";
const blockquoteStyles: { [key: string]: any } = {
NOTE: {
icon: <CircleAlert className="w-4 h-4" />,
style: "text-[#1F6FEB] border-[#1F6FEB]",
},
TIP: {
icon: <Lightbulb className="w-4 h-4" />,
style: "text-[#4A8BD5] border-[#4A8BD5]",
},
IMPORTANT: {
icon: <MessageSquareWarning className="w-4 h-4" />,
style: "text-[#8957E5] border-[#8957E5]",
},
WARNING: {
icon: <TriangleAlert className="w-4 h-4" />,
style: "text-[#9E6A03] border-[#9E6A03]",
},
CAUTION: {
icon: <OctagonAlert className="w-4 h-4" />,
style: "text-[#DA3633] border-[#DA3633]",
},
};
/**
* The MDX components to style.
*/
const components = {
// Headings
h1: ({ children }: { children: ReactNode }): ReactElement => (
<Heading as="h1" size={1} className="text-4xl">
{children}
@ -72,8 +37,6 @@ const components = {
{children}
</Heading>
),
// Text
a: ({
href,
children,
@ -81,59 +44,19 @@ const components = {
href: string;
children: ReactNode;
}): ReactElement => (
<Link
className="text-primary cursor-pointer hover:opacity-75 transition-all transform-gpu"
<a
className="text-minecraft-green-4 cursor-pointer hover:opacity-85 transition-all transform-gpu"
href={href}
draggable={false}
>
{children}
</Link>
</a>
),
p: ({ children }: { children: ReactNode }): ReactElement => (
<p className="leading-5 select-none">{children}</p>
<p className="leading-4 text-zinc-300/80">{children}</p>
),
// Media
img: ({ src, alt }: { src: string; alt: string }): ReactElement => (
<ImageViewer className="m-2 my-2.5">
<img
className="ring-1 ring-muted/45 rounded-2xl select-none"
src={src}
alt={alt}
draggable={false}
/>
</ImageViewer>
),
// Lists
ul: ({ children }: { children: ReactNode }): ReactElement => (
<ul className="px-3 list-disc list-inside select-none">{children}</ul>
<ul className="px-3 list-disc list-inside">{children}</ul>
),
// Blockquotes
blockquote: ({ children }: { children: ReactNode }): ReactElement => {
const match = extractBlockQuoteText(children).match(
/^\s*\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)]\s*(.*)/i
);
let style: any;
if (!match || !(style = blockquoteStyles[match[1]])) {
return <blockquote>{children}</blockquote>;
}
return (
<blockquote
className={cn(
"my-2 pl-3 py-1.5 flex flex-col gap-2 border-l-[3px] select-none",
style.style
)}
>
<h1 className="flex gap-2 items-center">
{style.icon}
{capitalizeWords(match[1])}
</h1>
<p className="text-foreground opacity-85">{match[2]}</p>
</blockquote>
);
},
};
/**
@ -148,8 +71,6 @@ export const CustomMDX = (props: any): ReactElement => (
components={{
...components,
...(props.components || {}),
Link,
Activity,
}}
options={{
mdxOptions: {
@ -162,7 +83,6 @@ export const CustomMDX = (props: any): ReactElement => (
/**
* A heading component.
*
* @param as the type of heading
* @param className the class name of the heading
* @param size the size of the heading
* @param children the children within the heading
@ -184,11 +104,7 @@ const Heading = ({
return (
<Component
id={id}
className={cn(
"py-3 font-bold select-none",
size >= 2 && "pt-7",
className
)}
className={cn("pt-2.5 font-bold", size >= 2 && "pt-7", className)}
>
{children}
</Component>
@ -201,16 +117,3 @@ const slugify = (text: string): string =>
.replace(/[^\w\s-]/g, "")
.replace(/[\s_-]+/g, "-")
.trim();
const extractBlockQuoteText = (node: ReactNode): string => {
if (typeof node === "string") {
return node;
}
if (Array.isArray(node)) {
return node.map(extractBlockQuoteText).join("");
}
if (isValidElement(node)) {
return extractBlockQuoteText(node.props.children);
}
return "";
};

View File

@ -9,7 +9,7 @@ const Navbar = (): ReactElement => {
const pages: DocsContentMetadata[] = getDocsContent();
return (
<nav className="fixed left-0 inset-x-0 bg-white/[0.007] backdrop-saturate-100 backdrop-blur-xl border-b z-50">
<div className="px-3 md:px-7 max-w-screen-2xl mx-auto py-4 flex justify-between items-center transition-all transform-gpu">
<div className="px-3 sm:px-7 max-w-screen-2xl mx-auto py-4 flex justify-between items-center transition-all transform-gpu">
{/* Branding */}
<Link
className="flex gap-1 items-end hover:opacity-75 transition-all transform-gpu select-none"

View File

@ -127,7 +127,7 @@ const OnThisPage = ({ page }: { page: DocsContentMetadata }): ReactElement => {
{/* Footer */}
<div>
<Separator className="mt-1 mb-3.5 bg-separator-gradient" />
<Separator className="mt-1 mb-3.5" />
<Footer page={page} />
</div>
</motion.div>
@ -148,7 +148,7 @@ const Footer = ({ page }: { page: DocsContentMetadata }): ReactElement => {
{/* Edit on Git */}
<Link
className="flex gap-1.5 items-center text-xs hover:opacity-75 transition-all transform-gpu group"
href={`https://git.rainnny.club/PulseApp/docs/src/branch/master/docs/${page.slug}${page.extension}`}
href={`https://git.rainnny.club/PulseApp/docs/src/branch/master/docs/${page.slug}.md`}
target="_blank"
draggable={false}
>

View File

@ -20,11 +20,11 @@ const SidebarLinks = ({
}): ReactElement => {
const tree = useMemo(() => buildTree(pages), [pages]);
return (
<div className="flex flex-col gap-1">
<>
{Object.values(tree).map((node: TreeNode) => (
<CategoryItem key={node.slug} node={node} />
))}
</div>
</>
);
};
@ -44,14 +44,14 @@ const CategoryItem = ({
depth?: number;
isLast?: boolean;
}) => {
const path = decodeURIComponent(usePathname());
const path = usePathname();
const active =
(path === "/" && node.slug === "intro") || path === `/${node.slug}`;
const [isOpen, setIsOpen] = useState(true);
const hasChildren = Object.keys(node.children).length > 0;
return (
<div className={cn(`relative select-none`, depth > 0 && "ml-4")}>
<div className={cn(`relative select-none`, depth > 0 && "ml-2.5")}>
{/* Indentation */}
{depth > 0 && (
<div
@ -72,7 +72,7 @@ const CategoryItem = ({
>
<Button
className={cn(
`relative w-full px-1.5 h-8 lg:text-base justify-between hover:bg-accent/20`,
`relative w-full px-1.5 h-8 text-base justify-between hover:bg-accent/20`,
depth > 0 && "pl-4",
active &&
"text-primary/95 font-bold hover:text-primary"
@ -83,7 +83,7 @@ const CategoryItem = ({
{hasChildren && (
<motion.div
initial={false}
animate={{ rotate: isOpen ? 90 : 0 }}
animate={{ rotate: isOpen ? 90 : 180 }}
transition={{ duration: 0.2 }}
>
<ChevronRight className="w-4 h-4" />

View File

@ -6,8 +6,6 @@ import { UseThemeProps } from "next-themes/dist/types";
import { Monitor, MoonStar, Sun } from "lucide-react";
import { cn } from "@/lib/utils";
import { Button } from "@/components/ui/button";
import SimpleTooltip from "@/components/simple-tooltip";
import { capitalizeWords } from "@/lib/string";
const themes = {
dark: <MoonStar className="w-4 h-4" />,
@ -33,22 +31,18 @@ const ThemeSwitcher = (): ReactElement => {
{Object.entries(themes).map(([theme, icon]) => {
const active: boolean = mounted && theme === activeTheme;
return (
<SimpleTooltip
<Button
key={theme}
content={`${capitalizeWords(theme)} Theme`}
className={cn(
"p-1 h-6 opacity-80 rounded-full",
active &&
"ring-1 bg-zinc-900 ring-white/15 opacity-100"
)}
variant="ghost"
onClick={() => setTheme(theme)}
>
<Button
className={cn(
"p-1 h-6 opacity-80 rounded-full",
active &&
"ring-1 bg-zinc-900 ring-white/15 opacity-100"
)}
variant="ghost"
onClick={() => setTheme(theme)}
>
{icon}
</Button>
</SimpleTooltip>
{icon}
</Button>
);
})}
</div>

View File

@ -21,11 +21,7 @@ export const getDocsContent = (): DocsContentMetadata[] => {
for (const directory of getRecursiveDirectories(DOCS_DIR)) {
content.push(...getMetadata<DocsContentMetadata>(DOCS_DIR, directory));
}
return content.sort((a: DocsContentMetadata, b: DocsContentMetadata) => {
const orderA = a.order ?? Number.MAX_SAFE_INTEGER;
const orderB = b.order ?? Number.MAX_SAFE_INTEGER;
return orderA - orderB;
});
return content;
};
/**