diff --git a/src/App.test.tsx b/src/App.test.tsx
index 8bc9bb3..dc68a3d 100644
--- a/src/App.test.tsx
+++ b/src/App.test.tsx
@@ -1,9 +1,10 @@
import React from 'react'
import { render, screen } from '@testing-library/react'
import App from './App'
+import { WORDLE_TITLE } from './constants/strings'
test('renders App component', () => {
render()
- const linkElement = screen.getByText(/Not Wordle/)
+ const linkElement = screen.getByText(WORDLE_TITLE)
expect(linkElement).toBeInTheDocument()
})
diff --git a/src/App.tsx b/src/App.tsx
index f0816d2..5cbf5b0 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -7,7 +7,15 @@ import { Keyboard } from './components/keyboard/Keyboard'
import { AboutModal } from './components/modals/AboutModal'
import { InfoModal } from './components/modals/InfoModal'
import { StatsModal } from './components/modals/StatsModal'
-import { WIN_MESSAGES } from './constants/strings'
+import {
+ WORDLE_TITLE,
+ WIN_MESSAGES,
+ GAME_COPIED_MESSAGE,
+ ABOUT_GAME_MESSAGE,
+ NOT_ENOUGH_LETTERS_MESSAGE,
+ WORD_NOT_FOUND_MESSAGE,
+ CORRECT_WORD_MESSAGE,
+} from './constants/strings'
import { isWordInWordList, isWinningWord, solution } from './lib/words'
import { addStatsForCompletedGame, loadStats } from './lib/stats'
import {
@@ -114,7 +122,7 @@ function App() {
return (
-
Not Wordle
+
{WORDLE_TITLE}
setIsInfoModalOpen(true)}
@@ -143,7 +151,7 @@ function App() {
isGameLost={isGameLost}
isGameWon={isGameWon}
handleShare={() => {
- setSuccessAlert('Game copied to clipboard')
+ setSuccessAlert(GAME_COPIED_MESSAGE)
return setTimeout(() => setSuccessAlert(''), ALERT_TIME_MS)
}}
/>
@@ -157,12 +165,15 @@ function App() {
className="mx-auto mt-8 flex items-center px-2.5 py-1.5 border border-transparent text-xs font-medium rounded text-indigo-700 bg-indigo-100 hover:bg-indigo-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 select-none"
onClick={() => setIsAboutModalOpen(true)}
>
- About this game
+ {ABOUT_GAME_MESSAGE}
-
-
-
+
+
+
void
@@ -69,7 +70,7 @@ export const Keyboard = ({ onChar, onDelete, onEnter, guesses }: Props) => {
- Enter
+ {ENTER_TEXT}
@@ -79,7 +80,7 @@ export const Keyboard = ({ onChar, onDelete, onEnter, guesses }: Props) => {
- Delete
+ {DELETE_TEXT}
diff --git a/src/components/modals/StatsModal.tsx b/src/components/modals/StatsModal.tsx
index 770c6cc..48e1892 100644
--- a/src/components/modals/StatsModal.tsx
+++ b/src/components/modals/StatsModal.tsx
@@ -5,6 +5,11 @@ import { GameStats } from '../../lib/localStorage'
import { shareStatus } from '../../lib/share'
import { tomorrow } from '../../lib/words'
import { BaseModal } from './BaseModal'
+import {
+ STATISTICS_TITLE,
+ GUESS_DISTRIBUTION_TEXT,
+ NEW_WORD_TEXT,
+} from '../../constants/strings'
type Props = {
isOpen: boolean
@@ -27,22 +32,30 @@ export const StatsModal = ({
}: Props) => {
if (gameStats.totalGames <= 0) {
return (
-
+
)
}
return (
-
+
- Guess Distribution
+ {GUESS_DISTRIBUTION_TEXT}
{(isGameLost || isGameWon) && (
-
New word in
+
{NEW_WORD_TEXT}
{
return (
-
-
-
-
+
+
+
+
)
}
diff --git a/src/constants/strings.ts b/src/constants/strings.ts
index 13411b6..bfb3c9c 100644
--- a/src/constants/strings.ts
+++ b/src/constants/strings.ts
@@ -1 +1,19 @@
+export const WORDLE_TITLE = 'Not Wordle'
+
export const WIN_MESSAGES = ['Great Job!', 'Awesome', 'Well done!']
+export const GAME_COPIED_MESSAGE = 'Game copied to clipboard'
+export const ABOUT_GAME_MESSAGE = 'About this game'
+export const NOT_ENOUGH_LETTERS_MESSAGE = 'Not enough letters'
+export const WORD_NOT_FOUND_MESSAGE = 'Word not found'
+export const CORRECT_WORD_MESSAGE = (solution: string) =>
+ `The word was ${solution}`
+export const ENTER_TEXT = 'Enter'
+export const DELETE_TEXT = 'Delete'
+export const STATISTICS_TITLE = 'Statistics'
+export const GUESS_DISTRIBUTION_TEXT = 'Guess Distribution'
+export const NEW_WORD_TEXT = 'New word in'
+
+export const TOTAL_TRIES_TEXT = 'Total tries'
+export const SUCCESS_RATE_TEXT = 'Success rate'
+export const CURRENT_STREAK_TEXT = 'Current streak'
+export const BEST_STREAK_TEXT = 'Best streak'
diff --git a/src/lib/share.ts b/src/lib/share.ts
index 7e7b6ee..80b7986 100644
--- a/src/lib/share.ts
+++ b/src/lib/share.ts
@@ -1,9 +1,10 @@
import { getGuessStatuses } from './statuses'
import { solutionIndex } from './words'
+import { WORDLE_TITLE } from '../constants/strings'
export const shareStatus = (guesses: string[], lost: boolean) => {
navigator.clipboard.writeText(
- `Not Wordle ${solutionIndex} ${lost ? 'X' : guesses.length}/6\n\n` +
+ `${WORDLE_TITLE} ${solutionIndex} ${lost ? 'X' : guesses.length}/6\n\n` +
generateEmojiGrid(guesses)
)
}