remove paywalls
This commit is contained in:
parent
da6af0c032
commit
5997bcca9a
@ -311,7 +311,6 @@
|
|||||||
|
|
||||||
<div class="text-white text-[1rem] mt-1 sm:mt-3 mb-1 w-full sm:w-5/6">We analyze insights from various analysts to offer both historical and future fundamental data forecasts.</div>
|
<div class="text-white text-[1rem] mt-1 sm:mt-3 mb-1 w-full sm:w-5/6">We analyze insights from various analysts to offer both historical and future fundamental data forecasts.</div>
|
||||||
|
|
||||||
{#if data?.user?.tier === "Pro"}
|
|
||||||
{#if isLoaded}
|
{#if isLoaded}
|
||||||
{#if analystEstimateList?.length !== 0}
|
{#if analystEstimateList?.length !== 0}
|
||||||
<select class="mt-5 mb-5 sm:mb-0 sm:mt-3 ml-1 w-44 select select-bordered select-sm p-0 pl-5 overflow-y-auto bg-[#2A303C]" on:change={changeStatement}>
|
<select class="mt-5 mb-5 sm:mb-0 sm:mt-3 ml-1 w-44 select select-bordered select-sm p-0 pl-5 overflow-y-auto bg-[#2A303C]" on:change={changeStatement}>
|
||||||
@ -451,19 +450,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{:else}
|
|
||||||
<div class="shadow-lg shadow-bg-[#000] bg-[#111112] sm:bg-opacity-[0.5] text-sm sm:text-[1rem] rounded-md w-full p-4 min-h-24 mt-4 text-white m-auto flex justify-center items-center text-center font-semibold">
|
|
||||||
<svg class="mr-1.5 w-5 h-5 inline-block" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"
|
|
||||||
><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z" /></svg
|
|
||||||
>
|
|
||||||
Unlock content with
|
|
||||||
<a class="inline-block ml-2 text-blue-400 hover:sm:text-white" href="/pricing">Pro Subscription</a>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.app {
|
.app {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
|||||||
@ -88,7 +88,6 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if data?.user?.tier === "Pro"}
|
|
||||||
{#if isLoaded}
|
{#if isLoaded}
|
||||||
{#if Object?.keys(rawData)?.length !== 0}
|
{#if Object?.keys(rawData)?.length !== 0}
|
||||||
<div class="w-full flex flex-col items-start">
|
<div class="w-full flex flex-col items-start">
|
||||||
@ -137,14 +136,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{:else}
|
|
||||||
<div class="shadow-lg shadow-bg-[#000] bg-[#111112] sm:bg-opacity-[0.5] text-sm sm:text-[1rem] rounded-md w-full p-4 min-h-24 mt-4 text-white m-auto flex justify-center items-center text-center font-semibold">
|
|
||||||
<svg class="mr-1.5 w-5 h-5 inline-block" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"
|
|
||||||
><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z" /></svg
|
|
||||||
>
|
|
||||||
Unlock content with <a class="inline-block ml-2 text-blue-400 hover:sm:text-white" href="/pricing">Pro Subscription</a>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</main>
|
</main>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@ -88,7 +88,6 @@ $: {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if data?.user?.tier === 'Pro'}
|
|
||||||
|
|
||||||
{#if isLoaded}
|
{#if isLoaded}
|
||||||
|
|
||||||
@ -216,12 +215,7 @@ $: {
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{:else}
|
|
||||||
<div class="shadow-lg shadow-bg-[#000] bg-[#111112] sm:bg-opacity-[0.5] text-sm sm:text-[1rem] rounded-md w-full p-4 min-h-24 mt-4 text-white m-auto flex justify-center items-center text-center font-semibold">
|
|
||||||
<svg class="mr-1.5 w-5 h-5 inline-block"xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"/></svg>
|
|
||||||
Unlock content with <a class="inline-block ml-2 text-blue-400 hover:sm:text-white" href="/pricing">Pro Subscription</a>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@ -184,7 +184,6 @@ $: charNumber = $screenWidth < 640 ? 25 :40;
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if userTier === "Pro"}
|
|
||||||
{#if isLoaded}
|
{#if isLoaded}
|
||||||
{#if Object?.keys(data)?.length !== 0 && totalProductRevenue !== 0}
|
{#if Object?.keys(data)?.length !== 0 && totalProductRevenue !== 0}
|
||||||
<div class="mt-2 pb-4">
|
<div class="mt-2 pb-4">
|
||||||
@ -278,14 +277,7 @@ $: charNumber = $screenWidth < 640 ? 25 :40;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{:else}
|
|
||||||
<div class="shadow-lg shadow-bg-[#000] bg-[#111112] sm:bg-opacity-[0.5] text-sm sm:text-[1rem] rounded-md w-full p-4 min-h-24 mt-4 text-white m-auto flex justify-center items-center text-center font-semibold">
|
|
||||||
<svg class="mr-1.5 w-5 h-5 inline-block" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"
|
|
||||||
><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z" /></svg
|
|
||||||
>
|
|
||||||
Unlock content with <a class="inline-block ml-2 text-blue-400 hover:sm:text-white" href="/pricing">Pro Subscription</a>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</main>
|
</main>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@ -95,17 +95,10 @@ $: {
|
|||||||
|
|
||||||
<div class="flex flex-col w-full max-w-3xl pt-2 pl-2 pr-2 sm:pr-0">
|
<div class="flex flex-col w-full max-w-3xl pt-2 pl-2 pr-2 sm:pr-0">
|
||||||
<span class="text-white text-[1rem] ">
|
<span class="text-white text-[1rem] ">
|
||||||
{data?.user?.tier !== 'Pro' && latestInfoDate(item?.date) ? item?.text?.slice(0,30) + '...' : item?.text }
|
{item?.text }
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if data?.user?.tier !== 'Pro' && latestInfoDate(item?.date)}
|
|
||||||
<a href="/pricing" class="w-full max-w-xl mt-5 text-blue-300 hover:text-white font-medium text-sm flex justify-center items-center">
|
|
||||||
Unlock with Pro Subscription
|
|
||||||
<svg class="ml-1 w-5 h-5 inline-block"xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"/></svg>
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -588,11 +588,8 @@ $: {
|
|||||||
<Card.Header class="p-4">
|
<Card.Header class="p-4">
|
||||||
<Card.Title>Upgrade to Pro</Card.Title>
|
<Card.Title>Upgrade to Pro</Card.Title>
|
||||||
<Card.Description>
|
<Card.Description>
|
||||||
{#if data?.user?.freeTrial === true}
|
{#if !data?.user || data?.user?.tier !== 'Pro' || data?.user?.freeTrial === true}
|
||||||
Your free trial will expire soon.
|
Support the Platform to be always free ❤
|
||||||
Upgrade now for unlimited access to all features!
|
|
||||||
{:else}
|
|
||||||
Unlock all features of the platform and level up your trading.
|
|
||||||
{/if}
|
{/if}
|
||||||
</Card.Description>
|
</Card.Description>
|
||||||
</Card.Header>
|
</Card.Header>
|
||||||
@ -600,7 +597,7 @@ $: {
|
|||||||
<Sheet.Close asChild let:builder>
|
<Sheet.Close asChild let:builder>
|
||||||
<Button on:click={() => goto('/pricing')} builders={[builder]} type="submit" size="sm" class="w-full bg-white hover:bg-white/80">
|
<Button on:click={() => goto('/pricing')} builders={[builder]} type="submit" size="sm" class="w-full bg-white hover:bg-white/80">
|
||||||
<span class="flex flex-row items-center text-black font-semibold text-center">
|
<span class="flex flex-row items-center text-black font-semibold text-center">
|
||||||
Upgrade
|
Become Pro
|
||||||
</span>
|
</span>
|
||||||
</Button>
|
</Button>
|
||||||
</Sheet.Close>
|
</Sheet.Close>
|
||||||
@ -903,17 +900,12 @@ $: {
|
|||||||
<Card.Header class="p-2 pt-0 md:p-4">
|
<Card.Header class="p-2 pt-0 md:p-4">
|
||||||
<Card.Title>Upgrade to Pro</Card.Title>
|
<Card.Title>Upgrade to Pro</Card.Title>
|
||||||
<Card.Description>
|
<Card.Description>
|
||||||
{#if data?.user?.freeTrial === true}
|
Support the Platform to be always free ❤
|
||||||
Your free trial will be expired soon.
|
|
||||||
Upgrade now for unlimited access to all features!
|
|
||||||
{:else}
|
|
||||||
Unlock all features of the platform and level up your trading.
|
|
||||||
{/if}
|
|
||||||
</Card.Description>
|
</Card.Description>
|
||||||
</Card.Header>
|
</Card.Header>
|
||||||
<Card.Content class="p-2 pt-0 md:p-4 md:pt-0">
|
<Card.Content class="p-2 pt-0 md:p-4 md:pt-0">
|
||||||
<a href="/pricing" class="flex justify-center items-center text-center rounded-lg text-sm py-2 m-auto text-center w-full bg-white text-black font-semibold hover:bg-white/80">
|
<a href="/pricing" class="flex justify-center items-center text-center rounded-lg text-sm py-2 m-auto text-center w-full bg-white text-black font-semibold hover:bg-white/80">
|
||||||
Upgrade
|
Become Pro
|
||||||
</a>
|
</a>
|
||||||
</Card.Content>
|
</Card.Content>
|
||||||
</Card.Root>
|
</Card.Root>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<script lang='ts'>
|
<script lang='ts'>
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { numberOfUnreadNotification } from '$lib/store';
|
import { numberOfUnreadNotification } from '$lib/store';
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
|
||||||
@ -261,7 +261,7 @@ $: {
|
|||||||
<tbody>
|
<tbody>
|
||||||
{#each analytRatingList as item, index}
|
{#each analytRatingList as item, index}
|
||||||
|
|
||||||
<tr on:click={() => goto(`/analysts/${item?.analystId}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] {index+1 === rawData?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''} cursor-pointer">
|
<tr on:click={() => goto(`/analysts/${item?.analystId}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] cursor-pointer">
|
||||||
<td class="text-white text-sm sm:text-[1rem] font-semibold text-white text-center">
|
<td class="text-white text-sm sm:text-[1rem] font-semibold text-white text-center">
|
||||||
{item?.rank}
|
{item?.rank}
|
||||||
</td>
|
</td>
|
||||||
@ -329,7 +329,8 @@ $: {
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<UpgradeToPro data={data} title="Get stock forecasts from Wall Street's highest rated professionals"/>
|
<!--<UpgradeToPro data={data} title="Get stock forecasts from Wall Street's highest rated professionals"/>-->
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex justify-center items-center h-80">
|
<div class="flex justify-center items-center h-80">
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
|
|||||||
@ -1,37 +1,34 @@
|
|||||||
import {getCache, setCache } from '$lib/store';
|
import { getCache, setCache } from "$lib/store";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export const load = async ({parent}) => {
|
|
||||||
|
|
||||||
|
export const load = async ({ parent }) => {
|
||||||
const getTopAnalyst = async () => {
|
const getTopAnalyst = async () => {
|
||||||
const { apiURL, apiKey, user} = await parent();
|
const { apiURL, apiKey, user } = await parent();
|
||||||
|
|
||||||
let output;
|
let output;
|
||||||
|
|
||||||
const cachedData = getCache('', 'getTopAnalyst');
|
const cachedData = getCache("", "getTopAnalyst");
|
||||||
if (cachedData) {
|
if (cachedData) {
|
||||||
output = cachedData;
|
output = cachedData;
|
||||||
} else {
|
} else {
|
||||||
|
const response = await fetch(apiURL + "/top-analysts", {
|
||||||
const response = await fetch(apiURL + '/top-analysts', {
|
method: "GET",
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json", "X-API-KEY": apiKey
|
"Content-Type": "application/json",
|
||||||
|
"X-API-KEY": apiKey,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
output = await response?.json();
|
output = await response?.json();
|
||||||
setCache('', output, 'getTopAnalyst');
|
setCache("", output, "getTopAnalyst");
|
||||||
}
|
}
|
||||||
|
|
||||||
output = user?.tier !== 'Pro' ? output?.reverse()?.slice(0,6) : output;
|
//output = user?.tier !== 'Pro' ? output?.reverse()?.slice(0,6) : output;
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Make sure to return a promise
|
// Make sure to return a promise
|
||||||
return {
|
return {
|
||||||
getTopAnalyst: await getTopAnalyst()
|
getTopAnalyst: await getTopAnalyst(),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -2,7 +2,7 @@
|
|||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { numberOfUnreadNotification, screenWidth } from '$lib/store';
|
import { numberOfUnreadNotification, screenWidth } from '$lib/store';
|
||||||
import { abbreviateNumber } from '$lib/utils';
|
import { abbreviateNumber } from '$lib/utils';
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||||
|
|
||||||
@ -297,7 +297,8 @@ $: {
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<UpgradeToPro data={data} title="Get stock forecasts from Wall Street's highest rated professionals"/>
|
<!--<UpgradeToPro data={data} title="Get stock forecasts from Wall Street's highest rated professionals"/>-->
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex justify-center items-center h-80">
|
<div class="flex justify-center items-center h-80">
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
|
|||||||
@ -1,36 +1,33 @@
|
|||||||
import { getCache, setCache } from '$lib/store';
|
import { getCache, setCache } from "$lib/store";
|
||||||
|
|
||||||
|
export const load = async ({ parent }) => {
|
||||||
|
|
||||||
export const load = async ({parent}) => {
|
|
||||||
const getTopAnalystStocks = async () => {
|
const getTopAnalystStocks = async () => {
|
||||||
let output;
|
let output;
|
||||||
const { apiURL, apiKey, user} = await parent();
|
const { apiURL, apiKey, user } = await parent();
|
||||||
|
|
||||||
const cachedData = getCache('', 'getTopAnalystStocks');
|
const cachedData = getCache("", "getTopAnalystStocks");
|
||||||
if (cachedData) {
|
if (cachedData) {
|
||||||
output = cachedData;
|
output = cachedData;
|
||||||
} else {
|
} else {
|
||||||
|
const response = await fetch(apiURL + "/top-analysts-stocks", {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-API-KEY": apiKey,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const response = await fetch(apiURL + '/top-analysts-stocks', {
|
output = await response.json();
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json", "X-API-KEY": apiKey
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
output = await response.json();
|
|
||||||
|
|
||||||
setCache('', output, 'getTopAnalystStocksg');
|
|
||||||
|
|
||||||
|
setCache("", output, "getTopAnalystStocksg");
|
||||||
}
|
}
|
||||||
|
|
||||||
output = user?.tier !== 'Pro' ? output?.reverse()?.slice(0,6) : output;
|
//output = user?.tier !== 'Pro' ? output?.reverse()?.slice(0,6) : output;
|
||||||
return output;
|
return output;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Make sure to return a promise
|
// Make sure to return a promise
|
||||||
return {
|
return {
|
||||||
getTopAnalystStocks: await getTopAnalystStocks()
|
getTopAnalystStocks: await getTopAnalystStocks(),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -4,7 +4,6 @@
|
|||||||
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
|
||||||
|
|
||||||
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
|
|
||||||
@ -204,7 +203,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<InfiniteLoading on:infinite={infiniteHandler} />
|
<InfiniteLoading on:infinite={infiniteHandler} />
|
||||||
<UpgradeToPro data={data} title="Get the latest dark pool trades in realtime from Hedge Funds & Major Institutional Traders"/>
|
<!--<UpgradeToPro data={data} title="Get the latest dark pool trades in realtime from Hedge Funds & Major Institutional Traders"/>-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -22,9 +22,7 @@ export const load = async ({ parent }) => {
|
|||||||
setCache("", output, "getCramerTracker");
|
setCache("", output, "getCramerTracker");
|
||||||
}
|
}
|
||||||
|
|
||||||
output = user?.tier !== "Pro" ? output?.slice(0, 5) : output;
|
//output = user?.tier !== "Pro" ? output?.slice(0, 5) : output;
|
||||||
|
|
||||||
//output = data?.user?.tier !== 'Pro' ? output?.slice(0,6) : output;
|
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
import { abbreviateNumber } from '$lib/utils';
|
import { abbreviateNumber } from '$lib/utils';
|
||||||
import InfoModal from '$lib/components/InfoModal.svelte';
|
import InfoModal from '$lib/components/InfoModal.svelte';
|
||||||
import { onMount } from 'svelte'
|
import { onMount } from 'svelte'
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
import { init, use } from 'echarts/core'
|
import { init, use } from 'echarts/core'
|
||||||
import { BarChart,LineChart } from 'echarts/charts'
|
import { BarChart,LineChart } from 'echarts/charts'
|
||||||
import { GridComponent, TooltipComponent } from 'echarts/components'
|
import { GridComponent, TooltipComponent } from 'echarts/components'
|
||||||
@ -411,12 +411,10 @@ onMount(async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(data?.user?.tier === 'Pro') {
|
|
||||||
window.addEventListener('scroll', handleScroll);
|
window.addEventListener('scroll', handleScroll);
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener('scroll', handleScroll);
|
window.removeEventListener('scroll', handleScroll);
|
||||||
};
|
};
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -718,8 +716,8 @@ $: {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{#each (data?.user?.tier === 'Pro' ? optionList : optionList?.slice(0,3)) as item, index}
|
{#each optionList as item, index}
|
||||||
<tr on:click={() => handleViewData(item?.date)} on:mouseover={() => getDailyTransactions($etfTicker+'+'+item?.date)} class="cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] border-b-[#09090B] {index+1 === optionList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}">
|
<tr on:click={() => handleViewData(item?.date)} on:mouseover={() => getDailyTransactions($etfTicker+'+'+item?.date)} class="cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] border-b-[#09090B]">
|
||||||
|
|
||||||
<td class="text-white text-sm sm:text-[1rem] text-start">
|
<td class="text-white text-sm sm:text-[1rem] text-start">
|
||||||
{formatDate(item?.date)}
|
{formatDate(item?.date)}
|
||||||
@ -811,8 +809,8 @@ $: {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{#each (data?.user?.tier === 'Pro' ? optionChainList : optionChainList?.slice(0,3)) as item, index}
|
{#each optionChainList as item, index}
|
||||||
<tr class="odd:bg-[#27272A] border-b-[#09090B] {index+1 === optionChainList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}">
|
<tr class="odd:bg-[#27272A] border-b-[#09090B]">
|
||||||
|
|
||||||
<td class="text-white text-sm sm:text-[1rem] text-end">
|
<td class="text-white text-sm sm:text-[1rem] text-end">
|
||||||
{abbreviateNumber(item?.total_premium_call,true)}
|
{abbreviateNumber(item?.total_premium_call,true)}
|
||||||
@ -858,7 +856,7 @@ $: {
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<UpgradeToPro data={data} title="Get the recent Options Flow Data from Hedge Funds and major institutional traders to never miss out"/>
|
<!---<UpgradeToPro data={data} title="Get the recent Options Flow Data from Hedge Funds and major institutional traders to never miss out"/>-->
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex justify-center items-center m-auto mt-16 mb-6">
|
<div class="flex justify-center items-center m-auto mt-16 mb-6">
|
||||||
|
|||||||
@ -1,16 +1,5 @@
|
|||||||
import { getCache, setCache } from "$lib/store";
|
import { getCache, setCache } from "$lib/store";
|
||||||
|
|
||||||
function daysLeft(targetDate) {
|
|
||||||
const targetTime = new Date(targetDate).getTime();
|
|
||||||
const currentTime = new Date().getTime();
|
|
||||||
const difference = targetTime - currentTime;
|
|
||||||
|
|
||||||
const millisecondsPerDay = 1000 * 60 * 60 * 24;
|
|
||||||
const daysLeft = Math?.ceil(difference / millisecondsPerDay);
|
|
||||||
|
|
||||||
return daysLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const load = async ({ parent, params }) => {
|
export const load = async ({ parent, params }) => {
|
||||||
const { apiKey, apiURL } = await parent();
|
const { apiKey, apiURL } = await parent();
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
import { numberOfUnreadNotification, screenWidth } from '$lib/store';
|
import { numberOfUnreadNotification, screenWidth } from '$lib/store';
|
||||||
import { abbreviateNumber } from '$lib/utils';
|
import { abbreviateNumber } from '$lib/utils';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||||
|
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ async function handleScroll() {
|
|||||||
<tbody>
|
<tbody>
|
||||||
{#each stockList as item, index}
|
{#each stockList as item, index}
|
||||||
|
|
||||||
<tr on:click={() => goto(`/${item?.assetType}/${item?.symbol}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] {index+1 === stockList?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''} cursor-pointer">
|
<tr on:click={() => goto(`/${item?.assetType}/${item?.symbol}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] cursor-pointer">
|
||||||
<td class="text-white text-sm sm:text-[1rem] font-medium text-white text-end">
|
<td class="text-white text-sm sm:text-[1rem] font-medium text-white text-end">
|
||||||
{index+1}
|
{index+1}
|
||||||
</td>
|
</td>
|
||||||
@ -216,7 +216,7 @@ async function handleScroll() {
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<UpgradeToPro data={data} title="Get the top 100 stocks that retail investors put their money on the market to never miss out the next hype"/>
|
<!--<UpgradeToPro data={data} title="Get the top 100 stocks that retail investors put their money on the market to never miss out the next hype"/>-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@ export const load = async ({ parent }) => {
|
|||||||
setCache("", output, "getMostRetailVolume");
|
setCache("", output, "getMostRetailVolume");
|
||||||
}
|
}
|
||||||
|
|
||||||
output = user?.tier !== "Pro" ? output?.slice(0, 6) : output;
|
//output = user?.tier !== "Pro" ? output?.slice(0, 6) : output;
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
||||||
import { abbreviateNumber } from '$lib/utils';
|
import { abbreviateNumber } from '$lib/utils';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||||
|
|
||||||
|
|
||||||
@ -163,7 +163,7 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{#each shortedList as item, index}
|
{#each shortedList as item, index}
|
||||||
|
|
||||||
<tr on:click={() => goto(`/stocks/${item?.symbol}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] {index+1 === shortedList?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''} cursor-pointer">
|
<tr on:click={() => goto(`/stocks/${item?.symbol}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] cursor-pointer">
|
||||||
<td class="text-white text-sm sm:text-[1rem] font-medium text-white text-end">
|
<td class="text-white text-sm sm:text-[1rem] font-medium text-white text-end">
|
||||||
{index+1}
|
{index+1}
|
||||||
</td>
|
</td>
|
||||||
@ -205,7 +205,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<InfiniteLoading on:infinite={infiniteHandler} />
|
<InfiniteLoading on:infinite={infiniteHandler} />
|
||||||
<UpgradeToPro data={data} title="Get the most shorted stocks on the market to never miss out the next short squeeze"/>
|
<!--<UpgradeToPro data={data} title="Get the most shorted stocks on the market to never miss out the next short squeeze"/>-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@ export const load = async ({ parent }) => {
|
|||||||
setCache("", output, "getMostShortedStocks");
|
setCache("", output, "getMostShortedStocks");
|
||||||
}
|
}
|
||||||
|
|
||||||
output = user?.tier !== "Pro" ? output?.slice(0, 6) : output;
|
//output = user?.tier !== "Pro" ? output?.slice(0, 6) : output;
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
import { stockTicker, etfTicker, cryptoTicker, screenWidth, numberOfUnreadNotification } from '$lib/store';
|
import { stockTicker, etfTicker, cryptoTicker, screenWidth, numberOfUnreadNotification } from '$lib/store';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import defaultLogo from '$lib/images/stocks/logo/default_logo.png';
|
import defaultLogo from '$lib/images/stocks/logo/default_logo.png';
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||||
|
|
||||||
// import * as XLSX from 'xlsx';
|
// import * as XLSX from 'xlsx';
|
||||||
@ -636,7 +636,7 @@
|
|||||||
<!--<InfiniteLoading on:infinite={infiniteHandler} />-->
|
<!--<InfiniteLoading on:infinite={infiniteHandler} />-->
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<UpgradeToPro data={data} title="Track the latest trades of corrupt US Politicians"/>
|
<!--<UpgradeToPro data={data} title="Track the latest trades of corrupt US Politicians"/>-->
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import {numberOfUnreadNotification, displayCompanyName, stockTicker, currentPort
|
|||||||
import InfoModal from '$lib/components/InfoModal.svelte';
|
import InfoModal from '$lib/components/InfoModal.svelte';
|
||||||
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
|
|
||||||
@ -248,8 +248,8 @@ changeTab(0)
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{#each (data?.user?.tier === 'Pro' ? historyList : historyList?.slice(0,3)) as item,index}
|
{#each historyList as item,index}
|
||||||
<tr on:click={() => goto(`/analysts/${item?.analystId}`)} class="cursor-pointer {latestInfoDate(item?.date) ? 'bg-[#F9AB00] bg-opacity-[0.1]' : 'odd:bg-[#27272A]'} border-b-[#09090B] {index+1 === historyList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}">
|
<tr on:click={() => goto(`/analysts/${item?.analystId}`)} class="cursor-pointer {latestInfoDate(item?.date) ? 'bg-[#F9AB00] bg-opacity-[0.1]' : 'odd:bg-[#27272A]'} border-b-[#09090B] ">
|
||||||
<td class="text-sm sm:text-[1rem] whitespace-nowrap text-start">
|
<td class="text-sm sm:text-[1rem] whitespace-nowrap text-start">
|
||||||
<div class="flex flex-col items-start">
|
<div class="flex flex-col items-start">
|
||||||
<span class="text-blue-400">{item?.analyst_name} </span>
|
<span class="text-blue-400">{item?.analyst_name} </span>
|
||||||
@ -317,11 +317,10 @@ changeTab(0)
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{#if data?.user?.tier === 'Pro'}
|
|
||||||
<InfiniteLoading on:infinite={infiniteHandler} />
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<UpgradeToPro data={data} title="Get stock forecasts from Wall Street's highest rated professionals"/>
|
<InfiniteLoading on:infinite={infiniteHandler} />
|
||||||
|
|
||||||
|
<!--<UpgradeToPro data={data} title="Get stock forecasts from Wall Street's highest rated professionals"/>-->
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
<div class="w-full flex justify-start items-center m-auto mt-10 mb-6">
|
<div class="w-full flex justify-start items-center m-auto mt-10 mb-6">
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { displayCompanyName, numberOfUnreadNotification, stockTicker } from '$li
|
|||||||
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
import InfiniteLoading from '$lib/components/InfiniteLoading.svelte';
|
||||||
import { formatString, abbreviateNumber } from '$lib/utils';
|
import { formatString, abbreviateNumber } from '$lib/utils';
|
||||||
import InfoModal from '$lib/components/InfoModal.svelte';
|
import InfoModal from '$lib/components/InfoModal.svelte';
|
||||||
import UpgradeToPro from "$lib/components/UpgradeToPro.svelte";
|
//import UpgradeToPro from "$lib/components/UpgradeToPro.svelte";
|
||||||
import { Chart } from 'svelte-echarts'
|
import { Chart } from 'svelte-echarts'
|
||||||
import { init, use } from 'echarts/core'
|
import { init, use } from 'echarts/core'
|
||||||
import { LineChart, BarChart } from 'echarts/charts'
|
import { LineChart, BarChart } from 'echarts/charts'
|
||||||
@ -536,8 +536,8 @@ onMount(async() => {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{#each (data?.user?.tier === 'Pro' ? insiderTradingList : insiderTradingList?.slice(0,3)) as item, index}
|
{#each insiderTradingList as item, index}
|
||||||
<tr class="text-white odd:bg-[#27272A] {index+1 === insiderTradingList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}">
|
<tr class="text-white odd:bg-[#27272A]">
|
||||||
|
|
||||||
<td class="text-white text-sm sm:text-[1rem] border-b border-[#09090B] whitespace-nowrap">
|
<td class="text-white text-sm sm:text-[1rem] border-b border-[#09090B] whitespace-nowrap">
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
@ -587,7 +587,7 @@ onMount(async() => {
|
|||||||
<InfiniteLoading on:infinite={infiniteHandler} />
|
<InfiniteLoading on:infinite={infiniteHandler} />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<UpgradeToPro data={data} title="Access {$displayCompanyName}'s insider transactions to track executive selling and purchasing activity"/>
|
<!--<UpgradeToPro data={data} title="Access {$displayCompanyName}'s insider transactions to track executive selling and purchasing activity"/>-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
import { abbreviateNumber } from '$lib/utils';
|
import { abbreviateNumber } from '$lib/utils';
|
||||||
import InfoModal from '$lib/components/InfoModal.svelte';
|
import InfoModal from '$lib/components/InfoModal.svelte';
|
||||||
import { onMount } from 'svelte'
|
import { onMount } from 'svelte'
|
||||||
import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
//import UpgradeToPro from '$lib/components/UpgradeToPro.svelte';
|
||||||
import { init, use } from 'echarts/core'
|
import { init, use } from 'echarts/core'
|
||||||
import { BarChart,LineChart } from 'echarts/charts'
|
import { BarChart,LineChart } from 'echarts/charts'
|
||||||
import { GridComponent, TooltipComponent } from 'echarts/components'
|
import { GridComponent, TooltipComponent } from 'echarts/components'
|
||||||
@ -411,12 +411,10 @@ onMount(async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(data?.user?.tier === 'Pro') {
|
|
||||||
window.addEventListener('scroll', handleScroll);
|
window.addEventListener('scroll', handleScroll);
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener('scroll', handleScroll);
|
window.removeEventListener('scroll', handleScroll);
|
||||||
};
|
};
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -718,8 +716,8 @@ $: {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{#each (data?.user?.tier === 'Pro' ? optionList : optionList?.slice(0,3)) as item, index}
|
{#each optionList as item, index}
|
||||||
<tr on:click={() => handleViewData(item?.date)} on:mouseover={() => getDailyTransactions($stockTicker+'+'+item?.date)} class="cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] border-b-[#09090B] {index+1 === optionList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}">
|
<tr on:click={() => handleViewData(item?.date)} on:mouseover={() => getDailyTransactions($stockTicker+'+'+item?.date)} class="cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] border-b-[#09090B]">
|
||||||
|
|
||||||
<td class="text-white text-sm sm:text-[1rem] text-start">
|
<td class="text-white text-sm sm:text-[1rem] text-start">
|
||||||
{formatDate(item?.date)}
|
{formatDate(item?.date)}
|
||||||
@ -811,8 +809,8 @@ $: {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{#each (data?.user?.tier === 'Pro' ? optionChainList : optionChainList?.slice(0,3)) as item, index}
|
{#each optionChainList as item, index}
|
||||||
<tr class="odd:bg-[#27272A] border-b-[#09090B] {index+1 === optionChainList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}">
|
<tr class="odd:bg-[#27272A] border-b-[#09090B]">
|
||||||
|
|
||||||
<td class="text-white text-sm sm:text-[1rem] text-end">
|
<td class="text-white text-sm sm:text-[1rem] text-end">
|
||||||
{abbreviateNumber(item?.total_premium_call,true)}
|
{abbreviateNumber(item?.total_premium_call,true)}
|
||||||
@ -858,7 +856,7 @@ $: {
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<UpgradeToPro data={data} title="Get the recent Options Flow Data from Hedge Funds and major institutional traders to never miss out"/>
|
<!---<UpgradeToPro data={data} title="Get the recent Options Flow Data from Hedge Funds and major institutional traders to never miss out"/>-->
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex justify-center items-center m-auto mt-16 mb-6">
|
<div class="flex justify-center items-center m-auto mt-16 mb-6">
|
||||||
@ -893,15 +891,8 @@ $: {
|
|||||||
<!-- Put this part before </body> tag -->
|
<!-- Put this part before </body> tag -->
|
||||||
|
|
||||||
<dialog id="optionDetailsDesktopModal" class="modal modal-bottom sm:modal-middle cursor-pointer ">
|
<dialog id="optionDetailsDesktopModal" class="modal modal-bottom sm:modal-middle cursor-pointer ">
|
||||||
<div class="modal-box w-full max-w-xl lg:max-w-3xl xl:max-w-5xl bg-[#141417] sm:bg-[#09090B] border-t sm:border border-gray-600 h-auto">
|
<div class="modal-box w-full max-w-xl lg:max-w-3xl xl:max-w-5xl bg-[#09090B] border-t sm:border border-gray-600 h-auto">
|
||||||
<form method="dialog" class="modal-backdrop backdrop-blur-[4px]">
|
<p class="text-gray-200 mt-10 cursor-text">
|
||||||
<button class="cursor-pointer absolute right-0 top-0 text-[1.8rem] text-white">
|
|
||||||
<svg class="w-8 h-8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="white" d="m6.4 18.308l-.708-.708l5.6-5.6l-5.6-5.6l.708-.708l5.6 5.6l5.6-5.6l.708.708l-5.6 5.6l5.6 5.6l-.708.708l-5.6-5.6z"/>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<p class="text-gray-200 mt-10 cursor-text">
|
|
||||||
<span class="text-white text-xl font-semibold mb-4">Option Data Details:</span>
|
<span class="text-white text-xl font-semibold mb-4">Option Data Details:</span>
|
||||||
<br class="">
|
<br class="">
|
||||||
{#if optionHistoryList?.length !== 0}
|
{#if optionHistoryList?.length !== 0}
|
||||||
@ -1014,8 +1005,10 @@ $: {
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<form method="dialog" class="modal-backdrop">
|
<form method="dialog" class="modal-backdrop backdrop-blur-[4px]">
|
||||||
<button>close</button>
|
<button>close</button>
|
||||||
</form>
|
</form>
|
||||||
</dialog>
|
</dialog>
|
||||||
|
|||||||
@ -1,16 +1,5 @@
|
|||||||
import { getCache, setCache } from "$lib/store";
|
import { getCache, setCache } from "$lib/store";
|
||||||
|
|
||||||
function daysLeft(targetDate) {
|
|
||||||
const targetTime = new Date(targetDate).getTime();
|
|
||||||
const currentTime = new Date().getTime();
|
|
||||||
const difference = targetTime - currentTime;
|
|
||||||
|
|
||||||
const millisecondsPerDay = 1000 * 60 * 60 * 24;
|
|
||||||
const daysLeft = Math?.ceil(difference / millisecondsPerDay);
|
|
||||||
|
|
||||||
return daysLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const load = async ({ parent, params }) => {
|
export const load = async ({ parent, params }) => {
|
||||||
const { apiKey, apiURL } = await parent();
|
const { apiKey, apiURL } = await parent();
|
||||||
|
|
||||||
|
|||||||
@ -521,16 +521,9 @@ $: {
|
|||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="w-full">
|
<li class="w-full">
|
||||||
{#if data?.user?.tier === 'Pro'}
|
|
||||||
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
||||||
Quartely
|
Quartely
|
||||||
</label>
|
</label>
|
||||||
{:else}
|
|
||||||
<a href="/pricing" class="flex flex-row items-center m-auto justify-center cursor-pointer inline-block w-full py-2.5 bg-[#2A303C] font-semibold text-white rounded-r-lg">
|
|
||||||
<span class="">Quarterly</span>
|
|
||||||
<svg class="ml-1 -mt-0.5 w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"/></svg>
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -487,16 +487,9 @@ $: {
|
|||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="w-full">
|
<li class="w-full">
|
||||||
{#if data?.user?.tier === 'Pro'}
|
|
||||||
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
||||||
Quartely
|
Quartely
|
||||||
</label>
|
</label>
|
||||||
{:else}
|
|
||||||
<a href="/pricing" class="flex flex-row items-center m-auto justify-center cursor-pointer inline-block w-full py-2.5 bg-[#2A303C] font-semibold text-white rounded-r-lg">
|
|
||||||
<span class="">Quarterly</span>
|
|
||||||
<svg class="ml-1 -mt-0.5 w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"/></svg>
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -454,16 +454,18 @@ $: {
|
|||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="w-full">
|
<li class="w-full">
|
||||||
{#if data?.user?.tier === 'Pro'}
|
|
||||||
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
||||||
Quartely
|
Quartely
|
||||||
</label>
|
</label>
|
||||||
|
<!--
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
<a href="/pricing" class="flex flex-row items-center m-auto justify-center cursor-pointer inline-block w-full py-2.5 bg-[#2A303C] font-semibold text-white rounded-r-lg">
|
<a href="/pricing" class="flex flex-row items-center m-auto justify-center cursor-pointer inline-block w-full py-2.5 bg-[#2A303C] font-semibold text-white rounded-r-lg">
|
||||||
<span class="">Quarterly</span>
|
<span class="">Quarterly</span>
|
||||||
<svg class="ml-1 -mt-0.5 w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"/></svg>
|
<svg class="ml-1 -mt-0.5 w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"/></svg>
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
|
-->
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -429,16 +429,9 @@ $: {
|
|||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="w-full">
|
<li class="w-full">
|
||||||
{#if data?.user?.tier === 'Pro'}
|
|
||||||
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
<label on:click={() => filterRule = 'quartely'} class="cursor-pointer inline-block w-full py-2.5 {filterRule === 'quartely' ? 'bg-purple-600' : 'bg-[#2A303C]'} font-semibold text-white rounded-r-lg">
|
||||||
Quartely
|
Quartely
|
||||||
</label>
|
</label>
|
||||||
{:else}
|
|
||||||
<a href="/pricing" class="flex flex-row items-center m-auto justify-center cursor-pointer inline-block w-full py-2.5 bg-[#2A303C] font-semibold text-white rounded-r-lg">
|
|
||||||
<span class="">Quarterly</span>
|
|
||||||
<svg class="ml-1 -mt-0.5 w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#A3A3A3" d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"/></svg>
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user