muted nm-dmg tier colors, updated navbar/search/menu to follow new "brand", modified auth for features, new homepage
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
export const prerender = false;
|
||||
import Layout from '../layouts/Main.astro';
|
||||
import NavItems from '../components/NavItems.astro';
|
||||
import Search from '../components/Search.astro';
|
||||
import NavBar from '../components/NavBar.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import pokedexList from '../data/pokedex.json';
|
||||
@@ -19,12 +19,10 @@ const pokemon = pokedexList.find(p => p["#"] === randomNumber);
|
||||
const pokemonName = pokemon?.Name || "Unknown Pokémon";
|
||||
---
|
||||
<Layout title="404 - Page Not Found">
|
||||
<NavBar slot="navbar">
|
||||
<NavItems slot="navItems" />
|
||||
</NavBar>
|
||||
<div class="row mb-4" slot="page">
|
||||
<div class="container-fluid container-sm mt-4" slot="page">
|
||||
<div class="row mb-4">
|
||||
<div class="col-12 col-md-6">
|
||||
<h1 class="mb-4">404<br/>Page Not Found</h1>
|
||||
<h1 class="mb-4">404 - Page Not Found</h1>
|
||||
<h4>Sorry, the page you are looking for does not exist.</h4>
|
||||
<p class="copy-big my-4">
|
||||
Return to the <a href="/">home page</a> or search for another <a href="/pokemon">Pokémon</a>.
|
||||
@@ -67,7 +65,7 @@ const pokemonName = pokemon?.Name || "Unknown Pokémon";
|
||||
>???</h3>
|
||||
<button
|
||||
id="play-again"
|
||||
class="btn btn-primary mt-3 opacity-0 pokemon-transition"
|
||||
class="btn btn-purple mt-3 opacity-0 pokemon-transition"
|
||||
style="pointer-events: none;"
|
||||
aria-hidden="true"
|
||||
>
|
||||
@@ -76,6 +74,7 @@ const pokemonName = pokemon?.Name || "Unknown Pokémon";
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Footer slot="footer" />
|
||||
</Layout>
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
---
|
||||
export const prerender = false;
|
||||
import Layout from '../layouts/Main.astro';
|
||||
import NavItems from '../components/NavItems.astro';
|
||||
import NavBar from '../components/NavBar.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
---
|
||||
<Layout title="Contact Us">
|
||||
<NavBar slot="navbar">
|
||||
<NavItems slot="navItems" />
|
||||
</NavBar>
|
||||
<div class="row mb-4" slot="page">
|
||||
<div class="col-12">
|
||||
<h1>Contact Us</h1>
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
---
|
||||
import Layout from "../layouts/Main.astro";
|
||||
import NavBar from "../components/NavBar.astro";
|
||||
import NavItems from "../components/NavItems.astro";
|
||||
import Footer from "../components/Footer.astro";
|
||||
import FirstEditionIcon from "../components/FirstEditionIcon.astro";
|
||||
import { db } from '../db/index';
|
||||
@@ -30,9 +28,6 @@ const totalGain = summary.totalGain || 0;
|
||||
---
|
||||
|
||||
<Layout title="Inventory Dashboard">
|
||||
<NavBar slot="navbar">
|
||||
<NavItems slot="navItems" />
|
||||
</NavBar>
|
||||
|
||||
<div class="row g-0" style="min-height: calc(100vh - 120px)" slot="page">
|
||||
<aside class="col-12 col-md-2 border-end border-secondary bg-dark p-3 d-flex flex-column gap-3">
|
||||
|
||||
@@ -1,49 +1,187 @@
|
||||
---
|
||||
export const prerender = false;
|
||||
import Layout from '../layouts/Main.astro';
|
||||
import NavItems from '../components/NavItems.astro';
|
||||
import Search from '../components/Search.astro';
|
||||
import NavBar from '../components/NavBar.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import { Show, SignInButton, SignUpButton, SignOutButton } from '@clerk/astro/components'
|
||||
import { Show, SignInButton } from '@clerk/astro/components'
|
||||
import Hero from '../components/Hero.astro';
|
||||
import BackToTop from '../components/BackToTop.astro';
|
||||
import NavItems from '../components/NavItems.astro';
|
||||
---
|
||||
<Layout title="Rigid's App Thing">
|
||||
<NavBar slot="navbar">
|
||||
<NavItems slot="navItems" />
|
||||
</NavBar>
|
||||
<div class="row mb-4" slot="page">
|
||||
<div class="col-12">
|
||||
<h1>Rigid's App Thing</h1>
|
||||
<p class="text-secondary">(working title)</p>
|
||||
<Layout title="RAT - Realtime, Accurate and Transparent TCG Pricing Data" >
|
||||
<Hero slot="page" />
|
||||
<div slot="page">
|
||||
<!-- ═══════════════════════════════════════════
|
||||
SOCIAL PROOF / STATS BAR
|
||||
═══════════════════════════════════════════ -->
|
||||
<section class="stats-bar py-4 border-top border-bottom border-subtle" aria-label="Platform statistics">
|
||||
<div class="container">
|
||||
<ul class="list-unstyled d-flex flex-wrap justify-content-center justify-content-md-between gap-4 mb-0 text-center">
|
||||
<li>
|
||||
<strong class="d-block fs-4 fw-bold text-aqua">Pokémon TCG</strong>
|
||||
<span class="text-body-secondary small">EN · JP Languages</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong class="d-block fs-4 fw-bold text-aqua">All Conditions</strong>
|
||||
<span class="text-body-secondary small">NM · LP · MP · HP · DMG</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong class="d-block fs-4 fw-bold text-aqua">Real-Time</strong>
|
||||
<span class="text-body-secondary small">Accurate Market Prices</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong class="d-block fs-4 fw-bold text-aqua">100% Free</strong>
|
||||
<span class="text-body-secondary small">Pricing Features Always Free</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 mb-2">
|
||||
<h2 class="mt-3">Welcome!</h2>
|
||||
<p class="mt-2">
|
||||
You've been selected to participate in the closed beta! This single page web application is meant to elevate condition/variant data for the Pokemon TCG. In future iterations, we will add vendor inventory/collection management features, as well.
|
||||
</p>
|
||||
<p class="my-2">
|
||||
After the closed beta is complete, the app will move into a more open beta. Feel free to play "Who's that Pokémon?" with the random Pokémon generator <a href="/404">here</a>. Refresh the page to see a new Pokémon!
|
||||
</p>
|
||||
<Show when="signed-in">
|
||||
<a href="/pokemon" class="btn btn-warning mt-2">Take me to the cards</a>
|
||||
</Show>
|
||||
</section>
|
||||
<!-- ═══════════════════════════════════════════
|
||||
CORE FEATURES
|
||||
═══════════════════════════════════════════ -->
|
||||
<section class="py-6" aria-labelledby="features-heading">
|
||||
<div class="container">
|
||||
<header class="text-center mb-5">
|
||||
<h2 id="features-heading" class="h1 fw-bold">Everything you need to collect smarter</h2>
|
||||
<p class="text-body-secondary lead mt-2">Built by collectors, for collectors. No fluff.</p>
|
||||
</header>
|
||||
|
||||
<div class="row g-4">
|
||||
|
||||
<article class="col-md-5 offset-md-1">
|
||||
<div class="feature-card h-100 p-4 rounded-3">
|
||||
<div class="feature-icon mb-3" aria-hidden="true">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="currentColor" viewBox="0 0 16 16"><path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/></svg>
|
||||
</div>
|
||||
<h3 class="h5 fw-semibold mb-2">Complete Card Database</h3>
|
||||
<p class="text-body-secondary mb-0">Search across every English and Japanese set. Find any card instantly with the condition-by-condition pricing you need to buy, sell, or trade with confidence.</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="col-md-5">
|
||||
<div class="feature-card h-100 p-4 rounded-3">
|
||||
<div class="feature-icon mb-3" aria-hidden="true">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="currentColor" viewBox="0 0 16 16"><path d="M0 0h1v15h15v1H0zm14.817 3.113a.5.5 0 0 1 .07.704l-4.5 5.5a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61 4.15-5.073a.5.5 0 0 1 .704-.07"/></svg>
|
||||
</div>
|
||||
<h3 class="h5 fw-semibold mb-2">Condition-Graded Pricing</h3>
|
||||
<p class="text-body-secondary mb-0">NM, LP, MP, HP, and DMG prices displayed side by side. Stop guessing what a played card is worth — see every tier at once so you never undersell or overpay.</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="col-md-5 offset-md-1">
|
||||
<div class="feature-card h-100 p-4 rounded-3">
|
||||
<div class="feature-icon mb-3" aria-hidden="true">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="currentColor" viewBox="0 0 16 16"><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2"/></svg>
|
||||
</div>
|
||||
<h3 class="h5 fw-semibold mb-2">All Variants</h3>
|
||||
<p class="text-body-secondary mb-0">We display every card variant separately—no stacking—so you can see true edition-level prices, trends, and rarity at a glance..</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="col-md-5">
|
||||
<div class="feature-card h-100 p-4 rounded-3">
|
||||
<div class="feature-icon mb-3" aria-hidden="true">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="currentColor" viewBox="0 0 16 16"><path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z"/><path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0"/></svg>
|
||||
</div>
|
||||
<h3 class="h5 fw-semibold mb-2">Fast Search, Instant Results</h3>
|
||||
<p class="text-body-secondary mb-0">Type a card name + number or search by eras like "e-reader" or "SWSH". Powerful filters let you drill into exactly the set, variant, rarity or card type you care about.</p>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 d-flex justify-content-end align-items-start mt-3">
|
||||
<div class="d-flex gap-3">
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════════════════════════
|
||||
UPCOMING PREMIUM / CTA TEASER
|
||||
═══════════════════════════════════════════ -->
|
||||
<section class="premium-section py-6" aria-labelledby="premium-heading">
|
||||
<div class="container">
|
||||
<div class="row align-items-center g-5">
|
||||
|
||||
<div class="col-lg-5">
|
||||
<p class="eyebrow text-purple-light mb-3">Coming Soon · Premium</p>
|
||||
<h2 id="premium-heading" class="h1 fw-bold mb-3">
|
||||
<span class="text-gradient">Your collection,<br/>fully managed.</span>
|
||||
</h2>
|
||||
<p class="text-body-secondary lead mb-4">
|
||||
We're building a suite of inventory and curation tools for serious collectors. Sign up free today and be first in line when they launch.
|
||||
</p>
|
||||
<Show when="signed-out">
|
||||
<SignInButton asChild mode="modal">
|
||||
<button class="btn btn-success">Sign In</button>
|
||||
</SignInButton>
|
||||
<SignUpButton asChild mode="modal">
|
||||
<button class="btn btn-dark">Request Access</button>
|
||||
</SignUpButton>
|
||||
</Show>
|
||||
<Show when="signed-in">
|
||||
<SignOutButton asChild>
|
||||
<button class="btn btn-danger">Sign Out</button>
|
||||
</SignOutButton>
|
||||
<SignInButton asChild mode="modal">
|
||||
<button class="btn btn-purple btn-lg px-4">
|
||||
Join Now! — It's Free
|
||||
</button>
|
||||
</SignInButton>
|
||||
</Show>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-7">
|
||||
<div class="premium-list">
|
||||
|
||||
<div class="premium-item p-4 rounded-3 mb-3">
|
||||
<div class="d-flex align-items-start gap-3">
|
||||
<span class="badge-coming">Coming Soon</span>
|
||||
<div>
|
||||
<h3 class="h6 fw-semibold mb-1">Collection Portfolio Tracker</h3>
|
||||
<p class="text-body-secondary small mb-0">Add cards you own with their condition and purchase price. Watch your total collection value update in real time as market prices shift — so you always know your net position.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="premium-item p-4 rounded-3 mb-3">
|
||||
<div class="d-flex align-items-start gap-3">
|
||||
<span class="badge-coming">Coming Soon</span>
|
||||
<div>
|
||||
<h3 class="h6 fw-semibold mb-1">Latest Sales Aggregation</h3>
|
||||
<p class="text-body-secondary small mb-0">See recent sale prices across different trusted marketplaces, including TCGPlayer and eBay. Make informed purchases based on real-time market activity, not just Market Price.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="premium-item p-4 rounded-3">
|
||||
<div class="d-flex align-items-start gap-3">
|
||||
<span class="badge-coming">Coming Soon</span>
|
||||
<div>
|
||||
<h3 class="h6 fw-semibold mb-1">Graded Card Inventory</h3>
|
||||
<p class="text-body-secondary small mb-0">Log PSA, BGS, and CGC slabs with their cert numbers, grades, and current values. Track your graded portfolio separately from your raw collection.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<!-- ═══════════════════════════════════════════
|
||||
FINAL CTA
|
||||
═══════════════════════════════════════════ -->
|
||||
<section class="cta-section py-6" aria-labelledby="cta-heading">
|
||||
<div class="hero-bg" aria-hidden="true"></div>
|
||||
<div class="container text-center">
|
||||
<h2 id="cta-heading" class="display-5 fw-bold mb-3">Ready to join the RAT Pack?</h2>
|
||||
<p class="lead text-body-secondary mb-4 mx-auto" style="max-width: 520px;">
|
||||
Join free today. Browse every card, track prices across conditions, and get early access to premium collection tools as we build them.
|
||||
</p>
|
||||
<div class="d-flex flex-wrap justify-content-center gap-3">
|
||||
<Show when="signed-out">
|
||||
<SignInButton asChild mode="modal">
|
||||
<button class="btn btn-purple btn-lg px-5">
|
||||
Create Free Account
|
||||
</button>
|
||||
</SignInButton>
|
||||
</Show>
|
||||
<a href="/pokemon" class="btn btn-outline-light btn-lg px-5">Browse Cards First</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<BackToTop />
|
||||
</div>
|
||||
|
||||
<Footer slot="footer" />
|
||||
</Layout>
|
||||
</Layout>
|
||||
|
||||
@@ -280,7 +280,7 @@ const altSearchUrl = (card: any) => {
|
||||
<div class="d-flex flex-column gap-1">
|
||||
|
||||
<!-- Stat cards -->
|
||||
<div class="d-flex flex-fill flex-row gap-1">
|
||||
<div class="d-flex flex-fill flex-row gap-1 flex-wrap flex-lg-nowrap">
|
||||
<div class="alert alert-dark rounded p-2 flex-fill d-flex flex-column mb-0">
|
||||
<h6 class="mb-auto">Market Price</h6>
|
||||
<p class="mb-0 mt-1">${price.marketPrice}</p>
|
||||
|
||||
@@ -215,9 +215,9 @@ const facets = searchResults.results.slice(1).map((result: any) => {
|
||||
</div>
|
||||
<span id="sortLabel" class="ms-1 text-secondary small">{sortKey ? ({"releaseDate:desc,number:asc":"Set: Newest to Oldest","releaseDate:asc,number:asc":"Set: Oldest to Newest","marketPrice:desc":"Price: High to Low","marketPrice:asc":"Price: Low to High","number:asc":"Card Number: Ascending","number:desc":"Card Number: Descending"}[sortKey] ?? '') : ''}</span>
|
||||
<div class="btn-group btn-group-sm ms-2 flex-shrink-0" role="group" aria-label="Language filter">
|
||||
<button type="button" class={`btn btn-dark language-btn${language === 'all' ? ' active' : ''}`} data-lang="all">All</button>
|
||||
<button type="button" class={`btn btn-dark language-btn${language === 'en' ? ' active' : ''}`} data-lang="en">EN</button>
|
||||
<button type="button" class={`btn btn-dark language-btn${language === 'jp' ? ' active' : ''}`} data-lang="jp">JP</button>
|
||||
<button type="button" class={`btn btn-outline-secondary language-btn${language === 'all' ? ' active' : ''}`} data-lang="all">All</button>
|
||||
<button type="button" class={`btn btn-outline-secondary language-btn${language === 'en' ? ' active' : ''}`} data-lang="en">EN</button>
|
||||
<button type="button" class={`btn btn-outline-secondary language-btn${language === 'jp' ? ' active' : ''}`} data-lang="jp">JP</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="totalResults" class="d-flex text-secondary small d-none align-items-center" hx-swap-oob="true">
|
||||
@@ -287,8 +287,8 @@ const facets = searchResults.results.slice(1).map((result: any) => {
|
||||
{pokemon.map((card:any) => (
|
||||
<div class="col">
|
||||
{canAddInventory && (
|
||||
<button type="button" class="btn btn-sm inventory-button position-relative float-end shadow-filter text-center p-2" data-card-id={card.cardId} hx-get={`/partials/card-modal?cardId=${card.cardId}`} hx-target="#cardModal" hx-trigger="click" data-bs-toggle="modal" data-bs-target="#cardModal" onclick="event.stopPropagation(); sessionStorage.setItem('openModalTab', 'nav-vendor');">
|
||||
<b>+/–</b>
|
||||
<button type="button" class="btn btn-sm inventory-button position-relative float-end shadow-filter text-center p-2 fw-bold" data-card-id={card.cardId} hx-get={`/partials/card-modal?cardId=${card.cardId}`} hx-target="#cardModal" hx-trigger="click" data-bs-toggle="modal" data-bs-target="#cardModal" onclick="event.stopPropagation(); sessionStorage.setItem('openModalTab', 'nav-vendor');">
|
||||
+/–
|
||||
</button>
|
||||
)}
|
||||
<div class="card-trigger position-relative" data-card-id={card.cardId} hx-get={`/partials/card-modal?cardId=${card.cardId}`} hx-target="#cardModal" hx-trigger="click" data-bs-toggle="modal" data-bs-target="#cardModal" onclick="const cardTitle = this.querySelector('#cardImage').getAttribute('alt'); dataLayer.push({'event': 'virtualPageview', 'pageUrl': this.getAttribute('hx-get'), 'pageTitle': cardTitle, 'previousUrl': '/pokemon'});">
|
||||
@@ -305,13 +305,13 @@ const facets = searchResults.results.slice(1).map((result: any) => {
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div class="h5 my-0">{card.productName}</div>
|
||||
<div class="fs-5 fw-semibold my-0">{card.productName}</div>
|
||||
<div class="d-flex flex-row lh-1 mt-1 justify-content-between">
|
||||
<div class="text-secondary flex-grow-1 d-none d-lg-flex">{card.setName}</div>
|
||||
<div class="text-body-tertiary">{card.number}</div>
|
||||
<div class="text-body-tertiary flex-grow-1 d-none d-lg-flex fst-normal">{card.setName}</div>
|
||||
<div class="text-body-tertiary fst-normal">{card.number}</div>
|
||||
<span class="ps-2 small-icon"><RarityIcon rarity={card.rarityName} /></span>
|
||||
</div>
|
||||
<div class="text-body-tertiary">{card.variant}</div><span class="d-none">{card.productId}</span>
|
||||
<div class="text-secondary fst-italic">{card.variant}</div><span class="d-none">{card.productId}</span>
|
||||
</div>
|
||||
|
||||
))}
|
||||
|
||||
@@ -84,17 +84,17 @@ console.log(`totalHits: ${totalHits}`);
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex flex-row justify-content-between my-1 align-items-center">
|
||||
<input type="number" class="form-control text-center" style="max-width: 50%;" value="1" min="1" max="999" aria-label="Quantity input" aria-describedby="button-minus button-plus">
|
||||
<input type="number" class="form-control text-center" style="max-width: 33%;" value="1" min="1" max="999" aria-label="Quantity input" aria-describedby="button-minus button-plus">
|
||||
<div class="" aria-label="Edit controls">
|
||||
<button type="button" class="btn btn-outline-warning btn-sm"><svg class="edit-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M100.4 417.2C104.5 402.6 112.2 389.3 123 378.5L304.2 197.3L338.1 163.4C354.7 180 389.4 214.7 442.1 267.4L476 301.3L442.1 335.2L260.9 516.4C250.2 527.1 236.8 534.9 222.2 539L94.4 574.6C86.1 576.9 77.1 574.6 71 568.4C64.9 562.2 62.6 553.3 64.9 545L100.4 417.2zM156 413.5C151.6 418.2 148.4 423.9 146.7 430.1L122.6 517L209.5 492.9C215.9 491.1 221.7 487.8 226.5 483.2L155.9 413.5zM510 267.4C493.4 250.8 458.7 216.1 406 163.4L372 129.5C398.5 103 413.4 88.1 416.9 84.6C430.4 71 448.8 63.4 468 63.4C487.2 63.4 505.6 71 519.1 84.6L554.8 120.3C568.4 133.9 576 152.3 576 171.4C576 190.5 568.4 209 554.8 222.5C551.3 226 536.4 240.9 509.9 267.4z"/></svg></button>
|
||||
<button type="button" class="btn btn-outline-danger btn-sm"><svg class="delete-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M232.7 69.9L224 96L128 96C110.3 96 96 110.3 96 128C96 145.7 110.3 160 128 160L512 160C529.7 160 544 145.7 544 128C544 110.3 529.7 96 512 96L416 96L407.3 69.9C402.9 56.8 390.7 48 376.9 48L263.1 48C249.3 48 237.1 56.8 232.7 69.9zM512 208L128 208L149.1 531.1C150.7 556.4 171.7 576 197 576L443 576C468.3 576 489.3 556.4 490.9 531.1L512 208z"/></svg></button>
|
||||
<button type="button" class="btn btn-outline-warning me-2"><svg class="edit-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M100.4 417.2C104.5 402.6 112.2 389.3 123 378.5L304.2 197.3L338.1 163.4C354.7 180 389.4 214.7 442.1 267.4L476 301.3L442.1 335.2L260.9 516.4C250.2 527.1 236.8 534.9 222.2 539L94.4 574.6C86.1 576.9 77.1 574.6 71 568.4C64.9 562.2 62.6 553.3 64.9 545L100.4 417.2zM156 413.5C151.6 418.2 148.4 423.9 146.7 430.1L122.6 517L209.5 492.9C215.9 491.1 221.7 487.8 226.5 483.2L155.9 413.5zM510 267.4C493.4 250.8 458.7 216.1 406 163.4L372 129.5C398.5 103 413.4 88.1 416.9 84.6C430.4 71 448.8 63.4 468 63.4C487.2 63.4 505.6 71 519.1 84.6L554.8 120.3C568.4 133.9 576 152.3 576 171.4C576 190.5 568.4 209 554.8 222.5C551.3 226 536.4 240.9 509.9 267.4z"/></svg></button>
|
||||
<button type="button" class="btn btn-outline-danger"><svg class="delete-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M232.7 69.9L224 96L128 96C110.3 96 96 110.3 96 128C96 145.7 110.3 160 128 160L512 160C529.7 160 544 145.7 544 128C544 110.3 529.7 96 512 96L416 96L407.3 69.9C402.9 56.8 390.7 48 376.9 48L263.1 48C249.3 48 237.1 56.8 232.7 69.9zM512 208L128 208L149.1 531.1C150.7 556.4 171.7 576 197 576L443 576C468.3 576 489.3 556.4 490.9 531.1L512 208z"/></svg></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex flex-row mt-1">
|
||||
<div class="p small text-secondary">{card.setName}</div>
|
||||
<div class="p fs-7 text-body-tertiary">{card.setName}</div>
|
||||
</div>
|
||||
<div class="d-flex flex-row mt-1">
|
||||
<div class="h5">{card.productName}</div>
|
||||
<div class="fs-6 fw-semibold my-0">{card.productName}</div>
|
||||
</div>
|
||||
<div class="d-flex flex-row mt-1 justify-content-between align-items-baseline">
|
||||
<div class={`inv-grid-trend small ${isGain ? "up" : "down"}`}>
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
---
|
||||
export const prerender = false;
|
||||
import Layout from '../layouts/Main.astro';
|
||||
import Search from '../components/Search.astro';
|
||||
import CardGrid from "../components/CardGrid.astro";
|
||||
import NavBar from '../components/NavBar.astro';
|
||||
---
|
||||
|
||||
<Layout title="Card Search">
|
||||
<NavBar slot="navbar">
|
||||
<Search slot="searchInput" />
|
||||
</NavBar>
|
||||
<CardGrid slot="page" />
|
||||
<CardGrid slot="page"/>
|
||||
</Layout>
|
||||
24
src/pages/privacy.astro
Normal file
24
src/pages/privacy.astro
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
export const prerender = false;
|
||||
import Footer from '../components/Footer.astro';
|
||||
import Layout from '../layouts/Main.astro';
|
||||
---
|
||||
<Layout title="Terms and Privacy" >
|
||||
<div class="container-fluid container-sm my-5" slot="page">
|
||||
<section class="legal-info p-6 bg-gray-50 text-gray-800 rounded-md space-y-3">
|
||||
<h2 class="text-xl font-semibold">Privacy & Terms</h2>
|
||||
|
||||
<p>
|
||||
By signing in with your Google account, you agree to the following Terms of Service and Privacy Policy:
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Terms of Service:</strong> You may use our services only as permitted by law. Your account is for personal use and must be kept secure. We reserve the right to modify or discontinue services at any time. Misuse of the service may result in account suspension.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Privacy Policy:</strong> We use Clerk.js to handle authentication, ensuring that your Google account information is securely processed. We do not store your Google password. Personal data is only used to provide and improve our services. We do not sell your information to third parties. You have the right to access, correct, or delete your data by contacting us.
|
||||
</p>
|
||||
</div>
|
||||
<Footer slot="footer" />
|
||||
</Layout>
|
||||
Reference in New Issue
Block a user