% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/paintr-shared-coordinator.R
\name{ptr_shared_panel}
\alias{ptr_shared_panel}
\title{Render the Standalone Shared Panel (L2, Self-Contained)}
\usage{
ptr_shared_panel(obj, css = NULL)
}
\arguments{
\item{obj}{A \code{ptr_shared_spec} from \code{\link[=ptr_shared]{ptr_shared()}}.}

\item{css}{Optional character vector of paths to additional CSS files;
linked after \code{ggpaintr}'s bundled stylesheet so its rules win. See
\code{\link[=ptr_app]{ptr_app()}} for the full semantics. Defaults to \code{NULL}.}
}
\value{
A \code{shiny.tag} \code{div.ptr-app} wrapping the wellPanel and the asset
bundle, suitable for direct placement in the embedder's UI, or \code{NULL}
when no panel keys exist.
}
\description{
Renders the single page-level \code{\link[shiny:wellPanel]{shiny::wellPanel()}} holding exactly the
coordinator's cross-formula keys (\code{obj$panel_keys}, referenced by two or
more formulas). The panel is self-contained: it owns its \code{.ptr-app}
theming scope and the bundled ggpaintr asset dependency, so it can be
dropped straight into a host layout. Its server counterpart
\code{\link[=ptr_shared_server]{ptr_shared_server()}} must run at the top level.
}
\details{
Namespacing is inherited from \code{obj$id}; supply it to \code{\link[=ptr_shared]{ptr_shared()}}.
}
\examples{
obj <- ptr_shared(c(
  "ggplot(mtcars, aes(x = ppVar(shared='x'), y = ppVar)) + geom_point()",
  "ggplot(mtcars, aes(x = ppVar(shared='x'), y = ppVar)) + geom_bar()"
))
ptr_shared_panel(obj)
}
\seealso{
\code{\link[=ptr_shared]{ptr_shared()}}, \code{\link[=ptr_ui_shared_panel]{ptr_ui_shared_panel()}},
\code{\link[=ptr_shared_server]{ptr_shared_server()}}.
}
