Monorepo for Tangled forked from tangled.org/core
5 folders · 108 files

blame
issues
pipelines
pulls
tickets
BlobHeader.stories.svelte
BlobHeader.svelte
BlobView.stories.svelte
BlobView.svelte
BranchList.stories.svelte
BranchList.svelte
BranchTable.stories.svelte
BranchTable.svelte
CloneDropdown.stories.svelte
CloneDropdown.svelte
CommitBodyToggle.svelte
CommitHeader.stories.svelte
CommitHeader.svelte
CommitList.stories.svelte
CommitList.svelte
CommitLogView.stories.svelte
CommitLogView.svelte
CommitRow.stories.svelte
CommitRow.svelte
CommitRows.svelte
CommitSignOff.svelte
CommitView.stories.svelte
CommitView.svelte
DiffCodeView.svelte
DiffFileHeader.svelte
DiffFiles.svelte
DiffFileTree.stories.svelte
DiffFileTree.svelte
diffQueue.test.ts
diffQueue.ts
diffRpc.ts
DiffStatPill.stories.svelte
DiffStatPill.svelte
DiffView.stories.svelte
DiffView.svelte
diffWorker.ts
EmptyRepo.stories.svelte
EmptyRepo.svelte
fileAnchor.svelte.ts
FileCardHeader.stories.svelte
FileCardHeader.svelte
fileDiff.test.ts
fileDiff.ts
FileHistoryView.stories.svelte
FileHistoryView.svelte
FilePathChip.svelte
FileTree.stories.svelte
FileTree.svelte
importPoll.test.ts
importPoll.ts
LabelPanel.stories.svelte
LabelPanel.svelte
LanguageBar.stories.svelte
LanguageBar.svelte
languageColors.ts
LastCommitPanel.stories.svelte
LastCommitPanel.svelte
PanelHeader.stories.svelte
PanelHeader.svelte
pierre.ts
pierreDiff.css
PierreFile.stories.svelte
PierreFile.svelte
Readme.stories.svelte
Readme.svelte
RefChip.stories.svelte
RefChip.svelte
RefSelector.stories.svelte
RefSelector.svelte
RepoCard.stories.svelte
RepoCard.svelte
RepoCardContent.svelte
RepoChrome.stories.svelte
RepoChrome.svelte
RepoCreationForm.svelte
RepoCrumbs.stories.svelte
RepoCrumbs.svelte
RepoForkForm.stories.svelte
RepoForkForm.svelte
RepoHeader.stories.svelte
RepoHeader.svelte
RepoIndexPanelSkeleton.svelte
RepoIndexView.stories.svelte
RepoIndexView.svelte
RepoReadmeSkeleton.svelte
RepoTabs.stories.svelte
RepoTabs.svelte
RepoToolbar.stories.svelte
RepoToolbar.svelte
SourceSelector.svelte
StarButton.stories.svelte
StarButton.svelte
StarredBy.bones.stories.svelte
StarredBy.svelte
StarredByContent.svelte
SubscribeButton.stories.svelte
SubscribeButton.svelte
TagCard.stories.svelte
TagCard.svelte
TagList.stories.svelte
TagList.svelte
TopicList.stories.svelte
TopicList.svelte
TreeHeader.stories.svelte
TreeHeader.svelte
TreeView.bones.stories.svelte
types.ts
urls.ts
Readme.svelte
<script lang="ts">
	import FileText from "$icon/file-text";
	import Card from "$lib/components/ui/Card.svelte";
	import { enhanceCodeblocks } from "$lib/markup/highlight";

	interface Props {
		filename: string;
		contents: string;
		html?: string | null;
	}

	let { filename, contents, html = null }: Props = $props();
</script>

<Card padding="none" class="mt-4 w-full overflow-hidden">
	<div class="border-b border-border-default px-4 py-2">
		<span class="flex items-center gap-2">
			<FileText class="size-4 text-foreground-subtle" aria-hidden="true" />
			<span class="typography-monospace-small text-foreground-muted">{filename}</span>
		</span>
	</div>
	{#if html}
		<div class="markup overflow-x-auto px-6 py-4" use:enhanceCodeblocks={html}>
			<!-- eslint-disable-next-line svelte/no-at-html-tags -- sanitised in $lib/markup -->
			{@html html}
		</div>
	{:else}
		<div class="overflow-x-auto px-6 py-4">
			<pre
				class="typography-monospace-small whitespace-pre text-foreground-default">{contents}</pre>
		</div>
	{/if}
</Card>