390px 실측 결과 26개 라우트 중 24개에서 문서가 뷰포트를 11px 넘겼고, 320px 에서는 햄버거 버튼이 화면 밖으로 밀려 내비게이션 자체가 불가능했다. 원인은 예외 없이 헤더 우측의 언어(71px)+통화(91px) 선택기였다. 이를 모바일 드로어로 옮기고, 좁은 화면에서는 세로 목록 대신 가로 칩으로 나열하도록 했다. 통화·배송국가는 이커머스 모듈이 슬롯에 주입하는 조각이므로 모듈 쪽에도 responsive.portable 오버라이드를 넣었다. 템플릿의 드로어 자리는 overflow-y-auto 라 옛 absolute 드롭다운이 잘리므로, 템플릿의 이커머스 모듈 의존 하한을 >=1.0.2 로 올렸다. 게시글 상단 네비는 성격이 다른 회귀였다. 게시판 이름이 길수록 flex 형제인 목록·이전글·다음글 버튼이 좁아지는데(87→73→62px), document.scrollWidth 는 내내 뷰포트와 같아 오버플로 검사로는 잡히지 않았다. 넘치는 게 아니라 줄어드는 회귀다. shrink-0 으로 버튼 폭을 고정하고, 모바일에서만 게시판 이름을 자기 줄로 올렸다. 버튼 3개 고정폭 261px + 21자 제목 323px = 584px < 태블릿 콘텐츠 735px 이므로 portable 이 아니라 mobile 스코프로 한정했다. 커밋 전 점검에서 audit 결함 두 건이 드러나 함께 고쳤다. 첫째, layout-* 룰 28개 중 27개가 appliesTo 에 확장 주입 조각 경로를 빠뜨려 조각 32개가 정적 검사에서 통째로 빠져 있었다. 실제 위반 60건이 은닉돼 있었고 그중 45건은 error 다. 다만 glob 만 넓히면 layout-grammar 의 root 화이트리스트가 조각의 정당한 키(target_layout/injections/extension_point/mode/priority)를 전부 오탐해 90건의 error 를 새로 만든다. 조각은 레이아웃이 아니라 별도 스키마이므로 extension-fragment 스키마를 신설해 오탐을 없애는 동시에 조각 고유의 결함(대상 키 누락으로 인한 silent drop, target_layout ↔ extension_point 동시 정의, 무동작 조각)을 새로 검출하게 했다. 둘째, Icon 의 w-N h-N 을 size prop 으로 바꾸라는 규정이 틀렸다. Icon 은 <i> 글리프라 박스 크기가 곧 font-size 인데, size prop 은 Font Awesome fa-* 로 매핑되어 상대값 0.875em + line-height 붕괴를 동반한다. 실측하면 w-4 h-4(16×16)가 fa-sm 에서 12.25×0.88 이 된다. 등가는 text-base 하나뿐이다. 앞선 작업에서 size:"sm" 으로 치환했던 2건을 되돌리고, 규정과 룰 메시지를 실측 등가표로 교체했다.
150 lines
3.6 KiB
JSON
150 lines
3.6 KiB
JSON
{
|
|
"identifier": "sirsoft-basic",
|
|
"vendor": "sirsoft",
|
|
"name": {
|
|
"ko": "Basic",
|
|
"en": "Basic"
|
|
},
|
|
"version": "1.0.2",
|
|
"license": "MIT",
|
|
"description": {
|
|
"ko": "그누보드7 기본 사용자 템플릿",
|
|
"en": "Gnuboard7 default user template"
|
|
},
|
|
"type": "user",
|
|
"locales": [
|
|
"ko",
|
|
"en"
|
|
],
|
|
"author": {
|
|
"name": "sirsoft",
|
|
"email": "contact@sirsoft.com",
|
|
"url": "https://sirsoft.com"
|
|
},
|
|
"release_date": "2026-01-07",
|
|
"g7_version": ">=7.0.0",
|
|
"dependencies": {
|
|
"modules": {
|
|
"sirsoft-board": ">=1.0.0",
|
|
"sirsoft-ecommerce": ">=1.0.2",
|
|
"sirsoft-page": ">=1.0.0"
|
|
},
|
|
"plugins": {
|
|
"sirsoft-daum_postcode": ">=1.0.0"
|
|
}
|
|
},
|
|
"assets": {
|
|
"css": [
|
|
"dist/css/components.css"
|
|
],
|
|
"js": [
|
|
"dist/js/components.iife.js"
|
|
],
|
|
"fonts": [],
|
|
"images": []
|
|
},
|
|
"components": {
|
|
"basic": [
|
|
"a",
|
|
"button",
|
|
"checkbox",
|
|
"div",
|
|
"form",
|
|
"h1",
|
|
"h2",
|
|
"h3",
|
|
"h4",
|
|
"hr",
|
|
"icon",
|
|
"img",
|
|
"input",
|
|
"label",
|
|
"li",
|
|
"nav",
|
|
"p",
|
|
"section",
|
|
"select",
|
|
"span",
|
|
"svg",
|
|
"table",
|
|
"tbody",
|
|
"td",
|
|
"textarea",
|
|
"th",
|
|
"thead",
|
|
"tr",
|
|
"ul"
|
|
],
|
|
"composite": [
|
|
"header",
|
|
"footer",
|
|
"mobile-nav",
|
|
"product-card",
|
|
"rich-text-editor",
|
|
"image-gallery",
|
|
"quantity-selector",
|
|
"post-reactions",
|
|
"social-login-buttons",
|
|
"file-uploader",
|
|
"card",
|
|
"modal",
|
|
"toast",
|
|
"pagination",
|
|
"stat-card",
|
|
"status-badge",
|
|
"tab-navigation",
|
|
"empty-state",
|
|
"loading-spinner",
|
|
"breadcrumb",
|
|
"search-bar",
|
|
"dropdown"
|
|
],
|
|
"layout": [
|
|
"container",
|
|
"flex",
|
|
"grid",
|
|
"section"
|
|
]
|
|
},
|
|
"preview": {
|
|
"thumbnail": "preview/thumbnail.png",
|
|
"screenshots": [
|
|
"preview/screenshot1.png",
|
|
"preview/screenshot2.png"
|
|
]
|
|
},
|
|
"error_config": {
|
|
"layouts": {
|
|
"401": "errors/401",
|
|
"403": "errors/403",
|
|
"404": "errors/404",
|
|
"500": "errors/500",
|
|
"503": "errors/503",
|
|
"maintenance": "errors/maintenance"
|
|
}
|
|
},
|
|
"features": {
|
|
"dark_mode": true,
|
|
"responsive": true,
|
|
"multi_language": true,
|
|
"multi_currency": true
|
|
},
|
|
"github_url": "https://github.com/gnuboard/g7-template-sirsoft-basic",
|
|
"github_changelog_url": "https://github.com/gnuboard/g7-template-sirsoft-basic/blob/main/CHANGELOG.md",
|
|
"externals": [
|
|
{
|
|
"id": "fontawesome",
|
|
"type": "style",
|
|
"url": "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css",
|
|
"preconnect": "https://cdnjs.cloudflare.com"
|
|
},
|
|
{
|
|
"id": "pretendard",
|
|
"type": "webfont",
|
|
"url": "https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css",
|
|
"preconnect": "https://cdn.jsdelivr.net",
|
|
"crossorigin": "anonymous"
|
|
}
|
|
]
|
|
}
|