for-humanity 0.12.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +16 -9
  3. package/dist/browser.js +14 -16
  4. package/dist/cli.css +2 -968
  5. package/dist/cli.js +92 -2318
  6. package/dist/config.js +1 -0
  7. package/dist/constant/copy.d.ts +100 -0
  8. package/dist/constant/site.d.ts +20 -0
  9. package/dist/constant/status.d.ts +19 -0
  10. package/dist/copy-C1uzvEnr.js +103 -0
  11. package/dist/group-path-XAThmzvC.js +10 -0
  12. package/dist/load-site-B-u5-jv0.js +2343 -0
  13. package/dist/logger-Dv1i9xSV.js +9 -0
  14. package/dist/mermaid/THIRD-PARTY-NOTICES.txt +3134 -0
  15. package/dist/mermaid/chunk--TN-qHgG.js +2 -0
  16. package/dist/mermaid/chunk-0kM1Lv4D.js +2 -0
  17. package/dist/mermaid/chunk-3FHei3pH.js +2001 -0
  18. package/dist/mermaid/chunk-3_2p2GqN.js +2 -0
  19. package/dist/mermaid/chunk-6HLei9i0.js +84 -0
  20. package/dist/mermaid/chunk-7Sz3kAwl.js +2214 -0
  21. package/dist/mermaid/chunk-7Tarqbpa.js +18047 -0
  22. package/dist/mermaid/chunk-9kkt8lzL.js +10 -0
  23. package/dist/mermaid/chunk-B--pNBQF.js +884 -0
  24. package/dist/mermaid/chunk-B4F-pysn.js +4241 -0
  25. package/dist/mermaid/chunk-B58sEIY_.js +14 -0
  26. package/dist/mermaid/chunk-B9_UWzSH.js +1517 -0
  27. package/dist/mermaid/chunk-BB8uZHwY.js +75 -0
  28. package/dist/mermaid/chunk-BFfk0LEc.js +717 -0
  29. package/dist/mermaid/chunk-BKri0qr7.js +89 -0
  30. package/dist/mermaid/chunk-BL404pH5.js +26 -0
  31. package/dist/mermaid/chunk-BLeiQSWo.js +354 -0
  32. package/dist/mermaid/chunk-BOmH_UFd.js +2 -0
  33. package/dist/mermaid/chunk-BSej9Nhy.js +1361 -0
  34. package/dist/mermaid/chunk-BYzrzvCI.js +12 -0
  35. package/dist/mermaid/chunk-BariMtWr.js +3020 -0
  36. package/dist/mermaid/chunk-BcrBoMwH.js +2352 -0
  37. package/dist/mermaid/chunk-Bok8z-Yo.js +67 -0
  38. package/dist/mermaid/chunk-BpTHLKQM.js +1970 -0
  39. package/dist/mermaid/chunk-BqjuxRsC.js +733 -0
  40. package/dist/mermaid/chunk-BuvPd-s5.js +1073 -0
  41. package/dist/mermaid/chunk-BvVehae3.js +5069 -0
  42. package/dist/mermaid/chunk-C-JABYpd.js +3075 -0
  43. package/dist/mermaid/chunk-C9XlTm4w.js +2 -0
  44. package/dist/mermaid/chunk-CApNbSU9.js +6 -0
  45. package/dist/mermaid/chunk-CCM2AH-C.js +9 -0
  46. package/dist/mermaid/chunk-CD1E0F_N.js +2 -0
  47. package/dist/mermaid/chunk-CDWvKG7D.js +2 -0
  48. package/dist/mermaid/chunk-CEVPpC1F.js +34 -0
  49. package/dist/mermaid/chunk-CLDr12lf.js +47504 -0
  50. package/dist/mermaid/chunk-CLVYqOBI.js +61 -0
  51. package/dist/mermaid/chunk-CLeOkFb5.js +15 -0
  52. package/dist/mermaid/chunk-CLgRAtOz.js +37 -0
  53. package/dist/mermaid/chunk-CMqFNUBl.js +134 -0
  54. package/dist/mermaid/chunk-CTPaBJXB.js +2 -0
  55. package/dist/mermaid/chunk-CVi6IGBL.js +2 -0
  56. package/dist/mermaid/chunk-CWV_EN-4.js +4745 -0
  57. package/dist/mermaid/chunk-CZ0dAs3g.js +2 -0
  58. package/dist/mermaid/chunk-C_YGy4Fn.js +236 -0
  59. package/dist/mermaid/chunk-CcVH22Yt.js +100 -0
  60. package/dist/mermaid/chunk-CgG6CD9_.js +7175 -0
  61. package/dist/mermaid/chunk-CgOP6IDB.js +3397 -0
  62. package/dist/mermaid/chunk-Cgg2UTSf.js +13 -0
  63. package/dist/mermaid/chunk-ChJfJJ1A.js +214 -0
  64. package/dist/mermaid/chunk-Ck5XRA46.js +447 -0
  65. package/dist/mermaid/chunk-Ckuw16cl.js +203 -0
  66. package/dist/mermaid/chunk-CpAbRCbF.js +1880 -0
  67. package/dist/mermaid/chunk-CuYekbSv.js +2 -0
  68. package/dist/mermaid/chunk-CwS4wZ5a.js +2 -0
  69. package/dist/mermaid/chunk-D-bcrBO3.js +82 -0
  70. package/dist/mermaid/chunk-D3IEAkCW.js +76 -0
  71. package/dist/mermaid/chunk-D8XfBJ_K.js +645 -0
  72. package/dist/mermaid/chunk-D9Ddd9y4.js +2228 -0
  73. package/dist/mermaid/chunk-DBh1mIbK.js +12 -0
  74. package/dist/mermaid/chunk-DD6Df6Ic.js +5 -0
  75. package/dist/mermaid/chunk-DGVDaXjx.js +8 -0
  76. package/dist/mermaid/chunk-DK9KqIXj.js +632 -0
  77. package/dist/mermaid/chunk-DORnIAsy.js +4487 -0
  78. package/dist/mermaid/chunk-DU69_VcF.js +363 -0
  79. package/dist/mermaid/chunk-DVNvSFoz.js +2144 -0
  80. package/dist/mermaid/chunk-DZe-4kde.js +20 -0
  81. package/dist/mermaid/chunk-D_a06Rz4.js +287 -0
  82. package/dist/mermaid/chunk-DfyFJJi2.js +972 -0
  83. package/dist/mermaid/chunk-DhKYPp1Z.js +2 -0
  84. package/dist/mermaid/chunk-DjFqgNTG.js +94 -0
  85. package/dist/mermaid/chunk-DmbDDrr-.js +65 -0
  86. package/dist/mermaid/chunk-DpuxlyL_.js +696 -0
  87. package/dist/mermaid/chunk-DqGhppWe.js +2 -0
  88. package/dist/mermaid/chunk-DqPZxHXa.js +5 -0
  89. package/dist/mermaid/chunk-Dt_1Jyif.js +293 -0
  90. package/dist/mermaid/chunk-DyQBE_NW.js +1935 -0
  91. package/dist/mermaid/chunk-JckyC4mW.js +1009 -0
  92. package/dist/mermaid/chunk-K7Myuj2-.js +1334 -0
  93. package/dist/mermaid/chunk-KuPYb48V.js +275 -0
  94. package/dist/mermaid/chunk-MFVRUoO0.js +4020 -0
  95. package/dist/mermaid/chunk-MbInCS_6.js +28 -0
  96. package/dist/mermaid/chunk-MexOLyKV.js +355 -0
  97. package/dist/mermaid/chunk-NnbDtJzg.js +21856 -0
  98. package/dist/mermaid/chunk-SGpOYZbI.js +2139 -0
  99. package/dist/mermaid/chunk-TbxLDlcU.js +198 -0
  100. package/dist/mermaid/chunk-TftHqGLg.js +490 -0
  101. package/dist/mermaid/chunk-UjQ8vA_Z.js +4138 -0
  102. package/dist/mermaid/chunk-YgmVTKqc.js +16 -0
  103. package/dist/mermaid/chunk-_a9EZE1v.js +1798 -0
  104. package/dist/mermaid/chunk-dTb8jqeP.js +2 -0
  105. package/dist/mermaid/chunk-fFdMfF8S.js +2240 -0
  106. package/dist/mermaid/chunk-feYbMzBj.js +1267 -0
  107. package/dist/mermaid/chunk-g3Pn8DkW.js +46 -0
  108. package/dist/mermaid/chunk-hM77LvCb.js +19832 -0
  109. package/dist/mermaid/chunk-hUDb-eAW.js +527 -0
  110. package/dist/mermaid/chunk-tpABtZ-3.js +4252 -0
  111. package/dist/mermaid/chunk-xIbz3oFK.js +59 -0
  112. package/dist/mermaid/chunk-yBz-vst0.js +976 -0
  113. package/dist/mermaid/mermaid-BhtR3wyB.js +1145 -0
  114. package/dist/run-site-command-cqCjpIlc.js +129 -0
  115. package/dist/site-config-bllORGpm.js +90 -0
  116. package/dist/site.js +1 -0
  117. package/dist/start-dev-server-x7Ja5uwv.js +184 -0
  118. package/dist/to-change-queue-DbEnZGNK.js +34 -0
  119. package/dist/to-error-message-pF6_7wGK.js +16 -0
  120. package/dist/type/group-path.d.ts +7 -0
  121. package/dist/type/site-config.d.ts +57 -0
  122. package/package.json +34 -17
  123. package/src/component/widget/cursor-face/_constant/cursor-face.ts +0 -14
  124. package/src/component/widget/cursor-face/wg-cursor-face.css +0 -15
  125. package/src/component/widget/cursor-face/wg-cursor-face.tsx +0 -153
  126. package/src/component/widget/navigation/_constant/locale.ts +0 -9
  127. package/src/component/widget/navigation/_constant/navigation-data-schema.ts +0 -33
  128. package/src/component/widget/navigation/_constant/navigation.ts +0 -9
  129. package/src/component/widget/navigation/_constant/reading-line.ts +0 -4
  130. package/src/component/widget/navigation/_function/restore-navigation-scroll.ts +0 -59
  131. package/src/component/widget/navigation/_function/to-doc-groups/_to-doc-branches.ts +0 -15
  132. package/src/component/widget/navigation/_function/to-doc-groups/_to-doc-group-branches.ts +0 -70
  133. package/src/component/widget/navigation/_function/to-doc-groups/to-doc-groups.ts +0 -15
  134. package/src/component/widget/navigation/_function/to-navigation-data/_to-navigation-document.ts +0 -13
  135. package/src/component/widget/navigation/_function/to-navigation-data/_to-navigation-group.ts +0 -13
  136. package/src/component/widget/navigation/_function/to-navigation-data/to-navigation-data.ts +0 -18
  137. package/src/component/widget/navigation/_function/to-navigation-json.ts +0 -8
  138. package/src/component/widget/navigation/_function/to-toc-groups.ts +0 -38
  139. package/src/component/widget/navigation/_type/doc-branch.ts +0 -11
  140. package/src/component/widget/navigation/_type/doc-group.ts +0 -24
  141. package/src/component/widget/navigation/_type/navigation-data.ts +0 -75
  142. package/src/component/widget/navigation/_type/navigation-focus-snapshot.ts +0 -17
  143. package/src/component/widget/navigation/_type/toc-group.ts +0 -39
  144. package/src/component/widget/navigation/_wg-navigation-nav-list.css +0 -48
  145. package/src/component/widget/navigation/_wg-navigation-nav-list.tsx +0 -61
  146. package/src/component/widget/navigation/_wg-navigation-nav.css +0 -21
  147. package/src/component/widget/navigation/_wg-navigation-nav.tsx +0 -33
  148. package/src/component/widget/navigation/_wg-navigation-scroll.tsx +0 -117
  149. package/src/component/widget/navigation/_wg-navigation-toc.css +0 -91
  150. package/src/component/widget/navigation/_wg-navigation-toc.tsx +0 -114
  151. package/src/component/widget/navigation/wg-navigation.css +0 -282
  152. package/src/component/widget/navigation/wg-navigation.tsx +0 -420
  153. package/src/component/widget/prose/_constant/heading-highlight.ts +0 -4
  154. package/src/component/widget/prose/_constant/section.ts +0 -7
  155. package/src/component/widget/prose/_constant/status.ts +0 -9
  156. package/src/component/widget/prose/_function/has-block-content.ts +0 -30
  157. package/src/component/widget/prose/_function/rehype-head.ts +0 -31
  158. package/src/component/widget/prose/_function/rehype-sections/_to-section-headings.ts +0 -20
  159. package/src/component/widget/prose/_function/rehype-sections/rehype-sections.ts +0 -21
  160. package/src/component/widget/prose/_function/rehype-tables.ts +0 -22
  161. package/src/component/widget/prose/_function/remark-blocks.ts +0 -112
  162. package/src/component/widget/prose/_function/remark-flow.ts +0 -26
  163. package/src/component/widget/prose/_function/remark-links.ts +0 -33
  164. package/src/component/widget/prose/_function/remark-parts.ts +0 -26
  165. package/src/component/widget/prose/_function/remark-status.ts +0 -59
  166. package/src/component/widget/prose/_function/remark-swatch.ts +0 -16
  167. package/src/component/widget/prose/_function/remark-unknown-directives.ts +0 -25
  168. package/src/component/widget/prose/wg-prose.css +0 -484
  169. package/src/component/widget/prose/wg-prose.tsx +0 -43
  170. package/src/component/widget/shell/wg-shell.css +0 -63
  171. package/src/component/widget/shell/wg-shell.tsx +0 -88
  172. package/src/component/widget/shell-controls/wg-shell-controls.css +0 -4
  173. package/src/component/widget/shell-controls/wg-shell-controls.tsx +0 -170
  174. package/src/constant/asset.ts +0 -63
  175. package/src/constant/copy.ts +0 -133
  176. package/src/constant/doc.ts +0 -13
  177. package/src/constant/font.ts +0 -34
  178. package/src/constant/site.ts +0 -24
  179. package/src/constant/status.ts +0 -15
  180. package/src/entry/browser/browser.tsx +0 -22
  181. package/src/entry/cli/_constant/cli.ts +0 -19
  182. package/src/entry/cli/_constant/crawling.ts +0 -14
  183. package/src/entry/cli/_constant/snippet.ts +0 -21
  184. package/src/entry/cli/_function/create-app.tsx +0 -57
  185. package/src/entry/cli/_function/create-dev-app.ts +0 -87
  186. package/src/entry/cli/_function/create-processor/_rehype-assets.ts +0 -70
  187. package/src/entry/cli/_function/create-processor/_rehype-heading-ids.ts +0 -34
  188. package/src/entry/cli/_function/create-processor/_remark-report.ts +0 -15
  189. package/src/entry/cli/_function/create-processor/_remark-snippets.ts +0 -117
  190. package/src/entry/cli/_function/create-processor/_shiki-transformers.ts +0 -91
  191. package/src/entry/cli/_function/create-processor/create-processor.ts +0 -64
  192. package/src/entry/cli/_function/read-docs.ts +0 -128
  193. package/src/entry/cli/_function/read-home.ts +0 -32
  194. package/src/entry/cli/_function/to-crawling-app.ts +0 -42
  195. package/src/entry/cli/cli.test.ts +0 -804
  196. package/src/entry/cli/cli.ts +0 -206
  197. package/src/env.d.ts +0 -6
  198. package/src/page/doc/pg-doc.tsx +0 -35
  199. package/src/page/home/pg-home.tsx +0 -40
  200. package/src/store/navigation/create-navigation-stores.test.ts +0 -74
  201. package/src/store/navigation/create-navigation-stores.ts +0 -59
  202. package/src/store/navigation/navigation-state.ts +0 -36
  203. package/src/store/navigation/navigation-storage.ts +0 -9
  204. package/src/store/navigation/to-navigation-scroll-state.ts +0 -42
  205. package/src/style/base.css +0 -28
  206. package/src/style/token.css +0 -188
  207. package/src/type/doc-content.ts +0 -15
  208. package/src/type/doc-data.ts +0 -38
  209. package/src/type/doc-file-data.ts +0 -21
  210. package/src/type/doc-heading.ts +0 -17
  211. package/src/type/doc-outline.ts +0 -16
  212. package/src/type/doc-section.ts +0 -9
  213. package/src/type/doc.ts +0 -20
  214. package/src/type/group-path.ts +0 -7
  215. package/src/type/site-assets.ts +0 -25
  216. package/src/type/site-config.ts +0 -73
  217. package/src/type/vfile-data.d.ts +0 -10
  218. package/src/util/async/to-change-queue.test.ts +0 -58
  219. package/src/util/async/to-change-queue.ts +0 -43
  220. package/src/util/dom/find-hash-target.ts +0 -18
  221. package/src/util/dom/reveal-hash-target.ts +0 -15
  222. package/src/util/error/to-error-message.ts +0 -10
  223. package/src/util/file/to-asset-path.ts +0 -26
  224. package/src/util/font/to-font-css.test.ts +0 -41
  225. package/src/util/font/to-font-css.ts +0 -28
  226. package/src/util/mermaid/render-flow.js +0 -321
@@ -1,484 +0,0 @@
1
- /*
2
- * Markdown 본문과 생성 부품의 표현
3
- * 요소 선택자는 소유 root 안에 한정
4
- */
5
- .wg_prose__root {
6
- /* stylelint-disable selector-disallowed-list -- Markdown 생성 태그 영역 */
7
- & h1 {
8
- margin: 0 0 var(--app-space-stack);
9
- color: var(--app-color-text-strong);
10
- font-size: var(--app-font-size-title);
11
- font-weight: var(--app-font-weight-title);
12
- line-height: var(--app-line-height-title);
13
- letter-spacing: var(--app-letter-spacing-title);
14
- text-wrap: balance;
15
-
16
- /* 문서 탐색 라벨과 같은 글자 위쪽 기준 · 글꼴 크기별 내부 여백 제거 */
17
- text-box: trim-start cap alphabetic;
18
- }
19
-
20
- & p {
21
- margin: 0 0 var(--app-space-stack);
22
- }
23
-
24
- & img {
25
- max-width: 100%;
26
- height: auto;
27
- vertical-align: middle;
28
- }
29
-
30
- /* 제목 아래 첫 문단 · 소개 크기 */
31
- & h1 + p {
32
- font-size: var(--app-font-size-lead);
33
- }
34
-
35
- & h2 {
36
- margin: var(--app-space-section) 0 var(--app-space-stack);
37
- padding-top: var(--app-space-group);
38
- border-top: 1px solid var(--app-color-border);
39
- color: var(--app-color-text-strong);
40
- font-size: var(--app-font-size-section);
41
- font-weight: var(--app-font-weight-strong);
42
- line-height: var(--app-line-height-heading);
43
- letter-spacing: var(--app-letter-spacing-heading);
44
- text-wrap: balance;
45
- scroll-margin-top: var(--app-space-anchor);
46
- }
47
-
48
- /* 머리 아래 첫 절의 중복 구분선 제거 */
49
- & .wg_prose__head + h2 {
50
- margin-top: var(--app-space-group);
51
- padding-top: 0;
52
- border-top: 0;
53
- }
54
-
55
- /* 가름 아래 절의 중복 구분선 제거 */
56
- & .wg_prose__part + h2 {
57
- margin-top: var(--app-space-block);
58
- padding-top: 0;
59
- border-top: 0;
60
- }
61
-
62
- & h3 {
63
- margin: var(--app-space-subsection) 0 var(--app-space-inline);
64
- color: var(--app-color-text-strong);
65
- font-size: var(--app-font-size-lead);
66
- font-weight: var(--app-font-weight-strong);
67
- line-height: var(--app-line-height-tight);
68
- scroll-margin-top: var(--app-space-anchor);
69
- }
70
-
71
- & h4 {
72
- margin: var(--app-space-group) 0 6px;
73
- color: var(--app-color-text-strong);
74
- font-size: var(--app-font-size-body);
75
- font-weight: var(--app-font-weight-strong);
76
- }
77
-
78
- & h5 {
79
- margin: var(--app-space-block) 0 6px;
80
- color: var(--app-color-text-muted);
81
- font-size: var(--app-font-size-dense);
82
- font-weight: var(--app-font-weight-strong);
83
- }
84
-
85
- & a {
86
- color: var(--app-color-link);
87
- text-decoration: none;
88
- text-underline-offset: 2px;
89
- }
90
-
91
- & a:visited {
92
- color: var(--app-color-link-visited);
93
- }
94
-
95
- & a:hover {
96
- color: var(--app-color-link-hover);
97
- text-decoration: underline;
98
- }
99
-
100
- & a:focus-visible {
101
- border-radius: var(--app-radius-mark);
102
- outline: var(--app-outline-focus);
103
- outline-offset: var(--app-outline-focus-offset);
104
- }
105
-
106
- & strong {
107
- color: var(--app-color-text-strong);
108
- font-weight: var(--app-font-weight-strong);
109
- }
110
-
111
- & ul {
112
- margin: 0 0 var(--app-space-stack);
113
- padding-left: 20px;
114
- }
115
-
116
- & ol {
117
- margin: 0 0 var(--app-space-stack);
118
- padding-left: 22px;
119
- }
120
-
121
- & li {
122
- margin-bottom: 4px;
123
- }
124
-
125
- & li > ul {
126
- margin: 4px 0 0;
127
- }
128
-
129
- & li > ol {
130
- margin: 4px 0 0;
131
- }
132
-
133
- & code {
134
- padding: 1px 3px;
135
- border-radius: var(--app-radius-inline);
136
- background: var(--app-color-code);
137
- color: var(--app-color-text-strong);
138
-
139
- /* UA monospace 대신 부모 글꼴 · 문단은 본문 정책, 코드 블록은 pre의 고정폭·자간 0 */
140
- font-family: inherit;
141
- font-size: 1em;
142
- }
143
-
144
- /* 코드 블록 · Shiki의 --app-code-* 참조 */
145
- & pre {
146
- overflow-x: auto;
147
- margin: var(--app-space-block) 0;
148
- padding: var(--app-space-stack) var(--app-space-block);
149
- border: 1px solid var(--app-color-border);
150
- border-radius: var(--app-radius-box);
151
- background: var(--app-color-code);
152
- font-family: var(--app-font-mono);
153
- font-size: var(--app-font-size-detail);
154
- line-height: var(--app-line-height-code);
155
- letter-spacing: 0;
156
-
157
- /* 탭 들여쓰기 코드 · 브라우저 기본 8칸은 좁은 본문에서 너무 넓음 */
158
- tab-size: 4;
159
- }
160
-
161
- & pre code {
162
- padding: 0;
163
- background: none;
164
- color: inherit;
165
- font-size: inherit;
166
- }
167
-
168
- /* 인용과 첫머리 안내 */
169
- & blockquote {
170
- margin: var(--app-space-block) 0;
171
- padding: 0 0 0 var(--app-space-block);
172
- border-left: 1px solid var(--app-color-border);
173
- }
174
-
175
- & blockquote > :last-child {
176
- margin-bottom: 0;
177
- }
178
-
179
- /* 표 · 코드 상자와 같은 선 색으로 바깥 선과 칸 선 · 머리 행은 바탕 */
180
- & table {
181
- width: 100%;
182
- border: 1px solid var(--app-color-border);
183
- border-collapse: collapse;
184
- font-size: var(--app-font-size-dense);
185
- font-variant-numeric: tabular-nums;
186
- }
187
-
188
- & th {
189
- padding: var(--app-space-inline) var(--app-space-stack);
190
- border: 1px solid var(--app-color-border);
191
- background: var(--app-color-code);
192
- color: var(--app-color-text-strong);
193
- font-weight: var(--app-font-weight-strong);
194
- text-align: left;
195
- vertical-align: bottom;
196
- white-space: nowrap;
197
- }
198
-
199
- & td {
200
- padding: var(--app-space-inline) var(--app-space-stack);
201
- border: 1px solid var(--app-color-border);
202
- text-align: left;
203
- vertical-align: top;
204
- }
205
-
206
- /* 표의 읽는 행 표시 */
207
- & tbody tr:hover td {
208
- background: var(--app-color-accent-soft);
209
- }
210
-
211
- & hr {
212
- margin: var(--app-space-section) 0;
213
- border: 0;
214
- border-top: 1px dotted var(--app-color-border);
215
- }
216
-
217
- /* stylelint-disable selector-class-pattern -- Shiki 가 만드는 line·highlighted·diff 클래스 */
218
-
219
- /* 코드 줄 · 바탕을 상자 가로 전체로 · 표기 없는 줄은 보이는 차이 없음 */
220
- & pre code .line {
221
- display: inline-block;
222
- width: calc(100% + 2 * var(--app-space-block));
223
- margin: 0 calc(-1 * var(--app-space-block));
224
- padding: 0 var(--app-space-block);
225
- }
226
-
227
- & pre code .line.highlighted {
228
- background: var(--app-color-accent-soft);
229
- }
230
-
231
- & pre code .line.highlighted.error {
232
- background: var(--app-color-bad-soft);
233
- }
234
-
235
- & pre code .line.highlighted.warning {
236
- background: var(--app-color-warn-soft);
237
- }
238
-
239
- & pre code .line.diff.add {
240
- background: var(--app-color-good-soft);
241
- }
242
-
243
- & pre code .line.diff.remove {
244
- background: var(--app-color-bad-soft);
245
- opacity: 0.8;
246
- }
247
-
248
- /* 색 블록 위의 줄 표기 · 바탕보다 한 단계 진하게 */
249
- & pre.wg_prose__code--bad code .line.highlighted,
250
- & pre.wg_prose__code--bad code .line.highlighted.error,
251
- & pre.wg_prose__code--bad code .line.diff.remove {
252
- background: var(--app-color-bad-mark);
253
- }
254
-
255
- & pre.wg_prose__code--good code .line.highlighted,
256
- & pre.wg_prose__code--good code .line.diff.add {
257
- background: var(--app-color-good-mark);
258
- }
259
-
260
- & pre code .highlighted-word {
261
- padding: 0 2px;
262
- border-radius: var(--app-radius-inline);
263
- background: var(--app-color-accent-soft);
264
- }
265
-
266
- /* 파일 이름 띠 · 펜스 메타 [파일 이름] · 코드 상자와 한 몸, 여백은 figure 가 맡음 */
267
- & .wg_prose__codeFile {
268
- margin: var(--app-space-block) 0;
269
- }
270
-
271
- & .wg_prose__codeFile pre {
272
- margin: 0;
273
- border-top-left-radius: 0;
274
- border-top-right-radius: 0;
275
- }
276
-
277
- & .wg_prose__codeFileTitle {
278
- display: flex;
279
- gap: var(--app-space-block);
280
- justify-content: space-between;
281
- padding: var(--app-space-inline) var(--app-space-block);
282
- border: 1px solid var(--app-color-border);
283
- border-bottom: 0;
284
- border-radius: var(--app-radius-box) var(--app-radius-box) 0 0;
285
- background: var(--app-code-background);
286
- color: var(--app-color-text-muted);
287
- font-family: var(--app-font-mono);
288
- font-size: var(--app-font-size-dense);
289
- letter-spacing: 0;
290
- }
291
-
292
- & .wg_prose__codeFileLang {
293
- text-transform: uppercase;
294
- }
295
-
296
- /* 줄 번호 · 펜스 메타 line-numbers · 복사에 섞이지 않게 content 로 */
297
- & pre.wg_prose__lineNumbers code {
298
- counter-reset: line;
299
- }
300
-
301
- & pre.wg_prose__lineNumbers code .line::before {
302
- display: inline-block;
303
- width: 2em;
304
- margin-right: var(--app-space-stack);
305
- color: var(--app-color-text-muted);
306
- text-align: right;
307
- content: counter(line);
308
- counter-increment: line;
309
- user-select: none;
310
- }
311
- /* stylelint-enable selector-class-pattern */
312
- /* stylelint-enable selector-disallowed-list */
313
- }
314
-
315
- /* 공통 문서 머리 · 제목·소개 */
316
- .wg_prose__head {
317
- margin-bottom: var(--app-space-inline);
318
- padding-bottom: var(--app-space-block);
319
- border-bottom: 1px dotted var(--app-color-border);
320
-
321
- /* stylelint-disable-next-line selector-disallowed-list -- Markdown 생성 머리 */
322
- & > :last-child {
323
- margin-bottom: 0;
324
- }
325
-
326
- /* stylelint-disable selector-disallowed-list -- README의 가운데 정렬 HTML 소개 */
327
- & [align="center"] {
328
- padding: var(--app-space-group) 0;
329
- text-align: center;
330
- }
331
-
332
- & [align="center"] > h1 {
333
- margin-block: var(--app-space-group);
334
- font-size: 24px;
335
- }
336
-
337
- & [align="center"] > p {
338
- margin-bottom: var(--app-space-block);
339
- }
340
-
341
- & [align="center"] > img {
342
- width: 72px;
343
- image-rendering: pixelated;
344
- }
345
- /* stylelint-enable selector-disallowed-list */
346
- }
347
-
348
- /* 제목 글자만 강조 · 여러 줄에서도 각 줄을 칠하고 문서 배치는 유지 */
349
- .wg_prose__headingText {
350
- box-decoration-break: clone;
351
-
352
- /* 줄바꿈된 글자 뒤의 바탕은 opacity 레이어로 분리할 수 없어 배경색만 전환 */
353
- transition: background-color var(--app-motion-duration-highlight-fade) var(--app-motion-easing-out);
354
- }
355
-
356
- .wg_prose__headingText--highlighted {
357
- background-color: var(--app-color-anchor-highlight);
358
- transition: none;
359
- }
360
-
361
- /* ::part 가름의 공통 표현 */
362
- .wg_prose__part {
363
- margin-top: var(--app-space-section);
364
- padding-top: var(--app-space-stack);
365
- border-top: 1px dotted var(--app-color-border);
366
- color: var(--app-color-text-strong);
367
- font-size: var(--app-font-size-part);
368
- font-weight: var(--app-font-weight-strong);
369
- line-height: var(--app-line-height-heading);
370
- letter-spacing: var(--app-letter-spacing-heading);
371
- }
372
-
373
- /* 넓은 표의 내부 가로 스크롤 */
374
- .wg_prose__table {
375
- overflow-x: auto;
376
- margin: var(--app-space-block) 0;
377
- }
378
-
379
- /* 상태 표지 · 확인 초록, 미확인 amber */
380
- .wg_prose__pill {
381
- display: inline-block;
382
- padding: 0 5px;
383
- border-radius: var(--app-radius-inline);
384
- font-size: var(--app-font-size-detail);
385
- font-weight: var(--app-font-weight-strong);
386
- line-height: 1.6;
387
- white-space: nowrap;
388
- }
389
-
390
- .wg_prose__pill--verified {
391
- background: var(--app-color-verified-soft);
392
- color: var(--app-color-verified);
393
- }
394
-
395
- .wg_prose__pill--unverified {
396
- background: var(--app-color-unverified-soft);
397
- color: var(--app-color-unverified);
398
- }
399
-
400
- /* 인라인 hex 색 칩 · remark-swatch의 CSS 변수 */
401
- .wg_prose__color {
402
- /* 색 칩과 값 사이 줄바꿈 방지 */
403
- white-space: nowrap;
404
-
405
- &::before {
406
- display: inline-block;
407
- width: 0.8em;
408
- height: 0.8em;
409
- margin-right: 5px;
410
- border: 1px solid var(--app-color-border);
411
- border-radius: var(--app-radius-mark);
412
- background: var(--wg-prose-chip-color, transparent);
413
- content: "";
414
- vertical-align: -0.05em;
415
- }
416
- }
417
-
418
- /* 빌드 시 생성한 격자 SVG 흐름도 */
419
- .wg_prose__flow {
420
- overflow-x: auto;
421
- margin: var(--app-space-block) 0;
422
- padding: var(--app-space-block);
423
- border: 1px solid var(--app-color-border);
424
- border-radius: var(--app-radius-box);
425
-
426
- /* 라벨 위치는 자간 0의 격자로 계산 */
427
- letter-spacing: 0;
428
-
429
- /* stylelint-disable-next-line selector-disallowed-list -- 외부 렌더러 생성 SVG */
430
- & svg {
431
- display: block;
432
- max-width: 100%;
433
- height: auto;
434
- margin: 0 auto;
435
- }
436
- }
437
-
438
- /* 보충 설명 · 본문과 분리되는 제목·왼쪽 선 */
439
- .wg_prose__note {
440
- margin: var(--app-space-block) 0;
441
- padding-left: var(--app-space-block);
442
- border-left: 2px solid var(--app-color-border);
443
-
444
- & > :last-child {
445
- margin-bottom: 0;
446
- }
447
- }
448
-
449
- .wg_prose__noteTitle {
450
- display: block;
451
- margin-bottom: var(--app-space-inline);
452
- color: var(--app-color-text-strong);
453
- font-weight: var(--app-font-weight-strong);
454
- }
455
-
456
- /* 구현 상세 · 펼침 상태와 marker는 native Details 소유 */
457
- .wg_prose__details {
458
- margin: var(--app-space-block) 0;
459
- padding-bottom: var(--app-space-stack);
460
- border-top: 1px dotted var(--app-color-border);
461
- border-bottom: 1px dotted var(--app-color-border);
462
-
463
- & > :last-child {
464
- margin-bottom: 0;
465
- }
466
- }
467
-
468
- .wg_prose__detailsSummary {
469
- padding: var(--app-space-inline) 0;
470
- color: var(--app-color-link);
471
- font-weight: var(--app-font-weight-strong);
472
- cursor: pointer;
473
-
474
- &:hover {
475
- color: var(--app-color-link-hover);
476
- text-decoration: underline;
477
- text-underline-offset: 2px;
478
- }
479
-
480
- &:focus-visible {
481
- outline: var(--app-outline-focus);
482
- outline-offset: var(--app-outline-focus-offset);
483
- }
484
- }
@@ -1,43 +0,0 @@
1
- import clsx from "clsx";
2
- import "./wg-prose.css";
3
-
4
- /**
5
- * Markdown HTML과 본문 부품의 공통 표현 입력
6
- * remark·rehype 플러그인은 _function 소유
7
- */
8
- export interface WgProseProps {
9
- /**
10
- * 머리를 포함한 렌더링 완료 HTML
11
- */
12
- html?: string;
13
- /**
14
- * README가 없을 때의 안내 머리
15
- */
16
- head?: {
17
- /**
18
- * 문서 h1 제목
19
- */
20
- title: string;
21
- /**
22
- * 제목 아래 소개 · 선택
23
- */
24
- lead?: string;
25
- };
26
- }
27
-
28
- export const WgProse = (props: WgProseProps) => {
29
- if (props.html !== undefined) {
30
- return <article className={clsx("wg_prose__root")} dangerouslySetInnerHTML={{__html: props.html}} />;
31
- }
32
-
33
- return (
34
- <article className={clsx("wg_prose__root")}>
35
- {props.head !== undefined && (
36
- <header className={clsx("wg_prose__head")}>
37
- <h1>{props.head.title}</h1>
38
- {props.head.lead !== undefined && <p>{props.head.lead}</p>}
39
- </header>
40
- )}
41
- </article>
42
- );
43
- };
@@ -1,63 +0,0 @@
1
- /*
2
- * 넓은 화면은 같은 폭의 양쪽 탐색 사이를 본문이 채움 · 좁은 화면은 문서 탐색만 표시
3
- */
4
- .wg_shell__root {
5
- display: grid;
6
- max-width: var(--app-size-page);
7
- margin: 0 auto;
8
- padding: 0 var(--app-space-gutter);
9
- grid-template: "nav main outline" 1fr / calc(var(--app-size-sidebar) + var(--app-space-sidebar-gap)) minmax(0, 1fr) calc(var(--app-size-sidebar) + var(--app-space-sidebar-gap));
10
- background: var(--app-color-ground);
11
- color: var(--app-color-text);
12
- font-family: var(--app-font-body);
13
- font-size: var(--app-font-size-body);
14
- line-height: var(--app-line-height-body);
15
- letter-spacing: var(--app-letter-spacing-body);
16
-
17
- /* 한국어 낱말 단위 줄바꿈 · 긴 식별자만 예외 */
18
- word-break: keep-all;
19
- overflow-wrap: break-word;
20
- text-wrap: pretty;
21
- -webkit-font-smoothing: antialiased;
22
- }
23
-
24
- .wg_shell__root--drawerOpen {
25
- overflow: hidden;
26
- }
27
-
28
- .wg_shell__browserRoot {
29
- /* 브라우저 셸의 마운트 경계 · 자식은 body의 기존 grid에 참여 */
30
- display: contents;
31
- }
32
-
33
- .wg_shell__main {
34
- grid-area: main;
35
- min-width: 0;
36
- border-inline: 1px solid var(--app-color-border-layout);
37
-
38
- /* 문서 목록의 시작선 · 마지막 절도 읽는 선까지 이동 가능한 끝 여백 */
39
- padding-block: var(--app-size-brand) calc(100vh - var(--app-space-anchor));
40
- padding-inline: var(--app-space-column);
41
- }
42
-
43
- /* 본문 최소 약 800px을 남기도록 목차 숨김 · 본문이 오른쪽 여백까지 채움 */
44
- @media (width < 1360px) {
45
- .wg_shell__root {
46
- grid-template: "nav main" 1fr / calc(var(--app-size-sidebar) + var(--app-space-sidebar-gap)) minmax(0, 1fr);
47
- }
48
- }
49
-
50
- /* 모바일의 브랜드·본문은 한 열 배치 */
51
- @media (width < 1024px) {
52
- .wg_shell__root {
53
- grid-template:
54
- "nav" auto
55
- "main" 1fr / minmax(0, 1fr);
56
- }
57
-
58
- .wg_shell__main {
59
- padding-block-start: var(--app-space-page-top);
60
- padding-inline: 0;
61
- border-inline: 0;
62
- }
63
- }
@@ -1,88 +0,0 @@
1
- import clsx from "clsx";
2
- import type {Child} from "hono/jsx";
3
- import {toNavigationData} from "@/component/widget/navigation/_function/to-navigation-data/to-navigation-data";
4
- import {toNavigationJson} from "@/component/widget/navigation/_function/to-navigation-json";
5
- import {WgShellControls} from "@/component/widget/shell-controls/wg-shell-controls";
6
- import {asset_favicon_path} from "@/constant/asset";
7
- import type {Doc} from "@/type/doc";
8
- import type {DocOutline} from "@/type/doc-outline";
9
- import type {SiteAssets} from "@/type/site-assets";
10
- import type {SiteConfig} from "@/type/site-config";
11
- import "@/style/base.css";
12
- import "@/style/token.css";
13
- import "./wg-shell.css";
14
-
15
- /**
16
- * 공통 HTML 틀의 입력 · 문서 탐색·현재 목차·본문
17
- */
18
- export interface WgShellProps {
19
- /**
20
- * 사이트 이름 · 탭과 사이드바
21
- */
22
- site: SiteConfig;
23
- /**
24
- * 사이드바 전체 문서 목록
25
- */
26
- docs: Doc[];
27
- /**
28
- * HTML 머리의 글꼴·dev 스크립트
29
- */
30
- assets: SiteAssets;
31
- /**
32
- * 탭 제목의 문서 이름 · 첫 화면 생략
33
- */
34
- title?: string;
35
- /**
36
- * 현재 문서 id · 첫 화면 생략
37
- */
38
- current?: string;
39
- /**
40
- * 현재 문서 또는 README 홈의 목차
41
- */
42
- outline?: DocOutline;
43
- /**
44
- * 현재 페이지 본문
45
- */
46
- children: Child;
47
- }
48
-
49
- export const WgShell = (props: WgShellProps) => {
50
- const navigationData = toNavigationData({site: props.site, docs: props.docs, current: props.current, outline: props.outline});
51
-
52
- return (
53
- <html lang="ko">
54
- {/**
55
- * 공통 자원 · 브라우저 동작은 WgShellControls의 생명주기에서 연결
56
- */}
57
- <head>
58
- <meta charSet="utf-8" />
59
- <meta name="viewport" content="width=device-width, initial-scale=1" />
60
- {props.site.description !== undefined && <meta name="description" content={props.site.description} />}
61
- <title>{props.title === undefined ? props.site.title : `${props.title} · ${props.site.title}`}</title>
62
- <link rel="icon" href={asset_favicon_path} type="image/svg+xml" />
63
- <style dangerouslySetInnerHTML={{__html: props.assets.fontCss}} />
64
- {props.assets.preload.map((href) => (
65
- <link key={href} rel="preload" href={href} as="font" type="font/woff2" crossOrigin="" />
66
- ))}
67
- <link rel="stylesheet" href={props.assets.stylePath} />
68
- </head>
69
- {/**
70
- * 문서 탐색·현재 목차·본문 · 브라우저 동작 연결
71
- */}
72
- <body className={clsx("wg_shell__root")}>
73
- {/**
74
- * 서버·브라우저의 공통 셸 조립 · 본문 HTML은 마운트 범위에서 제외
75
- */}
76
- <div className={clsx("wg_shell__browserRoot")} data-shell-browser-root="" data-shell-reload={props.assets.reload ? "" : undefined}>
77
- <WgShellControls data={navigationData} reload={props.assets.reload} />
78
- </div>
79
- {/**
80
- * 최소 탐색 자료와 단일 JSX 번들 · 본문 전 상태·스크롤 복원
81
- */}
82
- <script type="application/json" id="fh-navigation-data" dangerouslySetInnerHTML={{__html: toNavigationJson(navigationData)}} />
83
- <script dangerouslySetInnerHTML={{__html: props.assets.browserScript}} />
84
- <main className={clsx("wg_shell__main")}>{props.children}</main>
85
- </body>
86
- </html>
87
- );
88
- };
@@ -1,4 +0,0 @@
1
- .wg_shellControls__navigation {
2
- /* Hono 갱신의 DOM 경계 · 탐색 자식은 기존 body grid에 참여 */
3
- display: contents;
4
- }