Home / File/ preview.tsx — ui Source File

preview.tsx — ui Source File

Architecture documentation for preview.tsx, a tsx file in the ui codebase. 8 imports, 0 dependents.

File tsx DesignEngine PreviewSystem 8 imports 1 functions

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

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