Browse Source

Merge branch 'master' into branch 'issue#201-format-discrete-headings'

master
silberengel 11 months ago
parent
commit
8a500d516e
No known key found for this signature in database
GPG Key ID: 962BEC8725790894
  1. 2
      src/app.css
  2. 74
      src/lib/components/Preview.svelte
  3. 15
      src/lib/parser.ts
  4. 14
      src/routes/[...catchall]/+page.svelte
  5. 24
      src/styles/publications.css

2
src/app.css

@ -74,7 +74,7 @@
@apply hover:bg-primary-100 dark:hover:bg-primary-800; @apply hover:bg-primary-100 dark:hover:bg-primary-800;
} }
/* Heading */ /* Section headers */
h1.h-leather, h1.h-leather,
h2.h-leather, h2.h-leather,
h3.h-leather, h3.h-leather,

74
src/lib/components/Preview.svelte

@ -150,30 +150,58 @@
</script> </script>
{#snippet sectionHeading(title: string, depth: number)} {#snippet sectionHeading(title: string, depth: number)}
{#if depth === 0} {#if $pharosInstance.isFloatingTitle(rootId)}
<h1 class='h-leather'> {#if depth === 0}
{title} <h1 class='discrete'>
</h1> {title}
{:else if depth === 1} </h1>
<h2 class='h-leather'> {:else if depth === 1}
{title} <h2 class='discrete'>
</h2> {title}
{:else if depth === 2} </h2>
<h3 class='h-leather'> {:else if depth === 2}
{title} <h3 class='discrete'>
</h3> {title}
{:else if depth === 3} </h3>
<h4 class='h-leather'> {:else if depth === 3}
{title} <h4 class='discrete'>
</h4> {title}
{:else if depth === 4} </h4>
<h5 class='h-leather'> {:else if depth === 4}
{title} <h5 class='discrete'>
</h5> {title}
</h5>
{:else}
<h6 class='discrete'>
{title}
</h6>
{/if}
{:else} {:else}
<h6 class='h-leather'> {#if depth === 0}
{title} <h1 class='h-leather'>
</h6> {title}
</h1>
{:else if depth === 1}
<h2 class='h-leather'>
{title}
</h2>
{:else if depth === 2}
<h3 class='h-leather'>
{title}
</h3>
{:else if depth === 3}
<h4 class='h-leather'>
{title}
</h4>
{:else if depth === 4}
<h5 class='h-leather'>
{title}
</h5>
{:else}
<h6 class='h-leather'>
{title}
</h6>
{/if}
{/if} {/if}
{/snippet} {/snippet}

15
src/lib/parser.ts

@ -270,6 +270,21 @@ export default class Pharos {
return block.convert(); return block.convert();
} }
/**
* Checks if the node with the given ID is a floating title (discrete header).
* @param id The ID of the node to check.
* @returns True if the node is a floating title, false otherwise.
*/
isFloatingTitle(id: string): boolean {
const normalizedId = this.normalizeId(id);
if (!normalizedId || !this.nodes.has(normalizedId)) {
return false;
}
const context = this.eventToContextMap.get(normalizedId);
return context === 'floating_title';
}
/** /**
* Updates the `content` field of a Nostr event in-place. * Updates the `content` field of a Nostr event in-place.
* @param dTag The d tag of the event to update. * @param dTag The d tag of the event to update.

14
src/routes/[...catchall]/+page.svelte

@ -0,0 +1,14 @@
<script lang="ts">
import { page } from '$app/stores';
import { goto } from '$app/navigation';
import { Button, P } from 'flowbite-svelte';
</script>
<div class="leather flex flex-col items-center justify-center min-h-screen text-center px-4">
<h1 class="h-leather mb-4">404 - Page Not Found</h1>
<P class="note-leather mb-6">The page you are looking for does not exist or has been moved.</P>
<div class="flex space-x-4">
<Button class="btn-leather !w-fit" on:click={() => goto('/')}>Return to Home</Button>
<Button class="btn-leather !w-fit" outline on:click={() => window.history.back()}>Go Back</Button>
</div>
</div>

24
src/styles/publications.css

@ -229,4 +229,28 @@
.audioblock .content audio { .audioblock .content audio {
@apply w-full; @apply w-full;
} }
/* Discrete headers */
h3.discrete,
h4.discrete,
h5.discrete,
h6.discrete {
@apply text-gray-800 dark:text-gray-300;
}
h3.discrete {
@apply text-2xl font-bold;
}
h4.discrete {
@apply text-xl font-bold;
}
h5.discrete {
@apply text-lg font-semibold;
}
h6.discrete {
@apply text-base font-semibold;
}
} }
Loading…
Cancel
Save