Files
Gnuboard7/docs/frontend/templates/sirsoft-basic/components.md
T
HeuJung 8328b1db77 docs(core,extensions): 확장 개발자 문서 9세트 집필과 생성기 정합 보강
S1 파일럿 3종(sirsoft-board · sirsoft-gdpr · sirsoft-admin_basic)에 이어
결제·본인인증 동형군 6종의 AGENTS.md · README.md · docs/ 5문서를 집필했다.
확장을 고치려는 쪽이 매번 src/ 를 훑어 구조를 재발견하지 않도록, 설계 의도와
확장점(발행·구독 훅)·수정 시 동반 의무·금지 패턴을 코드 근거로 서술했다.

생성기(ExtensionDocScaffolder)에서 표를 무의미하게 만들던 세 결함을 함께 고쳤다.
getLayoutExtensions 기본 구현이 돌려주는 절대경로가 파일 목록과 중복돼 로컬
머신 경로가 커밋 문서에 실리던 문제, getNotificationDefinitions 를 'key'/'event'
로 읽어 모든 행이 '-' 로 찍히던 문제, getSettingsLayout 절대경로가 정규화 없이
노출되던 문제다. 셋 다 예외를 남기지 않고 표만 조용히 망가뜨리므로
ExtensionDocContractTest 에 각각의 되돌림 red 를 확인한 단언을 두었다.
템플릿의 extensions/{id}/ 는 모듈·플러그인의 발행과 반대 방향(오버라이드)이라
별도 블록(template-overrides)으로 분리했다.

sirsoft-admin_basic 의 컴포넌트·핸들러·레이아웃 문서를 코어 docs/ 에서 그 템플릿
소유로 이관하고, 남은 참조 6축을 재는 가드를 추가했다. 이관 후 남은 옛 경로는
오류가 아니라 헛걸음으로만 나타나 드러나지 않는다. 의 상대 링크가
한 단계 얕아 공유 docs/ 대신 를 가리키던 문제도 함께 고쳤다.

README 상단의 확장명 이미지 배지를 평문 H1 로 바꿨다( 지시 2026-08-31).
루트 README.md · README.ko.md 도 같은 기준을 적용했다. 정보 배지는 유지한다.

sirsoft-gdpr: 회원탈퇴로 자동 철회된 동의가 관리자 동의 이력 화면의 출처 필터로
걸러지지 않던 문제를 고쳤다. Repository 가 'withdraw' 리터럴을 직접 UPDATE 에
싣는데 그 값이 ConsentSource enum 에 없어, 화면 필터 옵션·라벨 어느 쪽에도
도달하지 못했다. 어휘를 enum 단일 출처로 모으고 ko·en·ja 라벨과 필터 옵션을
함께 채웠으며, 어휘 대조 테스트의 모집단에 Repository 를 편입했다.
2026-08-31 15:57:44 +09:00

9.6 KiB

sirsoft-basic 컴포넌트

템플릿 식별자: sirsoft-basic (type: user, v0.4.16) 관련 문서: 핸들러 | 레이아웃 | 컴포넌트 Props 레퍼런스


TL;DR (5초 요약)

1. Basic 26개: HTML 래핑 (Div, Button, Input, Select, Form, A, H1~H4, PasswordInput 등)
2. Composite 27개: UI 패턴 캡슐화 (Header, Footer, Modal, ProductCard, Pagination 등)
3. Layout 5개: 페이지 구조 (Container, Grid, Flex, SectionLayout, ThreeColumnLayout)
4. 사용자(User) 템플릿 전용 — 모듈 레이아웃(user/ 하위)에서 사용
5. features: dark_mode, responsive, multi_language, multi_currency 지원

목차

  1. 컴포넌트 개요
  2. Basic Components (26개)
  3. Composite Components (27개)
  4. Layout Components (5개)
  5. sirsoft-admin_basic과의 차이

컴포넌트 개요

타입 개수 설명
Basic 26 HTML 태그 래핑 — 최소 단위 컴포넌트
Composite 27 기본 컴포넌트 조합 — UI 패턴 캡슐화
Layout 5 페이지 구조 정의 — 컨테이너/그리드/플렉스
합계 58

소스: templates/_bundled/sirsoft-basic/components.json 컴포넌트 소스: templates/_bundled/sirsoft-basic/src/components/{basic,composite,layout}/*.tsx


Basic Components (26개)

HTML 태그를 래핑하는 최소 단위 컴포넌트입니다.

텍스트/링크

컴포넌트 설명 주요 Props 바인딩
A 앵커/링크 href -
H1 제목 (h1) - -
H2 제목 (h2) - -
H3 제목 (h3) - -
H4 제목 (h4) - -
P 문단 - -
Span 인라인 텍스트 - -
Label 라벨 - -

컨테이너

컴포넌트 설명 주요 Props 바인딩
Div 범용 컨테이너 - -
Nav 네비게이션 래퍼 - -
Form 폼 컨테이너 - -
Header HTML header 래퍼 - -
Footer HTML footer 래퍼 - -
Hr 수평선 - -

폼 입력

컴포넌트 설명 주요 Props 바인딩
Input 텍스트 입력 label, error checkable
Select 선택 박스 label, error -
Option Select 내부 옵션 value, disabled -
Textarea 텍스트 영역 label, error -
Checkbox 체크박스 label checked
PasswordInput 비밀번호 입력 (보기/숨기기, 조건 검증, 확인 일치) label, error, showToggle, showValidation, isConfirmField, confirmTarget, showRules, ... -
Button 버튼 variant, size -

미디어

컴포넌트 설명 주요 Props 바인딩
Icon FontAwesome 아이콘 name -
Img 이미지 src, alt -

기타

컴포넌트 설명
Table HTML table wrapper
Ul 순서 없는 리스트
Li 리스트 아이템

Composite Components (27개)

기본 컴포넌트를 조합하여 UI 패턴을 캡슐화한 복합 컴포넌트입니다.

사이트 레이아웃

컴포넌트 설명 주요 Props
Header 사이트 헤더 (로고, 네비게이션, 검색, 사용자 메뉴) siteName
Footer 사이트 푸터 (저작권, 링크, 소셜) siteName
MobileNav 모바일 네비게이션 드로어 -

쇼핑몰

컴포넌트 설명 주요 Props
ProductCard 상품 카드 (이미지, 제목, 가격) product, showDiscount
ProductImageViewer 상품 이미지 뷰어 (메인 + 썸네일 + 라이트박스) images
QuantitySelector 수량 선택기 (+/- 버튼) value, min, max

게시판

컴포넌트 설명 주요 Props
PostReactions 게시글 리액션 버튼 그룹 postId, reactions
ExpandableContent 콘텐츠 펼치기/접기 (높이 초과 시 그라데이션) maxHeight, expandText, collapseText

인증

컴포넌트 설명 주요 Props
SocialLoginButtons 소셜 로그인 버튼 그룹 providers

사용자

컴포넌트 설명 주요 Props
Avatar 사용자 아바타 (이미지 또는 이름 첫 글자) name, avatar, size, text
AvatarUploader 아바타 이미지 업로드 (원형 UI, 즉시 업로드) src, fallbackText, size, uploadEndpoint, deleteEndpoint, showDeleteButton, ...
UserInfo 사용자 정보 표시 및 드롭다운 name, userId, subText, isGuest, showDropdown, clickable, ...

에디터/콘텐츠

컴포넌트 설명 주요 Props
HtmlContent HTML 안전 렌더링 (DOMPurify XSS 방지) content, text, isHtml, purifyConfig
HtmlEditor HTML/텍스트 에디터 (WYSIWYG, 미리보기) name, value, placeholder, isHtml, showPreview, minHeight
RichTextEditor 리치 텍스트 에디터 value, placeholder
ImageGallery 이미지 갤러리 (썸네일 + 메인 이미지) images

파일/미디어

컴포넌트 설명 주요 Props
FileUploader 파일 업로드 accept, maxSize, multiple

네비게이션/피드백

컴포넌트 설명 주요 Props
TabNavigation 탭 네비게이션 (underline/pills/enclosed) tabs, activeTabId, variant, onTabChange, hiddenTabIds
Pagination 페이지네이션 currentPage, totalPages, maxVisiblePages, showFirstLast, prevText, nextText

TabNavigation hiddenTabIds: 특정 조건에서 탭을 동적으로 숨길 때 사용합니다. 탭 아이템의 id 배열을 전달하면 해당 탭이 렌더링에서 제외됩니다.

{
  "name": "TabNavigation",
  "props": {
    "tabs": [...],
    "hiddenTabIds": "{{_global.modules?.['sirsoft-ecommerce']?.inquiry?.board_slug ? [] : ['qna']}}"
  }
}

| SearchBar | 검색 바 (자동완성 지원) | name, placeholder, value, showButton, suggestions, showSuggestions | | Modal | 모달 다이얼로그 (ESC, 포커스 트랩) | isOpen, onClose, title, width | | ConfirmDialog | 확인/취소 다이얼로그 | isOpen, onClose, title, message, confirmText, cancelText, ... | | Toast | 토스트 알림 | toasts, position, duration | | ThemeToggle | 테마 전환 토글 (auto/light/dark) | autoText, lightText, darkText |

페이지 전환

컴포넌트 설명 주요 Props
PageTransitionIndicator 페이지 전환 로딩 인디케이터 -
PageTransitionBlur 페이지 전환 시 콘텐츠 블러 오버레이 -
PageSkeleton 동적 스켈레톤 UI 렌더러 components, options

Layout Components (5개)

페이지 구조를 정의하는 레이아웃 컴포넌트입니다.

컴포넌트 설명 주요 Props
Container 레이아웃 컨테이너 maxWidth
Flex Flexbox 레이아웃 direction, gap
Grid Grid 레이아웃 cols, gap
SectionLayout 섹션 레이아웃 (제목, 부제목, 패딩) title, subtitle, padding, background
ThreeColumnLayout 3단 레이아웃 (좌/중/우) leftWidth, centerWidth, rightWidth, gap

sirsoft-admin_basic과의 차이

공통 컴포넌트

두 템플릿 모두에 존재하는 컴포넌트:

타입 공통 컴포넌트
Basic A, Button, Checkbox, Div, Form, H1~H4, Icon, Img, Input, Label, Li, Nav, P, Select, Span, Table, Textarea, Ul
Composite ConfirmDialog, FileUploader, HtmlContent, HtmlEditor, ImageGallery, Modal, Pagination, ProductCard, SearchBar, TabNavigation, ThemeToggle, Toast
Layout Container, Flex, Grid, SectionLayout, ThreeColumnLayout

sirsoft-basic 전용 컴포넌트

타입 전용 컴포넌트 설명
Basic PasswordInput 비밀번호 입력 (보기/숨기기, 검증)
Basic Header, Footer, Hr HTML5 시맨틱 태그
Composite Header, Footer 사이트 헤더/푸터 (composite)
Composite MobileNav 모바일 드로어 네비게이션
Composite ProductImageViewer 상품 이미지 뷰어
Composite QuantitySelector 수량 선택기
Composite PostReactions 게시글 리액션
Composite SocialLoginButtons 소셜 로그인
Composite Avatar, AvatarUploader 아바타 관련
Composite UserInfo 사용자 정보 드롭다운
Composite RichTextEditor 리치 텍스트 에디터
Composite ExpandableContent 콘텐츠 접기/펼치기
Composite PageTransitionBlur 전환 블러 효과
Composite PageSkeleton 스켈레톤 UI

sirsoft-admin_basic 전용 컴포넌트 (이 템플릿에 없음)

AdminSidebar, AdminHeader, AdminFooter, PageHeader, DataGrid, CodeEditor, DynamicFieldList, MultilingualInput, TagInput, Toggle, RadioGroup, FormField, SlotContainer, FilterGroup 등 관리자 전용 컴포넌트 39개+


관련 문서