Skip to content

Commit 9a9bb97

Browse files
committed
feat: custom themes for previews
1 parent e98fb8e commit 9a9bb97

19 files changed

+699
-27
lines changed

content/components/inputs/date-picker.mdx

-3
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@ thumbnail:
66
video: /previews/components/core/date-picker.mp4
77
---
88

9-
<ComponentPreview name="demos/components/core/date-picker" />
10-
119
## Installation
1210

1311
<Steps>
1412
<Step>Copy and paste the following code into your project.</Step>
15-
<ComponentSource name="components/core/default/date-picker" />
1613
<Step>Update the import paths to match your project setup.</Step>
1714
</Steps>

package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"class-variance-authority": "^0.7.0",
5757
"clsx": "^2.1.0",
5858
"cmdk": "^0.2.0",
59+
"colord": "^2.9.3",
5960
"date-fns": "^3.2.0",
6061
"embla-carousel-react": "8.0.0-rc19",
6162
"framer-motion": "^11.0.3",
@@ -68,6 +69,7 @@
6869
"next-mdx-remote": "^4.4.1",
6970
"next-themes": "^0.2.1",
7071
"react": "18.2.0",
72+
"react-colorful": "^5.6.1",
7173
"react-day-picker": "^8.10.0",
7274
"react-dom": "18.2.0",
7375
"react-hook-form": "^7.49.3",
@@ -87,7 +89,8 @@
8789
"vaul": "^0.9.0",
8890
"vfile": "^6.0.1",
8991
"vfile-matter": "^5.0.0",
90-
"zod": "^3.22.4"
92+
"zod": "^3.22.4",
93+
"zustand": "^4.5.2"
9194
},
9295
"devDependencies": {
9396
"@commitlint/cli": "^18.4.4",

pnpm-lock.yaml

+51
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/(docs)/[...slug]/loading.tsx

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
import { Loader2Icon } from "lucide-react";
2+
13
export default function Loading() {
2-
return <div>loading...</div>;
4+
return (
5+
<div className="flex min-h-[calc(100vh-80px)] items-center justify-center">
6+
<Loader2Icon size={30} className="animate-spin" />
7+
</div>
8+
);
39
}

src/app/(docs)/[...slug]/page.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export default async function Page({ params }: PageProps) {
8585
<h1 className="text-4xl font-bold">{metadata.title}</h1>
8686
<p className="mt-2 text-muted-foreground">{metadata.description}</p>
8787
{categories && categories.length > 0 && (
88-
<div className="mt-6 flex flex-wrap gap-4">
88+
<div className="mt-6 flex flex-wrap gap-2">
8989
{categories.map((category, index) => (
9090
<Button key={index} size="sm" variant="secondary" asChild className="h-7">
9191
<Link href={category.href}>{category.label}</Link>

src/components/mdx/component-preview.tsx src/components/component-preview.tsx

+5-18
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import React from "react";
22
import { Code } from "bright";
33
import { tabs } from "@/components/code-highlighter/code-tabs";
4-
import { ScrollArea } from "@/lib/components/core/default/scroll-area";
54
import {
65
Tabs,
76
TabsContent,
87
TabsList,
98
TabsTrigger,
109
} from "@/lib/components/core/default/tabs";
11-
import { cn } from "@/lib/utils/classes";
1210
import { previews } from "@/autogenerated/previews";
11+
import { Preview } from "./preview";
1312

1413
type PreviewsKeys = keyof typeof previews;
1514

@@ -24,7 +23,7 @@ export const ComponentPreview = ({
2423
className?: string;
2524
aspect?: "default" | "page";
2625
}) => {
27-
const preview = React.useMemo(() => {
26+
const component = React.useMemo(() => {
2827
const Component = previews[name]?.component;
2928

3029
if (!Component) {
@@ -55,21 +54,9 @@ export const ComponentPreview = ({
5554
<TabsTrigger value="code">Code</TabsTrigger>
5655
</TabsList>
5756
<TabsContent value="preview" className="rounded-md border">
58-
<ScrollArea
59-
viewportProps={{
60-
className: cn({ "min-h-[350px] max-h-[800px]": aspect === "default" }),
61-
}}
62-
>
63-
<div
64-
className={cn("min-h-[350px] w-full bg-card/50", {
65-
"flex items-center justify-center px-8 py-8": centered,
66-
})}
67-
>
68-
<div className={cn("flex w-full items-center justify-center", className)}>
69-
{preview}
70-
</div>
71-
</div>
72-
</ScrollArea>
57+
<Preview aspect={aspect} centered={centered} className={className}>
58+
{component}
59+
</Preview>
7360
</TabsContent>
7461
<TabsContent value="code" className="rounded border">
7562
<Code
File renamed without changes.

0 commit comments

Comments
 (0)