feat(docs): add appearance sandbox example

This commit is contained in:
Maofeng
2026-09-21 17:09:54 +08:00
parent a9d6856ab8
commit fb985edb20
8 changed files with 92 additions and 0 deletions
+1
View File
@@ -12,6 +12,7 @@
},
"dependencies": {
"@icones/react": "^0.0.1",
"@workspace/appearance": "workspace:*",
"@workspace/i18n": "workspace:*",
"@workspace/media": "workspace:*",
"@workspace/preferences": "workspace:*",
+1
View File
@@ -1,4 +1,5 @@
@import "@workspace/ui/globals.css";
@import "@workspace/appearance/globals.css";
@import "@workspace/media/globals.css";
@import "@workspace/search/globals.css";
@@ -0,0 +1,24 @@
import {
ThemeColorPicker,
accentColorSwatches,
} from "@workspace/appearance/components/theme-color-picker"
import type { ThemeColorConfig } from "@workspace/appearance/theme"
export function AccentPicker({
config,
onConfigChange,
}: {
config: ThemeColorConfig
onConfigChange: (config: ThemeColorConfig) => void
}) {
return (
<ThemeColorPicker
title="Accent color"
swatches={accentColorSwatches}
value={config.accentColor}
onValueChange={(accentColor) =>
onConfigChange({ ...config, accentColor })
}
/>
)
}
@@ -0,0 +1,19 @@
import React from "react"
import { ThemePreview } from "@workspace/appearance/components/theme-preview"
import type { ThemeColorConfig } from "@workspace/appearance/theme"
import { AccentPicker } from "./AccentPicker"
export default function ThemeColorsExample() {
const [config, setConfig] = React.useState<ThemeColorConfig>({
accentColor: "indigo",
baseColor: "neutral",
})
return (
<div className="mx-auto flex max-w-xl flex-col gap-6">
<ThemePreview config={config} scheme="light" />
<AccentPicker config={config} onConfigChange={setConfig} />
</div>
)
}
@@ -0,0 +1,12 @@
import { defineSandbox } from "../../../components/sandbox"
export default defineSandbox({
id: "appearance/theme-colors",
title: "Controlled theme colors",
entry: () => import("./App"),
files: {
"App.tsx": () => import("./App.tsx?raw"),
"AccentPicker.tsx": () => import("./AccentPicker.tsx?raw"),
},
defaultFile: "App.tsx",
})