Files
upstream-mirror a774ac673a
Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
snapshot of https://github.com/tldraw/tldraw.git (main, 2026-09-23; blobs > 131072B omitted)
2026-09-23 16:12:52 +05:00

67 lines
1.6 KiB
TypeScript

'use client'
import { useRef, useState } from 'react'
import { cn } from '@/utils/cn'
import { Button } from '../common/button'
export function Embed(props: {
className?: string
src: string
caption?: string
tryButton?: string
}) {
const [isExampleFocused, setIsExampleFocused] = useState(false)
const iframeRef = useRef<HTMLIFrameElement>(null)
function handleClick() {
setIsExampleFocused(true)
iframeRef.current?.focus()
}
function handleBlur() {
setIsExampleFocused(false)
}
return (
<div>
<div className="bg-zinc-100 dark:bg-zinc-700 py-1 md:rounded-2xl -mx-5 md:-mx-1 md:px-1">
<div
className={cn(
props.className,
'md:rounded-xl overflow-hidden shadow bg-white dark:bg-zinc-950 relative'
)}
>
<iframe
ref={iframeRef}
className="iframe"
src={props.src}
width="100%"
height={550}
allow="autoplay; clipboard-read; clipboard-write"
onBlur={handleBlur}
/>
{!isExampleFocused && (
<div
className="absolute inset-0 bg-[#FBFCFE]/50 dark:bg-[#101011]/50 flex items-center justify-center cursor-pointer"
onClick={handleClick}
>
<Button
onClick={handleClick}
caption={props.tryButton ?? 'Try example'}
icon="play"
className="shadow"
/>
</div>
)}
</div>
</div>
{props.caption && <span className="block text-xs text-zinc-500 mt-3">{props.caption}</span>}
</div>
)
}
export function StarterKitEmbed(props: { id: string }) {
return (
<Embed
src={`https://${props.id}.templates.tldraw.dev/?utm_source=docs-embed`}
tryButton="Try starter kit"
/>
)
}