버튼 .btn

한 화면(또는 한 패널)에 주 버튼(primary)은 하나. 장비를 움직이는 버튼은 동사 + 목표값으로 적는다 (100% 열기).

놀이판

오른쪽에서 값을 바꾸면 미리보기와 코드가 같이 바뀌어요.

html

종류 · 크기

아이콘 버튼

명세

클래스모양쓰는 곳
.btnpanel-2 · 테두리 · 높이 2.6em · 650보조 동작 · 장비 명령 (닫기 · 정지 · 열기)
+ .btn--primarybrand 채움주 동작 하나 (확인했어요 · 저장 · 100% 열기)
+ .btn--danger위험 빨강 채움지우기 · 되돌릴 수 없는 것만
+ .btn--ghost바탕 없음취소 · 덜 중요한 동작
+ .is-onbrand-weak 바탕켜짐 · 끄기 중 지금 상태
.btn--sm / --lg / --block2.1em / 3.2em / 가로 꽉표 안 · 3D 도구 / 다이얼로그 · 폰 아래 고정
.icon-btn2.5em 정사각 · 점 배지(.icon-btn__dot)상단바 알림 · 패널 닫기
권장

누르면 무슨 일이 생기는지 버튼 글자로 — 확인 창의 주 버튼은 질문의 동사 그대로.

지양

주 버튼 두 개 · "확인 / 예" 처럼 무엇을 하는지 모르는 글자.

세그먼트 .seg

화면을 떠나지 않고 보는 것만 바꿀 때 — 3D 표시 항목, 동 고르기, 지금 / 예보. 2 ~ 5개. 그 이상이면 칩.

클래스설명
.segpanel-2 바탕 · 0.2em 안쪽 여백 · 버튼 높이 2em
.seg > button.is-onpanel 흰 판 + 그림자 (하나만)
.seg--full가로 꽉 · 버튼 같은 폭 (패널 안)
[data-ui]화면 안 선택 표시 — 이동 없음 (프로토타입 · 가이드가 is-on 을 옮김)

칩 .chip

목록을 거를 때 — 알림 등급 · 종류, 카메라 분할. 선택된 것은 글자색 반전(.is-on). 개수는 <b> 로.

전체 12미확인 2위험경고장애

입력 · 스위치 .field

입력칸은 라벨을 위에, 단위는 칸 안 오른쪽(.input__unit). 규칙 · 기준값처럼 숫자를 넣는 칸은 적정 범위를 바로 아래 보여준다.

R2 고온 환기 켜짐
클래스설명
.field · .field__label세로 묶음 · 라벨 0.8em 700
.input높이 2.6em · panel-2 · line-2 테두리
.input--select · --focus오른쪽 화살표 / brand 테두리 + 3px 링
.switch (.is-on)2.7 × 1.6em 알약 — 규칙 · 알림 켜고 끄기
.slider개폐율 (천창 · 커튼) — 채움 i + 손잡이 b

상태 배지 · 점 .st

상태를 알리는 기본 단위. 점(.dot)은 글자가 바로 옆에 있을 때만 (범례 · 칩 · 목록).

완료 주의 1 장애 1 경고 정상 위험
클래스설명
.st알약 · 상태색 16% 바탕 · 아이콘만 상태색 · 글자는 fg (읽힘 우선)
.st--lg패널 머리 · 큰 상태
.dot · .dot--ring0.6em 점 / 바깥 링 (지금 진행 중)

배지 .badge

상태가 아닌 정보 — 장비를 지금 누가 움직이는지(자동 · 스케줄 · 수동 · 안전), 개수, 데이터 출처.

자동 · R2 스케줄 수동 안전 R1 미확인 기상청 단기예보
클래스뜻
.badge--auto자동 규칙 · 스케줄이 움직임 (brand)
.badge--manual사람이 직접 — 자동 규칙 1시간 멈춤 (노랑 옅게)
.badge--safe안전 규칙 (강풍 · 강우) — 수동보다 우선 (빨강 옅게)
.src데이터 출처 한 줄 (공공 API · 시뮬레이터)

카드 .card

화면을 나누는 기본 판. 제목 줄(.card__h)은 아이콘 + 제목 + 오른쪽 "더 보기".

오늘 자동제어규칙
14:122동 천창 50% · R2완료
02:14뒤편 퇴치기 30초 · R9 멧돼지완료

KPI 칸 .kpi

라벨 → 큰 값 → 한 줄 설명. 누르면 자세히(알림 센터 · 바람 · 비 3D)로. 3D 로 이어지는 칸은 오른쪽에 .kpi__go 표시.

농장 상태
정상 1주의 1
3동 · 센서 21 · 카메라 4
진행 중 알림 3건 미확인 2 · 경고 1 · 장애 1
외부 날씨3D 24.6℃ 맑음 습도 48% · 북서 3.2m/s
클래스설명
.kpi--alert진행 중 알림이 있을 때 경고색 테두리
.kpi--wx · .kpi__go누르면 3D 에 바람 · 비가 겹침 (A-4)
.wxdir바람이 흘러가는 쪽 화살표 · 위가 북 — --deg 로 돌림

측정값 · 게이지 .metric

값만 보여주지 않고 적정 범위 안에서 어디쯤인지를 같이 — 게이지는 위험 | 주의 | 적정 | 주의 | 위험 다섯 칸.

온도31.4℃
습도61%
CO₂540ppm
1018273340℃

알림 항목 .aitem

한 칸에 "무엇이 · 어디서 · 언제 → 무슨 일 → 자동이 무엇을 했나". 안 읽은 알림(.is-unread)은 상태색 바탕 · 테두리.

경고2동 · 고온14:12

온도 30.6℃ — 천창 50% 자동 열림

30℃ 넘은 상태 2분 지속 → 규칙 R2. 33℃ 넘으면 100% + 유동팬.

확인하기
주의예보13:40

내일 03시 강풍 11m/s 예보

안전 규칙 R1 대기 — 강풍이 감지되면 측창 · 천창이 전부 닫혀요.

권장

제목에 값 + 결과: "온도 30.6℃ — 천창 50% 자동 열림". 설명에 이유(규칙)와 다음 단계.

지양

"이상 감지됨" · "TEMP_HIGH" 처럼 무엇이 얼마나인지 없는 제목.

기록 · 타임라인 .log · .tl

짧은 목록은 .log(시각 · 무엇 · 결과), 하나의 사건 경과는 .tl(점 + 세로선).

13:58
추세 경고 10분 사이 +1.9℃

임계치 전에 먼저 알림

14:10
기준 초과 30.2℃ — 2분 지속
14:12
자동제어 R2 → 천창 50% 열기
14:13
결과 확인 개폐율 50% 도달

표 · 키값 · 안내 .tbl · .kv · .note-inline

센서위치값마지막 수신상태
T2-32동 뒤쪽31.4℃14:20주의
T3-23동 가운데—14:02 (18분 전)통신 두절
지금 → 목표
50% → 100%
자동 규칙 R2 · R3
1시간 멈춤 · 15:21 자동 복귀
강풍 · 강우가 감지되면 안전 규칙이 수동 조작보다 먼저 창을 닫아요.

차트 .chart

선은 2px 하나 + 적정 범위 띠(초록 옅게). 비교는 우수농가 띠(회색). 기준선은 경고색. 마우스를 올리면 세로선 + 시각별 값. 축은 하나만 (두 축 차트 금지).

속성설명
data-chart계열 이름 (쉼표로 여러 개 — 동 색 순서대로)
data-names · data-unit범례 이름 · 단위
data-range적정 범위 띠 (최소,최대)
data-peer우수농가 범위 띠
data-thr · data-marks기준선 값 · 사건 표시 ("14:12 천창 50%")

드로어 · 바텀시트 .drawer

3D 라벨 · 카메라 · 날씨를 누르면 뒤 화면(3D)을 그대로 두고 오른쪽에서 열린다. 폰에서는 같은 마크업이 아래에서 올라오는 바텀시트가 된다 (손잡이 자동).

2동 센서 T2-3

온도 · 2동 뒤쪽 1.5m

주의 · 적정보다 높음 31.4℃
클래스설명
.overlay (.overlay--clear)뒤 어둡게 / 3D 를 보여야 할 때는 투명
.drawer폭 30em · 오른쪽 · 머리 / 몸통(스크롤) / 바닥(버튼)
.drawer--peek폰에서 높이 54% — 위 3D 가 보이게 (바람 · 비 · 야생동물)
폰 (< 600)아래 고정 · 위 모서리 1.4em · 최대 86% · 손잡이

확인 다이얼로그 .dialog

되돌리기 어려운 동작 · 장비 명령 전에만. 제목은 질문, 내용은 지금 → 목표 · 걸리는 시간 · 멈추는 자동 규칙, 주 버튼은 질문의 동사.

2동 천창을 100%까지 열까요?

지금 → 목표
50% → 100%
걸리는 시간
약 40초
자동 규칙 R2 · R3
1시간 멈춤 · 15:21 자동 복귀

메뉴 · 상단바 · 탭바 .side · .top · .tabbar

껍데기는 화면에 적지 않고 data-shell="메뉴키" 로 넣는다 (spec.js). 화면 크기에 따라 같은 메뉴가 왼쪽 메뉴 → 아이콘 레일 → 하단 탭바로 바뀐다 (앱 껍데기 패턴).

모니터링

대시보드 알림2 기기 상태1

대시보드

햇살농원 · 토마토 3동 24.6℃북서 3.2m/s
클래스설명
.nav-i (.is-on)메뉴 한 줄 · 선택은 brand-weak · 배지는 위험(빨강) / 장애(보라)
.top제목 · 농장 · 날씨(누르면 3D 바람 · 비) · 시각 · 알림
.tabbar · .tab폰 하단 5칸: 홈 · 알림 · 제어 · 기기 · 더보기

카메라 영상 .video

16:9 판. 위에 카메라 이름 · LIVE · 시각, 아래에 설명. 알림 순간의 스냅샷도 같은 모양.

LIVECAM-1 · 2동 입구14:20:31
CAM-4 · 뒤편 경계 · 열화상02:14:05
AI 감지 · 멧돼지 92%

3D 라벨 .f3l

3D 엔진이 위치를 계산해 HTML 로 붙인다 (글자가 선명하고 누를 수 있음). 멀리서는 동 대표값 + 이상 센서만, 확대하면 센서 전부. 누르면 센서 상세 · 카메라 영상으로.

2동30.6℃ T2-331.4℃ T3-2두절 CAM-12동 입구 T1-225.6℃
클래스쓰는 곳
.f3l--zone동 대표값 (동 위 크게)
.f3l.is-pulse주의 이상 · 장애 — 깜빡이는 고리
.f3l.is-dim값 없음 · 통신 두절 (점선)
.f3l--cam · --sm · --sel카메라 / 확대 시 일반 센서 / 공간 편집에서 선택

3D 도구 .f3d-tools · .f3d-views · .f3d-wx

3D 모서리에 고정: 왼쪽 위 = 보는 항목, 왼쪽 아래 = 범례, 오른쪽 아래 = 시점(나침반 · 전체 보기 · 회전 · 바람). 날씨 칩은 바람 · 비가 켜졌을 때만.

서남서 11m/s비 8mm/h · 돌풍 15내일 03시 · 예보
정상주의경고위험장애히트맵 낮음 · 높음
N