jekyll-potion 1.0.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 (74) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +202 -0
  3. data/jekyll-potion.gemspec +17 -0
  4. data/lib/jekyll-potion/logger.rb +49 -0
  5. data/lib/jekyll-potion/models/favicon.rb +28 -0
  6. data/lib/jekyll-potion/models/page-potion.rb +86 -0
  7. data/lib/jekyll-potion/models/potion-page.rb +26 -0
  8. data/lib/jekyll-potion/models/potion-source-map-page.rb +15 -0
  9. data/lib/jekyll-potion/models/potion-static-file.rb +21 -0
  10. data/lib/jekyll-potion/potion.rb +136 -0
  11. data/lib/jekyll-potion/processor/base/jquery-3.6.0.min.js +2 -0
  12. data/lib/jekyll-potion/processor/base-template/code.js +40 -0
  13. data/lib/jekyll-potion/processor/base-template/navigation.js +43 -0
  14. data/lib/jekyll-potion/processor/base-template/tabs.js +38 -0
  15. data/lib/jekyll-potion/processor/header-template/header.js +31 -0
  16. data/lib/jekyll-potion/processor/make-base-javascript-processor.rb +59 -0
  17. data/lib/jekyll-potion/processor/make-date-processor.rb +30 -0
  18. data/lib/jekyll-potion/processor/make-empty-content-processor.rb +19 -0
  19. data/lib/jekyll-potion/processor/make-favicon-processor.rb +108 -0
  20. data/lib/jekyll-potion/processor/make-front-matter-processor.rb +21 -0
  21. data/lib/jekyll-potion/processor/make-header-link-processor.rb +103 -0
  22. data/lib/jekyll-potion/processor/make-navigation-processor.rb +55 -0
  23. data/lib/jekyll-potion/processor/make-og-tag-processor.rb +45 -0
  24. data/lib/jekyll-potion/processor/make-search-index-processor.rb +205 -0
  25. data/lib/jekyll-potion/processor/make-theme-processor.rb +197 -0
  26. data/lib/jekyll-potion/processor/make-title-processor.rb +53 -0
  27. data/lib/jekyll-potion/processor/rewrite-a-href-processor.rb +43 -0
  28. data/lib/jekyll-potion/processor/rewrite-img-processor.rb +42 -0
  29. data/lib/jekyll-potion/processor/search-template/search.js +123 -0
  30. data/lib/jekyll-potion/processor.rb +152 -0
  31. data/lib/jekyll-potion/site.rb +155 -0
  32. data/lib/jekyll-potion/tag.rb +176 -0
  33. data/lib/jekyll-potion/tags/alerts.rb +24 -0
  34. data/lib/jekyll-potion/tags/api.rb +105 -0
  35. data/lib/jekyll-potion/tags/code.rb +65 -0
  36. data/lib/jekyll-potion/tags/empty.rb +20 -0
  37. data/lib/jekyll-potion/tags/file.rb +22 -0
  38. data/lib/jekyll-potion/tags/link.rb +47 -0
  39. data/lib/jekyll-potion/tags/logo.rb +22 -0
  40. data/lib/jekyll-potion/tags/navigation.rb +35 -0
  41. data/lib/jekyll-potion/tags/pagination.rb +20 -0
  42. data/lib/jekyll-potion/tags/tabs.rb +62 -0
  43. data/lib/jekyll-potion/theme/proto/_includes/container.html +10 -0
  44. data/lib/jekyll-potion/theme/proto/_includes/head.html +4 -0
  45. data/lib/jekyll-potion/theme/proto/_includes/header.html +21 -0
  46. data/lib/jekyll-potion/theme/proto/_includes/image.html +5 -0
  47. data/lib/jekyll-potion/theme/proto/_includes/nav.html +3 -0
  48. data/lib/jekyll-potion/theme/proto/_includes/search.html +29 -0
  49. data/lib/jekyll-potion/theme/proto/_layouts/default.html +19 -0
  50. data/lib/jekyll-potion/theme/proto/_layouts/error.html +23 -0
  51. data/lib/jekyll-potion/theme/proto/_templates/alerts.liquid +4 -0
  52. data/lib/jekyll-potion/theme/proto/_templates/api.liquid +46 -0
  53. data/lib/jekyll-potion/theme/proto/_templates/api=description.liquid +3 -0
  54. data/lib/jekyll-potion/theme/proto/_templates/api=parameter.liquid +5 -0
  55. data/lib/jekyll-potion/theme/proto/_templates/api=response.liquid +7 -0
  56. data/lib/jekyll-potion/theme/proto/_templates/code.liquid +8 -0
  57. data/lib/jekyll-potion/theme/proto/_templates/empty.liquid +15 -0
  58. data/lib/jekyll-potion/theme/proto/_templates/file.liquid +8 -0
  59. data/lib/jekyll-potion/theme/proto/_templates/link.liquid +9 -0
  60. data/lib/jekyll-potion/theme/proto/_templates/logo.liquid +8 -0
  61. data/lib/jekyll-potion/theme/proto/_templates/navigation-page.liquid +14 -0
  62. data/lib/jekyll-potion/theme/proto/_templates/navigation.liquid +5 -0
  63. data/lib/jekyll-potion/theme/proto/_templates/pagination.liquid +30 -0
  64. data/lib/jekyll-potion/theme/proto/_templates/tabs.liquid +8 -0
  65. data/lib/jekyll-potion/theme/proto/_templates/tabs=content.liquid +5 -0
  66. data/lib/jekyll-potion/theme/proto/assets/css/main.scss +1254 -0
  67. data/lib/jekyll-potion/theme/proto/assets/css/syntax.css +80 -0
  68. data/lib/jekyll-potion/theme/proto/assets/js/jsrender.min.js +4 -0
  69. data/lib/jekyll-potion/theme/proto/assets/js/jsrender.min.js.map +1 -0
  70. data/lib/jekyll-potion/theme/proto/assets/js/main.js +237 -0
  71. data/lib/jekyll-potion/theme.rb +165 -0
  72. data/lib/jekyll-potion/util.rb +73 -0
  73. data/lib/jekyll-potion.rb +32 -0
  74. metadata +143 -0
@@ -0,0 +1,1254 @@
1
+ $breakpoint-mobile: 335px;
2
+ $breakpoint-desktop: 1024px;
3
+
4
+ @mixin mobile {
5
+ @media (min-width: #{$breakpoint-mobile}) and (max-width: #{$breakpoint-desktop - 1px}) {
6
+ @content;
7
+ }
8
+ }
9
+
10
+ @mixin desktop {
11
+ @media (min-width: #{$breakpoint-desktop}) {
12
+ @content;
13
+ }
14
+ }
15
+
16
+ @mixin border($type) {
17
+ #{$type}: 1px solid lightgray;
18
+ }
19
+
20
+ @mixin magnifier($color, $size) {
21
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}"><path d="M23.832 19.641l-6.821-6.821c2.834-5.878-1.45-12.82-8.065-12.82-4.932 0-8.946 4.014-8.946 8.947 0 6.508 6.739 10.798 12.601 8.166l6.879 6.879c1.957.164 4.52-2.326 4.352-4.351zm-14.886-4.721c-3.293 0-5.973-2.68-5.973-5.973s2.68-5.973 5.973-5.973c3.294 0 5.974 2.68 5.974 5.973s-2.68 5.973-5.974 5.973z"/></svg>') center no-repeat;
22
+ background-size: $size;
23
+ }
24
+
25
+ @mixin unfold($color, $size) {
26
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}" fill-rule="evenodd" clip-rule="evenodd"><path d="M4 .755l14.374 11.245-14.374 11.219.619.781 15.381-12-15.391-12-.609.755z"/></svg>') center no-repeat;
27
+ background-size: $size;
28
+ }
29
+
30
+ @mixin fold($color, $size) {
31
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}" fill-rule="evenodd" clip-rule="evenodd"><path d="M23.245 4l-11.245 14.374-11.219-14.374-.781.619 12 15.381 12-15.391-.755-.609z"/></svg>') center no-repeat;
32
+ background-size: $size;
33
+ }
34
+
35
+ @mixin left($color, $size) {
36
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path d="m22 12.002c0-5.517-4.48-9.997-9.998-9.997-5.517 0-9.997 4.48-9.997 9.997 0 5.518 4.48 9.998 9.997 9.998 5.518 0 9.998-4.48 9.998-9.998zm-1.5 0c0 4.69-3.808 8.498-8.498 8.498s-8.497-3.808-8.497-8.498 3.807-8.497 8.497-8.497 8.498 3.807 8.498 8.497zm-6.711-4.845c.141-.108.3-.157.456-.157.389 0 .755.306.755.749v8.501c0 .445-.367.75-.755.75-.157 0-.316-.05-.457-.159-1.554-1.203-4.199-3.252-5.498-4.258-.184-.142-.29-.36-.29-.592 0-.23.107-.449.291-.591zm-.289 7.564v-5.446l-3.522 2.718z" fill-rule="nonzero"/></svg>') center no-repeat;
37
+ background-size: $size;
38
+ }
39
+
40
+ @mixin right($color, $size) {
41
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" ><path d="m2.009 12.002c0-5.517 4.48-9.997 9.998-9.997s9.998 4.48 9.998 9.997c0 5.518-4.48 9.998-9.998 9.998s-9.998-4.48-9.998-9.998zm1.5 0c0 4.69 3.808 8.498 8.498 8.498s8.498-3.808 8.498-8.498-3.808-8.497-8.498-8.497-8.498 3.807-8.498 8.497zm6.711-4.845c-.141-.108-.3-.157-.456-.157-.389 0-.755.306-.755.749v8.501c0 .445.367.75.755.75.157 0 .316-.05.457-.159 1.554-1.203 4.199-3.252 5.498-4.258.184-.142.29-.36.29-.592 0-.23-.107-.449-.291-.591zm.289 7.564v-5.446l3.523 2.718z" fill-rule="nonzero"/></svg>') center no-repeat;
42
+ background-size: $size;
43
+ }
44
+
45
+ @mixin document($color, $size) {
46
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}" fill-rule="evenodd" clip-rule="evenodd"><path d="M22 24h-20v-24h14l6 6v18zm-7-23h-12v22h18v-16h-6v-6zm3 15v1h-12v-1h12zm0-3v1h-12v-1h12zm0-3v1h-12v-1h12zm-2-4h4.586l-4.586-4.586v4.586z"/></svg>') center no-repeat;
47
+ background-size: $size;
48
+ }
49
+
50
+ @mixin file($color, $size) {
51
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}" fill-rule="evenodd" clip-rule="evenodd"><path d="M22 24h-20v-24h14l6 6v18zm-7-23h-12v22h18v-16h-6v-6zm1 5h4.586l-4.586-4.586v4.586z"/></svg>') center no-repeat;
52
+ background-size: $size;
53
+ }
54
+
55
+ @mixin link($color, $size) {
56
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}"><path d="M6.188 8.719c.439-.439.926-.801 1.444-1.087 2.887-1.591 6.589-.745 8.445 2.069l-2.246 2.245c-.644-1.469-2.243-2.305-3.834-1.949-.599.134-1.168.433-1.633.898l-4.304 4.306c-1.307 1.307-1.307 3.433 0 4.74 1.307 1.307 3.433 1.307 4.74 0l1.327-1.327c1.207.479 2.501.67 3.779.575l-2.929 2.929c-2.511 2.511-6.582 2.511-9.093 0s-2.511-6.582 0-9.093l4.304-4.306zm6.836-6.836l-2.929 2.929c1.277-.096 2.572.096 3.779.574l1.326-1.326c1.307-1.307 3.433-1.307 4.74 0 1.307 1.307 1.307 3.433 0 4.74l-4.305 4.305c-1.311 1.311-3.44 1.3-4.74 0-.303-.303-.564-.68-.727-1.051l-2.246 2.245c.236.358.481.667.796.982.812.812 1.846 1.417 3.036 1.704 1.542.371 3.194.166 4.613-.617.518-.286 1.005-.648 1.444-1.087l4.304-4.305c2.512-2.511 2.512-6.582.001-9.093-2.511-2.51-6.581-2.51-9.092 0z"/></svg>') center no-repeat;
57
+ background-size: $size;
58
+ }
59
+
60
+ @mixin copy($color, $size) {
61
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}"><path d="M22 6v16h-16v-16h16zm2-2h-20v20h20v-20zm-24 17v-21h21v2h-19v19h-2z"/></svg>') center no-repeat;
62
+ background-size: $size;
63
+ }
64
+
65
+ @mixin menu($color, $size) {
66
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#{$color}" clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><path d="m21 4c0-.478-.379-1-1-1h-16c-.62 0-1 .519-1 1v16c0 .621.52 1 1 1h16c.478 0 1-.379 1-1zm-16.5.5h15v15h-15zm12.5 10.75c0-.414-.336-.75-.75-.75h-8.5c-.414 0-.75.336-.75.75s.336.75.75.75h8.5c.414 0 .75-.336.75-.75zm0-3.248c0-.414-.336-.75-.75-.75h-8.5c-.414 0-.75.336-.75.75s.336.75.75.75h8.5c.414 0 .75-.336.75-.75zm0-3.252c0-.414-.336-.75-.75-.75h-8.5c-.414 0-.75.336-.75.75s.336.75.75.75h8.5c.414 0 .75-.336.75-.75z" fill-rule="nonzero"/></svg>') center no-repeat;
67
+ background-size: $size;
68
+ }
69
+
70
+ @mixin radius-box($radius) {
71
+ @include border(border);
72
+ padding: 0 1em;
73
+ border-radius: $radius;
74
+ }
75
+
76
+ @mixin label($color, $backgroundColor, $radius) {
77
+ color: $color;
78
+ background-color: $backgroundColor;
79
+ border-radius: $radius;
80
+ padding: 0.2em 0.5em;
81
+ margin-inline: 0.2em;
82
+ }
83
+
84
+ %center-middle {
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ }
89
+
90
+ %left-middle {
91
+ @extend %center-middle;
92
+ justify-content: left;
93
+ }
94
+
95
+ %right-middle {
96
+ @extend %center-middle;
97
+ justify-content: right;
98
+ }
99
+
100
+ %box {
101
+ width: 100%;
102
+ display: block;
103
+ margin-inline: auto;
104
+ }
105
+
106
+ %shadow {
107
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
108
+ }
109
+
110
+ %bordered-box {
111
+ @extend %box;
112
+ @extend %shadow;
113
+ @include border(border);
114
+ border-radius: 0.5em;
115
+ }
116
+
117
+ %clicked-box {
118
+ @extend %bordered-box;
119
+
120
+ &:hover {
121
+ border-color: dimgray;
122
+ }
123
+ }
124
+
125
+ %linked-box {
126
+ @extend %box;
127
+
128
+ & > a {
129
+ float: left;
130
+ width: calc(100% / 2);
131
+ }
132
+
133
+ & > a:first-child:nth-last-child(1) {
134
+ width: 100%;
135
+ }
136
+ }
137
+
138
+ %item-width {
139
+ width: calc(100% - 2em);
140
+ }
141
+
142
+ %title-fixed {
143
+ @include border(border);
144
+ background-color: lightgray;
145
+ border-radius: 0.5em 0.5em 0 0;
146
+ font-weight: bold;
147
+ padding: 0.5em 1em;
148
+ border-collapse: collapse;
149
+ }
150
+
151
+ %title-s-fixed {
152
+ @extend %title-fixed;
153
+ padding: 0 1em;
154
+ }
155
+
156
+ %content-fixed {
157
+ @extend %shadow;
158
+ @include border(border);
159
+ border-radius: 0 0 0.5em 0.5em;
160
+ border-collapse: collapse;
161
+ }
162
+
163
+ %item-content-fixed {
164
+ @extend %content-fixed;
165
+ @extend %item-width;
166
+ }
167
+
168
+ %grid-row {
169
+ display: grid;
170
+ grid-template-columns: 100%;
171
+ }
172
+
173
+ %gap-grid-row {
174
+ @extend %grid-row;
175
+ row-gap: 1em;
176
+ }
177
+
178
+ html {
179
+ }
180
+
181
+ body {
182
+ width: 100vw;
183
+ height: 100vh;
184
+ min-height: 100vh;
185
+ margin: 0;
186
+ overflow: hidden;
187
+ background-color: white;
188
+ display: flex;
189
+ flex-wrap: wrap;
190
+
191
+ ::-webkit-scrollbar {
192
+ background-color: white;
193
+ width: 0.8em;
194
+ }
195
+
196
+ ::-webkit-scrollbar-thumb {
197
+ background-color: darkgray;
198
+ }
199
+
200
+ ::-webkit-scrollbar-track {
201
+ background: white;
202
+ }
203
+
204
+ * {
205
+ font-family: "Noto Sans KR", sans-serif;
206
+ box-sizing: border-box;
207
+ font-size: 1rem;
208
+ line-height: 2rem;
209
+ margin-block: 0;
210
+ }
211
+
212
+ h1, h2, h3, h4, h5, h6 {
213
+ @extend %left-middle;
214
+ font-weight: bold;
215
+ margin-inline: 0;
216
+
217
+ &:not(h1):hover {
218
+ cursor: pointer;
219
+
220
+ & > a.go-hash {
221
+ visibility: visible;
222
+ }
223
+
224
+ & > div.copy-link {
225
+ visibility: visible;
226
+ }
227
+ }
228
+
229
+ %header-link {
230
+ width: 1.5em;
231
+ height: 1.5em;
232
+ visibility: hidden;
233
+ }
234
+
235
+ & > a.go-hash {
236
+ @include link("darkgray", 50%);
237
+ @extend %header-link;
238
+
239
+ &:hover {
240
+ @include link("lightblue", 50%);
241
+ }
242
+ }
243
+
244
+ & > div.copy-link {
245
+ @include copy("darkgray", 50%);
246
+ @extend %header-link;
247
+
248
+ &:hover {
249
+ @include copy("lightblue", 50%);
250
+ }
251
+ }
252
+ }
253
+
254
+ h1, h1 > * {
255
+ font-weight: 900;
256
+ font-size: 3rem;
257
+ line-height: 3rem;
258
+ }
259
+
260
+ h2 {
261
+ @include border(border-top);
262
+
263
+ &, * {
264
+ font-weight: 900;
265
+ font-size: 2rem;
266
+ line-height: 3rem;
267
+ padding-top: 1em;
268
+ }
269
+ }
270
+
271
+ h3, h3 > * {
272
+ font-weight: 900;
273
+ font-size: 1.6rem;
274
+ line-height: 3rem;
275
+ }
276
+
277
+ h4 {
278
+ @include border(border-bottom);
279
+
280
+ &, * {
281
+ font-size: 1.4rem;
282
+ line-height: 2.8rem;
283
+ }
284
+ }
285
+
286
+ h5, h5 > * {
287
+ font-size: 1.2rem;
288
+ line-height: 2.4rem;
289
+ }
290
+
291
+ h6 {
292
+ color: #666666;
293
+
294
+ &, * {
295
+ font-size: 1.2rem;
296
+ line-height: 2.4rem;
297
+ }
298
+ }
299
+
300
+ .bold {
301
+ font-weight: bold;
302
+ }
303
+
304
+ .gray {
305
+ color: darkgray;
306
+ }
307
+
308
+ .large {
309
+ font-weight: bold;
310
+ font-size: 1.2rem;
311
+ line-height: 2.4rem;
312
+ }
313
+
314
+ .small {
315
+ font-size: 0.8rem;
316
+ line-height: 1.6rem;
317
+ color: darkgray;
318
+ }
319
+
320
+ .x-small {
321
+ font-size: 0.6rem;
322
+ line-height: 1.2rem;
323
+ color: lightgray;
324
+ }
325
+
326
+ .label {
327
+ @include label(black, lightgray, 0.5em);
328
+ }
329
+
330
+ p {
331
+ margin-inline: 0;
332
+ }
333
+
334
+ div.highlighter-rouge {
335
+ * {
336
+ font-size: 0.8rem;
337
+ line-height: 1.4rem;
338
+ }
339
+
340
+ td.rouge-gutter.gl {
341
+ @include border(border-right);
342
+ padding-inline-end: 0.6rem;
343
+ }
344
+ }
345
+
346
+ code.highlighter-rouge {
347
+ @include label(black, lightgray, 0.5em);
348
+ }
349
+
350
+ img {
351
+ display: block;
352
+ width: 90%;
353
+ max-width: fit-content;
354
+ height: auto;
355
+ margin-inline: auto;
356
+
357
+ &:not(.img-inline) {
358
+ margin-block: 2em;
359
+ }
360
+
361
+ &:not(.img-inline):hover {
362
+ cursor: pointer;
363
+ }
364
+
365
+ &.img-inline {
366
+ width: fit-content;
367
+ display: inline;
368
+ vertical-align: middle;
369
+ margin: 0;
370
+ }
371
+ }
372
+
373
+ & > header {
374
+ @extend %left-middle;
375
+ @extend %shadow;
376
+
377
+ flex: 0 0 100vw;
378
+ width: 100%;
379
+ height: calc(5em - 2px);
380
+ margin-bottom: 2px;
381
+
382
+ @include border(border-bottom);
383
+
384
+ & .header.menu {
385
+ width: 100px;
386
+
387
+ & > div > div.menu-icon {
388
+ @include menu("darkgray", 100%);
389
+ width: 3em;
390
+ height: 3em;
391
+
392
+ &:hover {
393
+ cursor: pointer;
394
+ @include menu("black", 100%);
395
+ }
396
+ }
397
+ }
398
+
399
+ & .header.title {
400
+ & > div > a.link {
401
+ @extend %center-middle;
402
+
403
+ font-size: large;
404
+ font-weight: bold;
405
+ color: black;
406
+ text-decoration: none;
407
+
408
+ & > img {
409
+ max-height: 2em;
410
+ margin-inline-end: 0.5em;
411
+ }
412
+ }
413
+ }
414
+
415
+ & .header.search {
416
+ width: 200px;
417
+ margin-left: auto;
418
+
419
+ & > div > div.search-bar {
420
+ @include radius-box(1em);
421
+ @extend %center-middle;
422
+
423
+ width: 100px;
424
+ height: 2em;
425
+ padding: 0 1em;
426
+
427
+ &:hover {
428
+ cursor: pointer;
429
+ background-color: whitesmoke;
430
+ }
431
+
432
+ & > div.search-icon {
433
+ @include magnifier("darkgray", 1em);
434
+
435
+ width: 1em;
436
+ height: 1em;
437
+ margin-inline-end: 0.5em;
438
+ }
439
+ }
440
+ }
441
+
442
+ & .header.search-s {
443
+ width: 100px;
444
+
445
+ & > div > div.search-icon {
446
+ @include magnifier("darkgray", 80%);
447
+ width: 3em;
448
+ height: 3em;
449
+
450
+ &:hover {
451
+ cursor: pointer;
452
+ @include magnifier("black", 80%);
453
+ }
454
+ }
455
+ }
456
+
457
+ & > .header {
458
+ & > * {
459
+ @extend %center-middle;
460
+ width: 100%;
461
+ }
462
+ }
463
+ }
464
+
465
+ & > nav {
466
+ flex: 0 0 300px;
467
+
468
+ height: calc(100% - 5em);
469
+ overflow-y: scroll;
470
+ overflow-x: hidden;
471
+ padding-block-start: 1em;
472
+ @include border(border-right);
473
+
474
+ & > div.nav-container {
475
+ width: 100%;
476
+ height: 100%;
477
+ margin-inline-end: 0.8em;
478
+
479
+ ul {
480
+ display: block;
481
+ list-style-type: none;
482
+ margin-block: 0;
483
+ margin-inline: 0;
484
+ padding-inline-start: 0;
485
+ }
486
+
487
+ li {
488
+ display: block;
489
+ padding-inline-start: 1em;
490
+
491
+ & > div.nav-link {
492
+ display: flex;
493
+ padding-block-start: 0.2em;
494
+ padding-block-end: 0.5em;
495
+ padding-inline-start: 0.3em;
496
+ color: black;
497
+
498
+ &:hover {
499
+ background-color: gray;
500
+ color: white;
501
+ }
502
+
503
+ & > a.nav-href {
504
+ flex: auto;
505
+ width: 90%;
506
+ color: inherit;
507
+ text-decoration: none;
508
+ }
509
+
510
+ %span-nav {
511
+ width: 1em;
512
+ flex: auto;
513
+ display: none;
514
+ color: inherit;
515
+
516
+ &:hover {
517
+ cursor: pointer;
518
+ }
519
+ }
520
+
521
+ & > span.nav-unfold {
522
+ @include unfold("black", 50%);
523
+ @extend %span-nav;
524
+ }
525
+
526
+ & > span.nav-fold {
527
+ @include fold("black", 50%);
528
+ @extend %span-nav;
529
+ }
530
+
531
+ &.has-child {
532
+ & > span.nav-unfold {
533
+ display: none;
534
+ }
535
+
536
+ & > span.nav-fold {
537
+ display: block;
538
+ }
539
+
540
+ & + ul.nav-menu {
541
+ display: block;
542
+ }
543
+
544
+ &.fold {
545
+ & > span.nav-unfold {
546
+ display: block;
547
+ }
548
+
549
+ & > span.nav-fold {
550
+ display: none;
551
+ }
552
+
553
+ + ul.nav-menu {
554
+ display: none;
555
+ }
556
+ }
557
+ }
558
+ }
559
+
560
+ &.active {
561
+ & > div.nav-link {
562
+ background-color: lightgray;
563
+ @include border(border);
564
+ border-inline: none;
565
+ color: blue;
566
+ }
567
+ }
568
+ }
569
+ }
570
+ }
571
+
572
+ & > main {
573
+ flex: 0 0 calc(100vw - 300px);
574
+
575
+ height: calc(100% - 5em);
576
+ overflow: auto;
577
+
578
+ a {
579
+ color: royalblue;
580
+ text-decoration-line: none;
581
+ font-weight: bold;
582
+
583
+ &:hover {
584
+ text-decoration-line: underline;
585
+ }
586
+ }
587
+
588
+ div.block {
589
+ @extend %clicked-box;
590
+
591
+ height: fit-content;
592
+
593
+ &.pagination {
594
+ height: 6rem;
595
+ }
596
+
597
+ & > .block-body {
598
+ @extend %left-middle;
599
+ width: 100%;
600
+ height: 100%;
601
+ color: black;
602
+ text-decoration: none;
603
+
604
+ & > div.thumb {
605
+ width: 4em;
606
+ height: 4em;
607
+
608
+ &.prev {
609
+ @include left("darkgray", 80%);
610
+ }
611
+
612
+ &.next {
613
+ @include right("darkgray", 80%);
614
+ }
615
+
616
+ &.document {
617
+ @include document("darkgray", 70%);
618
+ }
619
+
620
+ &.file {
621
+ @include file("darkgray", 70%);
622
+ }
623
+
624
+ &.link {
625
+ @include link("darkgray", 60%);
626
+ }
627
+ }
628
+
629
+ & > div.content {
630
+ @extend %grid-row;
631
+ width: calc(100% - 4em);
632
+ height: fit-content;
633
+ margin-inline: 1em;
634
+ padding-block: 1em;
635
+
636
+ & > * {
637
+ @extend %left-middle;
638
+ align-items: center;
639
+ text-overflow: ellipsis;
640
+ overflow: hidden;
641
+ white-space: nowrap;
642
+ min-height: 1em;
643
+ }
644
+
645
+ &.right > * {
646
+ @extend %right-middle;
647
+ }
648
+ }
649
+ }
650
+ }
651
+
652
+ div.block-row {
653
+ @extend %box;
654
+ display: flex;
655
+ flex-wrap: wrap;
656
+ margin-block-start: 1em;
657
+
658
+ &.pagination {
659
+ padding-block-start: 2em;
660
+ @include border(border-top);
661
+ }
662
+
663
+ & > div {
664
+ @extend %center-middle;
665
+ }
666
+ }
667
+
668
+ & > div.main-container {
669
+ padding: 1em;
670
+
671
+ & > div.header {
672
+ padding-block-end: 2em;
673
+ margin-block-end: 0;
674
+ @include border(border-block-end);
675
+
676
+ & > div.description {
677
+ margin-inline-start: 1em;
678
+ color: darkgray;
679
+ }
680
+ }
681
+
682
+ & > div.content {
683
+ width: 100%;
684
+ padding-block: 1em;
685
+ @extend %gap-grid-row;
686
+
687
+ & > :first-child {
688
+ border-top: none;
689
+ }
690
+
691
+ blockquote {
692
+ height: fit-content;
693
+ margin-inline-start: 2.5em;
694
+ padding-inline-start: 1em;
695
+ border-left: 0.2em solid lightgray;
696
+ vertical-align: middle;
697
+ align-items: center;
698
+ }
699
+
700
+ table:not(.rouge-table) {
701
+ display: table;
702
+ @extend %item-width;
703
+ margin: auto;
704
+ border-collapse: collapse;
705
+ color: black;
706
+ line-height: 1.7em;
707
+
708
+ tr {
709
+ @include border(border-block);
710
+ }
711
+
712
+ th, td {
713
+ height: 2em;
714
+ padding: 0.5em;
715
+ }
716
+
717
+ thead {
718
+ & > tr {
719
+ background-color: #cccccc;
720
+ }
721
+ }
722
+
723
+ img {
724
+ width: 100%;
725
+ display: inline;
726
+ vertical-align: middle;
727
+ margin: 0;
728
+ }
729
+ }
730
+
731
+ .media {
732
+ @extend %box;
733
+ width: 90%;
734
+ }
735
+
736
+ & > div.highlighter-rouge {
737
+ @extend %bordered-box;
738
+ @extend %item-width;
739
+
740
+ overflow-x: auto;
741
+ }
742
+
743
+ div.alerts {
744
+ @extend %bordered-box;
745
+ @extend %item-width;
746
+
747
+ display: flex;
748
+
749
+ & > div.style {
750
+ width: 0.4em;
751
+ border-radius: 0.5em 0 0 0.5em;
752
+ }
753
+
754
+ &.info > div.style {
755
+ background-color: royalblue;
756
+ }
757
+
758
+ &.warning > div.style {
759
+ background-color: darkorange;
760
+ }
761
+
762
+ &.danger > div.style {
763
+ background-color: darkred;
764
+ }
765
+
766
+ &.success > div.style {
767
+ background-color: green;
768
+ }
769
+
770
+ & > div.body {
771
+ @extend %gap-grid-row;
772
+ width: calc(100% - 0.4em);
773
+ height: fit-content;
774
+ margin: 0.5em 1em;
775
+
776
+ img {
777
+ width: auto;
778
+ max-height: 6em;
779
+ }
780
+ }
781
+ }
782
+
783
+ div.code {
784
+ @extend %box;
785
+ @extend %item-width;
786
+
787
+ & > div.header {
788
+ position: relative;
789
+ height: fit-content;
790
+
791
+ & > div.title {
792
+ @extend %title-s-fixed;
793
+
794
+ &:empty {
795
+ display: none;
796
+ }
797
+ }
798
+
799
+ & > div.copy {
800
+ @include copy("darkgray", 65%);
801
+
802
+ width: 1.4rem;
803
+ height: 1.4rem;
804
+ position: absolute;
805
+ bottom: -1.6rem;
806
+ right: 0.2rem;
807
+
808
+ &:hover {
809
+ @include copy("lightblue", 65%);
810
+
811
+ cursor: pointer;
812
+ }
813
+ }
814
+
815
+ & > div.copy-text {
816
+ position: absolute;
817
+ bottom: -1.6rem;
818
+ right: 1.8rem;
819
+ font-size: 0.8rem;
820
+ line-height: 1.4rem;
821
+ color: cornflowerblue;
822
+ visibility: hidden;
823
+
824
+ &.show {
825
+ visibility: visible;
826
+ }
827
+ }
828
+ }
829
+
830
+ & > div.body {
831
+ @extend %content-fixed;
832
+ overflow: auto;
833
+ border-radius: 0;
834
+ }
835
+ }
836
+
837
+ div.tabs {
838
+ @extend %box;
839
+ @extend %item-width;
840
+
841
+ & > ul {
842
+ display: flex;
843
+ column-gap: 0.5em;
844
+ padding: 0;
845
+ margin: 0 0 -1px;
846
+
847
+ & > li.tab-title {
848
+ @extend %title-fixed;
849
+ display: block;
850
+ padding: 0 2em;
851
+ border-block-end: none;
852
+
853
+ &.active {
854
+ background-color: white;
855
+ }
856
+
857
+ &:hover {
858
+ cursor: pointer;
859
+ }
860
+ }
861
+ }
862
+
863
+ & > div.tab-content {
864
+ @include border(border);
865
+ @extend %shadow;
866
+
867
+ border-radius: 0 0.5em 0.5em 0.5em;
868
+ padding: 1em 0.5em;
869
+ display: none;
870
+
871
+ &.active {
872
+ display: block;
873
+ }
874
+
875
+ & > div.content {
876
+ @extend %gap-grid-row;
877
+
878
+ & > .code {
879
+ width: 100%;
880
+ }
881
+ }
882
+ }
883
+ }
884
+
885
+ div.api {
886
+ @extend %box;
887
+ @extend %grid-row;
888
+ margin-block-start: 1em;
889
+
890
+ & > div.header {
891
+ & > div.title {
892
+ @extend %title-fixed;
893
+ border-radius: 0;
894
+ }
895
+ }
896
+
897
+ & > div.description {
898
+ @extend %gap-grid-row;
899
+ @include border(border-inline);
900
+
901
+ & > div.description-area {
902
+ @extend %gap-grid-row;
903
+ @extend %item-width;
904
+ margin: 1em auto;
905
+
906
+ & > div.api-description {
907
+ display: flex;
908
+
909
+ & > div.method {
910
+ @extend %center-middle;
911
+ width: 10%;
912
+
913
+ & > label {
914
+ @include label(white, royalblue, 0.5em);
915
+ padding-inline: 1em;
916
+ }
917
+ }
918
+
919
+ & > div.url {
920
+ @extend %left-middle;
921
+ @include border(border-left);
922
+ display: flex;
923
+ padding-inline-start: 1em;
924
+ }
925
+ }
926
+
927
+ & > div.content {
928
+ @include border(border-top);
929
+ }
930
+ }
931
+ }
932
+
933
+ & > div.content {
934
+ @extend %gap-grid-row;
935
+ @include border(border-inline);
936
+ @include border(border-bottom);
937
+ @extend %shadow;
938
+ border-radius: 0;
939
+ padding-block-end: 1em;
940
+
941
+ & > div.request-categories {
942
+ @extend %item-width;
943
+ @extend %gap-grid-row;
944
+ margin-inline: auto;
945
+
946
+ & > div.content {
947
+ @extend %gap-grid-row;
948
+
949
+ & > div.category {
950
+ @extend %grid-row;
951
+
952
+ & > div.title {
953
+ @extend %center-middle;
954
+ @extend %title-s-fixed;
955
+ width: 150px;
956
+ }
957
+
958
+ & > div.parameters {
959
+ @extend %content-fixed;
960
+
961
+ border-radius: 0 0.5em 0.5em 0.5em;
962
+
963
+ & > div.parameter {
964
+ @include border(border-bottom);
965
+ display: flex;
966
+ padding: 0.5em;
967
+ margin-inline: 1em;
968
+
969
+ &:last-child {
970
+ border-bottom: none;
971
+ }
972
+
973
+ & > div.name {
974
+ flex: auto;
975
+ width: 15%;
976
+ }
977
+
978
+ & > div.type {
979
+ flex: auto;
980
+ width: 15%;
981
+ }
982
+
983
+ & > div.description {
984
+ flex: auto;
985
+ width: 70%;
986
+ }
987
+ }
988
+ }
989
+ }
990
+ }
991
+ }
992
+
993
+ & > div.responses {
994
+ @extend %item-width;
995
+ @extend %gap-grid-row;
996
+ margin-inline: auto;
997
+
998
+ & > div.content {
999
+ @extend %gap-grid-row;
1000
+
1001
+ & > div.response {
1002
+ @extend %grid-row;
1003
+
1004
+ & > div.header {
1005
+ @extend %title-fixed;
1006
+ border-block-end: none;
1007
+ background-color: white;
1008
+ display: flex;
1009
+
1010
+ & > div.status {
1011
+ width: 10%;
1012
+
1013
+ & > label {
1014
+ @include label(white, slategray, 0.5em);
1015
+ padding-inline: 1em;
1016
+ }
1017
+ }
1018
+
1019
+ & > div.description {
1020
+ @include border(border-left);
1021
+ padding-inline-start: 1em;
1022
+ }
1023
+ }
1024
+
1025
+ & > div.content {
1026
+ @extend %gap-grid-row;
1027
+ @extend %content-fixed;
1028
+ padding-block: 1em;
1029
+ }
1030
+ }
1031
+ }
1032
+ }
1033
+ }
1034
+ }
1035
+ }
1036
+ }
1037
+ }
1038
+
1039
+ & > div.modal {
1040
+ position: absolute;
1041
+ left: 0;
1042
+ top: 0;
1043
+ width: 100vw;
1044
+ height: 100vh;
1045
+ background-color: rgba(0, 0, 0, 0.8);
1046
+ z-index: 11000;
1047
+ visibility: visible;
1048
+
1049
+ &.hide {
1050
+ visibility: hidden;
1051
+ }
1052
+
1053
+ & > div.modal-wrapper {
1054
+ @extend %center-middle;
1055
+ min-height: 100vh;
1056
+
1057
+ &:hover {
1058
+ cursor: pointer;
1059
+ }
1060
+
1061
+ & > img.modal-image {
1062
+ width: fit-content;
1063
+ height: fit-content;
1064
+ max-width: 100vw;
1065
+ max-height: 100vh;
1066
+ }
1067
+
1068
+ & > div.modal-search {
1069
+ @extend %bordered-box;
1070
+ @extend %grid-row;
1071
+ grid-template-rows: calc(1em + 3rem) calc(100% - 1em - 3rem);
1072
+ width: 80%;
1073
+ height: calc(100vh * 2 / 3);
1074
+ cursor: default;
1075
+ background-color: slategray;
1076
+ border-color: slategray;
1077
+
1078
+ & > div.search-area {
1079
+ width: 100%;
1080
+ height: 100%;
1081
+ padding: 0.5em;
1082
+
1083
+ & > input {
1084
+ @extend %bordered-box;
1085
+ background-color: white;
1086
+ width: 100%;
1087
+ border: none;
1088
+
1089
+ font-size: 1rem;
1090
+ line-height: 2rem;
1091
+ display: flex;
1092
+ align-items: center;
1093
+ height: 3rem;
1094
+ padding-inline-start: 1em;
1095
+
1096
+ &::placeholder {
1097
+ color: gray;
1098
+ }
1099
+ }
1100
+ }
1101
+
1102
+ & > div.search-result-area {
1103
+ width: 100%;
1104
+ height: 100%;
1105
+ padding: 0.5em;
1106
+ padding-block-start: 0;
1107
+
1108
+ & > div.search-container {
1109
+ @extend %bordered-box;
1110
+ width: 100%;
1111
+ height: 100%;
1112
+ background-color: white;
1113
+ border-color: white;
1114
+ padding-inline: 0.5em;
1115
+
1116
+ & > div.search-contents {
1117
+ height: 100%;
1118
+ overflow: auto;
1119
+
1120
+ & > div.search-content {
1121
+ @include border(border-bottom);
1122
+
1123
+ &:hover {
1124
+ background-color: whitesmoke;
1125
+ }
1126
+
1127
+ & > a {
1128
+ height: 100%;
1129
+ text-decoration: none;
1130
+ color: black;
1131
+
1132
+ code {
1133
+ color: royalblue;
1134
+ text-decoration: underline;
1135
+ }
1136
+
1137
+ & > div.content {
1138
+ overflow: auto;
1139
+
1140
+ & > p {
1141
+ line-height: 1.3rem;
1142
+ margin: 0;
1143
+ margin-block: 0.5em;
1144
+ margin-inline: 0;
1145
+ color: slategray;
1146
+ }
1147
+ }
1148
+ }
1149
+ }
1150
+ }
1151
+ }
1152
+ }
1153
+ }
1154
+ }
1155
+ }
1156
+
1157
+ @include mobile {
1158
+ header {
1159
+ & > div.menu {
1160
+ display: block;
1161
+ }
1162
+
1163
+ & > div.header {
1164
+ width: calc(100vw - 200px);
1165
+ }
1166
+
1167
+ & > div.search {
1168
+ display: none;
1169
+ }
1170
+
1171
+ & > div.search-s {
1172
+ display: block;
1173
+ }
1174
+ }
1175
+
1176
+ main {
1177
+ flex: 0 0 100vw;
1178
+ display: block;
1179
+
1180
+ &.hide {
1181
+ display: none;
1182
+ }
1183
+
1184
+ div.block-row {
1185
+ row-gap: 0.5em;
1186
+ column-gap: 0;
1187
+
1188
+ & > div {
1189
+ flex: 0 0 100%;
1190
+ }
1191
+ }
1192
+ }
1193
+
1194
+ nav {
1195
+ flex: 0 0 100vw;
1196
+ display: none;
1197
+
1198
+ &.show {
1199
+ display: block;
1200
+ }
1201
+ }
1202
+ }
1203
+
1204
+ @include desktop {
1205
+ header {
1206
+ & > div.menu {
1207
+ display: none;
1208
+ }
1209
+
1210
+ & > div.header {
1211
+ width: 300px;
1212
+ }
1213
+
1214
+ & > div.search {
1215
+ display: block;
1216
+ }
1217
+
1218
+ & > div.search-s {
1219
+ display: none;
1220
+ }
1221
+ }
1222
+
1223
+ main {
1224
+ flex: 0 0 calc(100vw - 300px);
1225
+ display: block;
1226
+
1227
+ &.hide {
1228
+ display: block;
1229
+ }
1230
+
1231
+ div.block-row {
1232
+ row-gap: 0.5em;
1233
+ column-gap: 1em;
1234
+
1235
+ & > div {
1236
+ flex: 0 0 calc(50% - 0.5em);
1237
+ }
1238
+
1239
+ & > div:first-child:nth-last-child(1) {
1240
+ flex: 0 0 100%;
1241
+ }
1242
+ }
1243
+ }
1244
+
1245
+ nav {
1246
+ flex: 0 0 300px;
1247
+ display: block;
1248
+
1249
+ &.show {
1250
+ display: block;
1251
+ }
1252
+ }
1253
+ }
1254
+ }