{/* Source mode is binary — repo OR local directory, never both.
Local option is desktop-only because a local_directory
resource has to be pinned to a daemon_id, which doesn't
exist on the web. */}
{desktop && (
)}
{sourceMode === "repos" ? (
<>
{t(($) => $.create_project.repos_heading)}
{workspaceRepos.length > 0 ? (
<>
setRepoSearch(e.target.value)}
aria-label={t(($) => $.create_project.repos_search_placeholder)}
placeholder={t(($) => $.create_project.repos_search_placeholder)}
className="h-8 w-full rounded-md border bg-transparent pl-7 pr-2 text-xs outline-none placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-ring"
/>
{filteredWorkspaceRepos.length === 0 && repoQuery && (
{t(($) => $.create_project.repos_search_empty)}
)}
{filteredWorkspaceRepos.map((repo) => {
const checked = selectedRepos.includes(repo.url);
return (
);
})}
>
) : (
{t(($) => $.create_project.repos_empty)}
)}
{selectedRepos.length > 0 && (
{t(($) => $.create_project.repos_selected)}
{selectedRepos.map((url) => (
))}
)}
>
) : (
<>
{t(($) => $.create_project.local_heading)}
{/* Daemon must be online — daemon_id is required to bind
the resource. If it's offline, surface why and disable
the picker; once it boots we re-render automatically
via useLocalDaemonStatus. */}
{daemonStatus.daemonId && daemonStatus.running ? (
{t(($) => $.create_project.local_on_device, {
device: daemonStatus.deviceName ?? t(($) => $.create_project.local_this_machine),
})}
) : (
{t(($) => $.create_project.local_daemon_offline)}
)}
{selectedLocalPath ? (
{selectedLocalLabel && (
{selectedLocalLabel}
)}
{selectedLocalPath}
) : (
)}
{localPickError && (
{localPickError}
)}
{t(($) => $.create_project.local_hint)}
>
)}