preview.tsx — ui Source File
Architecture documentation for preview.tsx, a tsx file in the ui codebase. 8 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843["preview.tsx"] 1d141819_425e_b5fd_4c8e_32f7c6a42cf2["react"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> 1d141819_425e_b5fd_4c8e_32f7c6a42cf2 e3a189ea_cc83_2570_3f47_ad87ecca3ddc["react-resizable-panels"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> e3a189ea_cc83_2570_3f47_ad87ecca3ddc 683e59cc_aef3_6181_1192_a4dcb3faf152["mode-switcher"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> 683e59cc_aef3_6181_1192_a4dcb3faf152 4c79c55d_d834_3cdd_ce17_cc4f4eb47d55["badge"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> 4c79c55d_d834_3cdd_ce17_cc4f4eb47d55 73619f96_c063_56c9_7ddc_c1aec768db1a["item-picker"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> 73619f96_c063_56c9_7ddc_c1aec768db1a a1e21489_f424_d51e_ac28_81bfa7d904c0["random-button"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> a1e21489_f424_d51e_ac28_81bfa7d904c0 e7f842e9_1cb7_8b3b_1b3f_99b8b4328fb6["use-iframe-sync"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> e7f842e9_1cb7_8b3b_1b3f_99b8b4328fb6 c27c6e95_5daf_4dd4_dc3a_add496837570["search-params"] e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 --> c27c6e95_5daf_4dd4_dc3a_add496837570 style e1e4d21f_c938_a7b0_e6dd_7fa1e8bd2843 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"use client"
import * as React from "react"
import { type PanelImperativeHandle } from "react-resizable-panels"
import { DARK_MODE_FORWARD_TYPE } from "@/components/mode-switcher"
import { Badge } from "@/registry/new-york-v4/ui/badge"
import { CMD_K_FORWARD_TYPE } from "@/app/(create)/components/item-picker"
import { RANDOMIZE_FORWARD_TYPE } from "@/app/(create)/components/random-button"
import { sendToIframe } from "@/app/(create)/hooks/use-iframe-sync"
import {
serializeDesignSystemSearchParams,
useDesignSystemSearchParams,
} from "@/app/(create)/lib/search-params"
export function Preview() {
const [params] = useDesignSystemSearchParams()
const iframeRef = React.useRef<HTMLIFrameElement>(null)
const resizablePanelRef = React.useRef<PanelImperativeHandle>(null)
// Sync resizable panel with URL param changes.
React.useEffect(() => {
if (resizablePanelRef.current && params.size) {
resizablePanelRef.current.resize(params.size)
}
}, [params.size])
React.useEffect(() => {
const iframe = iframeRef.current
if (!iframe) {
return
}
const sendParams = () => {
sendToIframe(iframe, "design-system-params", params)
}
if (iframe.contentWindow) {
sendParams()
}
iframe.addEventListener("load", sendParams)
return () => {
iframe.removeEventListener("load", sendParams)
}
}, [params])
const handleMessage = (event: MessageEvent) => {
if (event.data.type === CMD_K_FORWARD_TYPE) {
const isMac = /Mac|iPhone|iPad|iPod/.test(navigator.userAgent)
const key = event.data.key || "k"
const syntheticEvent = new KeyboardEvent("keydown", {
key,
metaKey: isMac,
ctrlKey: !isMac,
bubbles: true,
cancelable: true,
})
document.dispatchEvent(syntheticEvent)
// ... (67 more lines)
Domain
Subdomains
Functions
Dependencies
- badge
- item-picker
- mode-switcher
- random-button
- react
- react-resizable-panels
- search-params
- use-iframe-sync
Source
Frequently Asked Questions
What does preview.tsx do?
preview.tsx is a source file in the ui codebase, written in tsx. It belongs to the DesignEngine domain, PreviewSystem subdomain.
What functions are defined in preview.tsx?
preview.tsx defines 1 function(s): Preview.
What does preview.tsx depend on?
preview.tsx imports 8 module(s): badge, item-picker, mode-switcher, random-button, react, react-resizable-panels, search-params, use-iframe-sync.
Where is preview.tsx in the architecture?
preview.tsx is located at apps/v4/app/(create)/components/preview.tsx (domain: DesignEngine, subdomain: PreviewSystem, directory: apps/v4/app/(create)/components).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free