동원모빌리티 POP 디자인 시스템
생산 현장 터치 화면(POP)의 넥사크로 화면과 피그마를 같은 말로 맞추기 위한 가이드예요.
디자이너
피그마 동원모빌리티_컴포넌트 페이지의 컴포넌트를 인스턴스로 써요. 이 문서의 컴포넌트 이름 = 피그마 세트 이름.
개발자
각 페이지의 xfdl 코드와 속성표대로 cssclass와 속성을 넣으면 같은 모양이 나와요.
원칙
- xcss가 원본이에요. 값은 ncorePopLight.xcss / ncorePopDark.xcss에서 왔고, 피그마와 이 문서는 그걸 따라가요.
- 테마는 두 벌이에요. Light / Dark는 xcss 파일 교체로 바뀌어요. 피그마는 변수 이름의
light/dark/와Theme변형으로 나눠요. - 현장 터치 화면 기준이에요. 본문 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 |
바꾸는 순서
- xcss(Light, Dark 두 파일)를 고쳐요.
- 피그마
Nexacro POP변수의 같은 이름을 고쳐요 — 컴포넌트와 화면에 자동 반영. - 이 문서의 데이터(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/… 이름이에요.
기본
| 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--page-bg | #f3f6fa | #000b21 | 화면 배경 (Form.form_bg_dark). 탭 버튼, 라디오처럼 배경이 투명한 요소 뒤. |
--brand-navy | #1b4388 | #2857a3 | 대표 파랑. 포커스 보더, 선택 글자, 발행 버튼. |
--on-color | #ffffff | #ffffff | 진한 배경 위 글자·점 (비상호출, 가동중, 조회/저장/닫기). |
정보 카드
| 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--info-surface | #ffffff | #000b21 | 정보 카드 안 배경 (pop_card). |
--info-label-text | #64748b | #9aa4b8 | pop_info_label 글자. |
--info-border | #e2e8f0 | #1c2640 | pop_info_label / pop_info_value(readonly) / pop_info_chk 하단 1px. |
--info-value-text | #0f172a | #ffffff | pop_info_value 글자. |
--info-value-bg | #eef4fc | #12203d | pop_info_value 입력칸 배경 (readonly 아님). |
--info-value-line | #1b4388 | #2857a3 | pop_info_value 입력칸 밑줄 2px. |
--info-value-line-hover | #2455a0 | #3a6bc0 | pop_info_value mouseover 밑줄. |
--info-value-bg-focus | #e3ecfa | #16284a | pop_info_value focused 배경. |
--info-value-line-focus | #2455a0 | #4f86e8 | pop_info_value focused 밑줄 3px. |
--info-placeholder | #94a3b8 | #5c6b82 | pop_info_value nulltext 글자. |
--card-surface | #ffffff | #000b21 | .Div.pop_card 배경. |
--card-border | #e2e8f0 | #1c2640 | pop_card 보더(Light만) / pop_card_title 하단선. |
--card-title-text | #0f172a | #ffffff | pop_card_title 글자. |
--card-ico-bg | #ffffff | #15223c | pop_card_ico 배경. |
--card-ico-border | #e2e8f0 | #15223c | pop_card_ico 보더 (Dark는 보더 없음). |
--card-form-bg | #ecf1f9 | #0f2135 | pop_card_form / pop_grid_card(Dark) 배경. Dark는 card-form-bg-end까지 세로 그라데이션. |
--card-form-bg-end | #ecf1f9 | #0d1326 | pop_card_form 그라데이션 끝색 (Dark). |
입력
| 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--edit-bg | #ffffff | #131e32 | pop_edit(Edit/Combo/Calendar) 배경. |
--edit-border | #cbd5e1 | #2a3b50 | pop_edit 보더. |
--edit-border-hover | #94a3b8 | #313c4e | pop_edit mouseover 보더. |
--edit-border-focus | #1b4388 | #2857a3 | pop_edit focused 보더. |
--edit-text | #0f172a | #ffffff | pop_edit 글자 / 라디오 글자. |
--edit-disabled-bg | #f1f5f9 | #0f1a33 | pop_edit readonly·disabled 배경. |
--edit-disabled-border | #e2e8f0 | #1c2640 | pop_edit readonly·disabled 보더. |
--edit-disabled-text | #64748b | #9aa4b8 | pop_edit readonly·disabled 글자. |
--edit-list-hover | #eef4fc | #1b2940 | Combo 목록 항목 mouseover. |
--edit-list-selected | #225fc7 | #225fc7 | Combo 목록 항목 focused (글자 흰색). |
--radio-disabled-text | #94a3b8 | #5c6b82 | Radio 비활성 글자. |
--sta-title-text | #64748b | #9aa4b8 | Static.sta_title (검색 영역 라벨). |
그리드
| 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--lg-head-text | #64748b | #8d9aaf | pop_list_grid head 글자. |
--lg-head-border | #e2e8f0 | #2a3b50 | pop_list_grid head 하단선. |
--lg-body-text | #0f172a | #ffffff | pop_list_grid body 글자. |
--lg-border | #e2e8f0 | #1c2640 | pop_list_grid body 하단선. |
--lg-selected-bg | #e8effb | #173b78 | pop_list_grid 선택 행 배경. |
--lg-selected-text | #1b4388 | #ffffff | pop_list_grid 선택 행 글자. |
--lg-selected-border | #c7d7f2 | #173b78 | pop_list_grid 선택 행 하단선 (Dark는 보더 없음). |
--lg-summary-text | #0f172a | #e5eaf2 | pop_list_grid summary(합계) 글자. |
--lg-summary-bg | #f1f5f9 | #16233d | pop_list_grid summary 배경. |
--lg-summary-border | #cbd5e1 | #2a3b50 | pop_list_grid summary 상단선. |
--cg-head-text | #64748b | #9aa4b8 | pop_card_grid head 글자. |
--cg-border | #e2e8f0 | #1c2640 | pop_card_grid 하단선. |
--cg-body-text | #0f172a | #ffffff | pop_card_grid body 글자. |
--cg-selected-bg | #e8effb | #173b78 | pop_card_grid 선택 행 배경. |
--cg-selected-text | #1b4388 | #ffffff | pop_card_grid 선택 행 글자. |
--cg-selected-border | #c7d7f2 | #1c2640 | pop_card_grid 선택 행 하단선. |
--cg-input-bg | #eef4fc | #1a2d52 | pop_card_grid cell_input 배경. |
그리드 셀 버튼
| 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--cellbtn-default-text | #1e293b | #e5eaf2 | Grid Cell Button (cssclass 없음) 글자. |
--cellbtn-default-border | #cbd5e1 | #33486f | Grid Cell Button (cssclass 없음) 보더. |
--cellbtn-default-bg | #ffffff | #22355d | Grid Cell Button (cssclass 없음) 배경. |
--cellbtn-default-bg-hover | #f1f5f9 | #2a416e | Grid Cell Button (cssclass 없음) mouseover/focused 배경. |
--cellbtn-default-bg-pressed | #e2e8f0 | #1a2a4c | Grid Cell Button (cssclass 없음) pushed 배경. |
--cellbtn-green-text | #268767 | #ffffff | Grid Cell Button .green 글자. |
--cellbtn-green-border | #73c9ad | #23956f | Grid Cell Button .green 보더 (Dark는 보더 없음 — 배경색과 같게). |
--cellbtn-green-bg | #ffffff | #23956f | Grid Cell Button .green 배경. |
--cellbtn-green-bg-hover | #edf7f4 | #28a97e | Grid Cell Button .green mouseover/focused 배경. |
--cellbtn-green-bg-pressed | #dcefe9 | #1e805f | Grid Cell Button .green pushed 배경. |
--cellbtn-orange-text | #8c6117 | #ffffff | Grid Cell Button .orange 글자. |
--cellbtn-orange-border | #d6ad66 | #a56f12 | Grid Cell Button .orange 보더 (Dark는 보더 없음 — 배경색과 같게). |
--cellbtn-orange-bg | #ffffff | #a56f12 | Grid Cell Button .orange 배경. |
--cellbtn-orange-bg-hover | #f9f4ec | #bc7f15 | Grid Cell Button .orange mouseover/focused 배경. |
--cellbtn-orange-bg-pressed | #f2e9d9 | #8e6010 | Grid Cell Button .orange pushed 배경. |
--cellbtn-red-text | #87262c | #ffffff | Grid Cell Button .red 글자. |
--cellbtn-red-border | #c97378 | #95232a | Grid Cell Button .red 보더 (Dark는 보더 없음 — 배경색과 같게). |
--cellbtn-red-bg | #ffffff | #95232a | Grid Cell Button .red 배경. |
--cellbtn-red-bg-hover | #f7edee | #a92830 | Grid Cell Button .red mouseover/focused 배경. |
--cellbtn-red-bg-pressed | #efdcdd | #801e25 | Grid Cell Button .red pushed 배경. |
--cellbtn-cyan-text | #2a7484 | #ffffff | Grid Cell Button .cyan 글자. |
--cellbtn-cyan-border | #76b9c6 | #277f91 | Grid Cell Button .cyan 보더 (Dark는 보더 없음 — 배경색과 같게). |
--cellbtn-cyan-bg | #ffffff | #277f91 | Grid Cell Button .cyan 배경. |
--cellbtn-cyan-bg-hover | #eef5f7 | #2c91a5 | Grid Cell Button .cyan mouseover/focused 배경. |
--cellbtn-cyan-bg-pressed | #dcecef | #216e7d | Grid Cell Button .cyan pushed 배경. |
--cellbtn-purple-text | #3a307e | #ffffff | Grid Cell Button .purple 글자. |
--cellbtn-purple-border | #847bc1 | #3a2e8a | Grid Cell Button .purple 보더 (Dark는 보더 없음 — 배경색과 같게). |
--cellbtn-purple-bg | #ffffff | #3a2e8a | Grid Cell Button .purple 배경. |
--cellbtn-purple-bg-hover | #efeef6 | #42349d | Grid Cell Button .purple mouseover/focused 배경. |
--cellbtn-purple-bg-pressed | #e0ddee | #322877 | Grid Cell Button .purple pushed 배경. |
카드 버튼
| 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--cardbtn-line-border | #cbd5e1 | #2a3b50 | btn_card_calc / reprint 보더. |
--cardbtn-line-border-hover | #cbd5e1 | #313c4e | btn_card_calc / reprint mouseover·pushed 보더. |
--cardbtn-line-bg-hover | #f2f2f2 | #0f1a33 | btn_card_calc / reprint mouseover 배경. |
--cardbtn-line-bg-pressed | #f2f2f2 | #262f40 | btn_card_calc / reprint pushed 배경. |
--cardbtn-line-text | #0f172a | #d5dce7 | btn_card_calc / reprint 글자. |
--cardbtn-fill-bg | #1b4388 | #262f40 | btn_card_publish 배경. |
--cardbtn-fill-bg-hover | #2455a0 | #273449 | btn_card_publish mouseover 배경. |
--cardbtn-fill-bg-pressed | #163a75 | #262f40 | btn_card_publish pushed 배경. |
--cardbtn-fill-text | #ffffff | #d5dce7 | btn_card_publish 글자. |
헤더 · 탭
| 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--tab-text | #64748b | #7f8da3 | pop_cont_tab 탭 글자. |
--tab-text-hover | #455c7c | #ffffff | pop_cont_tab 탭 mouseover 글자. |
--tab-text-selected | #1b4388 | #ffffff | pop_cont_tab 선택 탭 글자. |
--header-select-bg | #ffffff | #131e32 | machine_select 배경. |
--header-select-border | #e2e8f0 | #131e32 | machine_select 보더. |
--header-select-border-hover | #e2e8f0 | #313c4e | machine_select mouseover·focused 보더. |
--header-select-text | #0f172a | #ffffff | machine_select 글자. |
--header-date-text | #0f172a | #f5f7fa | Static.info_date 글자. |
--emergency-bg | #d93636 | #d92d20 | emergency_btn 배경 (글자·아이콘 흰색). |
--emergency-bg-hover | #c22e2e | #b42318 | emergency_btn mouseover. |
--emergency-bg-pressed | #a82626 | #912018 | emergency_btn pushed·focused. |
--status-bg | #12a37a | #10b981 | status_running 배경 (Dark는 status-bg-end까지 가로 그라데이션). |
--status-bg-end | #12a37a | #068f62 | status_running 그라데이션 끝색 (Dark). |
글자
Pretendard 하나만 써요. 본문은 SemiBold(600), 제목과 버튼은 Bold(700)이에요.
크기 단계
xcss 표기
font : 20px 'PretendardSemiBold'; · font : 22px 'PretendardBold';
간격 · 라운드
넥사크로 좌표(left/top/right/bottom)와 크기에 반복해서 쓰이는 값이에요.
간격 · 크기
| 토큰 | 값 | 사용처 | |
|---|---|---|---|
--space-gutter | 10px | 카드·영역 사이, 카드 안 좌우 여백 (left/right/top/bottom 10). | |
--space-field-gap | 20px | 검색 영역 항목 사이 (left = 앞 항목:20). | |
--space-btn-gap | 8px | POP 버튼 사이 (right = 옆 버튼:8), 아이콘-글자 간격. | |
--space-pad | 12px | 입력칸·정보 라벨 좌우 패딩. | |
--size-info-row | 47px | 정보 행 높이 (pop_info_label/value). | |
--size-info-label | 200px | 정보 라벨 너비. | |
--size-field | 46px | pop_edit 계열 높이. | |
--size-header | 55px | 상단 헤더 높이 (machine_select, 비상호출, 가동중). | |
--size-card-title | 70px | 카드 제목 높이. | |
--size-card-btn | 56px | 카드 버튼 높이 / 탭 높이. | |
--size-pop-btn | 52px | POP 버튼 높이 (너비 112, 새로고침 162). |
라운드
--radius-44px헤더 요소 (machine_select, 비상호출, 가동중), 카드 아이콘.--radius-55pxpop_edit 계열.--radius-66px버튼 (POP, 카드, 셀).--radius-1010px카드, 카드 폼, 탭 페이지.아이콘
넥사크로 imagerc::/pop/ 원본이에요. 이름 끝 _l은 Light용, 없는 쪽은 Dark용, _on은 눌림·선택용이에요.
POP Button
화면 상단 공통 버튼 줄에 놓는 10종 버튼이에요. 새로고침·조회·신규·저장·삭제·실행·결재·알림·인쇄·닫기.
사용법
<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 하나로 정해요. 조회는 파랑, 저장은 초록, 닫기는 진회색, 삭제는 빨간 글자, 나머지는 기본 회색이에요.
코드 보기
<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% 투명도로 보여요.
코드 보기
<Button text="조회" cssclass="pop_btn_search"/> <!-- Normal -->
<Button text="조회" cssclass="pop_btn_search" enable="false"/> <!-- Disabled -->버튼 줄 배치
오른쪽 끝(닫기)부터 왼쪽으로, right="옆 버튼:8"로 8px씩 띄워서 붙여요. 화면에 필요 없는 버튼은 visible="false".
코드 보기
<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에 있어요.
.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_btn_init · search · new · save · delete · run · aprv · msg · print · close | — | 버튼 종류 (필수) |
text | string | — | 버튼 글자 |
width / height | 112 × 52 | — | 새로고침만 162 × 52 |
enable | true | false | true | false면 Disabled 표시 |
tooltiptext | string | — | 단축키 안내: CTRL+1(새로고침) … CTRL+0(닫기) |
토큰
| 크기 토큰 | 값 | 사용처 |
|---|---|---|
--size-pop-btn | 52px | POP 버튼 높이 (너비 112, 새로고침 162). |
--radius-6 | 6px | 버튼 (POP, 카드, 셀). |
Bottom Button
화면 하단에 놓는 큰 동작 버튼이에요(180×72). 색이 곧 동작의 성격이라, 용도에 맞는 타입을 골라요.
사용법
<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(기본)을 쓰면 헷갈리지 않아요.
코드 보기
<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%예요.
코드 보기
<Button text="작업생성" cssclass="bottom_type2"/>
<Button text="작업생성" cssclass="bottom_type2" enable="false"/> <!-- Disabled -->하단 버튼 줄
보조 동작은 왼쪽, 주요 동작은 오른쪽 끝에 두는 걸 권해요.
코드 보기
<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에 있어요.
.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | bottom_type1 · bottom_type2 · bottom_type3_green · bottom_type4_orange · bottom_type5_red · bottom_type6_cyan · bottom_type7_purple | — | 타입 (필수) |
width / height | 180 × 72 | — | |
enable | true | false | true | false면 Disabled |
text | string | — | 버튼 글자 |
토큰
| 크기 토큰 | 값 | 사용처 |
|---|---|---|
--radius-6 | 6px | 버튼 (POP, 카드, 셀). |
Grid Cell Button
목록 그리드(pop_list_grid) 셀 안에 들어가는 작은 버튼이에요. 색은 Cell의 cssclass로 정해요.
사용법
<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는 색 바탕이에요.
코드 보기
<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"/>상태
마우스오버·포커스와 누름은 배경만 한 단계씩 바뀌어요.
조건에 따라 색 바꾸기
cssclass에 expr을 쓰면 행 데이터에 따라 색이 바뀌어요. 버튼을 숨길 때는 displaytype도 expr로.
코드 보기
<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에 있어요.
.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
displaytype | buttoncontrol | expr | — | 버튼으로 표시 |
edittype | button | — | 클릭 이벤트(oncellclick) |
cssclass | (없음) · green · orange · darkorange · red · cyan · purple · expr | (없음) | 버튼 색 |
text | string | bind:컬럼 | — | 버튼 글자 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--cellbtn-default-text | #1e293b | #e5eaf2 | Grid Cell Button (cssclass 없음) 글자. |
--cellbtn-default-border | #cbd5e1 | #33486f | Grid Cell Button (cssclass 없음) 보더. |
--cellbtn-default-bg | #ffffff | #22355d | Grid Cell Button (cssclass 없음) 배경. |
--cellbtn-green-text | #268767 | #ffffff | Grid Cell Button .green 글자. |
--cellbtn-green-border | #73c9ad | #23956f | Grid Cell Button .green 보더 (Dark는 보더 없음 — 배경색과 같게). |
--cellbtn-red-text | #87262c | #ffffff | Grid Cell Button .red 글자. |
--cellbtn-red-border | #c97378 | #95232a | Grid Cell Button .red 보더 (Dark는 보더 없음 — 배경색과 같게). |
Card Button
정보 카드 하단에 놓는 계산기 · 라벨 재발행 · 발행 버튼이에요.
사용법
<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
예시
종류
계산기와 라벨 재발행은 선 버튼, 발행은 채운 버튼(주요 동작)이에요.
코드 보기
<Button text="계산기" cssclass="btn_card_calc"/>
<Button text="라벨 재발행" cssclass="btn_card_reprint"/>
<Button text="발행" cssclass="btn_card_publish"/>상태
카드 하단 배치
세 버튼을 32% · 32% · 나머지로, 카드 왼쪽·아래·오른쪽 10px 안쪽에 놓아요.
코드 보기
<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에 있어요.
.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | btn_card_calc · btn_card_reprint · btn_card_publish | — | 종류 (아이콘 포함) |
height | 56 | — | |
width | 32% / 나머지(right=10) | — | 세 개 배치 기준 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--cardbtn-line-border | #cbd5e1 | #2a3b50 | btn_card_calc / reprint 보더. |
--cardbtn-line-text | #0f172a | #d5dce7 | btn_card_calc / reprint 글자. |
--cardbtn-fill-bg | #1b4388 | #262f40 | btn_card_publish 배경. |
--cardbtn-fill-text | #ffffff | #d5dce7 | btn_card_publish 글자. |
| 크기 토큰 | 값 | 사용처 |
|---|---|---|
--size-card-btn | 56px | 카드 버튼 높이 / 탭 높이. |
Emergency Button
상단 헤더의 빨간 비상호출 버튼이에요. 어느 화면에서나 같은 자리(오른쪽, 가동중 표시 왼쪽)에 있어요.
사용법
<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에 있어요.
.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | emergency_btn | — | |
width / height | 143 × 55 (헤더 높이) | — |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--emergency-bg | #d93636 | #d92d20 | emergency_btn 배경 (글자·아이콘 흰색). |
--emergency-bg-hover | #c22e2e | #b42318 | emergency_btn mouseover. |
--emergency-bg-pressed | #a82626 | #912018 | emergency_btn pushed·focused. |
--on-color | #ffffff | #ffffff | 진한 배경 위 글자·점 (비상호출, 가동중, 조회/저장/닫기). |
Side Button
화면 오른쪽 사이드 영역의 큰 버튼이에요(작업종료 · T/O · 수기실적). 아이콘이 위, 글자가 아래.
사용법
<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는 남색) 바탕이에요.
코드 보기
<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"/>상태
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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] | 바탕·보더 한 단계 진하게 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | btn_side_end · btn_side_to · btn_side_hand | — | |
left / right | 12 | — | 사이드 폭에 맞춤 |
height | 120 | — | 버튼 사이 10px (top="앞 버튼:10") |
토큰
Edit
검색 영역의 기본 입력칸이에요. Combo · Calendar와 같은 틀(pop_edit)을 써요.
사용법
<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")은 같은 회색으로 보여요.
코드 보기
<Edit cssclass="pop_edit"/>
<Edit cssclass="pop_edit" readonly="true"/>
<Edit cssclass="pop_edit" enable="false"/>라벨과 함께
검색 영역에서는 앞에 sta_title 라벨(너비 80~100)을 두고, 항목 사이는 20px 띄워요.
코드 보기
<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에 있어요.
.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] | 회색 배경 · 흐린 글자 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_edit | — | |
height | 46 | — | |
readonly | true | false | false | 보기 전용 |
enable | true | false | true | |
inputmode | upper | normal … | normal | 바코드 등은 upper |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--edit-bg | #ffffff | #131e32 | pop_edit(Edit/Combo/Calendar) 배경. |
--edit-border | #cbd5e1 | #2a3b50 | pop_edit 보더. |
--edit-border-hover | #94a3b8 | #313c4e | pop_edit mouseover 보더. |
--edit-border-focus | #1b4388 | #2857a3 | pop_edit focused 보더. |
--edit-text | #0f172a | #ffffff | pop_edit 글자 / 라디오 글자. |
--edit-disabled-bg | #f1f5f9 | #0f1a33 | pop_edit readonly·disabled 배경. |
--edit-disabled-text | #64748b | #9aa4b8 | pop_edit readonly·disabled 글자. |
Combo
검색 영역의 선택칸이에요. 틀은 Edit와 같고, 오른쪽에 드롭 아이콘이 붙어요.
사용법
<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
예시
상태
펼친 목록
마우스오버 항목은 연한 파랑, 선택(포커스) 항목은 진한 파랑 + 흰 글자예요.
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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] | 목록 항목 선택 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_edit | — | |
innerdataset · codecolumn · datacolumn | Dataset · 컬럼명 | — | 목록 데이터 |
index | number | -1 | -1이면 빈 칸 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--edit-bg | #ffffff | #131e32 | pop_edit(Edit/Combo/Calendar) 배경. |
--edit-border | #cbd5e1 | #2a3b50 | pop_edit 보더. |
--edit-border-focus | #1b4388 | #2857a3 | pop_edit focused 보더. |
--edit-list-hover | #eef4fc | #1b2940 | Combo 목록 항목 mouseover. |
--edit-list-selected | #225fc7 | #225fc7 | Combo 목록 항목 focused (글자 흰색). |
Calendar
날짜 입력칸이에요. 표시 형식은 yyyy-MM-dd.
사용법
<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)
예시
상태
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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] | 회색 배경 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_edit | — | |
dateformat | yyyy-MM-dd | — |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--edit-bg | #ffffff | #131e32 | pop_edit(Edit/Combo/Calendar) 배경. |
--edit-border | #cbd5e1 | #2a3b50 | pop_edit 보더. |
--edit-border-focus | #1b4388 | #2857a3 | pop_edit focused 보더. |
--edit-disabled-bg | #f1f5f9 | #0f1a33 | pop_edit readonly·disabled 배경. |
Radio
검색 영역의 구분 선택이에요(등록 / 완료 등).
사용법
<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
예시
상태
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_edit | — | |
direction | vertical | horizontal | — | |
innerdataset · codecolumn · datacolumn | — | 항목 | |
value | string | — | 선택값 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--edit-text | #0f172a | #ffffff | pop_edit 글자 / 라디오 글자. |
--radio-disabled-text | #94a3b8 | #5c6b82 | Radio 비활성 글자. |
Machine Select
상단 헤더 왼쪽의 설비 선택 콤보예요.
사용법
<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
예시
상태
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | machine_select | — | |
width / height | 400 × 55 | — |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--header-select-bg | #ffffff | #131e32 | machine_select 배경. |
--header-select-border | #e2e8f0 | #131e32 | machine_select 보더. |
--header-select-text | #0f172a | #ffffff | machine_select 글자. |
Keypad
수량·숫자를 터치로 입력하는 키패드 버튼이에요(pop_pad_key).
사용법
<Button id="btn_7" text="7" cssclass="pop_pad_key" width="96" height="72"/>구조
Button cssclass="pop_pad_key" └─ 26px Bold, 2단 그라데이션, 보더 1px, 라운드 8
예시
키패드 배열
상태
누르면(pushed) 연한 파랑 + 파란 보더로 바뀌어요.
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_pad_key | — | |
width / height | 96 × 72 권장 | — |
토큰
Info Label · Info Value
카드 안에서 항목 하나를 "라벨 | 값" 한 줄로 보여주거나 입력받는 조합이에요.
사용법
<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 없이 둬요. 파란 배경과 밑줄이 "입력할 수 있음"을 뜻해요.
코드 보기
<Edit cssclass="pop_info_value" readonly="true"/> <!-- 보기 전용 -->
<Edit cssclass="pop_info_value"/> <!-- 입력 -->입력 상태
코드 보기
<Edit cssclass="pop_info_value" displaynulltext="입력하세요"/>여러 줄
다음 줄은 top을 47씩 더해요(71 → 118 → 165 …).
코드 보기
<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에 있어요.
.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_info_label (Static) · pop_info_value (Edit / MaskEdit) | — | |
readonly | true | false | false | true면 보기 전용 |
height | 47 | — | 행 높이 |
width (라벨) | 200 | — | |
displaynulltext | string | — | Placeholder 글자 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--info-label-text | #64748b | #9aa4b8 | pop_info_label 글자. |
--info-border | #e2e8f0 | #1c2640 | pop_info_label / pop_info_value(readonly) / pop_info_chk 하단 1px. |
--info-value-text | #0f172a | #ffffff | pop_info_value 글자. |
--info-value-bg | #eef4fc | #12203d | pop_info_value 입력칸 배경 (readonly 아님). |
--info-value-line | #1b4388 | #2857a3 | pop_info_value 입력칸 밑줄 2px. |
--info-value-line-focus | #2455a0 | #4f86e8 | pop_info_value focused 밑줄 3px. |
--info-placeholder | #94a3b8 | #5c6b82 | pop_info_value nulltext 글자. |
| 크기 토큰 | 값 | 사용처 |
|---|---|---|
--size-info-row | 47px | 정보 행 높이 (pop_info_label/value). |
--size-info-label | 200px | 정보 라벨 너비. |
Info Check
정보 카드 안의 체크 항목이에요. 정보 행과 같은 높이·하단선을 써요.
사용법
<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에 있어요.
.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] | 체크됨 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_info_chk | — | |
value | true | false | false |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--info-border | #e2e8f0 | #1c2640 | pop_info_label / pop_info_value(readonly) / pop_info_chk 하단 1px. |
--info-value-text | #0f172a | #ffffff | pop_info_value 글자. |
Card
정보를 묶는 카드예요. 바탕(pop_card) 위에 제목 줄(아이콘 + 제목)과 내용을 놓아요.
사용법
<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) 아이콘이에요.
코드 보기
<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이 세로 그라데이션이에요.
코드 보기
<Div cssclass="pop_card_form"> <!-- 배경 -->
<Div cssclass="pop_card"/> <!-- 정보 카드 -->
<Div cssclass="pop_grid_card"/> <!-- 그리드 카드 -->
</Div>정보 카드 전체
제목 + 정보 행 + 하단 카드 버튼까지 붙인 형태예요.
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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 | — |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--card-surface | #ffffff | #000b21 | .Div.pop_card 배경. |
--card-border | #e2e8f0 | #1c2640 | pop_card 보더(Light만) / pop_card_title 하단선. |
--card-title-text | #0f172a | #ffffff | pop_card_title 글자. |
--card-ico-bg | #ffffff | #15223c | pop_card_ico 배경. |
--card-form-bg | #ecf1f9 | #0f2135 | pop_card_form / pop_grid_card(Dark) 배경. Dark는 card-form-bg-end까지 세로 그라데이션. |
| 크기 토큰 | 값 | 사용처 |
|---|---|---|
--size-card-title | 70px | 카드 제목 높이. |
--radius-10 | 10px | 카드, 카드 폼, 탭 페이지. |
List Grid
목록형 그리드(pop_list_grid)예요. 가운데 정렬, 행 하단선, 선택 행 파랑, 상태점·셀 버튼·합계 행을 지원해요.
사용법
| 상태 | 작업지시 | 품명 | 수량 |
|---|---|---|---|
| WO-2401 | 브레이크 패드 | 120 | |
| WO-2402 | 캘리퍼 어셈블리 | 80 |
<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)로 바뀌어요.
| 선택 행 | |
코드 보기
<Cell text="bind:STATUS_NM"
cssclass="expr:STATUS=='N' ? 'dot_ok' : (STATUS=='W' ? 'dot_warn' : 'dot_stop')"/>셀 버튼과 합계 행
| 품명 | 수량 | 처리 |
|---|---|---|
| 브레이크 패드 | 120 | 확인 |
| 디스크 로터 | 64 | 삭제 |
| 합계 | 184 |
코드 보기
<Band id="summary">
<Cell text="합계"/>
<Cell col="1" text="expr:dataset.getSum('QTY')"/>
</Band>스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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 size | 56 권장 | — | |
Cell cssclass | dot_ok · dot_warn · dot_stop · green … purple · blackBackground · greenBackground · darkorangeBackground | — | 상태점 / 셀 버튼 색 / 진행상태 색 블록 |
autofittype | col | — | 열 너비 맞춤 |
scrollbarsize | 40 | — | 터치용 스크롤바 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--lg-head-text | #64748b | #8d9aaf | pop_list_grid head 글자. |
--lg-body-text | #0f172a | #ffffff | pop_list_grid body 글자. |
--lg-border | #e2e8f0 | #1c2640 | pop_list_grid body 하단선. |
--lg-selected-bg | #e8effb | #173b78 | pop_list_grid 선택 행 배경. |
--lg-selected-text | #1b4388 | #ffffff | pop_list_grid 선택 행 글자. |
--lg-summary-bg | #f1f5f9 | #16233d | pop_list_grid summary 배경. |
--lg-summary-border | #cbd5e1 | #2a3b50 | pop_list_grid summary 상단선. |
Input Grid (Card Grid)
데이터를 표 형태로 입력받는 그리드(pop_card_grid)예요. 파란 cell_input 칸이 입력 칸이에요.
사용법
| 구분 | 품번 | 품명 | 수량 (입력) |
|---|---|---|---|
| 작업1 | A-1001 | 브레이크 패드 | 120 |
| 작업2 | A-1002 | 캘리퍼 어셈블리 | 80 |
<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 |
코드 보기
<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에 있어요.
.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 cssclass | info_label · cell_input | — | |
Cell edittype | none · normal · mask · date … | none | 입력 칸은 반드시 지정 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--cg-head-text | #64748b | #9aa4b8 | pop_card_grid head 글자. |
--cg-border | #e2e8f0 | #1c2640 | pop_card_grid 하단선. |
--cg-body-text | #0f172a | #ffffff | pop_card_grid body 글자. |
--cg-selected-bg | #e8effb | #173b78 | pop_card_grid 선택 행 배경. |
--cg-input-bg | #eef4fc | #1a2d52 | pop_card_grid cell_input 배경. |
Tab
서브 화면의 하위 메뉴 탭이에요(원자재투입현황 · 작업지시목록 …).
사용법
<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 배경)
예시
상태
탭 9개
스타일 (xcss)
ncorePopLight.xcss의 실제 규칙이에요. Dark는 같은 선택자로 ncorePopDark.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_cont_tab | — | |
Tabpage cssclass | (없음) · pop_grid_card · pop_cont_tabpage | — | 탭 페이지 바탕 |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--tab-text | #64748b | #7f8da3 | pop_cont_tab 탭 글자. |
--tab-text-hover | #455c7c | #ffffff | pop_cont_tab 탭 mouseover 글자. |
--tab-text-selected | #1b4388 | #ffffff | pop_cont_tab 선택 탭 글자. |
Status Badge
상단 헤더 맨 오른쪽의 설비 가동 상태 표시예요. 옆에 날짜(info_date)가 함께 놓여요.
사용법
<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에 있어요.
.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';
}속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | status_running · status_running_bu · status_running_text | — | |
크기 | 108 × 55 | — |
토큰
| 색 토큰 | Light | Dark | 사용처 |
|---|---|---|---|
--status-bg | #12a37a | #10b981 | status_running 배경 (Dark는 status-bg-end까지 가로 그라데이션). |
--status-bg-end | #12a37a | #068f62 | status_running 그라데이션 끝색 (Dark). |
--on-color | #ffffff | #ffffff | 진한 배경 위 글자·점 (비상호출, 가동중, 조회/저장/닫기). |
--header-date-text | #0f172a | #f5f7fa | Static.info_date 글자. |
Login Button
로그인 화면의 넓은 로그인 버튼이에요.
사용법
<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에 있어요.
.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 |
속성
| 속성 | 값 | 기본 | 설명 |
|---|---|---|---|
cssclass | pop_login_button | — | |
height | 64 권장 | — |