Compare commits
997 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9e668775db | ||
![]() |
cefd152430 | ||
![]() |
48d2002d1c | ||
![]() |
259f0f321c | ||
![]() |
d24cb8ccb3 | ||
![]() |
96226e2d8a | ||
![]() |
27857b7fd5 | ||
![]() |
9a67f7bd4f | ||
![]() |
e15cd08bea | ||
![]() |
dd817bc5ce | ||
![]() |
4b4c9d1711 | ||
![]() |
38e68ac757 | ||
![]() |
c14d3868bb | ||
![]() |
067c244770 | ||
![]() |
d76d275ddb | ||
![]() |
1803759b6b | ||
![]() |
2833cfc15a | ||
![]() |
0a174def75 | ||
![]() |
7a7d3a93f9 | ||
![]() |
c1afe32344 | ||
![]() |
749dab16ca | ||
![]() |
264012eefb | ||
![]() |
fda4efa72b | ||
![]() |
6a0bdf0f61 | ||
![]() |
1a09879bea | ||
![]() |
81cc8fe02f | ||
![]() |
ef3d79f875 | ||
![]() |
c66bb79ac5 | ||
![]() |
c5c5695541 | ||
![]() |
a3343c29dc | ||
![]() |
50a697c1fb | ||
![]() |
6cf7a410f4 | ||
![]() |
bdade82dea | ||
![]() |
38aac9507e | ||
![]() |
0eec1da639 | ||
![]() |
1e8bc5f11d | ||
![]() |
56f467e02c | ||
![]() |
83049db4bc | ||
![]() |
78599c8f76 | ||
![]() |
fc6e916fca | ||
![]() |
a0febc31ee | ||
![]() |
800c82dba5 | ||
![]() |
8b59f3b6f7 | ||
![]() |
9795e04a9b | ||
![]() |
6381cb3519 | ||
![]() |
01927f22b6 | ||
![]() |
da75210771 | ||
![]() |
b47bf99744 | ||
![]() |
2a4ba34c51 | ||
![]() |
fc07cec664 | ||
![]() |
538a1d2de3 | ||
![]() |
6dda374b73 | ||
![]() |
e53a333ebf | ||
![]() |
5ed8c28bee | ||
![]() |
fa47b7d93e | ||
![]() |
f1693c8cf0 | ||
![]() |
740fd91038 | ||
![]() |
9a0dba5ee4 | ||
![]() |
e4b7b252b3 | ||
![]() |
569562cf24 | ||
![]() |
60b53f2fa9 | ||
![]() |
3e5f23cf89 | ||
![]() |
c7b16cf2f4 | ||
![]() |
191d6e3d94 | ||
![]() |
9dd7bf64e1 | ||
![]() |
580675f8b1 | ||
![]() |
b2b43d550b | ||
![]() |
f79317b317 | ||
![]() |
3d7bcc4356 | ||
![]() |
a7256ff270 | ||
![]() |
8ffc6dbd59 | ||
![]() |
5bb0cf07e6 | ||
![]() |
37e9e70c55 | ||
![]() |
b4ddc8c58d | ||
![]() |
a7c4be508d | ||
![]() |
0988e07106 | ||
![]() |
7dcbfe8373 | ||
![]() |
fdebbccfa1 | ||
![]() |
7d1cd93e87 | ||
![]() |
3a056829c5 | ||
![]() |
0ee0febc15 | ||
![]() |
ac081a3084 | ||
![]() |
9d07b5da5a | ||
![]() |
67f1708691 | ||
![]() |
c5e5ec0f21 | ||
![]() |
d461333738 | ||
![]() |
32c422a2a8 | ||
![]() |
b66660b557 | ||
![]() |
be95c3cd68 | ||
![]() |
74aa32e595 | ||
![]() |
4c305b38a5 | ||
![]() |
63c609c1d3 | ||
![]() |
d7424d26eb | ||
![]() |
1f66740c19 | ||
![]() |
cb032b4fb8 | ||
![]() |
3889382e19 | ||
![]() |
86addfd6dd | ||
![]() |
9110fb5ab4 | ||
![]() |
fad4cdbfd2 | ||
![]() |
c403d422d9 | ||
![]() |
0ecfa72864 | ||
![]() |
62af498414 | ||
![]() |
ee37599ded | ||
![]() |
9a4c7c7776 | ||
![]() |
c05eeb015c | ||
![]() |
d9f898a2e1 | ||
![]() |
36f31a57ae | ||
![]() |
17b3bbaf80 | ||
![]() |
26bc4ebb00 | ||
![]() |
d13d80af2f | ||
![]() |
64abaf8d1e | ||
![]() |
ffc9c47b45 | ||
![]() |
092630b030 | ||
![]() |
2ec60a8b71 | ||
![]() |
9af871fee7 | ||
![]() |
883ab3f7a0 | ||
![]() |
d6a49ccb90 | ||
![]() |
fdc58d52e9 | ||
![]() |
97a829dfff | ||
![]() |
c7fbc548bb | ||
![]() |
794510861c | ||
![]() |
da7c70c444 | ||
![]() |
1571decb8e | ||
![]() |
835d3e615e | ||
![]() |
393aea46e1 | ||
![]() |
f3347e871e | ||
![]() |
9d751abbf0 | ||
![]() |
ccfc674019 | ||
![]() |
45aa488e37 | ||
![]() |
5d96fdb3db | ||
![]() |
c2faf0d4f6 | ||
![]() |
1e8d94e1fb | ||
![]() |
3a6edbf2a2 | ||
![]() |
a52154b531 | ||
![]() |
a27d25737f | ||
![]() |
e810df9177 | ||
![]() |
d4dc5d8693 | ||
![]() |
878258796b | ||
![]() |
0397b66d05 | ||
![]() |
5ef32bed6d | ||
![]() |
bbdd8b6c62 | ||
![]() |
67a1d58178 | ||
![]() |
1bede70fae | ||
![]() |
156dbfd3a9 | ||
![]() |
c2a2ffd06d | ||
![]() |
6aeb1ae617 | ||
![]() |
9fe02aa39b | ||
![]() |
f6f65ef7f3 | ||
![]() |
8b8a6b5b36 | ||
![]() |
9fabcbaf13 | ||
![]() |
18ad1ebc93 | ||
![]() |
f4cde441a0 | ||
![]() |
1baea7f63d | ||
![]() |
89b7aa24e9 | ||
![]() |
2ebbf5a370 | ||
![]() |
595e562814 | ||
![]() |
2bf64805dc | ||
![]() |
0576f78240 | ||
![]() |
0f06571e50 | ||
![]() |
bb834c9c15 | ||
![]() |
f000d95533 | ||
![]() |
d3738657a3 | ||
![]() |
d2655290b4 | ||
![]() |
97fd864129 | ||
![]() |
44d2f3699f | ||
![]() |
7bc7621996 | ||
![]() |
19b6a7817d | ||
![]() |
eddfe93e6e | ||
![]() |
a5b3b61e23 | ||
![]() |
6586370d75 | ||
![]() |
c1de0a4604 | ||
![]() |
e71908e2a8 | ||
![]() |
053b63a580 | ||
![]() |
276b2e7ab5 | ||
![]() |
db5cadb2ac | ||
![]() |
a6669030d8 | ||
![]() |
8cbd2db6fa | ||
![]() |
b09b411b10 | ||
![]() |
b4414c9ecb | ||
![]() |
e6a4d9a643 | ||
![]() |
4c4bce6e1e | ||
![]() |
5c6c934499 | ||
![]() |
f163c870cd | ||
![]() |
b6035d2aa8 | ||
![]() |
2eed95a45d | ||
![]() |
9019ea8d3c | ||
![]() |
bd88950647 | ||
![]() |
7b2d88d9d7 | ||
![]() |
c6cc6e03eb | ||
![]() |
afc023d580 | ||
![]() |
d3a15b5b1e | ||
![]() |
d928f6d4fd | ||
![]() |
f2559c243f | ||
![]() |
0e073465ae | ||
![]() |
f5dafb50a8 | ||
![]() |
671cd1f0f2 | ||
![]() |
e15052db22 | ||
![]() |
6be2bb28f8 | ||
![]() |
31e4161258 | ||
![]() |
44d018fa7c | ||
![]() |
3a49d0ca73 | ||
![]() |
c5ac3bbd3c | ||
![]() |
6fe0df9466 | ||
![]() |
2fc134503c | ||
![]() |
f11e98367b | ||
![]() |
0ad4875ee2 | ||
![]() |
a227a01407 | ||
![]() |
a8c8546c23 | ||
![]() |
0aa2a0427b | ||
![]() |
3047f8e937 | ||
![]() |
d144bd328c | ||
![]() |
8815642bea | ||
![]() |
cb862374fd | ||
![]() |
60265ce7e8 | ||
![]() |
eec1c0954a | ||
![]() |
8aa0556298 | ||
![]() |
c92c1686cd | ||
![]() |
f2509b07af | ||
![]() |
4b606deafd | ||
![]() |
d9f805d4a4 | ||
![]() |
a62bea018b | ||
![]() |
2596f2d7ee | ||
![]() |
2bcd955402 | ||
![]() |
511ad2cb4c | ||
![]() |
b87a91f6df | ||
![]() |
11b8bb4c69 | ||
![]() |
84fab6b8a8 | ||
![]() |
656770352a | ||
![]() |
1dadce3f92 | ||
![]() |
8d428d3b51 | ||
![]() |
8de8204f0e | ||
![]() |
e5d2ece0b7 | ||
![]() |
01159ceea2 | ||
![]() |
d6357b70ae | ||
![]() |
eb000e9f81 | ||
![]() |
efe9c2e06e | ||
![]() |
4c41cbcafb | ||
![]() |
1910af163d | ||
![]() |
cba1566ba1 | ||
![]() |
69abe3ec0c | ||
![]() |
9961d8e364 | ||
![]() |
7b1f81cd9a | ||
![]() |
1dd91da4f5 | ||
![]() |
624d89118d | ||
![]() |
ddab72c463 | ||
![]() |
c95ccd22eb | ||
![]() |
ced7196084 | ||
![]() |
9c726191de | ||
![]() |
93a6fab67f | ||
![]() |
923ff12915 | ||
![]() |
aaa299ef1d | ||
![]() |
e93bfcce8e | ||
![]() |
d3847186b7 | ||
![]() |
ac956333d4 | ||
![]() |
08ab28bfea | ||
![]() |
18d4548b8d | ||
![]() |
38f4fe796b | ||
![]() |
04e4c37f3e | ||
![]() |
c4695dd771 | ||
![]() |
cb75b6c777 | ||
![]() |
827fcd9d4d | ||
![]() |
21f1678de4 | ||
![]() |
f0cfd49983 | ||
![]() |
61fb294dfd | ||
![]() |
7e1843febe | ||
![]() |
7ed4693f40 | ||
![]() |
6c08d5eda1 | ||
![]() |
79e1b0aae1 | ||
![]() |
f3225ff139 | ||
![]() |
f0389f83b7 | ||
![]() |
d8271aa83a | ||
![]() |
c523f2b890 | ||
![]() |
6a32015d08 | ||
![]() |
e576737ff1 | ||
![]() |
08fa4d8c89 | ||
![]() |
7086700562 | ||
![]() |
a8fbdad172 | ||
![]() |
d374f50b66 | ||
![]() |
f0210348c6 | ||
![]() |
d66b093281 | ||
![]() |
bda9550c16 | ||
![]() |
36a4d93321 | ||
![]() |
26aeec106a | ||
![]() |
d419bb8f67 | ||
![]() |
b840ce6cf4 | ||
![]() |
816b7ca920 | ||
![]() |
3534141678 | ||
![]() |
7125033baa | ||
![]() |
042fa303be | ||
![]() |
5bd83f8255 | ||
![]() |
f0d18dc909 | ||
![]() |
128f9d6071 | ||
![]() |
f0be69daf5 | ||
![]() |
d21bc1fe42 | ||
![]() |
6da61c23db | ||
![]() |
454efc5915 | ||
![]() |
aa139ec51a | ||
![]() |
a7844486bf | ||
![]() |
221dc23a05 | ||
![]() |
92d97f7091 | ||
![]() |
51b31cb98a | ||
![]() |
2935b60404 | ||
![]() |
fc74085a7f | ||
![]() |
cd6b7332ab | ||
![]() |
ef952f73f8 | ||
![]() |
4a3a6d5395 | ||
![]() |
b4186265ef | ||
![]() |
ac5ae9aeb8 | ||
![]() |
d15eced48c | ||
![]() |
7a66470b67 | ||
![]() |
1b772f8a18 | ||
![]() |
29c49350a2 | ||
![]() |
6f0e767610 | ||
![]() |
013937d60f | ||
![]() |
dc99a35258 | ||
![]() |
3b4c4cb02f | ||
![]() |
56929c918a | ||
![]() |
696ccbf64b | ||
![]() |
2e5028a612 | ||
![]() |
89ecf07f23 | ||
![]() |
ea9295da62 | ||
![]() |
b6b5230cc3 | ||
![]() |
b65110fdcc | ||
![]() |
6d3dc7b590 | ||
![]() |
7bb479194b | ||
![]() |
73c1cf8a59 | ||
![]() |
20ce3580c7 | ||
![]() |
2f733a709d | ||
![]() |
96b1eaaa04 | ||
![]() |
f0200f77dc | ||
![]() |
4ab462750c | ||
![]() |
597ea2fa2b | ||
![]() |
82b8228277 | ||
![]() |
6a025f80c4 | ||
![]() |
99d4d79537 | ||
![]() |
e1d1526b10 | ||
![]() |
8808c10402 | ||
![]() |
87f1733a49 | ||
![]() |
0da862db93 | ||
![]() |
2bdcce58a7 | ||
![]() |
e81456021e | ||
![]() |
2815cda0ed | ||
![]() |
bad3a6fd4b | ||
![]() |
53a779ca78 | ||
![]() |
f559ae17fd | ||
![]() |
3bf1cd9ef7 | ||
![]() |
1596b40689 | ||
![]() |
1506281000 | ||
![]() |
a0a550d070 | ||
![]() |
0fe6e477a4 | ||
![]() |
a8618e1da3 | ||
![]() |
e724130159 | ||
![]() |
831fc66534 | ||
![]() |
ba8631b6a3 | ||
![]() |
0092588d87 | ||
![]() |
210f02089f | ||
![]() |
6508caec70 | ||
![]() |
5123cd1d6b | ||
![]() |
ed0b3c9da3 | ||
![]() |
55100c9b62 | ||
![]() |
1728c66dcc | ||
![]() |
4fa17934fd | ||
![]() |
263adc92e2 | ||
![]() |
0b4f63f300 | ||
![]() |
6cdd79ac3c | ||
![]() |
6c590a83a8 | ||
![]() |
3e98e3ff81 | ||
![]() |
18dd8ae837 | ||
![]() |
9e9bd2fb60 | ||
![]() |
f50b2ff166 | ||
![]() |
f3bfa8f823 | ||
![]() |
4764c02fe3 | ||
![]() |
ef20fb7a22 | ||
![]() |
d74d9b5bee | ||
![]() |
2bff77cdae | ||
![]() |
6c319a4ab8 | ||
![]() |
2f0e9f8a03 | ||
![]() |
99e9d4902b | ||
![]() |
0abf604d2a | ||
![]() |
ca51130286 | ||
![]() |
28e96deb73 | ||
![]() |
9173b6eaaa | ||
![]() |
492420d13f | ||
![]() |
d2ec492827 | ||
![]() |
d12cdc7a76 | ||
![]() |
a4f49ffb18 | ||
![]() |
6599912985 | ||
![]() |
b7ef39a61c | ||
![]() |
d4bf047b09 | ||
![]() |
9df3426f41 | ||
![]() |
d7f887c6f6 | ||
![]() |
25dfbb3ed3 | ||
![]() |
4e48065605 | ||
![]() |
929a86e6b7 | ||
![]() |
e0895d9751 | ||
![]() |
7a1925594b | ||
![]() |
913813c602 | ||
![]() |
4fb4b31635 | ||
![]() |
6aedfc9c6a | ||
![]() |
2cc9204d9d | ||
![]() |
76fe879066 | ||
![]() |
34b161d10f | ||
![]() |
5c0f47fdc8 | ||
![]() |
919b62adac | ||
![]() |
909ff6bc9e | ||
![]() |
9b053b876c | ||
![]() |
831568fde3 | ||
![]() |
54f06566ee | ||
![]() |
f52241f4fe | ||
![]() |
ea5ce16f3c | ||
![]() |
e1c23e003b | ||
![]() |
a018b2af25 | ||
![]() |
16a7cecdbe | ||
![]() |
091cc49b1d | ||
![]() |
5982b8132f | ||
![]() |
90d158d8c4 | ||
![]() |
a5b3a7b3a5 | ||
![]() |
feafd3c3a9 | ||
![]() |
3fe31f9655 | ||
![]() |
317302fd94 | ||
![]() |
7d03be11e6 | ||
![]() |
a8b834c71c | ||
![]() |
ca00426f0d | ||
![]() |
040441b7eb | ||
![]() |
edde8164d7 | ||
![]() |
7451687be5 | ||
![]() |
0d55ad9f24 | ||
![]() |
c225e86ef3 | ||
![]() |
cd5886be9e | ||
![]() |
a2e909e0b0 | ||
![]() |
a2c45081a3 | ||
![]() |
3d7c49db2e | ||
![]() |
d2ba6f827b | ||
![]() |
2137062559 | ||
![]() |
d08c23f668 | ||
![]() |
c04a0c1981 | ||
![]() |
c2484433e8 | ||
![]() |
c92af394eb | ||
![]() |
e82b4cce0c | ||
![]() |
ff5624951d | ||
![]() |
0d1aa334b3 | ||
![]() |
24979034a3 | ||
![]() |
d43a992efd | ||
![]() |
d913dbf00b | ||
![]() |
e3c3f8eb75 | ||
![]() |
4e6c437274 | ||
![]() |
3ae4c5ee97 | ||
![]() |
bce3d8ed83 | ||
![]() |
02f3b9cedc | ||
![]() |
0721243d82 | ||
![]() |
63fda8378e | ||
![]() |
0bd6257ef5 | ||
![]() |
cfec32ac11 | ||
![]() |
8f32d613d1 | ||
![]() |
7a46a47cea | ||
![]() |
a0e446dc2c | ||
![]() |
8938f4270d | ||
![]() |
25bd5ea47c | ||
![]() |
0bce0a9fb7 | ||
![]() |
f6aeed969c | ||
![]() |
088dd82bd3 | ||
![]() |
503554046c | ||
![]() |
419ad7bb86 | ||
![]() |
74e6367b30 | ||
![]() |
4c8e73af33 | ||
![]() |
73446e5580 | ||
![]() |
223ae24416 | ||
![]() |
4167cf1695 | ||
![]() |
cf98b4d067 | ||
![]() |
e0e694cda4 | ||
![]() |
40b36ef34b | ||
![]() |
d47adb99a2 | ||
![]() |
32b86d1183 | ||
![]() |
c17ac02c13 | ||
![]() |
ea6623349c | ||
![]() |
0d1b08e770 | ||
![]() |
868430b726 | ||
![]() |
d3330716ee | ||
![]() |
9799b9d6eb | ||
![]() |
092ee2f4a7 | ||
![]() |
9c0fca16bf | ||
![]() |
ac5521bffa | ||
![]() |
8634b1ecce | ||
![]() |
258040c345 | ||
![]() |
1cd93c131e | ||
![]() |
cba64fccfe | ||
![]() |
bd6743acc6 | ||
![]() |
1d30b45c2b | ||
![]() |
8d8a6918b6 | ||
![]() |
58ba98f180 | ||
![]() |
736d93774a | ||
![]() |
7a0b0f318d | ||
![]() |
d65bea328f | ||
![]() |
4e84e97146 | ||
![]() |
29f8016ebc | ||
![]() |
60b4cc0403 | ||
![]() |
47d642bd38 | ||
![]() |
8bfd3ffee8 | ||
![]() |
6fa0c2b101 | ||
![]() |
c8735634a1 | ||
![]() |
1487fec2ff | ||
![]() |
1421103b6c | ||
![]() |
cbc1b3bbb9 | ||
![]() |
0750ec61b8 | ||
![]() |
b237246290 | ||
![]() |
1a8c8439b8 | ||
![]() |
0221e71dce | ||
![]() |
7a8cee0f0b | ||
![]() |
e832ad9493 | ||
![]() |
4c0bd6ef82 | ||
![]() |
1fda10837d | ||
![]() |
06a1744a40 | ||
![]() |
3960504a98 | ||
![]() |
d187748394 | ||
![]() |
0beac5cd20 | ||
![]() |
2e5053fefb | ||
![]() |
af8bc2d26d | ||
![]() |
03aa601922 | ||
![]() |
a6d8f7e6f1 | ||
![]() |
f09e71f27f | ||
![]() |
2ede4c52a2 | ||
![]() |
579f2a9a79 | ||
![]() |
c2e1ae5346 | ||
![]() |
2c078631a1 | ||
![]() |
6a6458f65c | ||
![]() |
b28dffac49 | ||
![]() |
7d86c45658 | ||
![]() |
02c1b17e96 | ||
![]() |
ba7e617deb | ||
![]() |
cc6c5be156 | ||
![]() |
5489001d06 | ||
![]() |
69b7ef0642 | ||
![]() |
75b7423668 | ||
![]() |
7de9cd670a | ||
![]() |
7b6586dca8 | ||
![]() |
8ca0351aee | ||
![]() |
b6acf81025 | ||
![]() |
5669704aed | ||
![]() |
a6a61f0561 | ||
![]() |
72d4302cd2 | ||
![]() |
b2b872481a | ||
![]() |
459482f83b | ||
![]() |
a9f488e0a2 | ||
![]() |
8b0104eb45 | ||
![]() |
423793f181 | ||
![]() |
e2b2b57899 | ||
![]() |
298800c988 | ||
![]() |
c5ce6094de | ||
![]() |
1277bf3fac | ||
![]() |
ba7b911a5f | ||
![]() |
acb249e4f8 | ||
![]() |
b6c6f34786 | ||
![]() |
cb8f4cfe36 | ||
![]() |
0420aedb32 | ||
![]() |
57991ed86f | ||
![]() |
b4a761d9ae | ||
![]() |
de97ce712a | ||
![]() |
56d950d8b3 | ||
![]() |
36f1895ef0 | ||
![]() |
e26b140185 | ||
![]() |
b021836322 | ||
![]() |
35dc525cbc | ||
![]() |
154bea7f34 | ||
![]() |
d644d0009a | ||
![]() |
21391c5062 | ||
![]() |
9e004b053b | ||
![]() |
cdb0583cfa | ||
![]() |
80c45ae937 | ||
![]() |
34186b4a3a | ||
![]() |
5b3bc65044 | ||
![]() |
4cb4d71c29 | ||
![]() |
63c340388a | ||
![]() |
f1eca1820a | ||
![]() |
7e3e1d5f3c | ||
![]() |
91894368bd | ||
![]() |
240ab445fd | ||
![]() |
14d3f87433 | ||
![]() |
de23b953b8 | ||
![]() |
bab08f2645 | ||
![]() |
52c6fa27b1 | ||
![]() |
fba194e0c4 | ||
![]() |
9b6da30281 | ||
![]() |
628e6d0a82 | ||
![]() |
0cd6fefac6 | ||
![]() |
0639ea4f8e | ||
![]() |
0d6804ae6b | ||
![]() |
eceb98923c | ||
![]() |
7b1ea3bb48 | ||
![]() |
0dc7887e99 | ||
![]() |
fe6f49b516 | ||
![]() |
2632c690ea | ||
![]() |
62dee1a440 | ||
![]() |
4257ff2e37 | ||
![]() |
17f72ec5fd | ||
![]() |
197505e79d | ||
![]() |
5e6f878606 | ||
![]() |
9cf568cd40 | ||
![]() |
bdff2c24df | ||
![]() |
11b95e35a4 | ||
![]() |
214b667409 | ||
![]() |
daf881a6ad | ||
![]() |
6cf89f5c59 | ||
![]() |
24be96a4a7 | ||
![]() |
9221a05c8f | ||
![]() |
859b62d460 | ||
![]() |
f458b2250c | ||
![]() |
ca798c391d | ||
![]() |
ea14e90901 | ||
![]() |
058ec3f1df | ||
![]() |
d239ec482d | ||
![]() |
779fcfbda1 | ||
![]() |
b326a0c121 | ||
![]() |
e4ef15b702 | ||
![]() |
24ba30acb0 | ||
![]() |
3884e32245 | ||
![]() |
49733cc31c | ||
![]() |
0bc440c640 | ||
![]() |
dec5269f56 | ||
![]() |
33a55ef9f3 | ||
![]() |
4c3920abbc | ||
![]() |
664d9fa9b0 | ||
![]() |
644fdaefca | ||
![]() |
7c6d9bc7a3 | ||
![]() |
ec50c950bb | ||
![]() |
4015b923a7 | ||
![]() |
cd0786e82c | ||
![]() |
a2762ebf4b | ||
![]() |
0dda1af72d | ||
![]() |
af792bf385 | ||
![]() |
4a77d9cafd | ||
![]() |
db1b0efd04 | ||
![]() |
0b273a0bb7 | ||
![]() |
3c22cda509 | ||
![]() |
5b7645797b | ||
![]() |
dcb0d27883 | ||
![]() |
76622657dd | ||
![]() |
3ef9622c9a | ||
![]() |
1dbc144fbc | ||
![]() |
a5d5ddc5e6 | ||
![]() |
cfe4cc8505 | ||
![]() |
4d98627e21 | ||
![]() |
d31c1cdd92 | ||
![]() |
3fb9f43969 | ||
![]() |
58422ae631 | ||
![]() |
28801aeef7 | ||
![]() |
294928c254 | ||
![]() |
cd40afe6e4 | ||
![]() |
bf1728b88f | ||
![]() |
1c9e8166a8 | ||
![]() |
5492032128 | ||
![]() |
070fe64d82 | ||
![]() |
d3c45aff32 | ||
![]() |
1c60dfa023 | ||
![]() |
976f437949 | ||
![]() |
e2db1af696 | ||
![]() |
7b2cf91811 | ||
![]() |
83adf87e5b | ||
![]() |
7769d58ad9 | ||
![]() |
d79be40cae | ||
![]() |
849d60d4f8 | ||
![]() |
781bc8678b | ||
![]() |
314fd94eeb | ||
![]() |
e0fbacc57d | ||
![]() |
87ed025a87 | ||
![]() |
b31e2cac82 | ||
![]() |
acc96631cf | ||
![]() |
d49a17c015 | ||
![]() |
3b4813d65a | ||
![]() |
91da9eaecf | ||
![]() |
b8c555449b | ||
![]() |
73364ae305 | ||
![]() |
c138b5999f | ||
![]() |
963100834e | ||
![]() |
4a4ee8d2fc | ||
![]() |
ca60f7e2c3 | ||
![]() |
e28a6086b8 | ||
![]() |
010b0e8b04 | ||
![]() |
c83c5ccb48 | ||
![]() |
bb3edcc0b9 | ||
![]() |
b7e4ec2465 | ||
![]() |
5b7f2d33ca | ||
![]() |
0f401bf345 | ||
![]() |
b77215f7b6 | ||
![]() |
5e5d8d8338 | ||
![]() |
cbb7713737 | ||
![]() |
17f63f93e4 | ||
![]() |
3755c20a55 | ||
![]() |
0a8ec00c90 | ||
![]() |
8aabb262ca | ||
![]() |
9d26a7386c | ||
![]() |
b61c68ce68 | ||
![]() |
8bb66ff0cd | ||
![]() |
d038ef2590 | ||
![]() |
175f726e3c | ||
![]() |
03b665f273 | ||
![]() |
786dbbab1e | ||
![]() |
13c7e4e9a4 | ||
![]() |
c4d8665e10 | ||
![]() |
06f739dc79 | ||
![]() |
aff07f0392 | ||
![]() |
20061058bf | ||
![]() |
318abf8f19 | ||
![]() |
7ad9f428ab | ||
![]() |
b5d6c2dc8f | ||
![]() |
59e6b6c789 | ||
![]() |
cdaa9a97ed | ||
![]() |
6f1a22172a | ||
![]() |
6f26c0257e | ||
![]() |
393b4d0324 | ||
![]() |
c78b4daa75 | ||
![]() |
2a3a236025 | ||
![]() |
d19cec8547 | ||
![]() |
6800125faa | ||
![]() |
7b6966c48f | ||
![]() |
f8c25163c6 | ||
![]() |
79aae2c355 | ||
![]() |
1adb480281 | ||
![]() |
801733ac98 | ||
![]() |
8de92ae0c0 | ||
![]() |
3aa9e5eee3 | ||
![]() |
e95262d887 | ||
![]() |
e6dac64a66 | ||
![]() |
1b23707d68 | ||
![]() |
38fbdfe0dd | ||
![]() |
17123df07f | ||
![]() |
ac663e4300 | ||
![]() |
d6931e08b0 | ||
![]() |
8d9f9126ba | ||
![]() |
6174f6902d | ||
![]() |
3a48245e47 | ||
![]() |
5e41528313 | ||
![]() |
a1c8571883 | ||
![]() |
b6e4f1c9e8 | ||
![]() |
3396edd49d | ||
![]() |
2935b19918 | ||
![]() |
fb9a3198e3 | ||
![]() |
572bff160a | ||
![]() |
49c6f2e722 | ||
![]() |
842706b39b | ||
![]() |
221888a9df | ||
![]() |
85b52116a0 | ||
![]() |
b371b0f162 | ||
![]() |
9f30ce0dfa | ||
![]() |
7ed1309e67 | ||
![]() |
fe7c7af9e9 | ||
![]() |
77986aea12 | ||
![]() |
0ed4e12eec | ||
![]() |
29ae08aca8 | ||
![]() |
fc98cb27cb | ||
![]() |
f31f67bc38 | ||
![]() |
ced65e93f2 | ||
![]() |
ccabca0e44 | ||
![]() |
ac36334e46 | ||
![]() |
8e65ad0d9b | ||
![]() |
b88536991c | ||
![]() |
609ead6929 | ||
![]() |
42f2d40782 | ||
![]() |
414f635da0 | ||
![]() |
7f883265bf | ||
![]() |
a76d144961 | ||
![]() |
89546e97a9 | ||
![]() |
266dfeb378 | ||
![]() |
a2a9c5cced | ||
![]() |
9eb3eb45d8 | ||
![]() |
7235f804cf | ||
![]() |
6ee2903e1f | ||
![]() |
94519ebab7 | ||
![]() |
bdb383971f | ||
![]() |
28ccceb4e7 | ||
![]() |
44c7effd84 | ||
![]() |
c35f4af315 | ||
![]() |
b9f4ad7dd4 | ||
![]() |
cca17670df | ||
![]() |
6b0c5cbbf3 | ||
![]() |
059870d86b | ||
![]() |
adf10a184c | ||
![]() |
8e26e8ef7f | ||
![]() |
840fbd42af | ||
![]() |
3945be2871 | ||
![]() |
eb8422e277 | ||
![]() |
60a5a87990 | ||
![]() |
7a689eb6c5 | ||
![]() |
9f47ce8f23 | ||
![]() |
09ce9835fb | ||
![]() |
06cedc7285 | ||
![]() |
95dba924e3 | ||
![]() |
abb09b91ea | ||
![]() |
793eaeaab1 | ||
![]() |
a2b28da988 | ||
![]() |
1ec9690fe1 | ||
![]() |
9ba31ad1c3 | ||
![]() |
3cc530b3f6 | ||
![]() |
c19a0d1b06 | ||
![]() |
1cd1bfe463 | ||
![]() |
fed06d16d5 | ||
![]() |
ffeaeb47f6 | ||
![]() |
7c7331a219 | ||
![]() |
9138fae240 | ||
![]() |
155c1c6e68 | ||
![]() |
1fa374c7e6 | ||
![]() |
98e95bf03e | ||
![]() |
e28ed2283c | ||
![]() |
a651d0e14d | ||
![]() |
81b2f8fd1f | ||
![]() |
125e2b011b | ||
![]() |
d1c26f8321 | ||
![]() |
66e619af96 | ||
![]() |
5a8bf71cd6 | ||
![]() |
820aa45a58 | ||
![]() |
50b712cf9c | ||
![]() |
2c8097bbb8 | ||
![]() |
f89dfd23ef | ||
![]() |
0999eb451b | ||
![]() |
152a955597 | ||
![]() |
f72cd1de3c | ||
![]() |
482a9bfe26 | ||
![]() |
a0fb57d7d3 | ||
![]() |
c6c686ec65 | ||
![]() |
48f967ad92 | ||
![]() |
ba3af4f031 | ||
![]() |
70a175bdaa | ||
![]() |
fdc0750f13 | ||
![]() |
43db7912d0 | ||
![]() |
5a4f0dc14d | ||
![]() |
c93b62817e | ||
![]() |
3a6ab9df76 | ||
![]() |
ad5989d80f | ||
![]() |
0b9eadffb6 | ||
![]() |
9963b746b1 | ||
![]() |
836ef99122 | ||
![]() |
156b444582 | ||
![]() |
aa27ab0f2c | ||
![]() |
76e0040505 | ||
![]() |
d3baf1a86a | ||
![]() |
681bf636dc | ||
![]() |
607b5e3fec | ||
![]() |
5f4192a639 | ||
![]() |
220cd05f6d | ||
![]() |
3cfc732dff | ||
![]() |
f04b37e0d3 | ||
![]() |
05274cef64 | ||
![]() |
8f5ac20310 | ||
![]() |
db65425c06 | ||
![]() |
e475460a48 | ||
![]() |
6dfe7a7045 | ||
![]() |
9b23079fe1 | ||
![]() |
c5c9d6404c | ||
![]() |
42cb871283 | ||
![]() |
39778b9c5b | ||
![]() |
8bb7c354c7 | ||
![]() |
37b76f8816 | ||
![]() |
5164413ab8 | ||
![]() |
857ce9e811 | ||
![]() |
3d6bd7ae3a | ||
![]() |
87529a9d55 | ||
![]() |
7dbf1e09a3 | ||
![]() |
991596d368 | ||
![]() |
72b319323c | ||
![]() |
2170bed0be | ||
![]() |
517185039d | ||
![]() |
8d9eecc4c2 | ||
![]() |
c94b4b75ea | ||
![]() |
2487a4740d | ||
![]() |
b0239c614a | ||
![]() |
a1b692965a | ||
![]() |
a2149c8966 | ||
![]() |
8bc980d1b7 | ||
![]() |
97864fe177 | ||
![]() |
f676190178 | ||
![]() |
0130aa39ee | ||
![]() |
cc3584d82f | ||
![]() |
5a6a662eb0 | ||
![]() |
d32dd7ec26 | ||
![]() |
ff355a56d5 | ||
![]() |
a76b5f34c8 | ||
![]() |
d7cffa69da | ||
![]() |
bb24bd4e5e | ||
![]() |
92aefe5ef7 | ||
![]() |
b8540aacc5 | ||
![]() |
2bfee732e0 | ||
![]() |
dbfccb7593 | ||
![]() |
f8ae07e536 | ||
![]() |
b48d4c5c9d | ||
![]() |
4e4ea9d552 | ||
![]() |
7ae605a78a | ||
![]() |
7604fd8eb0 | ||
![]() |
4dbd820f6a | ||
![]() |
9975795b94 | ||
![]() |
82de138569 | ||
![]() |
0c1f4984dd | ||
![]() |
91dbd725b9 | ||
![]() |
9aba69838a | ||
![]() |
dd65f959da | ||
![]() |
441a6de8e1 | ||
![]() |
cdf5cf88f7 | ||
![]() |
27599f8cc4 | ||
![]() |
37901579b8 | ||
![]() |
787fc7bfb8 | ||
![]() |
69400ecbd4 | ||
![]() |
055b1c50b2 | ||
![]() |
9823ec410e | ||
![]() |
ae8181d889 | ||
![]() |
c1a8624422 | ||
![]() |
e0d90e5d98 | ||
![]() |
510af56cc0 | ||
![]() |
c999e1c9e7 | ||
![]() |
766961b3a8 | ||
![]() |
36fe901504 | ||
![]() |
0317555d61 | ||
![]() |
91aebdfc98 | ||
![]() |
933c9d7114 | ||
![]() |
1bcc11b9a8 | ||
![]() |
3063bc51ee | ||
![]() |
615b894d0b | ||
![]() |
242a9662d9 | ||
![]() |
c4d6f498f6 | ||
![]() |
814d447d8c | ||
![]() |
d5e0064a68 | ||
![]() |
23a51fd1d8 | ||
![]() |
686397a671 | ||
![]() |
a2e3f8625a | ||
![]() |
0b8dabe195 | ||
![]() |
20accdb6b9 | ||
![]() |
22234b15b5 | ||
![]() |
33903c5df8 | ||
![]() |
35902ed071 | ||
![]() |
1add0050b6 | ||
![]() |
959c874630 | ||
![]() |
c15ac68a6f | ||
![]() |
f7e81d2ab9 | ||
![]() |
1f539bf724 | ||
![]() |
2e9a26d84a | ||
![]() |
a36890d61d | ||
![]() |
21a4a8666c | ||
![]() |
79ad3bdb32 | ||
![]() |
0bc216ed49 | ||
![]() |
f3ee0f4fe4 | ||
![]() |
cefb5e3668 | ||
![]() |
778704d51b | ||
![]() |
25933a7e39 | ||
![]() |
38b6b590f3 | ||
![]() |
b888ad5b02 | ||
![]() |
a6cc743573 | ||
![]() |
577fc55fef | ||
![]() |
4df6168e87 | ||
![]() |
14b6d25f79 | ||
![]() |
2ed6e0aa4b | ||
![]() |
dd9ccb4351 | ||
![]() |
96b7ce6259 | ||
![]() |
9d1a5ad65a | ||
![]() |
c44f35d629 | ||
![]() |
1efbc967f9 | ||
![]() |
72b1cf7eaf | ||
![]() |
2094e69b4a | ||
![]() |
628ba75262 | ||
![]() |
04d749b2d5 | ||
![]() |
408f434654 | ||
![]() |
c996f7b902 | ||
![]() |
6d1af55263 | ||
![]() |
176d14fe8a | ||
![]() |
294526883d | ||
![]() |
4b9bf2c254 | ||
![]() |
954154c2a5 | ||
![]() |
c8f33170da | ||
![]() |
0aa9877169 | ||
![]() |
f4c4ea28ed | ||
![]() |
12d406ea38 | ||
![]() |
2e1040b25b | ||
![]() |
c019703a30 | ||
![]() |
81a3be47a7 | ||
![]() |
e2c5c92e9b | ||
![]() |
791f318614 | ||
![]() |
7be58d48dc | ||
![]() |
70d9d054ce | ||
![]() |
7be7cb171c | ||
![]() |
4889daf3e2 | ||
![]() |
db3fc14da4 | ||
![]() |
c535323ea0 | ||
![]() |
74156590c5 | ||
![]() |
a2f91fac9b | ||
![]() |
ec682d687b | ||
![]() |
4cf595d901 | ||
![]() |
e5c7b3c5a4 | ||
![]() |
3024924f50 | ||
![]() |
b5721351ea | ||
![]() |
7a45644625 | ||
![]() |
03ba42ca55 | ||
![]() |
c9da39ee46 | ||
![]() |
a70cae1574 | ||
![]() |
dd5e55848d | ||
![]() |
c52635f6d1 | ||
![]() |
0d8161e605 | ||
![]() |
2192ec30b7 | ||
![]() |
7cfbf72847 | ||
![]() |
7fb5ccb5a5 | ||
![]() |
d461180dce | ||
![]() |
d5046426cc |
@@ -1,3 +1,5 @@
|
|||||||
assets/js/index.js
|
assets/js/analytics.js
|
||||||
|
assets/js/color.js
|
||||||
|
assets/js/flexsearch.js
|
||||||
assets/js/vendor
|
assets/js/vendor
|
||||||
node_modules
|
node_modules
|
||||||
|
37
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: "[BUG]"
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Log file**
|
||||||
|
If applicable, add a copy of Hugo's log messages.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Environment (please complete the following information):**
|
||||||
|
- Hinode version: [e.g. v0.11.3]
|
||||||
|
- Host OS: [e.g. macOS Ventura 13.3]
|
||||||
|
- Node version: [e.g. node v18.15.0]
|
||||||
|
- Hugo version: [e.g. hugo v0.109.0-47b12b83e636224e5e601813ff3e6790c191e371+extended darwin/amd64 BuildDate=2022-12-23T10:38:11Z VendorInfo=gohugoio]
|
||||||
|
- Browser: [e.g. Google Chrome Version 108.0.5359.124 (Official Build) (arm64)]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
9
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
43
.github/workflows/auto-merge.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# Source: https://nicolasiensen.github.io/2022-07-23-automating-dependency-updates-with-dependabot-github-auto-merge-and-github-actions/
|
||||||
|
name: Dependabot auto-merge
|
||||||
|
on: pull_request_target
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
review-dependabot-pr:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
|
||||||
|
steps:
|
||||||
|
- name: Dependabot metadata
|
||||||
|
id: metadata
|
||||||
|
uses: dependabot/fetch-metadata@v1
|
||||||
|
with:
|
||||||
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
- name: Enable auto-merge for Dependabot PRs
|
||||||
|
run: gh pr merge --auto --merge "$PR_URL"
|
||||||
|
env:
|
||||||
|
PR_URL: ${{github.event.pull_request.html_url}}
|
||||||
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
- name: Approve patch and minor updates
|
||||||
|
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}}
|
||||||
|
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**"
|
||||||
|
env:
|
||||||
|
PR_URL: ${{github.event.pull_request.html_url}}
|
||||||
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
- name: Approve major updates of development dependencies
|
||||||
|
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:development'}}
|
||||||
|
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a major update of a dependency used only in development**"
|
||||||
|
env:
|
||||||
|
PR_URL: ${{github.event.pull_request.html_url}}
|
||||||
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
- name: Comment on major updates of non-development dependencies
|
||||||
|
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:production'}}
|
||||||
|
run: |
|
||||||
|
gh pr comment $PR_URL --body "I'm **not approving** this PR because **it includes a major update of a dependency used in production**"
|
||||||
|
gh pr edit $PR_URL --add-label "requires-manual-qa"
|
||||||
|
env:
|
||||||
|
PR_URL: ${{github.event.pull_request.html_url}}
|
||||||
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
28
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
name: build
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v*
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
|
node-version: [14.x, 16.x, 18.x]
|
||||||
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
cache: 'npm'
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm run build
|
2
.github/workflows/lint.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [12.x, 14.x, 16.x]
|
node-version: [14.x, 16.x, 18.x]
|
||||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
35
.github/workflows/npm-publish.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
|
||||||
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
|
||||||
|
|
||||||
|
name: Node.js Package
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
branches: [ main ]
|
||||||
|
release:
|
||||||
|
types: [created]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm test
|
||||||
|
|
||||||
|
publish-npm:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
registry-url: https://registry.npmjs.org/
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm publish
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
3
.gitignore
vendored
@@ -3,4 +3,5 @@ resources/
|
|||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
.DS_store
|
.DS_store
|
||||||
.hugo_build.lock
|
.hugo_build.lock
|
||||||
|
hugo_stats.json
|
@@ -5,7 +5,9 @@
|
|||||||
"MD024": false,
|
"MD024": false,
|
||||||
"MD026": false,
|
"MD026": false,
|
||||||
"MD033": false,
|
"MD033": false,
|
||||||
"MD034": false
|
"MD034": false,
|
||||||
|
"MD051": false,
|
||||||
|
"MD053": false
|
||||||
},
|
},
|
||||||
"ignores": ["node_modules", "CHANGELOG.md"]
|
"ignores": ["node_modules", "CHANGELOG.md"]
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,8 @@
|
|||||||
assets/scss/common/_variables.scss
|
assets/scss/common/_variables.scss
|
||||||
|
assets/scss/components/_syntax-dark.scss
|
||||||
|
assets/scss/components/_syntax-light.scss
|
||||||
|
assets/scss/hotfix
|
||||||
assets/scss/vendor
|
assets/scss/vendor
|
||||||
|
assets/scss/theme/fonts.scss
|
||||||
assets/scss/app.scss
|
assets/scss/app.scss
|
||||||
node_modules
|
node_modules
|
||||||
|
@@ -2,10 +2,7 @@
|
|||||||
"extends": "stylelint-config-standard-scss",
|
"extends": "stylelint-config-standard-scss",
|
||||||
"rules": {
|
"rules": {
|
||||||
"no-empty-source": null,
|
"no-empty-source": null,
|
||||||
"indentation": 4,
|
|
||||||
"string-quotes": "double",
|
|
||||||
"scss/comment-no-empty": null,
|
"scss/comment-no-empty": null,
|
||||||
"max-line-length": null,
|
|
||||||
"scss/at-extend-no-missing-placeholder": null,
|
"scss/at-extend-no-missing-placeholder": null,
|
||||||
"scss/dollar-variable-colon-space-after": null,
|
"scss/dollar-variable-colon-space-after": null,
|
||||||
"scss/dollar-variable-empty-line-before": null,
|
"scss/dollar-variable-empty-line-before": null,
|
||||||
|
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2022 Mark Dumay
|
Copyright (c) 2023 Mark Dumay
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
130
README.md
@@ -2,29 +2,32 @@
|
|||||||
|
|
||||||
<!-- Tagline -->
|
<!-- Tagline -->
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<b>A clean blog theme for your Hugo site based on Bootstrap 5</b>
|
<b>A clean documentation and blog theme for your Hugo site based on Bootstrap 5</b>
|
||||||
<br />
|
<br />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- Badges -->
|
<!-- Badges -->
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://app.netlify.com/sites/hinode-demo/deploys" alt="Netlify Status">
|
<a href="https://gohugo.io" alt="Hugo website">
|
||||||
<img src="https://img.shields.io/netlify/151e88a3-d161-4045-856d-778fea43fc2f" />
|
<img src="https://img.shields.io/badge/generator-hugo-brightgreen" />
|
||||||
|
</a>
|
||||||
|
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status">
|
||||||
|
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
|
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
|
||||||
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" />
|
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/markdumay/hugo-theme-hinode/commits/main" alt="Last commit">
|
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit">
|
||||||
<img src="https://img.shields.io/github/last-commit/markdumay/hugo-theme-hinode.svg" />
|
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/markdumay/hugo-theme-hinode/issues" alt="Issues">
|
<a href="https://github.com/gethinode/hinode/issues" alt="Issues">
|
||||||
<img src="https://img.shields.io/github/issues/markdumay/hugo-theme-hinode.svg" />
|
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/markdumay/hugo-theme-hinode/pulls" alt="Pulls">
|
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls">
|
||||||
<img src="https://img.shields.io/github/issues-pr-raw/markdumay/hugo-theme-hinode.svg" />
|
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/markdumay/hugo-theme-hinode/blob/main/LICENSE" alt="License">
|
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License">
|
||||||
<img src="https://img.shields.io/github/license/markdumay/hugo-theme-hinode" />
|
<img src="https://img.shields.io/github/license/gethinode/hinode" />
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -41,26 +44,26 @@
|
|||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- [Online Demo][demo]
|
- [Online Demo][demo]
|
||||||
- [PageSpeed Insights][pagespeed]
|
- [PageSpeed Insights][pagespeed]
|
||||||
- [Mozilla Observatory][observatory]
|
- [Mozilla Observatory][observatory]
|
||||||
|
|
||||||
Hinode is a clean blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme uses [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme uses [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
||||||
|
|
||||||
Additional features include:
|
Additional features include:
|
||||||
|
|
||||||
- Comments
|
- Switching between light mode and dark mode
|
||||||
- Social links
|
- Support for multiple languages
|
||||||
- Blog pagination
|
- Reusable Bootstrap components through configurable shortcodes and partials
|
||||||
- Code highlighting
|
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
|
||||||
- Color customization
|
- Integrated sidebar navigation for content-heavy sections, such as documentation pages
|
||||||
- i18n support
|
- Reponsive image handling for multiple screen sizes and resolutions
|
||||||
|
- Optimized search results, scoring 100 points for SEO on [PageSpeed Insights][pagespeed]
|
||||||
|
- Secure by default, scoring A+ on [Mozilla Observatory test][observatory]
|
||||||
|
|
||||||
<!-- TODO: add tutorial deep-link
|
Detailed information about Hinode is available on the [official website][website].
|
||||||
Detailed background information is available on the author's [personal blog][blog].
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
@@ -70,80 +73,59 @@ Hinode requires Git, Node.js and npm for local development and testing. Download
|
|||||||
|
|
||||||
Start a new Hinode project in three steps:
|
Start a new Hinode project in three steps:
|
||||||
|
|
||||||
### 1. Create a new site
|
1. Create a new site
|
||||||
|
|
||||||
<!-- Hinode is available as a child theme, and a starter theme:
|
Hinode is available as a [child theme][repository_child], and a [main theme][repository]. The child theme uses [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the child theme:
|
||||||
|
|
||||||
- Use the Hinode child theme, if you do **not** plan to customize a lot, and/or need future Hinode updates.
|
```bash
|
||||||
- Use the Hinode starter theme, if you plan to customize a lot, and/or do **not** need future Hinode updates.
|
git clone https://github.com/gethinode/child.git my-hinode-site && cd my-hinode-site
|
||||||
|
```
|
||||||
|
|
||||||
Not quite sure? Use the Hinode child theme.
|
Use the main theme if you intend to customize the base code:
|
||||||
|
|
||||||
#### Hinode child theme
|
```bash
|
||||||
|
git clone https://github.com/gethinode/hinode.git my-hinode-site && cd my-hinode-site
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
1. Install dependencies
|
||||||
git clone https://github.com/markdumay/hugo-theme-hinode-child.git my-hinode-site && cd my-hinode-site
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Hinode starter theme -->
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
1. Start development server
|
||||||
git clone https://github.com/markdumay/hugo-theme-hinode.git my-hinode-site && cd my-hinode-site
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Install dependencies
|
```bash
|
||||||
|
npm run start
|
||||||
```bash
|
```
|
||||||
npm install
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Start development server
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run start
|
|
||||||
```
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
The main site configuration is available in `./config/_default`. Some remarks:
|
See the [official documentation][getstarted] on how to configure your site.
|
||||||
|
|
||||||
- Menu items - `menus/menus.en.toml` contains language-specific items for the navigation bar and social media links for the home page's footer.
|
|
||||||
- Content - Ensure the `mainSections` in `config.toml` is synchronized with the `content` folder, default values are `["blog", "projects"]`.
|
|
||||||
- Theme color - Update `themeColor` and `themeOpacity` within the `[style]` section of `params.toml` to update the site's primary color and opacity. You can use the [WCAG Color Contrast Checker][contrast_checker] to validate the contrast ratio of your color to improve accessibility.
|
|
||||||
- Comments - Comments are powered by [utterances][utterances], a lightweight comments widget built on GitHub issues. Update the `repo` of the `[comments]` section of `params.toml`.
|
|
||||||
- Security headings - The local development server uses the header configuration as provided by `server.toml`. Similar settings are provided in the `netlify.toml` file provided in the repository's root when deploying to [Netlify][netlify].
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
1. Clone the repository and create a new branch
|
See the [official documentation][contribute] on how to contribute to the open-source development of Hinode.
|
||||||
|
|
||||||
```console
|
|
||||||
git checkout https://github.com/markdumay/hugo-theme-hinode.git -b name_for_new_branch
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Make and test the changes
|
|
||||||
3. Submit a Pull Request with a comprehensive description of the changes
|
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
The Hinode theme is inspired by the following themes:
|
Hinode is inspired by the following themes:
|
||||||
|
|
||||||
- [Blist][blist] - a clean and fast blog theme for your Hugo site using Tailwind CSS.
|
- [Blist][blist] - a clean and fast blog theme for your Hugo site using Tailwind CSS.
|
||||||
- [Doks][doks] - a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize.
|
- [Doks][doks] - a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize.
|
||||||
|
|
||||||
## Donate
|
## Donate
|
||||||
|
|
||||||
<a href="https://www.buymeacoffee.com/markdumay" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
|
<a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
The `hugo-theme-hinode` codebase is released under the [MIT license][license]. The documentation (including the "README") is licensed under the Creative Commons ([CC BY-NC 4.0)][cc-by-nc-4.0] license.
|
The `hinode` and `child` codebase is released under the [MIT license][license]. The documentation (including the "README" and `docs` codebase) is licensed under the Creative Commons ([CC BY-NC 4.0)][cc-by-nc-4.0] license.
|
||||||
|
|
||||||
<!-- MARKDOWN PUBLIC LINKS -->
|
<!-- MARKDOWN PUBLIC LINKS -->
|
||||||
[blist]: https://github.com/apvarun/blist-hugo-theme
|
[blist]: https://github.com/apvarun/blist-hugo-theme
|
||||||
[bootstrap]: https://getbootstrap.com
|
[bootstrap]: https://getbootstrap.com
|
||||||
[cc-by-nc-4.0]: https://creativecommons.org/licenses/by-nc/4.0/
|
[cc-by-nc-4.0]: https://creativecommons.org/licenses/by-nc/4.0/
|
||||||
[contrast_checker]: https://accessibleweb.com/color-contrast-checker/
|
|
||||||
[doks]: https://github.com/h-enk/doks
|
[doks]: https://github.com/h-enk/doks
|
||||||
[flexsearch]: https://github.com/nextapps-de/flexsearch
|
[flexsearch]: https://github.com/nextapps-de/flexsearch
|
||||||
[git_download]: https://git-scm.com
|
[git_download]: https://git-scm.com
|
||||||
@@ -151,15 +133,15 @@ The `hugo-theme-hinode` codebase is released under the [MIT license][license]. T
|
|||||||
[netlify]: https://www.netlify.com
|
[netlify]: https://www.netlify.com
|
||||||
[nodejs]: https://nodejs.org
|
[nodejs]: https://nodejs.org
|
||||||
[npm]: https://www.npmjs.com
|
[npm]: https://www.npmjs.com
|
||||||
[observatory]: https://observatory.mozilla.org/analyze/hinode-demo.markdumay.org
|
[observatory]: https://observatory.mozilla.org/analyze/demo.gethinode.com
|
||||||
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fhinode-demo.markdumay.org%2F
|
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F
|
||||||
[utterances]: https://utteranc.es
|
[utterances]: https://utteranc.es
|
||||||
|
|
||||||
<!-- MARKDOWN MAINTAINED LINKS -->
|
<!-- MARKDOWN MAINTAINED LINKS -->
|
||||||
<!-- TODO: add blog link
|
[contribute]: https://gethinode.com/contribute
|
||||||
[blog]: https://markdumay.com
|
[getstarted]: https://gethinode.com/docs
|
||||||
-->
|
[demo]: https://demo.gethinode.com/
|
||||||
[blog]: https://github.com/markdumay
|
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
|
||||||
[demo]: https://hinode-demo.markdumay.org/
|
[repository]: https://github.com/gethinode/hinode.git
|
||||||
[license]: https://github.com/markdumay/hugo-theme-hinode/blob/main/LICENSE
|
[repository_child]: https://github.com/gethinode/child.git
|
||||||
[repository]: https://github.com/markdumay/hugo-theme-hinode.git
|
[website]: https://gethinode.com/
|
||||||
|
3
assets/icons/accordion-button-active-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_active_color_dark }}'>
|
||||||
|
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 269 B |
3
assets/icons/accordion-button-active-icon.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_active_color }}'>
|
||||||
|
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 264 B |
3
assets/icons/accordion-button-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_color_dark }}'>
|
||||||
|
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 262 B |
3
assets/icons/accordion-button-icon.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_color }}'>
|
||||||
|
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 257 B |
3
assets/icons/btn-close-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .btn_close_color }}'>
|
||||||
|
<path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 305 B |
3
assets/icons/btn-toggle-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 320 512' fill='{{ .btn_toggle_color_dark }}'>
|
||||||
|
<path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 314 B |
3
assets/icons/btn-toggle.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 320 512' fill='{{ .btn_toggle_color }}'>
|
||||||
|
<path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 309 B |
3
assets/icons/carousel-control-next-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }}'>
|
||||||
|
<path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 239 B |
3
assets/icons/carousel-control-prev-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }}'>
|
||||||
|
<path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 238 B |
3
assets/icons/form-check-input-checked-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
||||||
|
<path fill='none' stroke='{{ .form_check_input_checked_color }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 220 B |
3
assets/icons/form-check-input-indeterminate-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
||||||
|
<path fill='none' stroke='{{ .form_check_input_indeterminate_color }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 220 B |
3
assets/icons/form-check-radio-checked-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||||
|
<circle r='2' fill='{{ .form_check_input_checked_color }}'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 132 B |
3
assets/icons/form-feedback-icon-invalid.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='{{ .form_feedback_icon_invalid_color }}'>
|
||||||
|
<circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='{{ .form_feedback_icon_invalid_color }}' stroke='none'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 334 B |
3
assets/icons/form-feedback-icon-valid.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'>
|
||||||
|
<path fill='{{ .form_feedback_icon_valid_color }}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 229 B |
3
assets/icons/form-select-indicator-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
|
||||||
|
<path fill='none' stroke='{{ .form_select_indicator_color_dark }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 221 B |
3
assets/icons/form-select-indicator.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
|
||||||
|
<path fill='none' stroke='{{ .form_select_indicator_color }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 216 B |
3
assets/icons/form-switch-bg-image-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||||
|
<circle r='3' fill='{{ .form_switch_color_dark }}' />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 125 B |
3
assets/icons/form-switch-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||||
|
<circle r='3' fill='{{ .form_switch_color }}' />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 120 B |
3
assets/icons/form-switch-checked-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||||
|
<circle r='3' fill='{{ .form_switch_checked_color }}'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 127 B |
3
assets/icons/form-switch-focus-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||||
|
<circle r='3' fill='{{ .form_switch_focus_color }}'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 125 B |
3
assets/icons/navbar-dark-toggler-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'>
|
||||||
|
<path stroke="{{ .navbar_dark_color }}" stroke-opacity="0.55" stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 226 B |
3
assets/icons/navbar-light-toggler-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'>
|
||||||
|
<path stroke='{{ .navbar_light_icon_color }}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 210 B |
BIN
assets/img/boots.jpg
Normal file
After Width: | Height: | Size: 4.8 MiB |
BIN
assets/img/notepad.jpg
Normal file
After Width: | Height: | Size: 173 KiB |
BIN
assets/img/paper.jpg
Normal file
After Width: | Height: | Size: 930 KiB |
BIN
assets/img/sketch.jpg
Normal file
After Width: | Height: | Size: 646 KiB |
69
assets/js/analytics.js
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
// Adapted from https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/google_analytics.html
|
||||||
|
|
||||||
|
{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}}
|
||||||
|
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||||
|
{{- if not $pc.RespectDoNotTrack -}}
|
||||||
|
var doNotTrack = false;
|
||||||
|
{{- else -}}
|
||||||
|
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
|
||||||
|
var doNotTrack = (dnt == "1" || dnt == "yes");
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||||
|
{{- if (and (not .Site.IsServer) (not $pc.Disable)) -}}
|
||||||
|
{{ with .Site.GoogleAnalytics -}}
|
||||||
|
{{ if hasPrefix . "G-"}}
|
||||||
|
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||||
|
|
||||||
|
if (!doNotTrack) {
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
|
||||||
|
function gtag() {
|
||||||
|
dataLayer.push(arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', '{{ . }}', { 'anonymize_ip': {{- $pc.AnonymizeIP -}} });
|
||||||
|
}
|
||||||
|
|
||||||
|
{{ else if hasPrefix . "UA-" }}
|
||||||
|
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||||
|
|
||||||
|
if (!doNotTrack) {
|
||||||
|
(function(i, s, o, g, r, a, m) {
|
||||||
|
i['GoogleAnalyticsObject'] = r;
|
||||||
|
i[r] = i[r] || function() {
|
||||||
|
(i[r].q = i[r].q || []).push(arguments)
|
||||||
|
}, i[r].l = 1 * new Date();
|
||||||
|
a = s.createElement(o),
|
||||||
|
m = s.getElementsByTagName(o)[0];
|
||||||
|
a.async = 1;
|
||||||
|
a.src = g;
|
||||||
|
m.parentNode.insertBefore(a, m)
|
||||||
|
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
|
||||||
|
|
||||||
|
{{- if $pc.UseSessionStorage }}
|
||||||
|
if (window.sessionStorage) {
|
||||||
|
var GA_SESSION_STORAGE_KEY = 'ga:clientId';
|
||||||
|
ga('create', '{{ . }}', {
|
||||||
|
'storage': 'none',
|
||||||
|
'clientId': sessionStorage.getItem(GA_SESSION_STORAGE_KEY)
|
||||||
|
});
|
||||||
|
|
||||||
|
ga(function(tracker) {
|
||||||
|
sessionStorage.setItem(GA_SESSION_STORAGE_KEY, tracker.get('clientId'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
{{ else }}
|
||||||
|
ga('create', '{{ . }}', 'auto');
|
||||||
|
{{ end -}}
|
||||||
|
{{ if $pc.AnonymizeIP }}
|
||||||
|
ga('set', 'anonymizeIp', true);
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
ga('send', 'pageview');
|
||||||
|
}
|
||||||
|
{{- end }}
|
||||||
|
{{ end -}}
|
||||||
|
{{- end }}
|
18
assets/js/animation.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
function reveal () {
|
||||||
|
const reveals = document.querySelectorAll('.reveal')
|
||||||
|
|
||||||
|
for (let i = 0; i < reveals.length; i++) {
|
||||||
|
const windowHeight = window.innerHeight
|
||||||
|
const elementTop = reveals[i].getBoundingClientRect().top
|
||||||
|
const elementVisible = 150
|
||||||
|
|
||||||
|
if (elementTop < windowHeight - elementVisible) {
|
||||||
|
reveals[i].classList.add('active')
|
||||||
|
reveals[i].classList.remove('reveal')
|
||||||
|
} else {
|
||||||
|
reveals[i].classList.remove('active')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('scroll', reveal)
|
1
assets/js/bootstrap.js
vendored
@@ -1 +0,0 @@
|
|||||||
import 'bootstrap/dist/js/bootstrap.bundle.min.js'
|
|
38
assets/js/clipboard.js
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
Source:
|
||||||
|
- https://simplernerd.com/hugo-add-copy-to-clipboard-button/
|
||||||
|
*/
|
||||||
|
|
||||||
|
const svgCopy =
|
||||||
|
'<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/></svg>'
|
||||||
|
const svgCheck =
|
||||||
|
'<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"><path fill-rule="evenodd" fill="rgb(63, 185, 80)" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>'
|
||||||
|
|
||||||
|
const addCopyButtons = (clipboard) => {
|
||||||
|
// 1. Look for pre > code elements in the DOM
|
||||||
|
document.querySelectorAll('pre > code').forEach((codeBlock) => {
|
||||||
|
// 2. Create a button that will trigger a copy operation
|
||||||
|
const button = document.createElement('button')
|
||||||
|
button.className = 'clipboard-button'
|
||||||
|
button.type = 'button'
|
||||||
|
button.innerHTML = svgCopy
|
||||||
|
button.addEventListener('click', () => {
|
||||||
|
clipboard.writeText(codeBlock.innerText).then(
|
||||||
|
() => {
|
||||||
|
button.blur()
|
||||||
|
button.innerHTML = svgCheck
|
||||||
|
setTimeout(() => (button.innerHTML = svgCopy), 2000)
|
||||||
|
},
|
||||||
|
// eslint-disable-next-line n/handle-callback-err
|
||||||
|
(error) => (button.innerHTML = 'Error')
|
||||||
|
)
|
||||||
|
})
|
||||||
|
// 3. Append the button directly before the pre tag
|
||||||
|
const pre = codeBlock.parentNode
|
||||||
|
pre.parentNode.insertBefore(button, pre)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (navigator && navigator.clipboard) {
|
||||||
|
addCopyButtons(navigator.clipboard)
|
||||||
|
}
|
70
assets/js/critical/color.js
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
/*!
|
||||||
|
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2022 The Bootstrap Authors
|
||||||
|
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const storedTheme = localStorage.getItem('theme')
|
||||||
|
|
||||||
|
const getPreferredTheme = () => {
|
||||||
|
if (storedTheme) {
|
||||||
|
return storedTheme
|
||||||
|
}
|
||||||
|
|
||||||
|
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||||
|
}
|
||||||
|
|
||||||
|
const setTheme = function (theme) {
|
||||||
|
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
document.documentElement.setAttribute('data-bs-theme', 'dark')
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setTheme(getPreferredTheme())
|
||||||
|
|
||||||
|
const showActiveTheme = theme => {
|
||||||
|
const activeSelectors = document.querySelectorAll('.theme-icon-active')
|
||||||
|
const activeButtons = document.querySelectorAll(`[data-bs-theme-value="${theme}"]`)
|
||||||
|
if (activeButtons.length > 0) {
|
||||||
|
const activeIcon = activeButtons[0].querySelector('i')
|
||||||
|
|
||||||
|
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||||||
|
element.classList.remove('active')
|
||||||
|
})
|
||||||
|
|
||||||
|
for (let i = 0; i < activeSelectors.length; ++i) {
|
||||||
|
activeSelectors[i].className = activeIcon.className
|
||||||
|
activeSelectors[i].className = activeSelectors[i].className.replace('theme-icon', 'theme-icon-active')
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < activeButtons.length; ++i) {
|
||||||
|
activeButtons[i].classList.add('active')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||||
|
if (storedTheme !== 'light' || storedTheme !== 'dark') {
|
||||||
|
setTheme(getPreferredTheme())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
showActiveTheme(getPreferredTheme())
|
||||||
|
|
||||||
|
document.querySelectorAll('[data-bs-theme-value]')
|
||||||
|
.forEach(toggle => {
|
||||||
|
toggle.addEventListener('click', () => {
|
||||||
|
const theme = toggle.getAttribute('data-bs-theme-value')
|
||||||
|
localStorage.setItem('theme', theme)
|
||||||
|
setTheme(theme)
|
||||||
|
showActiveTheme(theme)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})()
|
164
assets/js/flexsearch.js
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
{{- $search := default true site.Params.navigation.search -}}
|
||||||
|
{{- if $search -}}
|
||||||
|
var search = document.getElementById('search');
|
||||||
|
var suggestions = document.getElementById('suggestions');
|
||||||
|
var index = new FlexSearch.Document({
|
||||||
|
tokenize: "forward",
|
||||||
|
cache: 100,
|
||||||
|
document: {
|
||||||
|
id: "id",
|
||||||
|
tag: "tag",
|
||||||
|
store: ["href", "title", "description"],
|
||||||
|
index: ["title", "description", "content"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
Source:
|
||||||
|
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||||
|
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||||
|
*/
|
||||||
|
function initIndex() {
|
||||||
|
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
|
||||||
|
// Note: uses .Site.AllPages as .Site.RegularPages only returns content for the current language;
|
||||||
|
// pages without a title (such as browserconfig.xml) are excluded
|
||||||
|
{{ $list := where (where site.AllPages "Kind" "in" "page") "Title" "!=" "" }}
|
||||||
|
{{ $len := (len $list) -}}
|
||||||
|
|
||||||
|
index.add(
|
||||||
|
{{ range $index, $element := $list -}}
|
||||||
|
{
|
||||||
|
id: {{ $index }},
|
||||||
|
tag: "{{ .Lang }}",
|
||||||
|
href: "{{ .RelPermalink }}",
|
||||||
|
title: {{ .Title | jsonify }},
|
||||||
|
{{ with .Description -}}
|
||||||
|
description: {{ . | jsonify }},
|
||||||
|
{{ else -}}
|
||||||
|
description: {{ .Summary | plainify | jsonify }},
|
||||||
|
{{ end -}}
|
||||||
|
content: {{ .Plain | jsonify }}
|
||||||
|
})
|
||||||
|
{{ if ne (add $index 1) $len -}}
|
||||||
|
.add(
|
||||||
|
{{ end -}}
|
||||||
|
{{ end -}}
|
||||||
|
;
|
||||||
|
|
||||||
|
search.addEventListener('input', showResults, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function hideSuggestions(e) {
|
||||||
|
var isClickInsideElement = suggestions.contains(e.target);
|
||||||
|
|
||||||
|
if (!isClickInsideElement) {
|
||||||
|
suggestions.classList.add('d-none');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Source:
|
||||||
|
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
||||||
|
*/
|
||||||
|
function inputFocus(e) {
|
||||||
|
if (e.ctrlKey && e.key === '/' ) {
|
||||||
|
e.preventDefault();
|
||||||
|
search.focus();
|
||||||
|
}
|
||||||
|
if (e.key === 'Escape' ) {
|
||||||
|
search.blur();
|
||||||
|
suggestions.classList.add('d-none');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Source:
|
||||||
|
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||||
|
*/
|
||||||
|
function suggestionFocus(e) {
|
||||||
|
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||||
|
if (suggestionsHidden) return;
|
||||||
|
|
||||||
|
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
||||||
|
if (focusableSuggestions.length === 0) return;
|
||||||
|
|
||||||
|
const index = focusableSuggestions.indexOf(document.activeElement);
|
||||||
|
|
||||||
|
if (e.key === "ArrowUp") {
|
||||||
|
e.preventDefault();
|
||||||
|
const nextIndex = index > 0 ? index - 1 : 0;
|
||||||
|
focusableSuggestions[nextIndex].focus();
|
||||||
|
}
|
||||||
|
else if (e.key === "ArrowDown") {
|
||||||
|
e.preventDefault();
|
||||||
|
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
||||||
|
focusableSuggestions[nextIndex].focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Source:
|
||||||
|
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||||
|
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||||
|
*/
|
||||||
|
function showResults() {
|
||||||
|
const maxResult = 5;
|
||||||
|
var searchQuery = this.value;
|
||||||
|
// filter the results for the currently tagged language
|
||||||
|
const lang = document.documentElement.lang;
|
||||||
|
var results = index.search(searchQuery, { index: ['title', 'description', 'content'], limit: maxResult, tag: lang, enrich: true });
|
||||||
|
|
||||||
|
// flatten results since index.search() returns results for each indexed field
|
||||||
|
const flatResults = new Map(); // keyed by href to dedupe results
|
||||||
|
for (const result of results.flatMap(r => r.result)) {
|
||||||
|
if (flatResults.has(result.doc.href)) continue;
|
||||||
|
flatResults.set(result.doc.href, result.doc);
|
||||||
|
}
|
||||||
|
|
||||||
|
suggestions.innerHTML = "";
|
||||||
|
suggestions.classList.remove('d-none');
|
||||||
|
|
||||||
|
// inform user that no results were found
|
||||||
|
if (flatResults.size === 0 && searchQuery) {
|
||||||
|
const msg = suggestions.dataset.noResults;
|
||||||
|
const noResultsMessage = document.createElement('div')
|
||||||
|
noResultsMessage.innerHTML = `${msg} "<strong>${searchQuery}</strong>"`
|
||||||
|
noResultsMessage.classList.add("suggestion__no-results");
|
||||||
|
suggestions.appendChild(noResultsMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// construct a list of suggestions
|
||||||
|
for (const [href, doc] of flatResults) {
|
||||||
|
const entry = document.createElement('div');
|
||||||
|
suggestions.appendChild(entry);
|
||||||
|
|
||||||
|
const a = document.createElement('a');
|
||||||
|
a.href = href;
|
||||||
|
entry.appendChild(a);
|
||||||
|
|
||||||
|
const title = document.createElement('span');
|
||||||
|
title.classList.add('text-start');
|
||||||
|
title.textContent = doc.title;
|
||||||
|
title.classList.add("suggestion__title");
|
||||||
|
a.appendChild(title);
|
||||||
|
|
||||||
|
const description = document.createElement('span');
|
||||||
|
description.textContent = doc.description;
|
||||||
|
description.classList.add("suggestion__description");
|
||||||
|
a.appendChild(description);
|
||||||
|
|
||||||
|
suggestions.appendChild(entry);
|
||||||
|
|
||||||
|
if (suggestions.childElementCount == maxResult) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (search !== null && suggestions !== null) {
|
||||||
|
document.addEventListener('keydown', inputFocus);
|
||||||
|
document.addEventListener('keydown', suggestionFocus);
|
||||||
|
document.addEventListener('click', hideSuggestions);
|
||||||
|
initIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
{{- end -}}
|
@@ -1,157 +0,0 @@
|
|||||||
/*
|
|
||||||
Source:
|
|
||||||
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
|
||||||
*/
|
|
||||||
|
|
||||||
var suggestions = document.getElementById('suggestions');
|
|
||||||
var search = document.getElementById('search');
|
|
||||||
|
|
||||||
if (search !== null) {
|
|
||||||
document.addEventListener('keydown', inputFocus);
|
|
||||||
}
|
|
||||||
|
|
||||||
function inputFocus(e) {
|
|
||||||
if (e.ctrlKey && e.key === '/' ) {
|
|
||||||
e.preventDefault();
|
|
||||||
search.focus();
|
|
||||||
}
|
|
||||||
if (e.key === 'Escape' ) {
|
|
||||||
search.blur();
|
|
||||||
suggestions.classList.add('d-none');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener('click', function(event) {
|
|
||||||
|
|
||||||
var isClickInsideElement = suggestions.contains(event.target);
|
|
||||||
|
|
||||||
if (!isClickInsideElement) {
|
|
||||||
suggestions.classList.add('d-none');
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
|
||||||
Source:
|
|
||||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
|
||||||
*/
|
|
||||||
|
|
||||||
document.addEventListener('keydown',suggestionFocus);
|
|
||||||
|
|
||||||
function suggestionFocus(e) {
|
|
||||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
|
||||||
if (suggestionsHidden) return;
|
|
||||||
|
|
||||||
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
|
||||||
if (focusableSuggestions.length === 0) return;
|
|
||||||
|
|
||||||
const index = focusableSuggestions.indexOf(document.activeElement);
|
|
||||||
|
|
||||||
if (e.key === "ArrowUp") {
|
|
||||||
e.preventDefault();
|
|
||||||
const nextIndex = index > 0 ? index - 1 : 0;
|
|
||||||
focusableSuggestions[nextIndex].focus();
|
|
||||||
}
|
|
||||||
else if (e.key === "ArrowDown") {
|
|
||||||
e.preventDefault();
|
|
||||||
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
|
||||||
focusableSuggestions[nextIndex].focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Source:
|
|
||||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
|
||||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
var index = new FlexSearch.Document({
|
|
||||||
tokenize: "forward",
|
|
||||||
cache: 100,
|
|
||||||
document: {
|
|
||||||
id: 'id',
|
|
||||||
store: [
|
|
||||||
"href", "title", "description"
|
|
||||||
],
|
|
||||||
index: ["title", "description", "content"]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
|
|
||||||
|
|
||||||
{{ $list := (site.RegularPages) -}}
|
|
||||||
{{ $len := (len $list) -}}
|
|
||||||
|
|
||||||
index.add(
|
|
||||||
{{ range $index, $element := $list -}}
|
|
||||||
{
|
|
||||||
id: {{ $index }},
|
|
||||||
href: "{{ .RelPermalink }}",
|
|
||||||
title: {{ .Title | jsonify }},
|
|
||||||
{{ with .Description -}}
|
|
||||||
description: {{ . | jsonify }},
|
|
||||||
{{ else -}}
|
|
||||||
description: {{ .Summary | plainify | jsonify }},
|
|
||||||
{{ end -}}
|
|
||||||
content: {{ .Plain | jsonify }}
|
|
||||||
})
|
|
||||||
{{ if ne (add $index 1) $len -}}
|
|
||||||
.add(
|
|
||||||
{{ end -}}
|
|
||||||
{{ end -}}
|
|
||||||
;
|
|
||||||
|
|
||||||
search.addEventListener('input', show_results, true);
|
|
||||||
|
|
||||||
function show_results(){
|
|
||||||
const maxResult = 5;
|
|
||||||
var searchQuery = this.value;
|
|
||||||
var results = index.search(searchQuery, {limit: maxResult, enrich: true});
|
|
||||||
|
|
||||||
// flatten results since index.search() returns results for each indexed field
|
|
||||||
const flatResults = new Map(); // keyed by href to dedupe results
|
|
||||||
for (const result of results.flatMap(r => r.result)) {
|
|
||||||
if (flatResults.has(result.doc.href)) continue;
|
|
||||||
flatResults.set(result.doc.href, result.doc);
|
|
||||||
}
|
|
||||||
|
|
||||||
suggestions.innerHTML = "";
|
|
||||||
suggestions.classList.remove('d-none');
|
|
||||||
|
|
||||||
// inform user that no results were found
|
|
||||||
if (flatResults.size === 0 && searchQuery) {
|
|
||||||
const noResultsMessage = document.createElement('div')
|
|
||||||
noResultsMessage.innerHTML = `{{ T "ui_no_results" }} "<strong>${searchQuery}</strong>"`
|
|
||||||
noResultsMessage.classList.add("suggestion__no-results");
|
|
||||||
suggestions.appendChild(noResultsMessage);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// construct a list of suggestions
|
|
||||||
for(const [href, doc] of flatResults) {
|
|
||||||
const entry = document.createElement('div');
|
|
||||||
suggestions.appendChild(entry);
|
|
||||||
|
|
||||||
const a = document.createElement('a');
|
|
||||||
a.href = href;
|
|
||||||
entry.appendChild(a);
|
|
||||||
|
|
||||||
const title = document.createElement('span');
|
|
||||||
title.textContent = doc.title;
|
|
||||||
title.classList.add("suggestion__title");
|
|
||||||
a.appendChild(title);
|
|
||||||
|
|
||||||
const description = document.createElement('span');
|
|
||||||
description.textContent = doc.description;
|
|
||||||
description.classList.add("suggestion__description");
|
|
||||||
a.appendChild(description);
|
|
||||||
|
|
||||||
suggestions.appendChild(entry);
|
|
||||||
|
|
||||||
if(suggestions.childElementCount == maxResult) break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}());
|
|
26
assets/js/navbar.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
const navbar = document.querySelector('.navbar')
|
||||||
|
const toggler = document.getElementById('main-nav-toggler')
|
||||||
|
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||||
|
|
||||||
|
if (navbar !== null && toggler !== null) {
|
||||||
|
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||||
|
window.onscroll = () => {
|
||||||
|
if (window.scrollY > 75) {
|
||||||
|
navbar.classList.add('nav-active')
|
||||||
|
} else {
|
||||||
|
navbar.classList.remove('nav-active')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the navbar background color to opaque when expanded
|
||||||
|
toggler.onclick = () => {
|
||||||
|
navbar.classList.toggle('navbar-expanded')
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoke the navbar toggler for each mode switcher to collapse the main menu afterwards
|
||||||
|
for (let i = 0; i < modeSelectors.length; ++i) {
|
||||||
|
modeSelectors[i].onclick = () => {
|
||||||
|
toggler.click()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
assets/js/popover.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
|
||||||
|
// eslint-disable-next-line no-undef, no-unused-vars
|
||||||
|
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
|
10
assets/js/toast.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
// Bootstrap toast example: https://getbootstrap.com/docs/5.2/components/toasts/
|
||||||
|
const toastTrigger = document.getElementById('toastButton')
|
||||||
|
const toastLiveExample = document.getElementById('toastMessage')
|
||||||
|
if (toastTrigger) {
|
||||||
|
toastTrigger.addEventListener('click', () => {
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
const toast = new bootstrap.Toast(toastLiveExample)
|
||||||
|
toast.show()
|
||||||
|
})
|
||||||
|
}
|
4
assets/js/tooltip.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Bootstrap tooltip example: https://getbootstrap.com/docs/5.2/components/tooltips/
|
||||||
|
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
|
||||||
|
// eslint-disable-next-line no-unused-vars, no-undef
|
||||||
|
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
|
@@ -1,14 +1,19 @@
|
|||||||
// Define template variables
|
// Define template variables
|
||||||
$themeColor: {{ site.Params.style.themeColor | default "#007bff" }};
|
@import "hugo:vars";
|
||||||
|
|
||||||
// Import Bootstrap functions
|
|
||||||
@import "bootstrap/scss/functions";
|
|
||||||
|
|
||||||
// Include default variable overrides
|
// Include default variable overrides
|
||||||
@import "common/variables.scss";
|
@import "common/variables.scss";
|
||||||
|
@import "common/icons.scss";
|
||||||
|
|
||||||
|
// Import Bootstrap banner and functions
|
||||||
|
@import "bootstrap/scss/mixins/banner";
|
||||||
|
@include bsBanner("");
|
||||||
|
@import "bootstrap/scss/functions";
|
||||||
|
|
||||||
// Import Bootstrap configuration
|
// Import Bootstrap configuration
|
||||||
@import "bootstrap/scss/variables";
|
@import "bootstrap/scss/variables";
|
||||||
|
@import "bootstrap/scss/variables-dark.scss";
|
||||||
|
@import "bootstrap/scss/maps";
|
||||||
@import "bootstrap/scss/mixins";
|
@import "bootstrap/scss/mixins";
|
||||||
@import "bootstrap/scss/utilities";
|
@import "bootstrap/scss/utilities";
|
||||||
|
|
||||||
@@ -48,23 +53,50 @@ $themeColor: {{ site.Params.style.themeColor | default "#007bff" }};
|
|||||||
// Import Bootstrap helpers
|
// Import Bootstrap helpers
|
||||||
@import "bootstrap/scss/helpers";
|
@import "bootstrap/scss/helpers";
|
||||||
|
|
||||||
// Import Bootstrap utilities
|
|
||||||
@import "bootstrap/scss/utilities/api";
|
|
||||||
|
|
||||||
// Import Font Awesome
|
// Import Font Awesome
|
||||||
|
// scss-docs-start awesome
|
||||||
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
||||||
|
@import "@fortawesome/fontawesome-free/scss/regular";
|
||||||
@import "@fortawesome/fontawesome-free/scss/solid";
|
@import "@fortawesome/fontawesome-free/scss/solid";
|
||||||
@import "@fortawesome/fontawesome-free/scss/brands";
|
@import "@fortawesome/fontawesome-free/scss/brands";
|
||||||
|
// scss-docs-end awesome
|
||||||
|
|
||||||
// Import theme styles
|
// Import Hinode theme styles
|
||||||
@import "components/blockquote.scss";
|
@import "components/blockquote.scss";
|
||||||
@import "components/buttons.scss";
|
@import "components/buttons.scss";
|
||||||
@import "components/card.scss";
|
@import "components/card.scss";
|
||||||
|
@import "components/carousel.scss";
|
||||||
|
@import "components/clipboard.scss";
|
||||||
|
@import "components/command.scss";
|
||||||
@import "components/comments.scss";
|
@import "components/comments.scss";
|
||||||
@import "components/navbar.scss";
|
@import "components/navbar.scss";
|
||||||
@import "components/img.scss";
|
@import "components/img.scss";
|
||||||
|
@import "components/persona.scss";
|
||||||
|
@import "components/popover.scss";
|
||||||
@import "components/search.scss";
|
@import "components/search.scss";
|
||||||
|
@import "components/sidebar.scss";
|
||||||
|
@import "components/syntax.scss";
|
||||||
|
@import "components/toc.scss";
|
||||||
@import "components/vimeo.scss";
|
@import "components/vimeo.scss";
|
||||||
|
@import "common/animation.scss";
|
||||||
@import "common/styles.scss";
|
@import "common/styles.scss";
|
||||||
@import "layouts/reboot.scss";
|
@import "layouts/reboot.scss";
|
||||||
@import "layouts/type.scss";
|
@import "layouts/type.scss";
|
||||||
|
@import "common/export.scss";
|
||||||
|
@import "helpers/colored-links.scss";
|
||||||
|
@import "helpers/display.scss";
|
||||||
|
|
||||||
|
// TODO: include fonts with following statement in Dart Sass
|
||||||
|
// @if $import-fonts {
|
||||||
|
// @include meta.load-css(theme/fonts);
|
||||||
|
// }
|
||||||
|
|
||||||
|
{{ if (not (hasPrefix (lower site.Params.style.themeFontPath) "http")) }}
|
||||||
|
@import "theme/fonts.scss";
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
// Import theme placeholder
|
||||||
|
@import "theme/theme.scss";
|
||||||
|
|
||||||
|
// Import Bootstrap utilities API
|
||||||
|
@import "bootstrap/scss/utilities/api";
|
||||||
|
99
assets/scss/common/_animation.scss
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
.rotate-5 {
|
||||||
|
transform: rotate(5deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-n5 {
|
||||||
|
transform: rotate(-5deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
.reveal {
|
||||||
|
position: relative;
|
||||||
|
opacity: 0;
|
||||||
|
animation-iteration-count: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reveal.active {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active.fade-bottom {
|
||||||
|
animation: fade-bottom 1s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active.fade-bottom-5 {
|
||||||
|
animation: fade-bottom-5 1s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active.fade-bottom-n5 {
|
||||||
|
animation: fade-bottom-n5 1s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active.fade-left {
|
||||||
|
animation: fade-left 1s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active.fade-right {
|
||||||
|
animation: fade-right 1s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fade-bottom {
|
||||||
|
0% {
|
||||||
|
transform: translateY(50px);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fade-bottom-5 {
|
||||||
|
0% {
|
||||||
|
transform: translateY(50px) rotate(5deg);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateY(0) rotate(5deg);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fade-bottom-n5 {
|
||||||
|
0% {
|
||||||
|
transform: translateY(50px) rotate(-5deg);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateY(0) rotate(-5deg);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fade-left {
|
||||||
|
0% {
|
||||||
|
transform: translateX(-100px);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateX(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fade-right {
|
||||||
|
0% {
|
||||||
|
transform: translateX(100px);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateX(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
28
assets/scss/common/_export.scss
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
// stylelint-disable selector-pseudo-class-no-unknown
|
||||||
|
|
||||||
|
// scss-docs-start export
|
||||||
|
:hinode-theme {
|
||||||
|
--accordion-icon-active-color: #{$accordion-icon-active-color};
|
||||||
|
--accordion-icon-active-color-dark: #{$gray-300};
|
||||||
|
--accordion-icon-color: #{$accordion-icon-color};
|
||||||
|
--accordion-icon-color-dark: #{$gray-600};
|
||||||
|
--btn-close-color: #{$btn-close-color};
|
||||||
|
--btn-toggle-color: #{$btn-toggle-color};
|
||||||
|
--btn-toggle-color-dark: #{$gray-600};
|
||||||
|
--carousel-control-color: #{$carousel-control-color};
|
||||||
|
--form-check-input-checked-color: #{$form-check-input-checked-color};
|
||||||
|
--form-check-input-indeterminate-color: #{$form-check-input-indeterminate-color};
|
||||||
|
--form-feedback-icon-invalid-color: #{$form-feedback-icon-invalid-color};
|
||||||
|
--form-feedback-icon-valid-color: #{$form-feedback-icon-valid-color};
|
||||||
|
--form-select-indicator-color: #{$form-select-indicator-color};
|
||||||
|
--form-select-indicator-color-dark: #{$form-select-indicator-color-dark};
|
||||||
|
--form-switch-checked-color: #{$form-switch-checked-color};
|
||||||
|
--form-switch-color: #{$form-switch-color};
|
||||||
|
--form-switch-color-dark: #{$form-switch-color-dark};
|
||||||
|
--form-switch-focus-color: #{$form-switch-focus-color};
|
||||||
|
--navbar-dark-color: #{$navbar-dark-color};
|
||||||
|
--navbar-light-icon-color: rgba($body-color, 0.75); // TODO: See https://github.com/twbs/bootstrap/pull/37720
|
||||||
|
}
|
||||||
|
|
||||||
|
// scss-docs-end export
|
||||||
|
// stylelint-enable selector-pseudo-class-no-unknown
|
25
assets/scss/common/_icons.scss
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
// scss-docs-start icons
|
||||||
|
$form-check-input-checked-bg-image: url("/icons/form-check-input-checked-bg-image.svg") !default;
|
||||||
|
$form-check-radio-checked-bg-image: url("/icons/form-check-radio-checked-bg-image.svg") !default;
|
||||||
|
$form-check-input-indeterminate-bg-image: url("/icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||||
|
$form-switch-bg-image: url("/icons/form-switch-bg-image.svg") !default;
|
||||||
|
$form-switch-bg-image-dark: url("/icons/form-switch-bg-image-dark.svg") !default;
|
||||||
|
$form-switch-focus-bg-image: url("/icons/form-switch-focus-bg-image.svg") !default;
|
||||||
|
$form-switch-checked-bg-image: url("/icons/form-switch-checked-bg-image.svg") !default;
|
||||||
|
$form-select-indicator: url("/icons/form-select-indicator.svg") !default;
|
||||||
|
$form-select-indicator-dark: url("/icons/form-select-indicator-dark.svg") !default;
|
||||||
|
$form-feedback-icon-valid: url("/icons/form-feedback-icon-valid.svg") !default;
|
||||||
|
$form-feedback-icon-invalid: url("/icons/form-feedback-icon-invalid.svg") !default;
|
||||||
|
$navbar-light-toggler-icon-bg: url("/icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||||
|
$navbar-dark-toggler-icon-bg: url("/icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||||
|
$accordion-button-icon: url("/icons/accordion-button-icon.svg") !default;
|
||||||
|
$accordion-button-icon-dark: url("/icons/accordion-button-icon-dark.svg") !default;
|
||||||
|
$accordion-button-active-icon: url("/icons/accordion-button-active-icon.svg") !default;
|
||||||
|
$accordion-button-active-icon-dark: url("/icons/accordion-button-active-icon-dark.svg") !default;
|
||||||
|
$carousel-control-prev-icon-bg: url("/icons/carousel-control-prev-icon-bg.svg") !default;
|
||||||
|
$carousel-control-next-icon-bg: url("/icons/carousel-control-next-icon-bg.svg") !default;
|
||||||
|
$btn-close-bg: url("/icons/btn-close-bg.svg") !default;
|
||||||
|
$btn-toggle: url("/icons/btn-toggle.svg") !default;
|
||||||
|
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
|
||||||
|
|
||||||
|
// scss-docs-end icons
|
@@ -15,44 +15,135 @@ a:active {
|
|||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
.tickmark li::marker {
|
||||||
// Table of contents sidebar
|
content: "✓ ";
|
||||||
//
|
|
||||||
.toc {
|
|
||||||
grid-area: toc;
|
|
||||||
top: 5rem;
|
|
||||||
right: 0;
|
|
||||||
z-index: 2;
|
|
||||||
height: calc(100vh - 7rem);
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav {
|
.anchor
|
||||||
font-size: 0.875rem;
|
{
|
||||||
|
color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav ul {
|
.heading:hover .anchor
|
||||||
padding-left: 0;
|
{
|
||||||
list-style: none;
|
transition: 0.25s ease-in-out;
|
||||||
|
color: $primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav ul ul {
|
$utilities: map-merge(
|
||||||
padding-left: 1rem;
|
$utilities,
|
||||||
margin-top: 0.25rem;
|
(
|
||||||
|
"padding-start-wide": (
|
||||||
|
property: padding-left,
|
||||||
|
responsive: true,
|
||||||
|
class: psw,
|
||||||
|
values: (
|
||||||
|
0: 0,
|
||||||
|
1: 1.5 * $spacer,
|
||||||
|
2: 3 * $spacer,
|
||||||
|
3: 6 * $spacer,
|
||||||
|
4: 9 * $spacer,
|
||||||
|
5: 12 * $spacer,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"padding-top-wide": (
|
||||||
|
property: padding-top,
|
||||||
|
responsive: true,
|
||||||
|
class: ptw,
|
||||||
|
values: (
|
||||||
|
0: 0,
|
||||||
|
1: 1.5 * $spacer,
|
||||||
|
2: 3 * $spacer,
|
||||||
|
3: 6 * $spacer,
|
||||||
|
4: 9 * $spacer,
|
||||||
|
5: 12 * $spacer,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"font-size": map-merge(
|
||||||
|
map-get($utilities, "font-size"),
|
||||||
|
( responsive: true ),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
@media screen and (orientation: portrait) {
|
||||||
|
.min-vh-custom {
|
||||||
|
min-height: 25vh !important
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav li {
|
@media screen and (orientation: landscape) {
|
||||||
margin-bottom: 0.25rem;
|
.min-vh-custom {
|
||||||
|
min-height: 50vh !important
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav a {
|
:root {
|
||||||
color: inherit;
|
--nav-height: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav a:not(:hover) {
|
@include media-breakpoint-up(sm) {
|
||||||
text-decoration: none;
|
.ratio-section {
|
||||||
|
min-height: calc(min(100vh, 576px) - var(--nav-height));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav a code {
|
@include media-breakpoint-up(md) {
|
||||||
font: inherit;
|
.ratio-section {
|
||||||
|
min-height: calc(min(100vh, 768px) - var(--nav-height));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-up(lg) {
|
||||||
|
.ratio-section {
|
||||||
|
min-height: calc(min(100vh, 992px) - var(--nav-height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-up(xl) {
|
||||||
|
.ratio-section {
|
||||||
|
min-height: calc(min(100vh, 1200px) - var(--nav-height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-up(xxl) {
|
||||||
|
.ratio-section {
|
||||||
|
min-height: calc(min(100vh, 1400px) - var(--nav-height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$utilities: map-merge(
|
||||||
|
$utilities,
|
||||||
|
(
|
||||||
|
"padding-start-wide": (
|
||||||
|
property: padding-left,
|
||||||
|
responsive: true,
|
||||||
|
class: psw,
|
||||||
|
values: (
|
||||||
|
0: 0,
|
||||||
|
1: 1.5 * $spacer,
|
||||||
|
2: 3 * $spacer,
|
||||||
|
3: 6 * $spacer,
|
||||||
|
4: 9 * $spacer,
|
||||||
|
5: 12 * $spacer,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"padding-top-wide": (
|
||||||
|
property: padding-top,
|
||||||
|
responsive: true,
|
||||||
|
class: ptw,
|
||||||
|
values: (
|
||||||
|
0: 0,
|
||||||
|
1: 1.5 * $spacer,
|
||||||
|
2: 3 * $spacer,
|
||||||
|
3: 6 * $spacer,
|
||||||
|
4: 9 * $spacer,
|
||||||
|
5: 12 * $spacer,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"font-size": map-merge(
|
||||||
|
map-get($utilities, "font-size"),
|
||||||
|
( responsive: true ),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
// Bootstrap variables overrides for theme
|
// Bootstrap variables overrides for theme
|
||||||
$primary: $themeColor;
|
$enable-negative-margins: true;
|
||||||
|
$enable-important-utilities: true !default;
|
||||||
|
|
||||||
// Font awesome variables overrides for theme
|
// Font awesome variables overrides for theme
|
||||||
$fa-font-path: "../fonts";
|
$fa-font-path: "../fonts";
|
||||||
@@ -7,10 +8,23 @@ $fa-font-path: "../fonts";
|
|||||||
// Remove the border from the focused navigation toggler
|
// Remove the border from the focused navigation toggler
|
||||||
$navbar-toggler-focus-width: 0 !default;
|
$navbar-toggler-focus-width: 0 !default;
|
||||||
|
|
||||||
$font-family-sans-serif: "Inter", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
// scss-docs-start font
|
||||||
|
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||||
$headings-font-weight: 600 !default;
|
$headings-font-weight: 600 !default;
|
||||||
$font-weight-lighter: lighter !default;
|
$font-weight-lighter: lighter !default;
|
||||||
$font-weight-light: 200 !default;
|
$font-weight-light: 200 !default;
|
||||||
$font-weight-normal: 300 !default;
|
$font-weight-normal: 300 !default;
|
||||||
$font-weight-bold: 600 !default;
|
$font-weight-bold: 600 !default;
|
||||||
$font-weight-bolder: bolder !default;
|
$font-weight-bolder: bolder !default;
|
||||||
|
|
||||||
|
strong {
|
||||||
|
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
// scss-docs-end font
|
||||||
|
|
||||||
|
$black: #000 !default;
|
||||||
|
$btn-toggle-color: $black !default;
|
||||||
|
|
||||||
|
$carousel-dark-indicator-active-bg: #ffffff !default;
|
||||||
|
$carousel-dark-caption-color: #ffffff !default;
|
||||||
|
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||||
|
@@ -4,5 +4,5 @@
|
|||||||
.btn-primary:active,
|
.btn-primary:active,
|
||||||
.btn-primary.active,
|
.btn-primary.active,
|
||||||
.open > .dropdown-toggle.btn-primary {
|
.open > .dropdown-toggle.btn-primary {
|
||||||
color: #fff !important;
|
color: #fff if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
@@ -6,16 +6,8 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-img-wrap::after {
|
.card-zoom {
|
||||||
content: "";
|
cursor: pointer;
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: rgba(255, 255, 255, 0.3);
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity 0.25s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-img-wrap img {
|
.card-img-wrap img {
|
||||||
@@ -23,20 +15,59 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-img-wrap:hover img {
|
.card-zoom::after .card-img-wrap img {
|
||||||
transform: scale(1.1);
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.3);
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.25s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-img-wrap:hover::after {
|
.card-zoom:hover .card-img-wrap img {
|
||||||
|
transform: scale(1.1);
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-zoom:hover::after .card-img-wrap img {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-card {
|
.card-emphasize {
|
||||||
transition: 0.3s transform cubic-bezier(0.155, 1.105, 0.295, 1.12), 0.3s box-shadow, 0.3s -webkit-transform cubic-bezier(0.155, 1.105, 0.295, 1.12);
|
transition: 0.3s transform cubic-bezier(0.155, 1.105, 0.295, 1.12), 0.3s box-shadow, 0.3s -webkit-transform cubic-bezier(0.155, 1.105, 0.295, 1.12);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-card:hover {
|
.card-emphasize:hover {
|
||||||
transform: scale(1.01);
|
transform: scale(1.01);
|
||||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
|
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// stylelint-disable annotation-no-unknown
|
||||||
|
.card-body-link {
|
||||||
|
color: $body-color if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
.card-body-link {
|
||||||
|
color: $gray-500 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-zoom card-body-link,
|
||||||
|
.card-body-link {
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// stylelint-enable annotation-no-unknown
|
||||||
|
|
||||||
|
// make tag-link clickable on top of the stretched-link.
|
||||||
|
.card .tag-link {
|
||||||
|
z-index: 2;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
8
assets/scss/components/_carousel.scss
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.gradient {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
41
assets/scss/components/_clipboard.scss
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
// Adapted from https://simplernerd.com/hugo-add-copy-to-clipboard-button/
|
||||||
|
|
||||||
|
.clipboard-button {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
padding: 2px 7px 5px;
|
||||||
|
margin: 5px;
|
||||||
|
color: $secondary;
|
||||||
|
background-color: transparent;
|
||||||
|
border-style: none;
|
||||||
|
font-size: 0.8em;
|
||||||
|
z-index: 1;
|
||||||
|
opacity: 0;
|
||||||
|
transition: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clipboard-button > svg {
|
||||||
|
fill: $secondary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clipboard-button:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
color: $primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clipboard-button:hover > svg {
|
||||||
|
fill: $primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clipboard-button:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight:hover > .clipboard-button {
|
||||||
|
opacity: 1;
|
||||||
|
transition: 0.2s;
|
||||||
|
}
|
43
assets/scss/components/_command.scss
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/* Adapted from PrismJS 1.29.0
|
||||||
|
https://prismjs.com/download.html#themes=prism&plugins=command-line */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prism.js default theme for JavaScript, CSS and HTML
|
||||||
|
* Based on dabblet (http://dabblet.com)
|
||||||
|
* @author Lea Verou
|
||||||
|
*/
|
||||||
|
|
||||||
|
.command-line-prompt {
|
||||||
|
border-right: 1px solid #999;
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
font-size: 100%;
|
||||||
|
letter-spacing: -1px;
|
||||||
|
margin-right: 1em;
|
||||||
|
pointer-events: none;
|
||||||
|
text-align: right;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt > span::before {
|
||||||
|
opacity: 0.7;
|
||||||
|
content: " ";
|
||||||
|
display: block;
|
||||||
|
padding-right: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt > span[data-prompt]::before {
|
||||||
|
content: attr(data-prompt);
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line-prompt > span[data-continuation-prompt]::before {
|
||||||
|
content: attr(data-continuation-prompt);
|
||||||
|
}
|
||||||
|
|
||||||
|
.command-line span.token.output {
|
||||||
|
/* Make shell output lines a bit lighter to distinguish them from shell commands */
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
@@ -8,3 +8,9 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-img-h100 {
|
||||||
|
width: auto;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
@@ -1,16 +1,35 @@
|
|||||||
|
// stylelint-disable annotation-no-unknown
|
||||||
|
|
||||||
// Source: https://jsfiddle.net/njhgr40m/
|
// Source: https://jsfiddle.net/njhgr40m/
|
||||||
|
|
||||||
|
.navbar {
|
||||||
|
transition: 0.5s ease-in-out;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-active, .navbar-expanded {
|
||||||
|
background-color: var(--bs-body-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-expanded {
|
||||||
|
box-shadow: $box-shadow-sm;
|
||||||
|
}
|
||||||
|
|
||||||
/* Remove border from toggler */
|
/* Remove border from toggler */
|
||||||
.navbar-toggler {
|
.navbar-toggler {
|
||||||
border: 0 !important;
|
border: 0 if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-toggler:focus,
|
.navbar-toggler:focus,
|
||||||
.navbar-toggler:active,
|
.navbar-toggler:active,
|
||||||
.navbar-toggler-icon:focus {
|
.navbar-toggler-icon:focus {
|
||||||
outline: none !important;
|
outline: none if($enable-important-utilities, !important, null);
|
||||||
box-shadow: none !important;
|
box-shadow: none if($enable-important-utilities, !important, null);
|
||||||
border: 0 !important;
|
border: 0 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fw-30 {
|
||||||
|
width: 30px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Lines of the Toggler */
|
/* Lines of the Toggler */
|
||||||
@@ -65,3 +84,17 @@
|
|||||||
.navbar-toggler.collapsed .toggler-icon {
|
.navbar-toggler.collapsed .toggler-icon {
|
||||||
background-color: #777;
|
background-color: #777;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.emphasis {
|
||||||
|
background-color: $black if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
.emphasis {
|
||||||
|
background-color: $white if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// stylelint-enable annotation-no-unknown
|
||||||
|
3
assets/scss/components/_persona.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.persona {
|
||||||
|
min-height: 320px !important
|
||||||
|
}
|
3
assets/scss/components/_popover.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.popover-header {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
@@ -11,7 +11,7 @@
|
|||||||
.form-control.is-search {
|
.form-control.is-search {
|
||||||
padding-right: 4rem;
|
padding-right: 4rem;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
background: $gray-100;
|
background: var(--bs-tertiary-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-control.is-search:focus {
|
.form-control.is-search:focus {
|
||||||
@@ -29,9 +29,9 @@
|
|||||||
padding-right: 0.3125rem;
|
padding-right: 0.3125rem;
|
||||||
padding-left: 0.3125rem;
|
padding-left: 0.3125rem;
|
||||||
font-size: $font-size-base * 0.75;
|
font-size: $font-size-base * 0.75;
|
||||||
color: $gray-700;
|
color: var(--bs-secondary-color);
|
||||||
content: "Ctrl + /";
|
content: "Ctrl + /";
|
||||||
border: 1px solid $gray-300;
|
border: 1px solid var(--bs-border-color);
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,12 +59,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#suggestions a:focus {
|
#suggestions a:focus {
|
||||||
background: $gray-100;
|
background-color: var(--bs-tertiary-bg);
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#suggestions div:not(:first-child) {
|
#suggestions div:not(:first-child) {
|
||||||
border-top: 1px dashed $gray-200;
|
border-top: 1px dashed var(--bs-border-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
#suggestions div:first-child {
|
#suggestions div:first-child {
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#suggestions a:hover {
|
#suggestions a:hover {
|
||||||
background: $gray-100;
|
background-color: var(--bs-tertiary-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#suggestions span {
|
#suggestions span {
|
||||||
@@ -86,12 +86,11 @@
|
|||||||
|
|
||||||
.suggestion__title {
|
.suggestion__title {
|
||||||
font-weight: $headings-font-weight;
|
font-weight: $headings-font-weight;
|
||||||
color: $black;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.suggestion__description,
|
.suggestion__description,
|
||||||
.suggestion__no-results {
|
.suggestion__no-results {
|
||||||
color: $gray-700;
|
color: var(--bs-secondary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
@include media-breakpoint-up(sm) {
|
||||||
@@ -106,7 +105,7 @@
|
|||||||
.suggestion__title {
|
.suggestion__title {
|
||||||
width: 9rem;
|
width: 9rem;
|
||||||
padding-right: 1rem;
|
padding-right: 1rem;
|
||||||
border-right: 1px solid $gray-200;
|
border-right: 1px solid var(--bs-border-color);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
123
assets/scss/components/_sidebar.scss
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
// scss-docs-start sidebar
|
||||||
|
.sidebar {
|
||||||
|
top: $navbar-offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-overflow {
|
||||||
|
top: $navbar-offset;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-item {
|
||||||
|
color: rgba(0, 0, 0, 0.65);
|
||||||
|
margin-left: 0 !important;
|
||||||
|
padding-left: 0.85rem !important;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
&.active,
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-toggle {
|
||||||
|
padding: 0.25rem 0.5rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: rgba(0, 0, 0, 0.65);
|
||||||
|
background-color: transparent;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: black;
|
||||||
|
background-color: tint-color($primary, 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
width: 1.25em;
|
||||||
|
line-height: 0;
|
||||||
|
content: $btn-toggle;
|
||||||
|
transition: transform 0.35s ease;
|
||||||
|
transform-origin: 0.5em 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-toggle[aria-expanded="true"] {
|
||||||
|
color: black;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-toggle-nav a {
|
||||||
|
padding: 0.1875rem 0.5rem;
|
||||||
|
margin-top: 0.125rem;
|
||||||
|
margin-left: 1.25rem;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background-color: tint-color($primary, 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
.sidebar-item {
|
||||||
|
color: var(--bs-tertiary-color);
|
||||||
|
margin-left: 0 !important;
|
||||||
|
padding-left: 0.85rem !important;
|
||||||
|
|
||||||
|
&.active,
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: var(--bs-secondary-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-toggle {
|
||||||
|
color: var(--bs-tertiary-color);
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: $secondary;
|
||||||
|
background-color: tint-color($primary, 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: $btn-toggle-dark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-toggle[aria-expanded="true"] {
|
||||||
|
color: var(--bs-secondary-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-toggle-nav a {
|
||||||
|
padding: 0.1875rem 0.5rem;
|
||||||
|
margin-top: 0.125rem;
|
||||||
|
margin-left: 1.25rem;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: $secondary;
|
||||||
|
background-color: tint-color($primary, 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// scss-docs-end sidebar
|
||||||
|
|
||||||
|
.dropdown-toggle {
|
||||||
|
outline: 0;
|
||||||
|
}
|
86
assets/scss/components/_syntax-dark.scss
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
/* Background */ .bg { color: #c9d1d9; background-color: #0d1117; }
|
||||||
|
/* PreWrapper */ .chroma { color: #c9d1d9; background-color: #0d1117; }
|
||||||
|
/* Other */ .chroma .x { }
|
||||||
|
/* Error */ .chroma .err { color: #f85149 }
|
||||||
|
/* CodeLine */ .chroma .cl { }
|
||||||
|
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||||
|
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||||
|
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||||
|
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||||
|
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
|
||||||
|
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
|
||||||
|
/* Line */ .chroma .line { display: flex; }
|
||||||
|
/* Keyword */ .chroma .k { color: #ff7b72 }
|
||||||
|
/* KeywordConstant */ .chroma .kc { color: #79c0ff }
|
||||||
|
/* KeywordDeclaration */ .chroma .kd { color: #ff7b72 }
|
||||||
|
/* KeywordNamespace */ .chroma .kn { color: #ff7b72 }
|
||||||
|
/* KeywordPseudo */ .chroma .kp { color: #79c0ff }
|
||||||
|
/* KeywordReserved */ .chroma .kr { color: #ff7b72 }
|
||||||
|
/* KeywordType */ .chroma .kt { color: #ff7b72 }
|
||||||
|
/* Name */ .chroma .n { }
|
||||||
|
/* NameAttribute */ .chroma .na { }
|
||||||
|
/* NameBuiltin */ .chroma .nb { }
|
||||||
|
/* NameBuiltinPseudo */ .chroma .bp { }
|
||||||
|
/* NameClass */ .chroma .nc { color: #f0883e; font-weight: bold }
|
||||||
|
/* NameConstant */ .chroma .no { color: #79c0ff; font-weight: bold }
|
||||||
|
/* NameDecorator */ .chroma .nd { color: #d2a8ff; font-weight: bold }
|
||||||
|
/* NameEntity */ .chroma .ni { color: #ffa657 }
|
||||||
|
/* NameException */ .chroma .ne { color: #f0883e; font-weight: bold }
|
||||||
|
/* NameFunction */ .chroma .nf { color: #d2a8ff; font-weight: bold }
|
||||||
|
/* NameFunctionMagic */ .chroma .fm { }
|
||||||
|
/* NameLabel */ .chroma .nl { color: #79c0ff; font-weight: bold }
|
||||||
|
/* NameNamespace */ .chroma .nn { color: #ff7b72 }
|
||||||
|
/* NameOther */ .chroma .nx { }
|
||||||
|
/* NameProperty */ .chroma .py { color: #79c0ff }
|
||||||
|
/* NameTag */ .chroma .nt { color: #7ee787 }
|
||||||
|
/* NameVariable */ .chroma .nv { color: #79c0ff }
|
||||||
|
/* NameVariableClass */ .chroma .vc { }
|
||||||
|
/* NameVariableGlobal */ .chroma .vg { }
|
||||||
|
/* NameVariableInstance */ .chroma .vi { }
|
||||||
|
/* NameVariableMagic */ .chroma .vm { }
|
||||||
|
/* Literal */ .chroma .l { color: #a5d6ff }
|
||||||
|
/* LiteralDate */ .chroma .ld { color: #79c0ff }
|
||||||
|
/* LiteralString */ .chroma .s { color: #a5d6ff }
|
||||||
|
/* LiteralStringAffix */ .chroma .sa { color: #79c0ff }
|
||||||
|
/* LiteralStringBacktick */ .chroma .sb { color: #a5d6ff }
|
||||||
|
/* LiteralStringChar */ .chroma .sc { color: #a5d6ff }
|
||||||
|
/* LiteralStringDelimiter */ .chroma .dl { color: #79c0ff }
|
||||||
|
/* LiteralStringDoc */ .chroma .sd { color: #a5d6ff }
|
||||||
|
/* LiteralStringDouble */ .chroma .s2 { color: #a5d6ff }
|
||||||
|
/* LiteralStringEscape */ .chroma .se { color: #79c0ff }
|
||||||
|
/* LiteralStringHeredoc */ .chroma .sh { color: #79c0ff }
|
||||||
|
/* LiteralStringInterpol */ .chroma .si { color: #a5d6ff }
|
||||||
|
/* LiteralStringOther */ .chroma .sx { color: #a5d6ff }
|
||||||
|
/* LiteralStringRegex */ .chroma .sr { color: #79c0ff }
|
||||||
|
/* LiteralStringSingle */ .chroma .s1 { color: #a5d6ff }
|
||||||
|
/* LiteralStringSymbol */ .chroma .ss { color: #a5d6ff }
|
||||||
|
/* LiteralNumber */ .chroma .m { color: #a5d6ff }
|
||||||
|
/* LiteralNumberBin */ .chroma .mb { color: #a5d6ff }
|
||||||
|
/* LiteralNumberFloat */ .chroma .mf { color: #a5d6ff }
|
||||||
|
/* LiteralNumberHex */ .chroma .mh { color: #a5d6ff }
|
||||||
|
/* LiteralNumberInteger */ .chroma .mi { color: #a5d6ff }
|
||||||
|
/* LiteralNumberIntegerLong */ .chroma .il { color: #a5d6ff }
|
||||||
|
/* LiteralNumberOct */ .chroma .mo { color: #a5d6ff }
|
||||||
|
/* Operator */ .chroma .o { color: #ff7b72; font-weight: bold }
|
||||||
|
/* OperatorWord */ .chroma .ow { color: #ff7b72; font-weight: bold }
|
||||||
|
/* Punctuation */ .chroma .p { }
|
||||||
|
/* Comment */ .chroma .c { color: #8b949e; font-style: italic }
|
||||||
|
/* CommentHashbang */ .chroma .ch { color: #8b949e; font-style: italic }
|
||||||
|
/* CommentMultiline */ .chroma .cm { color: #8b949e; font-style: italic }
|
||||||
|
/* CommentSingle */ .chroma .c1 { color: #8b949e; font-style: italic }
|
||||||
|
/* CommentSpecial */ .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic }
|
||||||
|
/* CommentPreproc */ .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic }
|
||||||
|
/* CommentPreprocFile */ .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic }
|
||||||
|
/* Generic */ .chroma .g { }
|
||||||
|
/* GenericDeleted */ .chroma .gd { color: #ffa198; background-color: #490202 }
|
||||||
|
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||||
|
/* GenericError */ .chroma .gr { color: #ffa198 }
|
||||||
|
/* GenericHeading */ .chroma .gh { color: #79c0ff; font-weight: bold }
|
||||||
|
/* GenericInserted */ .chroma .gi { color: #56d364; background-color: #0f5323 }
|
||||||
|
/* GenericOutput */ .chroma .go { color: #8b949e }
|
||||||
|
/* GenericPrompt */ .chroma .gp { color: #8b949e }
|
||||||
|
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||||
|
/* GenericSubheading */ .chroma .gu { color: #79c0ff }
|
||||||
|
/* GenericTraceback */ .chroma .gt { color: #ff7b72 }
|
||||||
|
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||||
|
/* TextWhitespace */ .chroma .w { color: #6e7681 }
|
86
assets/scss/components/_syntax-light.scss
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
/* Background */ .bg { background-color: #ffffff; }
|
||||||
|
/* PreWrapper */ .chroma { background-color: #ffffff; }
|
||||||
|
/* Other */ .chroma .x { }
|
||||||
|
/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
|
||||||
|
/* CodeLine */ .chroma .cl { }
|
||||||
|
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||||
|
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||||
|
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||||
|
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||||
|
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||||
|
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||||
|
/* Line */ .chroma .line { display: flex; }
|
||||||
|
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
|
||||||
|
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
|
||||||
|
/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold }
|
||||||
|
/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold }
|
||||||
|
/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold }
|
||||||
|
/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold }
|
||||||
|
/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold }
|
||||||
|
/* Name */ .chroma .n { }
|
||||||
|
/* NameAttribute */ .chroma .na { color: #008080 }
|
||||||
|
/* NameBuiltin */ .chroma .nb { color: #0086b3 }
|
||||||
|
/* NameBuiltinPseudo */ .chroma .bp { color: #999999 }
|
||||||
|
/* NameClass */ .chroma .nc { color: #445588; font-weight: bold }
|
||||||
|
/* NameConstant */ .chroma .no { color: #008080 }
|
||||||
|
/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold }
|
||||||
|
/* NameEntity */ .chroma .ni { color: #800080 }
|
||||||
|
/* NameException */ .chroma .ne { color: #990000; font-weight: bold }
|
||||||
|
/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold }
|
||||||
|
/* NameFunctionMagic */ .chroma .fm { }
|
||||||
|
/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold }
|
||||||
|
/* NameNamespace */ .chroma .nn { color: #555555 }
|
||||||
|
/* NameOther */ .chroma .nx { }
|
||||||
|
/* NameProperty */ .chroma .py { }
|
||||||
|
/* NameTag */ .chroma .nt { color: #000080 }
|
||||||
|
/* NameVariable */ .chroma .nv { color: #008080 }
|
||||||
|
/* NameVariableClass */ .chroma .vc { color: #008080 }
|
||||||
|
/* NameVariableGlobal */ .chroma .vg { color: #008080 }
|
||||||
|
/* NameVariableInstance */ .chroma .vi { color: #008080 }
|
||||||
|
/* NameVariableMagic */ .chroma .vm { }
|
||||||
|
/* Literal */ .chroma .l { }
|
||||||
|
/* LiteralDate */ .chroma .ld { }
|
||||||
|
/* LiteralString */ .chroma .s { color: #dd1144 }
|
||||||
|
/* LiteralStringAffix */ .chroma .sa { color: #dd1144 }
|
||||||
|
/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 }
|
||||||
|
/* LiteralStringChar */ .chroma .sc { color: #dd1144 }
|
||||||
|
/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 }
|
||||||
|
/* LiteralStringDoc */ .chroma .sd { color: #dd1144 }
|
||||||
|
/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 }
|
||||||
|
/* LiteralStringEscape */ .chroma .se { color: #dd1144 }
|
||||||
|
/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 }
|
||||||
|
/* LiteralStringInterpol */ .chroma .si { color: #dd1144 }
|
||||||
|
/* LiteralStringOther */ .chroma .sx { color: #dd1144 }
|
||||||
|
/* LiteralStringRegex */ .chroma .sr { color: #009926 }
|
||||||
|
/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 }
|
||||||
|
/* LiteralStringSymbol */ .chroma .ss { color: #990073 }
|
||||||
|
/* LiteralNumber */ .chroma .m { color: #009999 }
|
||||||
|
/* LiteralNumberBin */ .chroma .mb { color: #009999 }
|
||||||
|
/* LiteralNumberFloat */ .chroma .mf { color: #009999 }
|
||||||
|
/* LiteralNumberHex */ .chroma .mh { color: #009999 }
|
||||||
|
/* LiteralNumberInteger */ .chroma .mi { color: #009999 }
|
||||||
|
/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 }
|
||||||
|
/* LiteralNumberOct */ .chroma .mo { color: #009999 }
|
||||||
|
/* Operator */ .chroma .o { color: #000000; font-weight: bold }
|
||||||
|
/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold }
|
||||||
|
/* Punctuation */ .chroma .p { }
|
||||||
|
/* Comment */ .chroma .c { color: #999988; font-style: italic }
|
||||||
|
/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic }
|
||||||
|
/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic }
|
||||||
|
/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic }
|
||||||
|
/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic }
|
||||||
|
/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic }
|
||||||
|
/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic }
|
||||||
|
/* Generic */ .chroma .g { }
|
||||||
|
/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
|
||||||
|
/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
|
||||||
|
/* GenericError */ .chroma .gr { color: #aa0000 }
|
||||||
|
/* GenericHeading */ .chroma .gh { color: #999999 }
|
||||||
|
/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
|
||||||
|
/* GenericOutput */ .chroma .go { color: #888888 }
|
||||||
|
/* GenericPrompt */ .chroma .gp { color: #555555 }
|
||||||
|
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||||
|
/* GenericSubheading */ .chroma .gu { color: #aaaaaa }
|
||||||
|
/* GenericTraceback */ .chroma .gt { color: #aa0000 }
|
||||||
|
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||||
|
/* TextWhitespace */ .chroma .w { color: #bbbbbb }
|
40
assets/scss/components/_syntax.scss
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
// stylelint-disable annotation-no-unknown
|
||||||
|
@import "syntax-light";
|
||||||
|
|
||||||
|
.bg,
|
||||||
|
.chroma,
|
||||||
|
.chroma .err {
|
||||||
|
// set to transparent background to avoid rendering issues with example shortcode
|
||||||
|
background-color: transparent if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.syntax-highlight {
|
||||||
|
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-background {
|
||||||
|
background-color: var(--bs-secondary-bg) if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
[data-bs-theme="dark"] {
|
||||||
|
@import "syntax-dark"; // stylelint-disable-line no-invalid-position-at-import-rule
|
||||||
|
|
||||||
|
.bg,
|
||||||
|
.chroma,
|
||||||
|
.chroma .err {
|
||||||
|
// set to transparent background to avoid rendering issues with example shortcode
|
||||||
|
background-color: transparent if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.syntax-highlight {
|
||||||
|
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg,
|
||||||
|
.chroma {
|
||||||
|
color: #c9d1d9 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// stylelint-enable annotation-no-unknown
|
67
assets/scss/components/_toc.scss
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
//
|
||||||
|
// Table of contents sidebar & drop-down panel
|
||||||
|
//
|
||||||
|
// scss-docs-start toc
|
||||||
|
.toc-sidebar {
|
||||||
|
grid-area: toc;
|
||||||
|
right: 0;
|
||||||
|
z-index: 2;
|
||||||
|
height: calc(100vh - 5rem);
|
||||||
|
overflow-y: auto;
|
||||||
|
top: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// scss-docs-end toc
|
||||||
|
|
||||||
|
.toc nav {
|
||||||
|
font-size: 0.875rem;
|
||||||
|
margin-bottom: -0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc nav ul {
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc nav ul ul {
|
||||||
|
padding-left: 1rem;
|
||||||
|
margin-top: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc nav li {
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc nav a {
|
||||||
|
color: inherit;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--bs-primary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc nav a:not(:hover) {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc nav a code {
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc-button {
|
||||||
|
--bs-btn-hover-color: var(--bs-primary);
|
||||||
|
--bs-btn-hover-bg: var(--bs-body-bg);
|
||||||
|
--bs-btn-hover-border-color: var(--bs-primary);
|
||||||
|
--bs-btn-active-color: var(--bs-primary);
|
||||||
|
--bs-btn-active-bg: var(--bs-body-bg);
|
||||||
|
--bs-btn-active-border-color: var(--bs-primary);
|
||||||
|
|
||||||
|
&.active,
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: var(--bs-primary);
|
||||||
|
border-color: var(--bs-primary);
|
||||||
|
box-shadow: 0 0 0 4px var(--bs-primary-border-subtle);
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
39
assets/scss/helpers/_colored-links.scss
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
// scss-docs-start colored-links
|
||||||
|
$custom-colors: (
|
||||||
|
"primary": "light",
|
||||||
|
"secondary": "light",
|
||||||
|
"success": "light",
|
||||||
|
"danger": "light",
|
||||||
|
"dark": "light",
|
||||||
|
"black": "light",
|
||||||
|
"info": "dark",
|
||||||
|
"warning": "dark",
|
||||||
|
"light": "dark",
|
||||||
|
"white": "dark",
|
||||||
|
"body": "adaptive",
|
||||||
|
"body-tertiary": "adaptive"
|
||||||
|
);
|
||||||
|
|
||||||
|
@each $color, $value in $custom-colors {
|
||||||
|
$main-color: var(--bs-body-color);
|
||||||
|
$emphasize-color: var(--bs-secondary-color);
|
||||||
|
|
||||||
|
@if $value == "light" {
|
||||||
|
$main-color: $white;
|
||||||
|
$emphasize-color: shade-color($main-color, $link-shade-percentage);
|
||||||
|
} @else if $value == "dark" {
|
||||||
|
$main-color: $black;
|
||||||
|
$emphasize-color: tint-color($main-color, $link-shade-percentage);
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-bg-#{$color} {
|
||||||
|
color: $main-color if($enable-important-utilities, !important, null);
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: $emphasize-color if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// scss-docs-end colored-links
|
30
assets/scss/helpers/_display.scss
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// stylelint-disable annotation-no-unknown
|
||||||
|
|
||||||
|
// scss-docs-start display-color
|
||||||
|
.d-none-light {
|
||||||
|
display: none if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.d-none-dark {
|
||||||
|
display: block if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
.d-none-light {
|
||||||
|
display: block if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.d-none-dark {
|
||||||
|
display: none if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// scss-docs-end display-color
|
||||||
|
|
||||||
|
// stylelint-enable annotation-no-unknown
|
@@ -1,3 +1,4 @@
|
|||||||
pre {
|
pre {
|
||||||
padding: $spacer;
|
padding: $spacer;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
@@ -3,24 +3,30 @@
|
|||||||
//
|
//
|
||||||
h1 {
|
h1 {
|
||||||
margin-top: $spacer * 2.5;
|
margin-top: $spacer * 2.5;
|
||||||
|
scroll-margin-top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
margin-top: $spacer * 2;
|
margin-top: $spacer * 2;
|
||||||
|
scroll-margin-top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
margin-top: $spacer * 1.75;
|
margin-top: $spacer * 1.75;
|
||||||
|
scroll-margin-top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
margin-top: $spacer * 1.5;
|
margin-top: $spacer * 1.5;
|
||||||
|
scroll-margin-top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
h5 {
|
h5 {
|
||||||
margin-top: $spacer * 1.25;
|
margin-top: $spacer * 1.25;
|
||||||
|
scroll-margin-top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
h6 {
|
h6 {
|
||||||
margin-top: $spacer;
|
margin-top: $spacer;
|
||||||
|
scroll-margin-top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
62
assets/scss/theme/fonts.scss
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/*!
|
||||||
|
* Copyright (c) 2016-2020 The Inter Project Authors.
|
||||||
|
* "Inter" is trademark of Rasmus Andersson.
|
||||||
|
* https://github.com/rsms/inter
|
||||||
|
|
||||||
|
* This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
* This license is copied below, and is also available with a FAQ at:
|
||||||
|
* http://scripts.sil.org/OFL
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* inter-200 - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Inter';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 200;
|
||||||
|
src: url('../fonts/inter-v12-latin-200.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('../fonts/inter-v12-latin-200.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('../fonts/inter-v12-latin-200.woff2') format('woff2'), /* Super Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-200.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-200.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('../fonts/inter-v12-latin-200.svg#Inter') format('svg'); /* Legacy iOS */
|
||||||
|
}
|
||||||
|
/* inter-300 - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Inter';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
src: url('../fonts/inter-v12-latin-300.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('../fonts/inter-v12-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('../fonts/inter-v12-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-300.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('../fonts/inter-v12-latin-300.svg#Inter') format('svg'); /* Legacy iOS */
|
||||||
|
}
|
||||||
|
/* inter-regular - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Inter';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url('../fonts/inter-v12-latin-regular.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('../fonts/inter-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('../fonts/inter-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-regular.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('../fonts/inter-v12-latin-regular.svg#Inter') format('svg'); /* Legacy iOS */
|
||||||
|
}
|
||||||
|
/* inter-600 - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Inter';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
src: url('../fonts/inter-v12-latin-600.eot'); /* IE9 Compat Modes */
|
||||||
|
src: url('../fonts/inter-v12-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||||
|
url('../fonts/inter-v12-latin-600.woff2') format('woff2'), /* Super Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-600.woff') format('woff'), /* Modern Browsers */
|
||||||
|
url('../fonts/inter-v12-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||||
|
url('../fonts/inter-v12-latin-600.svg#Inter') format('svg'); /* Legacy iOS */
|
||||||
|
}
|
2
assets/scss/theme/theme.scss
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Placeholder to quickly add your own styles
|
||||||
|
// The file is included last in the build pipeline
|
@@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
label: Blog post
|
|
||||||
hide_body: false
|
|
||||||
fields:
|
|
||||||
- type: text
|
|
||||||
name: author
|
|
||||||
label: author
|
|
||||||
- type: text
|
|
||||||
name: title
|
|
||||||
label: title
|
|
||||||
- type: text
|
|
||||||
name: description
|
|
||||||
label: description
|
|
||||||
- type: list
|
|
||||||
name: tags
|
|
||||||
label: tags
|
|
||||||
- type: datetime
|
|
||||||
name: date
|
|
||||||
label: date
|
|
||||||
- type: file
|
|
||||||
name: thumbnail
|
|
||||||
label: thumbnail
|
|
||||||
- type: textarea
|
|
||||||
name: credits
|
|
||||||
label: credits
|
|
@@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
label: Project
|
|
||||||
hide_body: false
|
|
||||||
fields:
|
|
||||||
- type: text
|
|
||||||
name: author
|
|
||||||
label: author
|
|
||||||
- type: text
|
|
||||||
name: title
|
|
||||||
label: title
|
|
||||||
- type: datetime
|
|
||||||
name: date
|
|
||||||
label: date
|
|
||||||
- type: text
|
|
||||||
name: description
|
|
||||||
label: description
|
|
||||||
- type: list
|
|
||||||
name: tags
|
|
||||||
label: tags
|
|
||||||
- type: file
|
|
||||||
name: thumbnail
|
|
||||||
label: thumbnail
|
|
||||||
- type: textarea
|
|
||||||
name: credits
|
|
||||||
label: credits
|
|
@@ -1,40 +0,0 @@
|
|||||||
---
|
|
||||||
new_page_extension: md
|
|
||||||
auto_deploy: false
|
|
||||||
admin_path:
|
|
||||||
webhook_url:
|
|
||||||
sections:
|
|
||||||
- type: directory
|
|
||||||
path: content/en/blog
|
|
||||||
label: Blog
|
|
||||||
create: all
|
|
||||||
match: "**/*"
|
|
||||||
templates:
|
|
||||||
- blog-post
|
|
||||||
- type: directory
|
|
||||||
path: content/en/projects
|
|
||||||
label: Projects
|
|
||||||
create: all
|
|
||||||
match: "**/*"
|
|
||||||
templates:
|
|
||||||
- project
|
|
||||||
- type: document
|
|
||||||
path: content/en/about.md
|
|
||||||
label: About
|
|
||||||
upload_dir: assets/img
|
|
||||||
public_path: "/img"
|
|
||||||
front_matter_path: ''
|
|
||||||
use_front_matter_path: false
|
|
||||||
file_template: ":filename:"
|
|
||||||
build:
|
|
||||||
preview_env:
|
|
||||||
- HUGO_ENV=staging
|
|
||||||
- HUGO_VERSION=0.92.2
|
|
||||||
- HUGO_ENABLEGITINFO=true
|
|
||||||
preview_output_directory: public
|
|
||||||
install_dependencies_command: npm install
|
|
||||||
preview_docker_image: forestryio/hugo:node16
|
|
||||||
mount_path: "/srv"
|
|
||||||
working_dir: "/srv"
|
|
||||||
instant_preview_command: npm run start
|
|
||||||
version: 0.81.0
|
|
@@ -1,26 +1,37 @@
|
|||||||
baseURL = "https://hinode-demo.markdumay.org/"
|
# toml-docs-start main
|
||||||
canonifyURLs = false
|
|
||||||
|
|
||||||
title = "Hinode"
|
title = "Hinode"
|
||||||
author = "Mark Dumay"
|
copyright = "Copyright © 2023 Mark Dumay."
|
||||||
copyright = "Copyright © 2022 Mark Dumay."
|
|
||||||
paginate = 9
|
paginate = 9
|
||||||
|
enableGitInfo = true
|
||||||
|
# toml-docs-end main
|
||||||
|
|
||||||
|
# additional settings
|
||||||
|
googleAnalytics = "G-T85PPZ36GN"
|
||||||
|
baseURL = "https://demo.gethinode.com/"
|
||||||
|
canonifyURLs = false
|
||||||
|
enableEmoji = true
|
||||||
enableRobotsTXT = true
|
enableRobotsTXT = true
|
||||||
languageCode = "en-us"
|
|
||||||
enableInlineShortcodes = true
|
enableInlineShortcodes = true
|
||||||
|
|
||||||
# prevent build failures when using Hugo's Instagram shortcode due to deprecated Instagram API.
|
# prevent build failures when using Hugo's Instagram shortcode due to deprecated Instagram API.
|
||||||
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
|
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
|
||||||
ignoreErrors = ["error-remote-getjson"]
|
ignoreErrors = ["error-remote-getjson"]
|
||||||
enableEmoji = true
|
|
||||||
|
|
||||||
# Multilingual
|
# toml-docs-start timeout
|
||||||
|
timeout = "180s"
|
||||||
|
# toml-docs-end timeout
|
||||||
|
|
||||||
|
# toml-docs-start language
|
||||||
|
languageCode = "en-us"
|
||||||
defaultContentLanguage = "en"
|
defaultContentLanguage = "en"
|
||||||
disableLanguages = ["nl"]
|
defaultContentLanguageInSubdir = true
|
||||||
|
# toml-docs-end language
|
||||||
|
|
||||||
|
|
||||||
mainSections = ["blog", "projects"]
|
|
||||||
|
|
||||||
|
# toml-docs-start build
|
||||||
|
[build]
|
||||||
|
writeStats = true
|
||||||
|
# toml-docs-end build
|
||||||
|
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
tag = 'tags'
|
tag = 'tags'
|
||||||
|
|
||||||
@@ -48,7 +59,6 @@ mainSections = ["blog", "projects"]
|
|||||||
[services.twitter]
|
[services.twitter]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
|
|
||||||
|
|
||||||
[outputFormats]
|
[outputFormats]
|
||||||
[outputFormats.XML]
|
[outputFormats.XML]
|
||||||
isPlainText = false
|
isPlainText = false
|
||||||
@@ -69,6 +79,13 @@ mainSections = ["blog", "projects"]
|
|||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "static"
|
source = "static"
|
||||||
target = "static"
|
target = "static"
|
||||||
|
# toml-docs-start javascript
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "node_modules/flexsearch"
|
source = "node_modules/bootstrap/dist/js"
|
||||||
target = "assets/js/vendor/flexsearch"
|
target = "assets/js/vendor/bootstrap"
|
||||||
|
includeFiles = "*.bundle.js"
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "node_modules/flexsearch/dist"
|
||||||
|
target = "assets/js/vendor/flexsearch"
|
||||||
|
includeFiles = "*.bundle.js"
|
||||||
|
# toml-docs-end javascript
|
||||||
|
@@ -1,12 +1,31 @@
|
|||||||
|
# toml-docs-start lang-main
|
||||||
[en]
|
[en]
|
||||||
languageName = "English"
|
languageName = "English"
|
||||||
contentDir = "content/en"
|
contentDir = "content/en"
|
||||||
weight = 1
|
weight = 1
|
||||||
[en.params]
|
# toml-docs-end lang-main
|
||||||
introTitle = "Welcome to Hinode!"
|
# toml-docs-start lang-param
|
||||||
introCaption = "A clean blog theme for your Hugo site based on Bootstrap 5."
|
[en.params.head]
|
||||||
introLink = "/about"
|
tagline = "A Hugo Theme"
|
||||||
introLinkTitle = "About"
|
[en.params.feature]
|
||||||
license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank'>CC BY-NC-SA 4.0</a>)."
|
link = "about"
|
||||||
|
caption = "About"
|
||||||
|
[en.params.footer]
|
||||||
|
license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||||
socialTitle = "Follow me"
|
socialTitle = "Follow me"
|
||||||
socialCaption = "I work on everything coding and tweet developer memes"
|
socialCaption = "I work on everything coding and tweet developer memes"
|
||||||
|
# toml-docs-end lang-param
|
||||||
|
|
||||||
|
[nl]
|
||||||
|
languageName = "Nederlands"
|
||||||
|
contentDir = "content/nl"
|
||||||
|
weight = 2
|
||||||
|
[nl.params.head]
|
||||||
|
tagline = "Een Hugo Thema"
|
||||||
|
[nl.params.feature]
|
||||||
|
link = "over-mij"
|
||||||
|
caption = "Over mij"
|
||||||
|
[nl.params.footer]
|
||||||
|
license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>CC BY-NC-SA 4.0</a>)."
|
||||||
|
socialTitle = "Volg mij"
|
||||||
|
socialCaption = "Ik doe aan programmeren en tweet memes"
|
@@ -1,17 +1,19 @@
|
|||||||
defaultMarkdownHandler = "goldmark"
|
defaultMarkdownHandler = "goldmark"
|
||||||
|
|
||||||
[highlight]
|
[highlight]
|
||||||
anchorLineNos = false
|
anchorLineNos = false
|
||||||
codeFences = true
|
codeFences = true
|
||||||
guessSyntax = true
|
guessSyntax = true
|
||||||
hl_Lines = ""
|
hl_Lines = ""
|
||||||
lineAnchors = ""
|
lineAnchors = ""
|
||||||
lineNoStart = 1
|
lineNoStart = 1
|
||||||
lineNos = true
|
lineNos = false
|
||||||
lineNumbersInTable = false
|
lineNumbersInTable = false
|
||||||
noClasses = false
|
noClasses = false
|
||||||
# style = "monokai" # This parameter affects nothing, see https://github.com/razonyang/hugo-theme-bootstrap#syntax-highlighting.
|
tabWidth = 2
|
||||||
tabWidth = 2
|
## Update the 'create:syntax' command in package.json to modify the style
|
||||||
|
## The first two lines have been modified to remove the background color
|
||||||
|
# style = "monokailight"
|
||||||
|
|
||||||
[goldmark]
|
[goldmark]
|
||||||
[goldmark.extensions]
|
[goldmark.extensions]
|
||||||
|
@@ -13,6 +13,18 @@
|
|||||||
url = "/projects/"
|
url = "/projects/"
|
||||||
weight = 30
|
weight = 30
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Sample project"
|
||||||
|
url = "/projects/sample-project/"
|
||||||
|
parent = "Projects"
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Another project"
|
||||||
|
url = "/projects/another-project/"
|
||||||
|
parent = "Projects"
|
||||||
|
weight = 2
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Tags"
|
name = "Tags"
|
||||||
url = "/tags/"
|
url = "/tags/"
|
||||||
@@ -34,4 +46,28 @@
|
|||||||
name = "Medium"
|
name = "Medium"
|
||||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
||||||
url = "https://medium.com/"
|
url = "https://medium.com/"
|
||||||
weight = 30
|
weight = 30
|
||||||
|
|
||||||
|
# toml-docs-start sample-navigation
|
||||||
|
[[sample]]
|
||||||
|
name = "Blog"
|
||||||
|
url = "/blog/"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Projects"
|
||||||
|
url = "/projects/"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Sample project"
|
||||||
|
url = "/projects/sample-project/"
|
||||||
|
parent = "Projects"
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Another project"
|
||||||
|
url = "/projects/another-project/"
|
||||||
|
parent = "Projects"
|
||||||
|
weight = 2
|
||||||
|
# toml-docs-end sample-navigation
|
73
config/_default/menus/menus.nl.toml
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
[[main]]
|
||||||
|
name = "Over mij"
|
||||||
|
url = "/over-mij/"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Blog"
|
||||||
|
url = "/blog/"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Projecten"
|
||||||
|
url = "/projecten/"
|
||||||
|
weight = 30
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Voorbeeldproject"
|
||||||
|
url = "/projecten/voorbeeldproject/"
|
||||||
|
parent = "Projecten"
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Ander project"
|
||||||
|
url = "/projecten/ander-project/"
|
||||||
|
parent = "Projecten"
|
||||||
|
weight = 2
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Tags"
|
||||||
|
url = "/tags/"
|
||||||
|
weight = 40
|
||||||
|
|
||||||
|
[[social]]
|
||||||
|
name = "LinkedIn"
|
||||||
|
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
|
||||||
|
url = "https://linkedin.com/"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[social]]
|
||||||
|
name = "GitHub"
|
||||||
|
pre = "<i class=\"fab fa-github fa-2x\"></i>"
|
||||||
|
url = "https://github.com/"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[social]]
|
||||||
|
name = "Medium"
|
||||||
|
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
||||||
|
url = "https://medium.com/"
|
||||||
|
weight = 30
|
||||||
|
|
||||||
|
# toml-docs-start sample-navigation
|
||||||
|
[[sample]]
|
||||||
|
name = "Blog"
|
||||||
|
url = "/blog/"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Projecten"
|
||||||
|
url = "/projecten/"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Voorbeeldproject"
|
||||||
|
url = "/projecten/voorbeeldproject/"
|
||||||
|
parent = "Projecten"
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Ander project"
|
||||||
|
url = "/projecten/ander-project/"
|
||||||
|
parent = "Projecten"
|
||||||
|
weight = 2
|
||||||
|
# toml-docs-end sample-navigation
|
@@ -1,56 +1,121 @@
|
|||||||
## Homepage
|
# toml-docs-start main
|
||||||
title = "Hinode"
|
[main]
|
||||||
titleSeparator = "-"
|
separator = "-"
|
||||||
titleAddition = "Clean Blog Theme"
|
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||||
description = "Hinode is a clean blog theme for your Hugo site based on Bootstrap 5."
|
enableDarkMode = true
|
||||||
|
modes = ["light", "dark"]
|
||||||
|
# toml-docs-end main
|
||||||
|
|
||||||
## Open Graph
|
# toml-docs-start docs
|
||||||
images = ["logo.png"]
|
[docs]
|
||||||
ogLocale = "en_US"
|
version = "0.8"
|
||||||
domainTLD = "hinode-demo.markdumay.org"
|
basePath = ""
|
||||||
|
# toml-docs-end docs
|
||||||
|
|
||||||
## Twitter Cards
|
# toml-docs-start home
|
||||||
# twitterSite = "@gethinode"
|
[home]
|
||||||
# twitterCreator = "@markdumay"
|
sections = ["blog", "projects"]
|
||||||
|
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
||||||
|
fullCover = false
|
||||||
|
centerHeadline = false
|
||||||
|
style = ""
|
||||||
|
# toml-docs-end home
|
||||||
|
|
||||||
## JSON-LD
|
# toml-docs-start navigation
|
||||||
schemaType = "Organization"
|
[navigation]
|
||||||
schemaName = "Hinode"
|
anchor = true
|
||||||
schemaAuthor = "Mark Dumay"
|
logo = "/img/logo_icon.svg"
|
||||||
schemaAuthorTwitter = "https://twitter.com/markdumay"
|
color = "body"
|
||||||
schemaAuthorLinkedIn = "https://www.linkedin.com/in/markdumay/"
|
fixed = true
|
||||||
schemaAuthorGitHub = "https://github.com/markdumay"
|
offset = "3.8em"
|
||||||
schemaLocale = "en-US"
|
search = true
|
||||||
schemaLogo = "logo512x512.png"
|
breadcrumb = false
|
||||||
schemaLogoWidth = 512
|
toc = true
|
||||||
schemaLogoHeight = 512
|
sidebar = true
|
||||||
schemaImage = "logo1280x640.png"
|
# toml-docs-end navigation
|
||||||
schemaImageWidth = 1280
|
|
||||||
schemaImageHeight = 640
|
|
||||||
# schemaTwitter = "https://twitter.com/gethinode"
|
|
||||||
# schemaLinkedIn = ""
|
|
||||||
schemaGitHub = "https://github.com/markdumay/hugo-theme-hinode"
|
|
||||||
schemaSection = "blog"
|
|
||||||
|
|
||||||
|
# toml-docs-start sections
|
||||||
|
[sections]
|
||||||
|
[sections.blog]
|
||||||
|
title = "Blog"
|
||||||
|
sort = "date"
|
||||||
|
reverse = true
|
||||||
|
nested = true
|
||||||
|
cols = 3
|
||||||
|
color = ""
|
||||||
|
padding = "0"
|
||||||
|
header = "full"
|
||||||
|
footer = "none"
|
||||||
|
orientation = "stacked"
|
||||||
|
style = "border-0 card-zoom"
|
||||||
|
homepage = 3
|
||||||
|
separator = true
|
||||||
|
[sections.projects]
|
||||||
|
title = "Projects"
|
||||||
|
sort = "title"
|
||||||
|
reverse = false
|
||||||
|
nested = true
|
||||||
|
cols = 1
|
||||||
|
color = "body-tertiary"
|
||||||
|
padding = "3"
|
||||||
|
header = "none"
|
||||||
|
footer = "tags"
|
||||||
|
orientation = "none"
|
||||||
|
style = "border-1 card-emphasize"
|
||||||
|
homepage = 3
|
||||||
|
separator = false
|
||||||
|
# toml-docs-end sections
|
||||||
|
|
||||||
[favicon]
|
[favicon]
|
||||||
logo = "img/favicon.png"
|
logo = "img/favicon.png"
|
||||||
sizes = [16, 32, 48]
|
sizes = [16, 32, 48]
|
||||||
|
|
||||||
[search]
|
# toml-docs-start theme-colors
|
||||||
enabled = true
|
|
||||||
|
|
||||||
[toc]
|
|
||||||
enabled = true
|
|
||||||
|
|
||||||
[style]
|
[style]
|
||||||
themeColor = "#D43900" #00b0f0
|
primary = "#d43900"
|
||||||
|
secondary = "#6c757d"
|
||||||
|
success = "#198754"
|
||||||
|
info = "#0dcaf0"
|
||||||
|
warning = "#ffc107"
|
||||||
|
danger = "#dc3545"
|
||||||
|
light = "#f8f9fa"
|
||||||
|
dark = "#212529"
|
||||||
|
# toml-docs-end theme-colors
|
||||||
themeOpacity = "10"
|
themeOpacity = "10"
|
||||||
|
# toml-docs-start font
|
||||||
|
themeFont = "Inter"
|
||||||
|
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||||
|
themeFontPath = "/fonts" # local path
|
||||||
|
# toml-docs-end font
|
||||||
|
# toml-docs-start build
|
||||||
|
purge = false
|
||||||
|
# toml-docs-end build
|
||||||
|
|
||||||
[main]
|
[schema]
|
||||||
featurePhoto = "img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
type = "Organization"
|
||||||
logo = "/logo_embedded.svg"
|
name = "Hinode"
|
||||||
|
locale = "en-US"
|
||||||
|
# twitter = "https://twitter.com/gethinode"
|
||||||
|
# linkedIn = ""
|
||||||
|
github = "https://github.com/gethinode/hinode"
|
||||||
|
section = "blog"
|
||||||
|
[author]
|
||||||
|
name = "Mark Dumay"
|
||||||
|
# twitter = "https://twitter.com/markdumay"
|
||||||
|
linkedin = "https://www.linkedin.com/in/markdumay/"
|
||||||
|
github = "https://github.com/markdumay"
|
||||||
|
[logo]
|
||||||
|
url = "img/logo512x512.png"
|
||||||
|
width = 512
|
||||||
|
height = 512
|
||||||
|
[image]
|
||||||
|
url = "img/logo1280x640.png"
|
||||||
|
width = 1280
|
||||||
|
height = 640
|
||||||
|
|
||||||
|
[opengraph]
|
||||||
|
images = ["logo.png"]
|
||||||
|
locale = "en_US"
|
||||||
|
|
||||||
[comments]
|
[comments]
|
||||||
enabled = false
|
enabled = false
|
||||||
@@ -60,3 +125,13 @@ schemaSection = "blog"
|
|||||||
# By default, light and dark mode correspond to github-light and github-dark, respectively.
|
# By default, light and dark mode correspond to github-light and github-dark, respectively.
|
||||||
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
|
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
|
||||||
#theme = ""
|
#theme = ""
|
||||||
|
|
||||||
|
[links]
|
||||||
|
bs_badge_heading = "https://getbootstrap.com/docs/5.2/components/badge/#headings"
|
||||||
|
hinode_docs = "https://gethinode.com/docs"
|
||||||
|
hugo_imaging = "https://gohugo.io/content-management/image-processing/#imaging-configuration"
|
||||||
|
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
|
||||||
|
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
|
||||||
|
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
|
||||||
|
utterances = "https://utteranc.es"
|
||||||
|
|
@@ -1,3 +1,4 @@
|
|||||||
|
# toml-docs-start server-config
|
||||||
[[headers]]
|
[[headers]]
|
||||||
for = '/**'
|
for = '/**'
|
||||||
[headers.values]
|
[headers.values]
|
||||||
@@ -7,16 +8,15 @@ for = '/**'
|
|||||||
Content-Security-Policy = """\
|
Content-Security-Policy = """\
|
||||||
default-src 'self'; \
|
default-src 'self'; \
|
||||||
script-src 'self' \
|
script-src 'self' \
|
||||||
https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js \
|
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||||
https://cdn.jsdelivr.net/npm/flexsearch@0.7.21/dist/flexsearch.bundle.js \
|
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||||
https://utteranc.es/client.js; \
|
|
||||||
style-src 'self' localhost:1313 https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
|
||||||
object-src 'none'; \
|
object-src 'none'; \
|
||||||
base-uri 'self'; \
|
base-uri 'self'; \
|
||||||
connect-src 'self' localhost:1313 ws://localhost:1313/livereload; \
|
connect-src 'self'
|
||||||
|
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
||||||
font-src 'self' https://fonts.gstatic.com; \
|
font-src 'self' https://fonts.gstatic.com; \
|
||||||
frame-src 'self' localhost:1313 https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||||
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com; \
|
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||||
manifest-src 'self'; \
|
manifest-src 'self'; \
|
||||||
media-src 'self' \
|
media-src 'self' \
|
||||||
"""
|
"""
|
||||||
@@ -33,5 +33,11 @@ for = '/**'
|
|||||||
fullscreen=(), \
|
fullscreen=(), \
|
||||||
payment=() \
|
payment=() \
|
||||||
"""
|
"""
|
||||||
Cache-Control = "public, max-age=31536000"
|
cache-control = """\
|
||||||
Access-Control-Allow-Origin = "*"
|
max-age=0, \
|
||||||
|
no-cache, \
|
||||||
|
no-store, \
|
||||||
|
must-revalidate \
|
||||||
|
"""
|
||||||
|
Access-Control-Allow-Origin = "*"
|
||||||
|
# toml-docs-end server-config
|
@@ -1,47 +1,40 @@
|
|||||||
const autoprefixer = require('autoprefixer');
|
const autoprefixer = require('autoprefixer')({})
|
||||||
const purgecss = require('@fullhuman/postcss-purgecss');
|
const cssnano = require('cssnano')({
|
||||||
const whitelister = require('purgecss-whitelister');
|
preset: 'advanced'
|
||||||
|
})
|
||||||
|
const whitelister = require('purgecss-whitelister')
|
||||||
|
const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||||
|
content: ['./hugo_stats.json'],
|
||||||
|
defaultExtractor: (content) => {
|
||||||
|
const els = JSON.parse(content).htmlElements
|
||||||
|
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||||
|
},
|
||||||
|
dynamicAttributes: ['data-bs-theme'],
|
||||||
|
safelist: [
|
||||||
|
...whitelister([
|
||||||
|
'./assets/scss/components/_clipboard.scss',
|
||||||
|
'./assets/scss/components/_command.scss',
|
||||||
|
'./assets/scss/components/_navbar.scss',
|
||||||
|
'./assets/scss/components/_search.scss',
|
||||||
|
'./assets/scss/components/_syntax.scss',
|
||||||
|
'./assets/scss/components/_syntax-dark.scss',
|
||||||
|
'./assets/scss/components/_syntax-light.scss',
|
||||||
|
'./assets/scss/theme/fonts.scss',
|
||||||
|
'./assets/scss/theme/theme.scss',
|
||||||
|
'./node_modules/bootstrap/scss/_carousel.scss',
|
||||||
|
'./node_modules/bootstrap/scss/_dropdown.scss',
|
||||||
|
'./node_modules/bootstrap/scss/_reboot.scss',
|
||||||
|
'./node_modules/bootstrap/scss/_tooltip.scss',
|
||||||
|
'./node_modules/bootstrap/scss/_transitions.scss',
|
||||||
|
'./node_modules/bootstrap/scss/_utilities.scss'
|
||||||
|
])
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
plugins: [
|
plugins: [
|
||||||
autoprefixer(),
|
autoprefixer,
|
||||||
purgecss({
|
cssnano,
|
||||||
content: [
|
purgecss
|
||||||
'./layouts/**/*.html',
|
]
|
||||||
'./content/**/*.md',
|
}
|
||||||
],
|
|
||||||
safelist: {
|
|
||||||
standard: [
|
|
||||||
/lazyloaded/,
|
|
||||||
/table/,
|
|
||||||
/thead/,
|
|
||||||
/tbody/,
|
|
||||||
/tr/,
|
|
||||||
/th/,
|
|
||||||
/td/,
|
|
||||||
/h5/,
|
|
||||||
/alert-link/,
|
|
||||||
/container-xxl/,
|
|
||||||
/container-fluid/,
|
|
||||||
/^bg-opacity-\d+/,
|
|
||||||
/svg.*/,
|
|
||||||
/fa.*/,
|
|
||||||
/ratio.*/,
|
|
||||||
/suggestion.*/,
|
|
||||||
],
|
|
||||||
...whitelister([
|
|
||||||
'./assets/scss/components/_blockquote.scss',
|
|
||||||
'./assets/scss/components/_buttons.scss',
|
|
||||||
'./assets/scss/components/_card.scss',
|
|
||||||
'./assets/scss/components/_img.scss',
|
|
||||||
'./assets/scss/components/_navbar.scss',
|
|
||||||
'./assets/scss/components/_search.scss',
|
|
||||||
'./assets/scss/layouts/_reboot.scss',
|
|
||||||
'./assets/scss/layouts/type.scss',
|
|
||||||
'./node_modules/bootstrap/scss/_dropdown.scss',
|
|
||||||
'./node_modules/bootstrap/scss/_utilities.scss',
|
|
||||||
]),
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
31
config/production/deployment.toml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# toml-docs-start az-blob
|
||||||
|
# By default, files are uploaded in an arbitrary order.
|
||||||
|
# Files that match the regular expressions in the "Order" list
|
||||||
|
# will be uploaded first, in the listed order.
|
||||||
|
order = [".webp$", ".jpg$", ".gif$"]
|
||||||
|
|
||||||
|
[targets]
|
||||||
|
name = "hinode"
|
||||||
|
URL = "azblob://$web"
|
||||||
|
|
||||||
|
[[matchers]]
|
||||||
|
# Cache static assets for 1 year.
|
||||||
|
pattern = "^.+\\.(js|css|svg|ttf)$"
|
||||||
|
cacheControl = "max-age=31536000, no-transform, public"
|
||||||
|
gzip = true
|
||||||
|
|
||||||
|
[[matchers]]
|
||||||
|
pattern = "^.+\\.(png|jpg|webp)$"
|
||||||
|
cacheControl = "max-age=31536000, no-transform, public"
|
||||||
|
gzip = false
|
||||||
|
|
||||||
|
[[matchers]]
|
||||||
|
# Set custom content type for /sitemap.xml
|
||||||
|
pattern = "^sitemap\\.xml$"
|
||||||
|
contentType = "application/xml"
|
||||||
|
gzip = true
|
||||||
|
|
||||||
|
[[matchers]]
|
||||||
|
pattern = "^.+\\.(html|xml|json)$"
|
||||||
|
gzip = true
|
||||||
|
# toml-docs-end az-blob
|
@@ -1,3 +1,6 @@
|
|||||||
---
|
---
|
||||||
author: "Hugo Authors"
|
author: Mark Dumay
|
||||||
|
title: Welcome to Hinode!
|
||||||
---
|
---
|
||||||
|
|
||||||
|
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
|
@@ -1,48 +1,43 @@
|
|||||||
---
|
---
|
||||||
title: "About"
|
title: About
|
||||||
description: "A clean blog theme for your Hugo site based on Bootstrap 5."
|
description: Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
date: "2022-04-11"
|
date: 2022-04-11
|
||||||
|
updated: 2023-02-11
|
||||||
showComments: false
|
showComments: false
|
||||||
---
|
---
|
||||||
|
|
||||||
<p class="text-center"><img src="/logo_embedded.svg" class="img-fluid w-50" alt="Logo"></p>
|
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
|
||||||
|
|
||||||
<center>Hinode is a clean blog theme for Hugo, an open-source static site generator.</center>
|
<section class="section section-sm mt-5 mb-5">
|
||||||
|
<div class="container-fluid">
|
||||||
<section class="section section-sm mt-5">
|
<div class="row justify-content-center text-center">
|
||||||
<div class="container-fluid">
|
<div class="col-lg-4">
|
||||||
<div class="row justify-content-center text-center">
|
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
||||||
<div class="row justify-content-center text-center">
|
<h2 class="h4">Bootstrap framework</h2>
|
||||||
<div class="col-lg-4">
|
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
|
||||||
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
</div>
|
||||||
<h2 class="h4">Bootstrap framework</h2>
|
<div class="col-lg-4">
|
||||||
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
|
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
||||||
</div>
|
<h2 class="h4">Full text search</h2>
|
||||||
<div class="col-lg-4">
|
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
|
||||||
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
</div>
|
||||||
<h2 class="h4">Full text search</h2>
|
<div class="col-lg-4">
|
||||||
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
|
<i class="fa-solid fa-code fa-2xl"></i>
|
||||||
</div>
|
<h2 class="h4">Development tools</h2>
|
||||||
<div class="col-lg-4">
|
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
|
||||||
<i class="fa-solid fa-code fa-2xl"></i>
|
</div>
|
||||||
<h2 class="h4">Development tools</h2>
|
</div>
|
||||||
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
Additional features include:
|
Additional features include:
|
||||||
|
|
||||||
* Comments
|
* Switching between light mode and dark mode
|
||||||
* Social links
|
* Support for multiple languages
|
||||||
* Blog pagination
|
* Reusable Bootstrap components through configurable shortcodes and partials
|
||||||
* Scrollspy
|
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
||||||
* Code highlighting
|
* Integrated sidebar navigation for content-heavy sections, such as documentation pages
|
||||||
* Color customization
|
* Reponsive image handling for multiple screen sizes and resolutions
|
||||||
* i18n support
|
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||||
|
* Secure by default, scoring A+ on [Mozilla Observatory test]({{< param "links.observatory" >}})
|
||||||
The Hinode theme is inspired by the following themes:
|
{.tickmark}
|
||||||
|
|
||||||
* [Blist](https://github.com/apvarun/blist-hugo-theme) - a clean and fast blog theme for your Hugo site using Tailwind CSS.
|
|
||||||
* [Doks](https://github.com/h-enk/doks) - a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize.
|
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
author: Katheryn Fox
|
author: Mark Dumay
|
||||||
title: Blog
|
title: Blog
|
||||||
|
nested: true
|
||||||
---
|
---
|
||||||
|
262
content/en/blog/bootstrap-elements.md
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Bootstrap elements
|
||||||
|
date: 2023-02-17
|
||||||
|
description: Use shortcodes to add common Bootstrap elements with ease.
|
||||||
|
tags: ["bootstrap", "shortcode"]
|
||||||
|
thumbnail: img/boots.jpg
|
||||||
|
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
|
||||||
|
photoSource: <a href="https://unsplash.com/photos/QLPWQvHvmII">Unsplash</a>
|
||||||
|
---
|
||||||
|
|
||||||
|
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||||
|
|
||||||
|
## Accordion
|
||||||
|
|
||||||
|
As an example, the following shortcode displays an accordion with three elements, of which the first element is expanded.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* accordion */>}}
|
||||||
|
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
|
||||||
|
This is the first item's accordion body. It supports HTML content. The item is shown by adding the value
|
||||||
|
<code>show</code> to the <code>class</code> argument.
|
||||||
|
{{</* /accordion-item */>}}
|
||||||
|
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||||
|
This is the second item's accordion body. It supports HTML content too.
|
||||||
|
{{</* /accordion-item */>}}
|
||||||
|
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||||
|
This is the third item's accordion body.
|
||||||
|
{{</* /accordion-item */>}}
|
||||||
|
{{</* /accordion */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Alert
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a simple alert.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* alert color="danger" dismissible="true" */>}}
|
||||||
|
A simple danger alert—check it out!
|
||||||
|
{{</* /alert */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Badge
|
||||||
|
|
||||||
|
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options.
|
||||||
|
|
||||||
|
{{< example >}}
|
||||||
|
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
|
||||||
|
<h2>Example heading of size two <span class="badge bg-secondary">New</span></h2>
|
||||||
|
<h3>Example heading of size three <span class="badge bg-secondary">New</span></h3>
|
||||||
|
<h4>Example heading of size four <span class="badge bg-secondary">New</span></h4>
|
||||||
|
<h5>Example heading of size five <span class="badge bg-secondary">New</span></h5>
|
||||||
|
<h6>Example heading of size six <span class="badge bg-secondary">New</span></h6>
|
||||||
|
{{< /example >}}
|
||||||
|
|
||||||
|
## Breadcrumb
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a breadcrumb for the blog page.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* breadcrumb path="blog" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Button
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a tooltip for a dark button with a badge.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button color="secondary" tooltip="Click on the inbox to view your unread messages" href="#!" badge="99+" */>}}
|
||||||
|
Inbox
|
||||||
|
{{</* /button */>}}
|
||||||
|
{{< /example>}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Button group
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a group of three buttons.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button-group aria-label="Basic example" */>}}
|
||||||
|
{{</* button color="primary" href="#!" */>}}Left{{</* /button */>}}
|
||||||
|
{{</* button color="primary" href="#!" */>}}Middle{{</* /button */>}}
|
||||||
|
{{</* button color="primary" href="#!" */>}}Right{{</* /button */>}}
|
||||||
|
{{</* /button-group */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Card
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a stacked card that links to the [about]({{< ref "about" >}}) page. It includes a custom header.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* card path="about" padding="3" class="w-50" color="body-tertiary" header="publication" footer="none" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Carousel
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a centered carousel with three slides, 16x9 aspect ratio, and a relative width of 67% on large screens.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||||
|
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||||
|
{{</* img src="img/phone.jpg" caption="slide 2" */>}}
|
||||||
|
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||||
|
{{</* /carousel */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Collapse
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a button that, when clicked, triggers a panel to appear or disappear.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button collapse="collapse-1" */>}}
|
||||||
|
Trigger panel
|
||||||
|
{{</* /button */>}}
|
||||||
|
|
||||||
|
{{</* collapse id="collapse-1" class="p-3 border rounded" */>}}
|
||||||
|
Some placeholder content for the collapse component. This panel is <i>hidden by default</i> but
|
||||||
|
revealed when the user activates the relevant trigger.
|
||||||
|
{{</* /collapse */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Command prompt
|
||||||
|
|
||||||
|
Use the `command` shortcode to generate a block with a default bash command prompt.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* command */>}}
|
||||||
|
export MY_VAR=123
|
||||||
|
{{</* /command */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
Specify `user` and `host` to add the user context to the prompt. In addition, use `(out)` to specify an output line and use `\` to denote a line continuation.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* command user="user" host="localhost" */>}}
|
||||||
|
export MY_VAR=123
|
||||||
|
echo "hello"
|
||||||
|
(out)hello
|
||||||
|
echo one \
|
||||||
|
two \
|
||||||
|
three
|
||||||
|
(out)one two three
|
||||||
|
echo "goodbye"
|
||||||
|
(out)goodbye
|
||||||
|
{{</* /command */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Docs
|
||||||
|
|
||||||
|
Use the `docs` shortcode to display the content of a `js`, `scss` or `toml` file:
|
||||||
|
|
||||||
|
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||||
|
|
||||||
|
## Icon
|
||||||
|
|
||||||
|
As an example, the following shortcodes show a square check, a brand logo, and a circle check.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* fa square-check */>}}
|
||||||
|
{{</* fab linkedin */>}}
|
||||||
|
{{</* fas circle-check */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Image
|
||||||
|
|
||||||
|
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Nav
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a tab group with vertically aligned pills.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* nav type="pills" vertical="true" */>}}
|
||||||
|
{{</* nav-item header="Nav Item #1" show="true" */>}}
|
||||||
|
This is the first item's nav body. It supports HTML content. The item is shown by adding the value
|
||||||
|
<code>show</code> to the <code>class</code> argument.
|
||||||
|
{{</* /nav-item */>}}
|
||||||
|
{{</* nav-item header="Nav Item #2" */>}}
|
||||||
|
This is the second item's nav body. It too supports HTML content.
|
||||||
|
{{</* /nav-item */>}}
|
||||||
|
{{</* nav-item header="Nav Item #3" */>}}
|
||||||
|
This is the third item's nav body.
|
||||||
|
{{</* /nav-item */>}}
|
||||||
|
{{</* /nav */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Navbar
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a light navigation header.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* navbar path="about" color="primary" size="md" search="false" menus="sample" title="Brand" mode="false" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Spinner
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a centered spinner.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* spinner color="info" class="text-center" */>}}
|
||||||
|
Loading...
|
||||||
|
{{</* /spinner */>}}
|
||||||
|
{{< /example>}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Toast
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a button that, when clicked, triggers the toast message.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button id="toastButton" */>}}
|
||||||
|
Show toast
|
||||||
|
{{</* /button */>}}
|
||||||
|
|
||||||
|
{{</* toast header="Custom title" */>}}
|
||||||
|
This is a toast message.
|
||||||
|
{{</* /toast */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Tooltip
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a tooltip for a colored hyperlink.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
@@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
title: "Emoji Support"
|
|
||||||
date: 2021-07-15
|
|
||||||
description: "Guide to emoji usage in Hugo"
|
|
||||||
tags: ["emoji"]
|
|
||||||
thumbnail: img/dunes.jpg # https://picsum.photos/id/184/4288/2848
|
|
||||||
credits: Photo by <a href="https://unsplash.com/@timdegroot">Tim de Groot</a> on <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
|
||||||
---
|
|
||||||
|
|
||||||
Emoji can be enabled in a Hugo project in a number of ways.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
|
|
||||||
|
|
||||||
To enable emoji globally, set `enableEmoji` to `true` in your site's [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g.
|
|
||||||
|
|
||||||
<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes.
|
|
14
content/en/blog/first-post.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: First post
|
||||||
|
date: 2022-10-01
|
||||||
|
description: This is my first blog post.
|
||||||
|
tags: ["blog"]
|
||||||
|
thumbnail: img/notepad.jpg
|
||||||
|
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
||||||
|
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vulputate, ante in luctus congue, leo risus semper justo, vel consequat sapien lectus quis ipsum. In imperdiet urna justo. Nulla vel pellentesque ipsum. Cras congue feugiat dolor ac aliquam. Pellentesque eget dui venenatis, ultrices urna ac, vehicula nibh. Curabitur est lectus, dapibus eu vehicula non, malesuada et dui. Nam enim nulla, egestas et nunc non, elementum aliquet justo. Mauris euismod mauris sapien, eget vestibulum odio dictum sit amet. Morbi nisl elit, placerat at auctor in, finibus ac neque. Curabitur placerat feugiat risus non vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque quis cursus est, nec posuere libero.
|
||||||
|
|
||||||
|
In ac lobortis diam. Curabitur id dui ac nunc mattis rhoncus a sed lorem. Sed lobortis sem turpis, at posuere enim dignissim et. Vivamus fermentum justo quis volutpat volutpat. Proin eget vehicula neque, ut tempus urna. Duis ac ex vel leo pharetra lobortis et vitae lacus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aliquam erat volutpat. Suspendisse ullamcorper ultrices elementum. Suspendisse mi elit, commodo at varius a, cursus a ligula. Sed et mattis elit, eu luctus arcu. Cras a porttitor libero. Vestibulum tincidunt sed magna at dapibus. Sed quis orci eu lacus aliquam tristique. Integer porttitor ultrices ipsum quis porttitor. Etiam a sodales ligula.
|
16
content/en/blog/fourth-post.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Fourth post
|
||||||
|
date: 2023-01-01
|
||||||
|
description: This is my fourth blog post.
|
||||||
|
tags: ["blog"]
|
||||||
|
thumbnail: img/flowers.jpg # https://picsum.photos/id/106/2592/1728
|
||||||
|
photoCredits: <a href="https://unsplash.com/@flutterhappy">Arvee Marie</a>
|
||||||
|
photoSource: <a href="https://unsplash.com/photos/YnfGtpt2gf4">Unsplash</a>
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam finibus libero in felis accumsan, vitae imperdiet metus vehicula. Quisque nec dignissim purus. In id dui porta sapien posuere viverra nec vel nisi. Sed varius tincidunt lectus, quis sagittis felis interdum id. Proin purus odio, ultrices auctor libero convallis, volutpat gravida turpis. Ut commodo metus orci, quis sagittis lectus rhoncus non. Nulla et lectus tortor. Suspendisse quam felis, molestie non odio quis, consequat venenatis orci. Etiam sed turpis sit amet elit scelerisque imperdiet. Sed suscipit felis non nibh suscipit egestas. Nulla sodales libero non rhoncus consequat. Nunc in elit at est cursus congue ut ac velit. Cras luctus libero augue, id semper sapien volutpat ultrices.
|
||||||
|
|
||||||
|
Pellentesque sit amet sollicitudin nibh. Cras in dolor eget quam feugiat ultricies in ac lectus. Ut venenatis vitae justo quis pretium. Pellentesque vulputate nulla ac est iaculis vulputate. Proin pellentesque sem nec molestie imperdiet. Duis eu molestie sapien, vel ultricies lacus. Donec in felis tempus, rutrum ipsum at, fermentum felis. Praesent mi odio, semper non vulputate vitae, vulputate quis ex.
|
||||||
|
|
||||||
|
Nunc rhoncus eleifend gravida. Aliquam feugiat tristique pellentesque. Pellentesque vel elit sed nulla commodo convallis. Curabitur placerat sapien augue, ac semper metus volutpat non. Sed semper ultricies enim, consequat convallis justo placerat eget. Ut fermentum leo facilisis metus congue commodo. Vestibulum consectetur magna vitae ullamcorper sodales. Nulla lobortis aliquam odio id tincidunt. Suspendisse efficitur auctor tortor non consequat. Quisque sit amet posuere lorem, convallis bibendum nisi. Proin ullamcorper justo tempus dignissim scelerisque. Quisque sit amet sapien libero. Phasellus eget enim velit. Proin ut fermentum dui. Proin gravida tortor in ligula lacinia, id dapibus dui tincidunt. Mauris suscipit nisi et urna consectetur, non venenatis nisi euismod.
|
@@ -1,164 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
title: "Markdown Syntax Guide"
|
|
||||||
description: "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
|
|
||||||
tags: ["markdown", "css", "html"]
|
|
||||||
date: 2022-01-14
|
|
||||||
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
|
||||||
credits: Photo by <a href="https://unsplash.com/@thomweerd">Thom</a> on <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
|
||||||
---
|
|
||||||
|
|
||||||
This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
## Headings
|
|
||||||
|
|
||||||
The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
|
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line -->
|
|
||||||
# H1
|
|
||||||
|
|
||||||
## H2
|
|
||||||
|
|
||||||
### H3
|
|
||||||
|
|
||||||
#### H4
|
|
||||||
|
|
||||||
##### H5
|
|
||||||
|
|
||||||
###### H6
|
|
||||||
|
|
||||||
## Paragraph
|
|
||||||
|
|
||||||
Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
|
|
||||||
|
|
||||||
Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
|
|
||||||
|
|
||||||
## Blockquotes
|
|
||||||
|
|
||||||
The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
|
|
||||||
|
|
||||||
### Blockquote without attribution
|
|
||||||
|
|
||||||
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
|
|
||||||
> **Note** that you can use _Markdown syntax_ within a blockquote.
|
|
||||||
{.blockquote}
|
|
||||||
|
|
||||||
### Blockquote with attribution
|
|
||||||
|
|
||||||
> Don't communicate by sharing memory, share memory by communicating.<br>
|
|
||||||
> — <cite>Rob Pike[^1]</cite>
|
|
||||||
{.blockquote}
|
|
||||||
|
|
||||||
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
|
||||||
|
|
||||||
<figure>
|
|
||||||
<blockquote class="blockquote">
|
|
||||||
<p>A well-known quote, contained in a blockquote element.</p>
|
|
||||||
</blockquote>
|
|
||||||
<figcaption class="blockquote-footer">
|
|
||||||
Someone famous in <cite title="Source Title">Source Title</cite>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
## Tables
|
|
||||||
|
|
||||||
Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
|
|
||||||
|
|
||||||
| Name | Age |
|
|
||||||
| ----- | --- |
|
|
||||||
| Bob | 27 |
|
|
||||||
| Alice | 23 |
|
|
||||||
{.table}
|
|
||||||
|
|
||||||
### Inline Markdown within tables
|
|
||||||
|
|
||||||
| Italics | Bold | Code |
|
|
||||||
| --------- | -------- | ------ |
|
|
||||||
| _italics_ | **bold** | `code` |
|
|
||||||
{.table}
|
|
||||||
|
|
||||||
## Code Blocks
|
|
||||||
|
|
||||||
### Code block with backticks
|
|
||||||
|
|
||||||
```html
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<title>Example HTML5 Document</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>Test</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
```
|
|
||||||
|
|
||||||
<!-- markdownlint-disable MD046 -->
|
|
||||||
### Code block indented with four spaces
|
|
||||||
|
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Example HTML5 Document</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>Test</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<!-- markdownlint-enable MD046 -->
|
|
||||||
|
|
||||||
### Code block with Hugo's internal highlight shortcode
|
|
||||||
|
|
||||||
{{< highlight html >}}
|
|
||||||
|
|
||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Example HTML5 Document</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>Test</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
{{< /highlight >}}
|
|
||||||
|
|
||||||
## List Types
|
|
||||||
|
|
||||||
### Ordered List
|
|
||||||
|
|
||||||
1. First item
|
|
||||||
2. Second item
|
|
||||||
3. Third item
|
|
||||||
|
|
||||||
### Unordered List
|
|
||||||
|
|
||||||
- List item
|
|
||||||
- Another item
|
|
||||||
- And another item
|
|
||||||
|
|
||||||
### Nested list
|
|
||||||
|
|
||||||
- Fruit
|
|
||||||
- Apple
|
|
||||||
- Orange
|
|
||||||
- Banana
|
|
||||||
- Dairy
|
|
||||||
- Milk
|
|
||||||
- Cheese
|
|
||||||
|
|
||||||
## Other Elements — abbr, sub, sup, kbd, mark
|
|
||||||
|
|
||||||
<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
|
|
||||||
|
|
||||||
H<sub>2</sub>O
|
|
||||||
|
|
||||||
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
|
|
||||||
|
|
||||||
Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
|
|
||||||
|
|
||||||
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
|
|
@@ -1,40 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
title: "Placeholder Text"
|
|
||||||
date: 2021-07-13
|
|
||||||
description: "Lorem Ipsum Dolor Si Amet"
|
|
||||||
tags: ["markdown", "text"]
|
|
||||||
thumbnail: img/city.jpg # https://picsum.photos/id/1067/5760/3840
|
|
||||||
credits: Photo by <a href="https://unsplash.com/@kevinjyoung">Kevin Young</a> on <a href="https://unsplash.com/photos/-icmOdYWXuQ">Unsplash</a>
|
|
||||||
---
|
|
||||||
|
|
||||||
Lorem est tota propiore conpellat pectoribus de pectora summo. <!--more-->Redit teque digerit hominumque toris verebor lumina non cervice subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum.
|
|
||||||
|
|
||||||
{{< image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded">}}
|
|
||||||
|
|
||||||
1. Exierant elisi ambit vivere dedere
|
|
||||||
2. Duce pollice
|
|
||||||
3. Eris modo
|
|
||||||
4. Spargitque ferrea quos palude
|
|
||||||
|
|
||||||
Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria tractus malis.
|
|
||||||
|
|
||||||
1. Comas hunc haec pietate fetum procerum dixit
|
|
||||||
2. Post torum vates letum Tiresia
|
|
||||||
3. Flumen querellas
|
|
||||||
4. Arcanaque montibus omnes
|
|
||||||
5. Quidem et
|
|
||||||
|
|
||||||
## Vagus elidunt
|
|
||||||
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 496 373" height="373" width="496"><g fill="none"><path stroke="#000" stroke-width=".75" d="M.599 372.348L495.263 1.206M.312.633l494.95 370.853M.312 372.633L247.643.92M248.502.92l246.76 370.566M330.828 123.869V1.134M330.396 1.134L165.104 124.515"></path><path stroke="#ED1C24" stroke-width=".75" d="M275.73 41.616h166.224v249.05H275.73zM54.478 41.616h166.225v249.052H54.478z"></path><path stroke="#000" stroke-width=".75" d="M.479.375h495v372h-495zM247.979.875v372"></path><ellipse cx="498.729" cy="177.625" rx=".75" ry="1.25"></ellipse><ellipse cx="247.229" cy="377.375" rx=".75" ry="1.25"></ellipse></g></svg>
|
|
||||||
|
|
||||||
[The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon)
|
|
||||||
|
|
||||||
## Mane refeci capiebant unda mulcebat
|
|
||||||
|
|
||||||
Victa caducifer, malo vulnere contra dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis.
|
|
||||||
|
|
||||||
Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae vulnus haerentia iuste et exercebat, sui et.
|
|
||||||
|
|
||||||
Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, _oculos nomen_ non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**.
|
|
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
title: "Rich Content"
|
|
||||||
date: 2021-07-13
|
|
||||||
description: "A brief description of Hugo Shortcodes"
|
|
||||||
tags: ["shortcodes", "privacy"]
|
|
||||||
thumbnail: img/flowers.jpg # https://picsum.photos/id/106/2592/1728
|
|
||||||
credits: Photo by <a href="https://unsplash.com/@flutterhappy">Arvee Marie</a> on <a href="https://unsplash.com/photos/YnfGtpt2gf4">Unsplash</a>
|
|
||||||
---
|
|
||||||
|
|
||||||
Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds.
|
|
||||||
|
|
||||||
## <!--more-->
|
|
||||||
|
|
||||||
## YouTube Privacy Enhanced Shortcode
|
|
||||||
|
|
||||||
{{< youtube id="ZJthWmvUzzc" class="video">}}
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Twitter Simple Shortcode
|
|
||||||
|
|
||||||
{{< twitter_simple user="SanDiegoZoo" id="1453110110599868418" >}}
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Vimeo Simple Shortcode
|
|
||||||
|
|
||||||
{{< vimeo_simple id="48912912" class="__h_video" >}}
|
|