You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
7.4 KiB

4 weeks ago
{{define "layout"}}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Title}} - {{.AppName}}</title>
<link rel="stylesheet" href="/static/css/style.css">
</head>
<body data-current-path="{{.CurrentPath}}" data-current-tab-key="{{(index .WorkspaceTabs 0).Key}}" data-current-tab-label="{{(index .WorkspaceTabs 0).Label}}">
<div class="app-shell">
<aside class="sidebar">
<div class="brand">
<div class="brand-mark">TC</div>
<div class="brand-copy">
<div class="brand-title">{{.AppName}}</div>
<div class="brand-subtitle">Device console mock</div>
</div>
</div>
<nav class="nav">
{{range .Menu}}
<div class="nav-group {{if .Expanded}}expanded{{end}}" data-nav-group data-path="{{.Path}}" data-default-expanded="{{if .Expanded}}true{{else}}false{{end}}">
<a class="nav-item {{if .Active}}active{{end}}" href="{{.Path}}" {{if .Children}}data-nav-toggle aria-expanded="{{if .Expanded}}true{{else}}false{{end}}"{{end}}>
<span class="nav-label">{{.Label}}</span>
{{if .Children}}<span class="nav-caret" aria-hidden="true"></span>{{end}}
</a>
{{if .Children}}
<div class="nav-children">
{{range .Children}}
<a class="nav-child {{if .Active}}active{{end}}" href="{{.Path}}">{{.Label}}</a>
{{end}}
</div>
{{end}}
</div>
{{end}}
</nav>
</aside>
<main class="main">
<header class="topbar">
<div class="topbar-left">
<button class="menu-toggle" type="button" data-sidebar-toggle>Menu</button>
<div class="topbar-crumbs">
{{range $idx, $crumb := .Breadcrumbs}}
{{if gt $idx 0}}<span class="crumb-sep">/</span>{{end}}
<span class="crumb">{{$crumb}}</span>
{{end}}
</div>
</div>
<div class="topbar-right">
<a class="legacy-link" href="/legacy">이전 화면</a>
<div class="user-pill">{{.CurrentUser}}</div>
<form class="logout-form" action="/logout" method="post">
<button class="logout-button" type="submit">로그아웃</button>
</form>
<button class="theme-pill" type="button" data-mock-action="open-options">Quick Action</button>
</div>
</header>
<div class="workspace-tabs">
{{range .WorkspaceTabs}}
<div class="workspace-tab {{if .Active}}active{{end}}" data-tab-key="{{.Key}}" data-tab-path="{{.Path}}">
<a class="workspace-tab-link" href="{{.Path}}">{{.Label}}</a>
<button class="workspace-close" type="button" aria-label="{{.Label}} 닫기">x</button>
</div>
{{end}}
</div>
<section class="content">
<div class="page-header">
<div class="page-kicker">{{.Section}}</div>
<h1>{{.Title}}</h1>
{{if .MockMode}}
<div class="mock-badge">MOCK MODE</div>
{{end}}
</div>
{{if .SubTabs}}
<div class="subtabs">
{{range .SubTabs}}
<a class="subtab {{if .Active}}active{{end}}" href="{{.Path}}">{{.Label}}</a>
{{end}}
</div>
{{end}}
<div class="blocks">
{{range .Blocks}}
{{if eq .Kind "port-links"}}
{{template "block_port-links" .}}
{{else if eq .Kind "port-selector"}}
{{template "block_port-selector" .}}
{{else if eq .Kind "key-values"}}
{{template "block_key-values" .}}
{{else if eq .Kind "form"}}
{{template "block_form" .}}
{{else if eq .Kind "table"}}
{{template "block_table" .}}
{{else if eq .Kind "action"}}
{{template "block_action" .}}
{{else if eq .Kind "tool"}}
{{template "block_tool" .}}
{{else if eq .Kind "modal"}}
{{template "block_modal" .}}
{{end}}
{{end}}
</div>
</section>
</main>
</div>
<div id="toastRoot" class="toast-root"></div>
<section class="modal-layer" data-modal-root="group-create" hidden>
<div class="modal-backdrop" data-modal-close></div>
<div class="modal-box group-modal" role="dialog" aria-modal="true" aria-label="그룹 추가">
<div class="panel-header modal-header">
<h2>그룹 추가</h2>
<button type="button" class="modal-close" aria-label="닫기" data-modal-close>x</button>
</div>
<p class="modal-message">그룹 이름과 권한을 지정해 사용자 계정에 연결할 그룹을 관리합니다.</p>
<form class="modal-form" data-group-form>
<input type="hidden" name="id" value="">
<div class="form-grid compact-grid">
<div class="form-row">
<label>그룹 이름</label>
<input type="text" name="name" value="" placeholder="예: operator">
</div>
<div class="form-row">
<label>설명</label>
<input type="text" name="description" value="" placeholder="그룹 설명을 입력하세요">
</div>
</div>
<div class="group-permission-grid">
<div class="group-permission-cell heading">로그인</div>
<div class="group-permission-cell heading">네트워크 설정</div>
<div class="group-permission-cell heading">포트 설정</div>
<div class="group-permission-cell heading">포트 디버그</div>
<div class="group-permission-cell heading">Admin 설정</div>
<div class="group-permission-cell heading">공통 설정</div>
<div class="group-permission-cell heading">상태</div>
<div class="group-permission-cell heading">비밀번호 변경</div>
<div class="group-permission-cell heading">Operate</div>
</div>
<div class="group-permission-checks">
<label class="permission-chip"><input type="checkbox" name="permissions" value="login"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="network"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="ports"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="tools"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="admin"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="common"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="status"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="password"> <span>사용</span></label>
<label class="permission-chip"><input type="checkbox" name="permissions" value="operate"> <span>사용</span></label>
</div>
<div class="panel-actions">
<button type="submit" class="btn primary" data-group-submit>확인</button>
<button type="button" class="btn secondary" data-modal-close>취소</button>
</div>
</form>
</div>
</section>
<script src="/static/js/app.js"></script>
</body>
</html>
{{end}}