마크다운으로 복사링크 공유

검색 입력

필터 팝오버와 시트가 함께 쓰는 검색 줄이에요. 폰 키보드의 Enter가 '검색'으로 보여요.

모바일PCSearchField관련 팝오버 · 칩 · 아이콘 버튼

고르기#

이 부품을 언제 쓰고, 언제 다른 것을 쓰는지예요.

언제 쓰나#

  • 글자로 찾는 입력 - 검색창, 검색을 여는 버튼 모양까지.

쓰지 말아야 할 때 · 대신 쓸 것#

  • 정해진 몇 개 중 고르기 → 칩
  • 이메일·이름처럼 찾기가 아닌 입력 → 글자 입력칸

여기로 합친 이름#

아래 이름들은 이 부품의 별칭·프리셋이에요. 새로 쓸 때는 SearchField를 써요.

사용 예제#

할 일마다 실물과 코드예요. 편집을 누르면 코드를 고쳐 바로 볼 수 있어요.

Enter로 찾기#

입력하고 Enter를 눌러 보세요. 글자가 있으면 지우기가 생겨요.

페이지 머리에 크게 두기#

해부도#

  1. 1

    컨테이너

    상자예요. bare면 상자 없이 여백만 남아요.

  2. 2

    돋보기

    icon={false}로 뺄 수 있어요.

  3. 3

    입력

    폰 키보드의 Enter가 '검색'으로 보여요.

  4. 4

    지우기

    글자가 있을 때만 생겨요.

속성#

Bare#

상자·테두리 없이 아이콘과 입력만 남아요.

Size#

md 44px · lg 48px 높이예요.

인터페이스#

타입에서 자동으로 뽑은 표예요.

SearchField#

속성기본값타입설명
value*-string지금 값이에요.
onChange*-(v: string) => void값이 바뀌면 새 값으로 불러요.
onEnter-() => void
placeholder-string비어 있을 때 보이는 안내예요. 화면 읽기 이름으로도 써요.
autoFocus-boolean
className-string배치용 클래스예요. 모양(색·크기)은 덮어쓰지 않아요.
inputClassName주의-string
icontrueboolean라벨 앞에 놓을 아이콘이에요.
size'md''md' | 'lg'크기예요.
bare-boolean
inputRef-RefObject<HTMLInputElement | HTMLTextAreaElement | null>
label-string읽어 주는 이름(없으면 placeholder)
leading-ReactNode왼쪽 자리 - 주면 돋보기 대신 이것(돋보기도 같이 두려면 직접 넣는다)
overlay-ReactNode입력 뒤에 겹쳐 그리는 층(고스트 자동완성) - 주면 입력을 relative 칸으로 감싼다
extra-ReactNode지우기 앞 자리
action-ReactNode지우기 뒤 자리(보내기)
empty-ReactNode값이 없을 때 지우기 자리에 둘 것(ESC 힌트)
inputProps-SearchFieldInputProps
onClear-() => void지우기 - 비우기 말고 더 할 일이 있을 때(선택 줄 초기화 등). 주면 onChange('') 대신 이것
clearTitle-string
clearTap'tap44''tap44' | 'tap44-y'옆에 붙은 단추가 있으면 세로만 넓힌다(tap44-y)
multiline-boolean여러 줄 컴포저(textarea, 높이 자동 · 상한 160px)
as'div''div' | 'label'감싸는 요소 - 'label'이면 칸 어디를 눌러도 입력에 초점

* 필수예요. 표는 타입에서 자동으로 뽑았어요.

스펙#

상태 · 슬롯마다 실제로 그려지는 값이에요.

SearchField#

base

상태슬롯속성값
enabledroot간격8px
icon글자색dim
input최소 폭0px
clear크기24px
모서리완전 원(9999px)
글자색dim
전환 대상색·눌림 크기
hoverclear배경색hover
글자색ink
pressedclear크기 배율(기본)0.975 · 버튼 공통 규칙

bare=true

상태슬롯속성값
enabledroot좌우 여백12px
icon크기16px

bare=false

상태슬롯속성값
enabledroot모서리radius-xl
테두리 두께1px
테두리 색line
배경색app
icon크기18px

bare=false, size=lg

상태슬롯속성값
enabledroot높이48px
좌우 여백14px

bare=false, size=md

상태슬롯속성값
enabledroot높이44px
좌우 여백12px

값은 컴포넌트 코드에서 뽑았고, 토큰 이름을 누르면 파운데이션으로 가요. 토큰이 없는 값만 숫자로 적었어요.

접근성#

역할과 속성#

요소역할 · 속성
입력input · aria-label=placeholder
키보드 힌트inputMode="search" · enterKeyHint="search"
지우기button · aria-label="검색어 지우기"

키보드#

키동작
EnteronEnter를 불러요
Tab입력 → 지우기 순으로 옮겨요

화면 읽기 프로그램#

  • placeholder가 이름으로도 읽혀요. 그래서 비워 두지 않아요.

초점#

  • 지우면 초점이 입력으로 돌아와요.
  • 폰에서 초점이 가면 키보드에 가리지 않게 화면을 올려요.

가이드라인#

이렇게 써요#

쓰는 규칙#

이렇게 써요

  • placeholder에 무엇을 찾을 수 있는지 적어요.

문구#

  • placeholder에 무엇으로 찾는지 적어요("지역·단지·브랜드").
  • "검색어를 입력하세요" 같은 말은 쓰지 않아요.

플랫폼별 차이#

플랫폼별 차이
플랫폼차이
모바일

PC와 같은 모양이에요. 글자 역할만 폰 크기로 바뀌어요.

PC

마우스가 있는 기기에서만 hover가 켜지고, 키보드 초점 링이 보여요.