This commit is contained in:
MuslemRahimi 2025-03-31 01:16:37 +02:00
parent 1f7c7bc402
commit 1e6e90d616
11 changed files with 232 additions and 234 deletions

View File

@ -21,9 +21,9 @@
/>
<section
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden min-h-screen pb-20 pt-5 px-4 lg:px-3"
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden min-h-screen pb-20 pt-3 px-4 lg:px-3"
>
<div class="w-full overflow-hidden m-auto mt-5">
<div class="w-full overflow-hidden m-auto">
<div class="sm:p-0 flex justify-center w-full m-auto overflow-hidden">
<main id="main" class="mt-2 w-full">
{#if article?.cover}
@ -42,16 +42,16 @@
<article
class="z-5 relative mx-1 {article?.cover
? '-mt-10 lg:-mt-16'
: 'mt-5'} rounded-t-md bg-white dark:bg-default p-3 xs:p-4 lg:ml-3 lg:p-5 xl:mx-4"
: 'lg:-mt-8'} rounded-t-md bg-white dark:bg-default p-3 xs:p-4 lg:ml-3 lg:p-5 xl:mx-4"
>
<header
class="pb-3 border-b-[2px] border-muted dark:border-white w-full sm:min-w-[850px] sm:max-w-[850px]"
>
<h1 class="mb-3 text-2xl sm:text-3xl font-bold md:text-4xl">
<h1 class="mb-3 text-2xl sm:text-4xl font-bold">
{article?.title}
</h1>
<div class="">
<div>
<div class="italic text-sm">
Last Updated: {new Date(article?.updated)?.toLocaleString(
"en-US",
{

View File

@ -38,7 +38,7 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
1. Is there a guide on how to use Stocknears features?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Yes! We've created the
<a
href="/learning-center"
@ -52,7 +52,7 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
2. How long does it take to see earnings releases?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Earnings reports are available on Stocknear within 1-5 minutes
after they go live.
</p>
@ -60,17 +60,17 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
3. Why is your data different from other finance sites?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Like other platforms, we source data from third-party providers.
With thousands of stocks and funds worldwide, manual data
collection is impractical.
</p>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Data providers rely on automated methods, which can lead to
variations between platforms. Differences in definitions and
collection techniques can cause slight discrepancies.
</p>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
If you notice an inaccuracy, please contact us at <a
href={`mailto:${emailAddress}`}
class="text-blue-700 sm:hover:text-muted dark:text-blue-400 dark:sm:hover:text-white"
@ -81,7 +81,7 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
4. Is the Options data real-time or delayed?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Our <a
href="/options-flow"
class="text-blue-700 sm:hover:text-muted dark:text-blue-400 dark:sm:hover:text-white"
@ -93,7 +93,7 @@
5. Why do other platforms show options data that Stocknear
doesnt?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
We focus on unusual options activity from hedge funds and
institutional traders. Retail investor contracts are excluded to
eliminate noise and highlight significant market moves.
@ -102,7 +102,7 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
6. Is Dark Pool data real-time or delayed?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Dark Pool data is delayed by 15 minutes. We partner with major
exchanges to provide exclusive Wall Street insights typically
reserved for institutional traders.
@ -111,14 +111,14 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
7. I found an error in the data. What should I do?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Please email <a
href={`mailto:${emailAddress}`}
class="text-blue-700 sm:hover:text-muted dark:text-blue-400 dark:sm:hover:text-white"
>{emailAddress}</a
>, and well investigate immediately.
</p>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
We manually verify every error report and work with data
providers to ensure corrections are made at the source.
</p>
@ -126,7 +126,7 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
8. Can I request new features? How can I contact you?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Absolutely! Email us or join our <a
href={discordURL}
rel="noopener noreferrer"
@ -140,7 +140,7 @@
<h2 class="mb-1 text-xl sm:text-2xl font-bold">
9. Do you offer an API?
</h2>
<p class="mb-10 mt-5 text-[1rem] sm:text-lg">
<p class="mb-5 mt-5 text-[1rem] sm:text-lg">
Not at the moment. We license data from third-party providers
and dont have redistribution rights. However, we plan to offer
an API in the future.

View File

@ -33,7 +33,7 @@
According to § 5 Telemediengesetz (TMG)
</p>
<p class=" mb-10">
<p class=" mb-5">
Stocknear GmbH
<br />
Am Lohgraben 30
@ -46,25 +46,25 @@
class="text-blue-700 dark:text-blue-400 sm:hover:text-muted dark:sm:hover:text-white sm:hover:underline"
>{emailAddress}</a
>.
<br />
<br />
<br class="mb-3" />
Managing Director (<span class="italic">Geschäftsführer</span>):
Muslem Rahimi
<br />
<br />
Registered in the commercial register at the local court at Siegen
under: HRB 13800
<br class="mb-3" />
Registered in the commercial register at the local court at
Siegen under: HRB 13800
<br />
VAT ID: DE366905061
</p>
<p class=" mb-10">
<p class="mb-5">
Responsible for the content according § 55 Abs. 2 RStV
<br />
Notice according to the Online Dispute Settlement Regulation
</p>
<p class=" mb-10">
<p class="mb-5">
Under applicable law, we are required to inform consumers of the
existence of the European Online Dispute Resolution platform,
which can be used to resolve disputes without having to go to
@ -86,7 +86,7 @@
(VSBG)
</h2>
<p class=" mb-10">
<p class=" mb-5">
We are not willing and obliged to participate in dispute
resolution proceedings before a consumer arbitration board.
</p>

View File

@ -12,7 +12,6 @@ export const load = async ({ locals }) => {
});
let output = await response.json();
output = !["Pro", "Plus"]?.includes(user?.tier) ? output?.slice(0, 6) : output;
return output;
};

View File

@ -12,10 +12,8 @@
export let data;
let isLoaded = true;
let rawData = processTickerData(data?.getInsiderTracker) ?? [];
let stockList = rawData?.slice(0, 50) ?? [];
isLoaded = true;
function processTickerData(data) {
const symbolMap = new Map();
@ -186,176 +184,163 @@
<h1 class="mb-1 text-2xl sm:text-3xl font-bold">Insider Tracker</h1>
</div>
{#if isLoaded}
<Infobox
text="We update our data in real time to bring you the latest
<Infobox
text="We update our data in real time to bring you the latest
insights on unusual insider trading, sourced from SEC
filings with a minimum transaction value of $100,000."
/>
/>
<div class="w-full m-auto mt-20 sm:mt-10">
<div
class="w-full m-auto rounded-none sm:rounded-md mb-4 overflow-x-auto sm:overflow-hidden"
<div class="w-full m-auto mt-20 sm:mt-10">
<div
class="w-full m-auto rounded-none sm:rounded-md mb-4 overflow-x-auto sm:overflow-hidden"
>
<table
class="table table-sm table-compact no-scrollbar rounded-none sm:rounded-md w-full bg-white dark:bg-table border border-gray-300 dark:border-gray-800 m-auto"
>
<table
class="table table-sm table-compact no-scrollbar rounded-none sm:rounded-md w-full bg-white dark:bg-table border border-gray-300 dark:border-gray-800 m-auto"
>
<thead>
<TableHeader {columns} {sortOrders} {sortData} />
</thead>
<tbody>
{#each stockList as item, index}
<tr
class="dark:sm:hover:bg-[#245073]/10 odd:bg-[#F6F7F8] dark:odd:bg-odd {index +
1 ===
stockList?.length &&
!['Pro', 'Plus']?.includes(data?.user?.tier)
? 'opacity-[0.1]'
: ''}"
<thead>
<TableHeader {columns} {sortOrders} {sortData} />
</thead>
<tbody>
{#each stockList as item, index}
<tr
class="dark:sm:hover:bg-[#245073]/10 odd:bg-[#F6F7F8] dark:odd:bg-odd {index +
1 ===
stockList?.length &&
!['Pro', 'Plus']?.includes(data?.user?.tier)
? 'opacity-[0.1]'
: ''}"
>
<td class="hidden lg:table-cell"
><button
on:click={() => openGraph(item?.symbol)}
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
? 'rotate-180'
: ''}"
viewBox="0 0 20 20"
fill="currentColor"
style="max-width:40px"
><path
fill-rule="evenodd"
d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
clip-rule="evenodd"
></path></svg
></button
></td
>
<td class="hidden lg:table-cell"
><button
on:click={() => openGraph(item?.symbol)}
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
? 'rotate-180'
: ''}"
viewBox="0 0 20 20"
fill="currentColor"
style="max-width:40px"
><path
fill-rule="evenodd"
d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
clip-rule="evenodd"
></path></svg
></button
></td
>
<td class="text-sm sm:text-[1rem] text-start">
<HoverStockChart symbol={item?.symbol} />
</td>
<td
class="whitespace-nowrap text-sm sm:text-[1rem] text-start"
>
{item?.name?.length > charNumber
? item?.name?.slice(0, charNumber) + "..."
: item?.name}
</td>
<td class="text-sm sm:text-[1rem] text-start">
<HoverStockChart symbol={item?.symbol} />
</td>
<td
class="whitespace-nowrap text-sm sm:text-[1rem] text-start"
>
{item?.name?.length > charNumber
? item?.name?.slice(0, charNumber) + "..."
: item?.name}
</td>
<td
class="whitespace-nowrap text-sm sm:text-[1rem] text-start"
>
{item?.reportingName?.length > charNumber
? item?.reportingName?.slice(0, charNumber) + "..."
: item?.reportingName}
</td>
<td
class="whitespace-nowrap text-sm sm:text-[1rem] text-start"
>
{item?.reportingName?.length > charNumber
? item?.reportingName?.slice(0, charNumber) + "..."
: item?.reportingName}
</td>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{abbreviateNumber(item?.marketCap)}
</td>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{abbreviateNumber(item?.marketCap)}
</td>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.price}
</td>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{item?.price}
</td>
<td
class="text-sm sm:text-[1rem] whitespace-nowrap text-end {item?.changesPercentage >=
0
? 'text-green-600 dark:text-[#00FC50]'
: 'text-red-600 dark:text-[#FF2F1F]'}"
>
{item?.changesPercentage > 0
? "+"
: ""}{item?.changesPercentage}%
</td>
<td
class="text-sm sm:text-[1rem] whitespace-nowrap text-end {item?.changesPercentage >=
0
? 'text-green-700 dark:text-[#00FC50]'
: 'text-red-700 dark:text-[#FF2F1F]'}"
>
{item?.changesPercentage > 0
? "+"
: ""}{item?.changesPercentage}%
</td>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{abbreviateNumber(item?.totalShares)}
</td>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap"
>
{abbreviateNumber(item?.totalShares)}
</td>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap {item?.transactionType ===
'Buy'
? 'text-green-600 dark:text-[#00FC50]'
: item?.transactionType === 'Sell'
? 'text-red-600 dark:text-[#FF2F1F]'
: 'text-[#E57C34]'}"
>
<div class="flex flex-row items-center justify-end">
<div class="">
{abbreviateNumber(item?.avgValue)}
</div>
<div
class="ml-2 px-1.5 py-1.5 border text-center rounded-md text-xs font-semibold"
>
{item?.transactionType}
</div>
<td
class="text-end text-sm sm:text-[1rem] whitespace-nowrap {item?.transactionType ===
'Buy'
? 'text-green-700 dark:text-[#00FC50]'
: item?.transactionType === 'Sell'
? 'text-red-700 dark:text-[#FF2F1F]'
: 'text-[#E57C34]'}"
>
<div class="flex flex-row items-center justify-end">
<div class="">
{abbreviateNumber(item?.avgValue)}
</div>
</td>
</tr>
{#if checkedSymbol === item?.symbol}
<tr class=""
><td colspan="9" class="px-0" style=""
><div class="-mt-0.5 px-0 pb-2">
<div class="relative h-[400px]">
<div class="absolute top-0 w-full">
<div
class="ml-2 px-1.5 py-1.5 border text-center rounded-md text-xs font-semibold"
>
{item?.transactionType}
</div>
</div>
</td>
</tr>
{#if checkedSymbol === item?.symbol}
<tr class=""
><td colspan="9" class="px-0" style=""
><div class="-mt-0.5 px-0 pb-2">
<div class="relative h-[400px]">
<div class="absolute top-0 w-full">
<div
class="h-[250px] w-full xs:h-[300px] sm:h-[400px]"
style="overflow: hidden;"
>
<div
class="h-[250px] w-full xs:h-[300px] sm:h-[400px]"
style="overflow: hidden;"
style="position: relative; height: 0px; z-index: 1;"
>
<div
style="position: relative; height: 0px; z-index: 1;"
>
<RatingsChart
ratingsList={data?.getInsiderTracker?.map(
(item) => ({
...item,
type: item?.transactionType,
date: item?.filingDate,
ticker: item?.symbol,
}),
)}
symbol={item?.symbol}
numOfRatings={item?.ratings}
title={"Insider Trading"}
addToLast={true}
{data}
/>
</div>
<RatingsChart
ratingsList={data?.getInsiderTracker?.map(
(item) => ({
...item,
type: item?.transactionType,
date: item?.filingDate,
ticker: item?.symbol,
}),
)}
symbol={item?.symbol}
numOfRatings={item?.ratings}
title={"Insider Trading"}
addToLast={true}
{data}
/>
</div>
</div>
</div>
</div></td
>
</tr>
{/if}
{/each}
</tbody>
</table>
</div>
<UpgradeToPro {data} />
</div>
</div></td
>
</tr>
{/if}
{/each}
</tbody>
</table>
</div>
{:else}
<div class="flex justify-center items-center h-80">
<div class="relative">
<label
class="bg-secondary rounded-md h-14 w-14 flex justify-center items-center absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"
>
<span class="loading loading-spinner loading-md text-gray-400"
></span>
</label>
</div>
</div>
{/if}
<UpgradeToPro {data} />
</div>
</main>
</div>
</div>

View File

@ -289,21 +289,6 @@
{/if}
{/each}
</div>
{:else}
<div
class="mt-5 font-semibold text-[1rem] justify-center items-center m-auto"
>
Empty just like our souls...
<svg
class="inline-block w-4 h-4 m-auto mb-2"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 1200 1200"
><path
fill="white"
d="M567.663 0v190.423h64.679V0h-64.685h.006zm-264.11 57.225l-52.992 37.103l109.203 155.946l52.963-37.104L303.553 57.225zm592.886 0L787.268 213.171l52.971 37.104L949.44 94.328l-52.992-37.103h-.009zm-296.45 185.299c-158.227 0-286.493 96.083-286.493 214.625l162.772 492.948h247.47l162.758-492.948c0-118.54-128.258-214.625-286.492-214.625h-.015zM85.465 299.673l-22.099 60.814l178.849 65.114l22.181-60.785l-178.935-65.143h.004zm1029.062 0l-178.936 65.148l22.106 60.792l178.936-65.125l-22.106-60.815zM255.756 577.681l-183.9 49.326l16.686 62.431l183.9-49.255l-16.683-62.502h-.003zm688.48 0l-16.674 62.501l183.9 49.247l16.674-62.432l-183.9-49.318v.002zM472.66 986.032v85.686h254.687v-85.673H472.661l-.001-.013zm0 128.282V1200h254.687v-85.672H472.661l-.001-.014z"
/></svg
>
</div>
{/if}
</main>

View File

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

View File

@ -418,16 +418,30 @@
<!-- head -->
<thead class="text-muted dark:text-white dark:bg-default">
<tr class="">
<th class=" font-semibold text-sm">Symbol</th>
<th class=" font-semibold text-sm">Company</th>
<th class=" font-semibold text-sm sm:text-[1rem]"
>Symbol</th
>
<th class=" font-semibold text-sm sm:text-[1rem]"
>Company</th
>
<th class=" font-semibold text-end text-sm"
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>Price Target</th
>
<th class=" font-semibold text-end text-sm">Condition</th>
<th class=" font-semibold text-end text-sm"> Price</th>
<th class=" font-semibold text-end text-sm">% Change</th>
<th class=" font-semibold text-end text-sm">Volume</th>
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>Condition</th
>
<th
class=" font-semibold text-end text-sm sm:text-[1rem]"
>
Price</th
>
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>% Change</th
>
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>Volume</th
>
</tr>
</thead>
<tbody class="p-3">
@ -490,11 +504,11 @@
class=" text-sm sm:text-[1rem] whitespace-nowrap text-end"
>
{#if item?.changesPercentage >= 0}
<span class="text-green-600 dark:text-[#00FC50]"
<span class="text-green-700 dark:text-[#00FC50]"
>+{item?.changesPercentage?.toFixed(2)}%</span
>
{:else}
<span class="text-red-600 dark:text-[#FF2F1F]"
<span class="text-red-700 dark:text-[#FF2F1F]"
>{item?.changesPercentage?.toFixed(2)}%
</span>
{/if}
@ -536,7 +550,7 @@
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
><path
fill="#A3A3A3"
fill="currentColor"
d="M17 9V7c0-2.8-2.2-5-5-5S7 4.2 7 7v2c-1.7 0-3 1.3-3 3v7c0 1.7 1.3 3 3 3h10c1.7 0 3-1.3 3-3v-7c0-1.7-1.3-3-3-3M9 7c0-1.7 1.3-3 3-3s3 1.3 3 3v2H9z"
/></svg
>

View File

@ -342,7 +342,7 @@
</span>
</div>
</Table.Cell>
<Table.Cell class="text-right text-[1rem]"
<Table.Cell class="text-right text-[1rem] "
>{item?.count}</Table.Cell
>
<Table.Cell
@ -354,12 +354,12 @@
>{item?.put}</Table.Cell
>
<Table.Cell
class="text-right text-[1rem] {item?.avgSentiment >
class="text-right text-[1rem] {item?.avgSentiment >
0.4
? 'text-green-700 dark:text-[#00FC50]'
: item?.avgSentiment < -0.1
? 'text-red-700 dark:text-[#FF2F1F]'
: 'text-[#C6A755]'} "
: 'text-yellow-600 dark:text-[#C6A755]'} "
>{item?.avgSentiment > 0.4
? "Bullish"
: item?.avgSentiment <= -0.1

View File

@ -252,6 +252,9 @@
function plotData() {
const filteredData = filterDataByTimePeriod(rawData, timePeriod);
const fillColorStart = "rgb(70, 129, 244,0.5)";
const fillColorEnd = "rgb(70, 129, 244,0.001)";
const options = {
credits: {
enabled: false,
@ -262,7 +265,7 @@
height: 360, // Set the maximum height for the chart
},
title: {
text: `<h3 class="mt-3 mb-1 ">${$stockTicker} Market Cap</h3>`,
text: `<h3 class="mt-3 mb-1 ">${removeCompanyStrings($displayCompanyName)} Market Cap</h3>`,
style: {
color: $mode === "light" ? "black" : "white",
// Using inline CSS for margin-top and margin-bottom
@ -282,7 +285,7 @@
style: {
color: $mode === "light" ? "#545454" : "white",
},
distance: 20, // Increases space between label and axis
distance: 10, // Increases space between label and axis
formatter: function () {
const date = new Date(this.value);
return date.toLocaleDateString("en-US", {
@ -308,7 +311,7 @@
gridLineWidth: 1,
gridLineColor: $mode === "light" ? "#e5e7eb" : "#111827",
labels: {
style: { color: $mode === "light" ? "black" : "white" },
style: { color: $mode === "light" ? "#545454" : "white" },
},
title: { text: null },
opposite: true,
@ -338,7 +341,6 @@
// Loop through each point in the shared tooltip
this.points.forEach((point) => {
tooltipContent += `
<span style="display:inline-block; width:10px; height:10px; background-color:${point.color}; border-radius:50%; margin-right:5px;"></span>
<span class="font-semibold text-sm">${point.series.name}:</span>
<span class="font-normal text-sm">${abbreviateNumber(point.y)}</span><br>`;
});
@ -366,16 +368,16 @@
name: "Mkt Cap",
type: "area",
data: filteredData?.marketCapList,
color: $mode === "light" ? "blue" : "white",
lineWidth: 1,
color: "#4681f4",
lineWidth: 1.3,
marker: {
enabled: false,
},
fillColor: {
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
stops: [
[0, "rgba(255, 255, 255, 0.1)"],
[1, "rgba(255, 255, 255, 0.001)"],
[0, fillColorStart],
[1, fillColorEnd],
],
},
},
@ -521,10 +523,10 @@
<span
class="text-sm {changePercentageYearAgo >= 0 &&
changePercentageYearAgo !== null
? "before:content-['+'] text-green-600 dark:text-[#00FC50]"
? "before:content-['+'] text-green-700 dark:text-[#00FC50]"
: changePercentageYearAgo < 0 &&
changePercentageYearAgo !== null
? 'text-red-600 dark:text-[#FF2F1F]'
? 'text-red-700 dark:text-[#FF2F1F]'
: ''}"
>
{changePercentageYearAgo >= 0 ? "Positive" : "Negative"}
@ -713,14 +715,20 @@
<div class="w-full overflow-x-auto">
<table
class="table table-sm table-compact no-scrollbar rounded-none sm:rounded-md w-full bg-white dark:bg-table border border-gray-300 dark:border-gray-800 m-auto mt-4"
class="table table-sm table-compact no-scrollbar rounded-none sm:rounded-md w-full bg-white dark:bg-table border border-gray-300 dark:border-gray-800 m-auto mt-2"
>
<thead class="text-muted dark:text-white dark:bg-default">
<tr>
<th class=" font-semibold text-start text-sm">Date</th>
<th class=" font-semibold text-end text-sm">Market Cap</th
<th
class=" font-semibold text-start text-sm sm:text-[1rem]"
>Date</th
>
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>Market Cap</th
>
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>% Change</th
>
<th class=" font-semibold text-end text-sm">% Change</th>
</tr>
</thead>
<tbody>
@ -749,7 +757,7 @@
{#if index === tableList?.length - 1}
n/a
{:else if item?.marketCap > tableList[index + 1]?.marketCap}
<span class="text-green-600 dark:text-[#00FC50]">
<span class="text-green-700 dark:text-[#00FC50]">
+{(
((item?.marketCap -
tableList[index + 1]?.marketCap) /
@ -758,7 +766,7 @@
)?.toFixed(2)}%
</span>
{:else if item?.marketCap < tableList[index + 1]?.marketCap}
<span class="text-red-600 dark:text-[#FF2F1F]">
<span class="text-red-700 dark:text-[#FF2F1F]">
-{(
Math.abs(
(item?.marketCap -

View File

@ -114,7 +114,7 @@
categories: dates,
gridLineWidth: 0,
labels: {
style: { color: $mode === "light" ? "black" : "white" },
style: { color: $mode === "light" ? "#545454" : "white" },
formatter: function () {
return timeIdx === 0 ? this?.value?.substring(0, 4) : this?.value;
},
@ -124,7 +124,7 @@
gridLineWidth: 1,
gridLineColor: $mode === "light" ? "#e5e7eb" : "#111827",
labels: {
style: { color: $mode === "light" ? "black" : "white" },
style: { color: $mode === "light" ? "#545454" : "white" },
},
title: { text: null },
opposite: true,
@ -420,13 +420,18 @@
>
<thead class="text-muted dark:text-white dark:bg-default">
<tr>
<th class=" font-semibold text-start text-sm"
<th
class=" font-semibold text-start text-sm sm:text-[1rem]"
>{activeIdx === 0
? "Fiscal Year End"
: "Quarter Ended"}</th
>
<th class=" font-semibold text-end text-sm">Revenue</th>
<th class=" font-semibold text-end text-sm">% Change</th>
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>Revenue</th
>
<th class=" font-semibold text-end text-sm sm:text-[1rem]"
>% Change</th
>
</tr>
</thead>
<tbody>
@ -455,7 +460,7 @@
{#if index === tableList?.length - 1}
n/a
{:else if item?.revenue > tableList[index + 1]?.revenue}
<span class="text-green-600 dark:text-[#00FC50]">
<span class="text-green-700 dark:text-[#00FC50]">
+{(
((item?.revenue -
tableList[index + 1]?.revenue) /
@ -464,7 +469,7 @@
)?.toFixed(2)}%
</span>
{:else if item?.revenue < tableList[index + 1]?.revenue}
<span class="text-red-600 dark:text-[#FF2F1F]">
<span class="text-red-700 dark:text-[#FF2F1F]">
-{(
Math.abs(
(item?.revenue -