diff options
| author | Xe Iaso <me@xeiaso.net> | 2024-08-21 19:30:58 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2024-08-21 19:30:58 -0400 |
| commit | d9a0fb6435165fd3c6044de9ce8cbb0662fb6628 (patch) | |
| tree | fd20230cb52529531b1e625ecafedb45faba108c /cmd/hdrwtch/web_templ.go | |
| parent | ed0b9b410b6c0c8478bb3e456d14753a923d06b4 (diff) | |
| download | x-d9a0fb6435165fd3c6044de9ce8cbb0662fb6628.tar.xz x-d9a0fb6435165fd3c6044de9ce8cbb0662fb6628.zip | |
cmd/hdrwtch: make this ready
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd/hdrwtch/web_templ.go')
| -rw-r--r-- | cmd/hdrwtch/web_templ.go | 75 |
1 files changed, 44 insertions, 31 deletions
diff --git a/cmd/hdrwtch/web_templ.go b/cmd/hdrwtch/web_templ.go index 9f47e35..d8070e5 100644 --- a/cmd/hdrwtch/web_templ.go +++ b/cmd/hdrwtch/web_templ.go @@ -109,7 +109,7 @@ func notFoundPage() templ.Component { templ_7745c5c3_Var6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<p class=\"my-4\">If you expected to find a page here, this ain't it chief. Try <a href=\"/\">going home</a>.</p>") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<section class=\"relative h-screen mb-0 md:h-[350px] mt-8\"><div class=\"container mx-auto h-full flex items-center justify-center bg-contain overflow-hidden bg-center bg-no-repeat xe-hero-image rounded-lg\"><div class=\"frosted-glass p-10 text-center\"><h1 class=\"text-4xl font-extrabold text-blue-600\">Not found</h1><p class=\"mt-4 text-lg text-gray-700\">If you expected to find a page here, this ain't it chief. Try <a href=\"/\">going home</a>.</p><a href=\"/\" class=\"mt-8 inline-block bg-blue-600 text-white font-semibold py-3 px-6 rounded shadow hover:bg-blue-700\">Go home</a></div></div></section>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -142,7 +142,7 @@ func base(title string, head, navbar, body templ.Component) templ.Component { var templ_7745c5c3_Var8 string templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 24, Col: 17} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 32, Col: 17} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -162,7 +162,7 @@ func base(title string, head, navbar, body templ.Component) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script async src=\"https://cdn.jsdelivr.net/npm/sweetalert2@11\"></script></head><body class=\"flex items-start justify-center h-full bg-gray-50 my-4\"><div class=\"w-full max-w-4xl px-2\">") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script async src=\"https://cdn.jsdelivr.net/npm/sweetalert2@11\"></script></head><body class=\"flex items-start justify-center h-full bg-gray-50 my-4\"><div class=\"w-full max-w-5xl px-2 m-4\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -172,28 +172,41 @@ func base(title string, head, navbar, body templ.Component) templ.Component { return templ_7745c5c3_Err } } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<h1 class=\"my-2 pt-4 mt-0 text-3xl font-medium leading-tight text-primary\">") + templ_7745c5c3_Err = body.Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var9 string - templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(title) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 37, Col: 12} - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + templ_7745c5c3_Err = footer().Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h1>") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></body></html>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = body.Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err + return templ_7745c5c3_Err + }) +} + +func footer() templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<footer class=\"mt-2 bg-neutral-200 text-center dark:bg-neutral-700 lg:text-left\"><div class=\"p-4 text-neutral-700 dark:text-neutral-200\">Made by <a class=\"text-neutral-800 dark:text-neutral-400\" href=\"https://xeiaso.net\">Xe Iaso</a>.</div></footer></div></body></html>") + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var9 := templ.GetChildren(ctx) + if templ_7745c5c3_Var9 == nil { + templ_7745c5c3_Var9 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<footer class=\"mt-4\"><div class=\"mx-auto max-w-7xl overflow-hidden px-6 py-20 sm:py-24 lg:px-8\"><nav class=\"-mb-6 columns-2 sm:flex sm:justify-center sm:space-x-12\" aria-label=\"Footer\"><div class=\"pb-6\"><a href=\"/\" class=\"text-sm leading-6 text-gray-600 hover:text-gray-900\">Home</a></div><div class=\"pb-6\"><a href=\"/docs/\" class=\"text-sm leading-6 text-gray-600 hover:text-gray-900\">Docs</a></div><div class=\"pb-6\"><a href=\"/docs/pricing\" class=\"text-sm leading-6 text-gray-600 hover:text-gray-900\">Pricing</a></div></nav><div class=\"mt-10 flex justify-center space-x-10\"><a href=\"https://x.com/theprincessxena\" class=\"text-gray-400 hover:text-gray-500\"><span class=\"sr-only\">X</span> <svg class=\"h-6 w-6\" fill=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M13.6823 10.6218L20.2391 3H18.6854L12.9921 9.61788L8.44486 3H3.2002L10.0765 13.0074L3.2002 21H4.75404L10.7663 14.0113L15.5685 21H20.8131L13.6819 10.6218H13.6823ZM11.5541 13.0956L10.8574 12.0991L5.31391 4.16971H7.70053L12.1742 10.5689L12.8709 11.5655L18.6861 19.8835H16.2995L11.5541 13.096V13.0956Z\"></path></svg></a> <a href=\"https://github.com/Xe\" class=\"text-gray-400 hover:text-gray-500\"><span class=\"sr-only\">GitHub</span> <svg class=\"h-6 w-6\" fill=\"currentColor\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z\" clip-rule=\"evenodd\"></path></svg></a></div><p class=\"mt-10 text-center text-xs leading-5 text-gray-500\">© 2024 <a href=\"https://xeiaso.net\" class=\"underline\">Xe Iaso</a>. All rights reserved.</p></div></footer>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -249,7 +262,7 @@ func anonNavBar(showLogin bool) templ.Component { templ_7745c5c3_Var11 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<nav class=\"relative flex items-center justify-between sm:h-10 md:justify-center pb-4\" aria-label=\"Global\"><div class=\"flex items-center flex-1 md:absolute md:inset-y-0 md:left-0\"><div class=\"flex items-center justify-between w-full md:w-auto\"><a href=\"/\"><span class=\"sr-only\">hdrwtch</span> <img class=\"w-auto h-8 sm:h-10\" src=\"/static/img/logo.svg\" loading=\"lazy\" width=\"40\" height=\"40\"></a><div class=\"flex -mr-2 md:hidden\"><button class=\"inline-flex items-center justify-center p-2 text-gray-400 bg-gray-50 rounded-md hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-gray-50\" type=\"button\" aria-expanded=\"false\"><svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" aria-hidden=\"true\" class=\"w-6 h-6\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4 6h16M4 12h16M4 18h16\"></path></svg></button></div></div></div><div class=\"hidden md:flex md:space-x-10 list-none\"><li><a href=\"/pricing\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Pricing</a></li><li><a href=\"/docs/\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Docs</a></li></div><div class=\"hidden md:absolute md:flex md:items-center md:justify-end md:inset-y-0 md:right-0\">") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<nav class=\"relative flex items-center justify-between sm:h-10 md:justify-center pb-4\" aria-label=\"Global\"><div class=\"flex items-center flex-1 md:absolute md:inset-y-0 md:left-0\"><div class=\"flex items-center justify-between w-full md:w-auto\"><a href=\"/\"><span class=\"sr-only\">hdrwtch</span> <img class=\"w-auto h-8 sm:h-10\" src=\"/static/img/logo.svg\" loading=\"lazy\" width=\"40\" height=\"40\"></a><div class=\"flex -mr-2 md:hidden\"><button class=\"inline-flex items-center justify-center p-2 text-gray-400 bg-gray-50 rounded-md hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-gray-50\" type=\"button\" aria-expanded=\"false\"><svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" aria-hidden=\"true\" class=\"w-6 h-6\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4 6h16M4 12h16M4 18h16\"></path></svg></button></div></div></div><div class=\"hidden md:flex md:space-x-10 list-none\"><li><a href=\"/docs/pricing\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Pricing</a></li><li><a href=\"/docs/\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Docs</a></li></div><div class=\"hidden md:absolute md:flex md:items-center md:justify-end md:inset-y-0 md:right-0\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -285,14 +298,14 @@ func authedNavBar(userData *TelegramUser) templ.Component { templ_7745c5c3_Var12 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<nav class=\"relative flex items-center justify-between sm:h-10 md:justify-center pb-4\" aria-label=\"Global\"><div class=\"flex items-center flex-1 md:absolute md:inset-y-0 md:left-0\"><div class=\"flex items-center justify-between w-full md:w-auto\"><a href=\"/\"><img class=\"w-auto h-8 sm:h-10\" src=\"/static/img/logo.svg\" loading=\"lazy\" width=\"40\" height=\"40\"> <span class=\"ml-2 sr-only\">hdrwtch</span></a><div class=\"flex -mr-2 md:hidden\"><button class=\"inline-flex items-center justify-center p-2 text-gray-400 bg-gray-50 rounded-md hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-gray-50\" type=\"button\" aria-expanded=\"false\"><svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" aria-hidden=\"true\" class=\"w-6 h-6\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4 6h16M4 12h16M4 18h16\"></path></svg></button></div></div></div><div class=\"hidden md:flex md:space-x-10 list-none\"><li><a href=\"/probe\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Probes</a></li><li><a href=\"/pricing\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Pricing</a></li></div><div class=\"hidden md:absolute md:flex md:items-center md:justify-end md:inset-y-0 md:right-0\"><div class=\"inline-flex rounded-full shadow\"><a href=\"/user\" class=\"inline-flex items-center px-4 py-2 text-base text-gray-900 bg-white border border-transparent rounded-full cursor-pointer font-base hover:bg-gray-50\"><div class=\"flex items-center\"><img class=\"inline-block h-10 w-10 rounded-full\" src=\"") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<nav class=\"relative flex items-center justify-between sm:h-10 md:justify-center pb-4\" aria-label=\"Global\"><div class=\"flex items-center flex-1 md:absolute md:inset-y-0 md:left-0\"><div class=\"flex items-center justify-between w-full md:w-auto\"><a href=\"/\"><img class=\"w-auto h-8 sm:h-10\" src=\"/static/img/logo.svg\" loading=\"lazy\" width=\"40\" height=\"40\"> <span class=\"ml-2 sr-only\">hdrwtch</span></a><div class=\"flex -mr-2 md:hidden\"><button class=\"inline-flex items-center justify-center p-2 text-gray-400 bg-gray-50 rounded-md hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-gray-50\" type=\"button\" aria-expanded=\"false\"><svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" aria-hidden=\"true\" class=\"w-6 h-6\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4 6h16M4 12h16M4 18h16\"></path></svg></button></div></div></div><div class=\"hidden md:flex md:space-x-10 list-none\"><li><a href=\"/docs/\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Docs</a></li><li><a href=\"/probe\" class=\"text-base font-normal text-gray-500 list-none hover:text-gray-900\">Probes</a></li></div><div class=\"hidden md:absolute md:flex md:items-center md:justify-end md:inset-y-0 md:right-0\"><div class=\"inline-flex rounded-full shadow\"><a href=\"/user\" class=\"inline-flex items-center px-4 py-2 text-base text-gray-900 bg-white border border-transparent rounded-full cursor-pointer font-base hover:bg-gray-50\"><div class=\"flex items-center\"><img class=\"inline-block h-10 w-10 rounded-full\" src=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } var templ_7745c5c3_Var13 string templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(userData.PhotoURL) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 155, Col: 30} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 189, Col: 30} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) if templ_7745c5c3_Err != nil { @@ -305,7 +318,7 @@ func authedNavBar(userData *TelegramUser) templ.Component { var templ_7745c5c3_Var14 string templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(userData.FirstName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 158, Col: 32} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 192, Col: 32} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) if templ_7745c5c3_Err != nil { @@ -318,7 +331,7 @@ func authedNavBar(userData *TelegramUser) templ.Component { var templ_7745c5c3_Var15 string templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(userData.LastName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 158, Col: 54} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 192, Col: 54} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) if templ_7745c5c3_Err != nil { @@ -331,7 +344,7 @@ func authedNavBar(userData *TelegramUser) templ.Component { var templ_7745c5c3_Var16 string templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs("@") if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 159, Col: 33} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 193, Col: 33} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) if templ_7745c5c3_Err != nil { @@ -340,7 +353,7 @@ func authedNavBar(userData *TelegramUser) templ.Component { var templ_7745c5c3_Var17 string templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(userData.Username) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 159, Col: 54} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 193, Col: 54} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) if templ_7745c5c3_Err != nil { @@ -372,7 +385,7 @@ func homePage() templ.Component { templ_7745c5c3_Var18 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<p class=\"my-4\">WIP</p>") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<section class=\"relative h-screen mb-0 md:h-[350px] mt-8\"><div class=\"container mx-auto h-full flex items-center justify-center bg-contain overflow-hidden bg-center bg-no-repeat xe-hero-image rounded-lg\"><div class=\"frosted-glass p-10 text-center\"><h1 class=\"text-4xl font-extrabold text-blue-600\">Monitor Last-Modified Headers with hdrwtch</h1><p class=\"mt-4 text-lg text-gray-700\">Stay updated with the latest changes on any URL by tracking the Last-Modified headers effortlessly.</p><a href=\"#\" class=\"mt-8 inline-block bg-blue-600 text-white font-semibold py-3 px-6 rounded shadow hover:bg-blue-700\">Get Started</a></div></div></section><!-- Features Section --><section id=\"features\" class=\"py-12\"><div class=\"container mx-auto text-center\"><h2 class=\"text-3xl font-bold text-gray-900\">Features</h2><div class=\"mt-10 grid grid-cols-1 md:grid-cols-3 gap-8\"><div class=\"p-6 bg-white shadow rounded\"><h3 class=\"text-xl font-semibold text-blue-600\">Real-Time Monitoring</h3><p class=\"mt-4 text-gray-600\">Receive instant alerts whenever a Last-Modified header changes on your monitored URLs.</p><a href=\"/docs/alerts\" class=\"mt-4 inline-block bg-blue-600 text-white py-2 px-4 rounded hover:bg-blue-700\">Learn More</a></div><div class=\"p-6 bg-white shadow rounded\"><h3 class=\"text-xl font-semibold text-blue-600\">Customizable Alerts</h3><p class=\"mt-4 text-gray-600\">Set up alerts via Email, Telegram, or webhooks to suit your monitoring needs.</p><a href=\"/docs/alerts\" class=\"mt-4 inline-block bg-blue-600 text-white py-2 px-4 rounded hover:bg-blue-700\">Learn More</a></div><div class=\"p-6 bg-white shadow rounded\"><h3 class=\"text-xl font-semibold text-blue-600\">Detailed Reporting</h3><p class=\"mt-4 text-gray-600\">Access comprehensive reports on the changes detected over time.</p><a href=\"/docs/reports\" class=\"mt-4 inline-block bg-blue-600 text-white py-2 px-4 rounded hover:bg-blue-700\">Learn More</a></div></div></div></section><!-- Pricing Section --><section id=\"pricing\" class=\"py-12\"><div class=\"container mx-auto text-center\"><h2 class=\"text-3xl font-bold text-gray-900\">Pricing</h2><p class=\"mt-4 text-gray-600\">Simple and transparent pricing to suit your needs.</p><div class=\"mt-10 grid grid-cols-1 md:grid-cols-3 gap-8\"><div class=\"p-6 bg-white shadow rounded\"><h3 class=\"text-xl font-semibold text-blue-600\">Free</h3><p class=\"mt-4 text-4xl font-bold text-gray-900\">$0</p><p class=\"mt-2 text-gray-600\">per month</p><ul class=\"mt-4 text-gray-600\"><li>Monitor up to 5 URLs</li><li>Telegram alerts</li><li>Community support</li></ul><a href=\"/login\" class=\"mt-6 inline-block bg-blue-600 text-white py-3 px-6 rounded hover:bg-blue-700\">Choose Plan</a></div><div class=\"p-6 bg-white shadow rounded\"><h3 class=\"text-xl font-semibold text-blue-600\">Pro</h3><p class=\"mt-4 text-4xl font-bold text-gray-900\">$3</p><p class=\"mt-2 text-gray-600\">per month</p><ul class=\"mt-4 text-gray-600\"><li>Monitor up to 50 URLs</li><li>Email & Telegram alerts</li><li>Webhook integration</li></ul><a href=\"/docs/pricing\" class=\"mt-6 inline-block bg-blue-600 text-white py-3 px-6 rounded hover:bg-blue-700\">Choose Plan</a></div><div class=\"p-6 bg-white shadow rounded\"><h3 class=\"text-xl font-semibold text-blue-600\">Enterprise</h3><p class=\"mt-4 text-4xl font-bold text-gray-900\">Custom</p><p class=\"mt-2 text-gray-600\">pricing</p><ul class=\"mt-4 text-gray-600\"><li>Unlimited URLs</li><li>Priority support</li><li>Custom integrations</li></ul><a href=\"/docs/contact\" class=\"mt-6 inline-block bg-blue-600 text-white py-3 px-6 rounded hover:bg-blue-700\">Contact Us</a></div></div></div></section><!-- Contact Section --><!--\n\t<section id=\"contact\" class=\"py-12\">\n\t\t<div class=\"container max-w-xl py-8 bg-white mx-auto text-center\">\n\t\t\t<h2 class=\"text-3xl font-bold text-gray-900\">Contact Us</h2>\n\t\t\t<p class=\"mt-4 text-gray-600\">Have questions? We're here to help.</p>\n\t\t\t<form class=\"mt-10 max-w-lg mx-auto\" hx-post=\"/sales/contact\" hx-trigger=\"submit\" hx-swap=\"outerHTML\">\n\t\t\t\t<div class=\"mb-6\">\n\t\t\t\t\t<input type=\"text\" name=\"name\" placeholder=\"Your Name\" class=\"w-full p-4 bg-white border border-gray-300 rounded\" required/>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"mb-6\">\n\t\t\t\t\t<input type=\"email\" name=\"email\" placeholder=\"Your Email\" class=\"w-full p-4 bg-white border border-gray-300 rounded\" required/>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"mb-6\">\n\t\t\t\t\t<textarea name=\"message\" placeholder=\"Your Message\" class=\"w-full p-4 bg-white border border-gray-300 rounded h-40\" required></textarea>\n\t\t\t\t</div>\n\t\t\t\t<button type=\"submit\" class=\"bg-blue-600 text-white py-3 px-6 rounded hover:bg-blue-700\">Send Message</button>\n\t\t\t</form>\n\t\t</div>\n\t</section>\n\t-->") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -398,14 +411,14 @@ func userPage(tu *TelegramUser, probeCount int64) templ.Component { templ_7745c5c3_Var19 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"flex\"><div class=\"mr-4 flex-shrink-0\"><img class=\"inline-block h-16 w-16 rounded-full\" src=\"") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<h1 class=\"my-2 pt-4 mt-0 text-3xl font-medium leading-tight text-primary\">User Info</h1><div class=\"flex\"><div class=\"mr-4 flex-shrink-0\"><img class=\"inline-block h-16 w-16 rounded-full\" src=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } var templ_7745c5c3_Var20 string templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(tu.PhotoURL) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 177, Col: 21} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 308, Col: 21} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) if templ_7745c5c3_Err != nil { @@ -418,7 +431,7 @@ func userPage(tu *TelegramUser, probeCount int64) templ.Component { var templ_7745c5c3_Var21 string templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(tu.FirstName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 181, Col: 47} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 312, Col: 47} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21)) if templ_7745c5c3_Err != nil { @@ -431,7 +444,7 @@ func userPage(tu *TelegramUser, probeCount int64) templ.Component { var templ_7745c5c3_Var22 string templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(tu.LastName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 181, Col: 63} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 312, Col: 63} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22)) if templ_7745c5c3_Err != nil { @@ -444,7 +457,7 @@ func userPage(tu *TelegramUser, probeCount int64) templ.Component { var templ_7745c5c3_Var23 string templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs("@") if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 182, Col: 24} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 313, Col: 24} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) if templ_7745c5c3_Err != nil { @@ -453,7 +466,7 @@ func userPage(tu *TelegramUser, probeCount int64) templ.Component { var templ_7745c5c3_Var24 string templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(tu.Username) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 182, Col: 39} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 313, Col: 39} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) if templ_7745c5c3_Err != nil { @@ -466,7 +479,7 @@ func userPage(tu *TelegramUser, probeCount int64) templ.Component { var templ_7745c5c3_Var25 string templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint(probeCount)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 183, Col: 63} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 314, Col: 63} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) if templ_7745c5c3_Err != nil { @@ -479,7 +492,7 @@ func userPage(tu *TelegramUser, probeCount int64) templ.Component { var templ_7745c5c3_Var26 string templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint(tu.ProbeLimit)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 183, Col: 95} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web.templ`, Line: 314, Col: 95} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) if templ_7745c5c3_Err != nil { |
