+
{
setTypedCatName(e.target.value)}
/>
{errorMessage && (
@@ -78,7 +78,7 @@ const Naming = () => {
@@ -86,10 +86,12 @@ const Naming = () => {
};
// 특수문자 및 공백 여부 확인 정규식
+const spaceRegex = /^\s+$/;
const specialCharRegex = /[~!@#$%^&*()_+|<>?:{}\s]/;
const getErrorMessage = (name: string) => {
if (name.length === 0) return '';
+ if (spaceRegex.test(name)) return '고양이 이름은 빈 칸이 될 수 없어요';
if (specialCharRegex.test(name)) return '고양이 이름에는 공백, 특수문자가 들어갈 수 없어요';
if (name.length > 10) return '고양이 이름은 10글자를 넘길 수 없어요';
return '';
diff --git a/src/renderer/pages/onboarding.tsx b/src/renderer/pages/onboarding.tsx
index ede2681..d76992e 100644
--- a/src/renderer/pages/onboarding.tsx
+++ b/src/renderer/pages/onboarding.tsx
@@ -7,15 +7,7 @@ import onboardingImage1 from '@/shared/assets/images/onboarding-1.png';
import onboardingImage2 from '@/shared/assets/images/onboarding-2.png';
import onboardingImage3 from '@/shared/assets/images/onboarding-3.png';
import { LOCAL_STORAGE_KEY, PATH } from '@/shared/constants';
-import {
- Button,
- Carousel,
- CarouselContent,
- CarouselItem,
- CarouselNext,
- CarouselPrevious,
- useCarousel,
-} from '@/shared/ui';
+import { Button, Carousel, CarouselContent, CarouselItem, useCarousel } from '@/shared/ui';
import { cn } from '@/shared/utils';
const Onboarding = () => {
@@ -53,10 +45,10 @@ const OnboardingContent = () => {
const [, setIsCompleted] = useLocalStorage(LOCAL_STORAGE_KEY.ONBOARDING_COMPLETED, false);
return (
-
+
{
{title}
-
{description}
+
{description}
))}
-
-
-
{contents.map((_, index) => (
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/shared/ui/icon.tsx b/src/renderer/shared/ui/icon.tsx
index ad44bfe..48c4472 100644
--- a/src/renderer/shared/ui/icon.tsx
+++ b/src/renderer/shared/ui/icon.tsx
@@ -5,7 +5,7 @@ import CategoryBookIcon from '@/shared/assets/svgs/category-book.svg';
import CategoryDefaultIcon from '@/shared/assets/svgs/category-default.svg';
import CategoryStudyIcon from '@/shared/assets/svgs/category-study.svg';
import CategoryWorkIcon from '@/shared/assets/svgs/category-work.svg';
-import CheckIcon from '@/shared/assets/svgs/check.svg';
+import CheckIcon from '@/shared/assets/svgs/check.svg?react';
import CheerIcon from '@/shared/assets/svgs/cheer.svg';
import ChevronRightIcon from '@/shared/assets/svgs/chevron-right.svg';
import ClockIcon from '@/shared/assets/svgs/clock.svg';
@@ -20,6 +20,7 @@ import PlayIcon from '@/shared/assets/svgs/play.svg';
import PlusIcon from '@/shared/assets/svgs/plus.svg';
import PlusSvgIcon from '@/shared/assets/svgs/plus.svg?react';
import PositiveIcon from '@/shared/assets/svgs/positive.svg';
+import ReadyForStatIcon from '@/shared/assets/svgs/ready-for-stat.svg';
import RestTimeIcon from '@/shared/assets/svgs/rest-time.svg';
import StimulusIcon from '@/shared/assets/svgs/stimulus.svg';
@@ -46,6 +47,7 @@ const icons = {
stimulus: StimulusIcon,
pen: PenIcon,
clock: ClockIcon,
+ readyForStat: ReadyForStatIcon,
} as const;
const sizes = {
xs: 16,
diff --git a/src/renderer/shared/ui/toaster.tsx b/src/renderer/shared/ui/toaster.tsx
index 698b9a4..cf515c7 100644
--- a/src/renderer/shared/ui/toaster.tsx
+++ b/src/renderer/shared/ui/toaster.tsx
@@ -8,10 +8,10 @@ export function Toaster() {
return (
- {toasts.map(({ id, message, iconName = 'clock', ...props }) => {
+ {toasts.map(({ id, message, iconName, iconClassName, ...props }) => {
return (
-
+
{message}
diff --git a/src/renderer/shared/ui/use-toast.ts b/src/renderer/shared/ui/use-toast.ts
index b701eb2..3c90587 100644
--- a/src/renderer/shared/ui/use-toast.ts
+++ b/src/renderer/shared/ui/use-toast.ts
@@ -9,6 +9,7 @@ const TOAST_REMOVE_DELAY = 1000000;
type ToasterToast = ToastProps & {
id: string;
iconName?: IconName;
+ iconClassName?: string;
message: ReactNode;
};
diff --git a/src/renderer/widgets/pomodoro/ui/focus-screen.tsx b/src/renderer/widgets/pomodoro/ui/focus-screen.tsx
index 62a6bd3..14858fb 100644
--- a/src/renderer/widgets/pomodoro/ui/focus-screen.tsx
+++ b/src/renderer/widgets/pomodoro/ui/focus-screen.tsx
@@ -68,8 +68,13 @@ export const FocusScreen = ({ currentCategory, time, handleRest, handleEnd }: Fo
-
-