This commit is contained in:
@@ -6,7 +6,7 @@ import (
|
||||
)
|
||||
|
||||
templ form(err types.Message, title string) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<div class="bg-gray-100 flex items-center justify-center min-h-screen">
|
||||
<div class="bg-white p-8 rounded-lg shadow-md w-full max-w-md">
|
||||
<h1 class="text-2xl font-bold mb-6 text-center text-gray-800">Sign Up</h1>
|
||||
@@ -69,14 +69,13 @@ templ form(err types.Message, title string) {
|
||||
<div class="mt-6 text-center">
|
||||
<p class="text-sm text-gray-600">
|
||||
Already have an account?
|
||||
<a class="underline" href="/auth/signin" rel="ugc" hx-get="/auth/signin" hx-swap="outerHTML" hx-push-url="true"
|
||||
hx-target="#content" class="font-medium text-indigo-600 hover:text-indigo-500">
|
||||
<a class="underline font-medium text-indigo-600 hover:text-indigo-500" href="/auth/signin" rel="ugc" hx-get="/auth/signin" hx-swap="outerHTML" hx-push-url="true" hx-target="#content">
|
||||
Log in
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/public/validatePassword.js" />
|
||||
<script src="/public/validatePassword.js"></script>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ func form(err types.Message, title string) templ.Component {
|
||||
}()
|
||||
}
|
||||
ctx = templ.InitializeContext(ctx)
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"bg-gray-100 flex items-center justify-center min-h-screen\"><div class=\"bg-white p-8 rounded-lg shadow-md w-full max-w-md\"><h1 class=\"text-2xl font-bold mb-6 text-center text-gray-800\">Sign Up</h1><form action=\"\" method=\"POST\" class=\"space-y-4\"><div><label for=\"username\" class=\"block text-sm font-medium text-gray-700\">Username</label> <input type=\"text\" id=\"username\" name=\"username\" required class=\"mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500\"></div><div><label for=\"password\" class=\"block text-sm font-medium text-gray-700\">Password</label> <input type=\"password\" id=\"password\" name=\"password\" required class=\"mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500\"></div><div><label for=\"confirmPassword\" class=\"block text-sm font-medium text-gray-700\">Confirm Password</label> <input type=\"password\" id=\"confirmPassword\" name=\"confirmPassword\" required class=\"mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500\"></div><div><div id=\"checkContainer\" class=\"flex justify-start mt-1 block w-full px-3 py-2 hidden\"><ul><li class=\"flex items-center py-1\"><div id=\"matchSvgContainer\" class=\"rounded-full p-1 fill-current bg-red-200 text-green-700\"><svg id=\"matchSvgIcon\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path id=\"matchGoodPath\" style=\"display: none;\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path> <path id=\"matchBadPath\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path></svg></div><span id=\"matchStatusText\" class=\"font-medium text-sm ml-3 text-red-700\">Passwords do not match</span></li><li class=\"flex items-center py-1\"><div id=\"uppercaseSvgContainer\" class=\"rounded-full p-1 fill-current bg-red-200 text-green-700\"><svg id=\"uppercaseSvgIcon\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path id=\"uppercaseGoodPath\" style=\"display: none;\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path> <path id=\"uppercaseBadPath\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path></svg></div><span id=\"uppercaseStatusText\" class=\"font-medium text-sm ml-3 text-red-700\">Password must contain at least one uppercase letter</span></li><li class=\"flex items-center py-1\"><div id=\"lengthSvgContainer\" class=\"rounded-full p-1 fill-current bg-red-200 text-green-700\"><svg id=\"lengthSvgIcon\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path id=\"lengthGoodPath\" style=\"display: none;\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path> <path id=\"lengthBadPath\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path></svg></div><span id=\"lengthStatusText\" class=\"font-medium text-sm ml-3 text-red-700\">Password length must be at least 8 characters</span></li></ul></div><button id=\"submit\" type=\"submit\" disabled class=\"w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 disabled:pointer-events-none disabled:opacity-50\">Sign Up</button></div></form><div class=\"mt-6 text-center\"><p class=\"text-sm text-gray-600\">Already have an account? <a class=\"underline\" href=\"/auth/signin\" rel=\"ugc\" hx-get=\"/auth/signin\" hx-swap=\"outerHTML\" hx-push-url=\"true\" hx-target=\"#content\" class=\"font-medium text-indigo-600 hover:text-indigo-500\">Log in</a></p></div></div><script src=\"/public/validatePassword.js\"></script></div>")
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"bg-gray-100 flex items-center justify-center min-h-screen\"><div class=\"bg-white p-8 rounded-lg shadow-md w-full max-w-md\"><h1 class=\"text-2xl font-bold mb-6 text-center text-gray-800\">Sign Up</h1><form action=\"\" method=\"POST\" class=\"space-y-4\"><div><label for=\"username\" class=\"block text-sm font-medium text-gray-700\">Username</label> <input type=\"text\" id=\"username\" name=\"username\" required class=\"mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500\"></div><div><label for=\"password\" class=\"block text-sm font-medium text-gray-700\">Password</label> <input type=\"password\" id=\"password\" name=\"password\" required class=\"mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500\"></div><div><label for=\"confirmPassword\" class=\"block text-sm font-medium text-gray-700\">Confirm Password</label> <input type=\"password\" id=\"confirmPassword\" name=\"confirmPassword\" required class=\"mt-1 block w-full px-3 py-2 bg-white border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500\"></div><div><div id=\"checkContainer\" class=\"flex justify-start mt-1 block w-full px-3 py-2 hidden\"><ul><li class=\"flex items-center py-1\"><div id=\"matchSvgContainer\" class=\"rounded-full p-1 fill-current bg-red-200 text-green-700\"><svg id=\"matchSvgIcon\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path id=\"matchGoodPath\" style=\"display: none;\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path> <path id=\"matchBadPath\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path></svg></div><span id=\"matchStatusText\" class=\"font-medium text-sm ml-3 text-red-700\">Passwords do not match</span></li><li class=\"flex items-center py-1\"><div id=\"uppercaseSvgContainer\" class=\"rounded-full p-1 fill-current bg-red-200 text-green-700\"><svg id=\"uppercaseSvgIcon\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path id=\"uppercaseGoodPath\" style=\"display: none;\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path> <path id=\"uppercaseBadPath\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path></svg></div><span id=\"uppercaseStatusText\" class=\"font-medium text-sm ml-3 text-red-700\">Password must contain at least one uppercase letter</span></li><li class=\"flex items-center py-1\"><div id=\"lengthSvgContainer\" class=\"rounded-full p-1 fill-current bg-red-200 text-green-700\"><svg id=\"lengthSvgIcon\" class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path id=\"lengthGoodPath\" style=\"display: none;\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path> <path id=\"lengthBadPath\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path></svg></div><span id=\"lengthStatusText\" class=\"font-medium text-sm ml-3 text-red-700\">Password length must be at least 8 characters</span></li></ul></div><button id=\"submit\" type=\"submit\" disabled class=\"w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 disabled:pointer-events-none disabled:opacity-50\">Sign Up</button></div></form><div class=\"mt-6 text-center\"><p class=\"text-sm text-gray-600\">Already have an account? <a class=\"underline font-medium text-indigo-600 hover:text-indigo-500\" href=\"/auth/signin\" rel=\"ugc\" hx-get=\"/auth/signin\" hx-swap=\"outerHTML\" hx-push-url=\"true\" hx-target=\"#content\">Log in</a></p></div></div><script src=\"/public/validatePassword.js\"></script></div>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
)
|
||||
|
||||
templ content(title string, err types.Message) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<div class="bg-gray-100 flex items-center justify-center min-h-screen">
|
||||
<div class="bg-white p-8 rounded-lg shadow-md w-full max-w-md">
|
||||
<h1 class="text-2xl font-bold mb-6 text-center text-gray-800">Forgot Password</h1>
|
||||
@@ -53,7 +53,7 @@ templ Main(title string, err types.Message) {
|
||||
}
|
||||
|
||||
templ NewPasswordForm(title string, err types.Message) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<div class="bg-gray-100 flex items-center justify-center min-h-screen">
|
||||
<div class="bg-white p-8 rounded-lg shadow-md w-full max-w-md">
|
||||
<h1 class="text-2xl font-bold mb-6 text-center text-gray-800">Reset Password</h1>
|
||||
@@ -116,13 +116,13 @@ templ NewPasswordForm(title string, err types.Message) {
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script src="/public/validatePassword.js" />
|
||||
<script src="/public/validatePassword.js"></script>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
templ EmailSend(title string) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<style>h1, h2, h3, h4, h5, h6 { font-family: 'Arimo', sans-serif; --font-sans: 'Arimo'; }</style>
|
||||
<style>body { font-family: 'Libre Franklin', sans-serif; --font-sans: 'Libre Franklin'; }</style>
|
||||
<div class="flex flex-col items-center justify-center min-h-[80vh] gap-6">
|
||||
@@ -154,7 +154,7 @@ templ EmailSend(title string) {
|
||||
}
|
||||
|
||||
templ ChangeSuccess(title string) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<style>h1, h2, h3, h4, h5, h6 { font-family: 'Arimo', sans-serif; --font-sans: 'Arimo'; }</style>
|
||||
<style>body { font-family: 'Libre Franklin', sans-serif; --font-sans: 'Libre Franklin'; }</style>
|
||||
<div class="flex flex-col items-center justify-center min-h-[80vh] gap-6">
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
)
|
||||
|
||||
templ form(err types.Message, title string) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<div class="bg-gray-100 flex items-center justify-center min-h-screen">
|
||||
<div class="bg-white p-8 rounded-lg shadow-md w-full max-w-md">
|
||||
<h1 class="text-2xl font-bold mb-6 text-center text-gray-800">Sign Up</h1>
|
||||
@@ -109,14 +109,13 @@ templ form(err types.Message, title string) {
|
||||
<div class="mt-6 text-center">
|
||||
<p class="text-sm text-gray-600">
|
||||
Already have an account?
|
||||
<a class="underline" href="/auth/signin" rel="ugc" hx-get="/auth/signin" hx-swap="outerHTML" hx-push-url="true"
|
||||
hx-target="#content" class="font-medium text-indigo-600 hover:text-indigo-500">
|
||||
<a class="underline font-medium text-indigo-600 hover:text-indigo-500" href="/auth/signin" rel="ugc" hx-get="/auth/signin" hx-swap="outerHTML" hx-push-url="true" hx-target="#content">
|
||||
Log in
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/public/validatePassword.js" />
|
||||
<script src="/public/validatePassword.js"></script>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
@@ -126,7 +125,7 @@ templ Main(title string, err types.Message) {
|
||||
}
|
||||
|
||||
templ EmailSend(title string) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<style>
|
||||
h1,
|
||||
h2,
|
||||
@@ -165,7 +164,7 @@ templ EmailSend(title string) {
|
||||
}
|
||||
|
||||
templ VerifySuccess(title string) {
|
||||
@layout.Base(title){
|
||||
@layout.Base(title) {
|
||||
<style>
|
||||
h1,
|
||||
h2,
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2,8 +2,8 @@ package errorView
|
||||
|
||||
import "github.com/fossyy/filekeeper/view/client/layout"
|
||||
|
||||
templ NotFound(title string){
|
||||
@layout.Base(title){
|
||||
templ NotFound(title string) {
|
||||
@layout.Base(title) {
|
||||
<div class="flex flex-col items-center justify-center w-full min-h-[calc(100vh-1rem)] py-10 text-center gap-4 md:gap-8">
|
||||
<div class="space-y-2">
|
||||
<h1 class="text-4xl font-bold tracking-tighter sm:text-5xl">404 Not Found</h1>
|
||||
@@ -34,8 +34,8 @@ templ NotFound(title string){
|
||||
}
|
||||
}
|
||||
|
||||
templ InternalServerError(title string){
|
||||
@layout.Base(title){
|
||||
templ InternalServerError(title string) {
|
||||
@layout.Base(title) {
|
||||
<main class="container mx-auto px-4 md:px-6">
|
||||
<div class="flex h-screen w-full flex-col items-center justify-center bg-white">
|
||||
<image class="w-32 md:w-64 lg:w-128" src="/public/InternalServerErrorIcon.svg" alt="Cute Icon" />
|
||||
|
||||
@@ -2,7 +2,7 @@ package layout
|
||||
|
||||
import "github.com/fossyy/filekeeper/types"
|
||||
|
||||
templ Base(title string){
|
||||
templ Base(title string) {
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -13,7 +13,7 @@ templ Base(title string){
|
||||
<meta name="author" content="Filekeeper" />
|
||||
<link href="/public/output.css" rel="stylesheet"/>
|
||||
<title>{ title }</title>
|
||||
<script src="https://unpkg.com/htmx.org@1.9.12"></script>
|
||||
<script src="https://unpkg.com/htmx.org@2.0.8"></script>
|
||||
</head>
|
||||
<body>
|
||||
@modal()
|
||||
@@ -26,7 +26,7 @@ templ Base(title string){
|
||||
</html>
|
||||
}
|
||||
|
||||
templ BaseAuth(title string){
|
||||
templ BaseAuth(title string) {
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -109,7 +109,7 @@ templ MainScript() {
|
||||
</script>
|
||||
}
|
||||
|
||||
templ modalScript(){
|
||||
templ modalScript() {
|
||||
<script type="text/javascript">
|
||||
window.modalContainer = document.getElementById('modalContainer');
|
||||
window.closeModalBtn = document.getElementById('closeModal');
|
||||
@@ -215,7 +215,7 @@ templ Footer() {
|
||||
Privacy
|
||||
</a>
|
||||
</nav>
|
||||
<p class="text-sm text-gray-500">© 2024 Filekeeper. All rights reserved.</p>
|
||||
<p class="text-sm text-gray-500">© 2026 Filekeeper. All rights reserved.</p>
|
||||
</div>
|
||||
</footer>
|
||||
}
|
||||
@@ -44,7 +44,7 @@ func Base(title string) templ.Component {
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</title><script src=\"https://unpkg.com/htmx.org@1.9.12\"></script></head><body>")
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</title><script src=\"https://unpkg.com/htmx.org@2.0.8\"></script></head><body>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
@@ -361,7 +361,7 @@ func Footer() templ.Component {
|
||||
templ_7745c5c3_Var12 = templ.NopComponent
|
||||
}
|
||||
ctx = templ.ClearChildren(ctx)
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<footer class=\"bg-white p-6 md:p-8 w-full bottom-0 border-t border-gray-200 w-full py-8\"><div class=\"container mx-auto flex flex-col items-center justify-between gap-6 md:flex-row\"><div class=\"flex items-center gap-2\"><img src=\"/public/brand.svg\" width=\"48\" height=\"48\" alt=\"Filekeeper Logo\"> <span class=\"text-lg font-semibold\">Filekeeper</span></div><nav class=\"flex flex-wrap items-center justify-center gap-4 text-sm font-medium\"><a class=\"hover:underline\" href=\"#\">Pricing</a> <a class=\"hover:underline\" href=\"#\">About</a> <a class=\"hover:underline\" href=\"#\">Contact</a> <a class=\"hover:underline\" href=\"#\">Terms</a> <a class=\"hover:underline\" href=\"#\">Privacy</a></nav><p class=\"text-sm text-gray-500\">© 2025 Filekeeper. All rights reserved.</p></div></footer>")
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<footer class=\"bg-white p-6 md:p-8 w-full bottom-0 border-t border-gray-200 w-full py-8\"><div class=\"container mx-auto flex flex-col items-center justify-between gap-6 md:flex-row\"><div class=\"flex items-center gap-2\"><img src=\"/public/brand.svg\" width=\"48\" height=\"48\" alt=\"Filekeeper Logo\"> <span class=\"text-lg font-semibold\">Filekeeper</span></div><nav class=\"flex flex-wrap items-center justify-center gap-4 text-sm font-medium\"><a class=\"hover:underline\" href=\"#\">Pricing</a> <a class=\"hover:underline\" href=\"#\">About</a> <a class=\"hover:underline\" href=\"#\">Contact</a> <a class=\"hover:underline\" href=\"#\">Terms</a> <a class=\"hover:underline\" href=\"#\">Privacy</a></nav><p class=\"text-sm text-gray-500\">© 2026 Filekeeper. All rights reserved.</p></div></footer>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
)
|
||||
|
||||
templ content(message types.Message, title string, user types.User, allowance *types.Allowance, ListSession []*session.SessionInfo) {
|
||||
@layout.BaseAuth(title){
|
||||
@layout.BaseAuth(title) {
|
||||
@MainContent(title, user, allowance, ListSession, message)
|
||||
}
|
||||
}
|
||||
@@ -297,7 +297,7 @@ templ MainContent(title string, user types.User, allowance *types.Allowance, Lis
|
||||
allowanceProgress.style.width = `${AllowanceUsedPercent}%`;
|
||||
</script>
|
||||
@layout.MainScript()
|
||||
<script src="/public/validatePassword.js" />
|
||||
<script src="/public/validatePassword.js"></script>
|
||||
}
|
||||
|
||||
templ Main(title string, user types.User, allowance *types.Allowance, ListSession []*session.SessionInfo, message types.Message) {
|
||||
|
||||
Reference in New Issue
Block a user