mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-28 07:04:20 +00:00
* feat: add base and radix docs * feat: transform code for display * fix * fix * fix * fix * fix * chore: remove claude files * fix * fix * fix * chore: run format:write * fix * feat: add more examples * fix * feat: add aspect-ratio * feat: add avatar * feat: add badge * feat: add breadcrumb * fix * feat: add button * fix * fix * fix * feat: add calendar and card * feat: add carousel * fix: chart * feat: add checkbox * feat: add collapsible * feat: add combobox * feat: add command * feat: add context menu * feat: add data-table dialog and drawer * feat: dropdown-menu * feat: add date-picker * feat: add empty * feat: add field and hover-card * fix: input * feat: add input * feat: add input-group * feat: add input-otp * feat: add item * feat: add kbd and label * feat: add menubar * feat: add native-select * feat: add more components * feat: more components * feat: more components * feat: add skeleton, slider and sonner * feat: add spinner and switch * feat: add more components * fix: tabs * fix: tabs * feat: add docs for sidebar * fix * fix * fi * docs: update * fix: create page * fix * fix * chore: add changelog * fix
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import * as React from "react"
|
|
import { type registryItemSchema } from "shadcn/schema"
|
|
import { type z } from "zod"
|
|
|
|
import { highlightCode } from "@/lib/highlight-code"
|
|
import { getRegistryItem } from "@/lib/registry"
|
|
import { cn } from "@/lib/utils"
|
|
import { ChartIframe } from "@/components/chart-iframe"
|
|
import { ChartToolbar } from "@/components/chart-toolbar"
|
|
import { type Style } from "@/registry/_legacy-styles"
|
|
|
|
export type Chart = z.infer<typeof registryItemSchema> & {
|
|
highlightedCode: string
|
|
}
|
|
|
|
export function ChartDisplay({
|
|
chart,
|
|
style,
|
|
className,
|
|
}: {
|
|
chart: Chart
|
|
style: string
|
|
} & React.ComponentProps<"div">) {
|
|
return (
|
|
<div
|
|
className={cn(
|
|
"themes-wrapper group relative flex flex-col overflow-hidden rounded-xl transition-all duration-200 ease-in-out hover:z-30",
|
|
className
|
|
)}
|
|
>
|
|
<ChartToolbar
|
|
chart={chart}
|
|
className="relative z-20 flex justify-end px-3 py-2.5"
|
|
/>
|
|
<div className="bg-background relative z-10 overflow-hidden rounded-xl">
|
|
<ChartIframe
|
|
src={`/view/${style}/${chart.name}`}
|
|
height={460}
|
|
title={chart.name}
|
|
/>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
// Exported for parallel prefetching in page components.
|
|
export const getCachedRegistryItem = React.cache(
|
|
async (name: string, styleName: Style["name"]) => {
|
|
return await getRegistryItem(name, styleName)
|
|
}
|
|
)
|
|
|
|
export const getChartHighlightedCode = React.cache(async (content: string) => {
|
|
return await highlightCode(content)
|
|
})
|