import React from "react"; import { useAtProto } from "../providers/AtProtoProvider"; import type { TangledStringRecord } from "../types/tangled"; export interface TangledStringRendererProps { record: TangledStringRecord; error?: Error; loading: boolean; did: string; rkey: string; canonicalUrl?: string; } export const TangledStringRenderer: React.FC = ({ record, error, loading, did, rkey, canonicalUrl, }) => { const { tangledBaseUrl } = useAtProto(); if (error) return (
Failed to load snippet.
); if (loading && !record) return
Loading…
; const viewUrl = canonicalUrl ?? `${tangledBaseUrl}/strings/${did}/${encodeURIComponent(rkey)}`; const timestamp = new Date(record.createdAt).toLocaleString(undefined, { dateStyle: "medium", timeStyle: "short", }); return (
{record.filename}
View on Tangled
{record.description && (
{record.description}
)}
				{record.contents}
			
); }; const base: Record = { container: { fontFamily: "system-ui, sans-serif", borderRadius: 6, overflow: "hidden", transition: "background-color 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 180ms ease", width: "100%", }, header: { padding: "10px 16px", display: "flex", justifyContent: "space-between", alignItems: "center", gap: 12, }, headerRight: { display: "flex", alignItems: "center", gap: 12, flexWrap: "wrap", justifyContent: "flex-end", }, filename: { fontFamily: 'SFMono-Regular, ui-monospace, Menlo, Monaco, "Courier New", monospace', fontSize: 13, wordBreak: "break-all", }, timestamp: { fontSize: 12, }, headerLink: { fontSize: 12, fontWeight: 600, textDecoration: "none", }, description: { padding: "10px 16px", fontSize: 13, borderTopWidth: "1px", borderTopStyle: "solid", borderTopColor: "transparent", }, codeBlock: { margin: 0, padding: "16px", fontSize: 13, overflowX: "auto", borderTopWidth: "1px", borderTopStyle: "solid", borderTopColor: "transparent", fontFamily: 'SFMono-Regular, ui-monospace, Menlo, Monaco, "Courier New", monospace', }, }; export default TangledStringRenderer;