diff --git a/.github/workflows/reset-test-branch.yml b/.github/workflows/reset-test-branch.yml
new file mode 100644
index 00000000..67223f6c
--- /dev/null
+++ b/.github/workflows/reset-test-branch.yml
@@ -0,0 +1,44 @@
+name: Weekly Reset Test Branch
+
+on:
+ #schedule:
+ # Runs every Sunday at 08:00 UTC (adjust as needed)
+ # Cron syntax: minute hour day(month) month day(week)
+ # - cron: "0 8 * * 0"
+ workflow_dispatch: # Allows manual triggering from the Actions tab
+
+jobs:
+ reset_branch:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v4
+ with:
+ # Fetch all history so we can reset to main correctly
+ fetch-depth: 0
+ # Make sure the token has write permissions
+ persist-credentials: true
+
+ - name: Configure Git User
+ run: |
+ git config user.name github-actions[bot]
+ git config user.email github-actions[bot]@users.noreply.github.com
+
+ - name: Reset Test Branch to Main
+ run: |
+ # Ensure main is up-to-date locally
+ git checkout main
+ git pull origin main
+
+ # Check out the test branch, or create it if it doesn't exist
+ git checkout test || git checkout -b test
+
+ # Reset test branch to the state of origin/main
+ echo "Resetting test branch to origin/main..."
+ git reset --hard origin/main
+
+ # Force push the reset state to the remote test branch
+ echo "Force pushing changes to test branch..."
+ git push origin test --force
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/README.md b/README.md
index 56b97493..41eba0e7 100644
--- a/README.md
+++ b/README.md
@@ -33,9 +33,9 @@ Open [http://localhost:3000](http://localhost:3000) in your browser to view the
You can modify the main content of the site by editing the following files:
-- pages/index.tsx: The main landing page of the website.
+- app/pages.tsx: The main landing page of the website.
-- pages/\_app.js: The layout file for shared elements like headers or footers.
+- app/layout.tsx: The layout file for shared elements like headers or footers.
The project auto-updates changes as you edit.
diff --git a/app/about/page.tsx b/app/about/page.tsx
index 63a53ff4..2ff707af 100644
--- a/app/about/page.tsx
+++ b/app/about/page.tsx
@@ -1,6 +1,8 @@
import { Container, Row, Col } from "react-bootstrap";
import type { Metadata } from "next";
-//Helpers
+// --- Layout ---
+import PageLayout from "@/components/PageLayout";
+// --- Helpers ---
import { generateGithubLink } from "@/helpers/_silabs/generateGithubLink";
export const metadata: Metadata = {
@@ -14,103 +16,108 @@ export default function AboutPage() {
{ template: "feature-request-template.md" }
);
return (
- About section About section
+ Even though this site is made primarily by{" "}
+ OneBuffaloLabs{" "}
+ we did leverage alot of other tech and sources to help bring
+ this site to you:
+
- Even though this site is made primarily by{" "}
- OneBuffaloLabs we
- did leverage alot of other tech and sources to help bring this
- site to you:
+ Have you found a bug, an error or just havea cool feature we
+ should add to the site? Create a ticket on our Github{" "}
+
+ here
+ {" "}
+ and we will look into it!
- Have you found a bug, an error or just havea cool feature we should
- add to the site? Create a ticket on our Github{" "}
-
- here
- {" "}
- and we will look into it!
- Loading Form... Loading Form...
- About {process.env.NEXT_PUBLIC_APP_NAME}
-
- Tech used to build this site
-
-
- Non tech used to build this site
-
+ About {process.env.NEXT_PUBLIC_APP_NAME}
+
+ Tech used to build this site
+
+
+ Non tech used to build this site
+
+
+ Contact Us
-
- Contact Us
- Feedback
- Feedback
+
- Sorry, the page you are looking for does not exist or might have - been moved. If it has moved recently, you might be redirected - shortly. -
- - - -+ Sorry, the page you are looking for does not exist or might have + been moved. If it has moved recently, you might be redirected + shortly. +
+ + + +- Your ultimate destination for exploring the vast world of Pokémon! -
-- Built with cutting-edge web technologies including{" "} - React, Next.js, and{" "} - Bootstrap, NéxtDex offers a fast, responsive, and - visually appealing experience for trainers of all levels. Dive into - our comprehensive Pokédex section to search, - filter, and learn intricate details about every known{" "} - Pokémon. Beyond the Pokédex, NéxtDex is designed to - be an ever-expanding resource, featuring in-depth information on{" "} - Pokémon games, regions, items, characters, and much - more. Prepare to enhance your Pokémon knowledge - with a sleek interface and a wealth of data right at your - fingertips! -
- -+ Your ultimate destination for exploring the vast world of Pokémon! +
++ Built with cutting-edge web technologies including{" "} + React, Next.js, and{" "} + Bootstrap, NéxtDex offers a fast, responsive, and + visually appealing experience for trainers of all levels. Dive + into our comprehensive Pokédex section to search, + filter, and learn intricate details about every known{" "} + Pokémon. Beyond the Pokédex, NéxtDex is designed + to be an ever-expanding resource, featuring in-depth information + on Pokémon games, regions, items, characters, and + much more. Prepare to enhance your Pokémon{" "} + knowledge with a sleek interface and a wealth of data right at + your fingertips! +
+ +- This Privacy Policy governs the manner in which Techreanimate - collects, uses, maintains and discloses information collected - from users (each, a "User") of the{" "} - - {appUrl} - {" "} - website ("Site"). This privacy policy applies to the - Site and all products and services offered by Techreanimate. -
- -- We collect information from you when you register on our - site, place an order, subscribe to our newsletter, respond - to a survey or fill out a form. -
-- When ordering or registering on our site, as appropriate, - you may be asked to enter your: name, e-mail address, - mailing address, phone number or other details. You may, - however, visit our site anonymously. +
+ This Privacy Policy governs the manner in which + Techreanimate collects, uses, maintains and discloses + information collected from users (each, a "User") + of the{" "} + + {appUrl} + {" "} + website ("Site"). This privacy policy applies to + the Site and all products and services offered by + Techreanimate.
-- Any of the information we collect from you may be used in - one of the following ways: -
-+ We collect information from you when you register on our + site, place an order, subscribe to our newsletter, respond + to a survey or fill out a form. +
++ When ordering or registering on our site, as appropriate, + you may be asked to enter your: name, e-mail address, + mailing address, phone number or other details. You may, + however, visit our site anonymously. +
+- We implement a variety of security measures to maintain the - safety of your personal information when you place an order - or enter, submit, or access your personal information. -
-- We may offer the use of a secure server. All supplied - sensitive/credit information is transmitted via Secure - Socket Layer (SSL) technology and then encrypted into our - Payment gateway provider's database only to be - accessible by those authorized with special access rights to - such systems, and are required to keep the information - confidential. -
-- After a transaction, your private information (credit cards, - social security numbers, financials, etc.) may not be stored - on our servers. -
-+ Any of the information we collect from you may be used in + one of the following ways: +
+- Yes. Cookies are small files that a site or its service - provider transfers to your computer's hard drive - through your Web browser (if you allow) that enables the - site's or service provider's systems to recognize - your browser and capture and remember certain information. -
-- We use cookies to understand and save your preferences for - future visits and compile aggregate data about site traffic - and site interaction so that we can offer better site - experiences and tools in the future. -
-+ We implement a variety of security measures to maintain + the safety of your personal information when you place an + order or enter, submit, or access your personal + information. +
++ We may offer the use of a secure server. All supplied + sensitive/credit information is transmitted via Secure + Socket Layer (SSL) technology and then encrypted into our + Payment gateway provider's database only to be + accessible by those authorized with special access rights + to such systems, and are required to keep the information + confidential. +
++ After a transaction, your private information (credit + cards, social security numbers, financials, etc.) may not + be stored on our servers. +
+- We do not sell, trade, or otherwise transfer to outside - parties your personally identifiable information. This does - not include trusted third parties who assist us in operating - our website, conducting our business, or servicing you, so - long as those parties agree to keep this information - confidential. We may also release your information when we - believe release is appropriate to comply with the law, - enforce our site policies, or protect ours or others rights, - property, or safety. However, non-personally identifiable - visitor information may be provided to other parties for - marketing, advertising, or other uses. -
-+ Yes. Cookies are small files that a site or its service + provider transfers to your computer's hard drive + through your Web browser (if you allow) that enables the + site's or service provider's systems to + recognize your browser and capture and remember certain + information. +
++ We use cookies to understand and save your preferences for + future visits and compile aggregate data about site + traffic and site interaction so that we can offer better + site experiences and tools in the future. +
+- Occasionally, at our discretion, we may include or offer - third party products or services on our website. These third - party sites have separate and independent privacy policies. - We therefore have no responsibility or liability for the - content and activities of these linked sites. Nonetheless, - we seek to protect the integrity of our site and welcome any - feedback about these sites. -
-+ We do not sell, trade, or otherwise transfer to outside + parties your personally identifiable information. This + does not include trusted third parties who assist us in + operating our website, conducting our business, or + servicing you, so long as those parties agree to keep this + information confidential. We may also release your + information when we believe release is appropriate to + comply with the law, enforce our site policies, or protect + ours or others rights, property, or safety. However, + non-personally identifiable visitor information may be + provided to other parties for marketing, advertising, or + other uses. +
+- Because we value your privacy we have taken the necessary - precautions to be in compliance with the California Online - Privacy Protection Act. We therefore will not distribute - your personal information to outside parties without your - consent. -
-+ Occasionally, at our discretion, we may include or offer + third party products or services on our website. These + third party sites have separate and independent privacy + policies. We therefore have no responsibility or liability + for the content and activities of these linked sites. + Nonetheless, we seek to protect the integrity of our site + and welcome any feedback about these sites. +
+- We are in compliance with the requirements of COPPA - (Childrens Online Privacy Protection Act), we do not - knowingly collect any information from anyone under 13 years - of age. Our website, products and services are all directed - to people who are at least 13 years old or older. -
-+ Because we value your privacy we have taken the necessary + precautions to be in compliance with the California Online + Privacy Protection Act. We therefore will not distribute + your personal information to outside parties without your + consent. +
+- This online privacy policy applies only to information - collected through our website and not to information - collected offline. -
-+ We are in compliance with the requirements of COPPA + (Childrens Online Privacy Protection Act), we do not + knowingly collect any information from anyone under 13 + years of age. Our website, products and services are all + directed to people who are at least 13 years old or older. +
+- Please also visit our Terms and Conditions section - establishing the use, disclaimers, and limitations of - liability governing the use of our website at{" "} - Terms and Conditions. -
-+ This online privacy policy applies only to information + collected through our website and not to information + collected offline. +
+- By using our site, you consent to our website's privacy - policy. -
-+ Please also visit our Terms and Conditions section + establishing the use, disclaimers, and limitations of + liability governing the use of our website at{" "} + Terms and Conditions. +
+- If we decide to change our privacy policy, we will post - those changes on this page. Policy changes will apply only - to information collected after the date of the change. -
-- This policy was last modified on October 26, 2013 4:17PM EST -
-+ By using our site, you consent to our website's + privacy policy. +
+- If there are any questions regarding this privacy policy you - may contact us. -
- - P: 716-698-9236 - -+ If we decide to change our privacy policy, we will post + those changes on this page. Policy changes will apply only + to information collected after the date of the change. +
++ This policy was last modified on October 26, 2013 4:17PM + EST +
++ If there are any questions regarding this privacy policy + you may contact us. +
+ + P: 716-698-9236 + +- By accessing this web site, you are agreeing to be bound - by these web site Terms and Conditions of Use, all - applicable laws and regulations, and agree that you are - responsible for compliance with any applicable local laws. - If you do not agree with any of these terms, you are - prohibited from using or accessing this site. The - materials contained in this web site are protected by - applicable copyright and trade mark law. -
-+ By accessing this web site, you are agreeing to be bound + by these web site Terms and Conditions of Use, all + applicable laws and regulations, and agree that you are + responsible for compliance with any applicable local + laws. If you do not agree with any of these terms, you + are prohibited from using or accessing this site. The + materials contained in this web site are protected by + applicable copyright and trade mark law. +
+- In no event shall Techreanimate or its suppliers be liable - for any damages (including, without limitation, damages - for loss of data or profit, or due to business - interruption,) arising out of the use or inability to use - the materials on Techreanimate's Internet site, even - if Techreanimate or a Techreanimate authorized - representative has been notified orally or in writing of - the possibility of such damage. Because some jurisdictions - do not allow limitations on implied warranties, or - limitations of liability for consequential or incidental - damages, these limitations may not apply to you. -
-+ In no event shall Techreanimate or its suppliers be + liable for any damages (including, without limitation, + damages for loss of data or profit, or due to business + interruption,) arising out of the use or inability to + use the materials on Techreanimate's Internet site, + even if Techreanimate or a Techreanimate authorized + representative has been notified orally or in writing of + the possibility of such damage. Because some + jurisdictions do not allow limitations on implied + warranties, or limitations of liability for + consequential or incidental damages, these limitations + may not apply to you. +
+- The materials appearing on Techreanimate's web site - could include technical, typographical, or photographic - errors. Techreanimate does not warrant that any of the - materials on its web site are accurate, complete, or - current. Techreanimate may make changes to the materials - contained on its web site at any time without notice. - Techreanimate does not, however, make any commitment to - update the materials. -
-+ The materials appearing on Techreanimate's web site + could include technical, typographical, or photographic + errors. Techreanimate does not warrant that any of the + materials on its web site are accurate, complete, or + current. Techreanimate may make changes to the materials + contained on its web site at any time without notice. + Techreanimate does not, however, make any commitment to + update the materials. +
+- Techreanimate has not reviewed all of the sites linked to - its Internet web site and is not responsible for the - contents of any such linked site. The inclusion of any - link does not imply endorsement by Techreanimate of the - site. Use of any such linked web site is at the - user's own risk. -
-+ Techreanimate has not reviewed all of the sites linked + to its Internet web site and is not responsible for the + contents of any such linked site. The inclusion of any + link does not imply endorsement by Techreanimate of the + site. Use of any such linked web site is at the + user's own risk. +
+- Techreanimate may revise these terms of use for its web - site at any time without notice. By using this web site - you are agreeing to be bound by the then current version - of these Terms and Conditions of Use. -
-+ Techreanimate may revise these terms of use for its web + site at any time without notice. By using this web site + you are agreeing to be bound by the then current version + of these Terms and Conditions of Use. +
+- Any claim relating to Techreanimate's web site shall - be governed by the laws of the State of New York without - regard to its conflict of law provisions. -
-- General Terms and Conditions applicable to Use of a Web - Site. -
-+ Any claim relating to Techreanimate's web site + shall be governed by the laws of the State of New York + without regard to its conflict of law provisions. +
++ General Terms and Conditions applicable to Use of a Web + Site. +
+- Your privacy is very important to us. Accordingly, we have - developed this Policy in order for you to understand how - we collect, use, communicate and disclose and make use of - personal information. The following outlines our privacy - policy. -
-- We are committed to conducting our business in accordance - with these principles in order to ensure that the - confidentiality of personal information is protected and - maintained. -
-+ Your privacy is very important to us. Accordingly, we + have developed this Policy in order for you to + understand how we collect, use, communicate and disclose + and make use of personal information. The following + outlines our privacy policy. +
++ We are committed to conducting our business in + accordance with these principles in order to ensure that + the confidentiality of personal information is protected + and maintained. +
+- This document was last updated on October 26, 2013 4:17PM - EST -
-+ This document was last updated on October 26, 2013 4:17PM + EST +
+This Pokédex is from the{" "} - + {capitalizeFirstLetter(apiData.region.name)} {" "} region. @@ -109,8 +108,10 @@ function PokedexClientSection() { <>
diff --git a/components/pages/PokemonGenerationClientSection.tsx b/components/pages/PokemonGenerationClientSection.tsx
new file mode 100644
index 00000000..beac6e4a
--- /dev/null
+++ b/components/pages/PokemonGenerationClientSection.tsx
@@ -0,0 +1,246 @@
+"use client";
+
+import React, { useState, useEffect, Suspense } from "react";
+import { Container, Row, Col, Spinner } from "react-bootstrap";
+// --- Next ---
+import Link from "next/link";
+import { useRouter, useSearchParams } from "next/navigation";
+// --- Components ---
+import { GameClient, Generation } from "pokenode-ts";
+import LanguageTable from "@/components/pokemon/LanguageTable";
+import SclBadge from "@/components/_silabs/SclBadge";
+import PokemonGrid from "@/components/pokemon/PokemonGrid";
+import MoveList from "@/components/pokemon/MoveList";
+// --- Helpers ---
+import { capitalizeFirstLetter } from "@/helpers/_silabs/capitalizeFirstLetter";
+import { createNamedAPIResourceSentence } from "@/helpers/createNamedAPIResourceSentence";
+
+export default function PokemonGenerationClientSectionWrapper() {
+ return (
+
+ Could not load Pokémon Generation data. The requested Pokémon + Generation might not exist or there was an error. +
+ Go back to homepage +This is the description
++ The main region for {formattedName} is{" "} + + {apiData.main_region.name} + + . +
+ ) : ( +There is no main region data for this region
+ )} + {apiData.version_groups && apiData.version_groups.length > 0 && ( + <> +Pokémon
+ + )} + {apiData?.types && ( +Pokémon Types
+ + )} + {apiData?.moves && ( +Moves
+ + )} + {apiData?.abilities && ( +Abilities
+ + )} ++ No abilities were introduced in this generation +
+ )} + > + )} +Loading Pokémon Generation Data...
+This is the description
The main generation for {formattedName} is{" "} @@ -107,8 +107,10 @@ function PokemonRegionClientSection() { <>
{typeData?.description}
+{typeData?.description ?? "No description available"}
{apiData?.damage_relations && ( <>{`${formattedName} type Pokémon`}
+{`${formattedName} Pokémon`}
)} {apiData?.moves && ( @@ -195,9 +193,9 @@ function PokemonTypeClientSection() {No moves available.
+No moves available.
No Pokémon entries to display.
-{emptyString}
; + } + + return ( +
+ {initialString}{" "}
+ {values.map((item, index) => {
+ const linkHref = `${link}?name=${item.name}`;
+
+ const groupLink = (
+
+ {item.name}
+
+ );
+
+ const separator: string | null = getSentenceSeperator(index, numGroups);
+
+ return (
+
The {baseName} is not associated with any specific version groups.
- ); - } - - return ( -
- The {baseName} is associated with the version groups:{" "}
- {values.map((versionGroup, index) => {
- const linkHref = `/pokemon/game?name=${versionGroup.name}`;
-
- const groupLink = (
-
- {versionGroup.name}
-
- );
-
- const separator: string | null = getSentenceSeperator(index, numGroups);
-
- return (
-