From e6ffa4864c51d69fb87044aeef5603c31a6fd612 Mon Sep 17 00:00:00 2001 From: wukko Date: Fri, 14 Jun 2024 21:48:57 +0600 Subject: [PATCH] web: omnibox base with meowbalt --- web/package-lock.json | 6 + web/package.json | 1 + web/src/components/save/Omnibox.svelte | 111 ++++++++++++++++++ .../save/buttons/ClearButton.svelte | 15 +++ .../save/buttons/DownloadButton.svelte | 54 +++++++++ web/src/components/sidebar/CobaltLogo.svelte | 2 +- web/src/components/sidebar/Sidebar.svelte | 7 +- web/src/components/sidebar/SidebarTab.svelte | 10 +- web/src/routes/+layout.svelte | 44 ++++++- web/src/routes/+page.svelte | 52 +++++++- web/static/meowbalt/smile.png | Bin 0 -> 16660 bytes 11 files changed, 286 insertions(+), 16 deletions(-) create mode 100644 web/src/components/save/Omnibox.svelte create mode 100644 web/src/components/save/buttons/ClearButton.svelte create mode 100644 web/src/components/save/buttons/DownloadButton.svelte create mode 100644 web/static/meowbalt/smile.png diff --git a/web/package-lock.json b/web/package-lock.json index 318aedaa..fa609f93 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "license": "CC-BY-NC-SA-4.0", "dependencies": { + "@fontsource-variable/noto-sans-mono": "^5.0.20", "@fontsource/ibm-plex-mono": "^5.0.13", "@tabler/icons-svelte": "^3.6.0" }, @@ -403,6 +404,11 @@ "node": ">=12" } }, + "node_modules/@fontsource-variable/noto-sans-mono": { + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@fontsource-variable/noto-sans-mono/-/noto-sans-mono-5.0.20.tgz", + "integrity": "sha512-Mik/wbKjiir7t+KBaDZnPZ5GjDnPOXpMF7obmFeyRa528ZsrKcFiSn4ZvArrn3sJMCp/k23wakOcXOWlGNc9cw==" + }, "node_modules/@fontsource/ibm-plex-mono": { "version": "5.0.13", "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-mono/-/ibm-plex-mono-5.0.13.tgz", diff --git a/web/package.json b/web/package.json index a675b11d..ad8cc3f1 100644 --- a/web/package.json +++ b/web/package.json @@ -30,6 +30,7 @@ "vite": "^5.0.3" }, "dependencies": { + "@fontsource-variable/noto-sans-mono": "^5.0.20", "@fontsource/ibm-plex-mono": "^5.0.13", "@tabler/icons-svelte": "^3.6.0" } diff --git a/web/src/components/save/Omnibox.svelte b/web/src/components/save/Omnibox.svelte new file mode 100644 index 00000000..5926135b --- /dev/null +++ b/web/src/components/save/Omnibox.svelte @@ -0,0 +1,111 @@ + + +
+
+ + + isFocused = true} + on:focus={() => isFocused = true} + on:blur={() => isFocused = false} + + spellcheck="false" + autocomplete="off" + autocapitalize="off" + maxlength="256" + + placeholder="paste the link here" + aria-label="link input area" + > + + {#if link.length > 0} + link = ""} /> + {/if} + {#if validLink(link)} + + {/if} +
+
+ + diff --git a/web/src/components/save/buttons/ClearButton.svelte b/web/src/components/save/buttons/ClearButton.svelte new file mode 100644 index 00000000..76f20d3e --- /dev/null +++ b/web/src/components/save/buttons/ClearButton.svelte @@ -0,0 +1,15 @@ + + + + + diff --git a/web/src/components/save/buttons/DownloadButton.svelte b/web/src/components/save/buttons/DownloadButton.svelte new file mode 100644 index 00000000..a9b09945 --- /dev/null +++ b/web/src/components/save/buttons/DownloadButton.svelte @@ -0,0 +1,54 @@ + + + + + diff --git a/web/src/components/sidebar/CobaltLogo.svelte b/web/src/components/sidebar/CobaltLogo.svelte index aa269f20..9cb25ff2 100644 --- a/web/src/components/sidebar/CobaltLogo.svelte +++ b/web/src/components/sidebar/CobaltLogo.svelte @@ -10,7 +10,7 @@ display: flex; justify-content: center; align-items: center; - padding: calc(var(--sidebar-padding) * 2 - 2px); + padding: calc(var(--padding) * 2 - 2px); } @media screen and (max-width: 535px) { #cobalt-logo { diff --git a/web/src/components/sidebar/Sidebar.svelte b/web/src/components/sidebar/Sidebar.svelte index 43b4cf58..64671620 100644 --- a/web/src/components/sidebar/Sidebar.svelte +++ b/web/src/components/sidebar/Sidebar.svelte @@ -60,7 +60,7 @@ } #sidebar { - background: black; + background: var(--secondary); height: 100vh; position: sticky; width: var(--sidebar-width); @@ -69,7 +69,7 @@ #sidebar-tabs { height: 100%; justify-content: space-between; - padding-bottom: var(--sidebar-padding); + padding-bottom: var(--padding); overflow: scroll; } @@ -94,7 +94,8 @@ display: block; position: absolute; pointer-events: none; - background: linear-gradient(90deg, + background: linear-gradient( + 90deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 4%, rgba(0, 0, 0, 0) 50%, diff --git a/web/src/components/sidebar/SidebarTab.svelte b/web/src/components/sidebar/SidebarTab.svelte index cd86711e..c868295e 100644 --- a/web/src/components/sidebar/SidebarTab.svelte +++ b/web/src/components/sidebar/SidebarTab.svelte @@ -24,15 +24,15 @@ align-items: center; text-align: center; gap: 5px; - padding: var(--sidebar-padding) 5px; - color: var(--accent); + padding: var(--padding) 5px; + color: var(--primary); font-size: var(--sidebar-font-size); opacity: 0.8; } .sidebar-tab.active { - color: var(--background); - background: var(--accent); + color: var(--secondary); + background: var(--primary); opacity: 1; } @@ -42,7 +42,7 @@ @media screen and (max-width: 535px) { .sidebar-tab { - padding: 5px var(--sidebar-padding); + padding: 5px var(--padding); min-width: calc(var(--sidebar-width) / 2); } .sidebar-tab.active { diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index 0ef57b2a..48bb34bd 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -13,20 +13,32 @@ diff --git a/web/static/meowbalt/smile.png b/web/static/meowbalt/smile.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b1824e0eaddd9f358fdc50fb82e7fd5ac19e19 GIT binary patch literal 16660 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 literal 0 HcmV?d00001