upgrade react to v19, migrate from CRA to Vite, add react compiler

This commit is contained in:
Tom (plebeius.eth)
2025-03-04 17:53:05 +01:00
parent 0748673bad
commit ffe42c35ea
29 changed files with 2503 additions and 5670 deletions
@@ -69,7 +69,7 @@
border-image-width: 40px 0px 0px 0px;
border-image-outset: 0px 0px 0px 0px;
border-image-repeat: repeat repeat;
border-image-source: url('/public/assets/garland.png');
border-image-source: url('/assets/garland.png');
border-style: solid;
padding-top: 50px;
}
@@ -58,11 +58,11 @@
}
.threadIcons .stickyIcon {
background-image: url("/public/assets/icons/sticky.gif");
background-image: url("/assets/icons/sticky.gif");
}
.threadIcons .closedIcon {
background-image: url("/public/assets/icons/closed.gif");
background-image: url("/assets/icons/closed.gif");
}
.mediaWrapper {
+2
View File
@@ -0,0 +1,2 @@
// plebchan shouldn't consider 'vulgar' or 'anti' as nsfw tags, unlike more sfw-oriented clients
export const nsfwTags = ['adult', 'gore'];
+1 -1
View File
@@ -3,7 +3,7 @@ import { useLocation, useParams } from 'react-router-dom';
import useThemeStore from '../stores/use-theme-store';
import { useDefaultSubplebbits } from './use-default-subplebbits';
import { isAllView, isHomeView, isNotFoundView, isPendingPostView, isSubscriptionsView } from '../lib/utils/view-utils';
import { nsfwTags } from '../views/home/home';
import { nsfwTags } from '../constants/nsfwTags';
import { useAccountComment } from '@plebbit/plebbit-react-hooks';
const useInitialTheme = (pendingPostSubplebbitAddress?: string) => {
+1 -1
View File
@@ -4,7 +4,7 @@ import { isAllView, isSubscriptionsView } from '../lib/utils/view-utils';
import useThemeStore from '../stores/use-theme-store';
import { useDefaultSubplebbits } from './use-default-subplebbits';
import useInitialTheme from './use-initial-theme';
import { nsfwTags } from '../views/home/home';
import { nsfwTags } from '../constants/nsfwTags';
import { useAccountComment } from '@plebbit/plebbit-react-hooks';
import useSpecialThemeStore from '../stores/use-special-theme-store';
import { isChristmas } from '../lib/utils/time-utils';
+2 -2
View File
@@ -53,11 +53,11 @@ hr {
}
.yellowOfflineIcon {
background-image: url('/public/assets/icons/offline-blue.png');
background-image: url('/assets/icons/offline-blue.png');
}
.redOfflineIcon {
background-image: url('/public/assets/icons/offline-red.png');
background-image: url('/assets/icons/offline-red.png');
}
@media (max-width: 640px) {
+1
View File
@@ -1,3 +1,4 @@
import './polyfills.js';
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './app';
+29
View File
@@ -0,0 +1,29 @@
// Polyfills for Node.js built-ins
import { Buffer } from 'buffer';
import process from 'process';
import 'isomorphic-fetch';
window.Buffer = Buffer;
window.process = process;
window.global = window;
// For ethers.js
window.process.version = ''; // Fake Node.js version
window.process.env = window.process.env || {};
// Add any missing fetch polyfill
if (!window.fetch) {
console.warn('Fetch API is not available, using polyfill');
}
// For crypto support
if (typeof window.crypto === 'undefined') {
window.crypto = {};
}
if (typeof window.crypto.getRandomValues === 'undefined') {
window.crypto.getRandomValues = function (array) {
for (let i = 0; i < array.length; i++) {
array[i] = Math.floor(Math.random() * 256);
}
};
}
+43 -43
View File
@@ -20,7 +20,7 @@
/* body */
--body-background-base-color: #ffe;
--body-background-pattern-image: url("/public/assets/background-fade.png");
--body-background-pattern-image: url("/assets/background-fade.png");
--body-font-color: maroon;
--body-font-family: arial, helvetica, sans-serif;
--body-font-size: 10pt;
@@ -49,7 +49,7 @@
/* desktop buttons */
--button-desktop-text-color: #00e;
--button-desktop-text-color-hover: red;
--close-button-background-image: url("/public/assets/buttons/cross-red.png");
--close-button-background-image: url("/assets/buttons/cross-red.png");
/* horizontal rule */
--hr-border: none;
@@ -90,7 +90,7 @@
--button-font-size-mobile: 10pt;
--button-font-weight-mobile: 700;
--button-text-color-mobile: #800;
--button-background-image-mobile: url("/public/assets/buttons/button-fade.png");
--button-background-image-mobile: url("/assets/buttons/button-fade.png");
--button-background-color-mobile: #f0e0d6;
--button-border-mobile: 1px solid #c0a69d;
@@ -98,8 +98,8 @@
--post-capcode-mod-text-color: purple;
/* post desktop */
--post-hide-button-background-image: url("/public/assets/buttons/minus-red.png");
--post-unhide-button-background-image: url("/public/assets/buttons/plus-red.png");
--post-hide-button-background-image: url("/assets/buttons/minus-red.png");
--post-unhide-button-background-image: url("/assets/buttons/plus-red.png");
--post-subject-text-color: #cc1105;
--post-subject-font-weight: 700;
--post-name-text-color: #117743;
@@ -190,9 +190,9 @@
--settings-modal-border-right: 1px solid #d9bfb7;
--settings-modal-border-bottom: 1px solid #d9bfb7;
--settings-modal-border-left: none;
--settings-modal-close-button-background-image: url("/public/assets/buttons/cross-red.png");
--settings-modal-show-button-background-image: url("/public/assets/buttons/plus-red.png");
--settings-modal-hide-button-background-image: url("/public/assets/buttons/minus-red.png");
--settings-modal-close-button-background-image: url("/assets/buttons/cross-red.png");
--settings-modal-show-button-background-image: url("/assets/buttons/plus-red.png");
--settings-modal-hide-button-background-image: url("/assets/buttons/minus-red.png");
/* stats */
--stats-font-size: 11px;
@@ -234,7 +234,7 @@
/* body */
--body-background-base-color: #eef2ff;
--body-background-pattern-image: url("/public/assets/background-fade-blue.png");
--body-background-pattern-image: url("/assets/background-fade-blue.png");
--body-font-color: #000;
--body-font-family: arial, helvetica, sans-serif;
--body-font-size: 10pt;
@@ -262,7 +262,7 @@
/* desktop buttons */
--button-desktop-text-color: #34345c;
--button-desktop-text-color-hover: #d00;
--close-button-background-image: url("/public/assets/buttons/cross-blue.png");
--close-button-background-image: url("/assets/buttons/cross-blue.png");
/* footer */
--footer-item-background-color-desktop: #eef2ff;
@@ -302,7 +302,7 @@
--button-font-size-mobile: 10pt;
--button-font-weight-mobile: 700;
--button-text-color-mobile: #34345c;
--button-background-image-mobile: url("/public/assets/buttons/button-fade-blue.png");
--button-background-image-mobile: url("/assets/buttons/button-fade-blue.png");
--button-background-color-mobile: #d6daf0;
--button-border-mobile: 1px solid #b7c5d9;
@@ -310,8 +310,8 @@
--post-capcode-mod-text-color: purple;
/* post desktop */
--post-hide-button-background-image: url("/public/assets/buttons/minus-blue.png");
--post-unhide-button-background-image: url("/public/assets/buttons/plus-blue.png");
--post-hide-button-background-image: url("/assets/buttons/minus-blue.png");
--post-unhide-button-background-image: url("/assets/buttons/plus-blue.png");
--post-subject-text-color: #0f0c5d;
--post-subject-font-weight: 700;
--post-name-text-color: #117743;
@@ -402,9 +402,9 @@
--settings-modal-border-bottom: 1px solid #b7c5d9;
--settings-modal-border-left: none;
--settings-modal-header-border-bottom: 1px solid #b7c5d9;
--settings-modal-close-button-background-image: url("/public/assets/buttons/cross-blue.png");
--settings-modal-show-button-background-image: url("/public/assets/buttons/plus-blue.png");
--settings-modal-hide-button-background-image: url("/public/assets/buttons/minus-blue.png");
--settings-modal-close-button-background-image: url("/assets/buttons/cross-blue.png");
--settings-modal-show-button-background-image: url("/assets/buttons/plus-blue.png");
--settings-modal-hide-button-background-image: url("/assets/buttons/minus-blue.png");
/* stats */
--stats-font-size: 11px;
@@ -478,7 +478,7 @@
--button-desktop-text-color: #00e;
--button-desktop-text-color-hover: red;
--button-text-decoration: underline;
--close-button-background-image: url("/public/assets/buttons/cross-red.png");
--close-button-background-image: url("/assets/buttons/cross-red.png");
/* footer */
--footer-item-background-color-desktop: #fed;
@@ -498,7 +498,7 @@
--button-font-size-mobile: 11pt;
--button-font-weight-mobile: 700;
--button-text-color-mobile: #800;
--button-background-image-mobile: url("/public/assets/buttons/button-fade.png");
--button-background-image-mobile: url("/assets/buttons/button-fade.png");
--button-background-color-mobile: #f0e0d6;
--button-border-mobile: 1px solid #c0a69d;
@@ -506,8 +506,8 @@
--post-capcode-mod-text-color: purple;
/* post desktop */
--post-hide-button-background-image: url("/public/assets/buttons/minus-red.png");
--post-unhide-button-background-image: url("/public/assets/buttons/plus-red.png");
--post-hide-button-background-image: url("/assets/buttons/minus-red.png");
--post-unhide-button-background-image: url("/assets/buttons/plus-red.png");
--post-subject-text-color: #cc1105;
--post-subject-font-weight: 700;
--post-name-text-color: #117743;
@@ -583,9 +583,9 @@
--settings-modal-border-bottom: 1px solid rgba(0, 0, 0, 0.20);
--settings-modal-border-left: 1px solid rgba(0, 0, 0, 0.20);
--settings-modal-header-border-bottom: 1px solid rgba(0,0,0,.2);
--settings-modal-close-button-background-image: url("/public/assets/buttons/cross-red.png");
--settings-modal-show-button-background-image: url("/public/assets/buttons/plus-red.png");
--settings-modal-hide-button-background-image: url("/public/assets/buttons/minus-red.png");
--settings-modal-close-button-background-image: url("/assets/buttons/cross-red.png");
--settings-modal-show-button-background-image: url("/assets/buttons/plus-red.png");
--settings-modal-hide-button-background-image: url("/assets/buttons/minus-red.png");
/* stats */
--stats-font-size: 10pt;
@@ -656,7 +656,7 @@
--button-desktop-text-color: #34345c;
--button-text-decoration: underline;
--button-desktop-text-color-hover: #d00;
--close-button-background-image: url("/public/assets/buttons/cross-blue.png");
--close-button-background-image: url("/assets/buttons/cross-blue.png");
/* footer */
--footer-item-background-color-desktop: #eef2ff;
@@ -678,7 +678,7 @@
--button-font-size-mobile: 11pt;
--button-font-weight-mobile: 700;
--button-text-color-mobile: #34345c;
--button-background-image-mobile: url("/public/assets/buttons/button-fade-blue.png");
--button-background-image-mobile: url("/assets/buttons/button-fade-blue.png");
--button-background-color-mobile: #d6daf0;
--button-border-mobile: 1px solid #b7c5d9;
@@ -694,8 +694,8 @@
--post-capcode-mod-text-color: purple;
/* post desktop */
--post-hide-button-background-image: url("/public/assets/buttons/minus-blue.png");
--post-unhide-button-background-image: url("/public/assets/buttons/plus-blue.png");
--post-hide-button-background-image: url("/assets/buttons/minus-blue.png");
--post-unhide-button-background-image: url("/assets/buttons/plus-blue.png");
--post-subject-text-color: #0f0c5d;
--post-subject-font-weight: 700;
--post-name-text-color: #117743;
@@ -771,9 +771,9 @@
--settings-modal-border-bottom: 1px solid rgba(0, 0, 0, 0.20);
--settings-modal-border-left: 1px solid rgba(0, 0, 0, 0.20);
--settings-modal-header-border-bottom: 1px solid rgba(0,0,0,.2);
--settings-modal-close-button-background-image: url("/public/assets/buttons/cross-blue.png");
--settings-modal-show-button-background-image: url("/public/assets/buttons/plus-blue.png");
--settings-modal-hide-button-background-image: url("/public/assets/buttons/minus-blue.png");
--settings-modal-close-button-background-image: url("/assets/buttons/cross-blue.png");
--settings-modal-show-button-background-image: url("/assets/buttons/plus-blue.png");
--settings-modal-hide-button-background-image: url("/assets/buttons/minus-blue.png");
/* stats */
--stats-font-size: 10pt;
@@ -847,7 +847,7 @@
/* desktop buttons */
--button-desktop-text-color: #81a2be;
--button-desktop-text-color-hover: #5f89ac;
--close-button-background-image: url("/public/assets/buttons/cross-dark.png");
--close-button-background-image: url("/assets/buttons/cross-dark.png");
/* filter for inputs */
--filter80: brightness(85%);
@@ -882,7 +882,7 @@
--button-font-size-mobile: 10pt;
--button-font-weight-mobile: 700;
--button-text-color-mobile: #707070;
--button-background-image-mobile: url("/public/assets/buttons/button-fade-dark.png");
--button-background-image-mobile: url("/assets/buttons/button-fade-dark.png");
--button-background-color-mobile: #1b1c1e;
--button-border-mobile: 1px solid #282a2e;
@@ -890,8 +890,8 @@
--post-capcode-mod-text-color: #81a2be;
/* post desktop */
--post-hide-button-background-image: url("/public/assets/buttons/minus-dark.png");
--post-unhide-button-background-image: url("/public/assets/buttons/plus-dark.png");
--post-hide-button-background-image: url("/assets/buttons/minus-dark.png");
--post-unhide-button-background-image: url("/assets/buttons/plus-dark.png");
--post-subject-text-color: #b294bb;
--post-subject-font-weight: 700;
--post-name-text-color: #c5c8c6;
@@ -993,9 +993,9 @@
--settings-modal-border-bottom: 1px solid #111;
--settings-modal-border-left: 1px solid #111;
--settings-modal-header-border-bottom: 1px solid #111;
--settings-modal-close-button-background-image: url("/public/assets/buttons/cross-dark.png");
--settings-modal-show-button-background-image: url("/public/assets/buttons/plus-dark.png");
--settings-modal-hide-button-background-image: url("/public/assets/buttons/minus-dark.png");
--settings-modal-close-button-background-image: url("/assets/buttons/cross-dark.png");
--settings-modal-show-button-background-image: url("/assets/buttons/plus-dark.png");
--settings-modal-hide-button-background-image: url("/assets/buttons/minus-dark.png");
/* stats */
--stats-font-size: 11px;
@@ -1066,7 +1066,7 @@
/* desktop buttons */
--button-desktop-text-color: #f60;
--button-desktop-text-color-hover: #f30;
--close-button-background-image: url("/public/assets/buttons/cross-photon.png");
--close-button-background-image: url("/assets/buttons/cross-photon.png");
/* horizontal rule */
--hr-border: none;
@@ -1095,8 +1095,8 @@
--post-capcode-mod-text-color: #f60;
/* post desktop */
--post-hide-button-background-image: url("/public/assets/buttons/minus-photon.png");
--post-unhide-button-background-image: url("/public/assets/buttons/plus-photon.png");
--post-hide-button-background-image: url("/assets/buttons/minus-photon.png");
--post-unhide-button-background-image: url("/assets/buttons/plus-photon.png");
--post-subject-text-color: #111;
--post-subject-font-weight: 700;
--post-name-text-color: #004a99;
@@ -1196,9 +1196,9 @@
--settings-modal-border-bottom: 1px solid #ccc;
--settings-modal-border-left: 1px solid #ccc;
--settings-modal-header-border-bottom: 1px solid rgba(0, 0, 0, 0.20);
--settings-modal-close-button-background-image: url("/public/assets/buttons/cross-photon.png");
--settings-modal-show-button-background-image: url("/public/assets/buttons/plus-photon.png");
--settings-modal-hide-button-background-image: url("/public/assets/buttons/minus-photon.png");
--settings-modal-close-button-background-image: url("/assets/buttons/cross-photon.png");
--settings-modal-show-button-background-image: url("/assets/buttons/plus-photon.png");
--settings-modal-hide-button-background-image: url("/assets/buttons/minus-photon.png");
/* stats */
--stats-font-size: 11px;
+1 -1
View File
@@ -45,7 +45,7 @@
border-image-width: 40px 0px 0px 0px;
border-image-outset: 0px 0px 0px 0px;
border-image-repeat: repeat repeat;
border-image-source: url('/public/assets/garland.png');
border-image-source: url('/assets/garland.png');
border-style: solid;
padding-top: 50px;
}
+1 -1
View File
@@ -9,7 +9,7 @@ import useIsSubplebbitOffline from '../../../hooks/use-is-subplebbit-offline';
import LoadingEllipsis from '../../../components/loading-ellipsis';
import Tooltip from '../../../components/tooltip';
import styles from './boards-list.module.css';
import { nsfwTags } from '../home';
import { nsfwTags } from '../../../constants/nsfwTags';
const Board = ({ subplebbit, isMobile }: { subplebbit: Subplebbit; isMobile: boolean }) => {
const { t } = useTranslation();
-2
View File
@@ -11,8 +11,6 @@ import Version from '../../components/version';
import _ from 'lodash';
// https://github.com/plebbit/temporary-default-subplebbits/blob/master/README.md
// plebchan shouldn't consider 'vulgar' or 'anti' as nsfw tags, unlike more sfw-oriented clients
export const nsfwTags = ['adult', 'gore'];
const SearchBar = () => {
const searchInputRef = useRef<HTMLInputElement>(null);
+1 -1
View File
@@ -1 +1 @@
export { HomeLogo, Footer, nsfwTags, default } from './home';
export { HomeLogo, Footer, default } from './home';
@@ -9,7 +9,7 @@ import { getCommentMediaInfo } from '../../../lib/utils/media-utils';
import { CatalogPostMedia } from '../../../components/catalog-row';
import LoadingEllipsis from '../../../components/loading-ellipsis';
import BoxModal from '../box-modal';
import { nsfwTags } from '../home';
import { nsfwTags } from '../../../constants/nsfwTags';
import { removeMarkdown } from '../../../lib/utils/post-utils';
interface PopularThreadProps {