Compare commits

...

7 Commits

Author SHA1 Message Date
dependabot[bot]
8d8305567a
Merge 5773e1da620afc75c2ad6102c31ab4c2fbd7a7d8 into 62eabef06235552d0476c7edccd1dde661969078 2024-12-03 17:04:23 -08:00
dvelo
62eabef062
feat: improve server icons
feat: improve server icons
2024-11-25 19:41:11 -06:00
dvelo
0e4632b79a feat: improve server icons 2024-11-25 19:39:47 -06:00
dvelo
db587401bf
fix: use custom top property for environments in production or not
fix: use custom `top` property for environments in production or not
2024-11-23 19:15:52 -06:00
dvelo
d7714f4cdb fix: use custom top property for environments in production or not 2024-11-23 19:13:18 -06:00
dvelo
6528152e12
fix: types in ThemeProvider (to main)
fix: types in ThemeProvider (to main)
2024-11-23 18:31:30 -06:00
dvelo
955ba3774c fix: types in ThemeProvider 2024-11-23 18:05:38 -06:00
3 changed files with 44 additions and 7 deletions

@ -37,7 +37,7 @@ import {
getIndexFromRarity, getIndexFromRarity,
getMinehutIcons, getMinehutIcons,
} from "@/lib/types/server-icon"; } from "@/lib/types/server-icon";
import { Copy, Info, QrCode, Share2 } from "lucide-react"; import { Banknote, Copy, Info, QrCode, Share2 } from "lucide-react";
import { useTheme } from "next-themes"; import { useTheme } from "next-themes";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import FadeIn from "react-fade-in/lib/FadeIn"; import FadeIn from "react-fade-in/lib/FadeIn";
@ -287,8 +287,9 @@ export default function AfterServerView({ server }: { server: string }) {
</td> </td>
</tr> </tr>
<tr> <tr>
<th className="border p-2">Credits per day</th> <th className="border p-2">Credits p/ day</th>
<td className="border p-2"> <td className="border p-2 flex items-center">
<Banknote className="mr-1" />
{serverObject?.credits_per_day == undefined {serverObject?.credits_per_day == undefined
? "? (unknown)" ? "? (unknown)"
: Math.floor(serverObject?.credits_per_day)} : Math.floor(serverObject?.credits_per_day)}
@ -475,7 +476,7 @@ export default function AfterServerView({ server }: { server: string }) {
{serverObject?.purchased_icons.map((icon) => ( {serverObject?.purchased_icons.map((icon) => (
<Card key={icon} className="my-4"> <Card key={icon} className="my-4">
<CardContent <CardContent
className="pt-4" className="pt-4 flex items-center"
style={{ style={{
color: getIndexFromRarity( color: getIndexFromRarity(
icons?.find((c) => c._id === icon)?.rank.toLowerCase() icons?.find((c) => c._id === icon)?.rank.toLowerCase()
@ -489,6 +490,37 @@ export default function AfterServerView({ server }: { server: string }) {
className="mr-2" className="mr-2"
/> />
{icons?.find((c) => c._id === icon)?.display_name} {icons?.find((c) => c._id === icon)?.display_name}
<Tooltip>
<TooltipTrigger>
<Info size={18} className="ml-2" />
</TooltipTrigger>
<TooltipContent>
Just because an item is available, it doesn't directly{" "}
<br />
mean that it can be bought immediately, it just means
its in the <br />
pool of icons that are in the weekly rotation.
<br />
<br />
<span className="flex items-center">
<span className="mr-1">Available currently:</span>
{toJSX(
icons?.find((c) => c._id === icon)?.available
)}
</span>
<span className="flex items-center">
<span className="mr-1">Disabled currently:</span>
{toJSX(
icons?.find((c) => c._id === icon)?.disabled
)}
</span>
<span className="flex items-center">
<span className="mr-1">Price:</span>
<Banknote size={16} className="mr-1" />
{icons?.find((c) => c._id === icon)?.price} credits
</span>
</TooltipContent>
</Tooltip>
<span <span
className="mx-2 p-1 pr-2 rounded italic font-bold" className="mx-2 p-1 pr-2 rounded italic font-bold"
style={{ style={{
@ -517,10 +549,14 @@ export default function AfterServerView({ server }: { server: string }) {
); );
} }
function toJSX(boolean: boolean) { function toJSX(boolean?: boolean) {
if (boolean) { if (boolean) {
return <div className="text-green-400">True</div>; return <div className="text-green-400">True</div>;
} }
if (boolean == undefined) {
return <div className="text-gray-400">N/A</div>;
}
return <div className="text-red-400">False</div>; return <div className="text-red-400">False</div>;
} }

@ -32,7 +32,7 @@
import * as React from "react"; import * as React from "react";
import { ThemeProvider as NextThemesProvider, useTheme } from "next-themes"; import { ThemeProvider as NextThemesProvider, useTheme } from "next-themes";
import { type ThemeProviderProps } from "next-themes/dist/types"; import { type ThemeProviderProps } from "next-themes";
declare global { declare global {
interface Document { interface Document {

@ -30,6 +30,7 @@
"use client"; "use client";
import { banner } from "@/config/banner";
import { useEffect, useState, ReactNode } from "react"; import { useEffect, useState, ReactNode } from "react";
export default function StickyTopbar({ export default function StickyTopbar({
@ -60,7 +61,7 @@ export default function StickyTopbar({
return ( return (
<div <div
className={`transition-all duration-300 ${isSticky ? "fixed top-[70px] left-0 w-full backdrop-blur shadow-lg " + className : "block w-full bg-transparent"}`} className={`transition-all duration-300 ${isSticky ? "fixed left-0 w-full backdrop-blur shadow-lg " + (banner.isBanner == true ? "top-[70px] " : "top-[38px] ") + className : "block w-full bg-transparent"}`}
> >
{children} {children}
</div> </div>