├── .npmrc ├── .vscode └── settings.json ├── public ├── robots.txt ├── favicon.ico ├── books │ ├── BEC_2.webp │ ├── BEC_3.webp │ ├── GRE_2.webp │ ├── GRE_3.webp │ ├── SAT_2.webp │ ├── SAT_3.webp │ ├── CET4_1.webp │ ├── CET4_2.webp │ ├── CET4_3.webp │ ├── CET6_1.webp │ ├── CET6_2.webp │ ├── CET6_3.webp │ ├── GMAT_2.webp │ ├── GMAT_3.webp │ ├── IELTS_2.webp │ ├── IELTS_3.webp │ ├── TOEFL_2.webp │ ├── TOEFL_3.webp │ ├── CET4luan_1.webp │ ├── CET4luan_2.webp │ ├── CET6luan_1.webp │ ├── ChuZhong_2.webp │ ├── ChuZhong_3.webp │ ├── GMATluan_2.webp │ ├── GaoZhong_2.webp │ ├── GaoZhong_3.webp │ ├── KaoYan_1.webp │ ├── KaoYan_2.webp │ ├── KaoYan_3.webp │ ├── Level4_1.webp │ ├── Level4_2.webp │ ├── Level8_1.webp │ ├── Level8_2.webp │ ├── IELTSluan_2.webp │ ├── KaoYanluan_1.webp │ ├── Level4luan_1.webp │ ├── Level4luan_2.webp │ ├── Level8luan_2.webp │ ├── ChuZhongluan_2.webp │ ├── GaoZhongluan_2.webp │ ├── PEPChuZhong7_1.webp │ ├── PEPChuZhong7_2.webp │ ├── PEPChuZhong8_1.webp │ ├── PEPChuZhong8_2.webp │ ├── PEPChuZhong9_1.webp │ ├── PEPGaoZhong_1.webp │ ├── PEPGaoZhong_10.webp │ ├── PEPGaoZhong_11.webp │ ├── PEPGaoZhong_2.webp │ ├── PEPGaoZhong_3.webp │ ├── PEPGaoZhong_4.webp │ ├── PEPGaoZhong_5.webp │ ├── PEPGaoZhong_6.webp │ ├── PEPGaoZhong_7.webp │ ├── PEPGaoZhong_8.webp │ ├── PEPGaoZhong_9.webp │ ├── PEPXiaoXue3_1.webp │ ├── PEPXiaoXue3_2.webp │ ├── PEPXiaoXue4_1.webp │ ├── PEPXiaoXue4_2.webp │ ├── PEPXiaoXue5_1.webp │ ├── PEPXiaoXue5_2.webp │ ├── PEPXiaoXue6_1.webp │ ├── PEPXiaoXue6_2.webp │ ├── BeiShiGaoZhong_1.webp │ ├── BeiShiGaoZhong_10.webp │ ├── BeiShiGaoZhong_11.webp │ ├── BeiShiGaoZhong_2.webp │ ├── BeiShiGaoZhong_3.webp │ ├── BeiShiGaoZhong_4.webp │ ├── BeiShiGaoZhong_5.webp │ ├── BeiShiGaoZhong_6.webp │ ├── BeiShiGaoZhong_7.webp │ ├── BeiShiGaoZhong_8.webp │ ├── BeiShiGaoZhong_9.webp │ ├── WaiYanSheChuZhong_1.webp │ ├── WaiYanSheChuZhong_2.webp │ ├── WaiYanSheChuZhong_3.webp │ ├── WaiYanSheChuZhong_4.webp │ ├── WaiYanSheChuZhong_5.webp │ └── WaiYanSheChuZhong_6.webp └── svgs │ ├── github_dark.svg │ └── github_light.svg ├── app ├── styles │ ├── hero.ts │ └── global.css ├── routes.ts ├── components │ ├── FormFieldError.tsx │ ├── LuIcon.tsx │ ├── SkeletonBox.tsx │ ├── SignInButton.tsx │ ├── ProgressBar.tsx │ ├── SettingButton.tsx │ ├── GithubIconButton.tsx │ ├── SearchButton.tsx │ ├── GithubButton.tsx │ ├── CloseMenuButton.tsx │ ├── OpenMenuButton.tsx │ ├── BooksPanel.tsx │ ├── CloseSearchBarButton.tsx │ ├── CloseWordDetailDrawerButton.tsx │ ├── UserAvatar.tsx │ ├── GlobalComponents.tsx │ ├── PasswordInput.tsx │ ├── SearchBar.tsx │ ├── DoneWordButton.tsx │ ├── UnDoneWordButton.tsx │ ├── LinkWord.tsx │ ├── ListTabs.tsx │ ├── WordPhrases.tsx │ ├── WordSentences.tsx │ ├── WordCommentItem.tsx │ ├── WordAudioButton.tsx │ ├── ProfileModal.tsx │ ├── WordCognates.tsx │ ├── WordSynonyms.tsx │ ├── WordTranslations.tsx │ ├── SendVerifyCodeButton.tsx │ ├── SettingModal.tsx │ ├── CommentVoteButton.tsx │ ├── SignOutButton.tsx │ ├── AppHeader.tsx │ ├── WordCommentsList.tsx │ ├── WordCommentForm.tsx │ ├── WordListIem.tsx │ ├── AppLayout.tsx │ ├── StudyCalendar.tsx │ ├── BookPanelItem.tsx │ ├── SearchWordsList.tsx │ ├── WordDetailPanel.tsx │ ├── UpdatePasswordModal.tsx │ ├── SignInModal.tsx │ ├── BookWordsList.tsx │ └── SignUpModal.tsx ├── hooks │ ├── useMobile.ts │ ├── useAppTheme.ts │ ├── useDebounceSearchWord.ts │ ├── useMyUserInfo.ts │ └── useZodForm.ts ├── .server │ ├── router │ │ ├── loader │ │ │ ├── getMyUserInfo.ts │ │ │ ├── getWordPhrases.ts │ │ │ ├── getWordCognates.ts │ │ │ ├── getWordSynonyms.ts │ │ │ ├── getAllBooks.ts │ │ │ ├── getBookDetail.ts │ │ │ ├── getWordSentences.ts │ │ │ ├── getStarBooks.ts │ │ │ ├── getWordDetail.ts │ │ │ ├── getWordTranslations.ts │ │ │ ├── getPostVote.ts │ │ │ ├── getIsWordDone.ts │ │ │ ├── getIsPostVote.ts │ │ │ ├── getStudyCalendar.ts │ │ │ ├── getWordsOfBook.ts │ │ │ ├── getWordComments.ts │ │ │ ├── getWordsOfKeyword.ts │ │ │ ├── getDoneWordsOfBook.ts │ │ │ └── getUnDoneWordsOfBook.ts │ │ ├── action │ │ │ ├── signOut.ts │ │ │ ├── doneWord.ts │ │ │ ├── starBook.ts │ │ │ ├── votePost.ts │ │ │ ├── sendComment.ts │ │ │ ├── unDoneWord.ts │ │ │ ├── unStarBook.ts │ │ │ ├── unVotePost.ts │ │ │ ├── updatePassword.ts │ │ │ ├── sendVerifyCode.ts │ │ │ ├── signIn.ts │ │ │ └── signUp.ts │ │ └── index.ts │ ├── common │ │ ├── crypto.ts │ │ ├── mail.ts │ │ ├── auth.ts │ │ ├── cookies.ts │ │ └── trpc.ts │ └── db │ │ ├── index.ts │ │ ├── config.ts │ │ ├── task.ts │ │ └── schema.ts ├── routes │ ├── _index.tsx │ ├── $.tsx │ ├── trpc.$trpc.ts │ └── $bookSlug.words.tsx ├── common │ ├── constants.ts │ ├── queryClient.ts │ ├── store.ts │ ├── types.ts │ ├── trpc.ts │ └── formSchema.ts ├── entry.server.tsx └── root.tsx ├── .gitignore ├── Dockerfile ├── env.d.ts ├── deploy.sh ├── .env ├── react-router.config.ts ├── tsconfig.json ├── vite.config.ts ├── package.json └── README.md /.npmrc: -------------------------------------------------------------------------------- 1 | public-hoist-pattern[]=*@heroui/* -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true 3 | } 4 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # Allow all crawlers 2 | User-agent: * 3 | Allow: / -------------------------------------------------------------------------------- /app/styles/hero.ts: -------------------------------------------------------------------------------- 1 | import { heroui } from "@heroui/react"; 2 | export default heroui(); 3 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/books/BEC_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BEC_2.webp -------------------------------------------------------------------------------- /public/books/BEC_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BEC_3.webp -------------------------------------------------------------------------------- /public/books/GRE_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GRE_2.webp -------------------------------------------------------------------------------- /public/books/GRE_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GRE_3.webp -------------------------------------------------------------------------------- /public/books/SAT_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/SAT_2.webp -------------------------------------------------------------------------------- /public/books/SAT_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/SAT_3.webp -------------------------------------------------------------------------------- /public/books/CET4_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET4_1.webp -------------------------------------------------------------------------------- /public/books/CET4_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET4_2.webp -------------------------------------------------------------------------------- /public/books/CET4_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET4_3.webp -------------------------------------------------------------------------------- /public/books/CET6_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET6_1.webp -------------------------------------------------------------------------------- /public/books/CET6_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET6_2.webp -------------------------------------------------------------------------------- /public/books/CET6_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET6_3.webp -------------------------------------------------------------------------------- /public/books/GMAT_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GMAT_2.webp -------------------------------------------------------------------------------- /public/books/GMAT_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GMAT_3.webp -------------------------------------------------------------------------------- /public/books/IELTS_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/IELTS_2.webp -------------------------------------------------------------------------------- /public/books/IELTS_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/IELTS_3.webp -------------------------------------------------------------------------------- /public/books/TOEFL_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/TOEFL_2.webp -------------------------------------------------------------------------------- /public/books/TOEFL_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/TOEFL_3.webp -------------------------------------------------------------------------------- /public/books/CET4luan_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET4luan_1.webp -------------------------------------------------------------------------------- /public/books/CET4luan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET4luan_2.webp -------------------------------------------------------------------------------- /public/books/CET6luan_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/CET6luan_1.webp -------------------------------------------------------------------------------- /public/books/ChuZhong_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/ChuZhong_2.webp -------------------------------------------------------------------------------- /public/books/ChuZhong_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/ChuZhong_3.webp -------------------------------------------------------------------------------- /public/books/GMATluan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GMATluan_2.webp -------------------------------------------------------------------------------- /public/books/GaoZhong_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GaoZhong_2.webp -------------------------------------------------------------------------------- /public/books/GaoZhong_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GaoZhong_3.webp -------------------------------------------------------------------------------- /public/books/KaoYan_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/KaoYan_1.webp -------------------------------------------------------------------------------- /public/books/KaoYan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/KaoYan_2.webp -------------------------------------------------------------------------------- /public/books/KaoYan_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/KaoYan_3.webp -------------------------------------------------------------------------------- /public/books/Level4_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/Level4_1.webp -------------------------------------------------------------------------------- /public/books/Level4_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/Level4_2.webp -------------------------------------------------------------------------------- /public/books/Level8_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/Level8_1.webp -------------------------------------------------------------------------------- /public/books/Level8_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/Level8_2.webp -------------------------------------------------------------------------------- /public/books/IELTSluan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/IELTSluan_2.webp -------------------------------------------------------------------------------- /public/books/KaoYanluan_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/KaoYanluan_1.webp -------------------------------------------------------------------------------- /public/books/Level4luan_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/Level4luan_1.webp -------------------------------------------------------------------------------- /public/books/Level4luan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/Level4luan_2.webp -------------------------------------------------------------------------------- /public/books/Level8luan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/Level8luan_2.webp -------------------------------------------------------------------------------- /public/books/ChuZhongluan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/ChuZhongluan_2.webp -------------------------------------------------------------------------------- /public/books/GaoZhongluan_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/GaoZhongluan_2.webp -------------------------------------------------------------------------------- /public/books/PEPChuZhong7_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPChuZhong7_1.webp -------------------------------------------------------------------------------- /public/books/PEPChuZhong7_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPChuZhong7_2.webp -------------------------------------------------------------------------------- /public/books/PEPChuZhong8_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPChuZhong8_1.webp -------------------------------------------------------------------------------- /public/books/PEPChuZhong8_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPChuZhong8_2.webp -------------------------------------------------------------------------------- /public/books/PEPChuZhong9_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPChuZhong9_1.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_1.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_10.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_11.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_2.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_3.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_4.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_5.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_6.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_7.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_8.webp -------------------------------------------------------------------------------- /public/books/PEPGaoZhong_9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPGaoZhong_9.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue3_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue3_1.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue3_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue3_2.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue4_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue4_1.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue4_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue4_2.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue5_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue5_1.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue5_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue5_2.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue6_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue6_1.webp -------------------------------------------------------------------------------- /public/books/PEPXiaoXue6_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/PEPXiaoXue6_2.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_1.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_10.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_11.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_2.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_3.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_4.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_5.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_6.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_7.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_8.webp -------------------------------------------------------------------------------- /public/books/BeiShiGaoZhong_9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/BeiShiGaoZhong_9.webp -------------------------------------------------------------------------------- /public/books/WaiYanSheChuZhong_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/WaiYanSheChuZhong_1.webp -------------------------------------------------------------------------------- /public/books/WaiYanSheChuZhong_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/WaiYanSheChuZhong_2.webp -------------------------------------------------------------------------------- /public/books/WaiYanSheChuZhong_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/WaiYanSheChuZhong_3.webp -------------------------------------------------------------------------------- /public/books/WaiYanSheChuZhong_4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/WaiYanSheChuZhong_4.webp -------------------------------------------------------------------------------- /public/books/WaiYanSheChuZhong_5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/WaiYanSheChuZhong_5.webp -------------------------------------------------------------------------------- /public/books/WaiYanSheChuZhong_6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SteveSuv/remix-words-funny/HEAD/public/books/WaiYanSheChuZhong_6.webp -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | !.env.example 2 | .DS_Store 3 | .react-router 4 | build 5 | node_modules 6 | *.tsbuildinfo 7 | .local 8 | drizzle 9 | 10 | # Uncomment .env when deploy to production 11 | # .env -------------------------------------------------------------------------------- /app/routes.ts: -------------------------------------------------------------------------------- 1 | import { type RouteConfig } from "@react-router/dev/routes"; 2 | import { flatRoutes } from "@react-router/fs-routes"; 3 | 4 | export default flatRoutes() satisfies RouteConfig; 5 | -------------------------------------------------------------------------------- /app/components/FormFieldError.tsx: -------------------------------------------------------------------------------- 1 | export const FormFieldError = ({ message }: { message?: string }) => { 2 | return message ?