increase performance
This commit is contained in:
parent
652c08f556
commit
709a796285
@ -1,12 +1,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import "../app.css";
|
import "../app.css";
|
||||||
import "../app.pcss";
|
import "../app.pcss";
|
||||||
import { partytownSnippet } from "@builder.io/partytown/integration";
|
//import { partytownSnippet } from "@builder.io/partytown/integration";
|
||||||
import { Toaster } from "svelte-sonner";
|
import { Toaster } from "svelte-sonner";
|
||||||
import "@bprogress/core/css";
|
import "@bprogress/core/css";
|
||||||
import { BProgress } from "@bprogress/core";
|
import { BProgress } from "@bprogress/core";
|
||||||
|
|
||||||
import { ModeWatcher, setMode, mode } from "mode-watcher";
|
import { ModeWatcher, setMode, mode } from "mode-watcher";
|
||||||
import { page } from "$app/stores";
|
import { page } from "$app/stores";
|
||||||
|
|
||||||
import Footer from "$lib/components/Footer.svelte";
|
import Footer from "$lib/components/Footer.svelte";
|
||||||
@ -55,7 +55,6 @@
|
|||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
|
|
||||||
|
|
||||||
let hideHeader = false;
|
let hideHeader = false;
|
||||||
BProgress.configure({
|
BProgress.configure({
|
||||||
showSpinner: false,
|
showSpinner: false,
|
||||||
@ -129,13 +128,15 @@
|
|||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
if (data?.user?.id) {
|
if (data?.user?.id) {
|
||||||
await loadWorker();
|
await loadWorker();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await checkMarketHour();
|
await checkMarketHour();
|
||||||
|
/*
|
||||||
if ($showCookieConsent === true) {
|
if ($showCookieConsent === true) {
|
||||||
Cookie = (await import("$lib/components/Cookie.svelte")).default;
|
Cookie = (await import("$lib/components/Cookie.svelte")).default;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (window?.innerWidth <= 768) {
|
if (window?.innerWidth <= 768) {
|
||||||
await detectSWUpdate();
|
await detectSWUpdate();
|
||||||
@ -229,9 +230,7 @@
|
|||||||
isAfterMarketClose.set(isAfterMarketCloseValue);
|
isAfterMarketClose.set(isAfterMarketCloseValue);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async function handleModeChange() {
|
||||||
|
|
||||||
async function handleModeChange() {
|
|
||||||
const newMode = $mode === "light" ? "dark" : "light";
|
const newMode = $mode === "light" ? "dark" : "light";
|
||||||
setMode(newMode);
|
setMode(newMode);
|
||||||
|
|
||||||
@ -239,7 +238,7 @@
|
|||||||
await fetch("/api/theme-mode", {
|
await fetch("/api/theme-mode", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ mode: newMode })
|
body: JSON.stringify({ mode: newMode }),
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Failed to update theme:", error);
|
console.error("Failed to update theme:", error);
|
||||||
@ -249,6 +248,7 @@
|
|||||||
|
|
||||||
<svelte:window bind:innerWidth={$screenWidth} />
|
<svelte:window bind:innerWidth={$screenWidth} />
|
||||||
|
|
||||||
|
<!--
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
<script>
|
<script>
|
||||||
// Forward the necessary functions to the web worker layer
|
// Forward the necessary functions to the web worker layer
|
||||||
@ -273,12 +273,15 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
-->
|
||||||
|
|
||||||
<ModeWatcher defaultMode={data?.themeMode} />
|
<ModeWatcher defaultMode={data?.themeMode} />
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="app text-muted dark:text-white {$page?.url?.pathname === '/'
|
||||||
<div class="app text-muted dark:text-white {$page?.url?.pathname === '/' ? 'bg-[#000]' : ''}">
|
? 'bg-[#000]'
|
||||||
|
: ''}"
|
||||||
|
>
|
||||||
<div class="flex min-h-screen w-full flex-col bg-white dark:bg-default">
|
<div class="flex min-h-screen w-full flex-col bg-white dark:bg-default">
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<div
|
<div
|
||||||
@ -286,7 +289,7 @@
|
|||||||
$screenWidth < 640 &&
|
$screenWidth < 640 &&
|
||||||
hideHeader
|
hideHeader
|
||||||
? 'invisible -mt-20'
|
? 'invisible -mt-20'
|
||||||
: ''} top-0 z-40 bg-white dark:bg-default shadow shadow-b shadow-md dark:border-b dark:border-gray-800 flex h-14 items-center gap-4 px-4 sm:h-auto sm:px-6"
|
: ''} top-0 z-40 bg-white dark:bg-default shadow shadow-b shadow-md dark:border-b dark:border-gray-800 flex h-14 items-center gap-4 px-4 sm:h-auto sm:px-6"
|
||||||
>
|
>
|
||||||
<Sheet.Root>
|
<Sheet.Root>
|
||||||
<Sheet.Trigger asChild let:builder>
|
<Sheet.Trigger asChild let:builder>
|
||||||
@ -295,7 +298,9 @@
|
|||||||
size="icon"
|
size="icon"
|
||||||
class="bg-white dark:bg-default text-white sm:hover:bg-gray-200 dark:sm:hover:bg-[#18181B] border-none"
|
class="bg-white dark:bg-default text-white sm:hover:bg-gray-200 dark:sm:hover:bg-[#18181B] border-none"
|
||||||
>
|
>
|
||||||
<Menu class="h-5.5 w-5.5 sm:w-7 sm:h-7 text-muted dark:text-white " />
|
<Menu
|
||||||
|
class="h-5.5 w-5.5 sm:w-7 sm:h-7 text-muted dark:text-white "
|
||||||
|
/>
|
||||||
<span class="sr-only">Toggle Menu</span>
|
<span class="sr-only">Toggle Menu</span>
|
||||||
</Button>
|
</Button>
|
||||||
</Sheet.Trigger>
|
</Sheet.Trigger>
|
||||||
@ -303,7 +308,7 @@
|
|||||||
side="left"
|
side="left"
|
||||||
class="max-w-screen w-full sm:max-w-xs bg-white dark:bg-[#18181B] overflow-y-auto text-muted dark:text-white"
|
class="max-w-screen w-full sm:max-w-xs bg-white dark:bg-[#18181B] overflow-y-auto text-muted dark:text-white"
|
||||||
>
|
>
|
||||||
<nav class=" grid gap-6 text-lg ">
|
<nav class=" grid gap-6 text-lg">
|
||||||
<Sheet.Close asChild let:builder>
|
<Sheet.Close asChild let:builder>
|
||||||
<Button
|
<Button
|
||||||
builders={[builder]}
|
builders={[builder]}
|
||||||
@ -314,7 +319,7 @@
|
|||||||
class="flex items-center gap-4 px-0.5 text-muted dark:text-white text-xl font-semibold"
|
class="flex items-center gap-4 px-0.5 text-muted dark:text-white text-xl font-semibold"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
class="avatar w-9 sm:w-10 rounded-full "
|
class="avatar w-9 sm:w-10 rounded-full"
|
||||||
src="/pwa-192x192.png"
|
src="/pwa-192x192.png"
|
||||||
alt="Stocknear Logo"
|
alt="Stocknear Logo"
|
||||||
/>
|
/>
|
||||||
@ -334,11 +339,13 @@
|
|||||||
class="w-full flex flex-row items-center mr-auto mt-5"
|
class="w-full flex flex-row items-center mr-auto mt-5"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Home class="h-5.5 w-5.5" />
|
<Home class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
<span class="ml-3 text-muted dark:text-white text-[1rem]">Home</span>
|
<span class="ml-3 text-muted dark:text-white text-[1rem]"
|
||||||
|
>Home</span
|
||||||
|
>
|
||||||
</a>
|
</a>
|
||||||
</Button>
|
</Button>
|
||||||
</Sheet.Close>
|
</Sheet.Close>
|
||||||
@ -347,18 +354,18 @@
|
|||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Stock class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Stock
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Stocks</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Stocks</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
>
|
>
|
||||||
<Sheet.Close asChild let:builder>
|
<Sheet.Close asChild let:builder>
|
||||||
<div class="flex flex-col items-start">
|
<div class="flex flex-col items-start">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
builders={[builder]}
|
builders={[builder]}
|
||||||
type="submit"
|
type="submit"
|
||||||
@ -428,8 +435,12 @@
|
|||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Layers class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Layers
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">ETFs</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>ETFs</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -465,12 +476,16 @@
|
|||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center w-full">
|
<div class="flex flex-row items-center w-full">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Analyst class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Analyst
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Analyst</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Analyst</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -511,8 +526,6 @@
|
|||||||
>Analyst Live Flow</a
|
>Analyst Live Flow</a
|
||||||
>
|
>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</Sheet.Close>
|
</Sheet.Close>
|
||||||
</Accordion.Content>
|
</Accordion.Content>
|
||||||
@ -524,8 +537,12 @@
|
|||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Calendar class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Calendar
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Calendar</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Calendar</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -611,14 +628,17 @@
|
|||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row items-center w-full">
|
<div class="flex flex-row items-center w-full">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<HandShake class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<HandShake
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Congress</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Congress</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -654,16 +674,16 @@
|
|||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row items-center w-full">
|
<div class="flex flex-row items-center w-full">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Flow class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Flow
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Flow Feed</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Flow Feed</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -711,11 +731,13 @@
|
|||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center w-full">
|
<div class="flex flex-row items-center w-full">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Tools class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Tools
|
||||||
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto"
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
>Tools</span
|
>Tools</span
|
||||||
>
|
>
|
||||||
@ -723,10 +745,8 @@
|
|||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
>
|
>
|
||||||
|
<Sheet.Close asChild let:builder>
|
||||||
<Sheet.Close asChild let:builder>
|
|
||||||
<div class="flex flex-col items-start">
|
<div class="flex flex-col items-start">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
builders={[builder]}
|
builders={[builder]}
|
||||||
type="submit"
|
type="submit"
|
||||||
@ -738,14 +758,11 @@
|
|||||||
>Options Calculator</a
|
>Options Calculator</a
|
||||||
>
|
>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</Sheet.Close>
|
</Sheet.Close>
|
||||||
|
|
||||||
<Sheet.Close asChild let:builder>
|
<Sheet.Close asChild let:builder>
|
||||||
<div class="flex flex-col items-start">
|
<div class="flex flex-col items-start">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
builders={[builder]}
|
builders={[builder]}
|
||||||
type="submit"
|
type="submit"
|
||||||
@ -757,8 +774,6 @@
|
|||||||
>POTUS Tracker</a
|
>POTUS Tracker</a
|
||||||
>
|
>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</Sheet.Close>
|
</Sheet.Close>
|
||||||
</Accordion.Content>
|
</Accordion.Content>
|
||||||
@ -778,7 +793,7 @@
|
|||||||
>
|
>
|
||||||
<div class="flex flex-row items-center mr-auto">
|
<div class="flex flex-row items-center mr-auto">
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white sm:hover:text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white sm:hover:text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Boxes class="h-5.5 w-5.5" />
|
<Boxes class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
@ -802,11 +817,13 @@
|
|||||||
>
|
>
|
||||||
<div class="flex flex-row items-center mr-auto">
|
<div class="flex flex-row items-center mr-auto">
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white hover:text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white hover:text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Newspaper class="h-5.5 w-5.5" />
|
<Newspaper class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
<span class="ml-3 text-muted dark:text-white text-[1rem]">News</span>
|
<span class="ml-3 text-muted dark:text-white text-[1rem]"
|
||||||
|
>News</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</Button>
|
</Button>
|
||||||
@ -824,11 +841,12 @@
|
|||||||
>
|
>
|
||||||
<div class="flex flex-row items-center mr-auto">
|
<div class="flex flex-row items-center mr-auto">
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white hover:text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white hover:text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Gem class="h-5.5 w-5.5" />
|
<Gem class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
<span class="ml-3 text-muted dark:text-white text-[1rem]"
|
<span
|
||||||
|
class="ml-3 text-muted dark:text-white text-[1rem]"
|
||||||
>Pricing Plan</span
|
>Pricing Plan</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@ -846,7 +864,9 @@
|
|||||||
src="/pwa-192x192.png"
|
src="/pwa-192x192.png"
|
||||||
alt="Stocknear Logo"
|
alt="Stocknear Logo"
|
||||||
/>
|
/>
|
||||||
<span class="text-muted dark:text-white font-semibold ml-2 text-xl">Stocknear</span>
|
<span class="text-muted dark:text-white font-semibold ml-2 text-xl"
|
||||||
|
>Stocknear</span
|
||||||
|
>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@ -903,13 +923,14 @@
|
|||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<button on:click={handleModeChange} class="cursor-pointer w-full sm:hover:bg-gray-300 dark:sm:hover:bg-[#18181B] relative flex cursor-default select-none items-center rounded px-2 py-1.5 text-sm outline-hidden data-disabled:pointer-events-none">
|
<button
|
||||||
|
on:click={handleModeChange}
|
||||||
<span>{$mode === 'light' ? 'Dark' : 'Light'} Mode</span>
|
class="cursor-pointer w-full sm:hover:bg-gray-300 dark:sm:hover:bg-[#18181B] relative flex cursor-default select-none items-center rounded px-2 py-1.5 text-sm outline-hidden data-disabled:pointer-events-none"
|
||||||
|
>
|
||||||
|
<span>{$mode === "light" ? "Dark" : "Light"} Mode</span>
|
||||||
<span class="sr-only">Toggle theme</span>
|
<span class="sr-only">Toggle theme</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
<DropdownMenu.Separator />
|
<DropdownMenu.Separator />
|
||||||
<form class="cursor-pointer" action="/logout" method="POST">
|
<form class="cursor-pointer" action="/logout" method="POST">
|
||||||
<button
|
<button
|
||||||
@ -920,7 +941,20 @@
|
|||||||
<DropdownMenu.Item
|
<DropdownMenu.Item
|
||||||
class="sm:hover:bg-gray-300 dark:sm:hover:bg-[#18181B] cursor-pointer"
|
class="sm:hover:bg-gray-300 dark:sm:hover:bg-[#18181B] cursor-pointer"
|
||||||
>
|
>
|
||||||
<svg class="lucide lucide-log-out mr-2 w-3.5 h-3.5 transform scale-x-[-1]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1="21" x2="9" y1="12" y2="12"></line></svg>
|
<svg
|
||||||
|
class="lucide lucide-log-out mr-2 w-3.5 h-3.5 transform scale-x-[-1]"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"
|
||||||
|
></path><polyline points="16 17 21 12 16 7"
|
||||||
|
></polyline><line x1="21" x2="9" y1="12" y2="12"
|
||||||
|
></line></svg
|
||||||
|
>
|
||||||
<span class="text-start">Logout</span>
|
<span class="text-start">Logout</span>
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</button>
|
</button>
|
||||||
@ -930,12 +964,10 @@
|
|||||||
{:else}
|
{:else}
|
||||||
<a
|
<a
|
||||||
href="/login"
|
href="/login"
|
||||||
class="inline-flex items-center justify-center rounded bg-[#3B82F6] dark:bg-[#fff] text-white dark:text-black px-4 py-2 text-sm font-semibold shadow-xs transition-all duration-150 sm:hover:bg-blue-600 dark:sm:hover:bg-gray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-purple-600"
|
class="inline-flex items-center justify-center rounded bg-[#3B82F6] dark:bg-[#fff] text-white dark:text-black px-4 py-2 text-sm font-semibold shadow-xs transition-all duration-150 sm:hover:bg-blue-600 dark:sm:hover:bg-gray-300 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-purple-600"
|
||||||
>
|
>
|
||||||
Login
|
Login
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -958,12 +990,14 @@
|
|||||||
src="/pwa-192x192.png"
|
src="/pwa-192x192.png"
|
||||||
alt="Stocknear Logo"
|
alt="Stocknear Logo"
|
||||||
/>
|
/>
|
||||||
<span class="text-muted dark:text-white text-xl">Stocknear</span>
|
<span class="text-muted dark:text-white text-xl"
|
||||||
|
>Stocknear</span
|
||||||
|
>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="/" class="flex flex-row items-center ml-9 w-full">
|
<a href="/" class="flex flex-row items-center ml-9 w-full">
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Home class="h-5.5 w-5.5" />
|
<Home class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
@ -974,15 +1008,17 @@
|
|||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="text-muted dark:text-white ">
|
<Accordion.Trigger class="text-muted dark:text-white ">
|
||||||
<Stock class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Stock
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Stocks</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Stocks</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
>
|
>
|
||||||
<div class="flex flex-col items-start">
|
<div class="flex flex-col items-start">
|
||||||
|
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="/industry"
|
href="/industry"
|
||||||
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
||||||
@ -1020,8 +1056,12 @@
|
|||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Layers class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Layers
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">ETFs</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>ETFs</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -1043,12 +1083,16 @@
|
|||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Analyst class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Analyst
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Analyst</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Analyst</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -1064,28 +1108,28 @@
|
|||||||
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
||||||
>Top Analyst Stocks</a
|
>Top Analyst Stocks</a
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="/analysts/analyst-flow"
|
href="/analysts/analyst-flow"
|
||||||
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
||||||
>Analyst Live Flow</a
|
>Analyst Live Flow</a
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</Accordion.Content>
|
</Accordion.Content>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Calendar class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Calendar
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Calendar</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Calendar</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -1119,7 +1163,6 @@
|
|||||||
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
||||||
>Economic Calendar</a
|
>Economic Calendar</a
|
||||||
>
|
>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</Accordion.Content>
|
</Accordion.Content>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
@ -1130,8 +1173,12 @@
|
|||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<HandShake class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<HandShake
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Congress</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Congress</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
|
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
@ -1156,15 +1203,16 @@
|
|||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Flow class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Flow
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto">Flow Feed</span>
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
|
>Flow Feed</span
|
||||||
|
>
|
||||||
</Accordion.Trigger>
|
</Accordion.Trigger>
|
||||||
<Accordion.Content
|
<Accordion.Content
|
||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
@ -1192,11 +1240,13 @@
|
|||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
<div class="flex flex-row items-center ml-9 w-full mt-3">
|
||||||
<Accordion.Root class="w-full">
|
<Accordion.Root class="w-full">
|
||||||
<Accordion.Item value="item-1">
|
<Accordion.Item value="item-1">
|
||||||
<Accordion.Trigger class="">
|
<Accordion.Trigger class="">
|
||||||
<Tools class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1" />
|
<Tools
|
||||||
|
class="h-5.5 w-5.5 mr-3 text-muted dark:text-white ml-1"
|
||||||
|
/>
|
||||||
<span class="text-muted dark:text-white ml-1 mr-auto"
|
<span class="text-muted dark:text-white ml-1 mr-auto"
|
||||||
>Tools</span
|
>Tools</span
|
||||||
>
|
>
|
||||||
@ -1205,9 +1255,7 @@
|
|||||||
class="border-l border-gray-500 ml-2 mt-5"
|
class="border-l border-gray-500 ml-2 mt-5"
|
||||||
>
|
>
|
||||||
<div class="flex flex-col items-start">
|
<div class="flex flex-col items-start">
|
||||||
|
<a
|
||||||
|
|
||||||
<a
|
|
||||||
href="/options-calculator"
|
href="/options-calculator"
|
||||||
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
||||||
>Options Calculator</a
|
>Options Calculator</a
|
||||||
@ -1218,25 +1266,24 @@
|
|||||||
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
class="text-[1rem] text-muted dark:text-white ml-4 mt-4"
|
||||||
>POTUS Tracker</a
|
>POTUS Tracker</a
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</Accordion.Content>
|
</Accordion.Content>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
</Accordion.Root>
|
</Accordion.Root>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="/hedge-funds"
|
href="/hedge-funds"
|
||||||
class="flex flex-row items-center ml-9 w-full mt-3"
|
class="flex flex-row items-center ml-9 w-full mt-3"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Boxes class="h-5.5 w-5.5" />
|
<Boxes class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
<span class="ml-3 text-muted dark:text-white">Hedge Funds</span>
|
<span class="ml-3 text-muted dark:text-white"
|
||||||
|
>Hedge Funds</span
|
||||||
|
>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
@ -1244,7 +1291,7 @@
|
|||||||
class="flex flex-row items-center ml-9 w-full mt-3"
|
class="flex flex-row items-center ml-9 w-full mt-3"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Newspaper class="h-5.5 w-5.5" />
|
<Newspaper class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
@ -1256,11 +1303,13 @@
|
|||||||
class="flex flex-row items-center ml-9 w-full mt-3"
|
class="flex flex-row items-center ml-9 w-full mt-3"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
class="flex h-9 w-9 items-center justify-center rounded-md text-muted dark:text-white md:h-8 md:w-8"
|
||||||
>
|
>
|
||||||
<Gem class="h-5.5 w-5.5" />
|
<Gem class="h-5.5 w-5.5" />
|
||||||
</div>
|
</div>
|
||||||
<span class="ml-3 text-muted dark:text-white">Pricing Plan</span>
|
<span class="ml-3 text-muted dark:text-white"
|
||||||
|
>Pricing Plan</span
|
||||||
|
>
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
</nav>
|
</nav>
|
||||||
@ -1268,10 +1317,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<main class="w-full overflow-y-auto sm:p-4">
|
<main class="w-full overflow-y-auto sm:p-4">
|
||||||
|
|
||||||
|
|
||||||
<slot />
|
<slot />
|
||||||
|
|
||||||
<Toaster position="top-center" />
|
<Toaster position="top-center" />
|
||||||
{#if Cookie && $showCookieConsent === true}
|
{#if Cookie && $showCookieConsent === true}
|
||||||
<Cookie />
|
<Cookie />
|
||||||
@ -1289,7 +1336,7 @@
|
|||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
:root {
|
:root {
|
||||||
--bprogress-color: #00A6F4;
|
--bprogress-color: #00a6f4;
|
||||||
--bprogress-height: 1px;
|
--bprogress-height: 1px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user