Add Filament admin panel and creative public portfolio site
Adds a Filament admin (Profile settings page plus CRUD resources for Education, Experience, Projects, and Posts) backing a public-facing personal site: hero/about/timeline home page, project showcase, and blog, styled with a dark editorial theme (Fraunces + Instrument Sans). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<x-layouts.app title="Blog" description="Writing on things I'm learning and building.">
|
||||
<section class="mx-auto max-w-3xl px-6 pt-16 pb-8">
|
||||
<p class="font-mono text-sm tracking-widest text-accent uppercase">Writing</p>
|
||||
<h1 class="mt-3 font-display text-5xl font-semibold text-paper">Blog</h1>
|
||||
</section>
|
||||
|
||||
<section class="mx-auto max-w-3xl px-6 pb-16">
|
||||
@if ($posts->isEmpty())
|
||||
<p class="text-paper-dim">No posts yet — check back soon.</p>
|
||||
@else
|
||||
<div class="divide-y divide-white/10">
|
||||
@foreach ($posts as $post)
|
||||
<a href="{{ route('posts.show', $post) }}" class="group flex flex-col gap-1 py-6 sm:flex-row sm:items-baseline sm:gap-6">
|
||||
<span class="font-mono text-xs tracking-wide text-paper-dim uppercase">{{ $post->published_at->format('M j, Y') }}</span>
|
||||
<span class="flex-1">
|
||||
<span class="font-display text-lg text-paper transition group-hover:text-accent">{{ $post->title }}</span>
|
||||
@if ($post->excerpt)
|
||||
<span class="mt-1 block text-sm text-paper-dim">{{ $post->excerpt }}</span>
|
||||
@endif
|
||||
</span>
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="mt-10">
|
||||
{{ $posts->links() }}
|
||||
</div>
|
||||
@endif
|
||||
</section>
|
||||
</x-layouts.app>
|
||||
@@ -0,0 +1,26 @@
|
||||
<x-layouts.app :title="$post->title" :description="$post->excerpt">
|
||||
<article class="mx-auto max-w-3xl px-6 pt-16 pb-24">
|
||||
<a href="{{ route('posts.index') }}" class="text-sm text-paper-dim transition hover:text-accent">← All posts</a>
|
||||
|
||||
<p class="mt-6 font-mono text-xs tracking-wide text-paper-dim uppercase">{{ $post->published_at->format('F j, Y') }}</p>
|
||||
<h1 class="mt-2 font-display text-4xl font-semibold text-paper sm:text-5xl">{{ $post->title }}</h1>
|
||||
|
||||
@if (!empty($post->tags))
|
||||
<div class="mt-4 flex flex-wrap gap-2">
|
||||
@foreach ($post->tags as $tag)
|
||||
<span class="rounded-full bg-accent-soft px-3 py-1 text-xs text-accent">{{ $tag }}</span>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($post->cover_image_url)
|
||||
<img src="{{ $post->cover_image_url }}" alt="{{ $post->title }}" class="mt-10 w-full rounded-2xl border border-white/10">
|
||||
@endif
|
||||
|
||||
@if ($post->body)
|
||||
<div class="prose prose-invert mt-10 max-w-none text-paper-dim prose-headings:font-display prose-headings:text-paper prose-a:text-accent">
|
||||
{!! $post->body !!}
|
||||
</div>
|
||||
@endif
|
||||
</article>
|
||||
</x-layouts.app>
|
||||
Reference in New Issue
Block a user