# Pages and Components Class Diagram ## Class Diagram ```mermaid classDiagram class RootLayout { +ReactNode children +ReactNode header +ReactNode footer +ReactNode floatBtn +ReactQueryProviders +EdgeProvider +PopupController } class Page { <> +ReactNode render() } class LoginPage { +Login component +handleLogin() +validateInput() } class SurveySalePage { +SurveySaleList +SurveySaleDetail +handleSurveySubmit() } class SuitablePage { +SuitableList +SuitableDetail +handleSuitableSubmit() } class InquiryPage { +InquiryList +InquiryDetail +handleInquirySubmit() } class PasswordResetPage { +PasswordResetForm +handlePasswordReset() } class PDFPage { +PDFViewer +PDFGenerator +handlePDFGeneration() } class BaseComponent { <> +ReactNode render() } class UIComponent { +Button +Input +Select +Modal } class PopupComponent { +PopupController +PopupContent +handlePopup() } class PDFComponent { +PDFViewer +PDFGenerator +handlePDF() } class SurveyComponent { +SurveyForm +SurveyList +handleSurvey() } class InquiryComponent { +InquiryForm +InquiryList +handleInquiry() } %% Relationships RootLayout --> Page Page <|-- LoginPage Page <|-- SurveySalePage Page <|-- SuitablePage Page <|-- InquiryPage Page <|-- PasswordResetPage Page <|-- PDFPage BaseComponent <|-- UIComponent BaseComponent <|-- PopupComponent BaseComponent <|-- PDFComponent BaseComponent <|-- SurveyComponent BaseComponent <|-- InquiryComponent LoginPage --> BaseComponent SurveySalePage --> SurveyComponent SuitablePage --> SurveyComponent InquiryPage --> InquiryComponent PasswordResetPage --> UIComponent PDFPage --> PDFComponent RootLayout --> PopupComponent ``` ## Component Hierarchy 1. **Root Layout** - 최상위 레이아웃 컴포넌트 - ReactQuery와 Edge Provider를 포함 - 공통 레이아웃 요소 관리 2. **Pages** - LoginPage: 로그인 기능 - SurveySalePage: 설문 판매 관리 - SuitablePage: 적합성 관리 - InquiryPage: 문의 관리 - PasswordResetPage: 비밀번호 재설정 - PDFPage: PDF 생성 및 관리 3. **Base Components** - UIComponent: 기본 UI 요소 - PopupComponent: 팝업 관리 - PDFComponent: PDF 관련 기능 - SurveyComponent: 설문 관련 기능 - InquiryComponent: 문의 관련 기능 ## Component Relationships 1. **Page-Component Relationship** - 각 페이지는 필요한 컴포넌트들을 조합하여 구성 - 페이지별로 특화된 컴포넌트 사용 2. **Component Inheritance** - 모든 컴포넌트는 BaseComponent 인터페이스 구현 - 각 컴포넌트 타입별로 특화된 기능 제공 3. **Layout Integration** - RootLayout이 전체 페이지 구조 관리 - PopupComponent를 통한 모달 관리 - 공통 UI 요소의 일관성 유지