동원모빌리티 POPv0.1
시작하기
소개
기초
색글자간격 · 라운드아이콘
버튼
POP ButtonBottom ButtonGrid Cell ButtonCard ButtonEmergency ButtonList · Move ButtonSide Button
입력
EditComboCalendarRadioMachine SelectKeypad
정보 카드
Info Label · ValueInfo CheckCard
그리드
List GridInput Grid
헤더 · 탭
TabStatus BadgeSide Menu
메뉴 · 로그인
Menu CardLogin Button
시작하기

동원모빌리티 POP 디자인 시스템

생산 현장 터치 화면(POP)의 넥사크로 화면과 피그마를 같은 말로 맞추기 위한 가이드예요.

디자이너

피그마 동원모빌리티_컴포넌트 페이지의 컴포넌트를 인스턴스로 써요. 이 문서의 컴포넌트 이름 = 피그마 세트 이름.

개발자

각 페이지의 xfdl 코드와 속성표대로 cssclass와 속성을 넣으면 같은 모양이 나와요.

원칙

  1. xcss가 원본이에요. 값은 ncorePopLight.xcss / ncorePopDark.xcss에서 왔고, 피그마와 이 문서는 그걸 따라가요.
  2. 테마는 두 벌이에요. Light / Dark는 xcss 파일 교체로 바뀌어요. 피그마는 변수 이름의 light/ dark/와 Theme 변형으로 나눠요.
  3. 현장 터치 화면 기준이에요. 본문 20px, 버튼 높이 52~56, 행 47. 고령 작업자도 읽을 수 있게 줄이지 않아요.

컴포넌트

버튼

POP Button · Bottom Button · Grid Cell Button · Card Button · Emergency Button

입력

Edit · Combo · Calendar · Radio · Machine Select

정보 카드

Info Label · Info Value · Info Check · Card Surface · Card Header · Card Icon

그리드

List Grid Cell · Card Grid Cell

헤더 · 탭

Tab Item · Status Badge

화면 배치 (testMenu.xfdl)

영역값
화면 배경Form.form_bg_dark — Light #F3F6FA / Dark #000B21
상단 헤더Div00: left 10, top 20, right 10, height 55
탭Tab00: left 10, top 85, right 10, bottom 16
공통 버튼divBtn: top 10, height 52 (탭 페이지 안)
검색 영역divSearch(pop_card_form): divBtn 아래 10, height 70, 항목 top 12 height 46, 간격 20
본문divContent(pop_card_form): divSearch 아래 10 ~ 끝, 안에 카드 left/top/bottom 10, width 49%
정보 행라벨 200 + 값 (right 10), 행 높이 47, 첫 행 top 71

바꾸는 순서

  1. xcss(Light, Dark 두 파일)를 고쳐요.
  2. 피그마 Nexacro POP 변수의 같은 이름을 고쳐요 — 컴포넌트와 화면에 자동 반영.
  3. 이 문서의 데이터(docs-data.json)를 맞추고 다시 생성해요.

확인이 필요한 것

  • Radio 이미지: pda_rdo_WF_Radio 계열 중 _O / _S만 있음 (비활성·Dark용 확인)
  • Calendar 버튼 아이콘: xcss 지정 없음 → 기본 아이콘
  • pop_card_ico coil: xcss 정의 없음
  • Card Grid cell_input 글자색: Light에서도 #ffffff
기초

색

토큰 101개. 왼쪽이 Light, 오른쪽이 Dark 값이에요. 피그마 변수 Nexacro POP에서는 light/… dark/… 이름이에요.

기본

토큰LightDark사용처
--page-bg#f3f6fa#000b21화면 배경 (Form.form_bg_dark). 탭 버튼, 라디오처럼 배경이 투명한 요소 뒤.
--brand-navy#1b4388#2857a3대표 파랑. 포커스 보더, 선택 글자, 발행 버튼.
--on-color#ffffff#ffffff진한 배경 위 글자·점 (비상호출, 가동중, 조회/저장/닫기).

정보 카드

토큰LightDark사용처
--info-surface#ffffff#000b21정보 카드 안 배경 (pop_card).
--info-label-text#64748b#9aa4b8pop_info_label 글자.
--info-border#e2e8f0#1c2640pop_info_label / pop_info_value(readonly) / pop_info_chk 하단 1px.
--info-value-text#0f172a#ffffffpop_info_value 글자.
--info-value-bg#eef4fc#12203dpop_info_value 입력칸 배경 (readonly 아님).
--info-value-line#1b4388#2857a3pop_info_value 입력칸 밑줄 2px.
--info-value-line-hover#2455a0#3a6bc0pop_info_value mouseover 밑줄.
--info-value-bg-focus#e3ecfa#16284apop_info_value focused 배경.
--info-value-line-focus#2455a0#4f86e8pop_info_value focused 밑줄 3px.
--info-placeholder#94a3b8#5c6b82pop_info_value nulltext 글자.
--card-surface#ffffff#000b21.Div.pop_card 배경.
--card-border#e2e8f0#1c2640pop_card 보더(Light만) / pop_card_title 하단선.
--card-title-text#0f172a#ffffffpop_card_title 글자.
--card-ico-bg#ffffff#15223cpop_card_ico 배경.
--card-ico-border#e2e8f0#15223cpop_card_ico 보더 (Dark는 보더 없음).
--card-form-bg#ecf1f9#0f2135pop_card_form / pop_grid_card(Dark) 배경. Dark는 card-form-bg-end까지 세로 그라데이션.
--card-form-bg-end#ecf1f9#0d1326pop_card_form 그라데이션 끝색 (Dark).

입력

토큰LightDark사용처
--edit-bg#ffffff#131e32pop_edit(Edit/Combo/Calendar) 배경.
--edit-border#cbd5e1#2a3b50pop_edit 보더.
--edit-border-hover#94a3b8#313c4epop_edit mouseover 보더.
--edit-border-focus#1b4388#2857a3pop_edit focused 보더.
--edit-text#0f172a#ffffffpop_edit 글자 / 라디오 글자.
--edit-disabled-bg#f1f5f9#0f1a33pop_edit readonly·disabled 배경.
--edit-disabled-border#e2e8f0#1c2640pop_edit readonly·disabled 보더.
--edit-disabled-text#64748b#9aa4b8pop_edit readonly·disabled 글자.
--edit-list-hover#eef4fc#1b2940Combo 목록 항목 mouseover.
--edit-list-selected#225fc7#225fc7Combo 목록 항목 focused (글자 흰색).
--radio-disabled-text#94a3b8#5c6b82Radio 비활성 글자.
--sta-title-text#64748b#9aa4b8Static.sta_title (검색 영역 라벨).

그리드

토큰LightDark사용처
--lg-head-text#64748b#8d9aafpop_list_grid head 글자.
--lg-head-border#e2e8f0#2a3b50pop_list_grid head 하단선.
--lg-body-text#0f172a#ffffffpop_list_grid body 글자.
--lg-border#e2e8f0#1c2640pop_list_grid body 하단선.
--lg-selected-bg#e8effb#173b78pop_list_grid 선택 행 배경.
--lg-selected-text#1b4388#ffffffpop_list_grid 선택 행 글자.
--lg-selected-border#c7d7f2#173b78pop_list_grid 선택 행 하단선 (Dark는 보더 없음).
--lg-summary-text#0f172a#e5eaf2pop_list_grid summary(합계) 글자.
--lg-summary-bg#f1f5f9#16233dpop_list_grid summary 배경.
--lg-summary-border#cbd5e1#2a3b50pop_list_grid summary 상단선.
--cg-head-text#64748b#9aa4b8pop_card_grid head 글자.
--cg-border#e2e8f0#1c2640pop_card_grid 하단선.
--cg-body-text#0f172a#ffffffpop_card_grid body 글자.
--cg-selected-bg#e8effb#173b78pop_card_grid 선택 행 배경.
--cg-selected-text#1b4388#ffffffpop_card_grid 선택 행 글자.
--cg-selected-border#c7d7f2#1c2640pop_card_grid 선택 행 하단선.
--cg-input-bg#eef4fc#1a2d52pop_card_grid cell_input 배경.

그리드 셀 버튼

토큰LightDark사용처
--cellbtn-default-text#1e293b#e5eaf2Grid Cell Button (cssclass 없음) 글자.
--cellbtn-default-border#cbd5e1#33486fGrid Cell Button (cssclass 없음) 보더.
--cellbtn-default-bg#ffffff#22355dGrid Cell Button (cssclass 없음) 배경.
--cellbtn-default-bg-hover#f1f5f9#2a416eGrid Cell Button (cssclass 없음) mouseover/focused 배경.
--cellbtn-default-bg-pressed#e2e8f0#1a2a4cGrid Cell Button (cssclass 없음) pushed 배경.
--cellbtn-green-text#268767#ffffffGrid Cell Button .green 글자.
--cellbtn-green-border#73c9ad#23956fGrid Cell Button .green 보더 (Dark는 보더 없음 — 배경색과 같게).
--cellbtn-green-bg#ffffff#23956fGrid Cell Button .green 배경.
--cellbtn-green-bg-hover#edf7f4#28a97eGrid Cell Button .green mouseover/focused 배경.
--cellbtn-green-bg-pressed#dcefe9#1e805fGrid Cell Button .green pushed 배경.
--cellbtn-orange-text#8c6117#ffffffGrid Cell Button .orange 글자.
--cellbtn-orange-border#d6ad66#a56f12Grid Cell Button .orange 보더 (Dark는 보더 없음 — 배경색과 같게).
--cellbtn-orange-bg#ffffff#a56f12Grid Cell Button .orange 배경.
--cellbtn-orange-bg-hover#f9f4ec#bc7f15Grid Cell Button .orange mouseover/focused 배경.
--cellbtn-orange-bg-pressed#f2e9d9#8e6010Grid Cell Button .orange pushed 배경.
--cellbtn-red-text#87262c#ffffffGrid Cell Button .red 글자.
--cellbtn-red-border#c97378#95232aGrid Cell Button .red 보더 (Dark는 보더 없음 — 배경색과 같게).
--cellbtn-red-bg#ffffff#95232aGrid Cell Button .red 배경.
--cellbtn-red-bg-hover#f7edee#a92830Grid Cell Button .red mouseover/focused 배경.
--cellbtn-red-bg-pressed#efdcdd#801e25Grid Cell Button .red pushed 배경.
--cellbtn-cyan-text#2a7484#ffffffGrid Cell Button .cyan 글자.
--cellbtn-cyan-border#76b9c6#277f91Grid Cell Button .cyan 보더 (Dark는 보더 없음 — 배경색과 같게).
--cellbtn-cyan-bg#ffffff#277f91Grid Cell Button .cyan 배경.
--cellbtn-cyan-bg-hover#eef5f7#2c91a5Grid Cell Button .cyan mouseover/focused 배경.
--cellbtn-cyan-bg-pressed#dcecef#216e7dGrid Cell Button .cyan pushed 배경.
--cellbtn-purple-text#3a307e#ffffffGrid Cell Button .purple 글자.
--cellbtn-purple-border#847bc1#3a2e8aGrid Cell Button .purple 보더 (Dark는 보더 없음 — 배경색과 같게).
--cellbtn-purple-bg#ffffff#3a2e8aGrid Cell Button .purple 배경.
--cellbtn-purple-bg-hover#efeef6#42349dGrid Cell Button .purple mouseover/focused 배경.
--cellbtn-purple-bg-pressed#e0ddee#322877Grid Cell Button .purple pushed 배경.

카드 버튼

토큰LightDark사용처
--cardbtn-line-border#cbd5e1#2a3b50btn_card_calc / reprint 보더.
--cardbtn-line-border-hover#cbd5e1#313c4ebtn_card_calc / reprint mouseover·pushed 보더.
--cardbtn-line-bg-hover#f2f2f2#0f1a33btn_card_calc / reprint mouseover 배경.
--cardbtn-line-bg-pressed#f2f2f2#262f40btn_card_calc / reprint pushed 배경.
--cardbtn-line-text#0f172a#d5dce7btn_card_calc / reprint 글자.
--cardbtn-fill-bg#1b4388#262f40btn_card_publish 배경.
--cardbtn-fill-bg-hover#2455a0#273449btn_card_publish mouseover 배경.
--cardbtn-fill-bg-pressed#163a75#262f40btn_card_publish pushed 배경.
--cardbtn-fill-text#ffffff#d5dce7btn_card_publish 글자.

헤더 · 탭

토큰LightDark사용처
--tab-text#64748b#7f8da3pop_cont_tab 탭 글자.
--tab-text-hover#455c7c#ffffffpop_cont_tab 탭 mouseover 글자.
--tab-text-selected#1b4388#ffffffpop_cont_tab 선택 탭 글자.
--header-select-bg#ffffff#131e32machine_select 배경.
--header-select-border#e2e8f0#131e32machine_select 보더.
--header-select-border-hover#e2e8f0#313c4emachine_select mouseover·focused 보더.
--header-select-text#0f172a#ffffffmachine_select 글자.
--header-date-text#0f172a#f5f7faStatic.info_date 글자.
--emergency-bg#d93636#d92d20emergency_btn 배경 (글자·아이콘 흰색).
--emergency-bg-hover#c22e2e#b42318emergency_btn mouseover.
--emergency-bg-pressed#a82626#912018emergency_btn pushed·focused.
--status-bg#12a37a#10b981status_running 배경 (Dark는 status-bg-end까지 가로 그라데이션).
--status-bg-end#12a37a#068f62status_running 그라데이션 끝색 (Dark).
기초

글자

Pretendard 하나만 써요. 본문은 SemiBold(600), 제목과 버튼은 Bold(700)이에요.

크기 단계

pop-26-bold26px / 32px · 700POP Button (pop_btn_*).
조회 저장 닫기
pop-24-bold24px / 30px · 700설비 선택 machine_select.
DB1002 [DB포밍기 2호기]
pop-22-bold22px / 28px · 700탭, 카드 버튼, 비상호출, 가동중.
원자재투입현황 · 비상호출 · 발행
pop-20-bold20px / 26px · 700카드 제목 pop_card_title, 날짜 info_date, 합계 행.
현재 코일 정보
pop-20-semibold20px / 26px · 600본문 기본: pop_info_label/value, pop_edit, 그리드 셀.
코일 LOT D26081800807
pop-20-title20px / 26px · 600 · 자간 -1px검색 영역 라벨 sta_title (자간 -1px).
Barcode 작업일자 작업장
pop-16-bold16px / 22px · 700그리드 셀 버튼 cellbutton.
삭제 종결 확인

xcss 표기

font : 20px 'PretendardSemiBold'; · font : 22px 'PretendardBold';

기초

간격 · 라운드

넥사크로 좌표(left/top/right/bottom)와 크기에 반복해서 쓰이는 값이에요.

간격 · 크기

토큰값사용처
--space-gutter10px카드·영역 사이, 카드 안 좌우 여백 (left/right/top/bottom 10).
--space-field-gap20px검색 영역 항목 사이 (left = 앞 항목:20).
--space-btn-gap8pxPOP 버튼 사이 (right = 옆 버튼:8), 아이콘-글자 간격.
--space-pad12px입력칸·정보 라벨 좌우 패딩.
--size-info-row47px정보 행 높이 (pop_info_label/value).
--size-info-label200px정보 라벨 너비.
--size-field46pxpop_edit 계열 높이.
--size-header55px상단 헤더 높이 (machine_select, 비상호출, 가동중).
--size-card-title70px카드 제목 높이.
--size-card-btn56px카드 버튼 높이 / 탭 높이.
--size-pop-btn52pxPOP 버튼 높이 (너비 112, 새로고침 162).

라운드

--radius-44px헤더 요소 (machine_select, 비상호출, 가동중), 카드 아이콘.
--radius-55pxpop_edit 계열.
--radius-66px버튼 (POP, 카드, 셀).
--radius-1010px카드, 카드 폼, 탭 페이지.
기초

아이콘

넥사크로 imagerc::/pop/ 원본이에요. 이름 끝 _l은 Light용, 없는 쪽은 Dark용, _on은 눌림·선택용이에요.

btn_WF_Calendar.png
date_bu.png
date_bu_l.png
dot_ok.png
dot_ok_l.png
dot_stop.png
dot_stop_l.png
dot_warn.png
dot_warn_l.png
emergency_bu.png
ico_btn_aprv.png
ico_btn_aprv_l.png
ico_btn_close.png
ico_btn_close_l.png
ico_btn_delete.png
ico_btn_delete_l.png
ico_btn_init.png
ico_btn_init_l.png
ico_btn_msg.png
ico_btn_msg_l.png
ico_btn_new.png
ico_btn_new_l.png
ico_btn_print.png
ico_btn_print_l.png
ico_btn_run.png
ico_btn_run_l.png
ico_btn_save.png
ico_btn_save_l.png
ico_btn_search.png
ico_btn_search_l.png
ico_calc.png
ico_calc_l.png
ico_calc_on.png
ico_doc.png
ico_file.png
ico_file_l.png
ico_first.png
ico_first_l.png
ico_job.png
ico_job_l.png
ico_label.png
ico_label_l.png
ico_last.png
ico_last_l.png
ico_list.png
ico_list_l.png
ico_lot.png
ico_move_left.png
ico_move_left_l.png
ico_move_right.png
ico_move_right_l.png
ico_next.png
ico_next_l.png
ico_perf.png
ico_prev.png
ico_prev_l.png
ico_prod.png
ico_prod2.png
ico_prod2_l.png
ico_publish.png
ico_publish_on.png
ico_reprint.png
ico_reprint_l.png
ico_reprint_on.png
ico_side_end.png
ico_side_end_l.png
ico_side_hand.png
ico_side_hand_l.png
ico_side_to.png
ico_side_to_l.png
ico_worker.png
ico_worker_l.png
login_sort_desc.png
machine_select_bu.png
pop_all_menu.png
pop_all_menu_l.png
pop_chk_off.png
pop_chk_off_l.png
pop_chk_on.png
pop_chk_on_l.png
pop_close_btn.png
pop_menu_arrow.png
pop_menu_arrow_l.png
pop_status_bu.png
pop_tab_close.png
pop_tab_close_l.png
pop_tab_close_on.png
rdo_WF_Radio_O.png
rdo_WF_Radio_S.png
side_bell_l.png
side_bell_on_l.png
side_bell_on_w.png
side_bell_w.png
side_power_l.png
side_power_w.png
side_setting_l.png
side_setting_w.png
tab_cont_on.png
tab_cont_on_l.png
theme_moon_l.png
theme_moon_w.png
theme_sun_w.png
버튼

POP Button

화면 상단 공통 버튼 줄에 놓는 10종 버튼이에요. 새로고침·조회·신규·저장·삭제·실행·결재·알림·인쇄·닫기.

피그마POP Buttonxcss.Button.pop_btn_*화면testMenu.xfdl · divBtn

사용법

미리보기
조회
xfdl
<Button id="btn_find" text="조회" cssclass="pop_btn_search"
        top="0" right="btn_add:8" width="112" height="52" tooltiptext="CTRL+2"/>

구조

Button  cssclass="pop_btn_<종류>"
├─ 아이콘   -nexa-icon : ico_btn_<종류>.png (Light는 _l), 왼쪽
├─ 글자     26px Bold, 아이콘과 간격 6px
└─ 배경     위아래 2단 그라데이션 + 1px 보더, 라운드 6

예시

종류

종류는 cssclass 하나로 정해요. 조회는 파랑, 저장은 초록, 닫기는 진회색, 삭제는 빨간 글자, 나머지는 기본 회색이에요.

미리보기
새로고침조회신규저장삭제실행결재알림인쇄닫기
코드 보기
xfdl
<Button text="새로고침" cssclass="pop_btn_init" width="162" height="52"/>
<Button text="조회" cssclass="pop_btn_search" width="112" height="52"/>
<Button text="신규" cssclass="pop_btn_new" width="112" height="52"/>
<Button text="저장" cssclass="pop_btn_save" width="112" height="52"/>
<Button text="삭제" cssclass="pop_btn_delete" width="112" height="52"/>
<Button text="실행" cssclass="pop_btn_run" width="112" height="52"/>
<Button text="결재" cssclass="pop_btn_aprv" width="112" height="52"/>
<Button text="알림" cssclass="pop_btn_msg" width="112" height="52"/>
<Button text="인쇄" cssclass="pop_btn_print" width="112" height="52"/>
<Button text="닫기" cssclass="pop_btn_close" width="112" height="52"/>

상태

마우스오버·포커스(Hover), 누름(Pressed), 비활성(Disabled)은 넥사크로가 상태로 처리해요. 비활성은 enable="false"로 지정하고 40% 투명도로 보여요.

미리보기
조회조회조회조회
신규신규신규신규
코드 보기
xfdl
<Button text="조회" cssclass="pop_btn_search"/>                 <!-- Normal -->
<Button text="조회" cssclass="pop_btn_search" enable="false"/>  <!-- Disabled -->

버튼 줄 배치

오른쪽 끝(닫기)부터 왼쪽으로, right="옆 버튼:8"로 8px씩 띄워서 붙여요. 화면에 필요 없는 버튼은 visible="false".

미리보기
새로고침조회신규저장삭제닫기
코드 보기
xfdl
<Div id="divBtn" left="0" top="10" right="0" height="52">
  <Layouts><Layout>
    <Button id="btn_close" text="닫기" cssclass="pop_btn_close" top="0" right="0" width="112" height="52"/>
    <Button id="btn_save"  text="저장" cssclass="pop_btn_save"  top="0" right="btn_close:8" width="112" height="52"/>
    <Button id="btn_find"  text="조회" cssclass="pop_btn_search" top="0" right="btn_save:8" width="112" height="52"/>
    <Button id="btn_init"  text="새로고침" cssclass="pop_btn_init" top="0" right="btn_find:8" width="162" height="52"/>
  </Layout></Layouts>
</Div>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.pop_btn_search
{
  -nexa-icon : url('imagerc::/pop/ico_btn_search_l.png');
  -nexa-icon-position : left;
  -nexa-text-padding : 0px 0px 0px 6px;
  -nexa-padding : 0px 14px 0px 14px;
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  background : linear-gradient(to top,#19376B 0%,#1E4280 50%,#244F99 51%,#2C60BA 100%);
  -nexa-border : 1px solid #132B53;
  border-radius : 6px;
  color : #FFFFFF;
  font : 26px 'PretendardBold';
  cursor : pointer;
}

.Button.pop_btn_search[status=mouseover],
.Button.pop_btn_search[status=focused]
{
  -nexa-icon : url('imagerc::/pop/ico_btn_search_l.png');
  -nexa-icon-position : left;
  -nexa-text-padding : 0px 0px 0px 6px;
  -nexa-padding : 0px 14px 0px 14px;
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  background : linear-gradient(to top,#1D407C 0%,#224A91 50%,#2857A9 51%,#2F68CA 100%);
  -nexa-border : 1px solid #132B53;
  border-radius : 6px;
  color : #FFFFFF;
  font : 26px 'PretendardBold';
  cursor : pointer;
}

.Button.pop_btn_search[userstatus=pushed]
{
  -nexa-icon : url('imagerc::/pop/ico_btn_search_l.png');
  -nexa-icon-position : left;
  -nexa-text-padding : 0px 0px 0px 6px;
  -nexa-padding : 0px 14px 0px 14px;
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  background : linear-gradient(to top,#152F5B 0%,#1A3970 50%,#204688 51%,#2857A9 100%);
  -nexa-border : 1px solid #132B53;
  border-radius : 6px;
  color : #FFFFFF;
  font : 26px 'PretendardBold';
  cursor : pointer;
}

.Button.pop_btn_search[status=disabled]
{
  -nexa-icon : url('imagerc::/pop/ico_btn_search_l.png');
  -nexa-icon-position : left;
  -nexa-text-padding : 0px 0px 0px 6px;
  -nexa-padding : 0px 14px 0px 14px;
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  background : linear-gradient(to top,#19376B 0%,#1E4280 50%,#244F99 51%,#2C60BA 100%);
  -nexa-border : 1px solid #132B53;
  border-radius : 6px;
  color : #FFFFFF;
  font : 26px 'PretendardBold';
  cursor : default;
  opacity : 0.4;
}

상태

선택자의미
[status=mouseover], [status=focused]Hover — 그라데이션이 한 단계 밝아짐
[userstatus=pushed]Pressed — 한 단계 어두워짐
[status=disabled]Disabled — opacity 0.4

속성

속성값기본설명
cssclasspop_btn_init · search · new · save · delete · run · aprv · msg · print · close—버튼 종류 (필수)
textstring—버튼 글자
width / height112 × 52—새로고침만 162 × 52
enabletrue | falsetruefalse면 Disabled 표시
tooltiptextstring—단축키 안내: CTRL+1(새로고침) … CTRL+0(닫기)

토큰

크기 토큰값사용처
--size-pop-btn52pxPOP 버튼 높이 (너비 112, 새로고침 162).
--radius-66px버튼 (POP, 카드, 셀).
확인 필요버튼 배경 그라데이션은 토큰이 아니라 xcss 값을 그대로 써요(테마별로 다름).
버튼

Bottom Button

화면 하단에 놓는 큰 동작 버튼이에요(180×72). 색이 곧 동작의 성격이라, 용도에 맞는 타입을 골라요.

피그마Bottom Buttonxcss.Button.bottom_type1 ~ bottom_type7_purple화면하단 버튼 영역

사용법

미리보기
작업시작
xfdl
<Button id="btn_start" text="작업시작" cssclass="bottom_type3_green" width="180" height="72"/>

구조

Button  cssclass="bottom_type<번호>[_색]"
├─ 글자   26px Bold, 자간 -1, 가운데
└─ 배경   위아래 2단 그라데이션(50/51% 분할) + 1px 보더, 라운드 6

예시

타입과 용도

xcss 주석에 적힌 용도 기준이에요. 같은 화면에서 주요 동작 하나만 진한 색(Type 2~7)으로 두고, 나머지는 Type 1(기본)을 쓰면 헷갈리지 않아요.

미리보기
취소Type 1 · 기본
작업생성Type 2 · 메인 동작
작업시작Type 3 · 시작 · 확인
초중종Type 4 · 점검 · 검사
생산불량Type 5 · 불량 · 위험
작업표준서Type 6 · 문서 · 정보
기타Type 7 · 기타 강조
코드 보기
xfdl
<Button text="취소" cssclass="bottom_type1" width="180" height="72"/>  <!-- Type 1 기본 -->
<Button text="작업생성" cssclass="bottom_type2" width="180" height="72"/>  <!-- Type 2 메인 동작 -->
<Button text="작업시작" cssclass="bottom_type3_green" width="180" height="72"/>  <!-- Type 3 시작 · 확인 -->
<Button text="초중종" cssclass="bottom_type4_orange" width="180" height="72"/>  <!-- Type 4 점검 · 검사 -->
<Button text="생산불량" cssclass="bottom_type5_red" width="180" height="72"/>  <!-- Type 5 불량 · 위험 -->
<Button text="작업표준서" cssclass="bottom_type6_cyan" width="180" height="72"/>  <!-- Type 6 문서 · 정보 -->
<Button text="기타" cssclass="bottom_type7_purple" width="180" height="72"/>  <!-- Type 7 기타 강조 -->

상태

마우스오버·포커스는 한 단계 밝아지고, 누름(pushed·selected)은 투명도 80%, 비활성(enable="false")은 40%예요.

미리보기
작업생성Normal
작업생성Hover
작업생성Pressed
작업생성Disabled
취소Normal
취소Hover
취소Pressed
취소Disabled
코드 보기
xfdl
<Button text="작업생성" cssclass="bottom_type2"/>
<Button text="작업생성" cssclass="bottom_type2" enable="false"/>  <!-- Disabled -->

하단 버튼 줄

보조 동작은 왼쪽, 주요 동작은 오른쪽 끝에 두는 걸 권해요.

미리보기
취소작업표준서생산불량작업시작
코드 보기
xfdl
<Button text="취소"       cssclass="bottom_type1"        width="180" height="72"/>
<Button text="작업표준서" cssclass="bottom_type6_cyan"   width="180" height="72"/>
<Button text="생산불량"   cssclass="bottom_type5_red"    width="180" height="72"/>
<Button text="작업시작"   cssclass="bottom_type3_green"  width="180" height="72"/>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.bottom_type3_green
{
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  -nexa-border : 1px solid #1C634C;
  background : linear-gradient(to top,#237B5E 0%,#288F6D 50%,#2FA77F 51%,#38C797 100%);
  border-radius : 6px;
  color : #FFFFFF;
  font : 26px 'PretendardBold';
  box-shadow : 0px;
  letter-spacing : -1px;
}

.Button.bottom_type3_green[status=mouseover],
.Button.bottom_type3_green[status=focused]
{
  -nexa-border : 1px solid #1C634C;
  background : linear-gradient(to top,#278B6A 0%,#2D9F79 50%,#34B78B 51%,#48CBA0 100%);
}

.Button.bottom_type3_green[userstatus=selected],
.Button.bottom_type3_green[userstatus=pushed]
{
  -nexa-border : 1px solid #1C634C;
  background : linear-gradient(to top,#237B5E 0%,#288F6D 50%,#2FA77F 51%,#38C797 100%);
  opacity : 0.8;
}

.Button.bottom_type3_green[status=disabled]
{
  opacity : 0.4;
}

상태

선택자의미
[status=mouseover], [status=focused]Hover — 그라데이션 밝게
[userstatus=pushed], [userstatus=selected]Pressed — opacity 0.8
[status=disabled]Disabled — opacity 0.4

속성

속성값기본설명
cssclassbottom_type1 · bottom_type2 · bottom_type3_green · bottom_type4_orange · bottom_type5_red · bottom_type6_cyan · bottom_type7_purple—타입 (필수)
width / height180 × 72—
enabletrue | falsetruefalse면 Disabled
textstring—버튼 글자

토큰

크기 토큰값사용처
--radius-66px버튼 (POP, 카드, 셀).
버튼

Grid Cell Button

목록 그리드(pop_list_grid) 셀 안에 들어가는 작은 버튼이에요. 색은 Cell의 cssclass로 정해요.

피그마Grid Cell Buttonxcss.Grid.pop_list_grid … .cellbutton화면OM100_030.xfdl

사용법

미리보기
삭제
xfdl
<Cell col="9" text="삭제" displaytype="buttoncontrol" edittype="button" cssclass="red"/>

구조

Grid.pop_list_grid
└─ Cell  displaytype="buttoncontrol"  cssclass="<색>"
   └─ .cellbutton   16px Bold, 라운드 6, 셀 안 여백 6 / 2

예시

색

cssclass 없음(기본), green, orange(darkorange), red, cyan, purple. Light는 흰 바탕 + 색 보더, Dark는 색 바탕이에요.

미리보기
버튼확인종결삭제선택이동
코드 보기
xfdl
<Cell displaytype="buttoncontrol" edittype="button" text="버튼"/>
<Cell displaytype="buttoncontrol" edittype="button" text="확인" cssclass="green"/>
<Cell displaytype="buttoncontrol" edittype="button" text="종결" cssclass="orange"/>
<Cell displaytype="buttoncontrol" edittype="button" text="삭제" cssclass="red"/>

상태

마우스오버·포커스와 누름은 배경만 한 단계씩 바뀌어요.

미리보기
버튼확인삭제normal
버튼확인삭제hover
버튼확인삭제pressed

조건에 따라 색 바꾸기

cssclass에 expr을 쓰면 행 데이터에 따라 색이 바뀌어요. 버튼을 숨길 때는 displaytype도 expr로.

미리보기
정상불량
코드 보기
xfdl
<Cell displaytype="expr:DUP_ROUT == 1 ? 'buttoncontrol' : 'none'"
      edittype="button" text="bind:STATUS_NM"
      cssclass="expr:STATUS=='1' ? 'green' : 'red'"/>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Grid.pop_list_grid .body .row .cell .cellbutton
{
  font : 16px 'PretendardBold';
  color : #1E293B;
  -nexa-border : 1px solid #CBD5E1;
  border-radius : 6px;
  background : #FFFFFF;
  -nexa-padding : 7px 8px 8px 7px;
}

.Grid.pop_list_grid .body .row .cell .cellbutton[status=mouseover],
.Grid.pop_list_grid .body .row .cell .cellbutton[status=focused]
{
  font : 16px 'PretendardBold';
  color : #1E293B;
  -nexa-border : 1px solid #CBD5E1;
  border-radius : 6px;
  -nexa-padding : 0px;
  background : #F1F5F9;
}

.Grid.pop_list_grid .body .row .cell .cellbutton[userstatus=pushed]
{
  font : 16px 'PretendardBold';
  color : #1E293B;
  -nexa-border : 1px solid #CBD5E1;
  border-radius : 6px;
  -nexa-padding : 0px;
  background : #E2E8F0;
}

.Grid.pop_list_grid .body .row .cell.green .cellbutton
{
  font : 16px 'PretendardBold';
  color : #268767;
  -nexa-border : 1px solid #73C9AD;
  border-radius : 6px;
  background : #FFFFFF;
  -nexa-padding : 0px;
}

상태

선택자의미
.cellbutton[status=mouseover], [status=focused]Hover
.cellbutton[userstatus=pushed]Pressed

속성

속성값기본설명
displaytypebuttoncontrol | expr—버튼으로 표시
edittypebutton—클릭 이벤트(oncellclick)
cssclass(없음) · green · orange · darkorange · red · cyan · purple · expr(없음)버튼 색
textstring | bind:컬럼—버튼 글자

토큰

색 토큰LightDark사용처
--cellbtn-default-text#1e293b#e5eaf2Grid Cell Button (cssclass 없음) 글자.
--cellbtn-default-border#cbd5e1#33486fGrid Cell Button (cssclass 없음) 보더.
--cellbtn-default-bg#ffffff#22355dGrid Cell Button (cssclass 없음) 배경.
--cellbtn-green-text#268767#ffffffGrid Cell Button .green 글자.
--cellbtn-green-border#73c9ad#23956fGrid Cell Button .green 보더 (Dark는 보더 없음 — 배경색과 같게).
--cellbtn-red-text#87262c#ffffffGrid Cell Button .red 글자.
--cellbtn-red-border#c97378#95232aGrid Cell Button .red 보더 (Dark는 보더 없음 — 배경색과 같게).
버튼

Card Button

정보 카드 하단에 놓는 계산기 · 라벨 재발행 · 발행 버튼이에요.

피그마Card Buttonxcss.Button.btn_card_*화면testMenu.xfdl · divRight

사용법

미리보기
발행
xfdl
<Button id="btnPublish" text="발행" cssclass="btn_card_publish"
        left="btnReprint:10" bottom="10" height="56" right="10"/>

구조

Button  cssclass="btn_card_<종류>"
├─ 아이콘  ico_calc / ico_reprint (Light는 _l) / ico_publish_on, 24px
└─ 글자    22px Bold, 아이콘과 간격 8

예시

종류

계산기와 라벨 재발행은 선 버튼, 발행은 채운 버튼(주요 동작)이에요.

미리보기
계산기라벨 재발행발행
코드 보기
xfdl
<Button text="계산기"     cssclass="btn_card_calc"/>
<Button text="라벨 재발행" cssclass="btn_card_reprint"/>
<Button text="발행"       cssclass="btn_card_publish"/>

상태

미리보기
계산기발행default
계산기발행hover
계산기발행pressed

카드 하단 배치

세 버튼을 32% · 32% · 나머지로, 카드 왼쪽·아래·오른쪽 10px 안쪽에 놓아요.

미리보기
계산기라벨 재발행발행
코드 보기
xfdl
<Button id="btnCalc"    text="계산기"     cssclass="btn_card_calc"    left="10" bottom="10" height="56" width="32%"/>
<Button id="btnReprint" text="라벨 재발행" cssclass="btn_card_reprint" left="btnCalc:10" bottom="10" height="56" width="32%"/>
<Button id="btnPublish" text="발행"       cssclass="btn_card_publish" left="btnReprint:10" bottom="10" height="56" right="10"/>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.btn_card_publish
{
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  -nexa-icon : url('imagerc::/pop/ico_publish_on.png');
  -nexa-icon-position : left;
  -nexa-text-padding : 0px 0px 0px 8px;
  -nexa-padding : 0px;
  -nexa-border : 0px none;
  background : #1B4388;
  border-radius : 6px;
  color : #ffffff;
  font : 22px 'PretendardBold';
}

.Button.btn_card_publish[status=mouseover],
.Button.btn_card_publish[status=focused]
{
  -nexa-icon : url('imagerc::/pop/ico_publish_on.png');
  -nexa-border : 0px none;
  background : #2455A0;
  color : #ffffff;
}

.Button.btn_card_publish[userstatus=selected],
.Button.btn_card_publish[userstatus=pushed]
{
  -nexa-icon : url('imagerc::/pop/ico_publish_on.png');
  -nexa-border : 0px none;
  background : #163A75;
  color : #ffffff;
}

상태

선택자의미
[status=mouseover], [status=focused]Hover
[userstatus=pushed], [userstatus=selected]Pressed

속성

속성값기본설명
cssclassbtn_card_calc · btn_card_reprint · btn_card_publish—종류 (아이콘 포함)
height56—
width32% / 나머지(right=10)—세 개 배치 기준

토큰

색 토큰LightDark사용처
--cardbtn-line-border#cbd5e1#2a3b50btn_card_calc / reprint 보더.
--cardbtn-line-text#0f172a#d5dce7btn_card_calc / reprint 글자.
--cardbtn-fill-bg#1b4388#262f40btn_card_publish 배경.
--cardbtn-fill-text#ffffff#d5dce7btn_card_publish 글자.
크기 토큰값사용처
--size-card-btn56px카드 버튼 높이 / 탭 높이.
버튼

Emergency Button

상단 헤더의 빨간 비상호출 버튼이에요. 어느 화면에서나 같은 자리(오른쪽, 가동중 표시 왼쪽)에 있어요.

피그마Emergency Buttonxcss.Button.emergency_btn화면testMenu.xfdl · Div00

사용법

미리보기
비상호출
xfdl
<Button id="Button00" text="비상호출" cssclass="emergency_btn"
        top="0" bottom="0" right="118" width="143"/>

구조

Button  cssclass="emergency_btn"
├─ 아이콘  emergency_bu.png (두 테마 공용), 왼쪽
└─ 글자    22px Bold, 흰색, 간격 6

예시

상태

미리보기
비상호출비상호출비상호출

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.emergency_btn
{
  background : #D93636;
  -nexa-icon : url('imagerc::/pop/emergency_bu.png');
  color : #ffffff;
  font : 22px 'PretendardBold';
  -nexa-icon-position : left;
  -nexa-padding : 0px 0px 0px 0px;
  -nexa-border : 0px none;
  border-radius : 4px;
  -nexa-text-padding : 0px 0px 0px 6px;
}

.Button.emergency_btn[status=mouseover]
{
  background : #C22E2E;
  -nexa-border : 0px none;
}

.Button.emergency_btn[userstatus=selected],
.Button.emergency_btn[userstatus=pushed],
.Button.emergency_btn[status=focused]
{
  background : #A82626;
  -nexa-border : 0px none;
}

상태

선택자의미
[status=mouseover]Hover
[userstatus=pushed], [userstatus=selected], [status=focused]Pressed

속성

속성값기본설명
cssclassemergency_btn—
width / height143 × 55 (헤더 높이)—

토큰

색 토큰LightDark사용처
--emergency-bg#d93636#d92d20emergency_btn 배경 (글자·아이콘 흰색).
--emergency-bg-hover#c22e2e#b42318emergency_btn mouseover.
--emergency-bg-pressed#a82626#912018emergency_btn pushed·focused.
--on-color#ffffff#ffffff진한 배경 위 글자·점 (비상호출, 가동중, 조회/저장/닫기).
버튼

List · Move Button

아이콘만 있는 정사각형 버튼이에요. 목록 처음·이전·다음·끝 이동(btn_list_*)과 항목 넣기·빼기(btn_move_*).

xcss.Button.btn_list_* · .Button.btn_move_*아이콘ico_first · prev · next · last · move_right · move_left

사용법

미리보기
xfdl
<Button id="btn_first" cssclass="btn_list_first" width="56" height="56"/>
<Button id="btn_prev"  cssclass="btn_list_prev"  width="56" height="56"/>
<Button id="btn_next"  cssclass="btn_list_next"  width="56" height="56"/>
<Button id="btn_last"  cssclass="btn_list_last"  width="56" height="56"/>

구조

Button  cssclass="btn_list_<방향> | btn_move_<add|del>"
├─ 아이콘  ico_first/prev/next/last (24) · ico_move_right/left (32), Light는 _l
└─ 틀      보더 2px, 라운드 6, 패딩 0 (글자 없음)

예시

목록 이동

처음·끝은 Dark에서 한 단계 진한 바탕, 이전·다음은 투명 바탕이에요(xcss 그대로).

미리보기
normal
hover · pushed

넣기 · 빼기

두 목록 사이에서 항목을 옮길 때 써요. 옮길 대상이 없으면 enable="false"(40%).

미리보기
코드 보기
xfdl
<Button cssclass="btn_move_add" width="56" height="56"/>
<Button cssclass="btn_move_del" width="56" height="56" enable="false"/>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.btn_list_first
{
  -nexa-icon : url('imagerc::/pop/ico_first_l.png');
  -nexa-padding : 0px;
  -nexa-border : 2px solid #CBD5E1;
  background : #ffffff;
  border-radius : 6px;
}

.Button.btn_list_first[status=mouseover],
.Button.btn_list_first[status=focused],
.Button.btn_list_first[userstatus=selected],
.Button.btn_list_first[userstatus=pushed]
{
  -nexa-icon : url('imagerc::/pop/ico_first_l.png');
  -nexa-border : 2px solid #CBD5E1;
  background : #CBD5E1;
}

.Button.btn_move_add
{
  -nexa-icon : url('imagerc::/pop/ico_move_right_l.png');
  -nexa-padding : 0px;
  -nexa-border : 2px solid #CBD5E1;
  background : #ffffff;
  border-radius : 6px;
}

.Button.btn_move_add[status=mouseover],
.Button.btn_move_add[status=focused],
.Button.btn_move_add[userstatus=selected],
.Button.btn_move_add[userstatus=pushed]
{
  -nexa-icon : url('imagerc::/pop/ico_move_right_l.png');
  -nexa-padding : 0px;
  -nexa-border : 2px solid #CBD5E1;
  background : #CBD5E1;
  border-radius : 6px;
}

상태

선택자의미
[status=mouseover], [status=focused], [userstatus=selected], [userstatus=pushed]바탕이 한 단계 진해짐
[status=disabled]btn_move_*만 — opacity 0.4

속성

속성값기본설명
cssclassbtn_list_first · prev · next · last · btn_move_add · btn_move_del—
width / height56 × 56 권장—정사각형
text(비움)—아이콘만

토큰

크기 토큰값사용처
--radius-66px버튼 (POP, 카드, 셀).
버튼

Side Button

화면 오른쪽 사이드 영역의 큰 버튼이에요(작업종료 · T/O · 수기실적). 아이콘이 위, 글자가 아래.

xcss.Button.btn_side_end · btn_side_to · btn_side_hand화면testMenu.xfdl · pop_side_form

사용법

미리보기
작업종료
xfdl
<Button id="btnEnd" text="작업종료" cssclass="btn_side_end" left="12" top="12" right="12" height="120"/>

구조

Button  cssclass="btn_side_<end|to|hand>"
├─ 아이콘  ico_side_end/to/hand (Light는 _l), 위쪽 (-nexa-icon-position : top)
├─ 글자    24px Bold, 아이콘과 8px
└─ 틀      라운드 8 — 작업종료만 파란 그라데이션으로 강조

예시

종류

작업종료(btn_side_end)가 주요 동작이라 파란 톤, 나머지는 흰(Dark는 남색) 바탕이에요.

미리보기
작업종료T / O수기실적
코드 보기
xfdl
<Button id="btnEnd"  text="작업종료" cssclass="btn_side_end"  left="12" top="12"         right="12" height="120"/>
<Button id="btnTO"   text="T / O"    cssclass="btn_side_to"   left="12" top="btnEnd:10"  right="12" height="120"/>
<Button id="btnHand" text="수기실적" cssclass="btn_side_hand" left="12" top="btnTO:10"   right="12" height="120"/>

상태

미리보기
NormalHoverNormalHover

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.btn_side_end
{
  -nexa-icon : url('imagerc::/pop/ico_side_end_l.png');
  -nexa-icon-position : top;
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  -nexa-text-padding : 8px 0px 0px 0px;
  -nexa-padding : 0px;
  -nexa-border : 1px solid #B8C8E2;
  background : linear-gradient(to right,#F7F9FD 0%, #EBF0F9 100%);
  border-radius : 8px;
  color : #1F3F7A;
  font : 24px 'PretendardBold';
  box-shadow : 0px 1px 3px rgba(0,0,0,0.06);
}

.Button.btn_side_end[status=mouseover],
.Button.btn_side_end[status=focused],
.Button.btn_side_end[userstatus=selected],
.Button.btn_side_end[userstatus=pushed]
{
  -nexa-icon : url('imagerc::/pop/ico_side_end_l.png');
  -nexa-border : 1px solid #9FB4D8;
  background : linear-gradient(to right,#EEF2FA 0%, #E0E8F5 100%);
  color : #1F3F7A;
}

상태

선택자의미
[status=mouseover], [status=focused], [userstatus=selected], [userstatus=pushed]바탕·보더 한 단계 진하게

속성

속성값기본설명
cssclassbtn_side_end · btn_side_to · btn_side_hand—
left / right12—사이드 폭에 맞춤
height120—버튼 사이 10px (top="앞 버튼:10")

토큰

입력

Edit

검색 영역의 기본 입력칸이에요. Combo · Calendar와 같은 틀(pop_edit)을 써요.

피그마Editxcss.Edit.pop_edit화면testMenu.xfdl · divSearch

사용법

미리보기
A2026-0918
xfdl
<Edit id="edt_barcode" cssclass="pop_edit" width="250" height="46" inputmode="upper"/>

구조

Edit  cssclass="pop_edit"
└─ 높이 46, 라운드 5, 보더 1px, 좌우 패딩 12, 20px SemiBold

예시

상태

읽기 전용(readonly="true")과 비활성(enable="false")은 같은 회색으로 보여요.

미리보기
Default
A2026-0918
Hover
A2026-0918
Focused
A2026-0918
Readonly / Disabled
A2026-0918
코드 보기
xfdl
<Edit cssclass="pop_edit"/>
<Edit cssclass="pop_edit" readonly="true"/>
<Edit cssclass="pop_edit" enable="false"/>

라벨과 함께

검색 영역에서는 앞에 sta_title 라벨(너비 80~100)을 두고, 항목 사이는 20px 띄워요.

미리보기
Barcode
코드 보기
xfdl
<Static id="sta_BARCODE" text="Barcode" cssclass="sta_title" left="rdo_IUD_GBN:20" top="12" width="100" height="46"/>
<Edit   id="edt_barcode" cssclass="pop_edit" left="sta_BARCODE:0" top="12" width="250" height="46"/>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Edit.pop_edit
{
  font : 20px 'PretendardSemiBold';
  background : #FFFFFF;
  -nexa-border : 1px solid #CBD5E1;
  color : #0F172A;
  -nexa-padding : 0px 12px 0px 12px;
  border-radius : 5px;
}

.Edit.pop_edit[status=mouseover]
{
  -nexa-border : 1px solid #94A3B8;
}

.Edit.pop_edit[status=focused]
{
  -nexa-border : 1px solid #1B4388;
}

.Edit.pop_edit[status=readonly],
.Edit.pop_edit[status=disabled]
{
  background : #F1F5F9;
  -nexa-border : 1px solid #E2E8F0;
  color : #64748B;
}

상태

선택자의미
[status=mouseover]Hover — 보더 진하게
[status=focused]Focused — 파란 보더
[status=readonly], [status=disabled]회색 배경 · 흐린 글자

속성

속성값기본설명
cssclasspop_edit—
height46—
readonlytrue | falsefalse보기 전용
enabletrue | falsetrue
inputmodeupper | normal …normal바코드 등은 upper

토큰

색 토큰LightDark사용처
--edit-bg#ffffff#131e32pop_edit(Edit/Combo/Calendar) 배경.
--edit-border#cbd5e1#2a3b50pop_edit 보더.
--edit-border-hover#94a3b8#313c4epop_edit mouseover 보더.
--edit-border-focus#1b4388#2857a3pop_edit focused 보더.
--edit-text#0f172a#ffffffpop_edit 글자 / 라디오 글자.
--edit-disabled-bg#f1f5f9#0f1a33pop_edit readonly·disabled 배경.
--edit-disabled-text#64748b#9aa4b8pop_edit readonly·disabled 글자.
입력

Combo

검색 영역의 선택칸이에요. 틀은 Edit와 같고, 오른쪽에 드롭 아이콘이 붙어요.

피그마Comboxcss.Combo.pop_edit화면testMenu.xfdl · cmb_WKCTR

사용법

미리보기
1공장 프레스
xfdl
<Combo id="cmb_WKCTR" cssclass="pop_edit" width="260" height="46"
       innerdataset="gds_wkctr" codecolumn="CODE" datacolumn="CODE_NAM" index="-1"/>

구조

Combo  cssclass="pop_edit"
├─ .comboedit    글자, 좌우 패딩 12
├─ .dropbutton   machine_select_bu.png 24px
└─ .combolist    펼친 목록 — 항목 패딩 4 / 12

예시

상태

미리보기
Default
1공장 프레스
Focused
1공장 프레스
Disabled
1공장 프레스

펼친 목록

마우스오버 항목은 연한 파랑, 선택(포커스) 항목은 진한 파랑 + 흰 글자예요.

미리보기
2공장 포밍
1공장 프레스
2공장 포밍
3공장 용접

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Combo.pop_edit
{
  background : #FFFFFF;
  -nexa-border : 1px solid #CBD5E1;
  border-radius : 5px;
}

.Combo.pop_edit[status=mouseover]
{
  -nexa-border : 1px solid #94A3B8;
}

.Combo.pop_edit[status=focused]
{
  -nexa-border : 1px solid #1B4388;
}

.Combo.pop_edit .comboedit
{
  font : 20px 'PretendardSemiBold';
  background : transparent;
  -nexa-border : 0px none;
  color : #0F172A;
  -nexa-padding : 0px 12px 0px 12px;
}

.Combo.pop_edit .dropbutton,
.Combo.pop_edit .dropbutton[status=mouseover],
.Combo.pop_edit .dropbutton[status=focused],
.Combo.pop_edit .dropbutton[userstatus=pushed],
.Combo.pop_edit .dropbutton[userstatus=selected],
.ComboControl.pop_edit .dropbutton
{
  -nexa-icon : url('imagerc::/pop/machine_select_bu.png') center / 24px auto;
  background : transparent;
  -nexa-border : 0px none;
}

상태

선택자의미
[status=mouseover]Hover
[status=focused]Focused
.combolist .listboxitem[status=mouseover]목록 항목 오버
.combolist .listboxitem[status=focused]목록 항목 선택

속성

속성값기본설명
cssclasspop_edit—
innerdataset · codecolumn · datacolumnDataset · 컬럼명—목록 데이터
indexnumber-1-1이면 빈 칸

토큰

색 토큰LightDark사용처
--edit-bg#ffffff#131e32pop_edit(Edit/Combo/Calendar) 배경.
--edit-border#cbd5e1#2a3b50pop_edit 보더.
--edit-border-focus#1b4388#2857a3pop_edit focused 보더.
--edit-list-hover#eef4fc#1b2940Combo 목록 항목 mouseover.
--edit-list-selected#225fc7#225fc7Combo 목록 항목 focused (글자 흰색).
입력

Calendar

날짜 입력칸이에요. 표시 형식은 yyyy-MM-dd.

피그마Calendarxcss.Calendar.pop_edit화면testMenu.xfdl · cal_SDATE

사용법

미리보기
2026-09-18
xfdl
<Calendar id="cal_SDATE" cssclass="pop_edit" width="180" height="46" dateformat="yyyy-MM-dd"/>

구조

Calendar  cssclass="pop_edit"
├─ .calendaredit  글자, 왼쪽 패딩 12
└─ .dropbutton    넥사크로 기본 아이콘 (btn_WF_Calendar)

예시

상태

미리보기
Default
2026-09-18
Focused
2026-09-18
Disabled
2026-09-18

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Calendar.pop_edit
{
  background : #FFFFFF;
  -nexa-border : 1px solid #CBD5E1;
  color : #0F172A;
  border-radius : 5px;
}

.Calendar.pop_edit[status=focused]
{
  -nexa-border : 1px solid #1B4388;
}

.Calendar.pop_edit .calendaredit
{
  font : 20px 'PretendardSemiBold';
  background : transparent;
  color : #0F172A;
  -nexa-border : 0px none;
  -nexa-padding : 0px 0px 0px 12px;
}

.Calendar.pop_edit[status=disabled],
.Calendar.pop_edit[status=readonly]
{
  background : #F1F5F9;
  -nexa-border : 1px solid #E2E8F0;
}

상태

선택자의미
[status=focused]Focused
[status=readonly], [status=disabled]회색 배경

속성

속성값기본설명
cssclasspop_edit—
dateformatyyyy-MM-dd—

토큰

색 토큰LightDark사용처
--edit-bg#ffffff#131e32pop_edit(Edit/Combo/Calendar) 배경.
--edit-border#cbd5e1#2a3b50pop_edit 보더.
--edit-border-focus#1b4388#2857a3pop_edit focused 보더.
--edit-disabled-bg#f1f5f9#0f1a33pop_edit readonly·disabled 배경.
확인 필요달력 버튼 아이콘은 xcss에 지정이 없어 넥사크로 기본 아이콘이 보여요. POP 스타일 아이콘 지정을 검토해야 해요.
입력

Radio

검색 영역의 구분 선택이에요(등록 / 완료 등).

피그마Radioxcss.Radio.pop_edit화면testMenu.xfdl · rdo_IUD_GBN

사용법

미리보기
등록완료
xfdl
<Radio id="rdo_IUD_GBN" cssclass="pop_edit" width="188" height="46" direction="vertical"
       innerdataset="innerdataset" codecolumn="codecolumn" datacolumn="datacolumn" value="I"/>

구조

Radio  cssclass="pop_edit"
└─ .radioitem   아이콘 14px + 간격 6 + 20px SemiBold

예시

상태

미리보기
OffOnDisabledDisabled On

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Radio.pop_edit
{
  background : transparent;
  -nexa-border : 0px none;
}

.Radio.pop_edit .radioitem
{
  -nexa-icon : URL('imagerc::pda_rdo_WF_Radio.png');
  -nexa-text-padding : 0px 0px 0px 6px;
  font : 20px 'PretendardSemiBold';
  color : #0F172A;
}

.Radio.pop_edit .radioitem[userstatus=selected]
{
  -nexa-icon : URL('imagerc::pda_rdo_WF_Radio_S.png');
}

.Radio.pop_edit .radioitem[status=mouseover]
{
  -nexa-icon : URL('imagerc::pda_rdo_WF_Radio_O.png');
}

상태

선택자의미
.radioitem[userstatus=selected]On
.radioitem[status=mouseover]Hover
.radioitem[status=disabled]Disabled

속성

속성값기본설명
cssclasspop_edit—
directionvertical | horizontal—
innerdataset · codecolumn · datacolumn—항목
valuestring—선택값

토큰

색 토큰LightDark사용처
--edit-text#0f172a#ffffffpop_edit 글자 / 라디오 글자.
--radio-disabled-text#94a3b8#5c6b82Radio 비활성 글자.
확인 필요xcss는 pda_rdo_WF_Radio(.png/_S/_O/_D/_DS)를 참조하지만 받은 이미지는 rdo_WF_Radio_O / _S뿐이라 비활성은 투명도로 대체했어요.
입력

Machine Select

상단 헤더 왼쪽의 설비 선택 콤보예요.

피그마Machine Selectxcss.Combo.machine_select화면testMenu.xfdl · Div00

사용법

미리보기
DB1002 [DB포밍기 2호기]
xfdl
<Combo id="Combo00" cssclass="machine_select" left="0" top="0" width="400" bottom="0"
       innerdataset="ds_machine" codecolumn="CODE" datacolumn="NAME" index="0"/>

구조

Combo  cssclass="machine_select"
├─ 글자      24px Bold
└─ .dropbutton  machine_select_bu.png 24px

예시

상태

미리보기
DB1002 [DB포밍기 2호기]
DB1002 [DB포밍기 2호기]

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Combo.machine_select
{
  background : #ffffff;
  color : #0F172A;
  font : 24px 'PretendardBold';
  -nexa-border : 1px solid #E2E8F0;
  border-radius : 4px;
}

.Combo.machine_select[status=focused],
.Combo.machine_select[status=mouseover]
{
  -nexa-border : 1px solid #E2E8F0;
}

.Combo.machine_select .dropbutton
{
  -nexa-icon : url('imagerc::/pop/machine_select_bu.png') center / 24px auto;
}

상태

선택자의미
[status=mouseover], [status=focused]Hover / Focused

속성

속성값기본설명
cssclassmachine_select—
width / height400 × 55—

토큰

색 토큰LightDark사용처
--header-select-bg#ffffff#131e32machine_select 배경.
--header-select-border#e2e8f0#131e32machine_select 보더.
--header-select-text#0f172a#ffffffmachine_select 글자.
입력

Keypad

수량·숫자를 터치로 입력하는 키패드 버튼이에요(pop_pad_key).

xcss.Button.pop_pad_key

사용법

미리보기
7
xfdl
<Button id="btn_7" text="7" cssclass="pop_pad_key" width="96" height="72"/>

구조

Button  cssclass="pop_pad_key"
└─ 26px Bold, 2단 그라데이션, 보더 1px, 라운드 8

예시

키패드 배열

미리보기
789456123000⌫

상태

누르면(pushed) 연한 파랑 + 파란 보더로 바뀌어요.

미리보기
5Normal
5Hover
5Pressed
5Disabled

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.pop_pad_key
{
  -nexa-text-align : center;
  -nexa-vertical-align : middle;
  background : linear-gradient(to top,#DCE4EE 0%,#E4EAF2 50%,#F1F5F9 51%,#FFFFFF 100%);
  -nexa-border : 1px solid #94A3B8;
  border-radius : 8px;
  color : #1E293B;
  font : 26px 'PretendardBold';
  cursor : pointer;
}

.Button.pop_pad_key[status=mouseover],
.Button.pop_pad_key[status=focused]
{
  font : 26px 'PretendardBold';
  background : linear-gradient(to top,#D3DDE9 0%,#DCE4EE 50%,#EAF0F6 51%,#F8FAFC 100%);
  -nexa-border : 1px solid #64748B;
}

.Button.pop_pad_key[userstatus=pushed]
{
  font : 26px 'PretendardBold';
  background : #DBE7F8;
  -nexa-border : 1px solid #2455A0;
}

.Button.pop_pad_key[status=disabled]
{
  font : 26px 'PretendardBold';
  cursor : default;
  opacity : 0.4;
}

상태

선택자의미
[status=mouseover], [status=focused]Hover
[userstatus=pushed]Pressed — 연한 파랑 + 파란 보더
[status=disabled]opacity 0.4

속성

속성값기본설명
cssclasspop_pad_key—
width / height96 × 72 권장—

토큰

정보 카드

Info Label · Info Value

카드 안에서 항목 하나를 "라벨 | 값" 한 줄로 보여주거나 입력받는 조합이에요.

피그마Info Label · Info Valuexcss.Static.pop_info_label · .Edit.pop_info_value화면testMenu.xfdl · divLeft

사용법

미리보기
코일 LOT
D26081800807
xfdl
<Static id="sta_COIL_LOT" text="코일 LOT" cssclass="pop_info_label" left="10" top="71" width="200" height="47"/>
<Edit   id="edt_COIL_LOT" cssclass="pop_info_value" left="sta_COIL_LOT:0" top="71" right="10" height="47" readonly="true"/>

구조

한 줄 (높이 47)
├─ Static  cssclass="pop_info_label"   너비 200, 회색 글자, 하단 1px
└─ Edit    cssclass="pop_info_value"   남은 너비(right=10)
           readonly="true"  → 줄만 (보기 전용)
           readonly 없음     → 연한 파랑 배경 + 파란 밑줄 (입력칸)

예시

보기 전용 vs 입력

보기만 할 값은 readonly="true", 작업자가 입력할 값은 readonly 없이 둬요. 파란 배경과 밑줄이 "입력할 수 있음"을 뜻해요.

미리보기
코일중량
1,333.0 (Kg)
투입수량
120
코드 보기
xfdl
<Edit cssclass="pop_info_value" readonly="true"/>  <!-- 보기 전용 -->
<Edit cssclass="pop_info_value"/>                  <!-- 입력 -->

입력 상태

미리보기
Default
120
Hover
120
Focused
120
Placeholder
입력하세요
코드 보기
xfdl
<Edit cssclass="pop_info_value" displaynulltext="입력하세요"/>

여러 줄

다음 줄은 top을 47씩 더해요(71 → 118 → 165 …).

미리보기
코일 LOT
D26081800807
물성치
FE84GA (18.6, 44)
규격
0.80 * 160 * C
품명
SCP1
코드 보기
xfdl
<Static text="코일 LOT" cssclass="pop_info_label" left="10" top="71"  width="200" height="47"/>
<Static text="물성치"   cssclass="pop_info_label" left="10" top="118" width="200" height="47"/>
<Static text="규격"     cssclass="pop_info_label" left="10" top="165" width="200" height="47"/>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Static.pop_info_label
{
  color : #64748B;
  font : 20px 'PretendardSemiBold';
  -nexa-text-align : left;
  -nexa-vertical-align : middle;
  -nexa-padding : 0px 12px 0px 12px;
  -nexa-border : 0px none, 0px none, 1px solid #E2E8F0, 0px none;
}

.Edit.pop_info_value,
.MaskEdit.pop_info_value
{
  color : #0F172A;
  font : 20px 'PretendardSemiBold';
  background : #EEF4FC;
  -nexa-padding : 0px 12px 0px 12px;
  -nexa-border : 0px none, 0px none, 2px solid #1B4388, 0px none;
}

.Edit.pop_info_value[status=mouseover],
.MaskEdit.pop_info_value[status=mouseover]
{
  background : #EEF4FC;
  -nexa-border : 0px none, 0px none, 2px solid #2455A0, 0px none;
}

.Edit.pop_info_value[status=focused],
.MaskEdit.pop_info_value[status=focused]
{
  background : #E3ECFA;
  -nexa-border : 0px none, 0px none, 3px solid #2455A0, 0px none;
}

.Edit.pop_info_value[userstatus=nulltext],
.MaskEdit.pop_info_value[userstatus=nulltext]
{
  color : #94A3B8;
}

상태

선택자의미
.pop_info_value[status=mouseover]Hover — 밑줄 진하게
.pop_info_value[status=focused]Focused — 밑줄 3px, 배경 진하게
.pop_info_value[userstatus=nulltext]Placeholder
.pop_info_value[status=readonly], [status=disabled]보기 전용 — 배경 없음, 줄 1px

속성

속성값기본설명
cssclasspop_info_label (Static) · pop_info_value (Edit / MaskEdit)—
readonlytrue | falsefalsetrue면 보기 전용
height47—행 높이
width (라벨)200—
displaynulltextstring—Placeholder 글자

토큰

색 토큰LightDark사용처
--info-label-text#64748b#9aa4b8pop_info_label 글자.
--info-border#e2e8f0#1c2640pop_info_label / pop_info_value(readonly) / pop_info_chk 하단 1px.
--info-value-text#0f172a#ffffffpop_info_value 글자.
--info-value-bg#eef4fc#12203dpop_info_value 입력칸 배경 (readonly 아님).
--info-value-line#1b4388#2857a3pop_info_value 입력칸 밑줄 2px.
--info-value-line-focus#2455a0#4f86e8pop_info_value focused 밑줄 3px.
--info-placeholder#94a3b8#5c6b82pop_info_value nulltext 글자.
크기 토큰값사용처
--size-info-row47px정보 행 높이 (pop_info_label/value).
--size-info-label200px정보 라벨 너비.
정보 카드

Info Check

정보 카드 안의 체크 항목이에요. 정보 행과 같은 높이·하단선을 써요.

피그마Info Checkxcss.CheckBox.pop_info_chk화면testMenu.xfdl

사용법

미리보기
소진
xfdl
<CheckBox id="chk_END" text="소진" cssclass="pop_info_chk" height="47"/>

구조

CheckBox  cssclass="pop_info_chk"
├─ 아이콘  pop_chk_on / pop_chk_off (Light는 _l), 21px
└─ 글자    왼쪽 패딩 12, 하단 1px

예시

상태

미리보기
미선택
선택

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.CheckBox.pop_info_chk
{
  -nexa-icon : url('imagerc::/pop/pop_chk_off_l.png');
  -nexa-text-padding : 0px;
  -nexa-padding : 0px 0px 0px 12px;
  -nexa-border : 0px none, 0px none, 1px solid #E2E8F0, 0px none;
}

.CheckBox.pop_info_chk[status=mouseover]
{
  -nexa-icon : url('imagerc::/pop/pop_chk_off_l.png');
}

.CheckBox.pop_info_chk[userstatus=selected],
.CheckBox.pop_info_chk[status=mouseover][userstatus=selected]
{
  -nexa-icon : url('imagerc::/pop/pop_chk_on_l.png');
}

상태

선택자의미
[userstatus=selected]체크됨

속성

속성값기본설명
cssclasspop_info_chk—
valuetrue | falsefalse

토큰

색 토큰LightDark사용처
--info-border#e2e8f0#1c2640pop_info_label / pop_info_value(readonly) / pop_info_chk 하단 1px.
--info-value-text#0f172a#ffffffpop_info_value 글자.
정보 카드

Card

정보를 묶는 카드예요. 바탕(pop_card) 위에 제목 줄(아이콘 + 제목)과 내용을 놓아요.

피그마Card Surface · Card Header · Card Iconxcss.Div.pop_card · .Static.pop_card_title · .Static.pop_card_ico화면testMenu.xfdl

사용법

미리보기
현재 코일 정보
xfdl
<Div id="divLeft" cssclass="pop_card" left="10" top="10" width="49%" bottom="10">
  <Layouts><Layout>
    <Static id="stcIcon"  cssclass="pop_card_ico" left="20" top="21" width="28" height="28"/>
    <Static id="stcTitle" text="현재 코일 정보" cssclass="pop_card_title" left="0" top="0" right="0" height="70"/>
  </Layout></Layouts>
</Div>

구조

Div  cssclass="pop_card"           라운드 10, Light는 1px 보더
├─ Static  cssclass="pop_card_ico <종류>"   28×28, 위치 (20, 21)
├─ Static  cssclass="pop_card_title"        높이 70, 왼쪽 패딩 54, 20px Bold, 하단 1px
└─ 내용 (Info Label · Value, Grid 등)       top 71부터

예시

아이콘 종류

pop_card_ico 뒤에 두 번째 클래스로 종류를 붙여요. 없으면 문서(file) 아이콘이에요.

미리보기
(없음)
list
job
prod
worker
label
코드 보기
xfdl
<Static cssclass="pop_card_ico"/>
<Static cssclass="pop_card_ico list"/>
<Static cssclass="pop_card_ico job"/>
<Static cssclass="pop_card_ico prod"/>
<Static cssclass="pop_card_ico worker"/>
<Static cssclass="pop_card_ico label"/>

바탕 종류

pop_card는 정보 카드, pop_grid_card는 그리드를 담는 카드, pop_card_form은 카드들을 담는 배경이에요. Dark에서는 grid_card와 form이 세로 그라데이션이에요.

미리보기
pop_card
pop_grid_card
pop_card_form
코드 보기
xfdl
<Div cssclass="pop_card_form">        <!-- 배경 -->
  <Div cssclass="pop_card"/>          <!-- 정보 카드 -->
  <Div cssclass="pop_grid_card"/>     <!-- 그리드 카드 -->
</Div>

정보 카드 전체

제목 + 정보 행 + 하단 카드 버튼까지 붙인 형태예요.

미리보기
금일 코일 리스트
코일 LOT
D26081800807
규격/품명
0.80 * 160 * C / SCP1
잔량
1,181.74 (Kg)
소진
N
계산기라벨 재발행발행

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Div.pop_card_form
{
  background : #ECF1F9;
  border-radius : 10px;
}

.Div.pop_card
{
  background : #ffffff;
  border-radius : 10px;
  -nexa-border : 1px solid #E2E8F0;
}

.Div.pop_grid_card
{
  background : #ffffff;
  border-radius : 10px;
  -nexa-border : 1px solid #E2E8F0;
}

.Static.pop_card_title
{
  color : #0F172A;
  font : 20px 'PretendardBold';
  -nexa-text-align : left;
  -nexa-vertical-align : middle;
  -nexa-padding : 0px 0px 0px 54px;
  -nexa-border : 0px none, 0px none, 1px solid #E2E8F0, 0px none;
}

.Static.pop_card_ico
{
  background : url('imagerc::/pop/ico_file_l.png') #ffffff no-repeat center center / 24px;
  border-radius : 4px;
  -nexa-border : 1px solid #E2E8F0;
}

.Static.pop_card_ico.list
{
  background : url('imagerc::/pop/ico_list_l.png') #ffffff no-repeat center center / 24px;
  -nexa-border : 1px solid #E2E8F0;
}

.Static.pop_card_ico.job
{
  background : url('imagerc::/pop/ico_job_l.png') #ffffff no-repeat center center / 24px;
  -nexa-border : 1px solid #E2E8F0;
}

속성

속성값기본설명
cssclass (Div)pop_card · pop_grid_card · pop_card_form—바탕
cssclass (아이콘)pop_card_ico [list · job · prod · worker · label]—두 번째 클래스 = 종류
제목 높이70—
내용 시작top 71, left/right 10—

토큰

색 토큰LightDark사용처
--card-surface#ffffff#000b21.Div.pop_card 배경.
--card-border#e2e8f0#1c2640pop_card 보더(Light만) / pop_card_title 하단선.
--card-title-text#0f172a#ffffffpop_card_title 글자.
--card-ico-bg#ffffff#15223cpop_card_ico 배경.
--card-form-bg#ecf1f9#0f2135pop_card_form / pop_grid_card(Dark) 배경. Dark는 card-form-bg-end까지 세로 그라데이션.
크기 토큰값사용처
--size-card-title70px카드 제목 높이.
--radius-1010px카드, 카드 폼, 탭 페이지.
확인 필요testMenu.xfdl에 쓰인 pop_card_ico coil은 xcss에 정의가 없어 기본 아이콘으로 보여요.
그리드

List Grid

목록형 그리드(pop_list_grid)예요. 가운데 정렬, 행 하단선, 선택 행 파랑, 상태점·셀 버튼·합계 행을 지원해요.

피그마List Grid Cell · List Gridxcss.Grid.pop_list_grid화면OM100_030.xfdl · testMenu.xfdl

사용법

미리보기
상태작업지시품명수량
정상WO-2401브레이크 패드120
경고WO-2402캘리퍼 어셈블리80
xfdl
<Grid id="grd_marking" cssclass="pop_list_grid" autofittype="col" scrollbarsize="40" binddataset="ds_list">
  <Formats><Format id="default">
    <Columns><Column size="130"/><Column size="160"/><Column size="240"/><Column size="100"/></Columns>
    <Rows><Row size="56" band="head"/><Row size="56"/></Rows>
    <Band id="head"><Cell text="상태"/><Cell col="1" text="작업지시"/>…</Band>
    <Band id="body">
      <Cell text="bind:STATUS_NM" cssclass="expr:STATUS=='N' ? 'dot_ok' : (STATUS=='W' ? 'dot_warn' : 'dot_stop')"/>
      <Cell col="1" text="bind:WO_NO"/>…
    </Band>
  </Format></Formats>
</Grid>

구조

Grid  cssclass="pop_list_grid"
├─ head     회색 글자, 하단 1px
├─ body     20px SemiBold, 가운데 정렬, 패딩 0, 하단 1px
│   ├─ Cell cssclass="dot_ok | dot_warn | dot_stop"    왼쪽 12px에 상태점
│   └─ Cell displaytype="buttoncontrol" cssclass="<색>"  셀 버튼 (여백 6 / 2)
└─ summary  합계 행 — 회색 배경, 상단 1px, Bold

예시

상태점

상태 칸은 cssclass를 expr로 바꿔요. 선택된 행에서는 글자가 왼쪽 정렬(패딩 38)로 바뀌어요.

미리보기
정상
경고선택 행
정지
코드 보기
xfdl
<Cell text="bind:STATUS_NM"
      cssclass="expr:STATUS=='N' ? 'dot_ok' : (STATUS=='W' ? 'dot_warn' : 'dot_stop')"/>

셀 버튼과 합계 행

미리보기
품명수량처리
브레이크 패드120확인
디스크 로터64삭제
합계184
코드 보기
xfdl
<Band id="summary">
  <Cell text="합계"/>
  <Cell col="1" text="expr:dataset.getSum('QTY')"/>
</Band>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Grid.pop_list_grid
{
  background : transparent;
  border-radius : 10px;
  -nexa-border : 0px none;
}

.Grid.pop_list_grid .head .row .cell
{
  color : #64748B;
  font : 20px 'PretendardSemiBold';
  background : transparent;
  -nexa-background-odd : transparent;
  -nexa-border : 0px none, 0px none, 1px solid #E2E8F0, 0px none;
  -nexa-padding : 0px;
  -nexa-text-align : center;
}

.Grid.pop_list_grid .body .row .cell
{
  color : #0F172A;
  font : 20px 'PretendardSemiBold';
  background : transparent;
  -nexa-background-odd : transparent;
  -nexa-border : 0px none, 0px none, 1px solid #E2E8F0, 0px none;
  -nexa-padding : 0px;
  -nexa-text-align : center;
}

.Grid.pop_list_grid .body .row .cell[status=mouseover]
{
  background : transparent;
  -nexa-background-odd : transparent;
}

.Grid.pop_list_grid .body .row .cell[userstatus=selected],
.Grid.pop_list_grid .body .row .cell[userstatus=selected][status=mouseover]
{
  background : #E8EFFB;
  -nexa-background-odd : #E8EFFB;
  color : #1B4388;
  font : 20px 'PretendardSemiBold';
  -nexa-border : 0px none, 0px none, 1px solid #C7D7F2, 0px none;
  -nexa-padding : 0px;
}

.Grid.pop_list_grid .summary .row .cell
{
  color : #0F172A;
  font : 20px 'PretendardBold';
  background : #F1F5F9;
  -nexa-background-odd : #F1F5F9;
  -nexa-border : 1px solid #CBD5E1, 0px none, 0px none, 0px none;
  -nexa-padding : 0px;
  -nexa-text-align : center;
}

상태

선택자의미
.body .row .cell[userstatus=selected]선택 행 — 파란 배경
.body .row .cell[status=mouseover]오버 — 변화 없음(투명)
.cell.dot_*[userstatus=selected]선택 행 상태점 — 왼쪽 정렬, 패딩 38

속성

속성값기본설명
cssclass (Grid)pop_list_grid—
Row size56 권장—
Cell cssclassdot_ok · dot_warn · dot_stop · green … purple · blackBackground · greenBackground · darkorangeBackground—상태점 / 셀 버튼 색 / 진행상태 색 블록
autofittypecol—열 너비 맞춤
scrollbarsize40—터치용 스크롤바

토큰

색 토큰LightDark사용처
--lg-head-text#64748b#8d9aafpop_list_grid head 글자.
--lg-body-text#0f172a#ffffffpop_list_grid body 글자.
--lg-border#e2e8f0#1c2640pop_list_grid body 하단선.
--lg-selected-bg#e8effb#173b78pop_list_grid 선택 행 배경.
--lg-selected-text#1b4388#ffffffpop_list_grid 선택 행 글자.
--lg-summary-bg#f1f5f9#16233dpop_list_grid summary 배경.
--lg-summary-border#cbd5e1#2a3b50pop_list_grid summary 상단선.
그리드

Input Grid (Card Grid)

데이터를 표 형태로 입력받는 그리드(pop_card_grid)예요. 파란 cell_input 칸이 입력 칸이에요.

피그마Card Grid Cell · Card Gridxcss.Grid.pop_card_grid화면—

사용법

미리보기
구분품번품명수량 (입력)
작업1A-1001브레이크 패드120
작업2A-1002캘리퍼 어셈블리80
xfdl
<Grid cssclass="pop_card_grid" binddataset="ds_input">
  …
  <Band id="body">
    <Cell text="bind:GUBUN" cssclass="info_label" edittype="none"/>
    <Cell col="1" text="bind:ITEM_CD" edittype="none"/>
    <Cell col="2" text="bind:ITEM_NM" edittype="none"/>
    <Cell col="3" text="bind:QTY" cssclass="cell_input" edittype="normal" displaytype="number"/>
  </Band>
</Grid>

구조

Grid  cssclass="pop_card_grid"
├─ head                    회색 글자, 왼쪽 정렬, 좌우 패딩 12
└─ body
    ├─ Cell cssclass="info_label"   항목명 (회색 글자)
    ├─ Cell edittype="none"          보기 칸
    └─ Cell cssclass="cell_input"    입력 칸 — 파란 배경, edittype 지정

예시

입력 칸 지정

입력받을 칸에 cssclass="cell_input"과 edittype(normal · mask · date 등)을 함께 줘요. 파란 배경은 홀짝 행·선택 행에서도 유지돼요.

미리보기
투입수량120
불량수량3
코드 보기
xfdl
<Cell cssclass="cell_input" edittype="normal" displaytype="number" text="bind:QTY"/>
<Cell cssclass="cell_input" edittype="date"   displaytype="date"   text="bind:WORK_DT"/>

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Grid.pop_card_grid
{
  background : transparent;
  -nexa-border : 0px none;
}

.Grid.pop_card_grid .head .row .cell
{
  color : #64748B;
  font : 20px 'PretendardSemiBold';
  background : transparent;
  -nexa-background-odd : transparent;
  -nexa-border : 0px none, 0px none, 1px solid #E2E8F0, 0px none;
  -nexa-padding : 0px 12px 0px 12px;
  -nexa-text-align : left;
}

.Grid.pop_card_grid .body .row .cell
{
  color : #0F172A;
  font : 20px 'PretendardSemiBold';
  background : transparent;
  -nexa-background-odd : transparent;
  -nexa-border : 0px none, 0px none, 1px solid #E2E8F0, 0px none;
  -nexa-padding : 0px 12px 0px 12px;
  -nexa-text-align : left;
}

.Grid.pop_card_grid .body .row .cell[userstatus=selected],
.Grid.pop_card_grid .body .row .cell[userstatus=selected][status=mouseover]
{
  background : #E8EFFB;
  -nexa-background-odd : #E8EFFB;
  color : #1B4388;
  -nexa-border : 0px none, 0px none, 1px solid #C7D7F2, 0px none;
}

.Grid.pop_card_grid .body .row .cell.info_label
{
  color : #64748B;
}

.Grid.pop_card_grid .body .row .cell.info_label[userstatus=selected]
{
  color : #1B4388;
}

상태

선택자의미
.body .row .cell[userstatus=selected]선택 행 — 파란 배경
.cell.cell_input (모든 상태)입력 칸 배경 유지

속성

속성값기본설명
cssclass (Grid)pop_card_grid—
Cell cssclassinfo_label · cell_input—
Cell edittypenone · normal · mask · date …none입력 칸은 반드시 지정

토큰

색 토큰LightDark사용처
--cg-head-text#64748b#9aa4b8pop_card_grid head 글자.
--cg-border#e2e8f0#1c2640pop_card_grid 하단선.
--cg-body-text#0f172a#ffffffpop_card_grid body 글자.
--cg-selected-bg#e8effb#173b78pop_card_grid 선택 행 배경.
--cg-input-bg#eef4fc#1a2d52pop_card_grid cell_input 배경.
확인 필요xcss의 cell_input 글자색이 Light에서도 #ffffff라 연한 파란 배경 위에서 안 보일 수 있어요. 문서와 피그마는 본문색으로 표시해요.
헤더 · 탭

Tab

서브 화면의 하위 메뉴 탭이에요(원자재투입현황 · 작업지시목록 …).

피그마Tab Item · Tab Barxcss.Tab.pop_cont_tab화면testMenu.xfdl · Tab00

사용법

미리보기
원자재투입현황작업지시목록생산작업현황비가동내역
xfdl
<Tab id="Tab00" cssclass="pop_cont_tab" left="10" top="85" right="10" bottom="16">
  <Tabpages>
    <Tabpage id="Tabpage1" text="원자재투입현황"/>
    <Tabpage id="Tabpage2" text="작업지시목록" cssclass="pop_grid_card"/>
  </Tabpages>
</Tab>

구조

Tab  cssclass="pop_cont_tab"
├─ .tabbuttonitem   22px Bold, 패딩 10 / 5
│    선택: 글자 파랑 + 아래 밑줄 이미지 tab_cont_on (46×2)
└─ .tabpage          보더 없음 (pop_cont_tabpage면 라운드 10 배경)

예시

상태

미리보기
DefaultHoverSelected

탭 9개

미리보기
원자재투입현황작업지시목록생산작업현황비가동내역부적합처리일일생산실적자주검사일지설비일상점검표작업표준서

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Tab.pop_cont_tab .tabbuttonitem
{
  color : #64748B;
  background : transparent;
  -nexa-padding : 10px 5px 10px 5px;
  font : 22px 'PretendardBold';
  -nexa-border : 0px none;
}

.Tab.pop_cont_tab .tabbuttonitem[status=mouseover]
{
  color : #455C7C;
  background : transparent;
  -nexa-padding : 10px 5px 10px 5px;
  -nexa-border : 0px none;
}

.Tab.pop_cont_tab .tabbuttonitem[userstatus=selected],
.Tab.pop_cont_tab .tabbuttonitem[status=focused][userstatus=selected]
{
  color : #1B4388;
  background : url('imagerc::/pop/tab_cont_on_l.png') no-repeat center bottom;
  -nexa-padding : 4px 5px 16px 5px;
  font : 22px 'PretendardBold';
  -nexa-border : 0px none;
}

상태

선택자의미
.tabbuttonitem[status=mouseover]Hover
.tabbuttonitem[userstatus=selected]Selected — 밑줄 이미지
.tabbuttonitem[status=disabled]Disabled

속성

속성값기본설명
cssclasspop_cont_tab—
Tabpage cssclass(없음) · pop_grid_card · pop_cont_tabpage—탭 페이지 바탕

토큰

색 토큰LightDark사용처
--tab-text#64748b#7f8da3pop_cont_tab 탭 글자.
--tab-text-hover#455c7c#ffffffpop_cont_tab 탭 mouseover 글자.
--tab-text-selected#1b4388#ffffffpop_cont_tab 선택 탭 글자.
헤더 · 탭

Status Badge

상단 헤더 맨 오른쪽의 설비 가동 상태 표시예요. 옆에 날짜(info_date)가 함께 놓여요.

피그마Status Badgexcss.Div.status_running · .Static.info_date화면testMenu.xfdl · Div00

사용법

미리보기
2026-09-18 10:38가동중
xfdl
<Static id="Static01" text="2026-09-18 10:38" cssclass="info_date" top="0" bottom="0" right="Button00:10" width="210"/>
<Div id="Div01" cssclass="status_running" top="0" width="108" bottom="0" right="0">
  <Layouts><Layout>
    <Static id="Static00" cssclass="status_running_bu" left="18" top="24" width="8" height="8"/>
    <Static id="Static01" text="가동중" cssclass="status_running_text" left="32" top="0" bottom="0" right="0"/>
  </Layout></Layouts>
</Div>

구조

Div  cssclass="status_running"        108×55, 라운드 4, 초록 (Dark는 가로 그라데이션)
├─ Static  cssclass="status_running_bu"    흰 점 8×8, 위치 (18, 24)
└─ Static  cssclass="status_running_text"  22px Bold 흰색, left 32

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Div.status_running
{
  background : #12A37A;
  border-radius : 4px;
}

.Static.status_running_bu
{
  background : #ffffff;
  border-radius : 30px;
}

.Static.status_running_text
{
  color : #ffffff;
  font : 22px 'PretendardBold';
}

.Static.info_date
{
  color : #0F172A;
  -nexa-padding : 0px 0px 0px 28px;
  background : url('imagerc::/pop/date_bu_l.png') no-repeat left center / 24px auto;
  font : 20px 'PretendardBold';
}

속성

속성값기본설명
cssclassstatus_running · status_running_bu · status_running_text—
크기108 × 55—

토큰

색 토큰LightDark사용처
--status-bg#12a37a#10b981status_running 배경 (Dark는 status-bg-end까지 가로 그라데이션).
--status-bg-end#12a37a#068f62status_running 그라데이션 끝색 (Dark).
--on-color#ffffff#ffffff진한 배경 위 글자·점 (비상호출, 가동중, 조회/저장/닫기).
--header-date-text#0f172a#f5f7faStatic.info_date 글자.
확인 필요xcss에는 가동중 상태만 있어요. 비가동·정지 상태가 필요하면 클래스를 추가해야 해요.
헤더 · 탭

Side Menu

화면 왼쪽 세로 메뉴 하단의 아이콘(알림 · 설정 · 종료)과 Light/Dark 전환 토글이에요.

xcss.Static.side_ico_* · .Div.side_theme · .Static.side_theme_*화면서브 화면 왼쪽 메뉴

사용법

미리보기
xfdl
<Static cssclass="side_ico_bell"/>     <!-- 새 알림이면 side_ico_bell_on -->
<Static cssclass="side_ico_setting"/>
<Static cssclass="side_ico_power"/>
<Div cssclass="side_theme">
  <Layouts><Layout>
    <Static cssclass="side_theme_light_on"/>   <!-- 현재 테마는 _on -->
    <Static cssclass="side_theme_dark"/>
  </Layout></Layouts>
</Div>

구조

Form.left_gnb (세로 메뉴 배경)
├─ Static side_ico_bell | side_ico_bell_on   32px 아이콘
├─ Static side_ico_setting
├─ Static side_ico_power
└─ Div side_theme                           알약 모양, 라운드 100
    ├─ Static side_theme_light | side_theme_light_on   해 아이콘 24
    └─ Static side_theme_dark  | side_theme_dark_on    달 아이콘 24
       (_on = 남색 #1B4388 동그라미 + 흰 아이콘)

예시

테마 토글

현재 테마 쪽에 _on 클래스를 줘요. 이 문서 오른쪽 위 토글도 같은 모양이에요.

미리보기
Light 선택
Dark 선택
코드 보기
xfdl
<Static cssclass="side_theme_light"/>  <Static cssclass="side_theme_dark_on"/>  <!-- Dark 선택 -->

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Static.side_ico_bell
{
  background : url('imagerc::/pop/side_bell_l.png') no-repeat center center / 32px auto;
}

.Static.side_ico_bell_on
{
  background : url('imagerc::/pop/side_bell_on_l.png') no-repeat center center / 32px auto;
}

.Static.side_ico_setting
{
  background : url('imagerc::/pop/side_setting_l.png') no-repeat center center / 32px auto;
}

.Static.side_ico_power
{
  background : url('imagerc::/pop/side_power_l.png') no-repeat center center / 32px auto;
}

.Div.side_theme
{
  background : #E4E8EE;
  border-radius : 100px;
}

.Static.side_theme_light
{
  background : url('imagerc::/pop/theme_sun_w.png') no-repeat center center / 24px auto;
  border-radius : 30px;
}

.Static.side_theme_dark
{
  background : url('imagerc::/pop/theme_moon_l.png') no-repeat center center / 24px auto;
  border-radius : 30px;
}

.Static.side_theme_light_on
{
  background : #1B4388 url('imagerc::/pop/theme_sun_w.png') no-repeat center center / 24px auto;
  border-radius : 30px;
}

.Static.side_theme_dark_on
{
  background : #1B4388 url('imagerc::/pop/theme_moon_w.png') no-repeat center center / 24px auto;
  border-radius : 30px;
}

속성

속성값기본설명
cssclassside_ico_bell · side_ico_bell_on · side_ico_setting · side_ico_power—아이콘
cssclassside_theme · side_theme_light(_on) · side_theme_dark(_on)—테마 토글

토큰

메뉴 · 로그인

Menu Card

메뉴 화면의 업무별 카드예요. 아이콘 + 제목 + 하위 메뉴 버튼(menu_sub_btn) 목록.

xcss.Div.menu_card · .Static.menu_card_* · .Static.ico_* · .Button.menu_sub_btn화면메뉴

사용법

미리보기
실적관리
작업실적등록시트 실적등록원자재투입현황
xfdl
<Div cssclass="menu_card">
  <Layouts><Layout>
    <Static cssclass="ico_perf" width="44" height="44"/>      <!-- ico_perf · ico_prod · ico_lot · ico_doc -->
    <Static text="실적관리" cssclass="menu_card_title"/>
    <Static cssclass="menu_card_line" height="1"/>
    <Button text="작업실적등록" cssclass="menu_sub_btn" height="64"/>
    <Button text="시트 실적등록" cssclass="menu_sub_btn" height="64"/>
  </Layout></Layouts>
</Div>

구조

Div  cssclass="menu_card"          라운드 12, 위→아래 그라데이션, 보더 1px
├─ Static ico_perf | ico_prod | ico_lot | ico_doc   남색 #1B4388 칸 + 흰 아이콘
├─ Static menu_card_title           24px Bold
├─ Static menu_card_line            구분선 1px
└─ Button menu_sub_btn (여러 개)     22px SemiBold, 왼쪽 정렬, 오른쪽 화살표

예시

업무 아이콘

미리보기
ico_perf · 실적
ico_prod · 생산
ico_lot · LOT
ico_doc · 문서

하위 메뉴 버튼 상태

마우스오버·누름이면 글자와 보더가 파랗게(Dark는 흰색으로) 바뀌어요.

미리보기
작업실적등록작업실적등록

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Div.menu_card
{
  background : linear-gradient(to bottom,#ffffff 0%,rgba(255,255,255,0.1) 100%);
  -nexa-border : 1px solid #E2E8F0;
  border-radius : 12px;
}

.Static.menu_card_icon
{
  background : #1B4388;
  border-radius : 6px;
}

.Static.menu_card_title
{
  color : #0F172A;
  font : bold 24px 'PretendardBold';
}

.Static.menu_card_line
{
  background : #E2E8F0;
}

.Button.menu_sub_btn
{
  background : transparent url('imagerc::/pop/pop_menu_arrow_l.png') no-repeat 95% center;
  -nexa-border : 1px solid #E2E8F0;
  border-radius : 6px;
  color : #334155;
  font : 22px 'PretendardSemiBold','Malgun Gothic';
  -nexa-padding : 16px;
  -nexa-text-align : left;
}

상태

선택자의미
.menu_sub_btn[status=mouseover], [status=focused], [userstatus=pushed]글자·보더 강조

속성

속성값기본설명
cssclass (Div)menu_card—
cssclass (아이콘)ico_perf · ico_prod · ico_lot · ico_doc—
cssclass (버튼)menu_sub_btn—높이 64 권장

토큰

메뉴 · 로그인

Login Button

로그인 화면의 넓은 로그인 버튼이에요.

xcss.Button.pop_login_button화면로그인

사용법

미리보기
로그인
xfdl
<Button id="btn_login" text="로그인" cssclass="pop_login_button" height="64"/>

구조

Button  cssclass="pop_login_button"
└─ 남색 #1B4388 바탕, 24px SemiBold 흰색, 라운드 5

예시

상태

미리보기
로그인로그인로그인

스타일 (xcss)

ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.xcss에 있어요.

xcss
.Button.pop_login_button
{
  background : #1B4388;
  -nexa-border : 0px none;
  font : 24px 'PretendardSemiBold';
  color : #ffffff;
  border-radius : 5px;
}

.Button.pop_login_button[status=mouseover],
.Button.pop_login_button[status=focused]
{
  -nexa-border : 0px none;
  background : #2455A0;
}

.Button.pop_login_button[userstatus=pushed]
{
  background : #2455A0;
}

상태

선택자의미
[status=mouseover], [status=focused]Hover — #2455A0
[userstatus=pushed]Pressed — #2455A0

속성

속성값기본설명
cssclasspop_login_button—
height64 권장—

토큰

이 페이지에서