Skip to content

문법 레퍼런스

Wireweave DSL의 완전한 문법 레퍼런스입니다.

기본 문법

주석

wireframe
// 한 줄 주석

/* 여러 줄
   주석 */

문자열

wireframe
"쌍따옴표 문자열"
'홑따옴표 문자열'

숫자

wireframe
100        // 정수
3.14       // 실수

불리언

wireframe
true
false

구조

Page

wireframe
page [title] [modifiers] {
  [children]
}

예제:

wireframe
page { }
page "Title" { }
page "Title" centered { }

컴포넌트

wireframe
component_name [label] [modifiers] {
  [children]
}

예제:

wireframe
card { }
card "Title" { }
card shadow=md border { }
button "Click" primary

컴포넌트 레퍼런스

Layout

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

컴포넌트설명속성
page페이지 루트 컨테이너title, viewport, device, centered, p, gap
header페이지 헤더 영역p, border, gap, justify, align
main메인 콘텐츠 영역p, gap
footer페이지 푸터 영역p, border, gap
sidebar사이드바 영역position, w, p, gap
section섹션 영역title, expanded, p, gap
wireframe
page "Dashboard" {
  header { }
  main { }
  footer { }
}

Grid

플렉스 레이아웃을 위한 컴포넌트입니다.

컴포넌트설명속성
row가로 플렉스 컨테이너gap, justify, align, wrap, p, m
col세로 컨테이너/그리드 컬럼span, sm, md, lg, xl, order, gap, p, w
wireframe
row gap=4 justify=between {
  col span=6 { }
  col span=6 { }
}

Container

콘텐츠를 그룹화하는 컴포넌트입니다.

컴포넌트설명속성
card카드 컴포넌트title, p, shadow, border, gap
modal모달 다이얼로그title, w, h, p
drawer드로어 패널title, position, p
accordion아코디언 패널title, p
wireframe
card title="Settings" shadow=md {
  // 콘텐츠
}

modal "Confirm" {
  text "Are you sure?"
  button "OK" primary
}

Text

텍스트를 표시하는 컴포넌트입니다.

컴포넌트설명속성
text일반 텍스트size, weight, align, muted, m
title제목 (h1~h6)level, size, align, m
link하이퍼링크href, external
wireframe
title "Welcome" level=1
text "Description" muted
link "Learn more" href="/docs"

Input

사용자 입력을 받는 컴포넌트입니다.

컴포넌트설명속성
input입력 필드label, type, placeholder, value, disabled, required, icon
textarea여러 줄 입력label, placeholder, value, rows, disabled
select드롭다운 선택label, placeholder, value, disabled
checkbox체크박스label, checked, disabled
radio라디오 버튼label, name, checked, disabled
switch토글 스위치label, checked, disabled
slider슬라이더label, min, max, value, step, disabled
button버튼primary, secondary, outline, ghost, danger, size, icon, disabled, loading

입력 타입: text, email, password, number, tel, url, search, date

wireframe
input "Email" type=email placeholder="Enter email"
textarea "Message" rows=4
select "Country" { }
checkbox "Agree" checked
button "Submit" primary
button "Cancel" outline

Display

시각적 요소를 표시하는 컴포넌트입니다.

컴포넌트설명속성
image이미지src, alt, w, h
placeholder플레이스홀더label, w, h
avatar아바타name, src, size
badge뱃지variant, pill, icon, size
icon아이콘name, size, muted
divider구분선m, my, mx
wireframe
image src="/photo.jpg" w=200
avatar "John" size=lg
badge "New" variant=success pill
icon "home" size=md
divider my=4

Data

데이터를 표시하는 컴포넌트입니다.

컴포넌트설명속성
table테이블striped, bordered, hover
list리스트ordered, none, gap
wireframe
table striped hover {
  // 컬럼과 행 정의
}

list ordered {
  // 항목
}

Feedback

사용자에게 피드백을 제공하는 컴포넌트입니다.

컴포넌트설명속성
alert알림 메시지variant, dismissible, icon
toast토스트 알림position, variant
progress프로그레스 바value, max, label, indeterminate
spinner로딩 스피너label, size

Variant: success, warning, danger, info

wireframe
alert "Success!" variant=success
progress value=75 label="Loading..."
spinner size=lg

Overlay

오버레이 UI 컴포넌트입니다.

컴포넌트설명속성
tooltip툴팁position
popover팝오버title
dropdown드롭다운 메뉴-
wireframe
tooltip "Help text" position=top {
  button "?" outline
}

dropdown {
  // 항목
}

네비게이션 컴포넌트입니다.

컴포넌트설명속성
nav네비게이션 메뉴vertical, gap
tabs탭 컴포넌트active
breadcrumb브레드크럼-
wireframe
nav vertical {
  // 네비게이션 항목
}

tabs active=0 {
  // 탭 패널
}

breadcrumb {
  // 브레드크럼 항목
}

속성 문법

키-값 속성

wireframe
component attribute=value
component attribute="string value"

예제:

wireframe
col span=6
input placeholder="Enter email"
progress value=75

불리언 속성

wireframe
component attribute   // true로 설정

예제:

wireframe
button primary        // primary=true
input disabled        // disabled=true
checkbox checked      // checked=true

간격 시스템

Wireweave는 간격 토큰 시스템을 사용합니다:

토큰
00px
14px
28px
312px
416px
520px
624px
832px
1040px
1248px
wireframe
card p=4          // padding: 16px
row gap=2         // gap: 8px
text mt=6         // margin-top: 24px

전체 예제

wireframe
page "User Management" centered {
  header border {
    row justify=between align=center {
      title "Admin" level=3
      nav {
        // 네비게이션 항목
      }
      avatar "Admin"
    }
  }

  row {
    sidebar w=200 {
      nav vertical {
        // 메뉴 항목
      }
    }

    main {
      row justify=between {
        title "Users" level=2
        button "Add User" primary
      }

      card {
        table striped hover {
          // 테이블 콘텐츠
        }
      }

      row justify=center gap=2 {
        button "Previous" secondary
        text "Page 1 of 10"
        button "Next" secondary
      }
    }
  }
}

Released under the MIT License.