ui fixes
This commit is contained in:
parent
a4a11b2638
commit
52285fb69a
30
src/app.css
30
src/app.css
@ -32,14 +32,6 @@
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
}
|
||||
|
||||
@utility shake-ticker {
|
||||
&:hover img {
|
||||
animation-name: shake;
|
||||
animation-duration: 0.5s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
}
|
||||
|
||||
@layer utilities {
|
||||
|
||||
@ -51,25 +43,3 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@layer utilities {
|
||||
|
||||
@keyframes shake {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
25% {
|
||||
transform: rotate(10deg);
|
||||
}
|
||||
50% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(-10deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,25 @@
|
||||
|
||||
|
||||
<p class="text-md font-medium">Add to Watchlist</p>
|
||||
<svg class="w-10 h-10 mt-1.5 ml-auto" viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" fill="#D6D6DC" stroke="#1A1A27"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <title>star-solid</title> <g id="Layer_2" data-name="Layer 2"> <g id="invisible_box" data-name="invisible box"> <rect width="48" height="48" fill="none"></rect> </g> <g id="icons_Q2" data-name="icons Q2"> <path d="M24,3a2.1,2.1,0,0,0-1.8,1.1L16.5,15.7,3.7,17.5A2.1,2.1,0,0,0,2.6,21l9.2,8.9L9.7,42.7A2,2,0,0,0,11.6,45l1-.2,11.4-6,11.4,6,1,.2a2,2,0,0,0,1.9-2.3L36.2,29.9,45.4,21a2.1,2.1,0,0,0-1.1-3.5L31.5,15.7,25.8,4.1A2.1,2.1,0,0,0,24,3Z"></path> </g> </g> </g></svg>
|
||||
<p class="text-md">Add to Watchlist</p>
|
||||
<svg
|
||||
class="w-10 h-10 mt-1.5 ml-auto"
|
||||
viewBox="0 0 48 48"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="#D6D6DC"
|
||||
stroke="#1A1A27"
|
||||
><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g
|
||||
id="SVGRepo_tracerCarrier"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
></g><g id="SVGRepo_iconCarrier">
|
||||
<title>star-solid</title>
|
||||
<g id="Layer_2" data-name="Layer 2">
|
||||
<g id="invisible_box" data-name="invisible box">
|
||||
<rect width="48" height="48" fill="none"></rect>
|
||||
</g>
|
||||
<g id="icons_Q2" data-name="icons Q2">
|
||||
<path
|
||||
d="M24,3a2.1,2.1,0,0,0-1.8,1.1L16.5,15.7,3.7,17.5A2.1,2.1,0,0,0,2.6,21l9.2,8.9L9.7,42.7A2,2,0,0,0,11.6,45l1-.2,11.4-6,11.4,6,1,.2a2,2,0,0,0,1.9-2.3L36.2,29.9,45.4,21a2.1,2.1,0,0,0-1.1-3.5L31.5,15.7,25.8,4.1A2.1,2.1,0,0,0,24,3Z"
|
||||
></path>
|
||||
</g>
|
||||
</g>
|
||||
</g></svg
|
||||
>
|
||||
|
||||
@ -64,12 +64,10 @@
|
||||
|
||||
<div class="flex flex-col mt-5 w-full">
|
||||
<div class="flex flex-row m-auto w-full">
|
||||
<span class="text-start mr-auto ml-5 text-white font-medium text-xl">
|
||||
<span class="text-start mr-auto ml-5 text-white text-xl">
|
||||
Signal
|
||||
</span>
|
||||
<span class="mr-5 text-white font-medium text-xl">
|
||||
Price Target
|
||||
</span>
|
||||
<span class="mr-5 text-white text-xl"> Price Target </span>
|
||||
</div>
|
||||
<div class="flex flex-row m-auto w-full">
|
||||
{#if consensusRating === "Buy" || consensusRating === "Strong Buy"}
|
||||
@ -122,10 +120,8 @@
|
||||
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<div class="flex flex-row items-center w-11/12 mt-5 mb-2">
|
||||
<span class="text-white font-medium text-start mr-auto">
|
||||
Buy
|
||||
</span>
|
||||
<span class="text-white text-md font-medium ml-auto">
|
||||
<span class="text-white text-start mr-auto"> Buy </span>
|
||||
<span class="text-white text-md ml-auto">
|
||||
{buyCount}%
|
||||
</span>
|
||||
</div>
|
||||
@ -138,10 +134,8 @@
|
||||
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<div class="flex flex-row items-center w-11/12 mt-5 mb-2">
|
||||
<span class="text-white font-medium text-start mr-auto">
|
||||
Hold
|
||||
</span>
|
||||
<span class="text-white text-md font-medium ml-auto">
|
||||
<span class="text-white text-start mr-auto"> Hold </span>
|
||||
<span class="text-white text-md ml-auto">
|
||||
{holdCount}%
|
||||
</span>
|
||||
</div>
|
||||
@ -154,10 +148,8 @@
|
||||
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<div class="flex flex-row items-center w-11/12 mt-5 mb-2">
|
||||
<span class="text-white font-medium text-start mr-auto">
|
||||
Sell
|
||||
</span>
|
||||
<span class="text-white text-md font-medium ml-auto">
|
||||
<span class="text-white text-start mr-auto"> Sell </span>
|
||||
<span class="text-white text-md ml-auto">
|
||||
{sellCount}%
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -789,13 +789,13 @@
|
||||
<tbody>
|
||||
<tr class="bg-primary border-b border-gray-600">
|
||||
<th
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start font-medium bg-primary border-b border-gray-800"
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start bg-primary border-b border-gray-800"
|
||||
>
|
||||
Revenue
|
||||
</th>
|
||||
{#each tableCombinedRevenue as item}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium border-b border-gray-800 bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end border-b border-gray-800 bg-default"
|
||||
>
|
||||
{item?.val === "0.00" ||
|
||||
item?.val === null ||
|
||||
@ -808,13 +808,13 @@
|
||||
|
||||
<tr class="bg-primary">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-gray-800"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-gray-800"
|
||||
>
|
||||
Revenue Growth
|
||||
</th>
|
||||
{#each computeGrowthList(tableActualRevenue, tableCombinedRevenue) as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default border-b border-gray-800"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default border-b border-gray-800"
|
||||
>
|
||||
{#if index === 0 || item?.growth === null}
|
||||
n/a
|
||||
@ -843,13 +843,13 @@
|
||||
|
||||
<tr class="bg-primary border-b-[#09090B]">
|
||||
<th
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start font-medium bg-primary border-b border-gray-800"
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start bg-primary border-b border-gray-800"
|
||||
>
|
||||
EPS
|
||||
</th>
|
||||
{#each tableCombinedEPS as item}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium border-b border-gray-800 bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end border-b border-gray-800 bg-default"
|
||||
>
|
||||
{item?.val === "0.00" ||
|
||||
item?.val === null ||
|
||||
@ -862,13 +862,13 @@
|
||||
|
||||
<tr class="bg-primary">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-gray-800"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-gray-800"
|
||||
>
|
||||
EPS Growth
|
||||
</th>
|
||||
{#each computeGrowthList(tableActualEPS, tableCombinedEPS) as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default border-b border-gray-800"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default border-b border-gray-800"
|
||||
>
|
||||
{#if index === 0 || item?.growth === null}
|
||||
n/a
|
||||
@ -896,13 +896,13 @@
|
||||
</tr>
|
||||
<tr class="bg-primary border-b border-gray-600">
|
||||
<th
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start font-medium bg-primary border-b border-gray-800"
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start bg-primary border-b border-gray-800"
|
||||
>
|
||||
Net Income
|
||||
</th>
|
||||
{#each tableCombinedNetIncome as item}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium border-b border-gray-800 bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end border-b border-gray-800 bg-default"
|
||||
>
|
||||
{item?.val === "0.00" ||
|
||||
item?.val === null ||
|
||||
@ -915,13 +915,13 @@
|
||||
|
||||
<tr class="bg-primary">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-gray-800"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-gray-800"
|
||||
>
|
||||
Net Income Growth
|
||||
</th>
|
||||
{#each computeGrowthList(tableActualNetIncome, tableCombinedNetIncome) as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default border-b border-gray-800"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default border-b border-gray-800"
|
||||
>
|
||||
{#if index === 0 || item?.growth === null}
|
||||
n/a
|
||||
@ -950,13 +950,13 @@
|
||||
|
||||
<tr class="bg-primary border-b border-gray-600">
|
||||
<th
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start font-medium bg-primary border-b border-gray-800"
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start bg-primary border-b border-gray-800"
|
||||
>
|
||||
EBITDA
|
||||
</th>
|
||||
{#each tableCombinedEbitda as item}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium border-b border-gray-800 bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end border-b border-gray-800 bg-default"
|
||||
>
|
||||
{item?.val === "0.00" ||
|
||||
item?.val === null ||
|
||||
@ -969,13 +969,13 @@
|
||||
|
||||
<tr class="bg-primary">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-gray-800"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-gray-800"
|
||||
>
|
||||
EBITDA Growth
|
||||
</th>
|
||||
{#each computeGrowthList(tableActualEbitda, tableCombinedEbitda) as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default border-b border-gray-800"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default border-b border-gray-800"
|
||||
>
|
||||
{#if index === 0 || item?.growth === null}
|
||||
n/a
|
||||
@ -1004,12 +1004,12 @@
|
||||
|
||||
<tr class="bg-primary border-b border-gray-600">
|
||||
<th
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start font-medium bg-primary border-b border-gray-800"
|
||||
class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start bg-primary border-b border-gray-800"
|
||||
>No. Analysts</th
|
||||
>
|
||||
{#each tableCombinedRevenue as item}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium border-b border-gray-800 bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end border-b border-gray-800 bg-default"
|
||||
>
|
||||
{#if item?.FY > 24}
|
||||
{item?.numOfAnalysts === (null || 0)
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
>
|
||||
{#if latestInfoDate(data?.getAnalystInsight?.date)}
|
||||
<label
|
||||
class="bg-[#2D4F8A] text-white font-medium text-xs rounded-md px-2 py-0.5 ml-3"
|
||||
class="bg-[#2D4F8A] text-white text-xs rounded-md px-2 py-0.5 ml-3"
|
||||
>New</label
|
||||
>
|
||||
{/if}
|
||||
|
||||
@ -61,7 +61,7 @@
|
||||
<label
|
||||
for="cookieConsent"
|
||||
on:click={() => cookieConsent("true")}
|
||||
class="text-xs cursor-pointer w-auto md:w-auto font-medium bg-gray-800 rounded-md hover:bg-gray-700 text-white px-4 py-2.5 duration-300 transition-colors focus:outline-hidden"
|
||||
class="text-xs cursor-pointer w-auto md:w-auto bg-gray-800 rounded-md hover:bg-gray-700 text-white px-4 py-2.5 duration-300 transition-colors focus:outline-hidden"
|
||||
>
|
||||
Accept All Cookies
|
||||
</label>
|
||||
|
||||
@ -357,11 +357,9 @@
|
||||
{#each tableList as item, index}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800"
|
||||
>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
<td class="text-white text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
{new Date(item?.date)?.toLocaleDateString("en-US", {
|
||||
day: "2-digit", // Include day number
|
||||
month: "short", // Display short month name
|
||||
@ -382,7 +380,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap font-medium text-end"
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{#if index === tableList?.length - 1}
|
||||
n/a
|
||||
|
||||
@ -64,7 +64,7 @@
|
||||
<tr
|
||||
class="text-white bg-[#000] lg:bg-default border-b border-[#000] lg:border-[#27272A]"
|
||||
>
|
||||
<td class="text-start text-sm text-white font-medium">
|
||||
<td class="text-start text-sm text-white">
|
||||
{new Date(item?.date)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
@ -73,7 +73,7 @@
|
||||
})}
|
||||
</td>
|
||||
|
||||
<td class="text-end text-sm text-white font-medium">
|
||||
<td class="text-end text-sm text-white">
|
||||
{item?.paymentDate?.length !== 0
|
||||
? new Date(item?.paymentDate)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
@ -84,7 +84,7 @@
|
||||
: "n/a"}
|
||||
</td>
|
||||
|
||||
<td class="text-end text-sm text-white font-medium">
|
||||
<td class="text-end text-sm text-white">
|
||||
${item?.adjDividend?.toFixed(2)}
|
||||
</td>
|
||||
</tr>
|
||||
@ -102,7 +102,7 @@
|
||||
</label>
|
||||
{:else}
|
||||
<h2
|
||||
class="mt-20 justify-center items-center text-3xl font-medium text-slate-700 mb-20 m-auto"
|
||||
class="mt-20 justify-center items-center text-3xl text-slate-700 mb-20 m-auto"
|
||||
>
|
||||
No data available
|
||||
<svg
|
||||
|
||||
@ -85,9 +85,7 @@
|
||||
style="background-image: url('{defaultImage}');"
|
||||
>
|
||||
<div class="flex flex-row pt-1 pb-2">
|
||||
<div
|
||||
class="badge badge-error gap-2 mt-2 font-medium text-sm text-white"
|
||||
>
|
||||
<div class="badge badge-error gap-2 mt-2 text-sm text-white">
|
||||
Asset Class - {assetClass}
|
||||
</div>
|
||||
</div>
|
||||
@ -275,7 +273,7 @@
|
||||
<div class="flex flex-row w-full items-center mt-4 pb-2 mb-2">
|
||||
<label
|
||||
on:click={() => (showFullText = !showFullText)}
|
||||
class="hidden lg:block ml-3 w-full text-md mt-1 cursor-pointer font-medium text-white sm:hover:text-blue-400 sm:hover:underline"
|
||||
class="hidden lg:block ml-3 w-full text-md mt-1 cursor-pointer text-white sm:hover:text-blue-400 sm:hover:underline"
|
||||
>
|
||||
{#if showFullText}
|
||||
Show less
|
||||
@ -288,7 +286,7 @@
|
||||
<a
|
||||
target="_blank"
|
||||
href={website}
|
||||
class="inline-flex text-sm font-medium text-white sm:hover:text-blue-400 sm:hover:underline"
|
||||
class="inline-flex text-sm text-white sm:hover:text-blue-400 sm:hover:underline"
|
||||
>
|
||||
Go to website
|
||||
<svg
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
<div class="bg-[#000] h-auto w-screen">
|
||||
<!--Start Header-->
|
||||
<div class="w-full p-1 flex flex-col items-center pb-5 h-auto">
|
||||
<h2 class="text-center m-auto text-[1.1rem] font-medium text-white mt-5">
|
||||
<h2 class="text-center m-auto text-[1.1rem] text-white mt-5">
|
||||
Executives
|
||||
</h2>
|
||||
|
||||
@ -79,14 +79,12 @@
|
||||
class="w-3 h-3 bg-[#0FC008] border-4 box-content border-gray-900 rounded-full transform -translate-x-1/2"
|
||||
aria-hidden="true"
|
||||
></div>
|
||||
<span class="text-white text-sm font-medium inline-block">
|
||||
Female <span class="font-medium text-[0.95rem]"
|
||||
>({numberOfFemales})</span
|
||||
>
|
||||
<span class="text-white text-sm inline-block">
|
||||
Female <span class=" text-[0.95rem]">({numberOfFemales})</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<span class="text-white font-medium text-3xl m-auto">
|
||||
<span class="text-white text-3xl m-auto">
|
||||
{numberOfFemales === 0
|
||||
? 0
|
||||
: (
|
||||
@ -104,10 +102,8 @@
|
||||
class="w-3 h-3 bg-[#FF2F1F] border-4 box-content border-gray-900 rounded-full transform -translate-x-1/2"
|
||||
aria-hidden="true"
|
||||
></div>
|
||||
<span class="text-white text-sm font-medium inline-block">
|
||||
Male <span class="font-medium text-[0.95rem]"
|
||||
>({numberOfMales})</span
|
||||
>
|
||||
<span class="text-white text-sm inline-block">
|
||||
Male <span class=" text-[0.95rem]">({numberOfMales})</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -124,7 +120,7 @@
|
||||
<div class="flex flex-row items-center relative">
|
||||
<div class="flex flex-col">
|
||||
<div
|
||||
class="flex flex-row items-center mr-auto mb-2 text-white font-medium text-sm w-56"
|
||||
class="flex flex-row items-center mr-auto mb-2 text-white text-sm w-56"
|
||||
>
|
||||
<span>
|
||||
{item?.name}
|
||||
|
||||
@ -337,10 +337,12 @@
|
||||
{#each tableList as item, index}
|
||||
<!-- row -->
|
||||
<tr class="odd:bg-odd">
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.date}
|
||||
<td class="text-white text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
{new Date(item?.date)?.toLocaleDateString("en-US", {
|
||||
day: "2-digit", // Include day number
|
||||
month: "short", // Display short month name
|
||||
year: "numeric", // Include year
|
||||
})}
|
||||
</td>
|
||||
|
||||
<td
|
||||
@ -356,7 +358,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap font-medium text-end"
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{#if index === tableList?.length - 1}
|
||||
n/a
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm"
|
||||
<span class=" text-gray-200 text-sm"
|
||||
>Quarter Sentiment</span
|
||||
>
|
||||
{#if !deactivateContent}
|
||||
@ -48,7 +48,7 @@
|
||||
{:else}
|
||||
<a
|
||||
href="/pricing"
|
||||
class="text-blue-400 mt-1 hover:text-white font-medium text-sm flex justify-center items-center"
|
||||
class="text-blue-400 mt-1 hover:text-white text-sm flex justify-center items-center"
|
||||
>
|
||||
Unlock with Pro
|
||||
<svg
|
||||
@ -71,9 +71,9 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm">Accuracy</span>
|
||||
<span class=" text-gray-200 text-sm">Accuracy</span>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
class="text-start text-sm sm:text-[1rem] text-white"
|
||||
>
|
||||
{accuracy >= 65
|
||||
? "Good"
|
||||
@ -133,9 +133,9 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm">Precision</span>
|
||||
<span class=" text-gray-200 text-sm">Precision</span>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
class="text-start text-sm sm:text-[1rem] text-white"
|
||||
>
|
||||
{precision >= 65
|
||||
? "Good"
|
||||
@ -204,7 +204,7 @@
|
||||
{:else}
|
||||
<a
|
||||
href="/pricing"
|
||||
class="text-blue-400 mt-1 hover:text-white font-medium text-sm"
|
||||
class="text-blue-400 mt-1 hover:text-white text-sm"
|
||||
>
|
||||
Unlock Prediction with Pro
|
||||
<svg
|
||||
|
||||
@ -29,14 +29,12 @@
|
||||
/></svg
|
||||
>
|
||||
</div>
|
||||
<span
|
||||
class="text-slate-300 font-medium text-md sm:text-lg mt-3 w-3/4 text-center"
|
||||
>
|
||||
<span class="text-slate-300 text-md sm:text-lg mt-3 w-3/4 text-center">
|
||||
Get full access for a more in-depth Stock Analysis
|
||||
</span>
|
||||
|
||||
<label
|
||||
class="mt-4 w-5/6 sm:w-56 bg-[#fff] cursor-pointer py-2.5 px-4 normal-case font-medium text-center text-black rounded-full"
|
||||
class="mt-4 w-5/6 sm:w-56 bg-[#fff] cursor-pointer py-2.5 px-4 normal-case text-center text-black rounded-full"
|
||||
>
|
||||
<div class="flex flex-row items-center justify-center">
|
||||
<svg
|
||||
|
||||
@ -78,7 +78,7 @@
|
||||
aria-hidden="true"
|
||||
></div>
|
||||
<span
|
||||
class="mt-2 sm:mt-0 text-white text-xs sm:text-md sm:font-medium inline-block"
|
||||
class="mt-2 sm:mt-0 text-white text-xs sm:text-md sm: inline-block"
|
||||
>
|
||||
Implied Volatility
|
||||
</span>
|
||||
@ -96,7 +96,7 @@
|
||||
aria-hidden="true"
|
||||
></div>
|
||||
<span
|
||||
class="mt-2 sm:mt-0 text-white text-xs sm:text-md sm:font-medium inline-block"
|
||||
class="mt-2 sm:mt-0 text-white text-xs sm:text-md sm: inline-block"
|
||||
>
|
||||
Realized Volatility
|
||||
</span>
|
||||
@ -117,7 +117,7 @@
|
||||
<span>Date</span>
|
||||
</td>
|
||||
<td
|
||||
class="px-[5px] py-1.5 text-right text-sm sm:text-[1rem] font-medium xs:px-2.5 xs:py-2"
|
||||
class="px-[5px] py-1.5 text-right text-sm sm:text-[1rem] xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{formatDateRange(rawData?.slice(-1)?.at(0)?.date)}
|
||||
</td>
|
||||
@ -127,7 +127,7 @@
|
||||
<span>IV Range</span>
|
||||
</td>
|
||||
<td
|
||||
class="px-[5px] py-1.5 text-right font-medium xs:px-2.5 xs:py-2"
|
||||
class="px-[5px] py-1.5 text-right xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{lowestIV + "%" + "-" + highestIV + "%"}
|
||||
</td>
|
||||
@ -137,7 +137,7 @@
|
||||
<span>RV Range</span>
|
||||
</td>
|
||||
<td
|
||||
class="px-[5px] py-1.5 text-right font-medium xs:px-2.5 xs:py-2"
|
||||
class="px-[5px] py-1.5 text-right xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{lowestRV + "%" + "-" + highestRV + "%"}
|
||||
</td>
|
||||
|
||||
@ -99,9 +99,9 @@
|
||||
{#each displayList as item}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800"
|
||||
>
|
||||
<td class="font-medium text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<td class=" text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<a
|
||||
href={`/list/industry/${item?.industry?.replace(/ /g, "-")?.replace(/&/g, "and")?.replace(/-{2,}/g, "-")?.toLowerCase()}`}
|
||||
class="sm:hover:underline sm:hover:underline-offset-4 text-white"
|
||||
@ -119,19 +119,19 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{abbreviateNumber(item?.totalMarketCap) ?? "n/a"}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgDividendYield?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.pe?.toFixed(2) ?? "n/a"}
|
||||
</td>
|
||||
@ -139,7 +139,7 @@
|
||||
<td
|
||||
class="{item?.profitMargin >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} font-medium text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
: 'text-[#FF2F1F]'} text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{abbreviateNumber(item?.profitMargin)}%
|
||||
</td>
|
||||
@ -147,7 +147,7 @@
|
||||
<td
|
||||
class="{item?.avgChange1D >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
: 'text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgChange1D?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
@ -155,7 +155,7 @@
|
||||
<td
|
||||
class="{item?.avgChange1Y >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
: 'text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgChange1Y?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
<script lang="ts">
|
||||
import { onMount } from "svelte";
|
||||
//import { linkTitle } from '$lib/store';
|
||||
|
||||
export let value = "";
|
||||
@ -15,37 +14,14 @@
|
||||
export let errors;
|
||||
export let useTitle = false; // new prop
|
||||
|
||||
let videoInput;
|
||||
let showVideo = false;
|
||||
|
||||
onMount(() => {
|
||||
window.addEventListener("dragover", (event) => event.preventDefault());
|
||||
window.addEventListener("drop", (event) => event.preventDefault());
|
||||
});
|
||||
|
||||
const showPreview = (event) => {
|
||||
const target = event.target;
|
||||
const files = target.files;
|
||||
if (files.length > 0) {
|
||||
if (files[0]?.name?.toLowerCase()?.includes(".mp4")) {
|
||||
videoInput = URL.createObjectURL(files[0]);
|
||||
} else {
|
||||
const src = URL.createObjectURL(files[0]);
|
||||
|
||||
const preview = document.getElementById("image-preview");
|
||||
preview.src = src;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let inputValue = value;
|
||||
|
||||
//$: value = useTitle === false ? $linkTitle : '';
|
||||
|
||||
let counterColor;
|
||||
|
||||
$: counter = `${inputValue.length}/${maxLength}`;
|
||||
|
||||
$: {
|
||||
if (inputValue.length > maxLength) {
|
||||
counterColor = "text-error";
|
||||
@ -101,19 +77,6 @@
|
||||
}
|
||||
*/
|
||||
|
||||
function handleDrop(e) {
|
||||
e.preventDefault();
|
||||
|
||||
let element_id = e.detail;
|
||||
}
|
||||
|
||||
const handleCancel = () => {
|
||||
inputValue = "";
|
||||
showVideo = false;
|
||||
};
|
||||
|
||||
let isHovering = false;
|
||||
|
||||
$: {
|
||||
if (inputValue) {
|
||||
errors = null;
|
||||
@ -122,130 +85,22 @@
|
||||
</script>
|
||||
|
||||
<div class="form-control w-full max-w-2xl mb-2 {hidden ? 'hidden' : ''}">
|
||||
<label for={id} class="label font-medium pb-1">
|
||||
<label for={id} class="label pb-1">
|
||||
<span class="text-white label-text">{label}</span>
|
||||
</label>
|
||||
<div class="relative">
|
||||
{#if type === "file"}
|
||||
<label
|
||||
for={id}
|
||||
class="flex flex-col items-center bg-secondary rounded-md cursor-pointer {inputValue.length ===
|
||||
0
|
||||
? 'p-10'
|
||||
: ''} {isHovering ? 'ring-2' : ''}"
|
||||
on:dragenter={() => (isHovering = true)}
|
||||
on:dragleave={() => (isHovering = false)}
|
||||
on:drop={handleDrop}
|
||||
>
|
||||
{#if inputValue.length !== 0}
|
||||
<label
|
||||
on:click={handleCancel}
|
||||
class="btn btn-sm btn-circle bg-red-600 absolute right-0 -top-3 z-20"
|
||||
>✕</label
|
||||
>
|
||||
|
||||
<div
|
||||
class="absolute inset-0 bg-cover object-fill bg-center bg-[#000]"
|
||||
></div>
|
||||
<img
|
||||
class="w-auto max-h-[400px] object-fill bg-center bg-contain z-10 {showVideo
|
||||
? 'hidden'
|
||||
: ''} "
|
||||
alt="Image preview"
|
||||
id="image-preview"
|
||||
loading="lazy"
|
||||
/>
|
||||
{:else}
|
||||
{#if !isHovering}
|
||||
<svg
|
||||
class="w-10 h-10"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g
|
||||
id="SVGRepo_tracerCarrier"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
></g><g id="SVGRepo_iconCarrier">
|
||||
<path
|
||||
opacity="0.4"
|
||||
d="M22.0206 16.8198L18.8906 9.49978C18.3206 8.15978 17.4706 7.39978 16.5006 7.34978C15.5406 7.29978 14.6106 7.96978 13.9006 9.24978L12.0006 12.6598C11.6006 13.3798 11.0306 13.8098 10.4106 13.8598C9.78063 13.9198 9.15063 13.5898 8.64063 12.9398L8.42063 12.6598C7.71063 11.7698 6.83063 11.3398 5.93063 11.4298C5.03063 11.5198 4.26063 12.1398 3.75063 13.1498L2.02063 16.5998C1.40063 17.8498 1.46063 19.2998 2.19063 20.4798C2.92063 21.6598 4.19063 22.3698 5.58063 22.3698H18.3406C19.6806 22.3698 20.9306 21.6998 21.6706 20.5798C22.4306 19.4598 22.5506 18.0498 22.0206 16.8198Z"
|
||||
fill="white"
|
||||
></path>
|
||||
<path
|
||||
d="M6.96984 8.38012C8.83657 8.38012 10.3498 6.86684 10.3498 5.00012C10.3498 3.13339 8.83657 1.62012 6.96984 1.62012C5.10312 1.62012 3.58984 3.13339 3.58984 5.00012C3.58984 6.86684 5.10312 8.38012 6.96984 8.38012Z"
|
||||
fill="white"
|
||||
></path>
|
||||
</g></svg
|
||||
>
|
||||
<span class="mt-2 mb-4 text-gray-200">Choose a file to upload</span>
|
||||
{:else}
|
||||
<svg
|
||||
class="w-10 h-10"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
><path
|
||||
fill="#9D64D9"
|
||||
d="M6 20q-.825 0-1.413-.588T4 18v-3h2v3h12v-3h2v3q0 .825-.588 1.413T18 20H6Zm5-4V7.85l-2.6 2.6L7 9l5-5l5 5l-1.4 1.45l-2.6-2.6V16h-2Z"
|
||||
/></svg
|
||||
>
|
||||
<span class="mt-2 mb-4 text-gray-200">Drop here to upload</span>
|
||||
{/if}
|
||||
<span class="text-xs sm:text-sm text-gray-400 m-auto mb-5">
|
||||
We support jpg/jpeg, png, webp and mp4.
|
||||
</span>
|
||||
<span class="text-xs sm:text-sm text-gray-400 m-auto mb-5">
|
||||
File must be smaller than 5MB.
|
||||
</span>
|
||||
<label
|
||||
for={id}
|
||||
class="cursor-pointer rounded-md sm:hover:bg-gray-300 bg-[#fff] text-sm text-black font-semibold w-auto p-3"
|
||||
>
|
||||
Choose File
|
||||
</label>
|
||||
{/if}
|
||||
<input
|
||||
class="hidden rounded text-gray-300"
|
||||
{type}
|
||||
{placeholder}
|
||||
{required}
|
||||
{disabled}
|
||||
{id}
|
||||
name={id}
|
||||
value={inputValue}
|
||||
accept="image"
|
||||
on:change={showPreview}
|
||||
on:input={handleInput}
|
||||
autocomplete="off"
|
||||
/>
|
||||
|
||||
{#if showVideo}
|
||||
<div
|
||||
class="absolute inset-0 bg-cover object-fill bg-center bg-[#000]"
|
||||
></div>
|
||||
<video controls class="w-auto max-h-[500px] z-10" src={videoInput}>
|
||||
</video>
|
||||
{/if}
|
||||
</label>
|
||||
{:else}
|
||||
<input
|
||||
class="input input-bordered w-full bg-secondary placeholder-gray-300 text-white whitespace-normal ring-2"
|
||||
{type}
|
||||
{placeholder}
|
||||
{required}
|
||||
{disabled}
|
||||
{id}
|
||||
name={id}
|
||||
value={inputValue}
|
||||
on:input={handleInput}
|
||||
autocomplete="off"
|
||||
/>
|
||||
{/if}
|
||||
{#if showCounter}
|
||||
<div class="flex justify-end mt-1 -mb-1">
|
||||
<span class={`label-text text-xs ${counterColor}`}>{counter}</span>
|
||||
</div>
|
||||
{/if}
|
||||
<input
|
||||
class="input input-bordered border border-gray-600 focus:outline-none w-full bg-secondary placeholder-gray-300 text-white whitespace-normal"
|
||||
{type}
|
||||
{placeholder}
|
||||
{required}
|
||||
{disabled}
|
||||
{id}
|
||||
name={id}
|
||||
value={inputValue}
|
||||
on:input={handleInput}
|
||||
autocomplete="off"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{#if errors}
|
||||
|
||||
@ -154,7 +154,7 @@ const output = await response.json();
|
||||
on:click={() => (form = [])}
|
||||
id="userLogin"
|
||||
for="userLogin"
|
||||
class="cursor-pointer modal-backdrop bg-[#000] bg-opacity-[0.08]"
|
||||
class="cursor-pointer modal-backdrop bg-[#000]/40"
|
||||
></label>
|
||||
|
||||
<div
|
||||
@ -1583,30 +1583,3 @@ const output = await response.json();
|
||||
{/if}
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<style>
|
||||
.shake-logo {
|
||||
animation-name: shake;
|
||||
animation-duration: 0.5s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
@keyframes shake {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
25% {
|
||||
transform: rotate(10deg);
|
||||
}
|
||||
50% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(-10deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -151,7 +151,7 @@
|
||||
></g
|
||||
></svg
|
||||
>
|
||||
<span class="text-[#00FC50] text-xs font-medium"
|
||||
<span class="text-[#00FC50] text-xs"
|
||||
>+{changesPercentage?.toFixed(2)}%</span
|
||||
>
|
||||
{:else}
|
||||
@ -169,7 +169,7 @@
|
||||
></g
|
||||
></svg
|
||||
>
|
||||
<span class="text-[#FF2F1F] text-xs font-medium"
|
||||
<span class="text-[#FF2F1F] text-xs"
|
||||
>{changesPercentage?.toFixed(2)}%
|
||||
</span>
|
||||
{/if}
|
||||
|
||||
@ -343,7 +343,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? displayList : displayList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
displayList?.slice(0, 3)?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
|
||||
@ -319,7 +319,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? displayList : displayList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
displayList?.slice(0, 3)?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
|
||||
@ -427,7 +427,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? displayList : displayList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
displayList?.slice(0, 3)?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
|
||||
@ -593,7 +593,7 @@
|
||||
<tbody>
|
||||
{#each volumeList as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
volumeList?.slice(0, 3)?.length &&
|
||||
data?.user?.tier !== 'Pro'
|
||||
@ -713,7 +713,7 @@
|
||||
<tbody>
|
||||
{#each openInterestList as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
openInterestList?.slice(0, 3)?.length &&
|
||||
data?.user?.tier !== 'Pro'
|
||||
|
||||
@ -301,7 +301,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? displayList : displayList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
displayList?.slice(0, 3)?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
|
||||
@ -274,7 +274,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? displayList : displayList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
displayList?.slice(0, 3)?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
|
||||
@ -754,7 +754,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier !== "Pro" ? displayList?.slice(0, 3) : displayList as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
rawData?.slice(0, 3)?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
|
||||
@ -479,7 +479,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? displayList : displayList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
displayList?.slice(0, 3)?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
|
||||
@ -122,13 +122,13 @@
|
||||
<tbody class="shadow-md">
|
||||
<tr class="bg-primary border-b-[#27272A]">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#27272A]"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-[#27272A]"
|
||||
>
|
||||
Reported Revenue
|
||||
</th>
|
||||
{#each tableRevenue as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default"
|
||||
>
|
||||
{#if index !== 0}
|
||||
{#if userTier !== "Pro"}
|
||||
@ -162,13 +162,13 @@
|
||||
|
||||
<tr class="bg-primary border-b-[#27272A]">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#27272A]"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-[#27272A]"
|
||||
>
|
||||
Est. Revenue
|
||||
</th>
|
||||
{#each tableRevenueEst as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default"
|
||||
>
|
||||
{#if index !== 0}
|
||||
{#if userTier !== "Pro"}
|
||||
@ -202,7 +202,7 @@
|
||||
|
||||
<tr class="bg-primary border-b-[#27272A]">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#27272A]"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-[#27272A]"
|
||||
>
|
||||
Revenue Surprise
|
||||
</th>
|
||||
@ -258,13 +258,13 @@
|
||||
|
||||
<tr class="bg-primary border-b-[#27272A]">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#27272A]"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-[#27272A]"
|
||||
>
|
||||
Reported EPS
|
||||
</th>
|
||||
{#each tableEPS as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default"
|
||||
>
|
||||
{#if index !== 0}
|
||||
{#if userTier !== "Pro"}
|
||||
@ -298,13 +298,13 @@
|
||||
|
||||
<tr class="bg-primary border-b-[#27272A]">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#27272A]"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-[#27272A]"
|
||||
>
|
||||
Est. EPS
|
||||
</th>
|
||||
{#each tableEPSEst as item, index}
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] text-end font-medium bg-default"
|
||||
class="text-white text-sm sm:text-[1rem] text-end bg-default"
|
||||
>
|
||||
{#if index !== 0}
|
||||
{#if userTier !== "Pro"}
|
||||
@ -338,7 +338,7 @@
|
||||
|
||||
<tr class="bg-primary border-b-[#27272A]">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#27272A]"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-[#27272A]"
|
||||
>
|
||||
EPS Surprise
|
||||
</th>
|
||||
@ -394,7 +394,7 @@
|
||||
|
||||
<tr class="bg-primary border-b-[#27272A]">
|
||||
<th
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#27272A]"
|
||||
class="bg-primary whitespace-nowrap text-sm sm:text-[1rem] text-white text-start border-b border-[#27272A]"
|
||||
>
|
||||
Volatility
|
||||
</th>
|
||||
|
||||
@ -165,9 +165,7 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm"
|
||||
>Price Sentiment</span
|
||||
>
|
||||
<span class=" text-gray-200 text-sm">Price Sentiment</span>
|
||||
<span
|
||||
class="text-start text-[1rem] sm:text-lg font-semibold {priceSentiment ===
|
||||
'Bullish'
|
||||
@ -183,12 +181,10 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm"
|
||||
<span class=" text-gray-200 text-sm"
|
||||
><span class="italic">R</span><sup>2</sup> Score</span
|
||||
>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
>
|
||||
<span class="text-start text-sm sm:text-[1rem] text-white">
|
||||
{r2Score >= 65 ? "Good" : r2Score >= 50 ? "Moderate" : "Bad"}
|
||||
</span>
|
||||
</div>
|
||||
@ -242,10 +238,8 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm">MAPE</span>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
>
|
||||
<span class=" text-gray-200 text-sm">MAPE</span>
|
||||
<span class="text-start text-sm sm:text-[1rem] text-white">
|
||||
{mape <= 15 ? "Good" : mape <= 35 ? "Moderate" : "Bad"}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -318,7 +318,7 @@
|
||||
<div class="flex flex-col -mt-3 sm:-mt-5 w-full">
|
||||
<div class="flex flex-row items-center w-full">
|
||||
<span
|
||||
class="text-white text-sm sm:text-md font-medium text-start mb-2 mr-auto mt-2"
|
||||
class="text-white text-sm sm:text-md text-start mb-2 mr-auto mt-2"
|
||||
>
|
||||
{item?.name?.length > charNumber
|
||||
? formatString(item?.name)?.slice(0, charNumber) +
|
||||
@ -327,9 +327,7 @@
|
||||
item?.value,
|
||||
)}
|
||||
</span>
|
||||
<span
|
||||
class="text-white text-sm sm:text-md font-medium ml-auto"
|
||||
>
|
||||
<span class="text-white text-sm sm:text-md ml-auto">
|
||||
{(
|
||||
(item?.value / totalGeographicRevenue) *
|
||||
100
|
||||
|
||||
@ -1,27 +1,26 @@
|
||||
<script lang="ts">
|
||||
import { cn } from "$lib/utils";
|
||||
import { cn } from "$lib/utils";
|
||||
|
||||
export let img: string;
|
||||
export let name: string;
|
||||
export let body: string;
|
||||
export let img: string;
|
||||
export let name: string;
|
||||
export let body: string;
|
||||
</script>
|
||||
|
||||
<figure
|
||||
class={cn(
|
||||
"relative w-64 cursor-pointer overflow-hidden rounded-xl border p-4 border-gray-50/[.1] bg-gray-50/[.10] hover:bg-gray-50/[.15]",
|
||||
// dark styles
|
||||
"border-gray-50/[.1] bg-gray-50/[.10] hover:bg-gray-50/[.15]"
|
||||
)}
|
||||
>
|
||||
<div class="flex flex-row items-center gap-2">
|
||||
<img class="rounded-full w-8 h-8" alt="" src={img} />
|
||||
<div class="flex flex-col">
|
||||
<!-- svelte-ignore a11y-structure -->
|
||||
<figcaption class="text-sm font-medium text-white">
|
||||
{name}
|
||||
</figcaption>
|
||||
</div>
|
||||
<figure
|
||||
class={cn(
|
||||
"relative w-64 cursor-pointer overflow-hidden rounded-xl border p-4 border-gray-50/[.1] bg-gray-50/[.10] hover:bg-gray-50/[.15]",
|
||||
// dark styles
|
||||
"border-gray-50/[.1] bg-gray-50/[.10] hover:bg-gray-50/[.15]",
|
||||
)}
|
||||
>
|
||||
<div class="flex flex-row items-center gap-2">
|
||||
<img class="rounded-full w-8 h-8" alt="" src={img} />
|
||||
<div class="flex flex-col">
|
||||
<!-- svelte-ignore a11y-structure -->
|
||||
<figcaption class="text-sm text-white">
|
||||
{name}
|
||||
</figcaption>
|
||||
</div>
|
||||
<blockquote class="mt-2 text-sm text-left text-white">{body}</blockquote>
|
||||
</figure>
|
||||
|
||||
</div>
|
||||
<blockquote class="mt-2 text-sm text-left text-white">{body}</blockquote>
|
||||
</figure>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
</script>
|
||||
|
||||
<!--
|
||||
<div class="w-full max-w-xl text-white font-medium text-sm sm:text-[1rem] flex flex-row justify-center items-center">
|
||||
<div class="w-full max-w-xl text-white text-sm sm:text-[1rem] flex flex-row justify-center items-center">
|
||||
{title?.replace('[%]','')} {condition} {value} {unit}
|
||||
|
||||
<label on:click={() => changeRuleCondition('under')} class="ml-5 cursor-pointer flex flex-row mr-2 justify-center items-center">
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
>
|
||||
<label
|
||||
on:click={handleScrollUp}
|
||||
class="inline-flex items-center justify-center w-12 h-12 sm:w-full sm:h-10 font-medium bg-gray-700 sm:bg-[#FFEDE5] ml-1 mr-0 sm:mr-2 rounded-full cursor-pointer"
|
||||
class="inline-flex items-center justify-center w-12 h-12 sm:w-full sm:h-10 bg-gray-700 sm:bg-[#FFEDE5] ml-1 mr-0 sm:mr-2 rounded-full cursor-pointer"
|
||||
>
|
||||
<svg
|
||||
class="sm:hidden sm:ml-4 w-6 h-6 text-white inline-block"
|
||||
|
||||
@ -532,7 +532,7 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-white font-medium ml-auto">
|
||||
<div class="text-white ml-auto">
|
||||
{item?.type}
|
||||
</div>
|
||||
</div>
|
||||
@ -564,7 +564,7 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-white font-medium ml-auto">
|
||||
<div class="text-white ml-auto">
|
||||
{item?.type}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -76,13 +76,11 @@
|
||||
<div class="flex flex-col -mt-2 w-full">
|
||||
<div class="flex flex-row items-center w-full">
|
||||
<span
|
||||
class="text-white text-sm sm:text-md font-medium text-start mb-2 mr-auto mt-2"
|
||||
class="text-white text-sm sm:text-md text-start mb-2 mr-auto mt-2"
|
||||
>
|
||||
{formatString(item?.industry)}
|
||||
</span>
|
||||
<span
|
||||
class="text-white text-sm sm:text-md font-medium ml-auto"
|
||||
>
|
||||
<span class="text-white text-sm sm:text-md ml-auto">
|
||||
{item?.exposure <= 0.01
|
||||
? "< 0.01%"
|
||||
: item?.exposure?.toFixed(2) + "%"}
|
||||
|
||||
@ -51,9 +51,7 @@
|
||||
<div
|
||||
class="w-auto p-4 sm:p-6 bg-default sm:bg-default rounded-md relative"
|
||||
>
|
||||
<h3 class="text-gray-300 font-medium text-sm uppercase mb-3">
|
||||
Average Score
|
||||
</h3>
|
||||
<h3 class="text-gray-300 text-sm uppercase mb-3">Average Score</h3>
|
||||
<div class="flex flex-row items-center justify-between">
|
||||
<!--Start Big Circle-->
|
||||
<div class="relative size-24 sm:size-28">
|
||||
@ -180,13 +178,13 @@
|
||||
<div
|
||||
class="w-auto p-4 sm:p-6 bg-default sm:bg-default rounded-md relative"
|
||||
>
|
||||
<h3 class="text-gray-300 font-medium text-sm uppercase mb-3">
|
||||
<h3 class="text-gray-300 text-sm uppercase mb-3">
|
||||
Average Score Trend
|
||||
</h3>
|
||||
<div class="grid grid-cols-8 sm:grid-cols-9 -ml-2 sm:-ml-5 mt-7">
|
||||
{#each sentimentList as item}
|
||||
<div class="flex flex-col items-center">
|
||||
<span class="text-white font-medium text-[1rem] mb-4">
|
||||
<span class="text-white text-[1rem] mb-4">
|
||||
{#if data?.user?.tier === "Pro"}
|
||||
{item?.value !== 0 ? item?.value : "-"}
|
||||
{:else if ["1M", "1Y"]?.includes(item?.label)}
|
||||
@ -228,7 +226,7 @@
|
||||
></div>
|
||||
{/if}
|
||||
</div>
|
||||
<span class="text-white font-medium text-sm mt-4">
|
||||
<span class="text-white text-sm mt-4">
|
||||
{item?.label}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
/></svg
|
||||
>
|
||||
<!--
|
||||
<span class="font-medium text-[#D6D6DC] text-sm">
|
||||
<span class=" text-[#D6D6DC] text-sm">
|
||||
Share
|
||||
</span>
|
||||
-->
|
||||
|
||||
@ -276,9 +276,7 @@
|
||||
class="w-4 h-4 bg-[#fff] border-4 box-content border-[#27272A] rounded-full transform -translate-x-1/2"
|
||||
aria-hidden="true"
|
||||
></div>
|
||||
<span
|
||||
class="text-white text-sm sm:text-[1rem] font-medium inline-block"
|
||||
>
|
||||
<span class="text-white text-sm sm:text-[1rem] inline-block">
|
||||
Others: {otherOwner >= 99.99
|
||||
? 99.99
|
||||
: otherOwner?.toFixed(2)}%
|
||||
@ -294,9 +292,7 @@
|
||||
class="w-4 h-4 bg-blue-500 border-4 box-content border-[#27272A] rounded-full transform -translate-x-1/2"
|
||||
aria-hidden="true"
|
||||
></div>
|
||||
<span
|
||||
class="text-white text-sm sm:text-[1rem] font-medium inline-block"
|
||||
>
|
||||
<span class="text-white text-sm sm:text-[1rem] inline-block">
|
||||
Institutions: {institutionalOwner <= 0.01
|
||||
? "< 0.01%"
|
||||
: institutionalOwner?.toFixed(2) + "%"}
|
||||
@ -331,12 +327,8 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 border border-gray-600 bg-primary rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-white text-sm sm:text-[1rem]"
|
||||
>Put/Call</span
|
||||
>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
>
|
||||
<span class=" text-white text-sm sm:text-[1rem]">Put/Call</span>
|
||||
<span class="text-start text-sm sm:text-[1rem] text-white">
|
||||
{putCallRatio?.toFixed(3)}
|
||||
</span>
|
||||
</div>
|
||||
@ -389,12 +381,9 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 border border-gray-600 bg-primary rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-white text-sm sm:text-[1rem]"
|
||||
>Call Flow</span
|
||||
>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
<span class=" text-white text-sm sm:text-[1rem]">Call Flow</span
|
||||
>
|
||||
<span class="text-start text-sm sm:text-[1rem] text-white">
|
||||
{new Intl.NumberFormat("en", {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
@ -449,12 +438,8 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 border border-gray-600 bg-primary rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-white text-sm sm:text-[1rem]"
|
||||
>Put Flow</span
|
||||
>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
>
|
||||
<span class=" text-white text-sm sm:text-[1rem]">Put Flow</span>
|
||||
<span class="text-start text-sm sm:text-[1rem] text-white">
|
||||
{new Intl.NumberFormat("en", {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
@ -542,15 +527,13 @@
|
||||
{#each displayList as item, index}
|
||||
{#if item?.investorName?.length > 0}
|
||||
<tr
|
||||
class="border-b border-gray-800 odd:bg-odd sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] {index +
|
||||
class="border-b border-gray-800 odd:bg-odd sm:hover:bg-[#245073]/10 {index +
|
||||
1 ===
|
||||
shareholderList?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
: ''}"
|
||||
>
|
||||
<td
|
||||
class="font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
<td class=" text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<a
|
||||
href={"/hedge-funds/" + item?.cik}
|
||||
class="sm:hover:underline sm:hover:underline-offset-4 text-white"
|
||||
@ -564,7 +547,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.ownership <= 0.01
|
||||
? "< 0.01%"
|
||||
@ -572,7 +555,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{@html item?.sharesNumber !== null
|
||||
? abbreviateNumber(item?.sharesNumber, false, true)
|
||||
@ -580,7 +563,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{#if item?.changeInSharesNumberPercentage >= 0}
|
||||
<span class="text-[#00FC50]"
|
||||
@ -600,7 +583,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.marketValue !== null
|
||||
? abbreviateNumber(item?.marketValue)
|
||||
@ -608,7 +591,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.weight <= 0.01
|
||||
? "< 0.01%"
|
||||
|
||||
@ -116,7 +116,7 @@
|
||||
<span>Short Interest</span>
|
||||
</td>
|
||||
<td
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right font-medium xs:px-2.5 xs:py-2"
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{abbreviateNumber(rawData?.sharesShort)}
|
||||
</td>
|
||||
@ -126,7 +126,7 @@
|
||||
<span>Short Previous Month</span>
|
||||
</td>
|
||||
<td
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right font-medium xs:px-2.5 xs:py-2"
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{abbreviateNumber(rawData?.sharesShortPriorMonth)}
|
||||
</td>
|
||||
@ -136,7 +136,7 @@
|
||||
<span>Short % of Shares Out</span>
|
||||
</td>
|
||||
<td
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right font-medium xs:px-2.5 xs:py-2"
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{rawData?.shortOutStandingPercent}%
|
||||
</td>
|
||||
@ -146,7 +146,7 @@
|
||||
<span>Short % of Float</span>
|
||||
</td>
|
||||
<td
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right font-medium xs:px-2.5 xs:py-2"
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{rawData?.shortFloatPercent}%
|
||||
</td>
|
||||
@ -156,7 +156,7 @@
|
||||
<span>Short Ratio (days to cover)</span>
|
||||
</td>
|
||||
<td
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right font-medium xs:px-2.5 xs:py-2"
|
||||
class="whitespace-nowrap px-[5px] py-1.5 text-right xs:px-2.5 xs:py-2"
|
||||
>
|
||||
{rawData?.shortRatio}
|
||||
</td>
|
||||
|
||||
@ -100,7 +100,7 @@
|
||||
<div class="inline-block">
|
||||
<a
|
||||
href={`/stocks/${$stockTicker}/profile`}
|
||||
class="w-full text-md mt-1 cursor-pointer font-medium sm:hover:text-white text-blue-400 sm:hover:underline"
|
||||
class="w-full text-md mt-1 cursor-pointer sm:hover:text-white text-blue-400 sm:hover:underline"
|
||||
>
|
||||
[Show more]
|
||||
</a>
|
||||
@ -189,10 +189,8 @@
|
||||
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<div class="flex flex-row items-center w-full mt-5 mb-2">
|
||||
<span class="text-white font-medium text-start mr-auto">
|
||||
Buy
|
||||
</span>
|
||||
<span class="text-white text-md font-medium ml-auto">
|
||||
<span class="text-white text-start mr-auto"> Buy </span>
|
||||
<span class="text-white text-md ml-auto">
|
||||
{buyCount}%
|
||||
</span>
|
||||
</div>
|
||||
@ -205,10 +203,8 @@
|
||||
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<div class="flex flex-row items-center w-full mt-5 mb-2">
|
||||
<span class="text-white font-medium text-start mr-auto">
|
||||
Hold
|
||||
</span>
|
||||
<span class="text-white text-md font-medium ml-auto">
|
||||
<span class="text-white text-start mr-auto"> Hold </span>
|
||||
<span class="text-white text-md ml-auto">
|
||||
{holdCount}%
|
||||
</span>
|
||||
</div>
|
||||
@ -221,10 +217,8 @@
|
||||
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<div class="flex flex-row items-center w-full mt-5 mb-2">
|
||||
<span class="text-white font-medium text-start mr-auto">
|
||||
Sell
|
||||
</span>
|
||||
<span class="text-white text-md font-medium ml-auto">
|
||||
<span class="text-white text-start mr-auto"> Sell </span>
|
||||
<span class="text-white text-md ml-auto">
|
||||
{sellCount}%
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
{#each similarTicker as item, index}
|
||||
<tr
|
||||
on:click={() => etfSelector(item?.symbol)}
|
||||
class="shake-ticker sm:hover:text-white text-blue-400 cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] bg-[#000] sm:bg-default border-b border-[#000] sm:border-[#27272A]"
|
||||
class="shake-ticker sm:hover:text-white text-blue-400 cursor-pointer sm:hover:bg-[#245073]/10 bg-[#000] sm:bg-default border-b border-[#000] sm:border-[#27272A]"
|
||||
>
|
||||
{#if index <= 6}
|
||||
<td class="">
|
||||
@ -71,8 +71,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="flex flex-col ml-3 w-full">
|
||||
<span class="text-sm font-medium">{item?.symbol}</span
|
||||
>
|
||||
<span class="text-sm">{item?.symbol}</span>
|
||||
<span class="text-white text-sm">
|
||||
{#if typeof item?.name !== "undefined"}
|
||||
{item?.name?.length > 20
|
||||
@ -129,7 +128,7 @@
|
||||
<div
|
||||
class="bg-default w-full p-1 flex flex-col items-center pb-5 h-auto rounded-b-[30px]"
|
||||
>
|
||||
<h2 class="text-center m-auto text-[1.1rem] font-medium text-white mt-5">
|
||||
<h2 class="text-center m-auto text-[1.1rem] text-white mt-5">
|
||||
Similar Ticker
|
||||
</h2>
|
||||
<div class="flex flex-col items-center mt-10 w-full">
|
||||
@ -190,8 +189,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="flex flex-col ml-3 w-full">
|
||||
<span class="text-blue-400 text-sm font-medium"
|
||||
>{item?.symbol}</span
|
||||
<span class="text-blue-400 text-sm">{item?.symbol}</span
|
||||
>
|
||||
<span class="text-white text-sm">
|
||||
{#if typeof item?.name !== "undefined"}
|
||||
|
||||
@ -57,7 +57,7 @@
|
||||
{#each similarstock as item, index}
|
||||
<tr
|
||||
on:click={() => stockSelector(item?.symbol)}
|
||||
class="shake-ticker sm:hover:text-white text-blue-400 cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] bg-[#000] sm:bg-default border-b border-[#000] sm:border-[#27272A]"
|
||||
class="shake-ticker sm:hover:text-white text-blue-400 cursor-pointer sm:hover:bg-[#245073]/10 bg-[#000] sm:bg-default border-b border-[#000] sm:border-[#27272A]"
|
||||
>
|
||||
{#if index <= 6}
|
||||
<td class="whitespace-nowrap">
|
||||
@ -73,7 +73,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="flex flex-col ml-3 w-full">
|
||||
<span class="text-sm sm:text-[1rem] font-medium"
|
||||
<span class="text-sm sm:text-[1rem]"
|
||||
>{item?.symbol}</span
|
||||
>
|
||||
<span class="text-white text-sm">
|
||||
@ -165,8 +165,7 @@
|
||||
<td class="text-white whitespace-nowrap">
|
||||
<div class="flex flex-row items-center">
|
||||
<div class="flex flex-col w-full">
|
||||
<span class="text-blue-400 text-sm font-medium"
|
||||
>{item?.symbol}</span
|
||||
<span class="text-blue-400 text-sm">{item?.symbol}</span
|
||||
>
|
||||
<span class="text-white text-sm">
|
||||
{#if typeof item?.name !== "undefined"}
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
<div class="grid grid-cols-3 gap-x-4 gap-y-2 overflow-hidden">
|
||||
<label
|
||||
for="tickerModal"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs font-medium rounded-xl text-gray-200"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs rounded-xl text-gray-200"
|
||||
>
|
||||
Details
|
||||
</label>
|
||||
@ -39,7 +39,7 @@
|
||||
<label
|
||||
on:click={() => ($executiveClicked = true)}
|
||||
for="executiveModal"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs font-medium rounded-xl text-gray-200"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs rounded-xl text-gray-200"
|
||||
>
|
||||
Executives
|
||||
</label>
|
||||
@ -47,24 +47,24 @@
|
||||
<label
|
||||
on:click={() => ($secFilingsClicked = true)}
|
||||
for="secFilingModal"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs font-medium rounded-xl text-gray-200"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs rounded-xl text-gray-200"
|
||||
>
|
||||
SEC Filings
|
||||
</label>
|
||||
<!--
|
||||
<label for="esgModal" class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs font-medium rounded-xl text-gray-200">
|
||||
<label for="esgModal" class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs rounded-xl text-gray-200">
|
||||
ESG Score
|
||||
</label>
|
||||
-->
|
||||
<label
|
||||
for="similarTickerModal"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs font-medium rounded-xl text-gray-200"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs rounded-xl text-gray-200"
|
||||
>
|
||||
Similar
|
||||
</label>
|
||||
<label
|
||||
for="topETFTickerHolderModal"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs font-medium rounded-xl text-gray-200"
|
||||
class="w-auto border border-gray-300 flex px-4 py-2 mb-2 justify-center items-center text-xs rounded-xl text-gray-200"
|
||||
>
|
||||
ETFs Holder
|
||||
</label>
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
></g
|
||||
></svg
|
||||
>
|
||||
<span class="text-[#00FC50] text-sm font-medium"
|
||||
<span class="text-[#00FC50] text-sm"
|
||||
>+{item?.changesPercentage?.toFixed(2)}%</span
|
||||
>
|
||||
{:else if item?.changesPercentage < 0}
|
||||
@ -43,7 +43,7 @@
|
||||
></g
|
||||
></svg
|
||||
>
|
||||
<span class="text-[#FF2F1F] text-sm font-medium"
|
||||
<span class="text-[#FF2F1F] text-sm"
|
||||
>{item?.changesPercentage?.toFixed(2)}%</span
|
||||
>
|
||||
{/if}
|
||||
|
||||
@ -64,13 +64,11 @@
|
||||
<div class="flex flex-row items-center">
|
||||
<div class="flex flex-col">
|
||||
<span
|
||||
class="text-slate-400 font-medium text-sm sm:text-md mb-2 mr-auto"
|
||||
class="text-slate-400 text-sm sm:text-md mb-2 mr-auto"
|
||||
>
|
||||
Date
|
||||
</span>
|
||||
<span
|
||||
class="text-white text-sm sm:text-md font-medium"
|
||||
>
|
||||
<span class="text-white text-sm sm:text-md">
|
||||
{new Date(item?.date)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
@ -82,13 +80,13 @@
|
||||
|
||||
<div class="flex flex-col ml-auto pr-3">
|
||||
<div
|
||||
class="text-slate-400 font-medium text-sm sm:text-md mb-2 ml-auto"
|
||||
class="text-slate-400 text-sm sm:text-md mb-2 ml-auto"
|
||||
>
|
||||
From
|
||||
<span class="text-white">{item?.denominator}</span>
|
||||
</div>
|
||||
<div
|
||||
class="text-slate-400 font-medium text-sm sm:text-md ml-auto"
|
||||
class="text-slate-400 text-sm sm:text-md ml-auto"
|
||||
>
|
||||
To
|
||||
<span class="text-white">{item?.numerator}</span>
|
||||
|
||||
@ -233,9 +233,7 @@
|
||||
{#if activeIdx === i}
|
||||
<div class="absolute inset-0 rounded-md bg-[#fff]"></div>
|
||||
{/if}
|
||||
<span
|
||||
class="relative text-sm block font-medium duration-200 text-white"
|
||||
>
|
||||
<span class="relative text-sm block duration-200 text-white">
|
||||
{item.title}
|
||||
</span>
|
||||
</button>
|
||||
@ -280,7 +278,7 @@
|
||||
aria-hidden="true"
|
||||
></div>
|
||||
<span
|
||||
class="mt-2 sm:mt-0 text-white text-xs sm:text-md sm:font-medium inline-block"
|
||||
class="mt-2 sm:mt-0 text-white text-xs sm:text-md sm: inline-block"
|
||||
>
|
||||
Notional Quantity
|
||||
</span>
|
||||
|
||||
@ -263,7 +263,7 @@
|
||||
<label
|
||||
on:click={loadSearchData}
|
||||
for="tagSearchBarModal"
|
||||
class="border border-slate-500 mb-2 flex flex-wrap pl-4 pr-4 py-2 m-1 mr-3 justify-between items-center text-sm font-medium rounded-xl cursor-pointer text-gray-200 hover:text-gray-100"
|
||||
class="border border-slate-500 mb-2 flex flex-wrap pl-4 pr-4 py-2 m-1 mr-3 justify-between items-center text-sm rounded-xl cursor-pointer text-gray-200 hover:text-gray-100"
|
||||
>
|
||||
<svg
|
||||
class="w-4 h-4 mr-2"
|
||||
@ -381,7 +381,7 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-white font-medium ml-auto">
|
||||
<div class="text-white ml-auto">
|
||||
{item?.type}
|
||||
</div>
|
||||
</div>
|
||||
@ -413,7 +413,7 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-white font-medium ml-auto">
|
||||
<div class="text-white ml-auto">
|
||||
{item?.type}
|
||||
</div>
|
||||
</div>
|
||||
@ -459,7 +459,7 @@
|
||||
d="M9.125 21.1L.7 12.7q-.15-.15-.213-.325T.425 12q0-.2.063-.375T.7 11.3l8.425-8.425q.35-.35.875-.35t.9.375q.375.375.375.875t-.375.875L3.55 12l7.35 7.35q.35.35.35.863t-.375.887q-.375.375-.875.375t-.875-.375Z"
|
||||
/></svg
|
||||
>
|
||||
<span class="text-white text-md font-medium"> Return </span>
|
||||
<span class="text-white text-md"> Return </span>
|
||||
</label>
|
||||
</div>
|
||||
</dialog>
|
||||
@ -563,7 +563,7 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-white font-medium ml-auto mr-2">
|
||||
<div class="text-white ml-auto mr-2">
|
||||
{item?.type}
|
||||
</div>
|
||||
</div>
|
||||
@ -598,7 +598,7 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-white font-medium ml-auto mr-2">
|
||||
<div class="text-white ml-auto mr-2">
|
||||
{item?.type}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
</svelte:head>
|
||||
|
||||
<div class="form-control w-full h-auto max-w-2xl {hidden ? 'hidden' : ''}">
|
||||
<label for={id} class="label font-medium pb-1">
|
||||
<label for={id} class="label pb-1">
|
||||
<span class="label-text">{label}</span>
|
||||
</label>
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
<tbody>
|
||||
{#each topETFHolder as item, index}
|
||||
<tr
|
||||
class="sm:hover:text-white text-blue-400 sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] bg-[#000] sm:bg-default border-b border-[#000] sm:border-[#27272A]"
|
||||
class="sm:hover:text-white text-blue-400 sm:hover:bg-[#245073]/10 bg-[#000] sm:bg-default border-b border-[#000] sm:border-[#27272A]"
|
||||
>
|
||||
{#if index <= 6}
|
||||
<td>
|
||||
@ -158,8 +158,7 @@
|
||||
<td class="text-white whitespace-nowrap">
|
||||
<div class="flex flex-row items-center">
|
||||
<div class="flex flex-col w-full">
|
||||
<span class="text-blue-400 text-sm font-medium"
|
||||
>{item?.symbol}</span
|
||||
<span class="text-blue-400 text-sm">{item?.symbol}</span
|
||||
>
|
||||
<span class="text-white text-sm">
|
||||
{#if typeof item?.name !== "undefined"}
|
||||
|
||||
@ -100,9 +100,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="flex flex-col ml-3 w-full">
|
||||
<span class="text-sm font-medium"
|
||||
>{item?.asset ?? "-"}</span
|
||||
>
|
||||
<span class="text-sm">{item?.asset ?? "-"}</span>
|
||||
<span class="text-white text-sm">
|
||||
{#if typeof item?.name !== "undefined"}
|
||||
{item?.name?.length > 20
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm"
|
||||
<span class=" text-gray-200 text-sm"
|
||||
>Trend Sentiment</span
|
||||
>
|
||||
<span
|
||||
@ -53,9 +53,9 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm">Accuracy</span>
|
||||
<span class=" text-gray-200 text-sm">Accuracy</span>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
class="text-start text-sm sm:text-[1rem] text-white"
|
||||
>
|
||||
{accuracy >= 65
|
||||
? "Good"
|
||||
@ -115,9 +115,9 @@
|
||||
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-5 bg-primary shadow-lg rounded-md h-20"
|
||||
>
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium text-gray-200 text-sm">Precision</span>
|
||||
<span class=" text-gray-200 text-sm">Precision</span>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
class="text-start text-sm sm:text-[1rem] text-white"
|
||||
>
|
||||
{precision >= 65
|
||||
? "Good"
|
||||
@ -204,7 +204,7 @@
|
||||
"Bullish"
|
||||
? "exceed"
|
||||
: "to be less than"} the previous price of
|
||||
<span class="font-medium">${lastPrice ?? "n/a"}</span>.
|
||||
<span class="">${lastPrice ?? "n/a"}</span>.
|
||||
</div>
|
||||
{:else}
|
||||
<div class="flex justify-center items-center h-80">
|
||||
|
||||
@ -45,13 +45,11 @@
|
||||
class="h-18 w-[90px] sm:w-28 mt-5 rounded-xl flex flex-col justify-center items-center"
|
||||
>
|
||||
<img class="relative mb-2 rounded w-5 h-5" src={item?.image} />
|
||||
<p
|
||||
class="text-center text-white font-medium text-sm whitespace-normal mb-0.5"
|
||||
>
|
||||
<p class="text-center text-white text-sm whitespace-normal mb-0.5">
|
||||
{item?.symbol}
|
||||
</p>
|
||||
<div
|
||||
class="flex justify-center items-center m-auto font-medium text-xs sm:text-sm relative bottom-0"
|
||||
class="flex justify-center items-center m-auto text-xs sm:text-sm relative bottom-0"
|
||||
>
|
||||
{#if item?.changesPercentage >= 0}
|
||||
<svg
|
||||
|
||||
@ -146,7 +146,7 @@
|
||||
<div class="mt-10 text-center">
|
||||
<a
|
||||
href="/pricing"
|
||||
class="mt-10 flex justify-center text-[1rem] items-center px-5 w-fit m-auto rounded-md btn font-semibold text-black bg-[#fff] sm:hover:bg-gray-300 transition duration-150 ease-in-out group"
|
||||
class="mt-10 flex justify-center text-[1rem] items-center px-5 w-fit m-auto border-none rounded-md btn btn-lg font-semibold text-black bg-[#fff] sm:hover:bg-gray-300 transition duration-150 ease-in-out group"
|
||||
>
|
||||
Get Pro Membership
|
||||
<span
|
||||
|
||||
@ -1,19 +1,53 @@
|
||||
|
||||
<script lang='ts'>
|
||||
|
||||
export let state;
|
||||
export let votes;
|
||||
let color = state === 'active' ? '#0076FE' : '#D6D6DC'
|
||||
<script lang="ts">
|
||||
export let state;
|
||||
export let votes;
|
||||
let color = state === "active" ? "#0076FE" : "#D6D6DC";
|
||||
</script>
|
||||
|
||||
|
||||
<div class="{state === 'active' ? 'sm:hover:bg-[#102f52]' : 'sm:hover:bg-gray-700'} h-10 px-2 -ml-2 flex justify-center items-center rounded-md">
|
||||
<svg class="inline-block w-4 h-4 mr-2 sm:mr-3 {state === 'active' ? '' : ''}" fill={color} version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 13.82 13.47" xml:space="preserve"><g class="dont-open-thread"><path d="M6.49,0.01C5.44,0.44-0.26,11.22,0.01,11.73c0.11,0.11,0.26,0.16,0.39,0.22c0.14,0.05,5.29,1.53,6.1,1.53
|
||||
c0.67,0,6.83-1.99,6.96-2.06c0.13-0.07,0.27-0.15,0.35-0.28C14.02,10.39,7.55-0.42,6.49,0.01z"></path></g></svg>
|
||||
<span class="text-sm font-medium text-[#D6D6DC] {state === 'active' ? 'text-[#0076FE]' : ''}">
|
||||
{votes}
|
||||
</span>
|
||||
<svg class="rotate-180 inline-block w-4 h-4 mr-2 sm:mr-3 {state === 'active' ? '' : ''}" fill={color} version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 13.82 13.47" xml:space="preserve"><g class="dont-open-thread"><path d="M6.49,0.01C5.44,0.44-0.26,11.22,0.01,11.73c0.11,0.11,0.26,0.16,0.39,0.22c0.14,0.05,5.29,1.53,6.1,1.53
|
||||
c0.67,0,6.83-1.99,6.96-2.06c0.13-0.07,0.27-0.15,0.35-0.28C14.02,10.39,7.55-0.42,6.49,0.01z"></path></g></svg>
|
||||
<div
|
||||
class="{state === 'active'
|
||||
? 'sm:hover:bg-[#102f52]'
|
||||
: 'sm:hover:bg-gray-700'} h-10 px-2 -ml-2 flex justify-center items-center rounded-md"
|
||||
>
|
||||
<svg
|
||||
class="inline-block w-4 h-4 mr-2 sm:mr-3 {state === 'active' ? '' : ''}"
|
||||
fill={color}
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 13.82 13.47"
|
||||
xml:space="preserve"
|
||||
><g class="dont-open-thread"
|
||||
><path
|
||||
d="M6.49,0.01C5.44,0.44-0.26,11.22,0.01,11.73c0.11,0.11,0.26,0.16,0.39,0.22c0.14,0.05,5.29,1.53,6.1,1.53
|
||||
c0.67,0,6.83-1.99,6.96-2.06c0.13-0.07,0.27-0.15,0.35-0.28C14.02,10.39,7.55-0.42,6.49,0.01z"
|
||||
></path></g
|
||||
></svg
|
||||
>
|
||||
<span
|
||||
class="text-sm text-[#D6D6DC] {state === 'active' ? 'text-[#0076FE]' : ''}"
|
||||
>
|
||||
{votes}
|
||||
</span>
|
||||
<svg
|
||||
class="rotate-180 inline-block w-4 h-4 mr-2 sm:mr-3 {state === 'active'
|
||||
? ''
|
||||
: ''}"
|
||||
fill={color}
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 13.82 13.47"
|
||||
xml:space="preserve"
|
||||
><g class="dont-open-thread"
|
||||
><path
|
||||
d="M6.49,0.01C5.44,0.44-0.26,11.22,0.01,11.73c0.11,0.11,0.26,0.16,0.39,0.22c0.14,0.05,5.29,1.53,6.1,1.53
|
||||
c0.67,0,6.83-1.99,6.96-2.06c0.13-0.07,0.27-0.15,0.35-0.28C14.02,10.39,7.55-0.42,6.49,0.01z"
|
||||
></path></g
|
||||
></svg
|
||||
>
|
||||
</div>
|
||||
|
||||
|
||||
@ -104,7 +104,7 @@
|
||||
>
|
||||
{/if}
|
||||
<div
|
||||
class="text-white text-sm sm:text-[1rem] ml-auto font-medium"
|
||||
class="text-white text-sm sm:text-[1rem] ml-auto"
|
||||
>
|
||||
{#if item?.changesPercentage >= 0}
|
||||
<span class="text-[#00FC50] inline-block"
|
||||
|
||||
@ -73,7 +73,7 @@
|
||||
{#each watchList as item}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b-[#09090B]"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b-[#09090B]"
|
||||
>
|
||||
<td
|
||||
class="text-sm sm:text-[1rem] text-start border-b-[#09090B]"
|
||||
@ -188,7 +188,7 @@
|
||||
ago
|
||||
</div>
|
||||
<h2
|
||||
class="text-start text-sm sm:text-md font-medium mb-2 shrink text-white"
|
||||
class="text-start text-sm sm:text-md mb-2 shrink text-white"
|
||||
>
|
||||
{item.title}
|
||||
</h2>
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
<AccordionPrimitive.Header {level} class="flex">
|
||||
<AccordionPrimitive.Trigger
|
||||
class={cn(
|
||||
"cursor-pointer flex flex-1 items-center justify-between font-medium transition-all [&[data-state=open]>svg1]:rotate-180",
|
||||
"cursor-pointer flex flex-1 items-center justify-between transition-all [&[data-state=open]>svg1]:rotate-180",
|
||||
className,
|
||||
)}
|
||||
{...$$restProps}
|
||||
|
||||
@ -1,21 +1,21 @@
|
||||
<script lang="ts">
|
||||
import type { HTMLAttributes } from "svelte/elements";
|
||||
import type { HeadingLevel } from "./index.ts";
|
||||
import { cn } from "$lib/utils.js";
|
||||
import type { HTMLAttributes } from "svelte/elements";
|
||||
import type { HeadingLevel } from "./index.ts";
|
||||
import { cn } from "$lib/utils.js";
|
||||
|
||||
type $$Props = HTMLAttributes<HTMLHeadingElement> & {
|
||||
level?: HeadingLevel;
|
||||
};
|
||||
type $$Props = HTMLAttributes<HTMLHeadingElement> & {
|
||||
level?: HeadingLevel;
|
||||
};
|
||||
|
||||
let className: $$Props["class"] = undefined;
|
||||
export let level: $$Props["level"] = "h5";
|
||||
export { className as class };
|
||||
let className: $$Props["class"] = undefined;
|
||||
export let level: $$Props["level"] = "h5";
|
||||
export { className as class };
|
||||
</script>
|
||||
|
||||
<svelte:element
|
||||
this={level}
|
||||
class={cn("mb-1 font-medium leading-none tracking-tight", className)}
|
||||
{...$$restProps}
|
||||
this={level}
|
||||
class={cn("mb-1 leading-none tracking-tight", className)}
|
||||
{...$$restProps}
|
||||
>
|
||||
<slot />
|
||||
<slot />
|
||||
</svelte:element>
|
||||
@ -3,7 +3,7 @@ import type { Button as ButtonPrimitive } from "bits-ui";
|
||||
import Root from "./button.svelte";
|
||||
|
||||
const buttonVariants = tv({
|
||||
base: "cursor-pointer inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
||||
base: "cursor-pointer inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
||||
variants: {
|
||||
variant: {
|
||||
default: "bg-primary text-primary-foreground",
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
<script lang="ts">
|
||||
import { Calendar as CalendarPrimitive } from "bits-ui";
|
||||
import { cn } from "$lib/utils.js";
|
||||
import { Calendar as CalendarPrimitive } from "bits-ui";
|
||||
import { cn } from "$lib/utils.js";
|
||||
|
||||
type $$Props = CalendarPrimitive.HeadingProps;
|
||||
type $$Props = CalendarPrimitive.HeadingProps;
|
||||
|
||||
let className: $$Props["class"] = undefined;
|
||||
export { className as class };
|
||||
let className: $$Props["class"] = undefined;
|
||||
export { className as class };
|
||||
</script>
|
||||
|
||||
<CalendarPrimitive.Heading
|
||||
let:headingValue
|
||||
class={cn("text-sm font-medium", className)}
|
||||
{...$$restProps}
|
||||
let:headingValue
|
||||
class={cn("text-sm ", className)}
|
||||
{...$$restProps}
|
||||
>
|
||||
<slot {headingValue}>
|
||||
{headingValue}
|
||||
</slot>
|
||||
<slot {headingValue}>
|
||||
{headingValue}
|
||||
</slot>
|
||||
</CalendarPrimitive.Heading>
|
||||
|
||||
@ -1,23 +1,23 @@
|
||||
<script lang="ts">
|
||||
import type { Dialog as DialogPrimitive } from "bits-ui";
|
||||
import type { Command as CommandPrimitive } from "cmdk-sv";
|
||||
import Command from "./command.svelte";
|
||||
import * as Dialog from "$lib/components/shadcn/dialog/index.js";
|
||||
import type { Dialog as DialogPrimitive } from "bits-ui";
|
||||
import type { Command as CommandPrimitive } from "cmdk-sv";
|
||||
import Command from "./command.svelte";
|
||||
import * as Dialog from "$lib/components/shadcn/dialog/index.js";
|
||||
|
||||
type $$Props = DialogPrimitive.Props & CommandPrimitive.CommandProps;
|
||||
type $$Props = DialogPrimitive.Props & CommandPrimitive.CommandProps;
|
||||
|
||||
export let open: $$Props["open"] = false;
|
||||
export let value: $$Props["value"] = undefined;
|
||||
export let open: $$Props["open"] = false;
|
||||
export let value: $$Props["value"] = undefined;
|
||||
</script>
|
||||
|
||||
<Dialog.Root bind:open {...$$restProps}>
|
||||
<Dialog.Content class="overflow-hidden p-0 shadow-lg">
|
||||
<Command
|
||||
class="**:data-cmdk-group-heading:text-muted-foreground **:data-cmdk-group-heading:px-2 **:data-cmdk-group-heading:font-medium [&_[data-cmdk-group]:not([hidden])_~[data-cmdk-group]]:pt-0 **:data-cmdk-group:px-2 [&_[data-cmdk-input-wrapper]_svg]:h-5 [&_[data-cmdk-input-wrapper]_svg]:w-5 **:data-cmdk-input:h-12 **:data-cmdk-item:px-2 **:data-cmdk-item:py-3 [&_[data-cmdk-item]_svg]:h-5 [&_[data-cmdk-item]_svg]:w-5"
|
||||
{...$$restProps}
|
||||
bind:value
|
||||
>
|
||||
<slot />
|
||||
</Command>
|
||||
</Dialog.Content>
|
||||
<Dialog.Content class="overflow-hidden p-0 shadow-lg">
|
||||
<Command
|
||||
class="**:data-cmdk-group-heading:text-muted-foreground **:data-cmdk-group-heading:px-2 **:data-cmdk-group-heading: [&_[data-cmdk-group]:not([hidden])_~[data-cmdk-group]]:pt-0 **:data-cmdk-group:px-2 [&_[data-cmdk-input-wrapper]_svg]:h-5 [&_[data-cmdk-input-wrapper]_svg]:w-5 **:data-cmdk-input:h-12 **:data-cmdk-item:px-2 **:data-cmdk-item:py-3 [&_[data-cmdk-item]_svg]:h-5 [&_[data-cmdk-item]_svg]:w-5"
|
||||
{...$$restProps}
|
||||
bind:value
|
||||
>
|
||||
<slot />
|
||||
</Command>
|
||||
</Dialog.Content>
|
||||
</Dialog.Root>
|
||||
@ -1,18 +1,18 @@
|
||||
<script lang="ts">
|
||||
import { Command as CommandPrimitive } from "cmdk-sv";
|
||||
import { cn } from "$lib/utils";
|
||||
type $$Props = CommandPrimitive.GroupProps;
|
||||
import { Command as CommandPrimitive } from "cmdk-sv";
|
||||
import { cn } from "$lib/utils";
|
||||
type $$Props = CommandPrimitive.GroupProps;
|
||||
|
||||
let className: string | undefined | null = undefined;
|
||||
export { className as class };
|
||||
let className: string | undefined | null = undefined;
|
||||
export { className as class };
|
||||
</script>
|
||||
|
||||
<CommandPrimitive.Group
|
||||
class={cn(
|
||||
"text-foreground **:data-cmdk-group-heading:text-muted-foreground overflow-hidden p-1 **:data-cmdk-group-heading:px-2 **:data-cmdk-group-heading:py-1.5 **:data-cmdk-group-heading:text-xs **:data-cmdk-group-heading:font-medium",
|
||||
className
|
||||
)}
|
||||
{...$$restProps}
|
||||
class={cn(
|
||||
"text-foreground **:data-cmdk-group-heading:text-muted-foreground overflow-hidden p-1 **:data-cmdk-group-heading:px-2 **:data-cmdk-group-heading:py-1.5 **:data-cmdk-group-heading:text-xs **:data-cmdk-group-heading:",
|
||||
className,
|
||||
)}
|
||||
{...$$restProps}
|
||||
>
|
||||
<slot />
|
||||
<slot />
|
||||
</CommandPrimitive.Group>
|
||||
@ -1,42 +1,42 @@
|
||||
<script lang="ts">
|
||||
import type { HTMLInputAttributes } from "svelte/elements";
|
||||
import type { InputEvents } from "./index.ts";
|
||||
import { cn } from "$lib/utils";
|
||||
import type { HTMLInputAttributes } from "svelte/elements";
|
||||
import type { InputEvents } from "./index.ts";
|
||||
import { cn } from "$lib/utils";
|
||||
|
||||
type $$Props = HTMLInputAttributes;
|
||||
type $$Events = InputEvents;
|
||||
type $$Props = HTMLInputAttributes;
|
||||
type $$Events = InputEvents;
|
||||
|
||||
let className: $$Props["class"] = undefined;
|
||||
export let value: $$Props["value"] = undefined;
|
||||
export { className as class };
|
||||
let className: $$Props["class"] = undefined;
|
||||
export let value: $$Props["value"] = undefined;
|
||||
export { className as class };
|
||||
|
||||
// Workaround for https://github.com/sveltejs/svelte/issues/9305
|
||||
// Fixed in Svelte 5, but not backported to 4.x.
|
||||
export let readonly: $$Props["readonly"] = undefined;
|
||||
// Workaround for https://github.com/sveltejs/svelte/issues/9305
|
||||
// Fixed in Svelte 5, but not backported to 4.x.
|
||||
export let readonly: $$Props["readonly"] = undefined;
|
||||
</script>
|
||||
|
||||
<input
|
||||
class={cn(
|
||||
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus:border-transparent focus:ring-0 disabled:opacity-50",
|
||||
className
|
||||
)}
|
||||
bind:value
|
||||
{readonly}
|
||||
on:blur
|
||||
on:change
|
||||
on:click
|
||||
on:focus
|
||||
on:focusin
|
||||
on:focusout
|
||||
on:keydown
|
||||
on:keypress
|
||||
on:keyup
|
||||
on:mouseover
|
||||
on:mouseenter
|
||||
on:mouseleave
|
||||
on:mousemove
|
||||
on:paste
|
||||
on:input
|
||||
on:wheel|passive
|
||||
{...$$restProps}
|
||||
class={cn(
|
||||
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file: placeholder:text-muted-foreground focus:border-transparent focus:ring-0 disabled:opacity-50",
|
||||
className,
|
||||
)}
|
||||
bind:value
|
||||
{readonly}
|
||||
on:blur
|
||||
on:change
|
||||
on:click
|
||||
on:focus
|
||||
on:focusin
|
||||
on:focusout
|
||||
on:keydown
|
||||
on:keypress
|
||||
on:keyup
|
||||
on:mouseover
|
||||
on:mouseenter
|
||||
on:mouseleave
|
||||
on:mousemove
|
||||
on:paste
|
||||
on:input
|
||||
on:wheel|passive
|
||||
{...$$restProps}
|
||||
/>
|
||||
@ -1,21 +1,21 @@
|
||||
<script lang="ts">
|
||||
import { Label as LabelPrimitive } from "bits-ui";
|
||||
import { cn } from "$lib/utils.js";
|
||||
import { Label as LabelPrimitive } from "bits-ui";
|
||||
import { cn } from "$lib/utils.js";
|
||||
|
||||
type $$Props = LabelPrimitive.Props;
|
||||
type $$Events = LabelPrimitive.Events;
|
||||
type $$Props = LabelPrimitive.Props;
|
||||
type $$Events = LabelPrimitive.Events;
|
||||
|
||||
let className: $$Props["class"] = undefined;
|
||||
export { className as class };
|
||||
let className: $$Props["class"] = undefined;
|
||||
export { className as class };
|
||||
</script>
|
||||
|
||||
<LabelPrimitive.Root
|
||||
class={cn(
|
||||
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
||||
className
|
||||
)}
|
||||
{...$$restProps}
|
||||
on:mousedown
|
||||
class={cn(
|
||||
"text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
||||
className,
|
||||
)}
|
||||
{...$$restProps}
|
||||
on:mousedown
|
||||
>
|
||||
<slot />
|
||||
<slot />
|
||||
</LabelPrimitive.Root>
|
||||
@ -8,9 +8,6 @@
|
||||
export { className as class };
|
||||
</script>
|
||||
|
||||
<tfoot
|
||||
class={cn("font-medium text-primary-foreground", className)}
|
||||
{...$$restProps}
|
||||
>
|
||||
<tfoot class={cn(" text-primary-foreground", className)} {...$$restProps}>
|
||||
<slot />
|
||||
</tfoot>
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
<script lang="ts">
|
||||
import type { HTMLThAttributes } from "svelte/elements";
|
||||
import { cn } from "$lib/utils";
|
||||
import type { HTMLThAttributes } from "svelte/elements";
|
||||
import { cn } from "$lib/utils";
|
||||
|
||||
type $$Props = HTMLThAttributes;
|
||||
type $$Props = HTMLThAttributes;
|
||||
|
||||
let className: $$Props["class"] = undefined;
|
||||
export { className as class };
|
||||
let className: $$Props["class"] = undefined;
|
||||
export { className as class };
|
||||
</script>
|
||||
|
||||
<th
|
||||
class={cn(
|
||||
"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
|
||||
className
|
||||
)}
|
||||
{...$$restProps}
|
||||
class={cn(
|
||||
"h-12 px-4 text-left align-middle text-muted-foreground [&:has([role=checkbox])]:pr-0",
|
||||
className,
|
||||
)}
|
||||
{...$$restProps}
|
||||
>
|
||||
<slot />
|
||||
<slot />
|
||||
</th>
|
||||
@ -24,7 +24,7 @@
|
||||
-->
|
||||
|
||||
<div
|
||||
class="mt-4 text-white font-medium text-md w-11/12 sm:w-full m-auto text-center"
|
||||
class="mt-4 text-white text-md w-11/12 sm:w-full m-auto text-center"
|
||||
>
|
||||
The page was not found. If this error occurs persistenly please report
|
||||
it to us via
|
||||
|
||||
@ -265,7 +265,7 @@
|
||||
side="left"
|
||||
class="max-w-screen w-full sm:max-w-xs bg-[#141417] overflow-y-auto text-white"
|
||||
>
|
||||
<nav class=" grid gap-6 text-lg font-medium bg-[#141417]">
|
||||
<nav class=" grid gap-6 text-lg bg-[#141417]">
|
||||
<Sheet.Close asChild let:builder>
|
||||
<Button
|
||||
builders={[builder]}
|
||||
@ -801,7 +801,7 @@
|
||||
<div
|
||||
class="relative w-full flex flex-row justify-end sm:justify-between items-center"
|
||||
>
|
||||
<div class="sm:w-full sm:ml-2 3xl:ml-[75px]">
|
||||
<div class="sm:w-full sm:ml-2 2xl:ml-[75px]">
|
||||
<Searchbar />
|
||||
</div>
|
||||
<NotificationBell {data} {hasUnreadElement} />
|
||||
|
||||
@ -175,7 +175,7 @@
|
||||
<tbody>
|
||||
{#each analystList as item, index}
|
||||
<tr
|
||||
class="border-b border-[#27272A] sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd {index +
|
||||
1 ===
|
||||
rawData?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
@ -193,7 +193,7 @@
|
||||
<div class="flex flex-col items-start">
|
||||
<a
|
||||
href={"/analysts/" + item?.analystId}
|
||||
class="sm:hover:text-white text-blue-400 font-medium"
|
||||
class="sm:hover:text-white text-blue-400"
|
||||
>{item?.analystName}
|
||||
</a>
|
||||
<!--<span class="text-white">{item?.companyName} </span>-->
|
||||
|
||||
@ -337,7 +337,7 @@
|
||||
href={sectorNavigation?.find(
|
||||
(listItem) => listItem?.title === item,
|
||||
)?.link}
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white bg-opacity-[0.1] sm:hover:bg-opacity-[0.2] ml-0"
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white/10 sm:hover:bg-white/20 ml-0"
|
||||
>
|
||||
{item}
|
||||
</a>
|
||||
@ -352,7 +352,7 @@
|
||||
{#each data?.getAnalystStats?.mainIndustries as item}
|
||||
<a
|
||||
href={`/list/industry/${item?.replace(/ /g, "-")?.replace(/&/g, "and")?.replace(/-{2,}/g, "-")?.toLowerCase()}`}
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white bg-opacity-[0.1] sm:hover:bg-opacity-[0.2] ml-0"
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white/10 sm:hover:bg-white/20 ml-0"
|
||||
>
|
||||
{item}
|
||||
</a>
|
||||
@ -381,12 +381,12 @@
|
||||
<tbody>
|
||||
{#each stockList as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b-[#09090B]"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b-[#09090B]"
|
||||
>
|
||||
<td class="hidden lg:table-cell"
|
||||
><button
|
||||
on:click={() => openGraph(item?.ticker)}
|
||||
class="h-full pl-2 pr-2 align-middle lg:pl-3"
|
||||
class="cursor-pointer h-full pl-2 pr-2 align-middle lg:pl-3"
|
||||
><svg
|
||||
class="w-5 h-5 text-icon {checkedSymbol ===
|
||||
item?.ticker
|
||||
@ -460,11 +460,11 @@
|
||||
class="text-sm sm:text-[1rem] text-start whitespace-nowrap"
|
||||
>
|
||||
<div class="flex flex-col sm:flex-row items-start">
|
||||
<span class="font-medium text-white mr-1"
|
||||
<span class=" text-white mr-1"
|
||||
>{item?.action_company}:</span
|
||||
>
|
||||
<span
|
||||
class="font-medium {[
|
||||
class=" {[
|
||||
'Strong Buy',
|
||||
'Buy',
|
||||
'Outperform',
|
||||
@ -520,7 +520,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.price !== null ? item?.price : "n/a"}
|
||||
</td>
|
||||
@ -530,19 +530,19 @@
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: item?.upside < 0 && item?.upside !== null
|
||||
? 'text-[#FF2F1F]'
|
||||
: 'text-white'} text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
: 'text-white'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.upside !== null ? item?.upside + "%" : "n/a"}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.ratings !== null ? item?.ratings : "n/a"}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{new Date(item?.date).toLocaleString("en-US", {
|
||||
month: "short",
|
||||
|
||||
@ -393,7 +393,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<h2
|
||||
class="text-center m-auto text-[1rem] sm:text-lg text-white font-medium pb-4"
|
||||
class="text-center m-auto text-[1rem] sm:text-lg text-white pb-4"
|
||||
>
|
||||
Try Stocknear Platform for 30 days. No credit card required.
|
||||
</h2>
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
</div>
|
||||
|
||||
<span
|
||||
class="text-white text-md font-medium text-center flex justify-center items-center"
|
||||
class="text-white text-md text-center flex justify-center items-center"
|
||||
>
|
||||
unless it's family
|
||||
</span>
|
||||
|
||||
@ -220,13 +220,13 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] font-medium text-white whitespace-nowrap"
|
||||
class="text-end text-sm sm:text-[1rem] text-white whitespace-nowrap"
|
||||
>
|
||||
{item?.price}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end text-sm sm:text-[1rem] font-medium border-b-[#09090B]"
|
||||
class="text-white text-end text-sm sm:text-[1rem] border-b-[#09090B]"
|
||||
>
|
||||
{#if item?.changesPercentage >= 0}
|
||||
<span class="text-[#00FC50]"
|
||||
|
||||
@ -1379,7 +1379,7 @@
|
||||
class="w-full h-8"
|
||||
on:keydown={(e) => (e?.key === "Enter" ? e.preventDefault() : "")}
|
||||
>
|
||||
<label for="search" class="text-sm font-medium text-gray-200 sr-only"
|
||||
<label for="search" class="text-sm text-gray-200 sr-only"
|
||||
>Search</label
|
||||
>
|
||||
<div class="relative w-full max-w-sm">
|
||||
|
||||
@ -453,7 +453,7 @@
|
||||
{#each day as item}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800"
|
||||
>
|
||||
<td class=" text-sm sm:text-[1rem]">
|
||||
<HoverStockChart symbol={item?.symbol} />
|
||||
|
||||
@ -454,7 +454,7 @@
|
||||
{#each data?.user?.tier === "Pro" ? day : day?.slice(0, 6) as item, index}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
day?.slice(0, 6)?.length &&
|
||||
data?.user?.tier !== 'Pro'
|
||||
|
||||
@ -619,7 +619,7 @@
|
||||
<tbody>
|
||||
{#each day as item}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border border-gray-800"
|
||||
>
|
||||
<td class="text-white text-sm sm:text-[1rem]">
|
||||
<label class="p-1.5 rounded-md"
|
||||
|
||||
@ -869,70 +869,70 @@
|
||||
{#each tableList as item}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border border-gray-800"
|
||||
>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.date}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.month1}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.month2 !== null ? item?.month2 : "-"}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.month3}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.month6}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year1}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year2}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year3}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year5}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year7}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year10}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year20}
|
||||
</td>
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
class="text-white text-sm sm:text-[1rem] text-end whitespace-nowrap"
|
||||
>
|
||||
{item?.year30}
|
||||
</td>
|
||||
|
||||
@ -405,7 +405,7 @@
|
||||
<span class="text-white text-xs font-semibold">
|
||||
{$etfTicker}
|
||||
</span>
|
||||
<span class="text-white font-medium text-sm">
|
||||
<span class="text-white text-sm">
|
||||
{#if $currentPortfolioPrice !== null && $currentPortfolioPrice !== 0}
|
||||
{$currentPortfolioPrice}
|
||||
{:else}
|
||||
@ -997,10 +997,10 @@
|
||||
: 'border-gray-600'}"
|
||||
>
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<span class="ml-1 text-white font-medium mr-auto">
|
||||
<span class="ml-1 text-white mr-auto">
|
||||
{item?.title}
|
||||
</span>
|
||||
<span class="ml-1 text-white text-sm font-medium mr-auto">
|
||||
<span class="ml-1 text-white text-sm mr-auto">
|
||||
{item?.ticker?.length}
|
||||
{item?.ticker?.length !== 1 ? "Companies" : "Company"}
|
||||
</span>
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
{dividendYield !== "0.00" ? dividendYield : "0"}%
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-l border-b border-contrast">
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-b border-gray-600">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
@ -111,9 +111,7 @@
|
||||
{annualDividend !== "0.00" ? annualDividend : "0"}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast border-contrast"
|
||||
>
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-none">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
@ -132,7 +130,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast">
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
@ -145,7 +143,7 @@
|
||||
{payoutFrequency ? payoutFrequency : "n/a"}
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast">
|
||||
<div class="p-4 bp:p-5 sm:p-6">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
@ -160,7 +158,7 @@
|
||||
: "n/a"}
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast">
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t border-gray-600">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
@ -211,9 +209,9 @@
|
||||
</thead>
|
||||
<tbody class="">
|
||||
{#each rawData?.history as item}
|
||||
<tr class="text-white odd:bg-odd border-b border-gray-800">
|
||||
<tr class="text-white odd:bg-odd">
|
||||
<td
|
||||
class="text-start text-sm sm:text-[1rem] whitespace-nowrap text-white font-medium"
|
||||
class="text-start text-sm sm:text-[1rem] whitespace-nowrap text-white"
|
||||
>
|
||||
{new Date(item?.date)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
@ -281,32 +279,10 @@
|
||||
* Dividend amounts are adjusted for stock splits when applicable.
|
||||
</span>
|
||||
{:else}
|
||||
<h1
|
||||
class="text-xl m-auto flex justify-center text-gray-200 mb-4 mt-10"
|
||||
>
|
||||
No history found
|
||||
</h1>
|
||||
<Infobox text="No dividend data found" />
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<style>
|
||||
.app {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
.app {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
.chart {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -219,7 +219,7 @@
|
||||
>Buy/Sell</span
|
||||
>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
class="text-start text-sm sm:text-[1rem] text-white"
|
||||
>
|
||||
{buySellRatio?.toFixed(3)}
|
||||
</span>
|
||||
@ -281,7 +281,7 @@
|
||||
>Dem/Rep</span
|
||||
>
|
||||
<span
|
||||
class="text-start text-sm sm:text-[1rem] font-medium text-white"
|
||||
class="text-start text-sm sm:text-[1rem] text-white"
|
||||
>
|
||||
{partyRatio?.toFixed(3)}
|
||||
</span>
|
||||
@ -347,7 +347,7 @@
|
||||
<tbody>
|
||||
{#each senateTradingList as item}
|
||||
<tr
|
||||
class="odd:bg-odd sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] border-b border-gray-800"
|
||||
class="odd:bg-odd sm:hover:bg-[#245073]/10 border-b border-gray-800"
|
||||
>
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap pb-3"
|
||||
|
||||
@ -411,7 +411,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? optionList : optionList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
optionList?.slice(0, 3)?.length &&
|
||||
data?.user?.tier !== 'Pro'
|
||||
|
||||
@ -110,15 +110,13 @@
|
||||
{#each etfProviderList as item, index}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
etfProviderList?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
: ''}"
|
||||
>
|
||||
<td
|
||||
class="text-sm sm:text-[1rem] whitespace-nowrap font-medium"
|
||||
>
|
||||
<td class="text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<a
|
||||
href={"/etf/etf-providers/" + item?.etfProvider}
|
||||
class="sm:hover:underline sm:hover:underline-offset-4 text-white"
|
||||
@ -128,25 +126,25 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{abbreviateNumber(item?.totalAssets)}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{item?.funds}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{item?.avgExpenseRatio}%
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{item?.avgHoldings}
|
||||
</td>
|
||||
|
||||
@ -197,15 +197,13 @@
|
||||
{#each etfProviderData as item, index}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
etfProviderData?.length && data?.user?.tier !== 'Pro'
|
||||
? 'opacity-[0.1]'
|
||||
: ''}"
|
||||
>
|
||||
<td
|
||||
class="font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
<td class=" text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<HoverStockChart symbol={item?.symbol} assetType={"etf"} />
|
||||
</td>
|
||||
|
||||
@ -244,19 +242,19 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{abbreviateNumber(item?.totalAssets)}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.numberOfHoldings}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.expenseRatio}%
|
||||
</td>
|
||||
|
||||
@ -132,7 +132,7 @@
|
||||
<tbody>
|
||||
{#each etfData as item}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b-[#09090B]"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b-[#09090B]"
|
||||
>
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap border-b-[#09090B]"
|
||||
|
||||
@ -184,8 +184,7 @@
|
||||
maximumFractionDigits: 0,
|
||||
}).format(item?.numberOfStocks)}
|
||||
</span>
|
||||
<span class="text-white font-medium text-sm"
|
||||
># of Holdings</span
|
||||
<span class="text-white text-sm"># of Holdings</span
|
||||
>
|
||||
</label>
|
||||
|
||||
@ -193,9 +192,7 @@
|
||||
<span class="text-white text-[1rem] font-semibold">
|
||||
{item?.turnover?.toFixed(2)}
|
||||
</span>
|
||||
<span class="text-white font-medium text-sm"
|
||||
>Turnover</span
|
||||
>
|
||||
<span class="text-white text-sm">Turnover</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -226,7 +223,7 @@
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
<span class="text-white font-medium text-sm"
|
||||
<span class="text-white text-sm"
|
||||
>3-Year Performance</span
|
||||
>
|
||||
</label>
|
||||
@ -249,9 +246,7 @@
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
<span class="text-white font-medium text-sm"
|
||||
>Win Rate</span
|
||||
>
|
||||
<span class="text-white text-sm">Win Rate</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -175,7 +175,7 @@
|
||||
href={sectorNavigation?.find(
|
||||
(listItem) => listItem?.title === item,
|
||||
)?.link}
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white bg-opacity-[0.1] sm:hover:bg-opacity-[0.2] ml-0"
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white/10 sm:hover:bg-white/20 ml-0"
|
||||
>
|
||||
{item}
|
||||
</a>
|
||||
@ -190,7 +190,7 @@
|
||||
{#each data?.getHedgeFundsData?.mainIndustries as item}
|
||||
<a
|
||||
href={`/list/industry/${item?.replace(/ /g, "-")?.replace(/&/g, "and")?.replace(/-{2,}/g, "-")?.toLowerCase()}`}
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white bg-opacity-[0.1] sm:hover:bg-opacity-[0.2] ml-0"
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white/10 sm:hover:bg-white/20 ml-0"
|
||||
>
|
||||
{item}
|
||||
</a>
|
||||
|
||||
@ -406,7 +406,7 @@
|
||||
<span class="text-white text-xs font-semibold">
|
||||
{$indexTicker}
|
||||
</span>
|
||||
<span class="text-white font-medium text-sm">
|
||||
<span class="text-white text-sm">
|
||||
{#if $currentPortfolioPrice !== null && $currentPortfolioPrice !== 0}
|
||||
{$currentPortfolioPrice}
|
||||
{:else}
|
||||
@ -969,10 +969,10 @@
|
||||
: 'border-gray-600'}"
|
||||
>
|
||||
<div class="flex flex-col items-center w-full">
|
||||
<span class="ml-1 text-white font-medium mr-auto">
|
||||
<span class="ml-1 text-white mr-auto">
|
||||
{item?.title}
|
||||
</span>
|
||||
<span class="ml-1 text-white text-sm font-medium mr-auto">
|
||||
<span class="ml-1 text-white text-sm mr-auto">
|
||||
{item?.ticker?.length}
|
||||
{item?.ticker?.length !== 1 ? "Companies" : "Company"}
|
||||
</span>
|
||||
|
||||
@ -419,7 +419,7 @@
|
||||
<tbody>
|
||||
{#each data?.user?.tier === "Pro" ? optionList : optionList?.slice(0, 3) as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
optionList?.slice(0, 3)?.length &&
|
||||
data?.user?.tier !== 'Pro'
|
||||
|
||||
@ -575,7 +575,7 @@
|
||||
<tbody>
|
||||
{#each volumeList as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
volumeList?.slice(0, 3)?.length &&
|
||||
data?.user?.tier !== 'Pro'
|
||||
@ -689,7 +689,7 @@
|
||||
<tbody>
|
||||
{#each openInterestList as item, index}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800 {index +
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800 {index +
|
||||
1 ===
|
||||
openInterestList?.slice(0, 3)?.length &&
|
||||
data?.user?.tier !== 'Pro'
|
||||
|
||||
@ -112,9 +112,9 @@
|
||||
{#each displayList as item}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800"
|
||||
>
|
||||
<td class="font-medium text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<td class=" text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<a
|
||||
href={`/list/industry/${item?.industry?.replace(/ /g, "-")?.replace(/&/g, "and")?.replace(/-{2,}/g, "-")?.toLowerCase()}`}
|
||||
class="sm:hover:underline sm:hover:underline-offset-4 text-white"
|
||||
@ -132,19 +132,19 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{abbreviateNumber(item?.totalMarketCap) ?? "n/a"}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgDividendYield?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.pe?.toFixed(2) ?? "n/a"}
|
||||
</td>
|
||||
@ -152,7 +152,7 @@
|
||||
<td
|
||||
class=" {item?.profitMargin >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} font-medium text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
: 'text-[#FF2F1F]'} text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{abbreviateNumber(item?.profitMargin)}%
|
||||
</td>
|
||||
@ -160,7 +160,7 @@
|
||||
<td
|
||||
class="{item?.avgChange1D >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
: 'text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgChange1D?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
@ -168,7 +168,7 @@
|
||||
<td
|
||||
class="{item?.avgChange1Y >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
: 'text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgChange1Y?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
|
||||
@ -111,9 +111,9 @@
|
||||
{#each displayList as item}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800"
|
||||
>
|
||||
<td class="font-medium text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<td class=" text-sm sm:text-[1rem] whitespace-nowrap">
|
||||
<a
|
||||
href={sectorNavigation?.find(
|
||||
(listItem) => listItem?.title === item?.sector,
|
||||
@ -133,19 +133,19 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{abbreviateNumber(item?.totalMarketCap) ?? "n/a"}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgDividendYield?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.pe?.toFixed(2) ?? "n/a"}
|
||||
</td>
|
||||
@ -153,7 +153,7 @@
|
||||
<td
|
||||
class=" {item?.profitMargin >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} font-medium text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
: 'text-[#FF2F1F]'} text-sm sm:text-[1rem] whitespace-nowrap text-end"
|
||||
>
|
||||
{abbreviateNumber(item?.profitMargin)}%
|
||||
</td>
|
||||
@ -161,7 +161,7 @@
|
||||
<td
|
||||
class="{item?.avgChange1M >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
: 'text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgChange1D?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
@ -169,7 +169,7 @@
|
||||
<td
|
||||
class="{item?.avgChange1Y >= 0
|
||||
? "before:content-['+'] text-[#00FC50]"
|
||||
: 'text-[#FF2F1F]'} text-end font-medium text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
: 'text-[#FF2F1F]'} text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{item?.avgChange1Y?.toFixed(2) ?? "n/a"}%
|
||||
</td>
|
||||
|
||||
@ -237,7 +237,7 @@
|
||||
<td class="hidden lg:table-cell"
|
||||
><button
|
||||
on:click={() => openGraph(item?.symbol)}
|
||||
class="h-full pl-2 pr-2 align-middle lg:pl-3"
|
||||
class="cursor-pointer h-full pl-2 pr-2 align-middle lg:pl-3"
|
||||
><svg
|
||||
class="w-5 h-5 text-icon {checkedSymbol ===
|
||||
item?.symbol
|
||||
@ -275,13 +275,13 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] font-medium text-white whitespace-nowrap"
|
||||
class="text-end text-sm sm:text-[1rem] text-white whitespace-nowrap"
|
||||
>
|
||||
{abbreviateNumber(item?.marketCap)}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] whitespace-nowrap font-medium text-white"
|
||||
class="text-end text-sm sm:text-[1rem] whitespace-nowrap text-white"
|
||||
>
|
||||
{item?.price}
|
||||
</td>
|
||||
@ -298,13 +298,13 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] font-medium text-white whitespace-nowrap"
|
||||
class="text-end text-sm sm:text-[1rem] text-white whitespace-nowrap"
|
||||
>
|
||||
{abbreviateNumber(item?.totalShares)}
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] font-medium whitespace-nowrap {item?.transactionType ===
|
||||
class="text-end text-sm sm:text-[1rem] whitespace-nowrap {item?.transactionType ===
|
||||
'Buy'
|
||||
? 'text-[#00FC50]'
|
||||
: item?.transactionType === 'Sell'
|
||||
|
||||
@ -91,7 +91,7 @@
|
||||
<tbody>
|
||||
{#each ipoList as item}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b-[#09090B]"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b-[#09090B]"
|
||||
>
|
||||
<td
|
||||
class="text-white text-sm sm:text-[1rem] whitespace-nowrap text-start border-b-[#09090B] whitespace-nowrap"
|
||||
|
||||
@ -169,7 +169,7 @@
|
||||
{#each displayList as item}
|
||||
<!-- row -->
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b border-gray-800"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b border-gray-800"
|
||||
>
|
||||
<td
|
||||
class="text-white font-semibold sm:font-normal text-center text-sm sm:text-[1rem]"
|
||||
@ -208,7 +208,7 @@
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-white font-medium text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
class="text-white text-end text-sm sm:text-[1rem] whitespace-nowrap"
|
||||
>
|
||||
{abbreviateNumber(item?.totalAssets)}
|
||||
</td>
|
||||
|
||||
@ -120,7 +120,7 @@
|
||||
<div class="w-full max-w-lg">
|
||||
<a
|
||||
href="/reset-password"
|
||||
class="text-sm font-medium text-blue-400 sm:hover:text-white sm:hover:underline"
|
||||
class="text-sm text-blue-400 sm:hover:text-white sm:hover:underline"
|
||||
>Forgot Password?</a
|
||||
>
|
||||
</div>
|
||||
@ -763,9 +763,8 @@
|
||||
class="pb-1 text-sm w-full max-w-lg text-white flex justify-center items-center"
|
||||
>
|
||||
You don't have an account?
|
||||
<a
|
||||
href="/register"
|
||||
class="text-blue-400 font-medium hover:underline ml-1">Sign up</a
|
||||
<a href="/register" class="text-blue-400 hover:underline ml-1"
|
||||
>Sign up</a
|
||||
>
|
||||
</p>
|
||||
</form>
|
||||
|
||||
@ -141,7 +141,7 @@
|
||||
|
||||
<a
|
||||
href={"/stocks/" + item?.symbol}
|
||||
class="px-2.5 text-sm py-0.5 rounded-md bg-white bg-opacity-[0.1] sm:hover:bg-opacity-[0.2] ml-1"
|
||||
class="px-2.5 text-sm py-0.5 rounded-md bg-white/10 sm:hover:bg-white/20 ml-1"
|
||||
>
|
||||
{item?.symbol}
|
||||
</a>
|
||||
|
||||
@ -1723,7 +1723,7 @@
|
||||
class="w-full h-8"
|
||||
on:keydown={(e) => (e?.key === "Enter" ? e.preventDefault() : "")}
|
||||
>
|
||||
<label for="search" class="text-sm font-medium text-gray-200 sr-only"
|
||||
<label for="search" class="text-sm text-gray-200 sr-only"
|
||||
>Search</label
|
||||
>
|
||||
<div class="relative w-full max-w-sm">
|
||||
|
||||
@ -295,9 +295,7 @@
|
||||
loading="lazy"
|
||||
/>
|
||||
</div>
|
||||
<span
|
||||
class="text-white text-lg font-medium mt-2 mb-2"
|
||||
>
|
||||
<span class="text-white text-lg mt-2 mb-2">
|
||||
{item?.representative}
|
||||
</span>
|
||||
<span class="text-white text-md mb-8">
|
||||
@ -319,7 +317,7 @@
|
||||
"en-US",
|
||||
)}</span
|
||||
>
|
||||
<span class="text-slate-300 font-medium text-sm"
|
||||
<span class="text-slate-300 text-sm"
|
||||
>Total Trades</span
|
||||
>
|
||||
</label>
|
||||
@ -338,7 +336,7 @@
|
||||
)
|
||||
: "n/a"}
|
||||
</span>
|
||||
<span class="text-slate-300 font-medium text-sm"
|
||||
<span class="text-slate-300 text-sm"
|
||||
>Last Traded</span
|
||||
>
|
||||
</div>
|
||||
|
||||
@ -239,7 +239,7 @@
|
||||
href={sectorNavigation?.find(
|
||||
(listItem) => listItem?.title === item,
|
||||
)?.link}
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white bg-opacity-[0.1] sm:hover:bg-opacity-[0.2] ml-0"
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white/10 sm:hover:bg-white/20 ml-0"
|
||||
>
|
||||
{item}
|
||||
</a>
|
||||
@ -254,7 +254,7 @@
|
||||
{#each mainIndustries as item}
|
||||
<a
|
||||
href={`/list/industry/${item?.replace(/ /g, "-")?.replace(/&/g, "and")?.replace(/-{2,}/g, "-")?.toLowerCase()}`}
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white bg-opacity-[0.1] sm:hover:bg-opacity-[0.2] ml-0"
|
||||
class="px-3 text-sm py-1 sm:text-[1rem] rounded-md bg-white/10 sm:hover:bg-white/20 ml-0"
|
||||
>
|
||||
{item}
|
||||
</a>
|
||||
@ -318,12 +318,12 @@
|
||||
<tbody class="p-0">
|
||||
{#each tableData as item}
|
||||
<tr
|
||||
class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-odd border-b-[#27272A] text-white"
|
||||
class="sm:hover:bg-[#245073]/10 odd:bg-odd border-b-[#27272A] text-white"
|
||||
>
|
||||
<td class="hidden lg:table-cell"
|
||||
><button
|
||||
on:click={() => openGraph(item?.ticker)}
|
||||
class="h-full pl-2 pr-2 align-middle lg:pl-3"
|
||||
class="cursor-pointer h-full pl-2 pr-2 align-middle lg:pl-3"
|
||||
><svg
|
||||
class="w-5 h-5 text-icon {(checkedSymbol ===
|
||||
item?.ticker ?? item?.symbol)
|
||||
|
||||
@ -109,28 +109,28 @@
|
||||
<thead class="bg-default">
|
||||
<tr class="">
|
||||
<th
|
||||
class=" text-start bg-default text-white text-sm font-medium sm:font-semibold"
|
||||
class=" text-start bg-default text-white text-sm sm:font-semibold"
|
||||
>
|
||||
Person
|
||||
</th>
|
||||
<td
|
||||
class="text-start bg-default text-white text-sm font-medium sm:font-semibold"
|
||||
class="text-start bg-default text-white text-sm sm:font-semibold"
|
||||
>
|
||||
Company
|
||||
</td>
|
||||
|
||||
<td
|
||||
class="text-end bg-default text-white text-sm font-medium sm:font-semibold"
|
||||
class="text-end bg-default text-white text-sm sm:font-semibold"
|
||||
>
|
||||
Date
|
||||
</td>
|
||||
<td
|
||||
class="text-center bg-default text-white text-sm font-medium sm:font-semibold"
|
||||
class="text-center bg-default text-white text-sm sm:font-semibold"
|
||||
>
|
||||
Amount
|
||||
</td>
|
||||
<td
|
||||
class="text-white text-end text-sm font-medium sm:font-semibold"
|
||||
class="text-white text-end text-sm sm:font-semibold"
|
||||
>Type</td
|
||||
>
|
||||
</tr>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user