Skip to content

Conversation

@young-jin-son
Copy link
Collaborator

@young-jin-son young-jin-son commented Jul 15, 2025

Issue Number

close #288

As-Is

To-Be

  • 서비스 이용 가이드에 필요한 이미지 파일 추가
  • 이용 가이드 컴포넌트 추가

Check List

  • 테스트가 전부 통과되었나요?
  • 모든 commit이 push 되었나요?
  • merge할 branch를 확인했나요?
  • Assignee를 지정했나요?
  • Label을 지정했나요?

Test Screenshot

2025-07-15.13.49.33.mov

(Optional) Additional Description

Summary by CodeRabbit

  • New Features

    • Introduced a multi-step service guide on the landing page, including introductory, step-by-step, and outro sections.
    • Added visual indicators and scroll prompts to guide users through the service introduction.
    • Enhanced the layout with smooth vertical scrolling and snap behavior for a seamless guide experience.
  • Style

    • Updated landing page and carousel styles for improved layout, scrolling, and visual consistency.
    • Added new styled components for guide sections and button containers.
  • Refactor

    • Replaced previous landing page layout with a new guided flow using modular components.

@young-jin-son young-jin-son self-assigned this Jul 15, 2025
@young-jin-son young-jin-son added refactor 코드 리팩토링 (기능은 그대로인데, 코드 개선, 폴더 변경, 변수명/함수명 수정) FE 프론트엔드 작업 labels Jul 15, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 15, 2025

Walkthrough

A step-based service guide was introduced to the landing page. New components and types for guide slides, intro, and outro were added, along with styled components for layout and visual indicators. The main landing page was refactored to render these guide steps sequentially, replacing the previous static layout and carousel.

Changes

File(s) Change Summary
LandingPage.constants.ts, LandingPage.types.ts Added constants and types/interfaces for service guide steps and carousel props.
LandingPage.styled.ts Updated landing layout for scroll snapping and removed MainContent.
components/KakaoLoginButton/KakaoLoginButton.styled.ts, components/KakaoLoginButton/index.tsx Added ButtonContainer styled component and wrapped button in it.
components/CarouselList/CarouselList.styled.ts Reduced ListLayout height.
components/ServiceGuide/GuideIntro/GuideIntro.styled.ts, components/ServiceGuide/GuideIntro/index.tsx Added new GuideIntro component and its styled elements.
components/ServiceGuide/GuideOutro/GuideOutro.styled.ts, components/ServiceGuide/GuideOutro/index.tsx Added new GuideOutro component and its styled elements.
components/ServiceGuide/GuideSlide/GuideSlide.styled.ts, components/ServiceGuide/GuideSlide/index.tsx Added new GuideSlide component and its styled elements, including step indicator logic.
LandingPage/index.tsx Refactored to use GuideIntro, a mapped list of GuideSlide, and GuideOutro instead of previous layout.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant LandingPage
  participant GuideIntro
  participant GuideSlide
  participant GuideOutro

  User->>LandingPage: Visit page
  LandingPage->>GuideIntro: Render intro section
  User->>GuideIntro: View intro, scroll down
  loop For each step in SERVICE_GUIDE_STEPS
    LandingPage->>GuideSlide: Render GuideSlide(step)
    User->>GuideSlide: View step, scroll to next
  end
  LandingPage->>GuideOutro: Render outro section
  User->>GuideOutro: View outro, interact with login
Loading

Assessment against linked issues

Objective Addressed Explanation
Add a service usage guide to the landing page (#288)
Refactor landing page to include step-based guide components (#288)

Suggested reviewers

  • rbgksqkr

Poem

A hop, a skip, a scroll below—
The landing page now guides your flow!
Step by step, the path is clear,
With buttons bright and slides to cheer.
🐇✨
New guide in place, so users see
How easy service steps can be!

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 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.
    • Explain this complex logic.
    • 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 explain this code block.
    • @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 explain its main purpose.
    • @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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @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
Contributor

@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: 5

🧹 Nitpick comments (9)
frontend/src/pages/LandingPage/LandingPage.styled.ts (2)

8-10: Consider accessibility implications of scroll behavior.

The mandatory scroll snapping and smooth scrolling enhance the user experience, but consider that some users may prefer reduced motion or find snap scrolling disorienting.

Consider respecting user motion preferences:

  overflow-y: scroll;
  scroll-snap-type: y mandatory;
- scroll-behavior: smooth;
+ scroll-behavior: smooth;
+ 
+ @media (prefers-reduced-motion: reduce) {
+   scroll-behavior: auto;
+   scroll-snap-type: none;
+ }

12-16: Evaluate accessibility impact of hidden scrollbars.

Hiding scrollbars completely may impact users who rely on visual scrollbar indicators for navigation context, especially on larger screens where scroll position might not be obvious.

Consider showing scrollbars on focus or hover for better accessibility:

  scrollbar-width: none;
  -ms-overflow-style: none;
  &::-webkit-scrollbar {
    display: none;
  }
+ 
+ &:focus-within::-webkit-scrollbar {
+   display: block;
+ }
frontend/src/pages/LandingPage/LandingPage.types.ts (1)

10-14: Consider more specific typing for better type safety.

The interface is well-structured, but could benefit from more constrained types for better validation and developer experience.

Consider adding constraints for better type safety:

export interface ServiceGuideStepType {
- step: number;
+ step: 1 | 2 | 3 | 4 | 5; // or use a const assertion if steps are dynamic
  description: string;
- image: string;
+ image: string; // Consider adding validation for image URLs/paths
}

Alternatively, if the step count is variable, consider adding a comment documenting the expected range or validation requirements.

frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/GuideOutro.styled.ts (2)

14-18: Linear-gradient stop at 56 % creates an abrupt color cut-off
Unless you have a specific design spec, stopping the gradient at 56.28% may produce a visible step on tall screens. Consider extending to 100% or using additional color stops for a smoother transition.

-    ${({ theme }) => theme.colors.white} 56.28%
+    ${({ theme }) => theme.colors.white} 100%

28-31: Duplicate ScrollDownText style exists in GuideIntro
The exact same styled snippet lives in GuideIntro.styled.ts. Extract this to a shared helper (e.g., common/ScrollDownText.ts) to keep styles DRY.

frontend/src/pages/LandingPage/components/ServiceGuide/GuideIntro/GuideIntro.styled.ts (2)

27-30: DRY violation – same ScrollDownText definition as Outro
See comment in GuideOutro.styled.ts; factor this out to a shared component to avoid style drift.


32-35: Hard-coded image dimensions may break responsive layout
Fixed 4.4rem × 6.4rem means the arrow can look blurry on high-DPI or oversized on small devices. Consider using max-width/height: auto or an SVG.

frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/GuideSlide.styled.ts (2)

7-8: Left-over placeholder comment
/* justify-content: ; */ looks like an unfinished line. Remove or complete it.

-  /* justify-content: ; */
+  /* intentionally left blank – vertical spacing handled via gap */

52-55: Third ButtonContainer variant found
Now we have three differently-styled ButtonContainers (Intro, Outro, Slide). Preface with the component context (e.g., SlideButtonContainer) or consolidate.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 6229321 and dae8958.

📒 Files selected for processing (13)
  • frontend/src/pages/LandingPage/LandingPage.constants.ts (2 hunks)
  • frontend/src/pages/LandingPage/LandingPage.styled.ts (1 hunks)
  • frontend/src/pages/LandingPage/LandingPage.types.ts (1 hunks)
  • frontend/src/pages/LandingPage/components/CarouselList/CarouselList.styled.ts (1 hunks)
  • frontend/src/pages/LandingPage/components/KakaoLoginButton/KakaoLoginButton.styled.ts (1 hunks)
  • frontend/src/pages/LandingPage/components/KakaoLoginButton/index.tsx (1 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideIntro/GuideIntro.styled.ts (1 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideIntro/index.tsx (1 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/GuideOutro.styled.ts (1 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/index.tsx (1 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/GuideSlide.styled.ts (1 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/index.tsx (1 hunks)
  • frontend/src/pages/LandingPage/index.tsx (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (5)
frontend/src/pages/LandingPage/LandingPage.constants.ts (1)
frontend/src/pages/LandingPage/LandingPage.types.ts (1)
  • ServiceGuideStepType (10-14)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/index.tsx (1)
frontend/src/pages/LandingPage/LandingPage.types.ts (1)
  • ServiceGuideStepType (10-14)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideIntro/GuideIntro.styled.ts (1)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/GuideOutro.styled.ts (1)
  • ScrollDownText (28-31)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/GuideOutro.styled.ts (2)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideIntro/GuideIntro.styled.ts (1)
  • ScrollDownText (27-30)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/GuideSlide.styled.ts (1)
  • ButtonContainer (52-55)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/GuideSlide.styled.ts (1)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/GuideOutro.styled.ts (1)
  • ButtonContainer (33-38)
🔇 Additional comments (6)
frontend/src/pages/LandingPage/components/KakaoLoginButton/KakaoLoginButton.styled.ts (1)

3-9: LGTM! Well-structured styled component.

The ButtonContainer styled component follows good practices with appropriate CSS properties for a flex container wrapper. The z-index positioning suggests it's designed for proper layering in the new guide layout.

frontend/src/pages/LandingPage/components/CarouselList/CarouselList.styled.ts (1)

7-7: LGTM! Height adjustment aligns with new layout.

The height reduction from 18rem to 15rem is appropriate for integrating the carousel into the new guided service flow layout.

frontend/src/pages/LandingPage/components/KakaoLoginButton/index.tsx (1)

12-19: LGTM! Clean wrapper addition without functional changes.

The addition of ButtonContainer wrapper maintains all existing functionality while providing the required container structure for the new layout. The onClick handler remains properly attached to the button element.

frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/index.tsx (1)

7-19: LGTM! Well-structured composition component.

The GuideOutro component follows React best practices by cleanly composing existing components. The layout structure is logical and the Korean user prompt text is appropriate for the landing page context.

frontend/src/pages/LandingPage/LandingPage.constants.ts (1)

1-1: LGTM! Proper type import added.

The import statement correctly includes the ServiceGuideStepType to support the new service guide steps constant.

frontend/src/pages/LandingPage/components/ServiceGuide/GuideOutro/GuideOutro.styled.ts (1)

33-38: Re-use of ButtonContainer name across modules can be error-prone
GuideSlide.styled.ts exports another ButtonContainer with different layout rules (position: absolute). Importing both in the same file increases the chance of a wrong import alias. Either rename one or colocate the shared style.

Comment on lines 11 to 13
{SERVICE_GUIDE_STEPS.map((step) => (
<GuideSlide key={step.step} step={step} />
))}
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify uniqueness of step keys for React reconciliation.

Using step.step as the key assumes that step numbers are unique across all guide steps. This should be validated to prevent React reconciliation issues.

Run the following script to verify that step numbers are unique in SERVICE_GUIDE_STEPS:

If duplicates are found, consider using a unique identifier or array index as the key:

- <GuideSlide key={step.step} step={step} />
+ <GuideSlide key={`step-${step.step}`} step={step} />

🏁 Script executed:

#!/bin/bash
# Description: Check if step numbers in SERVICE_GUIDE_STEPS are unique
# Expected: No duplicate step numbers found

# Find the constants file and check for duplicate step numbers
fd "LandingPage.constants" --type f --exec cat {} \; | \
  rg -A 20 "SERVICE_GUIDE_STEPS" | \
  rg "step:" | \
  sort | \
  uniq -d

Length of output: 114


Let's pinpoint the actual SERVICE_GUIDE_STEPS declaration and then extract its step values to check for duplicates:

This will clearly surface any repeated keys (or confirm uniqueness).


🏁 Script executed:

#!/bin/bash
# 1. Locate the file defining SERVICE_GUIDE_STEPS
file=$(rg -l "SERVICE_GUIDE_STEPS")
echo "Inspecting: $file"

# 2. Extract all `step:` values (numbers or strings) and list any duplicates
grep -Po "step\s*:\s*['\"]?\K[0-9A-Za-z_-]+(?=['\"]?)" "$file" \
  | sort \
  | uniq -d \
  || echo "No duplicate step values found."

Length of output: 668


Let’s isolate the constants file and re-run the duplicate check just on that:


🏁 Script executed:

#!/bin/bash
# 1. Locate only the constants file defining SERVICE_GUIDE_STEPS
file=$(rg -l "SERVICE_GUIDE_STEPS" --glob "*LandingPage.constants.ts")
echo "Inspecting: $file"

# 2. Extract all `step:` values and report any repeats
grep -Po "step\s*:\s*['\"]?\K[0-9A-Za-z_-]+(?=['\"]?)" "$file" \
  | sort \
  | uniq -c \
  | awk '$1 > 1 { print "Duplicate:", $2, "(count:", $1, ")" }' \
  || echo "✔ No duplicate step values found."

Length of output: 467


Let’s inspect the actual SERVICE_GUIDE_STEPS declaration to confirm the property name and its values:

This will reveal how step is defined (and named) and allow us to accurately extract and check for duplicate values.


🏁 Script executed:

#!/bin/bash
# Show lines around the SERVICE_GUIDE_STEPS array in the constants file
rg -n "SERVICE_GUIDE_STEPS" -A 20 frontend/src/pages/LandingPage/LandingPage.constants.ts

Length of output: 741


React key uniqueness verified – no duplicates found
I ran a scan against frontend/src/pages/LandingPage/LandingPage.constants.ts and confirmed that all step values (1 through 4) are unique, so using step.step as the React key is safe.

However, it’s worth adding a quick guard for an empty SERVICE_GUIDE_STEPS array to ensure the component handles that edge case gracefully. For example, in frontend/src/pages/LandingPage/index.tsx:

// Before rendering GuideSlide list
if (SERVICE_GUIDE_STEPS.length === 0) {
  return <div>No guide steps available.</div>;
}

return (
  <>
    {SERVICE_GUIDE_STEPS.map((step) => (
      <GuideSlide key={step.step} step={step} />
    ))}
  </>
);

This prevents rendering an empty fragment and makes the UI more robust if the steps ever come back empty.

🤖 Prompt for AI Agents
In frontend/src/pages/LandingPage/index.tsx around lines 11 to 13, add a guard
clause before rendering the SERVICE_GUIDE_STEPS list to check if the array is
empty. If it is empty, return a fallback UI element such as a div with a message
like "No guide steps available." This prevents rendering an empty fragment and
improves robustness when SERVICE_GUIDE_STEPS has no items.

Comment on lines 17 to 19
{Array.from({ length: 5 }).map((_, index) => (
<S.IndexCircle key={index} $isActive={index + 1 === step.step} />
))}
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Replace hardcoded step count with dynamic calculation.

The hardcoded array length of 5 creates a tight coupling between this component and the number of guide steps. If the number of steps changes, the indicators will be incorrect.

Make the step count dynamic by receiving the total count as a prop:

interface ServiceGuideProps {
  step: ServiceGuideStepType;
+ totalSteps: number;
}

- const GuideSlide = ({ step }: ServiceGuideProps) => {
+ const GuideSlide = ({ step, totalSteps }: ServiceGuideProps) => {
  return (
    <S.GuideSlideLayout>
      <LandingHeader />
      <S.Description>{step.description}</S.Description>

      <S.IndexContainer>
-       {Array.from({ length: 5 }).map((_, index) => (
+       {Array.from({ length: totalSteps }).map((_, index) => (
          <S.IndexCircle key={index} $isActive={index + 1 === step.step} />
        ))}
      </S.IndexContainer>

Then update the usage in LandingPage/index.tsx:

- <GuideSlide key={step.step} step={step} />
+ <GuideSlide key={step.step} step={step} totalSteps={SERVICE_GUIDE_STEPS.length} />
🤖 Prompt for AI Agents
In frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/index.tsx
around lines 17 to 19, replace the hardcoded array length of 5 with a dynamic
value passed as a prop representing the total number of steps. Modify the
component to accept a prop like totalSteps and use Array.from({ length:
totalSteps }) for rendering the indicators. Then update the parent component
LandingPage/index.tsx to pass the correct totalSteps value to this component.

Comment on lines +26 to +31
export const Image = styled.img`
max-width: 260px;
z-index: 1;
position: relative;
bottom: 0;
`;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

bottom: 0 on a position: relative element is a no-op
Offset properties have no effect with position: relative unless you intend to nudge the element. Use position: absolute inside a relative parent or drop the offset.

-export const Image = styled.img`
-  max-width: 260px;
-  z-index: 1;
-  position: relative;
-  bottom: 0;
-`;
+export const Image = styled.img`
+  max-width: 260px;
+  z-index: 1;
+  /* Removed ineffective positioning; parent handles layout */
+`;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export const Image = styled.img`
max-width: 260px;
z-index: 1;
position: relative;
bottom: 0;
`;
export const Image = styled.img`
max-width: 260px;
z-index: 1;
/* Removed ineffective positioning; parent handles layout */
`;
🤖 Prompt for AI Agents
In
frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/GuideSlide.styled.ts
between lines 26 and 31, the CSS rule 'bottom: 0' on a 'position: relative'
element has no effect. To fix this, either remove the 'bottom: 0' property if no
offset is needed, or change the position to 'absolute' if you intend to position
the element relative to its nearest positioned ancestor.

Copy link
Contributor

@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: 0

🧹 Nitpick comments (2)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/index.tsx (2)

17-21: Previous feedback addressed, but consider making step calculation more robust.

The dynamic step count implementation correctly addresses the previous review feedback. However, the step calculation index + 1 === step.step assumes 1-based step numbering, which could be fragile if the step numbering system changes.

Consider adding a comment to clarify the 1-based assumption or making it more explicit:

  <S.IndexContainer>
    {Array.from({ length: totalSteps }).map((_, index) => (
-     <S.IndexCircle key={index} $isActive={index + 1 === step.step} />
+     <S.IndexCircle key={index} $isActive={index + 1 === step.step} /> {/* Assumes 1-based step numbering */}
    ))}
  </S.IndexContainer>

22-22: Improve image alt text for better accessibility.

The hardcoded alt text "service guide" is too generic and doesn't provide meaningful information about the specific step's content.

Consider making the alt text more descriptive:

- <S.Image src={step.image} alt="service guide" />
+ <S.Image src={step.image} alt={`Service guide step ${step.step}: ${step.description}`} />
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between dae8958 and 7b62b53.

📒 Files selected for processing (4)
  • frontend/src/pages/LandingPage/LandingPage.constants.ts (2 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideIntro/index.tsx (1 hunks)
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/index.tsx (1 hunks)
  • frontend/src/pages/LandingPage/index.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • frontend/src/pages/LandingPage/LandingPage.constants.ts
  • frontend/src/pages/LandingPage/components/ServiceGuide/GuideIntro/index.tsx
  • frontend/src/pages/LandingPage/index.tsx
🧰 Additional context used
🧬 Code Graph Analysis (1)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/index.tsx (1)
frontend/src/pages/LandingPage/LandingPage.types.ts (1)
  • ServiceGuideStepType (10-14)
🔇 Additional comments (3)
frontend/src/pages/LandingPage/components/ServiceGuide/GuideSlide/index.tsx (3)

1-9: LGTM! Interface properly implements previous feedback.

The interface correctly includes the totalSteps prop as suggested in previous reviews, making the component more flexible and maintainable.


24-26: LGTM! Clean button implementation.

The button container wrapper provides good separation of concerns for styling.


11-31: Excellent implementation that addresses previous feedback.

The component structure is clean and well-organized. The implementation successfully incorporates the dynamic step counting that was suggested in previous reviews, making the component more maintainable and flexible.

@young-jin-son young-jin-son merged commit e075756 into develop Jul 15, 2025
3 checks passed
@young-jin-son young-jin-son deleted the refactor/#288 branch July 15, 2025 05:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

FE 프론트엔드 작업 refactor 코드 리팩토링 (기능은 그대로인데, 코드 개선, 폴더 변경, 변수명/함수명 수정)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] 랜딩 페이지 서비스 가이드 추가

2 participants