From c894c6f440d71d5e3f39151d4216cef2a49063d9 Mon Sep 17 00:00:00 2001
From: wont-stream <143244075+wont-stream@users.noreply.github.com>
Date: Thu, 10 Apr 2025 13:53:31 -0400
Subject: [PATCH] Add initial extension files for halfPage startpage

- Added icon image for the extension.
- Created manifest.json for extension configuration with permissions and new tab override.
- Implemented sidebar component with user settings for name, search engine, weather location, color scheme, and theme selection.
---
 ext/ext.unsigned.zip               | Bin 0 -> 29247 bytes
 ext/icons/icon.png                 | Bin 0 -> 3066 bytes
 ext/manifest.json                  |  20 ++++++
 index.html                         |   4 +-
 src/components/app.tsx             |   2 +
 src/components/container/index.tsx |   6 +-
 src/components/navbar/index.tsx    |  62 ++--------------
 src/components/sidebar/index.tsx   | 109 +++++++++++++++++++++++++++++
 src/index.css                      |   3 +
 src/main.tsx                       |  21 ++++++
 10 files changed, 166 insertions(+), 61 deletions(-)
 create mode 100644 ext/ext.unsigned.zip
 create mode 100644 ext/icons/icon.png
 create mode 100644 ext/manifest.json
 create mode 100644 src/components/sidebar/index.tsx

diff --git a/ext/ext.unsigned.zip b/ext/ext.unsigned.zip
new file mode 100644
index 0000000000000000000000000000000000000000..c55022e2aeb6b460d1969a3e068333adfc2fb835
GIT binary patch
literal 29247
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

literal 0
HcmV?d00001

diff --git a/ext/icons/icon.png b/ext/icons/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..063cfa8f40d2773ce841dea48d343e3940b2b7ee
GIT binary patch
literal 3066
zcmV<W3kCFvP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF000ZYNkl<Zc-q}t
z3vg7`8NNO%0+v!@K|&HB+1-10m+}yh#{@*Nj3TvYC?Z&3gbpAt2_ebe#}dFIP(Tn+
zC`t!9P%IQ8Pivv=SSl?ebwC~yVD~<D^CX+7AdisS|GP`*hGdhy7cwNdGiQM0obUg>
z|GfVHoCCu|`E-W4U&-k7gg@K%j4ZO_WYO^}A8#LaeqNUZU1IKM8rhdOo%w+;JEglK
zv7;4<8}H{GBk}L!vy$47miuA`Lglk_Z0(dxTW?ixWNH%o7ggdkRdN<-5_d-7*|ish
zl)i@tGY?uN3ma!9wrhQMwyh(aT#(MRWXzDf?E@EZQUu33;(1Q-I*V1wC94v9z(*RO
z1)A!0L_zvbTB<_wAVp-~Q@u`E^SW+m^WA#2LO)X^=PAWw|2am96~gB-yC%!LL!zGA
zP9(P}f}L0R<gON-c|W)i->;+bg%(2-X@kaEfmA8Jts>f|P;VcjMpvj*)&PqrikJKP
z+&o8rvxF~rIwz_kw?&)px>SXwdR>?BGyKl9Gl>JZ)Wy}%LYklr8c%0Aeq0UY<kYxU
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
IM6N<$f{=>XX#fBK

literal 0
HcmV?d00001

diff --git a/ext/manifest.json b/ext/manifest.json
new file mode 100644
index 0000000..308531a
--- /dev/null
+++ b/ext/manifest.json
@@ -0,0 +1,20 @@
+{
+  "manifest_version": 3,
+  "name": "halfPage",
+  "description": "Use halfPage as your Startpage.",
+  "version": "0.0.1",
+  "browser_specific_settings": {
+    "gecko": {
+      "id": "halfPage@new-tab.ipv4.army"
+    }
+  },
+  "optional_permissions": [
+    "geolocation"
+  ],
+  "icons": {
+    "64": "icons/icon.png"
+  },
+  "chrome_url_overrides": {
+    "newtab": "dist/index.html"
+  }
+}
\ No newline at end of file
diff --git a/index.html b/index.html
index 5ebbd88..5f7b81a 100644
--- a/index.html
+++ b/index.html
@@ -1,10 +1,10 @@
 <!doctype html>
-<html lang="en" data-bs-theme="dark" data-bs-core="default">
+<html lang="en" data-bs-theme="dark" data-bs-core="default" id="html">
   <head>
     <meta charset="UTF-8" />
     <link rel="icon" type="image/svg+xml" href="/favicon.svg" id="favicon" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="color-scheme" content="dark">
+    <meta name="color-scheme" content="light dark">
     <meta name="description" content="A New Tab Page." />
     <title>New Tab</title>
   </head>
diff --git a/src/components/app.tsx b/src/components/app.tsx
index 56caeda..9274b62 100644
--- a/src/components/app.tsx
+++ b/src/components/app.tsx
@@ -1,5 +1,6 @@
 import Navbar from './navbar';
 import Container from './container';
+import Sidebar from './sidebar';
 
 import './app.css';
 
@@ -8,6 +9,7 @@ export default () => {
     <>
       <Navbar />
       <Container />
+      <Sidebar />
     </>
   )
 }
diff --git a/src/components/container/index.tsx b/src/components/container/index.tsx
index b92c381..f6455df 100644
--- a/src/components/container/index.tsx
+++ b/src/components/container/index.tsx
@@ -2,11 +2,11 @@ export default () => {
     return (
         <>
             <div class="container bg-body-tertiary shadow text-center position-absolute top-50 start-50 translate-middle mx-auto py-4">
-                <h6 class="display-4">Hello, Seth.</h6>
+                <h6 class="display-4">Hello, {localStorage.getItem("name")}.</h6>
                 <br />
                 <br />
-                <form role="search" action={"https://www.google.com/search"} method="get">
-                    <input class="form-control me-2" autoFocus type="search" placeholder="Search with Google" aria-label="Search with Google" name="q" />
+                <form role="search" action={localStorage.getItem("searchEngine") || ""} method="get">
+                    <input class="form-control me-2" autoFocus type="search" placeholder={`Search with ${localStorage.getItem("searchEngineName")}`} aria-label="Search with Google" name="q" />
                 </form>
             </div>
         </>
diff --git a/src/components/navbar/index.tsx b/src/components/navbar/index.tsx
index 765a6c3..63e1b5a 100644
--- a/src/components/navbar/index.tsx
+++ b/src/components/navbar/index.tsx
@@ -1,72 +1,22 @@
 import { useState } from 'preact/hooks';
 import { ChevronLeft, ChevronRight } from 'lucide-preact';
 
-import desc from "./desc.json";
-
-const favicon = document.getElementById("favicon") as HTMLLinkElement;
-
-const fetchWeather = async (lat: number, long: number) => {
-    const req = await fetch(`https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${long}&current=temperature_2m,is_day,weather_code&timezone=${Intl.DateTimeFormat().resolvedOptions().timeZone}`)
-    const res = await req.json();
-
-    return res as {
-        current: {
-            temperature_2m: number,
-            is_day: number;
-            weather_code: number;
-        }
-    }
-}
-
 export default () => {
-    const [weather, setWeather] = useState<string>("Loading...");
-    const [imgSrc, setSrc] = useState<string>("favicon.svg");
     const [wttrDesc, setWttrDesc] = useState<string>("Loading...");
 
-    const getWeather = async (coords: GeolocationCoordinates) => {
-        const weather = await fetchWeather(coords.latitude, coords.longitude);
-
-        const weatherCode = weather.current.weather_code;
-        const isDay = weather.current.is_day === 1;
-        const dayOrNight = isDay ? "Day" : "Night";
-        const weatherDesc = desc[weatherCode.toString() as keyof typeof desc][dayOrNight.toLowerCase() as "day" | "night"];
-
-        setWeather(`${weather.current.temperature_2m}°C`);
-        setSrc(weatherDesc.image);
-        favicon.href = weatherDesc.image;
-        setWttrDesc(`${weatherDesc.description} & ${dayOrNight}`);
-    }
-
-    const getAproximateLocation = async () => {
-        const req = await fetch("https://cf.ipv4-army.workers.dev/")
-        const res = await req.json();
-        return await getWeather(res);
-    }
-
-    if ("geolocation" in navigator) {
-        navigator.geolocation.getCurrentPosition((position) => {
-            const coords = position.coords;
-            getWeather(coords);
-        }, getAproximateLocation, {
-            enableHighAccuracy: true,
-            maximumAge: 30 * 60 * 1000, // 30 minutes
-            timeout: 5000
-        });
-    } else {
-        getAproximateLocation();
-    }
+    fetch(`https://wttr.in/${localStorage.getItem("location") || ""}?format=%t%20with%20%C%c&m`)
+        .then(res => res.text())
+        .then(desc => {
+            setWttrDesc(desc.trim());
+        })
 
     return (
         <>
             <nav class="navbar shadow fixed-top" style="background-color: var(--bs-content-bg); border-bottom: var(--bs-border-width) solid var(--bs-content-border-color);">
                 <div class="container-fluid">
                     <div class="navbar-brand">
-                    {wttrDesc}
-                        <img src={imgSrc} alt="Logo" width="24" height="24" class="d-inline-block align-text-top" />
+                        {wttrDesc}
                     </div>
-                    <span class="navbar-text">
-                        {weather}
-                    </span>
                     <div class="d-flex hstack gap-2" role="search">
                         <button type="button" class="btn btn-outline-light btn-sm" onClick={history.back}><ChevronLeft size={20} /></button>
                         <button type="button" class="btn btn-outline-light btn-sm" onClick={history.forward}><ChevronRight size={20} /></button>
diff --git a/src/components/sidebar/index.tsx b/src/components/sidebar/index.tsx
new file mode 100644
index 0000000..a31145e
--- /dev/null
+++ b/src/components/sidebar/index.tsx
@@ -0,0 +1,109 @@
+const dataset = document.getElementById("html")!.dataset;
+
+export default () => {
+    return (
+
+        <nav class="sidebar offcanvas-start offcanvas-md" style={(localStorage.getItem("sidebar") === "false" ? "display: none;" : "")}>
+
+            <div class="offcanvas-header border-bottom border-secondary border-opacity-25">
+
+                <a class="sidebar-brand" href="#">
+                    .
+                </a>
+
+                <button type="button" class="btn-close d-md-none" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#sidebar-example"></button>
+
+            </div>
+
+            <div class="offcanvas-body">
+                <label>Name</label>
+                <form class="d-flex" id="name" onSubmit={(e) => {
+                    e.preventDefault();
+                    const form = document.forms.namedItem("name");
+                    if (form) {
+                        localStorage.setItem("name", form.userName.value);
+                    }
+                }}>
+
+                    <input name="userName" class="form-control me-2" placeholder="Set Name" aria-label="Set Name" />
+
+                    <button class="btn btn-primary" type="submit">Save</button>
+
+                </form>
+                <hr class="sidebar-divider" />
+                <label>Search Engine</label>
+                <form id="searchEngine" onSubmit={(e) => {
+                    e.preventDefault();
+                    const form = document.forms.namedItem("searchEngine");
+                    if (form) {
+                        localStorage.setItem("searchEngine", form.engine.value);
+                        localStorage.setItem("searchEngineName", form.engineName.value);
+                    }
+                }}>
+
+                    <input name="engine" class="form-control me-2" placeholder="e.g. https://google.com/search" aria-label="Set Search Engine" />
+                    <br />
+                    <input name="engineName" class="form-control me-2" placeholder="e.g. Google" aria-label="Set Search Engine Name" />
+                    <br />
+                    <button class="btn btn-primary" type="submit">Save</button>
+
+                </form>
+                <hr class="sidebar-divider" />
+                <label>Weather Location</label>
+                <form class="d-flex" id="weatherLocation" onSubmit={(e) => {
+                    e.preventDefault();
+                    const form = document.forms.namedItem("weatherLocation");
+                    if (form) {
+                        localStorage.setItem("location", form.location.value);
+                    }
+                }}>
+
+                    <input name="location" class="form-control me-2" placeholder="Leave blank for current location" aria-label="Set Search Engine" />
+
+                    <button class="btn btn-primary" type="submit">Save</button>
+
+                </form>
+
+                <hr class="sidebar-divider" />
+                <label>Color Scheme</label>
+                <ul class="nav nav-pills nav-fill">
+                    <li class="nav-item">
+                        <button class="btn btn-primary" onClick={() => { localStorage.setItem("colorScheme", "auto"); location.reload() }}>Auto</button>
+                    </li>
+                    <li class="nav-item">
+                        <button class="btn btn-primary" onClick={() => { localStorage.setItem("colorScheme", "light"); dataset.bsTheme = "light" }}>Light</button>
+                    </li>
+                    <li class="nav-item">
+                        <button class="btn btn-primary" onClick={() => { localStorage.setItem("colorScheme", "dark"); dataset.bsTheme = "dark" }}>Dark</button>
+                    </li>
+                </ul>
+
+                <hr class="sidebar-divider" />
+                <label>Theme</label>
+                <ul class="nav nav-pills nav-fill">
+                    <li class="nav-item">
+                        <button class="btn btn-primary" onClick={() => { localStorage.setItem("theme", "default"); dataset.bsCore = "default" }}>Default</button>
+                    </li>
+                    <li class="nav-item">
+                        <button class="btn btn-primary" onClick={() => { localStorage.setItem("theme", "modern"); dataset.bsCore = "modern" }}>Modern</button>
+                    </li>
+                    <li class="nav-item">
+                        <button class="btn btn-primary" onClick={() => { localStorage.setItem("theme", "elegant"); dataset.bsCore = "elegant" }}>Elegant</button>
+                    </li>
+                </ul>
+                <hr class="sidebar-divider" />
+
+                <button class="btn btn-secondary" onClick={() => {localStorage.setItem("sidebar", "false"); location.reload()}}>Save & Close</button>
+
+                <hr class="sidebar-divider" />
+                <label>About</label>
+                <p>halfPage is a minimalistic startpage, built on only open-source software.</p>
+                <a href="https://www.gethalfmoon.com/wttr">halfmoon</a>
+                <a href="https://github.com/chubin/wttr.in">wttr.in</a>
+                <a href="https://git.creations.works/seth/halfPage">Source</a>
+
+            </div>
+
+        </nav>
+    )
+}
\ No newline at end of file
diff --git a/src/index.css b/src/index.css
index e69de29..2f62af9 100644
--- a/src/index.css
+++ b/src/index.css
@@ -0,0 +1,3 @@
+* {
+    border-color: transparent !important;
+}
\ No newline at end of file
diff --git a/src/main.tsx b/src/main.tsx
index d995293..b1cc976 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,6 +1,27 @@
 import { render } from 'preact'
 import './index.css'
 import 'halfmoon/css/halfmoon.min.css';
+import 'halfmoon/css/cores/halfmoon.modern.css';
+import 'halfmoon/css/cores/halfmoon.elegant.css';
 import App from './components/app.tsx'
 
+const dataset = document.getElementById("html")!.dataset;
+
+const colorScheme = localStorage.getItem("colorScheme") || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light") || "auto";
+if (colorScheme === "auto") {
+    dataset.bsTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
+} else {
+    dataset.bsTheme = colorScheme;
+}
+
+dataset.bsCore = localStorage.getItem("theme") || "default";
+
+const favicon = document.getElementById("favicon") as HTMLLinkElement;
+
+fetch(`https://wttr.in/${localStorage.getItem("location") || ""}?format=%c`)
+.then(res => res.text())
+.then(emoji => {
+    favicon.href = `data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>${emoji.trim()}</text></svg>`
+})
+
 render(<App />, document.getElementById('app')!)