mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-11 09:51:40 +00:00
* feat: init * fix * fix * fix * feat * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: implement icons * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: update init command * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: dialog * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add registry:base item type * feat: rename frame to canva * fix * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fi * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add all colors * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add outfit font * fix * fix * fix * fix * fix * chore: changeset * fix * fix * fix * fix * fix * fix * fix * fix
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
"use client"
|
|
|
|
import { lazy, Suspense } from "react"
|
|
import { SquareIcon } from "lucide-react"
|
|
import type { IconLibraryName } from "shadcn/icons"
|
|
|
|
import { useDesignSystemParam } from "@/app/(create)/hooks/use-design-system"
|
|
|
|
const IconLucide = lazy(() =>
|
|
import("@/registry/icons/icon-lucide").then((mod) => ({
|
|
default: mod.IconLucide,
|
|
}))
|
|
)
|
|
|
|
const IconTabler = lazy(() =>
|
|
import("@/registry/icons/icon-tabler").then((mod) => ({
|
|
default: mod.IconTabler,
|
|
}))
|
|
)
|
|
|
|
const IconHugeicons = lazy(() =>
|
|
import("@/registry/icons/icon-hugeicons").then((mod) => ({
|
|
default: mod.IconHugeicons,
|
|
}))
|
|
)
|
|
|
|
export function IconPlaceholder({
|
|
...props
|
|
}: {
|
|
[K in IconLibraryName]: string
|
|
} & React.ComponentProps<"svg">) {
|
|
const iconLibrary = useDesignSystemParam("iconLibrary")
|
|
const iconName = props[iconLibrary]
|
|
|
|
if (!iconName) {
|
|
return null
|
|
}
|
|
|
|
return (
|
|
<Suspense fallback={<SquareIcon {...props} />}>
|
|
{iconLibrary === "lucide" && <IconLucide name={iconName} {...props} />}
|
|
{iconLibrary === "tabler" && <IconTabler name={iconName} {...props} />}
|
|
{iconLibrary === "hugeicons" && (
|
|
<IconHugeicons name={iconName} {...props} />
|
|
)}
|
|
</Suspense>
|
|
)
|
|
}
|