Skip to content

Conversation

@hamo-o
Copy link
Contributor

@hamo-o hamo-o commented Feb 6, 2025

#️⃣ 연관된 이슈>

📝 작업 내용> 이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

  • 버튼 컴포넌트를 다형성을 가지도록 리팩터링합니다.
  • URL이 존재하지 않을 때의 에러페이지를 마크업하고, 폴백처리합니다.
2025-02-07.4.54.17.mov

🙏 여기는 꼭 봐주세요! > 리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

  • 이제 버튼 컴포넌트를 다른 태그로 사용할 수 있습니다. 보통 Link할 때 쓰게 될 것 같네요. 굳이 다른 컴포넌트로 감싸거나 불필요한 클릭 이벤트를 달지 않아도 되어 편리합니다.
    <Button
      as={Link}
      size='lg'
      style='weak'
      to='/'
    >
      홈으로
    </Button>
  • 글로벌 css에 잘못된 설정이 있어 변경했으니 꼭 이 PR 머지 후 rebase 하시고 작업해주세요!

Summary by CodeRabbit

  • New Features

    • Introduced a custom error page to guide users when navigating to unrecognized routes.
  • Style

    • Redesigned the landing page layout with a full viewport height container and improved overflow handling for enhanced responsiveness.
    • Updated typography with bolder headings for clearer visual emphasis.
    • Refined global styling to ensure consistent positioning and layout across the application.
  • Bug Fixes

    • Updated button properties from type to variant across various components for consistent styling.

@hamo-o hamo-o added the 🖥️ FE Frontend label Feb 6, 2025
@hamo-o hamo-o added this to the 2차 스프린트 milestone Feb 6, 2025
@hamo-o hamo-o requested a review from dioo1461 as a code owner February 6, 2025 20:00
@coderabbitai
Copy link

coderabbitai bot commented Feb 6, 2025

Walkthrough

This pull request standardizes the naming convention for button styling by renaming the "type" property to "variant" across multiple files. It updates the Button component’s API—including its stories, CSS recipes, and prop interfaces—as well as its usage in related components such as TimeControlButton, SegmentControl, and PopoverButton. Additionally, the routing logic now imports and uses an ErrorPage component for handling 404 routes. There are modifications to landing page styles and theme adjustments in font weights and global CSS resets, with a new font weight entry added.

Changes

File(s) Change Summary
frontend/src/components/Button/{Button.stories.tsx, index.css.ts, index.tsx}
frontend/src/components/{Calendar/Core/TimeControlButton.tsx, SegmentControl/index.tsx, my-schedule/@components/SchedulePopover/PopoverButton.tsx}
Renamed the "type" prop to "variant" across button definitions and usages; updated Button API by adding a new AsProp type and modifying ButtonProps.
frontend/src/routes/__root.tsx Added import of ErrorPage and configured the notFoundComponent property in createRootRoute.
frontend/src/routes/landing/@components/index.css.ts Modified containerStyle by replacing minHeight with a fixed 100vh height and adding overflow settings; updated imageStyle with new width (using calc) and maxHeight values.
frontend/src/theme/{font.ts, reset.css.ts, typo.ts} Adjusted font weights (H1, H2, H3 modifications), updated global reset styles (selector and position changes), and introduced a new "bold: 700" entry.
frontend/src/routes/@components/ErrorPage/index.tsx Introduced a new ErrorPage component for handling invalid links and rendering a custom 404 error message.

Sequence Diagram(s)

sequenceDiagram
  participant U as User
  participant R as Router
  participant E as ErrorPage
  U->>R: Navigate to an invalid route
  R-->>E: Render ErrorPage via notFoundComponent
  E-->>U: Display error message and "Go Home" button
  U->>R: Clicks button to redirect to home page
Loading

Assessment against linked issues

Objective Addressed Explanation
에러페이지 마크업 (#68)
404 에러 처리 (#68)

Possibly related PRs

  • [FE-Feat] Tanstack Router 설정, 스토리북 폴더 정리 #89: The changes in the main PR, which involve renaming the type property to variant in the Button component and its usage, are directly related to the modifications in the TimeControlButton and PopoverButton components in the retrieved PR, where the same property change is applied.
  • [FE-Chore] JSX를 위한 eslint 규칙 추가 #81: The changes in the main PR, which involve renaming the type property to variant in the Button component and its related files, are directly related to the changes in the retrieved PR, where the type property is also modified to variant in the TimeControlButton component.
  • [FE-Feat] Vitest 세팅 및 경로 단축 설정 #76: The changes in the main PR, which involve renaming the type property to variant in the Button component across multiple files, are directly related to the changes in the retrieved PR that also modify the type property to variant in the TimeControlButton component. Both PRs address the same property name change in the context of button components.

Suggested reviewers

  • dioo1461

Poem

I'm a rabbit with a hop and a skip,
Changing "type" to "variant" in every clip.
Buttons now dance with a brand new twist,
And ErrorPage shines, you get the gist.
Through code fields I hop with glee,
Celebrating changes from A to Z! 🐇


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cb0a376 and 7e3b97e.

📒 Files selected for processing (1)
  • frontend/src/routes/@components/ErrorPage/index.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • frontend/src/routes/@components/ErrorPage/index.tsx

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (4)
frontend/src/routes/@components/Error/index.tsx (2)

25-26: Consider using an i18n solution for text content.

The Korean text strings should be managed through an internationalization system for better maintainability and potential future localization.


15-19: Consider moving the image path to a constants file.

The hardcoded image path could be moved to a constants file for better maintainability and reusability.

frontend/src/components/Button/index.tsx (1)

44-53: Consider adding accessibility attributes.

While the polymorphic implementation is solid, consider adding role="button" when rendering as a non-button element to maintain accessibility.

 <Component 
   className={clsx(containerStyle({ variant, style, radius, size }), className)}
   onClick={onClick}
+  role={as && as !== 'button' ? 'button' : undefined}
 >
frontend/src/components/Calendar/Core/TimeControlButton.tsx (1)

13-19: Consider using polymorphic Button component.

Now that the Button component supports polymorphism, consider replacing the native button elements with the Button component for consistent styling and behavior.

-        <button
-          aria-label='이전 주' 
-          className={timeControlButtonStyle({ order: 'first' })}
-          onClick={handleClickPrevWeek}
-        >
+        <Button
+          aria-label='이전 주'
+          className={timeControlButtonStyle({ order: 'first' })}
+          onClick={handleClickPrevWeek}
+          variant='secondary'
+          style='borderless'
+        >
           <ChevronLeft clickable fill={vars.color.Ref.Netural[600]} />
-        </button>
+        </Button>

Also applies to: 23-29

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1b01f0a and add8371.

📒 Files selected for processing (12)
  • frontend/src/components/Button/Button.stories.tsx (1 hunks)
  • frontend/src/components/Button/index.css.ts (13 hunks)
  • frontend/src/components/Button/index.tsx (3 hunks)
  • frontend/src/components/Calendar/Core/TimeControlButton.tsx (1 hunks)
  • frontend/src/components/SegmentControl/index.tsx (1 hunks)
  • frontend/src/routes/@components/Error/index.tsx (1 hunks)
  • frontend/src/routes/__root.tsx (2 hunks)
  • frontend/src/routes/landing/@components/index.css.ts (2 hunks)
  • frontend/src/routes/my-schedule/@components/SchedulePopover/PopoverButton.tsx (1 hunks)
  • frontend/src/theme/font.ts (3 hunks)
  • frontend/src/theme/reset.css.ts (1 hunks)
  • frontend/src/theme/typo.ts (1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
frontend/src/routes/__root.tsx

[error] 6-6: Do not shadow the global "Error" property.

Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.

(lint/suspicious/noShadowRestrictedNames)

frontend/src/routes/@components/Error/index.tsx

[error] 8-8: Do not shadow the global "Error" property.

Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.

(lint/suspicious/noShadowRestrictedNames)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Send PR Notification to Reviewers
🔇 Additional comments (14)
frontend/src/theme/typo.ts (1)

15-15: LGTM! Good addition of a semantic name for bold weight.

The addition of bold: 700 improves maintainability by providing a semantic name for the bold weight value, which is consistent with CSS standards.

frontend/src/theme/font.ts (1)

16-16: LGTM! Good improvement to the typographic hierarchy.

The font weight adjustments for headings create a clearer visual hierarchy:

  • H1 and H2 now use bold weight (700)
  • H3 uses semi-bold weight (600)

This aligns well with common typographic practices where primary headings have stronger emphasis.

Also applies to: 27-27, 38-38

frontend/src/routes/__root.tsx (1)

24-24: LGTM! Proper integration of error handling.

The notFoundComponent is correctly configured to handle 404 scenarios using TanStack Router's API.

frontend/src/routes/@components/Error/index.tsx (1)

28-35: Great implementation of the polymorphic Button component!

The Button component is correctly used with the polymorphic 'as' prop to integrate with the Link component, demonstrating the successful implementation of the button component's polymorphic capabilities as mentioned in the PR objectives.

frontend/src/components/Button/index.tsx (2)

14-16: LGTM! Well-designed polymorphic type.

The AsProp type is well-designed with proper generic constraints and default type parameter.


30-41: LGTM! Excellent polymorphic component implementation.

The component signature correctly combines AsProp<T>, ComponentPropsWithoutRef<T>, and ButtonProps while maintaining type safety.

frontend/src/components/Button/Button.stories.tsx (1)

10-13: LGTM! Consistent prop renaming in Storybook configuration.

The argTypes correctly reflect the Button component's prop rename from 'type' to 'variant' while maintaining the same options.

frontend/src/components/Calendar/Core/TimeControlButton.tsx (1)

37-37: LGTM! Consistent prop update.

The Button prop has been correctly updated from 'type' to 'variant'.

frontend/src/routes/my-schedule/@components/SchedulePopover/PopoverButton.tsx (1)

24-24: LGTM! Consistent prop update.

The Button prop has been correctly updated from 'type' to 'variant'.

frontend/src/components/SegmentControl/index.tsx (1)

39-39: LGTM: Button prop renamed correctly

The change from type to variant aligns with the Button component's interface update.

frontend/src/theme/reset.css.ts (1)

23-34: Verify layout integrity after positioning changes

The changes to html/body positioning from fixed to absolute and removal of #root and #page selectors could affect the application's layout structure. Please ensure:

  1. No scrolling issues occur in different viewport sizes
  2. Layout remains stable across different routes
  3. No unintended overflow occurs
frontend/src/routes/landing/@components/index.css.ts (1)

8-18: LGTM: Responsive overflow handling

The overflow handling with media query is well-implemented for responsive design:

  • Hidden overflow by default
  • Scrollable on smaller screens (≤1024px)
frontend/src/components/Button/index.css.ts (2)

13-26: Clarify the purpose of 're' variant

While the renaming from type to variant is correct, the re variant name is not descriptive and deviates from the naming pattern of other variants (primary, secondary, destructive).

Could you clarify the purpose of the re variant? Consider using a more descriptive name that follows the established pattern.


63-182: LGTM: Consistent variant renaming

The renaming from type to variant is consistently applied across all variant definitions, compound variants, and default variants.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🔭 Outside diff range comments (2)
frontend/src/components/Button/index.css.ts (2)

23-25: Consider removing redundant 're' variant.

The 're' variant appears to be a duplicate of the 'destructive' variant as they both use the same color token vars.color.Ref.Red[500]. Consider consolidating these variants to maintain a cleaner API.

-      re: {
-        color: vars.color.Ref.Red[500],
-      },

146-163: Remove redundant compound variants for 're' variant.

These compound variants for the 're' variant are redundant with the 'destructive' variant's styles. Consider removing them to maintain consistency and reduce code duplication.

-    {
-      variants: {
-        variant: 're',
-        style: 'filled',
-      },
-      style: {
-        backgroundColor: vars.color.Ref.Red[500],
-      },
-    },
-    {
-      variants: {
-        variant: 're',
-        style: 'outline',
-      },
-      style: {
-        backgroundColor: vars.color.Ref.Netural.White,
-        borderColor: vars.color.Ref.Red[500],
-      },
-    },
🧹 Nitpick comments (4)
frontend/src/theme/reset.css.ts (1)

23-23: Consider documenting the selector change.

The removal of #root and #page from the selector makes the styles more focused on standard elements, which is good. However, please document the reason for this change to help future maintainers understand the decision.

frontend/src/components/Button/index.css.ts (3)

18-18: Fix typo in color token name.

There appears to be a typo in the color token name: 'Netural' should be 'Neutral'.

-        color: vars.color.Ref.Netural[700],
+        color: vars.color.Ref.Neutral[700],

-        backgroundColor: vars.color.Ref.Netural[700],
+        backgroundColor: vars.color.Ref.Neutral[700],

-        backgroundColor: vars.color.Ref.Netural[100],
+        backgroundColor: vars.color.Ref.Neutral[100],

-        backgroundColor: vars.color.Ref.Netural.White,
+        backgroundColor: vars.color.Ref.Neutral.White,

-        color: vars.color.Ref.Netural[500],
+        color: vars.color.Ref.Neutral[500],

Also applies to: 96-96, 105-105, 114-114, 124-124


6-11: Enhance base styles with accessibility properties.

Consider adding the following accessibility-related properties to the base styles:

   base: {
     display: 'flex',
     alignItems: 'center',
     gap: vars.spacing[200],
     cursor: 'pointer',
+    userSelect: 'none',
+    ':focus-visible': {
+      outline: `2px solid ${vars.color.Ref.Primary[500]}`,
+      outlineOffset: '2px',
+    },
   },

165-175: Consider extracting small size styles into a separate variant.

The small size variant overrides multiple properties and sets a distinct visual style. Consider extracting these styles into a separate style variant for better organization and maintainability.

 variants: {
   style: {
     weak: {},
     filled: {
       color: vars.color.Ref.Neutral.White,
     },
     outline: {
       borderWidth: 1,
       borderStyle: 'solid',
     },
     borderless: {},
+    minimal: {
+      height: 18,
+      gap: vars.spacing[100],
+      color: vars.color.Ref.Neutral[500],
+      backgroundColor: 'transparent',
+      border: 'none',
+    },
   },

Then update the compound variant:

-    {
-      variants: {
-        size: 'sm',
-      }, 
-      style: {
-        height: 18,
-        gap: vars.spacing[100],
-        color: vars.color.Ref.Netural[500],
-        backgroundColor: 'transparent',
-        border: 'none',
-      },
-    },
+    {
+      variants: {
+        size: 'sm',
+      },
+      style: {
+        style: 'minimal',
+      },
+    },
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1b01f0a and add8371.

📒 Files selected for processing (12)
  • frontend/src/components/Button/Button.stories.tsx (1 hunks)
  • frontend/src/components/Button/index.css.ts (13 hunks)
  • frontend/src/components/Button/index.tsx (3 hunks)
  • frontend/src/components/Calendar/Core/TimeControlButton.tsx (1 hunks)
  • frontend/src/components/SegmentControl/index.tsx (1 hunks)
  • frontend/src/routes/@components/Error/index.tsx (1 hunks)
  • frontend/src/routes/__root.tsx (2 hunks)
  • frontend/src/routes/landing/@components/index.css.ts (2 hunks)
  • frontend/src/routes/my-schedule/@components/SchedulePopover/PopoverButton.tsx (1 hunks)
  • frontend/src/theme/font.ts (3 hunks)
  • frontend/src/theme/reset.css.ts (1 hunks)
  • frontend/src/theme/typo.ts (1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
frontend/src/routes/__root.tsx

[error] 6-6: Do not shadow the global "Error" property.

Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.

(lint/suspicious/noShadowRestrictedNames)

frontend/src/routes/@components/Error/index.tsx

[error] 8-8: Do not shadow the global "Error" property.

Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.

(lint/suspicious/noShadowRestrictedNames)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Send PR Notification to Reviewers
🔇 Additional comments (20)
frontend/src/theme/typo.ts (1)

15-15: LGTM! Good addition of a semantic font weight.

The addition of bold: 700 provides a semantic way to reference bold font weight, which is more maintainable than using numeric values directly.

frontend/src/theme/font.ts (1)

16-16: LGTM! Good improvement to heading hierarchy.

The font weight changes create a clearer visual hierarchy:

  • H1 and H2 now use the semantic bold weight (700)
  • H3 uses pretendard-0 (600)

This follows the common pattern where higher-level headings have stronger visual emphasis.

Also applies to: 27-27, 38-38

frontend/src/routes/__root.tsx (1)

24-24: LGTM! Good implementation of 404 handling.

The integration of the error component as notFoundComponent is a clean way to handle 404 cases.

frontend/src/routes/@components/Error/index.tsx (1)

28-35: Great use of polymorphic Button component!

The implementation perfectly demonstrates the button's polymorphic capabilities by using it as a Link component. This eliminates the need for wrapper components or click handlers.

frontend/src/components/Button/index.tsx (7)

1-6: Imports look correct.
All necessary types are imported from React, ensuring type safety for polymorphic component usage.


14-16: Definition of AsProp is well-structured.
Using a generic type parameter with a default of 'button' is a good approach for polymorphism.


19-19: Renaming 'type' to 'variant' is clear and consistent.
This aligns well with the new naming convention introduced throughout the codebase.


30-32: Polymorphic Button component signature is well-defined.
Specifying a default element type and destructuring props ensures flexibility and reusability.


41-43: Generic intersection of props is correct.
Combining AsProp, ComponentPropsWithoutRef, and ButtonProps accurately covers various element attributes.


44-53: Rendering logic is clear.
The default fallback to 'button' is appropriate, and clsx usage is concise for conditional classes.


54-54: Export statement is straightforward.
No issues with exporting the Button component as the default.

frontend/src/routes/my-schedule/@components/SchedulePopover/PopoverButton.tsx (1)

24-24: Renaming to 'variant' ensures consistency.
Matches the revised property name in the Button component while preserving the 'destructive' styling intent.

frontend/src/components/Button/Button.stories.tsx (1)

10-10: Storybook argTypes updated successfully.
The switch from 'type' to 'variant' aligns with the main Button component, ensuring accurate variant selection in stories.

frontend/src/components/Calendar/Core/TimeControlButton.tsx (1)

37-37: LGTM! Prop name change aligns with the new Button API.

The change from type to variant is consistent with the Button component's API update.

frontend/src/components/SegmentControl/index.tsx (1)

39-39: LGTM! Consistent prop name update.

The change from type to variant in buttonStyles maintains consistency with the updated Button API.

frontend/src/theme/reset.css.ts (1)

29-29: Verify layout behavior with position: absolute.

Changing position from fixed to absolute could affect the page's layout and scrolling behavior. Please ensure this change doesn't cause unintended side effects across different viewport sizes and content lengths.

Run this script to find potential layout issues:

frontend/src/routes/landing/@components/index.css.ts (3)

8-8: Verify fixed height impact on content.

Using a fixed height: 100vh instead of minHeight might cause content clipping issues when content exceeds viewport height.

Consider testing with various content lengths to ensure no content is cut off.


12-18: LGTM! Good responsive overflow handling.

The overflow handling is well implemented with responsive behavior for different screen sizes:

  • Hidden overflow by default
  • Scrollable on smaller screens (≤1024px)

73-74: Verify image size calculations.

The new width calculation calc(50%-${vars.spacing[300]}) and reduced maxHeight might affect image display.

Run this script to check for similar image sizing patterns:

✅ Verification successful

🏁 Script executed:

#!/bin/bash
# Search for similar image size calculations
rg "calc\(50%.*\)" --type css --type typescript

Length of output: 84


🏁 Script executed:

#!/bin/bash
# Search for image size calculation patterns in .css.ts files
echo "Searching for 'calc(50%-' patterns in .css.ts files:"
rg "calc\(50%-" -g "*.css.ts"

echo ""
echo "Searching for 'maxHeight: '28rem'' settings in .css.ts files:"
rg "maxHeight:\s*'28rem'" -g "*.css.ts"

Length of output: 527


Final Image Size Calculation Verification
The search confirmed that the new width and max-height settings appear exclusively in
• frontend/src/routes/landing/@components/index.css.ts
with the following lines:
  width: calc(50%-${vars.spacing[300]})
  maxHeight: '28rem'

No similar image sizing calculations were found elsewhere in the codebase. Please ensure that the missing spaces in the calc expression (i.e., “50%-”) are intentional and render correctly in your target browsers.

frontend/src/components/Button/index.css.ts (1)

177-182: LGTM! Default variants are well-configured.

The default variant configuration provides a good starting point with primary filled buttons of medium size and maximum radius.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
frontend/src/routes/@components/ErrorPage/index.tsx (1)

12-13: Consider using theme-based spacing values.

The gap value of 700 appears to be a magic number. Consider using theme-based spacing variables for consistency with the rest of the application.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between add8371 and cb0a376.

📒 Files selected for processing (2)
  • frontend/src/routes/@components/ErrorPage/index.tsx (1 hunks)
  • frontend/src/routes/__root.tsx (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • frontend/src/routes/__root.tsx
🔇 Additional comments (1)
frontend/src/routes/@components/ErrorPage/index.tsx (1)

28-35: Great implementation of polymorphic Button!

The Button component is well implemented using the new polymorphic capabilities, allowing it to function as a Link component. This is exactly what was intended in the PR objectives.

Copy link
Contributor

@dioo1461 dioo1461 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

@hamo-o hamo-o merged commit aed3e55 into dev Feb 7, 2025
1 check passed
@hamo-o hamo-o deleted the feature/fe/error-page-markup branch February 7, 2025 01:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🖥️ FE Frontend

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 에러페이지 구현

3 participants