update props

This commit is contained in:
lwb 2026-01-27 20:04:10 +01:00
parent 853af548d3
commit 11cfc3c8f0
15 changed files with 43 additions and 24 deletions

View File

@ -1,3 +1,4 @@
import React from "react";
import { Link } from "react-router"; import { Link } from "react-router";
import { nameShorten } from "../utils/string-helper"; import { nameShorten } from "../utils/string-helper";
import { ICoinMarketData } from "../utils/interfaces"; import { ICoinMarketData } from "../utils/interfaces";
@ -6,7 +7,7 @@ interface ICoin {
coin: ICoinMarketData; coin: ICoinMarketData;
} }
const CoinCard = ({ coin }: ICoin) => { const CoinCard: React.FC<ICoin> = ({ coin }) => {
return ( return (
<Link to={`/coin/${coin.id}`} > <Link to={`/coin/${coin.id}`} >

View File

@ -1,4 +1,4 @@
import { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import { Line } from "react-chartjs-2"; import { Line } from "react-chartjs-2";
import { import {
Chart as ChartJS, Chart as ChartJS,
@ -24,7 +24,7 @@ ChartJS.register(
TimeScale TimeScale
); );
interface IProp { interface ICoinChartProps {
coinId: string; coinId: string;
} }
@ -48,7 +48,7 @@ interface IChartData {
datasets: IDataSet[], datasets: IDataSet[],
} }
const CoinChart = ({ coinId }: IProp) => { const CoinChart: React.FC<ICoinChartProps> = ({ coinId }) => {
const [chartData, setChartData] = useState<IChartData | null>(null); const [chartData, setChartData] = useState<IChartData | null>(null);

View File

@ -1,10 +1,11 @@
import React from "react";
import { ICoinInfo } from "../utils/interfaces"; import { ICoinInfo } from "../utils/interfaces";
interface ICoinInfoProps { interface ICoinInfoProps {
coin: ICoinInfo; coin: ICoinInfo;
} }
const CoinInfo = ({ coin }: ICoinInfoProps) => { const CoinInfo: React.FC<ICoinInfoProps> = ({ coin }) => {
return ( return (
<> <>

View File

@ -1,12 +1,13 @@
import React from "react";
import { messages } from "../utils/constants"; import { messages } from "../utils/constants";
import RefreshButton from "./refresh-button"; import RefreshButton from "./refresh-button";
export interface IErrorCardProp { export interface IErrorCardProps {
message: string; message: string;
} }
const ErrorCard = ({ message }: IErrorCardProp) => { const ErrorCard: React.FC<IErrorCardProps> = ({ message }) => {
return ( return (
<> <>

View File

@ -1,7 +1,8 @@
import React from "react";
import { useFilterStore } from "../store/controls"; import { useFilterStore } from "../store/controls";
import { messages } from "../utils/constants"; import { messages } from "../utils/constants";
const FilterInput = () => { const FilterInput: React.FC = () => {
const toggleFilter = useFilterStore(state => state.toggleFilter); const toggleFilter = useFilterStore(state => state.toggleFilter);
const onFilterChange = (e: React.ChangeEvent<HTMLInputElement>) => { const onFilterChange = (e: React.ChangeEvent<HTMLInputElement>) => {

View File

@ -1,6 +1,7 @@
import React from "react";
import { footerLinkUrl, footerLinkText } from "../utils/conf"; import { footerLinkUrl, footerLinkText } from "../utils/conf";
const Footer = () => { const Footer: React.FC = () => {
return ( return (
<footer> <footer>
<p>&copy; {new Date().getFullYear()}</p> <p>&copy; {new Date().getFullYear()}</p>

View File

@ -1,6 +1,7 @@
import React from "react";
import { Link } from "react-router"; import { Link } from "react-router";
const Header = () => { const Header: React.FC = () => {
return ( return (
<div className="nav-box"> <div className="nav-box">
<Link to="/">Home</Link> <Link to="/">Home</Link>

View File

@ -1,7 +1,8 @@
import React from "react";
import { useLimitStore } from "../store/controls"; import { useLimitStore } from "../store/controls";
import { fetchCoins, getCoinsLength } from "../store/coins-market"; import { fetchCoins, getCoinsLength } from "../store/coins-market";
const LimitSelector = () => { const LimitSelector: React.FC = () => {
const limit = useLimitStore(state => state.limit); const limit = useLimitStore(state => state.limit);
const toggleLimit = useLimitStore(state => state.toggleLimit); const toggleLimit = useLimitStore(state => state.toggleLimit);

View File

@ -1,3 +1,4 @@
import React from "react";
import { fetchCoins, getCoinsLength } from "../store/coins-market"; import { fetchCoins, getCoinsLength } from "../store/coins-market";
import { getTimestampOfLastPersist } from "../store/coins-market"; import { getTimestampOfLastPersist } from "../store/coins-market";
import toast, { Toaster } from "react-hot-toast"; import toast, { Toaster } from "react-hot-toast";
@ -6,7 +7,7 @@ import { MdRefresh } from "react-icons/md";
const notify = (text: string) => toast.error(text, { duration: 3000, id: "reloadRapidDisallowed", style: { textAlign: 'center' } }); const notify = (text: string) => toast.error(text, { duration: 3000, id: "reloadRapidDisallowed", style: { textAlign: 'center' } });
const RefreshButton = () => { const RefreshButton: React.FC = () => {
const onButonClick = () => { const onButonClick = () => {
if (Date.now() > getTimestampOfLastPersist() + 3000) fetchCoins(getCoinsLength() || 10); if (Date.now() > getTimestampOfLastPersist() + 3000) fetchCoins(getCoinsLength() || 10);

View File

@ -1,7 +1,8 @@
import React from "react";
import { SortBy } from "../utils/enum"; import { SortBy } from "../utils/enum";
import { useSortByStore } from "../store/controls"; import { useSortByStore } from "../store/controls";
const SortSelector = () => { const SortSelector: React.FC = () => {
const sortBy = useSortByStore(state => state.sortBy); const sortBy = useSortByStore(state => state.sortBy);
const toggleSortBy = useSortByStore(state => state.toggleSortBy); const toggleSortBy = useSortByStore(state => state.toggleSortBy);

View File

@ -1,3 +1,4 @@
import React from "react";
import { BarLoader } from "react-spinners"; import { BarLoader } from "react-spinners";
const override = { const override = {
@ -5,7 +6,12 @@ const override = {
margin: "0 auto 50px auto", margin: "0 auto 50px auto",
}; };
const Spinner = ({ color = "blue", width = 200 }) => { interface ISpinnerProps {
color?: string;
width?: number;
}
const Spinner: React.FC<ISpinnerProps> = ({ color = "blue", width = 200 }) => {
return ( return (
<div> <div>
<BarLoader color={color} width={width} cssOverride={override} aria-label="Loading..." /> <BarLoader color={color} width={width} cssOverride={override} aria-label="Loading..." />

View File

@ -1,6 +1,7 @@
import React from "react";
import { messages } from "../utils/constants"; import { messages } from "../utils/constants";
const About = () => { const About: React.FC = () => {
return ( return (
<div className="about"> <div className="about">
<h1>📈 Crypto Viewer</h1> <h1>📈 Crypto Viewer</h1>

View File

@ -1,3 +1,4 @@
import React from "react";
import { Link, useParams } from "react-router"; import { Link, useParams } from "react-router";
import CoinInfo from "../components/coin-info"; import CoinInfo from "../components/coin-info";
import { useCoinInfoStore, reset, fetchCoinInfos } from "../store/coin-info"; import { useCoinInfoStore, reset, fetchCoinInfos } from "../store/coin-info";
@ -5,7 +6,7 @@ import { useEffect } from "react";
import CoinChart from "../components/coin-chart"; import CoinChart from "../components/coin-chart";
import Spinner from "../components/spinner"; import Spinner from "../components/spinner";
const CoinDetail = () => { const CoinDetail: React.FC = () => {
const { id } = useParams<string>(); const { id } = useParams<string>();

View File

@ -1,3 +1,4 @@
import React from "react";
import { useEffect, useRef } from "react"; import { useEffect, useRef } from "react";
import FilterInput from "../components/filter-input"; import FilterInput from "../components/filter-input";
import LimitSelector from "../components/limit-selector"; import LimitSelector from "../components/limit-selector";
@ -12,7 +13,7 @@ import ErrorCard from "../components/error-card";
import { initialCoinsCoint } from "../utils/conf"; import { initialCoinsCoint } from "../utils/conf";
import { ICoinMarketData } from "../utils/interfaces"; import { ICoinMarketData } from "../utils/interfaces";
const Home = () => { const Home: React.FC = () => {
const coins = useCoinsMarketStore(state => state.coins); const coins = useCoinsMarketStore(state => state.coins);
const loading = useCoinsMarketStore(state => state.loading); const loading = useCoinsMarketStore(state => state.loading);

View File

@ -1,6 +1,7 @@
import React from "react";
import { Link } from "react-router"; import { Link } from "react-router";
const NotFound = () => { const NotFound: React.FC = () => {
return ( return (
<div className="not-found-container"> <div className="not-found-container">
<h1 className="title">404</h1> <h1 className="title">404</h1>