Initial Build

This commit is contained in:
Alex 2026-06-03 17:18:50 -07:00
parent 71cd3acccd
commit 6c0d9a3f98
140 changed files with 9802 additions and 2403 deletions

View file

@ -3,14 +3,17 @@
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22></text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>AD</text></svg>">
{% block stylesheets %}
{% endblock %}
{% block javascripts %}
{% block importmap %}{{ importmap('app') }}{% endblock %}
{% block importmap %}{{ importmap('main') }}{% endblock %}
{% endblock %}
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="turbo-prefetch" content="false">
{% set frankenphpHotReload = app.request.server.get('FRANKENPHP_HOT_RELOAD') %}
{% if frankenphpHotReload %}
<meta name="frankenphp-hot-reload:url" content="{{ frankenphpHotReload }}">
@ -18,7 +21,17 @@
<script src="https://cdn.jsdelivr.net/npm/frankenphp-hot-reload/+esm" type="module"></script>
{% endif %}
</head>
<body>
{% block body %}{% endblock %}
<body class="secondary layout--v1 {{ app.user ? 'auth': '' }}">
<div id="root">
<header>
{% block menu %}
{{ include('front/menu/menu.html.twig') }}
{% endblock %}
</header>
<main>
{% block body %}{% endblock %}
</main>
</div>
<div class="overlay"></div>
</body>
</html>

View file

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
{% block stylesheets %}
{% endblock %}
<meta name="turbo-prefetch" content="false">
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/jodit@latest/es2021/jodit.fat.min.css"
/>
<script src="https://cdn.jsdelivr.net/npm/jodit@latest/es2021/jodit.fat.min.js"></script>
{% block javascripts %}
{% block importmap %}{{ importmap(['brain']) }}{% endblock %}
{% endblock %}
{% set frankenphpHotReload = app.request.server.get('FRANKENPHP_HOT_RELOAD') %}
{% if frankenphpHotReload %}
<meta name="frankenphp-hot-reload:url" content="{{ frankenphpHotReload }}">
<script src="https://cdn.jsdelivr.net/npm/idiomorph"></script>
<script src="https://cdn.jsdelivr.net/npm/frankenphp-hot-reload/+esm" type="module"></script>
{% endif %}
</head>
<body class="brain">
<div id="brain-wrapper">
<header>
{% block admin_menu %}
{{ include('brain/menu/menu.html.twig') }}
{% endblock %}
</header>
<div class="page">
{% block page_title %}{% endblock %}
{% block actions %}{% endblock %}
{% block admin %}{% endblock %}
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,15 @@
{% extends 'brain/base.html.twig' %}
{% block title %}Brain{% endblock %}
{% block page_title %}
<h1>Brain</h1>
{% endblock %}
{% block actions %}
this will be some global admin actions
{% endblock %}
{% block admin %}
<p>This will be a dashboard of sorts</p>
{% endblock %}

View file

@ -0,0 +1,31 @@
<nav>
<menu class="level-1">
<li class="level-1--item item"><a href="/">Home</a></li>
<li class="level-1--item item"><a href="/brain">Brain Home</a></li>
<li class="level-1--item sub-menu">
<a class="sub-menu--link" href="/brain/post/list">Posts</a>
<menu class="level-2">
<li class="level-2--item"><a href="/brain/post/new">Add New Post</a></li>
</menu>
</li>
<li class="level-1--item sub-menu">
<a class="sub-menu--link" href="/brain/page/list">Pages</a>
<menu class="level-2">
<li class="level-2--item"><a href="/brain/page/new">Add New Page</a></li>
</menu>
</li>
<li class="level-1--item sub-menu">
<a class="sub-menu--link" href="/brain/photos/list">Photos</a>
<menu class="level-2">
<li class="level-2--item"><a href="/brain/photos/new">Add New Photos</a></li>
</menu>
</li>
<li class="level-1--item sub-menu">
<span class="sub-menu--link">Taxonomy</span>
<menu class="level-2">
<li class="level-2--item"><a href="/brain/category/new">Add New Category</a></li>
<li class="level-2--item"><a href="/brain/tag/new">Add New Tag</a></li>
</menu>
</li>
</menu>
</nav>

View file

@ -0,0 +1,32 @@
{% extends 'brain/base.html.twig' %}
{% block title %}{{ action|capitalize}} Page{% endblock %}
{% block page_title %}<h1>Add New Page</h1>{% endblock %}
{# {% block actions%}Actions here{% endblock %} #}
{% block admin %}
<section class="add-new--post">
{{ form_start(form) }}
<div class="form-errors">
{{ form_errors(form) }}
</div>
<div class="row">
{{ form_row(form.title) }}
</div>
<div class="row">
{{ form_row(form.text) }}
</div>
<div class="row">
{{ form_row(form.url) }}
</div>
<div class="row">
{{ form_row(form.published) }}
</div>
<div class="row">
{{ form_rest(form) }}
</div>
{{ form_end(form) }}
</section>
{% endblock %}

View file

@ -0,0 +1,33 @@
{% extends 'brain/base.html.twig' %}
{% block title %}Pages{% endblock %}
{% block page_title %}<h1>All pages</h1>{% endblock %}
{# {% block actions%}Actions here{% endblock %} #}
{% block admin %}
<div class="list">
<h2><a href="/brain/page/new">New Page</a></h2>
<table class="pages">
<thead>
<tr>
<td>Title</td>
<td>Edit</td>
<td>View</td>
<td>Published</td>
</tr>
</thead>
<tbody>
{% for page in pages %}
<tr>
<td>{{page.title}}</td>
<td><a href="/brain/page/edit/{{page.getId()}}">Edit</a></td>
<td><a href="/{{page.getUrl()}}">View</a><td>
<td>{{page.published == 1 ? 'Yes' : 'No'}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}

View file

@ -0,0 +1,42 @@
{% extends 'brain/base.html.twig' %}
{% block title %}{{ action|capitalize}} Photos{% endblock %}
{% block page_title %}<h1>Add New Photos</h1>{% endblock %}
{% block admin %}
<section class="add-new--post">
{{ form_start(form) }}
<div class="form-errors">
{{ form_errors(form) }}
</div>
<div class="row">
{{ form_row(form.title) }}
</div>
<div class="row">
{{ form_row(form.date) }}
</div>
<div class="row">
{{ form_row(form.category) }}
</div>
<div class="row">
{{ form_row(form.thumbnail) }}
</div>
<div class="row">
{{ form_row(form.text)}}
</div>
<div class="row">
{{ form_row(form.uploads)}}
<button type="button" class="add_item_link" data-collection-holder-id="photos_uploads">Add a photo</button>
</div>
<div class="row">
{{ form_row(form.url) }}
</div>
<div class="row">
{{ form_row(form.save)}}
{{ form_row(form._token)}}
</div>
{{ form_end(form) }}
</section>
{% endblock %}

View file

@ -0,0 +1,35 @@
{% extends 'brain/base.html.twig' %}
{% block title %}Photos{% endblock %}
{% block page_title %}<h1>All Photos</h1>{% endblock %}
{# {% block actions%}Actions here{% endblock %} #}
{% block admin %}
<div class="list">
<h2><a href="/brain/photos/new">New Photos</a></h2>
<table class="posts">
<thead>
<tr>
<td>Title</td>
<td>Date</td>
<td>Category</td>
<td>Edit</td>
<td>View</td>
</tr>
</thead>
<tbody>
{% for photo in photos %}
<tr>
<td>{{photo.title}}</td>
<td>{{photo.getDate()|date('m/d/Y')}}</td>
<td>{{photo.category.getTitle()}}</td>
<td><a href="/brain/photos/edit/{{photo.getId()}}">Edit</a></td>
<td><a href="/photos/{{photo.getUrl()}}">View</a><td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}

View file

@ -0,0 +1,42 @@
{% extends 'brain/base.html.twig' %}
{% block title %}{{ action|capitalize}} Post{% endblock %}
{% block page_title %}<h1>Add New Post</h1>{% endblock %}
{# {% block actions%}Actions here{% endblock %} #}
{% block admin %}
<section class="add-new--post">
{{ form_start(form) }}
<div class="form-errors">
{{ form_errors(form) }}
</div>
<div class="row">
{{ form_row(form.title) }}
</div>
<div class="row">
{{ form_row(form.date) }}
</div>
<div class="row">
{{ form_row(form.text) }}
</div>
<div class="row">
{{ form_row(form.category) }}
</div>
{# <div class="row">
{{ form_row(form.tags) }}
</div> #}
<div class="row">
{{ form_row(form.url) }}
</div>
<div class="row">
{{ form_row(form.published) }}
</div>
<div class="row">
{{ form_rest(form) }}
</div>
{{ form_end(form) }}
</section>
{% endblock %}

View file

@ -0,0 +1,37 @@
{% extends 'brain/base.html.twig' %}
{% block title %}Posts {% endblock %}
{% block page_title %}<h1>All Posts</h1>{% endblock %}
{# {% block actions%}Actions here{% endblock %} #}
{% block admin %}
<div class="list">
<h2><a href="/brain/post/new">New Post</a></h2>
<table class="posts">
<thead>
<tr>
<td>Title</td>
<td>Date</td>
<td>Category</td>
<td>Edit</td>
<td>View</td>
<td>Published</td>
</tr>
</thead>
<tbody>
{% for post in posts %}
<tr>
<td>{{post.title}}</td>
<td>{{post.getDate()|date('m/d/Y')}}</td>
<td>{{post.category.getTitle()}}</td>
<td><a href="/brain/post/edit/{{post.getId()}}">Edit</a></td>
<td><a href="/words/{{post.getUrl()}}">View</a><td>
<td>{{post.published == 1 ? 'Published' : 'Unpublished'}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}

View file

@ -0,0 +1,28 @@
{% extends 'base.html.twig' %}
{% block title %}Categories | Alex Daniels{% endblock %}
{% block body %}
<section class="category">
{% if posts|length %}
<div class="posts">
<h2>Posts</h2>
<ul>
{% for post in posts %}
<li><a href="/words/{{post.url}}">{{post.title}}</a></li>
{% endfor %}
</ul>
</div>
{% endif %}
{% if photos|length %}
<div class="photos">
<h2>Photos</h2>
<ul>
{% for photo in photos %}
<li><a href="/photos/{{photo.url}}">{{photo.title}}</a></li>
{% endfor %}
</ul>
</div>
{% endif %}
</section>
{% endblock %}

View file

@ -0,0 +1,16 @@
{% extends 'base.html.twig' %}
{% block title %}Categories | Alex Daniels{% endblock %}
{% block body %}
<section class="categories">
<h2>Categories</h2>
<ul>
{% for category in categories %}
<li>
<a href="/categories/{{category['urlSafeTitle']}}">{{category['title']}} ({{category['count']}})</a>
</li>
{% endfor %}
</ul>
</section>
{% endblock %}

View file

@ -0,0 +1,138 @@
{% extends 'home.html.twig' %}
{% block title %}My Own Corner Of The Internet | Alex Daniels{% endblock %}
{% block nav %}
<nav>
<h1><a href="/">AD</a></h1>
<i class="icon icon-menu" aria-label="open menu"></i>
<menu class="front-menu">
<li><a href="/words">Writing</a></li>
<li><a href="/photos">Photography</a></li>
<li><a href="/about">About Me</a></li>
{% if app.user %}
<li><a href="/brain">Brain</a></li>
<li><a href="/letmeout">Logout</a></li>
{% endif %}
</menu>
</nav>
{% endblock %}
{% block intro %}
<section id="intro">
<p class="heading">&nbsp;cat ./about.md</p>
</section>
{% endblock %}
{% block body %}
<section id="body">
<p class="about">
hello, i'm alex<br>
i'm a web developer based in portland, oregon<br><br>
in my free time i enjoy hiking, camping, reading, photography, and more<br><br>
welcome to my little corner of the internet
</p>
</section>
{% endblock %}
{% block outro %}
<section id="outro">
<p class="heading">&nbsp;ls ./menu</p>
<div class="menu">
<a data-scroll-to="cool-stuff">some cool stuff</a>
<a data-scroll-to="work">work</a>
<a data-scroll-to="contact">contact</a>
</div>
</section>
<div id="continue" aria-label="continue"><i class="icon icon-arrow-down"></i></div>
{% endblock %}
{% block underFold %}
<section id="cool-stuff">
<h2 class="title">Some Cool Stuff</h2>
<div class="highlights">
<div class="highlight left">
<i class="icon icon-paperclip"></i>
<h3>Item 1</h3>
<img src="/photos/road_trip_test/thumbnail.png">
<p>I took a 6 week road trip across the united states</p>
<a href="/photos">Road Trip</a>
</div>
<div class="highlight middle">
<i class="icon icon-paperclip"></i>
<h3>Item 2</h3>
<img src="/photos/road_trip_test/thumbnail.png">
<p>Some text about a thing longer text asdf 1234</p>
<a href="/words">Project</a>
</div>
<div class="highlight right">
<i class="icon icon-paperclip"></i>
<h3>Item 3</h3>
<img src="/photos/road_trip_test/thumbnail.png">
<p>Some text about a thing</p>
<a href="/about">Project</a>
</div>
</div>
</section>
<section id="work">
<h2 class="title">Work</h2>
<div class="jobs">
<div class="left">
<h3 class="title">Experience</h3>
<div class="wrapper">
<div class="job latest active" data-job-id="job-1">
<h4 class="title">Engine Room Technology Company</h4>
<p><strong>2021-2026</strong> - <em>Remote</em></p>
</div>
<div class="job first" data-job-id="job-2">
<h4 class="title">Eastern Standard</h4>
<p><strong>2016-2021</strong> - <em>Philadelphia, PA</em></p>
</div>
</div>
</div>
<div class="right">
<h3 class="title">Highlights</h3>
<div class="highlights">
<div id="job-1" class="job-highlight show">
<ul>
<li>
item 1
</li>
<li>
item 2
</li>
<li>
item 3
</li>
</ul>
</div>
<div id="job-2" class="job-highlight hide">
<ul>
<li>
2 item 1
</li>
<li>
2 item 2
</li>
<li>
2 item 3
</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<section id="contact">
<h2 class="title">Contact</h2>
<div class="info">
<a href="mailto:hello@alexdaniels.dev" aria-label="email me"><i class="icon icon-email"></i></a>
</div>
</section>
{% endblock %}
{% block footer %}
<p>© 2026 Alex Daniels</p>
{% endblock %}

View file

@ -0,0 +1,14 @@
{% block menu %}
<nav class="home">
<h1>Alex Daniels</h1>
<menu>
<li><a href="/words">Writing</a></li>
<li><a href="/photos">Photography</a></li>
<li><a href="/about">About Me</a></li>
{% if app.user %}
<li><a href="/brain">Brain</a></li>
<li><a href="/letmeout">Logout</a></li>
{% endif %}
</menu>
</nav>
{% endblock %}

View file

@ -0,0 +1,16 @@
<nav class="main">
<div class="top">
<h1 class="title"><a href="/">AD</a></h1>
<i class="icon icon-menu" aria-label="open menu"></i>
</div>
<menu class="menu">
{# <li><a href="/">Home</a></li> #}
<li><a href="/words">Writing</a></li>
<li><a href="/photos">Photography</a></li>
<li><a href="/about">About Me</a></li>
{% if app.user %}
<li><a href="/brain">Brain</a></li>
<li><a href="/letmeout">Logout</a></li>
{% endif %}
</menu>
</nav>

View file

@ -0,0 +1,16 @@
{% extends 'base.html.twig' %}
{% block title %}{{page.title}} | Alex Daniels{% endblock %}
{% block body %}
<section class="page">
<h2>{{page.title}}</h2>
{% if app.user %}
<a href="/brain/page/edit/{{page.id}}">Edit</a><br>
{% endif %}
<div class="text">
{{ page.text|raw}}
</div>
</section>
{% endblock %}

View file

@ -0,0 +1,33 @@
{% extends 'base.html.twig' %}
{% block title %}{{photos['title']}} - Photography | Alex Daniels{% endblock %}
{% block body %}
<article id="album">
<h2 class="title">{{photos['title']}}</h2>
<div class="meta">
<p>{{ photos['date']|date('l M d Y')}}</p>
<p>Filed Under: <a href="/categories/{{photos['urlSafeCategory']}}">{{photos['category']}}</a></p>
</div>
<div class="text">
{{ photos['text']|raw }}
</div>
<ul class="photos">
{% for photo in photos['uploads'] %}
<li class="photo" data-equipment="{{photo['equipment']}}" data-location="{{photo['location']}}" data-caption="{{photo['caption']}}" data-date="{{photo['date']|date('l M d Y')}}" data-url="{{asset(photo['file'])}}" data-alt="{{photo['alt']}}">
<img src="{{asset(photo['file'])}}" alt="{{photo['alt']}}">
</li>
{% endfor %}
</ul>
</article>
<div id="open-image">
<span class="close">X</span>
<img src="" alt="" id="image">
<div id="details">
<p id="caption"></p>
<p id="date"></p>
<p id="location"></p>
<p id="equipment"></p>
</div>
</div>
{% endblock body %}

View file

@ -0,0 +1,25 @@
{% extends 'base.html.twig' %}
{% block title %}Photography | Alex Daniels{% endblock %}
{% block body %}
<h2>Photography</h2>
<div class="photos">
{% if app.user %}
<div class="admin-actions">
<a href="/brain/photos/new">Add New Album</a>
</div>
{% endif %}
<ul class="albums">
{% for album in photos %}
<li class="album">
<a href="/photos/{{album['url']}}">
<h3 class="title">{{album['title']}}</h3>
<img src="{{asset(album['thumbnail'])}}" alt="{{ album['title'] ~ 'Thumbnail'}}">
<p class="date">{{album['date']|date('l M d Y')}}</p>
<div class="overlay"></div>
</a>
</li>
{% endfor %}
</div>
{% endblock body %}

View file

@ -0,0 +1,21 @@
{% extends 'base.html.twig' %}
{% block title %}{{post.title}} - Writing | Alex Daniels{% endblock %}
{% block body %}
<article class="post">
<h2 class="title">{{post.title}}</h2>
<div class="meta">
{% if app.user %}
<div class="admin-actions">
<a href="/brain/post/edit/{{post.id}}">Edit</a>
</div>
{% endif %}
<p class="category">Filed under: <a href="/categories/{{urlSafeCategory}}">{{ post.category.getTitle() }}</a></p>
<time class="published">{{ post.date|date('l M d Y') }}</time>
</div>
<div class="text">
{{ post.text|raw }}
</div>
</article>
{% endblock %}

View file

@ -0,0 +1,24 @@
{% extends 'base.html.twig' %}
{% block title %}Writing | Alex Daniels{% endblock %}
{% block body %}
<section class="posts">
<h2>Writing</h2>
<p class="intro">A truly random smattering of thoughts and feelings. Things may not always be relevant, but they will always be irreverant.</p>
<div class="list">
<h3>Recent</h3>
<ul>
{% for post in posts %}
<li>
<article class="post">
<a href="/categories/{{post['urlSafeCategory']}}" class="category">{{post['category']}}</a>
<a href="/words/{{post['url']}}"><h4 class="title">{{post['title']}}</h4></a>
<time class="published">{{post['date']|date('l M d Y')}}</time>
</article>
</li>
{% endfor %}
</ul>
</div>
</section>
{% endblock %}

View file

@ -0,0 +1,116 @@
{% extends 'base.html.twig' %}
{% block body %}
<div id="colors">
</div>
<div id="topography">
<h1>H1. This is a Page Title.</h1>
<h2>H2. This is a header.</h2>
<h3>H3. This is a medium header.</h3>
<h4>H4. This is a sidebar header.</h4>
<h5>H5. This is a small header.</h5>
<h6>H6. This is a tiny header.</h6>
<p>A general paragraph will look like this.</p>
</div>
<div id="inlineElements">
<p><a href="#">This is a text link</a></p>
<p><strong>Strong is used to indicate strong importance</strong></p>
<p>The <b>b element</b> is stylistically different text from normal text, without any special importance</p>
<p>The <em>i element</em> is text that is set off from the normal text</p>
<p>The <u>u element</u> is text with an unarticulated, though explicitly rendered, non-textual annotation</p>
<p>The <s>s element</s> is text with a strike through denoting cancelization</p>
<p><small>This small text is small for for fine print, etc.</small></p>
<p><q cite="https://developer.mozilla.org/en-US/docs/HTML/Element/q">This text is a short inline quotation</q></p>
<p><cite>This is a citation</cite>
</div>
{# <!-- change the HEX values here -->
<div class="sectionHeading">
<span class="sectionTitle">COLORS</span>
<div class="sectionSeperator"></div>
</div>
<ul id="colors">
<li class="colorCircle color-1">
<div class="colorHex">#C7D6BA</div>
</li>
<li class="colorCircle color-2">
<div class="colorHex">#BAE3C2</div>
</li>
<li class="colorCircle color-3">
<div class="colorHex">#C7EDC2</div>
</li>
<li class="colorCircle color-4">
<div class="colorHex">#E5EDC2</div>
</li>
<li class="colorCircle color-5">
<div class="colorHex">#E3E1BA</div>
</li>
</ul> #}
{# <div class="sectionHeading">
<span class="sectionTitle">FORM ELEMENTS</span>
<div class="sectionSeperator"></div>
</div> #}
{# <div id="formElements">
<form>
<div class="form-item">
<input type="text" placeholder="text field" name="" id="">
</div>
<div class="form-item">
<input type="text" required="required" placeholder="required text field" name="" id="">
</div>
<div class="form-item">
<textarea name="" id="" cols="40" rows="5"></textarea>
</div>
<div class="form-item">
<select name="" id="">
<option value="default">-- Select --</option>
<option value="">Only</option>
<option value="">One</option>
<option value="">Item</option>
</select>
</div>
<div class="form-item">
<select multiple name="" id="">
<option value="">Select</option>
<option value="">Multiple</option>
<option value="">Items</option>
</select>
</div>
<div class="form-item form-type-radios">
<div class="form-item"><input type="radio" name="example-radios" id=""><label for="" class="option">Radio One</label></div>
<div class="form-item"><input type="radio" name="example-radios" id=""><label for="" class="option">Radio Two</label></div>
<div class="form-item"><input type="radio" name="example-radios" id=""><label for="" class="option">Radio Three</label></div>
<div class="form-item"><input type="radio" name="example-radios" id=""><label for="" class="option">Radio Four</label></div>
</div>
<div class="form-item form-type-checkboxes">
<div class="form-item"><input type="checkbox" name="" id=""><label for="">checkbox 1</label></div>
<div class="form-item"><input type="checkbox" name="" id=""><label for="">checkbox 2</label></div>
<div class="form-item"><input type="checkbox" name="" id=""><label for="">checkbox 3</label></div>
<div class="form-item"><input type="checkbox" name="" id=""><label for="">checkbox 4</label></div>
</div>
<div class="form-actions">
<input type="submit" class="form-submit">
<input type="button" value="Cancel" class="form-submit">
</div>
</form>
</div> #}
{% endblock %}

46
templates/home.html.twig Normal file
View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Alex Daniels{% endblock %}</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22></text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>AD</text></svg>">
{% block stylesheets %}
{% endblock %}
{% block javascripts %}
{% block importmap %}{{ importmap('landing') }}{% endblock %}
{% endblock %}
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="turbo-prefetch" content="false">
{% set frankenphpHotReload = app.request.server.get('FRANKENPHP_HOT_RELOAD') %}
{% if frankenphpHotReload %}
<meta name="frankenphp-hot-reload:url" content="{{ frankenphpHotReload }}">
<script src="https://cdn.jsdelivr.net/npm/idiomorph"></script>
<script src="https://cdn.jsdelivr.net/npm/frankenphp-hot-reload/+esm" type="module"></script>
{% endif %}
</head>
<body class="home layout--v1 {{ app.user ? 'auth': '' }}">
<header>
{% block nav %}{% endblock %}
</header>
<main id="root" class="v1">
<div class="top">
<div class="computer">
{% block intro %}{% endblock %}
{% block body %}{% endblock %}
{% block outro %}{% endblock %}
</div>
</div>
<div class="bottom">
<div class="under-fold">
{% block underFold %}{% endblock %}
</div>
</div>
</main>
<footer>
{% block footer %}{% endblock %}
</footer>
</body>
</html>

View file

@ -0,0 +1,18 @@
{% extends 'base.html.twig' %}
{% block title %}Register{% endblock %}
{% block body %}
<h1>Register</h1>
{{ form_errors(registrationForm) }}
{{ form_start(registrationForm) }}
{{ form_row(registrationForm.username) }}
{{ form_row(registrationForm.plainPassword, {
label: 'Password'
}) }}
<button type="submit" class="btn">Register</button>
{{ form_end(registrationForm) }}
{% endblock %}

View file

@ -0,0 +1,38 @@
{% extends 'base.html.twig' %}
{% block title %}Log in!{% endblock %}
{% block body %}
<form method="post">
{% if error %}
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
{% if app.user %}
<div class="mb-3">
You are logged in as {{ app.user.userIdentifier }}, <a href="{{ logout_path() }}">Logout</a>
</div>
{% endif %}
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<label for="username">Username</label>
<input type="text" value="{{ last_username }}" name="_username" id="username" class="form-control" autocomplete="username" required autofocus>
<label for="password">Password</label>
<input type="password" name="_password" id="password" class="form-control" autocomplete="current-password" required>
<input type="hidden" name="_csrf_token" data-controller="csrf-protection" value="{{ csrf_token('authenticate') }}">
{#
Uncomment this section and add a remember_me option below your firewall to activate remember me functionality.
See https://symfony.com/doc/current/security/remember_me.html
<div class="checkbox mb-3">
<input type="checkbox" name="_remember_me" id="_remember_me">
<label for="_remember_me">Remember me</label>
</div>
#}
<button class="btn btn-lg btn-primary" type="submit">
Sign in
</button>
</form>
{% endblock %}