update screener rules

This commit is contained in:
MuslemRahimi 2025-04-02 12:49:54 +02:00
parent 248a531bc4
commit a965089c0a
71 changed files with 386 additions and 365 deletions

View File

@ -59,10 +59,10 @@
r="16"
fill="none"
class="stroke-current {score >= 7
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: score >= 4
? 'text-blue-700 dark:text-[#fff]'
: 'text-red-700 dark:text-[#FF2F1F]'}"
: 'text-red-800 dark:text-[#FF2F1F]'}"
stroke-width="3"
stroke-dasharray="100.48"
stroke-dashoffset={100.48 -

View File

@ -837,9 +837,9 @@
{:else}
<span
class={item?.growth > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: item?.growth < 0
? "text-red-700 dark:text-[#FF2F1F]"
? "text-red-800 dark:text-[#FF2F1F]"
: ""}
>
{item?.growth}%
@ -888,9 +888,9 @@
{:else}
<span
class={item?.growth > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: item?.growth < 0
? "text-red-700 dark:text-[#FF2F1F]"
? "text-red-800 dark:text-[#FF2F1F]"
: ""}
>
{item?.growth}%
@ -938,9 +938,9 @@
{:else}
<span
class={item?.growth > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: item?.growth < 0
? "text-red-700 dark:text-[#FF2F1F]"
? "text-red-800 dark:text-[#FF2F1F]"
: ""}
>
{item?.growth}%
@ -989,9 +989,9 @@
{:else}
<span
class={item?.growth > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: item?.growth < 0
? "text-red-700 dark:text-[#FF2F1F]"
? "text-red-800 dark:text-[#FF2F1F]"
: ""}
>
{item?.growth}%

View File

@ -433,7 +433,7 @@
{#if index === tableList?.length - 1}
n/a
{:else if item?.shortVolume > tableList[index + 1]?.shortVolume}
<span class="text-green-700 dark:text-[#00FC50]">
<span class="text-green-800 dark:text-[#00FC50]">
+{(
((item?.shortVolume -
tableList[index + 1]?.shortVolume) /
@ -442,7 +442,7 @@
)?.toFixed(2)}%
</span>
{:else if item?.shortVolume < tableList[index + 1]?.shortVolume}
<span class="text-red-700 dark:text-[#FF2F1F]">
<span class="text-red-800 dark:text-[#FF2F1F]">
-{(
Math.abs(
(item?.shortVolume -

View File

@ -83,8 +83,8 @@
rawData?.dividendPrior -
1 >
0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'}"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'}"
>
{(
(rawData?.dividend / rawData?.dividendPrior - 1) *

View File

@ -92,8 +92,8 @@
)}, with
<span
class=" {revenueRatio > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'}">{revenueRatio}%</span
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'}">{revenueRatio}%</span
>
YoY {revenueRatio < 0 ? "decline" : "growth"}.
</li>
@ -109,8 +109,8 @@
class=" {epsRatio === null
? ''
: epsRatio > 0
? 'text-green-700 dark:text-[#00FC50]'
: 'text-red-700 dark:text-[#FF2F1F]'}"
? 'text-green-800 dark:text-[#00FC50]'
: 'text-red-800 dark:text-[#FF2F1F]'}"
>
{epsRatio === null ? "n/a" : `${epsRatio}%`}
</span>

View File

@ -163,9 +163,9 @@
{:else}
<span
class={item?.growth !== null && item?.growth > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: item?.growth < 0
? "text-red-700 dark:text-[#FF2F1F]"
? "text-red-800 dark:text-[#FF2F1F]"
: ""}
>
{item?.growth !== null && Math.abs(item?.growth - 0) > 0
@ -197,9 +197,9 @@
{:else}
<span
class={item?.growth !== null && item?.growth > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: item?.growth < 0
? "text-red-700 dark:text-[#FF2F1F]"
? "text-red-800 dark:text-[#FF2F1F]"
: ""}
>
{item?.growth !== null && Math.abs(item?.growth - 0) > 0
@ -231,9 +231,9 @@
{:else}
<span
class={item?.growth !== null && item?.growth > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: item?.growth < 0
? "text-red-700 dark:text-[#FF2F1F]"
? "text-red-800 dark:text-[#FF2F1F]"
: ""}
>
{item?.growth !== null && Math.abs(item?.growth - 0) > 0

View File

@ -387,7 +387,7 @@
{#if index === tableList?.length - 1}
n/a
{:else if item?.failToDeliver > tableList[index + 1]?.failToDeliver}
<span class="text-green-700 dark:text-[#00FC50]">
<span class="text-green-800 dark:text-[#00FC50]">
+{(
((item?.failToDeliver -
tableList[index + 1]?.failToDeliver) /
@ -396,7 +396,7 @@
)?.toFixed(2)}%
</span>
{:else if item?.failToDeliver < tableList[index + 1]?.failToDeliver}
<span class="text-red-700 dark:text-[#FF2F1F]">
<span class="text-red-800 dark:text-[#FF2F1F]">
-{(
Math.abs(
(item?.failToDeliver -

View File

@ -130,24 +130,24 @@
<td
class="{item?.profitMargin >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'} text-sm sm:text-[1rem] whitespace-nowrap text-end"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'} text-sm sm:text-[1rem] whitespace-nowrap text-end"
>
{abbreviateNumber(item?.profitMargin)}%
</td>
<td
class="{item?.avgChange1D >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.avgChange1D?.toFixed(2) ?? "n/a"}%
</td>
<td
class="{item?.avgChange1Y >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.avgChange1Y?.toFixed(2) ?? "n/a"}%
</td>

View File

@ -62,7 +62,7 @@
{#if errors}
<label for={id} class=" py-0 pt-1 text-xs">
<span class="text-red-700 font-semibold dark:font-normal dark:text-error">
<span class="text-red-800 font-semibold dark:font-normal dark:text-error">
{errors}
</span>
</label>

View File

@ -87,9 +87,9 @@
>, reflecting a
<span
class="{revenueRatio >= 0 && revenueRatio !== 'Infinity'
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: revenueRatio < 0 && revenueRatio !== 'Infinity'
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-muted dark:text-white'} font-semibold"
>{revenueRatio !== "Infinity"
? abbreviateNumber(revenueRatio) + "%"
@ -105,8 +105,8 @@
<span class="font-semibold">{rawData?.epsEst}</span>, making a
<span
class="{epsRatio > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'} font-semibold"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'} font-semibold"
>{epsRatio}%</span
>
{epsRatio > 0 ? "increase" : epsRatio < 0 ? "decrease" : ""} YoY.

View File

@ -975,11 +975,11 @@
</td>
<td class="text-sm sm:text-[1rem] text-end">
{#if item?.changeOI >= 0 && item?.changeOI !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0 && item?.changeOI !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else}
@ -989,11 +989,11 @@
<td class="text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentageOI > 0 && item?.changesPercentageOI !== undefined}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentageOI + "%"}</span
>
{:else if item?.changesPercentageOI < 0 && item?.changesPercentageOI !== undefined}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentageOI + "%"}</span
>
{:else if item?.changesPercentageOI === 0 && item?.changesPercentageOI !== undefined}

View File

@ -414,11 +414,11 @@
<td class=" text-sm sm:text-[1rem] text-end whitespace-nowrap">
{#if item?.put_call_ratio <= 1 && item?.put_call_ratio !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else if item?.put_call_ratio > 1 && item?.put_call_ratio !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else}

View File

@ -381,11 +381,11 @@
<td class=" text-sm sm:text-[1rem] text-end whitespace-nowrap">
{#if item?.put_call_ratio <= 1 && item?.put_call_ratio !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else if item?.put_call_ratio > 1 && item?.put_call_ratio !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else}

View File

@ -471,11 +471,11 @@
<td class=" text-sm sm:text-[1rem] text-end whitespace-nowrap">
{#if item?.putCallRatio <= 1 && item?.putCallRatio !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>{item?.putCallRatio?.toFixed(2)}</span
>
{:else if item?.putCallRatio >= 0 && item?.putCallRatio !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.putCallRatio?.toFixed(2)}</span
>
{:else}

View File

@ -603,8 +603,8 @@
>
<span
class={item?.option_type === "C"
? "text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
{item?.option_type === "C" ? "Call" : "Put"}
</span>
@ -667,11 +667,11 @@
class=" text-sm sm:text-[1rem] text-end whitespace-nowrap"
>
{#if item?.changeOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else}
@ -723,8 +723,8 @@
>
<span
class={item?.option_type === "C"
? "text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
{item?.option_type === "C" ? "Call" : "Put"}
</span>
@ -787,11 +787,11 @@
class=" text-sm sm:text-[1rem] text-end whitespace-nowrap"
>
{#if item?.changeOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else}
@ -840,8 +840,8 @@
>
Contract: <span
class={optionType === "Calls"
? "text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{ticker}
{strikePrice}
{optionType}
@ -962,11 +962,11 @@
</td>
<td class="text-sm sm:text-[1rem] text-end">
{#if item?.changeOI >= 0 && item?.changeOI !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0 && item?.changeOI !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else}
@ -976,11 +976,11 @@
<td class="text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentageOI > 0 && item?.changesPercentageOI !== undefined}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentageOI + "%"}</span
>
{:else if item?.changesPercentageOI < 0 && item?.changesPercentageOI !== undefined}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentageOI + "%"}</span
>
{:else if item?.changesPercentageOI === 0 && item?.changesPercentageOI !== undefined}

View File

@ -359,12 +359,12 @@
<td class=" text-sm sm:text-[1rem] text-end whitespace-nowrap">
{#if item?.put_call_ratio <= 1 && item?.put_call_ratio !== null}
<span
class="font-semibold dark:font-normal text-green-700 dark:text-[#00FC50]"
class="font-semibold dark:font-normal text-green-800 dark:text-[#00FC50]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else if item?.put_call_ratio > 1 && item?.put_call_ratio !== null}
<span
class="font-semibold dark:font-normal text-red-700 dark:text-[#FF2F1F]"
class="font-semibold dark:font-normal text-red-800 dark:text-[#FF2F1F]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else}

View File

@ -327,12 +327,12 @@
<td class=" text-sm sm:text-[1rem] text-end whitespace-nowrap">
{#if item?.put_call_ratio <= 1 && item?.put_call_ratio !== null}
<span
class="font-semibold dark:font-normal text-green-700 dark:text-[#00FC50]"
class="font-semibold dark:font-normal text-green-800 dark:text-[#00FC50]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else if item?.put_call_ratio > 1 && item?.put_call_ratio !== null}
<span
class="font-semibold dark:font-normal text-red-700 dark:text-[#FF2F1F]"
class="font-semibold dark:font-normal text-red-800 dark:text-[#FF2F1F]"
>{item?.put_call_ratio?.toFixed(2)}</span
>
{:else}

View File

@ -808,8 +808,8 @@
>
<span
class="inline-block px-2 {item?.optionType === 'Calls'
? 'text-green-700 dark:text-[#00FC50]'
: 'text-red-700 dark:text-[#FF2F1F]'}"
? 'text-green-800 dark:text-[#00FC50]'
: 'text-red-800 dark:text-[#FF2F1F]'}"
>
{item?.optionType}
</span>
@ -856,9 +856,9 @@
<td
class="text-sm sm:text-[1rem] text-end whitespace-nowrap {item?.sentiment ===
'Bullish'
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: item?.sentiment === 'Bearish'
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-orange-600 dark:text-[#C8A32D]'} "
>
{item?.sentiment}
@ -909,8 +909,8 @@
>
Contract: <span
class={optionType === "Calls"
? "text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{ticker}
{strikePrice}
{optionType}
@ -1031,11 +1031,11 @@
</td>
<td class="text-sm sm:text-[1rem] text-end">
{#if item?.changeOI >= 0 && item?.changeOI !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0 && item?.changeOI !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else}
@ -1045,11 +1045,11 @@
<td class="text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentageOI > 0 && item?.changesPercentageOI !== undefined}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentageOI + "%"}</span
>
{:else if item?.changesPercentageOI < 0 && item?.changesPercentageOI !== undefined}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentageOI + "%"}</span
>
{:else if item?.changesPercentageOI === 0 && item?.changesPercentageOI !== undefined}

View File

@ -487,13 +487,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentage >= 0 && item?.changesPercentage !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else if item?.changesPercentage < 0 && item?.changesPercentage !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%
@ -513,13 +513,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentageOI >= 0 && item?.changesPercentageOI !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentageOI >= 1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%</span
>
{:else if item?.changesPercentageOI < 0 && item?.changesPercentageOI !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentageOI <= -1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%

View File

@ -194,7 +194,7 @@
<div class="sm:mt-10">
The Options activity signals a
{#if signal === "Bullish"}
<span class="text-green-700 dark:text-[#00FC50]">
<span class="text-green-800 dark:text-[#00FC50]">
<svg
class="w-6 h-6 sm:w-7 sm:h-7 inline-block"
xmlns="http://www.w3.org/2000/svg"
@ -224,7 +224,7 @@
{signal}
</span>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]">
<span class="text-red-800 dark:text-[#FF2F1F]">
<svg
class="w-6 h-6 sm:w-7 sm:h-7 inline-block"
xmlns="http://www.w3.org/2000/svg"

View File

@ -77,9 +77,9 @@
r="16"
fill="none"
class="stroke-current {oneYearResult > 5
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: oneYearResult < 5
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-white'} text-opacity-[0.7]"
stroke-width="3.5"
stroke-dasharray="100"
@ -114,9 +114,9 @@
r="16"
fill="none"
class="stroke-current {oneMonthResult > 5
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: oneMonthResult < 5
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-white'} "
stroke-width="4"
stroke-dasharray="100"

View File

@ -558,13 +558,13 @@
class=" text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{#if item?.changeInSharesNumberPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{abbreviateNumber(
item?.changeInSharesNumberPercentage?.toFixed(2),
)}%</span
>
{:else if item?.changeInSharesNumberPercentage < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{abbreviateNumber(
item?.changeInSharesNumberPercentage?.toFixed(2),
)}%</span

View File

@ -69,9 +69,9 @@
animation: false,
},
title: {
text: `<div class="text-muted dark:text-gray-200 mt-3 text-center font-normal text-2xl">Price Target: <span class="${changesPercentage >= 0 ? "text-green-700 dark:text-[#00FC50]" : "text-red-700 dark:text-[#FF2F1F]"}">$${priceTarget}</span></div>
text: `<div class="text-muted dark:text-gray-200 mt-3 text-center font-normal text-2xl">Price Target: <span class="${changesPercentage >= 0 ? "text-green-800 dark:text-[#00FC50]" : "text-red-800 dark:text-[#FF2F1F]"}">$${priceTarget}</span></div>
<div class="text-muted dark:text-gray-200 mb-2 text-center font-normal text-xl">(${changesPercentage}% ${changesPercentage >= 0 ? "upside" : "downside"})</div>
<div class="text-muted dark:text-gray-200 text-center font-normal text-xl flex justify-center items-center">Analyst Consensus: <span class="ml-1 ${consensusRating === "Buy" ? "text-green-700 dark:text-[#00FC50]" : consensusRating === "Sell" ? "text-red-700 dark:text-[#FF2F1F]" : consensusRating === "Hold" ? "text-orange-500 dark:text-[#D5AB31]" : "text-muted dark:text-white"}">${consensusRating ?? "n/a"}</span></div>`,
<div class="text-muted dark:text-gray-200 text-center font-normal text-xl flex justify-center items-center">Analyst Consensus: <span class="ml-1 ${consensusRating === "Buy" ? "text-green-800 dark:text-[#00FC50]" : consensusRating === "Sell" ? "text-red-800 dark:text-[#FF2F1F]" : consensusRating === "Hold" ? "text-orange-500 dark:text-[#D5AB31]" : "text-muted dark:text-white"}">${consensusRating ?? "n/a"}</span></div>`,
style: {
color: "white",
// Using inline CSS for margin-top and margin-bottom

View File

@ -901,11 +901,11 @@
{item[column.key]?.toLocaleString("en-US")}
{:else if column?.type === "decimalSign"}
{#if item[column.key] >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item[column.key]?.toLocaleString("en-US")}</span
>
{:else if item[column.key] < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item[column.key]?.toLocaleString("en-US")}</span
>
{/if}
@ -937,11 +937,11 @@
: "< 0.01%"}
{:else if column.type === "percentSign"}
{#if item[column.key] > 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{abbreviateNumber(item[column.key]?.toFixed(2))}%</span
>
{:else if item[column.key] < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{abbreviateNumber(item[column.key]?.toFixed(2))}%</span
>
{:else}
@ -952,10 +952,10 @@
{:else if column.type === "sentiment"}
<div
class={item[column.key] >= 55
? "text-green-700 dark:text-[#00FC50]"
? "text-green-800 dark:text-[#00FC50]"
: item[column.key] >= 50
? "text-[#E57C34]"
: "text-red-700 dark:text-[#FF2F1F]"}
: "text-red-800 dark:text-[#FF2F1F]"}
>
<div class="flex flex-row items-center justify-end">
<div class="">

View File

@ -128,11 +128,11 @@
class="border-b-[#09090B] text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage?.toFixed(2)}%
</span>
{/if}

View File

@ -219,13 +219,13 @@
class="text-right md:table.-cell xl:table.-column text-sm sm:text-[1rem] text-white"
>
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%
@ -338,13 +338,13 @@
class="text-right md:table.-cell xl:table.-column text-sm sm:text-[1rem] text-white"
>
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%
@ -513,26 +513,26 @@
><td class="py-[3px] text-left lg:py-0.5">Change</td>
<td
class={analystReport?.lowPriceChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{analystReport?.lowPriceChange}%</td
>
<td
class={analystReport?.avgPriceChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{analystReport?.avgPriceChange}%</td
>
<td
class={analystReport?.medianPriceChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{analystReport?.medianPriceChange}%</td
>
<td
class={analystReport?.highPriceChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{analystReport?.highPriceChange}%</td
></tr
></tbody

View File

@ -237,7 +237,7 @@
>
{#if Number(item?.successRate) >= 0}
<span
class="font-semibold dark:font-normal text-green-700 dark:text-[#00FC50]"
class="font-semibold dark:font-normal text-green-800 dark:text-[#00FC50]"
>+{Number(item?.successRate)?.toFixed(2)}%</span
>
{/if}
@ -248,7 +248,7 @@
>
{#if Number(item?.avgReturn) >= 0}
<span
class="font-semibold dark:font-normal text-green-700 dark:text-[#00FC50]"
class="font-semibold dark:font-normal text-green-800 dark:text-[#00FC50]"
>+{Number(item?.avgReturn)?.toFixed(2)}%</span
>
{:else}

View File

@ -289,9 +289,9 @@
<div class="text-2xl font-bold tracking-tight">
<span
class={successRate >= 0 && successRate !== undefined
? "before:content-['+'] text-green-700 dark:text-[#36D984]"
? "before:content-['+'] text-green-800 dark:text-[#36D984]"
: successRate < 0 && successRate !== undefined
? "text-red-700 dark:text-[#EF4444]"
? "text-red-800 dark:text-[#EF4444]"
: ""}
>{successRate !== undefined
? successRate?.toFixed(2) + "%"
@ -310,9 +310,9 @@
<div class="text-2xl font-bold tracking-tight">
<span
class={avgReturn >= 0 && avgReturn !== undefined
? "before:content-['+'] text-green-700 dark:text-[#36D984]"
? "before:content-['+'] text-green-800 dark:text-[#36D984]"
: avgReturn < 0 && avgReturn !== undefined
? "text-red-700 dark:text-[#EF4444]"
? "text-red-800 dark:text-[#EF4444]"
: ""}
>{avgReturn !== undefined
? avgReturn?.toFixed(2) + "%"
@ -514,9 +514,9 @@
<td
class="{item?.upside >= 0 && item?.upside !== null
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: item?.upside < 0 && item?.upside !== null
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''} text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.upside !== null ? item?.upside + "%" : "n/a"}

View File

@ -259,9 +259,9 @@
<td
class="{item?.upside >= 0 && item?.upside !== null
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: item?.upside < 0 && item?.upside !== null
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''} text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.upside !== null ? item?.upside + "%" : "n/a"}

View File

@ -230,13 +230,13 @@
class="text-white text-end text-sm sm:text-[1rem] border-b-[#09090B]"
>
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? item?.changesPercentage
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? item?.changesPercentage
: item?.changesPercentage?.toFixed(2)}%

View File

@ -504,7 +504,7 @@
<span class="ml-1"></span>
{:else if item?.revenueEst / item?.revenuePrior - 1 >= 0}
<span
class="ml-1 text-green-700 dark:text-[#00FC50]"
class="ml-1 text-green-800 dark:text-[#00FC50]"
>
+{(
(item?.revenueEst /
@ -515,7 +515,7 @@
</span>
{:else}
<span
class="ml-1 text-red-700 dark:text-[#FF2F1F]"
class="ml-1 text-red-800 dark:text-[#FF2F1F]"
>
{(
(item?.revenueEst /
@ -541,7 +541,7 @@
{#if item?.epsEst !== null && item?.epsPrior !== null && item?.epsPrior !== 0}
{#if item?.epsEst / item?.epsPrior - 1 >= 0}
<span
class="ml-1 text-green-700 dark:text-[#00FC50]"
class="ml-1 text-green-800 dark:text-[#00FC50]"
>
+{(
(item?.epsEst / item?.epsPrior - 1) *
@ -550,7 +550,7 @@
</span>
{:else}
<span
class="ml-1 text-red-700 dark:text-[#FF2F1F]"
class="ml-1 text-red-800 dark:text-[#FF2F1F]"
>
{(
(item?.epsEst / item?.epsPrior - 1) *

View File

@ -770,15 +770,15 @@
>
<span
class={displayLegend?.change >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
{displayLegend?.change}
</span>
<span
class={displayLegend?.changesPercentage >= 0
? "text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
({displayLegend?.changesPercentage}%)
</span>
@ -814,8 +814,8 @@
<div
class="mt-1.5 block text-sm sm:mt-0 sm:inline sm:text-lg {prePostData?.changesPercentage >=
0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'}"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'}"
>
{prePostData?.changesPercentage?.toFixed(
2,

View File

@ -707,8 +707,8 @@
>
<span
class={displayLegend?.graphChange >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
{displayLegend?.graphChange ??
data?.getStockQuote?.changesPercentage?.toFixed(2)}%

View File

@ -466,10 +466,10 @@
<td
class="text-sm sm:text-[1rem] {item?.changesPercentage >=
0 && item?.changesPercentage !== null
? "text-green-700 dark:text-[#00FC50] before:content-['+'] "
? "text-green-800 dark:text-[#00FC50] before:content-['+'] "
: item?.changesPercentage < 0 &&
item?.changesPercentage !== null
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''} text-end"
>
{item?.changesPercentage !== null

View File

@ -237,7 +237,7 @@
r="16"
fill="none"
class="stroke-current {buySellRatio >= 0.5
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: 'text-[#EE5365]'} "
stroke-width="3"
stroke-dasharray="100"
@ -394,11 +394,11 @@
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{#if item?.type === "Bought"}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>Bought</span
>
{:else if item?.type === "Sold"}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>Sold</span
>
{:else if item?.type === "Exchange"}

View File

@ -402,13 +402,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentage >= 0 && item?.changesPercentage !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else if item?.changesPercentage < 0 && item?.changesPercentage !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%
@ -526,11 +526,11 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changeOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}
</span>
{:else}
@ -540,13 +540,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentageOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentageOI >= 1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%</span
>
{:else if item?.changesPercentageOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentageOI <= -1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%

View File

@ -224,13 +224,13 @@
class=" text-sm sm:text-[1rem] whitespace-nowrap text-end"
>
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else if item?.changesPercentage < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%

View File

@ -205,7 +205,7 @@
class="flex flex-row mt-1 text-[1rem] font-semibold"
>
{#if item?.performancePercentage3Year >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{abbreviateNumber(
item?.performancePercentage3Year?.toFixed(
2,
@ -213,7 +213,7 @@
)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{abbreviateNumber(
item?.performancePercentage3Year?.toFixed(
2,
@ -230,13 +230,13 @@
class="flex flex-row mt-1 text-[1rem] font-semibold"
>
{#if item?.winRate >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{abbreviateNumber(
item?.winRate?.toFixed(2),
)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{abbreviateNumber(
item?.winRate?.toFixed(2),
)}%

View File

@ -756,7 +756,7 @@
>
<span
class={displayLegend?.change >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-[#FF2F1F]"}
>
{displayLegend?.change}
@ -800,8 +800,8 @@
<div
class="mt-1.5 block text-sm xs: sm:mt-0 sm:inline sm:text-lg {prePostData?.changesPercentage >=
0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'}"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'}"
>
{prePostData?.changesPercentage?.toFixed(
2,

View File

@ -750,7 +750,7 @@
>
<span
class={displayLegend?.graphChange >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-[#FF2F1F]"}
>
{displayLegend?.graphChange ??

View File

@ -476,7 +476,7 @@
? "text-[#00FC50] before:content-['+'] "
: item?.changesPercentage < 0 &&
item?.changesPercentage !== null
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-white'} text-end"
>
{item?.changesPercentage !== null

View File

@ -217,13 +217,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentage >= 0 && item?.changesPercentage !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else if item?.changesPercentage < 0 && item?.changesPercentage !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%
@ -341,11 +341,11 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changeOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}
</span>
{:else}
@ -355,13 +355,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentageOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentageOI >= 1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%</span
>
{:else if item?.changesPercentageOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentageOI <= -1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%

View File

@ -143,24 +143,24 @@
<td
class=" {item?.profitMargin >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'} text-sm sm:text-[1rem] whitespace-nowrap text-end"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'} text-sm sm:text-[1rem] whitespace-nowrap text-end"
>
{abbreviateNumber(item?.profitMargin)}%
</td>
<td
class="{item?.avgChange1D >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.avgChange1D?.toFixed(2) ?? "n/a"}%
</td>
<td
class="{item?.avgChange1Y >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.avgChange1Y?.toFixed(2) ?? "n/a"}%
</td>

View File

@ -265,8 +265,8 @@
<td
class="text-sm sm:text-[1rem] whitespace-nowrap text-end {item?.changesPercentage >=
0
? 'text-green-700 dark:text-[#00FC50]'
: 'text-red-700 dark:text-[#FF2F1F]'}"
? 'text-green-800 dark:text-[#00FC50]'
: 'text-red-800 dark:text-[#FF2F1F]'}"
>
{item?.changesPercentage > 0
? "+"
@ -282,9 +282,9 @@
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap {item?.transactionType ===
'Buy'
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: item?.transactionType === 'Sell'
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-[#E57C34]'}"
>
<div class="flex flex-row items-center justify-end">

View File

@ -132,12 +132,12 @@
>
{#if item?.return >= 0 && item?.return !== null}
<span
class="inline-block text-green-700 dark:text-[#00FC50] text-sm sm:text-[1rem] whitespace-nowrap"
class="inline-block text-green-800 dark:text-[#00FC50] text-sm sm:text-[1rem] whitespace-nowrap"
>+{abbreviateNumber(item?.return)}%</span
>
{:else if item?.return < 0 && item?.return !== null}
<span
class="inline-block text-red-700 dark:text-[#FF2F1F] text-sm sm:text-[1rem] whitespace-nowrap"
class="inline-block text-red-800 dark:text-[#FF2F1F] text-sm sm:text-[1rem] whitespace-nowrap"
>{abbreviateNumber(item?.return)}%
</span>
{:else}

View File

@ -193,11 +193,11 @@
<td class=" text-end text-sm sm:text-[1rem]">
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item.changesPercentage?.toFixed(2)}%
</span>
{/if}

View File

@ -613,8 +613,8 @@
<td
class="text-sm sm:text-[1rem] {item?.changesPercentage >=
0
? "text-green-700 dark:text-[#00FC50] before:content-['+'] "
: 'text-red-700 dark:text-[#FF2F1F]'} text-end"
? "text-green-800 dark:text-[#00FC50] before:content-['+'] "
: 'text-red-800 dark:text-[#FF2F1F]'} text-end"
>
{item?.changesPercentage?.toFixed(2)}%
</td>
@ -705,8 +705,8 @@
<td
class="text-sm sm:text-[1rem] {item?.changesPercentage >=
0
? "text-green-700 dark:text-[#00FC50] before:content-['+'] "
: 'text-red-700 dark:text-[#FF2F1F]'} text-end"
? "text-green-800 dark:text-[#00FC50] before:content-['+'] "
: 'text-red-800 dark:text-[#FF2F1F]'} text-end"
>
{item?.changesPercentage}%
</td>

View File

@ -715,8 +715,8 @@
<td
class="text-sm sm:text-[1rem] {item?.changesPercentage >=
0
? "text-green-700 dark:text-[#00FC50] before:content-['+'] "
: 'text-red-700 dark:text-[#FF2F1F]'} text-end"
? "text-green-800 dark:text-[#00FC50] before:content-['+'] "
: 'text-red-800 dark:text-[#FF2F1F]'} text-end"
>
{item?.changesPercentage?.toFixed(2)}%
</td>
@ -821,7 +821,7 @@
class="text-sm sm:text-[1rem] {item?.changesPercentage >=
0
? "text-[#00FC50] before:content-['+'] "
: 'text-red-700 dark:text-[#FF2F1F]'} text-end"
: 'text-red-800 dark:text-[#FF2F1F]'} text-end"
>
{item?.changesPercentage}%
</td>

View File

@ -1448,9 +1448,9 @@
<span
class="text-start text-[1rem] font-semibold {flowSentiment ===
'Bullish'
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: flowSentiment === 'Bearish'
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: flowSentiment === 'Neutral'
? 'text-[#fff]'
: ''}">{flowSentiment}</span
@ -1554,7 +1554,7 @@
cy="18"
r="16"
fill="none"
class="stroke-current text-green-700 dark:text-[#00FC50]"
class="stroke-current text-green-800 dark:text-[#00FC50]"
stroke-width="3"
stroke-dasharray="100"
stroke-dashoffset={100 - callPercentage?.toFixed(2)}

View File

@ -341,12 +341,12 @@
<span class="">
{#if item?.type === "Bought"}
<span
class="text-green-700 dark:text-[#00FC50] font-semibold dark:font-normal"
class="text-green-800 dark:text-[#00FC50] font-semibold dark:font-normal"
>{item?.type}</span
>
{:else if item?.type === "Sold"}
<span
class="text-red-700 dark:text-[#FF2F1F] font-semibold dark:font-normal"
class="text-red-800 dark:text-[#FF2F1F] font-semibold dark:font-normal"
>{item?.type}</span
>
{:else if item?.type === "Exchange"}

View File

@ -223,12 +223,12 @@
<td class="text-sm sm:text-[1rem] text-end">
{#if item?.type === "Bought"}
<span
class="text-green-700 dark:text-[#00FC50]"
class="text-green-800 dark:text-[#00FC50]"
>Bought</span
>
{:else if item?.type === "Sold"}
<span
class="text-red-700 dark:text-[#FF2F1F]"
class="text-red-800 dark:text-[#FF2F1F]"
>Sold</span
>
{/if}

View File

@ -361,7 +361,7 @@
<div class="mt-5 mb-5">
<Infobox
text={`Since the inauguration of Donald J. Trump on January 20, 2025, the
${selectedSector} has ${data?.getData?.marketPerformance[sectorDict[selectedSector]]["Inauguration"] >= 0 ? "grown" : "declined"} by <span class="${data?.getData?.marketPerformance[sectorDict[selectedSector]]["Inauguration"] >= 0 ? "text-green-700 dark:text-[#00FC50] before:content-['+']" : "text-red-700 dark:text-[#FF2F1F]"}">
${selectedSector} has ${data?.getData?.marketPerformance[sectorDict[selectedSector]]["Inauguration"] >= 0 ? "grown" : "declined"} by <span class="${data?.getData?.marketPerformance[sectorDict[selectedSector]]["Inauguration"] >= 0 ? "text-green-800 dark:text-[#00FC50] before:content-['+']" : "text-red-800 dark:text-[#FF2F1F]"}">
${data?.getData?.marketPerformance[sectorDict[selectedSector]]["Inauguration"] ?? "n/a"}%</span>.`}
/>
</div>
@ -481,8 +481,8 @@
<span class="inline-block">S&P500</span>
<span
class="{items?.at(0)?.changesPercentage > 0
? "text-green-700 dark:text-[#00FC50] before:content-['+']"
: 'text-red-700 dark:text-[#FF2F1F]'} "
? "text-green-800 dark:text-[#00FC50] before:content-['+']"
: 'text-red-800 dark:text-[#FF2F1F]'} "
>{items.length > 0
? items?.at(0)?.changesPercentage
: "n/a"}%</span

View File

@ -504,11 +504,11 @@
class=" text-sm sm:text-[1rem] whitespace-nowrap text-end"
>
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage?.toFixed(2)}%
</span>
{/if}

View File

@ -346,19 +346,19 @@
>{item?.count}</Table.Cell
>
<Table.Cell
class="text-right text-[1rem] text-green-700 dark:text-[#00FC50]"
class="text-right text-[1rem] text-green-800 dark:text-[#00FC50]"
>{item?.call}</Table.Cell
>
<Table.Cell
class="text-right text-[1rem] text-red-700 dark:text-[#FF2F1F]"
class="text-right text-[1rem] text-red-800 dark:text-[#FF2F1F]"
>{item?.put}</Table.Cell
>
<Table.Cell
class="text-right text-[1rem] {item?.avgSentiment >
0.4
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: item?.avgSentiment < -0.1
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-yellow-600 dark:text-[#C6A755]'} "
>{item?.avgSentiment > 0.4
? "Bullish"
@ -374,8 +374,8 @@
<Table.Cell class="text-right text-[1rem] ">
<span
class="{item?.changesPercentage > 0
? 'text-green-700 dark:text-[#00FC50]'
: 'text-red-700 dark:text-[#FF2F1F]'} text-end"
? 'text-green-800 dark:text-[#00FC50]'
: 'text-red-800 dark:text-[#FF2F1F]'} text-end"
>
{#if item?.changesPercentage > 0}
+{item?.changesPercentage?.toFixed(2)}%

View File

@ -662,7 +662,7 @@
},
returnOnInvestedCapital: {
label: "Return On Invested Capital",
step: ["100%", "50%", "20%", "10%", "5%", "1%"],
step: ["1", "0.5", "0.2", "0.1", "0.05", "0.01"],
defaultCondition: "over",
defaultValue: "any",
@ -785,14 +785,6 @@
defaultValue: "any",
category: "Debt",
},
debtRatio: {
label: "Debt Ratio",
step: [1, 0.5, 0, -0.5, -1],
defaultCondition: "over",
defaultValue: -0.5,
category: "Debt",
},
inventoryTurnover: {
label: "Inventory Turnover",
step: [200, 100, 50, 20, 10, 5, 3, 2, 1, 0],
@ -802,7 +794,7 @@
},
returnOnAssets: {
label: "Return on Assets",
step: [10, 8, 6, 4, 2, 1, 0, -2, -4, -6, -8, -10],
step: [1, 0.8, 0.6, 0.4, 0.2, 0.1, 0],
defaultCondition: "over",
defaultValue: "any",
@ -829,35 +821,28 @@
defaultValue: "any",
category: "Valuation & Ratios",
},
evSales: {
evToSales: {
label: "EV / Sales",
step: [50, 20, 10, 5, 1, 0],
defaultCondition: "over",
defaultValue: "any",
category: "Valuation & Ratios",
},
evEarnings: {
label: "EV / Earnings",
step: [50, 20, 10, 5, 1, 0],
defaultCondition: "over",
defaultValue: "any",
category: "Valuation & Ratios",
},
evEBITDA: {
evToEBITDA: {
label: "EV / EBITDA",
step: [50, 20, 10, 5, 1, 0],
defaultCondition: "over",
defaultValue: "any",
category: "Valuation & Ratios",
},
evEBIT: {
evToEBIT: {
label: "EV / EBIT",
step: [50, 20, 10, 5, 1, 0],
defaultCondition: "over",
defaultValue: "any",
category: "Valuation & Ratios",
},
evFCF: {
evToFCF: {
label: "EV / FCF",
step: [50, 20, 10, 5, 1, 0],
defaultCondition: "over",
@ -1051,7 +1036,7 @@
defaultValue: "any",
category: "Valuation & Ratios",
},
priceCashFlowRatio: {
priceToOperatingCashFlowRatio: {
label: "Price / Cash Flow",
step: [20, 15, 10, 5, 3, 1, 0],
defaultCondition: "over",
@ -1145,22 +1130,6 @@
defaultValue: "any",
category: "Margins",
},
longTermDebtToCapitalization: {
label: "Long Term Debt / Market Cap",
step: ["80%", "60%", "50%", "30%", "20%", "10%", "5%", "1%", "0.5%"],
defaultCondition: "over",
defaultValue: "any",
category: "Debt",
},
shortTermDebtToCapitalization: {
label: "Short Term Debt / Market Cap",
step: ["80%", "60%", "50%", "30%", "20%", "10%", "5%", "1%", "0.5%"],
defaultCondition: "over",
defaultValue: "any",
category: "Debt",
},
interestIncomeToCapitalization: {
label: "Interest Income / Market Cap",
step: ["80%", "60%", "50%", "30%", "20%", "10%", "5%", "1%", "0.5%"],
@ -3376,13 +3345,13 @@ const handleKeyDown = (event) => {
<td class=" text-end text-sm sm:text-[1rem]">
{#if item?.changesPercentage >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%
@ -3418,7 +3387,7 @@ const handleKeyDown = (event) => {
<td class=" whitespace-nowrap">
<a
href={"/stocks/" + item?.symbol}
class="sm:hover: text-blue-400 text-sm sm:text-[1rem]"
class="text-blue-700 sm:hover:text-muted dark:sm:hover:text-white dark:text-blue-400 text-sm sm:text-[1rem]"
>{item?.symbol}</a
>
</td>
@ -3481,13 +3450,13 @@ const handleKeyDown = (event) => {
{#if row?.rule === "marketCap"}
{abbreviateNumber(item[row?.rule])}
{:else if item[row?.rule] > 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{abbreviateNumber(
item[row?.rule]?.toFixed(2),
)}%</span
>
{:else if item[row?.rule] < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{abbreviateNumber(
item[row?.rule]?.toFixed(2),
)}%</span
@ -3539,11 +3508,11 @@ const handleKeyDown = (event) => {
>
{:else if row?.rule === "upside"}
{#if item[row?.rule] > 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item[row?.rule]?.toFixed(2)}%</span
>
{:else if item[row?.rule] < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item[row?.rule]?.toFixed(2)}%</span
>
{:else}
@ -3551,11 +3520,11 @@ const handleKeyDown = (event) => {
{/if}
{:else if ["analystRating", "topAnalystRating"]?.includes(row?.rule)}
{#if ["Strong Buy", "Buy"].includes(item[row?.rule])}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>{item[row?.rule]}</span
>
{:else if ["Strong Sell", "Sell"].includes(item[row?.rule])}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item[row?.rule]}</span
>
{:else if item[row?.rule] === "Hold"}
@ -3702,8 +3671,8 @@ const handleKeyDown = (event) => {
autocomplete="off"
type="search"
id="search"
class="placeholder-gray-600 dark:placeholder-gray-300 block w-full p-2 ps-10 text-sm text-gray-200 border border-gray-300 dark:border-gray-600 rounded-md bg-gray-100 dark:bg-secondary border border-blue-500"
placeholder="Search"
class="placeholder-gray-800 dark:placeholder-gray-300 block w-full p-2 ps-10 text-sm border border-gray-300 dark:border-gray-600 rounded-md bg-gray-100 dark:bg-secondary border border-blue-500"
placeholder="Search..."
bind:value={searchTerm}
/>
</div>
@ -3804,29 +3773,55 @@ const handleKeyDown = (event) => {
<!--Start Delete Strategy Modal-->
<input type="checkbox" id="deleteStrategy" class="modal-toggle" />
<dialog id="deleteStrategy" class="modal modal-bottom sm:modal-middle">
<dialog id="deleteStrategy" class="modal modal-middle p-3 sm:p-0">
<label for="deleteStrategy" class="cursor-pointer modal-backdrop bg-[#000]/40"
></label>
<div
class="modal-box w-full bg-white dark:bg-secondary border border-gray-300 dark:border-gray-600 overflow-hidden"
class="modal-box w-full p-6 rounded shadow-sm border
bg-white dark:bg-[#17181C] border border-gray-300 dark:border-gray-800"
>
<h3
class="font-semibold text-md sm:text-lg flex justify-center items-center mt-10 text-center"
>
Are you sure you want to delete the strategy?
</h3>
<div
class=" modal-action w-full m-auto p-5 flex flex-col sm:flex-row items-center"
>
<h3 class="text-lg font-medium mb-2">Delete Watchlist</h3>
<p class="text-sm mb-6">
Are you sure you want to delete this watchlist? This action cannot be
undone.
</p>
<div class="flex justify-end space-x-3">
<label
for="deleteStrategy"
class="cursor-pointer px-4 py-2 rounded text-sm font-medium
transition-colors duration-200
bg-zinc-800 text-zinc-300 hover:bg-zinc-700"
tabindex="0">Cancel</label
><label
for="deleteStrategy"
on:click={handleDeleteStrategy}
class="cursor-pointer py-2.5 text-center bg-blue-500 sm:hover:bg-blue-600 dark:bg-[#fff] dark:sm:hover:bg-gray-300 w-full rounded-md m-auto text-white dark:text-black font-semibold text-md"
class="cursor-pointer px-4 py-2 rounded text-sm font-medium
transition-colors duration-100 flex items-center
bg-red-600 text-white
"
tabindex="0"
><svg
stroke="currentColor"
fill="none"
stroke-width="2"
viewBox="0 0 24 24"
stroke-linecap="round"
stroke-linejoin="round"
class="w-4 h-4 mr-2"
height="1em"
width="1em"
xmlns="http://www.w3.org/2000/svg"
><polyline points="3 6 5 6 21 6"></polyline><path
d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
></path><line x1="10" y1="11" x2="10" y2="17"></line><line
x1="14"
y1="11"
x2="14"
y2="17"
></line></svg
>Delete Watchlist</label
>
Proceed
</label>
</div>
</div>
</dialog>

View File

@ -796,15 +796,15 @@
>
<span
class={displayLegend?.change >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
{displayLegend?.change}
</span>
<span
class={displayLegend?.changesPercentage >= 0
? "text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
({displayLegend?.changesPercentage}%)
</span>
@ -840,8 +840,8 @@
<div
class="mt-1.5 block text-sm sm:mt-0 sm:inline sm:text-lg {prePostData?.changesPercentage >=
0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'}"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'}"
>
{prePostData?.changesPercentage?.toFixed(
2,

View File

@ -864,24 +864,24 @@
><td class="py-[3px] text-left lg:py-0.5">Change</td>
<td
class={lowChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}>{lowChange}%</td
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}>{lowChange}%</td
>
<td
class={avgChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}>{avgChange}%</td
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}>{avgChange}%</td
>
<td
class={medianChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{medianChange}%</td
>
<td
class={highChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{highChange}%</td
></tr
></tbody

View File

@ -560,8 +560,8 @@
{#if isPro}
<span
class="text-xl font-bold {avgReturn >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'}"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'}"
>{avgReturn?.toFixed(2)}%</span
>
{:else}
@ -696,8 +696,8 @@
{#if index < 5 || isPro}
<span
class={item?.change > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>
{item?.change}%
</span>
@ -732,8 +732,8 @@
)} the model shows that the average return would be
<span
class="font-semibold {avgReturn >= 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: 'text-red-700 dark:text-[#FF2F1F]'}"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: 'text-red-800 dark:text-[#FF2F1F]'}"
>{avgReturn?.toFixed(2)}%</span
> based on the backtesting results.
</p>
@ -972,26 +972,26 @@
{:else}
<td
class={lowChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{lowChange}%</td
>
<td
class={avgChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{avgChange}%</td
>
<td
class={medianChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{medianChange}%</td
>
<td
class={highChange > 0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]"}
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]"}
>{highChange}%</td
>
{/if}

View File

@ -325,9 +325,9 @@
<div
class="mt-1 break-words font-semibold leading-8 text-xl sm:text-2xl {changesPercentage >=
0
? "before:content-['+'] after:content-['%'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] after:content-['%'] text-green-800 dark:text-[#00FC50]"
: changesPercentage < 0
? "after:content-['%'] text-red-700 dark:text-[#FF2F1F]"
? "after:content-['%'] text-red-800 dark:text-[#FF2F1F]"
: ''}"
>
{changesPercentage}
@ -525,12 +525,12 @@
data?.getStockQuote?.price -
1 >=
0
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: item?.adjusted_pt_current /
data?.getStockQuote?.price -
1 <
0
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''}"
>
{(

View File

@ -467,10 +467,10 @@
<td
class="text-sm sm:text-[1rem] {item?.changesPercentage >=
0 && item?.changesPercentage !== null
? "text-green-700 dark:text-[#00FC50] before:content-['+'] "
? "text-green-800 dark:text-[#00FC50] before:content-['+'] "
: item?.changesPercentage < 0 &&
item?.changesPercentage !== null
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''} text-end"
>
{item?.changesPercentage !== null

View File

@ -268,11 +268,11 @@
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{#if item?.type === "Bought"}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>Bought</span
>
{:else if item?.type === "Sold"}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>Sold</span
>
{:else if item?.type === "Exchange"}

View File

@ -139,9 +139,9 @@
{#each growthValues[index] as growthValue}
<td
class="text-sm sm:text-[1rem] text-end {growthValue > 0
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: growthValue < 0
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''} border-b border-gray-300 dark:border-gray-800"
>
{growthValue > 0 ? "+" : ""}{growthValue !== null &&
@ -214,9 +214,9 @@
<td
class="text-sm sm:text-[1rem] text-center {growthValue >
0
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: growthValue < 0
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''} border-b border-gray-300 dark:border-gray-800"
>
{growthValue > 0 ? "+" : ""}{growthValue !== null &&
@ -291,9 +291,9 @@
<td
class="text-sm sm:text-[1rem] text-center {growthValue >
0
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: growthValue < 0
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''} border-b border-gray-300 dark:border-gray-800"
>
{growthValue > 0 ? "+" : ""}{growthValue !== null &&

View File

@ -267,11 +267,11 @@
class=" text-sm sm:text-[1rem] whitespace-nowrap text-end"
>
{#if item?.valueGrowth > 0}
<span class="text-green-700 dark:text-[#00FC50]">
<span class="text-green-800 dark:text-[#00FC50]">
+{item?.valueGrowth?.toFixed(2)}%
</span>
{:else if item?.valueGrowth < 0}
<span class="text-red-700 dark:text-[#FF2F1F]">
<span class="text-red-800 dark:text-[#FF2F1F]">
{item?.valueGrowth?.toFixed(2)}%
</span>
{:else}

View File

@ -402,13 +402,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentage >= 0 && item?.changesPercentage !== null}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentage >= 1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%</span
>
{:else if item?.changesPercentage < 0 && item?.changesPercentage !== null}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentage <= -1000
? abbreviateNumber(item?.changesPercentage)
: item?.changesPercentage?.toFixed(2)}%
@ -526,11 +526,11 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changeOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changeOI?.toLocaleString("en-US")}</span
>
{:else if item?.changeOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changeOI?.toLocaleString("en-US")}
</span>
{:else}
@ -540,13 +540,13 @@
<td class=" text-sm sm:text-[1rem] text-end">
{#if item?.changesPercentageOI >= 0}
<span class="text-green-700 dark:text-[#00FC50]"
<span class="text-green-800 dark:text-[#00FC50]"
>+{item?.changesPercentageOI >= 1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%</span
>
{:else if item?.changesPercentageOI < 0}
<span class="text-red-700 dark:text-[#FF2F1F]"
<span class="text-red-800 dark:text-[#FF2F1F]"
>{item?.changesPercentageOI <= -1000
? abbreviateNumber(item?.changesPercentageOI)
: item?.changesPercentageOI?.toFixed(2)}%

View File

@ -255,8 +255,8 @@
changeRate >= 0 && changeRate !== null ? "increased" : "decreased";
const growthRateClass =
changeRate >= 0 && changeRate !== null
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: "text-red-700 dark:text-[#FF2F1F]";
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: "text-red-800 dark:text-[#FF2F1F]";
return `
<span>
@ -577,7 +577,7 @@
{#if index === historyList?.length - 1}
n/a
{:else if item?.employeeCount > historyList[index + 1]?.employeeCount}
<span class="text-green-700 dark:text-[#00FC50]">
<span class="text-green-800 dark:text-[#00FC50]">
+{(
((item?.employeeCount -
historyList[index + 1]?.employeeCount) /
@ -586,7 +586,7 @@
).toFixed(2)}%
</span>
{:else if item?.employeeCount < historyList[index + 1]?.employeeCount}
<span class="text-red-700 dark:text-[#FF2F1F]">
<span class="text-red-800 dark:text-[#FF2F1F]">
-{(
(Math.abs(
item?.employeeCount -

View File

@ -117,7 +117,7 @@
: "n/a"}</span
>
<div class="flex flex-col ml-2">
<span class="text-sm text-red-700 dark:text-red-400">
<span class="text-sm text-red-800 dark:text-red-400">
{relativeFTD > 20 ? "High Impact" : "Low Impact"}
</span>
</div>
@ -140,10 +140,10 @@
<span
class="text-sm {changePercentageYearAgo >= 0 &&
changePercentageYearAgo !== null
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: changePercentageYearAgo < 0 &&
changePercentageYearAgo !== null
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''}"
>
{changePercentageYearAgo >= 0 ? "Positive" : "Negative"} Trend

View File

@ -523,10 +523,10 @@
<span
class="text-sm {changePercentageYearAgo >= 0 &&
changePercentageYearAgo !== null
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
? "before:content-['+'] text-green-800 dark:text-[#00FC50]"
: changePercentageYearAgo < 0 &&
changePercentageYearAgo !== null
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: ''}"
>
{changePercentageYearAgo >= 0 ? "Positive" : "Negative"}
@ -757,7 +757,7 @@
{#if index === tableList?.length - 1}
n/a
{:else if item?.marketCap > tableList[index + 1]?.marketCap}
<span class="text-green-700 dark:text-[#00FC50]">
<span class="text-green-800 dark:text-[#00FC50]">
+{(
((item?.marketCap -
tableList[index + 1]?.marketCap) /
@ -766,7 +766,7 @@
)?.toFixed(2)}%
</span>
{:else if item?.marketCap < tableList[index + 1]?.marketCap}
<span class="text-red-700 dark:text-[#FF2F1F]">
<span class="text-red-800 dark:text-[#FF2F1F]">
-{(
Math.abs(
(item?.marketCap -

View File

@ -127,7 +127,7 @@
>{`${earningsData?.positiveRevenueSurprises}/${earningsData?.totalReports}`}
quarters</span
>
<span class="text-xs text-red-700 dark:text-red-400">
<span class="text-xs text-red-800 dark:text-red-400">
{earningsData?.positiveRevenueSurprises >
earningsData?.totalReports / 2
? "Above Average"
@ -401,8 +401,8 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.backward_2_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
: 'text-red-700 dark:text-negative'}"
? "text-green-800 dark:text-positive before:content-['+']"
: 'text-red-800 dark:text-negative'}"
>{item?.backward_2_days_change_percent}%<span
class="w-0 text-center"
></span></span
@ -412,8 +412,8 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.backward_1_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
: 'text-red-700 dark:text-negative'}"
? "text-green-800 dark:text-positive before:content-['+']"
: 'text-red-800 dark:text-negative'}"
>{item?.backward_1_days_change_percent?.toFixed(
2,
)}%<span class="w-0 text-center"></span></span
@ -423,8 +423,8 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.backward_1_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
: 'text-red-700 dark:text-negative'}"
? "text-green-800 dark:text-positive before:content-['+']"
: 'text-red-800 dark:text-negative'}"
>{item?.backward_1_days_change_percent?.toFixed(
2,
)}%<span class="w-0 text-center"></span></span
@ -478,9 +478,9 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.forward_2_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
? "text-green-800 dark:text-positive before:content-['+']"
: item?.forward_2_days_change_percent < 0
? 'text-red-700 dark:text-negative'
? 'text-red-800 dark:text-negative'
: ''}"
>{item?.forward_2_days_change_percent !== undefined
? item?.forward_2_days_change_percent + "%"
@ -491,9 +491,9 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.forward_3_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
? "text-green-800 dark:text-positive before:content-['+']"
: item?.forward_3_days_change_percent < 0
? 'text-red-700 dark:text-negative'
? 'text-red-800 dark:text-negative'
: ''}"
>{item?.forward_3_days_change_percent !== undefined
? item?.forward_3_days_change_percent + "%"
@ -504,9 +504,9 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.forward_4_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
? "text-green-800 dark:text-positive before:content-['+']"
: item?.forward_4_days_change_percent < 0
? 'text-red-700 dark:text-negative'
? 'text-red-800 dark:text-negative'
: ''}"
>{item?.forward_4_days_change_percent !== undefined
? item?.forward_4_days_change_percent + "%"
@ -517,9 +517,9 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.forward_6_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
? "text-green-800 dark:text-positive before:content-['+']"
: item?.forward_6_days_change_percent < 0
? 'text-red-700 dark:text-negative'
? 'text-red-800 dark:text-negative'
: ''}"
>{item?.forward_6_days_change_percent !== undefined
? item?.forward_6_days_change_percent + "%"
@ -530,8 +530,8 @@
><span
class="w-full text-sm sm:text-[1rem] items-baseline justify-end whitespace-nowrap {item?.backward_4_days_change_percent >=
0
? "text-green-700 dark:text-positive before:content-['+']"
: 'text-red-700 dark:text-negative'}"
? "text-green-800 dark:text-positive before:content-['+']"
: 'text-red-800 dark:text-negative'}"
>{item?.backward_4_days_change_percent?.toFixed(
2,
)}%<span class="w-0 text-center"></span></span

View File

@ -460,7 +460,7 @@
{#if index === tableList?.length - 1}
n/a
{:else if item?.revenue > tableList[index + 1]?.revenue}
<span class="text-green-700 dark:text-[#00FC50]">
<span class="text-green-800 dark:text-[#00FC50]">
+{(
((item?.revenue -
tableList[index + 1]?.revenue) /
@ -469,7 +469,7 @@
)?.toFixed(2)}%
</span>
{:else if item?.revenue < tableList[index + 1]?.revenue}
<span class="text-red-700 dark:text-[#FF2F1F]">
<span class="text-red-800 dark:text-[#FF2F1F]">
-{(
Math.abs(
(item?.revenue -

View File

@ -313,8 +313,8 @@
<td
class="text-sm sm:text-[1rem] {item?.put_call ===
'Calls'
? 'text-green-700 dark:text-[#00FC50]'
: 'text-red-700 dark:text-[#FF2F1F]'} text-start"
? 'text-green-800 dark:text-[#00FC50]'
: 'text-red-800 dark:text-[#FF2F1F]'} text-start"
>
{item?.put_call}
</td>
@ -322,9 +322,9 @@
<td
class="text-sm sm:text-[1rem] {item?.sentiment ===
'Bullish'
? 'text-green-700 dark:text-[#00FC50]'
? 'text-green-800 dark:text-[#00FC50]'
: item?.sentiment === 'Bearish'
? 'text-red-700 dark:text-[#FF2F1F]'
? 'text-red-800 dark:text-[#FF2F1F]'
: 'text-[#C6A755]'} text-start"
>
{item?.sentiment}

View File

@ -1729,24 +1729,24 @@
{:else if row?.type === "percentSign"}
{#if item[row?.rule] >= 0}
<span
class="text-green-700 dark:text-[#00FC50]"
class="text-green-800 dark:text-[#00FC50]"
>+{item[row?.rule]?.toFixed(2)}%</span
>
{:else}
<span
class="text-red-700 dark:text-[#FF2F1F]"
class="text-red-800 dark:text-[#FF2F1F]"
>{item[row?.rule]?.toFixed(2)}%</span
>
{/if}
{:else if row?.type === "rating"}
{#if ["Strong Buy", "Buy"].includes(item[row?.rule])}
<span
class="text-green-700 dark:text-[#00FC50]"
class="text-green-800 dark:text-[#00FC50]"
>{item[row?.rule]}</span
>
{:else if ["Strong Sell", "Sell"].includes(item[row?.rule])}
<span
class="text-red-700 dark:text-[#FF2F1F]"
class="text-red-800 dark:text-[#FF2F1F]"
>{item[row?.rule]}</span
>
{:else if item[row?.rule] === "Hold"}
@ -2055,31 +2055,57 @@
<!--Start Delete Strategy Modal-->
<input type="checkbox" id="deleteWatchlist" class="modal-toggle" />
<dialog id="deleteWatchlist" class="modal modal-bottom sm:modal-middle">
<dialog id="deleteWatchlist" class="modal modal-middle p-3 sm:p-0">
<label
for="deleteWatchlist"
class="cursor-pointer modal-backdrop bg-[#000]/40"
></label>
<div
class="modal-box w-full bg-secondary border border-gray-300 dark:border-gray-600 overflow-hidden"
class="modal-box w-full p-6 rounded shadow-sm border
bg-white dark:bg-[#17181C] border border-gray-300 dark:border-gray-800"
>
<h3
class="font-bold text-[1rem] text-center sm:text-lg flex justify-center items-center mt-10 text-white"
>
Are you sure you want to delete the watchlist?
</h3>
<div
class="modal-action w-full m-auto p-5 flex flex-col sm:flex-row items-center"
>
<h3 class="text-lg font-medium mb-2">Delete Watchlist</h3>
<p class="text-sm mb-6">
Are you sure you want to delete this watchlist? This action cannot be
undone.
</p>
<div class="flex justify-end space-x-3">
<label
for="deleteWatchlist"
class="cursor-pointer px-4 py-2 rounded text-sm font-medium
transition-colors duration-200
bg-zinc-800 text-zinc-300 hover:bg-zinc-700"
tabindex="0">Cancel</label
><label
for="deleteWatchlist"
on:click={deleteWatchlist}
class="cursor-pointer mt-2 py-2.5 text-center bg-[#fff] sm:hover:bg-gray-200 btn-md w-full rounded m-auto text-black font-semibold text-md"
class="cursor-pointer px-4 py-2 rounded text-sm font-medium
transition-colors duration-100 flex items-center
bg-red-600 text-white
"
tabindex="0"
><svg
stroke="currentColor"
fill="none"
stroke-width="2"
viewBox="0 0 24 24"
stroke-linecap="round"
stroke-linejoin="round"
class="w-4 h-4 mr-2"
height="1em"
width="1em"
xmlns="http://www.w3.org/2000/svg"
><polyline points="3 6 5 6 21 6"></polyline><path
d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
></path><line x1="10" y1="11" x2="10" y2="17"></line><line
x1="14"
y1="11"
x2="14"
y2="17"
></line></svg
>Delete Watchlist</label
>
Proceed
</label>
</div>
</div>
</dialog>