Compare commits
565 Commits
v0.9.0-bet
...
v0.15.0-be
Author | SHA1 | Date | |
---|---|---|---|
![]() |
37b623e48c | ||
![]() |
27019594ca | ||
![]() |
d4ee11b7a5 | ||
![]() |
009314943b | ||
![]() |
826b5f58d8 | ||
![]() |
f6fb80d690 | ||
![]() |
8ed98bc5b4 | ||
![]() |
0cc3775370 | ||
![]() |
7be81f4393 | ||
![]() |
869f696a67 | ||
![]() |
c6d942b350 | ||
![]() |
18275acc80 | ||
![]() |
a85540f8de | ||
![]() |
3c93828d4f | ||
![]() |
8ca629978f | ||
![]() |
d99d416838 | ||
![]() |
b58a69b2ad | ||
![]() |
49d7736e1a | ||
![]() |
04531b6158 | ||
![]() |
b7fb9fb05b | ||
![]() |
4a78bd9e6b | ||
![]() |
4d0007a26b | ||
![]() |
ac7e564857 | ||
![]() |
f804ab747c | ||
![]() |
cfd292ddff | ||
![]() |
d4b0c379e2 | ||
![]() |
60ebd5fd41 | ||
![]() |
19a4398c90 | ||
![]() |
841c2e397f | ||
![]() |
3f42d781ec | ||
![]() |
dd9fcc6cbd | ||
![]() |
70aed1ed63 | ||
![]() |
1c635c814c | ||
![]() |
ff1c8ff056 | ||
![]() |
44c70f4036 | ||
![]() |
28f13f8385 | ||
![]() |
849d481cd6 | ||
![]() |
a0987e33a9 | ||
![]() |
f5dae5caa2 | ||
![]() |
d640ed1f8e | ||
![]() |
0c46c0080e | ||
![]() |
7319a3f9e3 | ||
![]() |
2e6ba557c8 | ||
![]() |
1d24b8ff0e | ||
![]() |
df307be37c | ||
![]() |
5d09963bb5 | ||
![]() |
8ce05d0c41 | ||
![]() |
5e03d80944 | ||
![]() |
65bdc8bb32 | ||
![]() |
558eed95ef | ||
![]() |
a17ed9b14a | ||
![]() |
06c5a97e3b | ||
![]() |
269d7c6bcf | ||
![]() |
fc2a43b8b9 | ||
![]() |
9c14411a3b | ||
![]() |
529e402267 | ||
![]() |
4a8ecaad19 | ||
![]() |
d13013189c | ||
![]() |
b21b412f16 | ||
![]() |
b3ad43768c | ||
![]() |
9ea9a6c616 | ||
![]() |
188129f19b | ||
![]() |
8a83f7345a | ||
![]() |
65cd47b1db | ||
![]() |
7e7cc41603 | ||
![]() |
7318d3cacb | ||
![]() |
ff928d035a | ||
![]() |
9341a98ab7 | ||
![]() |
206558e21e | ||
![]() |
8ecf38befc | ||
![]() |
afb3bbff9d | ||
![]() |
a7f871f954 | ||
![]() |
5d368ecaaa | ||
![]() |
2e40bd6be0 | ||
![]() |
21ae80d491 | ||
![]() |
6292be190e | ||
![]() |
a7c5c613c2 | ||
![]() |
480981d867 | ||
![]() |
abfa80d5a2 | ||
![]() |
08531514d3 | ||
![]() |
d4c321fee4 | ||
![]() |
b125be2e7d | ||
![]() |
f075eb12ee | ||
![]() |
c30dd39ce2 | ||
![]() |
ad7cd18893 | ||
![]() |
cdc3accff3 | ||
![]() |
5916a89979 | ||
![]() |
dbc253cbf2 | ||
![]() |
1fd8989ad3 | ||
![]() |
0a401775ff | ||
![]() |
3534d6daec | ||
![]() |
ada5ac3d5c | ||
![]() |
1630eabff8 | ||
![]() |
4a492d2de5 | ||
![]() |
20a492d9d9 | ||
![]() |
179132964f | ||
![]() |
4768d6791f | ||
![]() |
c8e2d3410c | ||
![]() |
8d53c762d7 | ||
![]() |
22d2e41601 | ||
![]() |
b462c31916 | ||
![]() |
dbb5b4be69 | ||
![]() |
4f288ec5dd | ||
![]() |
8fb47e27af | ||
![]() |
a0d2063738 | ||
![]() |
c17986bb49 | ||
![]() |
bafd522530 | ||
![]() |
930e151365 | ||
![]() |
6687e09d68 | ||
![]() |
86ec79d08a | ||
![]() |
afb42a188c | ||
![]() |
c303e97eb0 | ||
![]() |
1ad2a4c617 | ||
![]() |
2bf15ca8b2 | ||
![]() |
e00ab2a2fd | ||
![]() |
98c422a6d4 | ||
![]() |
527060e219 | ||
![]() |
b5c81cd121 | ||
![]() |
9fbe81a668 | ||
![]() |
cf4ed131aa | ||
![]() |
15a9eb2c5c | ||
![]() |
3271fcc97e | ||
![]() |
0752b4cfbf | ||
![]() |
965845137c | ||
![]() |
8f83138cbc | ||
![]() |
86d726d10c | ||
![]() |
2860edd1bd | ||
![]() |
d802df87ef | ||
![]() |
808b3a5694 | ||
![]() |
cde8495583 | ||
![]() |
c2aaff81cf | ||
![]() |
5421839028 | ||
![]() |
a74466e281 | ||
![]() |
454c659e44 | ||
![]() |
2de384497e | ||
![]() |
ca41d9adb4 | ||
![]() |
a633e4eea0 | ||
![]() |
a341e916b9 | ||
![]() |
a3d289843f | ||
![]() |
8700e18ad9 | ||
![]() |
8936dafac6 | ||
![]() |
4d1c7d46eb | ||
![]() |
bffe6425da | ||
![]() |
3e1c3a2c9c | ||
![]() |
df83103718 | ||
![]() |
e54417bc02 | ||
![]() |
61f2b82221 | ||
![]() |
2689107e5a | ||
![]() |
d20d053232 | ||
![]() |
35fb72d408 | ||
![]() |
18cee3cac6 | ||
![]() |
192021fbb3 | ||
![]() |
a3c5d36584 | ||
![]() |
42d169bbc0 | ||
![]() |
3b4b3a65b6 | ||
![]() |
32ee66bf90 | ||
![]() |
6b8ff44fb0 | ||
![]() |
70cc8946b0 | ||
![]() |
eab0cfa6ab | ||
![]() |
1580898f1a | ||
![]() |
530fb03d29 | ||
![]() |
3e5261bd36 | ||
![]() |
e2d409baed | ||
![]() |
d009874ece | ||
![]() |
f8adffc131 | ||
![]() |
68a3a3be30 | ||
![]() |
c077c8b53b | ||
![]() |
6a0c6af296 | ||
![]() |
2bf16b0e59 | ||
![]() |
e56cc645e2 | ||
![]() |
8c361a8417 | ||
![]() |
65e9e57c9e | ||
![]() |
ffa4473d25 | ||
![]() |
6c5fe6f208 | ||
![]() |
60efecf946 | ||
![]() |
70fdf7c4f0 | ||
![]() |
ee4bb45368 | ||
![]() |
a08695d97e | ||
![]() |
1abeabcacd | ||
![]() |
16b2c8b058 | ||
![]() |
f8eab705fb | ||
![]() |
13b8421893 | ||
![]() |
6324a90d77 | ||
![]() |
faccca732b | ||
![]() |
04736fd8f1 | ||
![]() |
9c4378e5af | ||
![]() |
0574627010 | ||
![]() |
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 |
@@ -1,3 +1,4 @@
|
|||||||
|
assets/js/analytics.js
|
||||||
assets/js/color.js
|
assets/js/color.js
|
||||||
assets/js/flexsearch.js
|
assets/js/flexsearch.js
|
||||||
assets/js/vendor
|
assets/js/vendor
|
||||||
|
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -27,8 +27,9 @@ If applicable, add a copy of Hugo's log messages.
|
|||||||
If applicable, add screenshots to help explain your problem.
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
**Environment (please complete the following information):**
|
**Environment (please complete the following information):**
|
||||||
- Host OS: [e.g. macOS Ventura 13.0]
|
- Hinode version: [e.g. v0.11.3]
|
||||||
- Node version: [e.g. node v18.10.0]
|
- 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]
|
- 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)]
|
- Browser: [e.g. Google Chrome Version 108.0.5359.124 (Official Build) (arm64)]
|
||||||
|
|
||||||
|
27
.github/release.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
changelog:
|
||||||
|
exclude:
|
||||||
|
labels:
|
||||||
|
- skip-changelog
|
||||||
|
categories:
|
||||||
|
- title: ❗ Breaking Changes
|
||||||
|
labels:
|
||||||
|
- Semver-Major
|
||||||
|
- breaking-change
|
||||||
|
- title: 🚀 Highlights
|
||||||
|
labels:
|
||||||
|
- release-highlight
|
||||||
|
- title: 🎉 New Features
|
||||||
|
labels:
|
||||||
|
- Semver-Minor
|
||||||
|
- enhancement
|
||||||
|
- title: 🐛 Bug fixes
|
||||||
|
labels:
|
||||||
|
- fix
|
||||||
|
- bugfix
|
||||||
|
- bug
|
||||||
|
- title: 📦 Dependencies
|
||||||
|
labels:
|
||||||
|
- dependencies
|
||||||
|
- title: 🧰 Other Changes
|
||||||
|
labels:
|
||||||
|
- "*"
|
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}}
|
1
.gitignore
vendored
@@ -4,3 +4,4 @@ node_modules/
|
|||||||
|
|
||||||
.DS_store
|
.DS_store
|
||||||
.hugo_build.lock
|
.hugo_build.lock
|
||||||
|
hugo_stats.json
|
@@ -3,5 +3,6 @@ assets/scss/components/_syntax-dark.scss
|
|||||||
assets/scss/components/_syntax-light.scss
|
assets/scss/components/_syntax-light.scss
|
||||||
assets/scss/hotfix
|
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,
|
||||||
|
11
README.md
@@ -54,6 +54,7 @@ Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source
|
|||||||
|
|
||||||
Additional features include:
|
Additional features include:
|
||||||
|
|
||||||
|
- Switching between light mode and dark mode
|
||||||
- Support for multiple languages
|
- Support for multiple languages
|
||||||
- Reusable Bootstrap components through configurable shortcodes and partials
|
- Reusable Bootstrap components through configurable shortcodes and partials
|
||||||
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
|
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
|
||||||
@@ -74,10 +75,10 @@ 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][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:
|
Hinode is available as a [template][repository_template], and a [main repository][repository]. The template [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the template:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/gethinode/child.git my-hinode-site && cd my-hinode-site
|
git clone https://github.com/gethinode/template.git my-hinode-site && cd my-hinode-site
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the main theme if you intend to customize the base code:
|
Use the main theme if you intend to customize the base code:
|
||||||
@@ -115,11 +116,11 @@ Hinode is inspired by the following themes:
|
|||||||
|
|
||||||
## 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 `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.
|
The `hinode` and `template` 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
|
||||||
@@ -142,5 +143,5 @@ The `hinode` and `child` codebase is released under the [MIT license][license].
|
|||||||
[demo]: https://demo.gethinode.com/
|
[demo]: https://demo.gethinode.com/
|
||||||
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
|
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
|
||||||
[repository]: https://github.com/gethinode/hinode.git
|
[repository]: https://github.com/gethinode/hinode.git
|
||||||
[repository_child]: https://github.com/gethinode/child.git
|
[repository_template]: https://github.com/gethinode/template.git
|
||||||
[website]: https://gethinode.com/
|
[website]: https://gethinode.com/
|
||||||
|
Before Width: | Height: | Size: 480 KiB |
Before Width: | Height: | Size: 396 KiB |
Before Width: | Height: | Size: 442 KiB |
Before Width: | Height: | Size: 476 KiB |
Before Width: | Height: | Size: 420 KiB |
Before Width: | Height: | Size: 183 KiB |
Before Width: | Height: | Size: 208 KiB |
Before Width: | Height: | Size: 229 KiB |
Before Width: | Height: | Size: 648 KiB |
Before Width: | Height: | Size: 325 KiB |
Before Width: | Height: | Size: 362 KiB |
Before Width: | Height: | Size: 290 KiB |
14
assets/js/alert.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
const alert = document.getElementById('page-alert')
|
||||||
|
const closeBtn = document.getElementById('page-alert-btn-close')
|
||||||
|
if (alert !== null && closeBtn !== null) {
|
||||||
|
const version = alert.getAttribute('data-page-alert-version') || 'unknown'
|
||||||
|
const hideAlert = sessionStorage.getItem(`page-alert-${version}`) !== null
|
||||||
|
if (hideAlert) {
|
||||||
|
alert.classList.add('d-none')
|
||||||
|
}
|
||||||
|
|
||||||
|
closeBtn.addEventListener('click', () => {
|
||||||
|
sessionStorage.setItem(`page-alert-${version}`, 'seen')
|
||||||
|
alert.classList.add('d-none')
|
||||||
|
})
|
||||||
|
}
|
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)
|
@@ -14,10 +14,12 @@ const addCopyButtons = (clipboard) => {
|
|||||||
// 2. Create a button that will trigger a copy operation
|
// 2. Create a button that will trigger a copy operation
|
||||||
const button = document.createElement('button')
|
const button = document.createElement('button')
|
||||||
button.className = 'clipboard-button'
|
button.className = 'clipboard-button'
|
||||||
|
button.setAttribute('data-toast-target', 'toast-copied-code-message')
|
||||||
button.type = 'button'
|
button.type = 'button'
|
||||||
button.innerHTML = svgCopy
|
button.innerHTML = svgCopy
|
||||||
button.addEventListener('click', () => {
|
button.addEventListener('click', () => {
|
||||||
clipboard.writeText(codeBlock.innerText).then(
|
const text = codeBlock.innerText.split('\n').filter(Boolean).join('\n')
|
||||||
|
clipboard.writeText(text).then(
|
||||||
() => {
|
() => {
|
||||||
button.blur()
|
button.blur()
|
||||||
button.innerHTML = svgCheck
|
button.innerHTML = svgCheck
|
||||||
@@ -36,3 +38,10 @@ const addCopyButtons = (clipboard) => {
|
|||||||
if (navigator && navigator.clipboard) {
|
if (navigator && navigator.clipboard) {
|
||||||
addCopyButtons(navigator.clipboard)
|
addCopyButtons(navigator.clipboard)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('[data-clipboard]').forEach(trigger => {
|
||||||
|
const text = trigger.getAttribute('data-clipboard')
|
||||||
|
trigger.addEventListener('click', () => {
|
||||||
|
navigator.clipboard.writeText(text)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
@@ -4,8 +4,6 @@
|
|||||||
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
{{ if site.Params.main.enableDarkMode }}
|
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
@@ -30,17 +28,24 @@
|
|||||||
setTheme(getPreferredTheme())
|
setTheme(getPreferredTheme())
|
||||||
|
|
||||||
const showActiveTheme = theme => {
|
const showActiveTheme = theme => {
|
||||||
const activeSelector = document.querySelector('.theme-icon-active')
|
const activeSelectors = document.querySelectorAll('.theme-icon-active')
|
||||||
const activeButton = document.querySelector(`[data-bs-theme-value="${theme}"]`)
|
const activeButtons = document.querySelectorAll(`[data-bs-theme-value="${theme}"]`)
|
||||||
const activeIcon = activeButton.querySelector('i')
|
if (activeButtons.length > 0) {
|
||||||
|
const activeIcon = activeButtons[0].querySelector('i')
|
||||||
|
|
||||||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||||||
element.classList.remove('active')
|
element.classList.remove('active')
|
||||||
})
|
})
|
||||||
|
|
||||||
activeSelector.className = activeIcon.className
|
for (let i = 0; i < activeSelectors.length; ++i) {
|
||||||
activeSelector.className = activeSelector.className.replace('theme-icon', 'theme-icon-active')
|
activeSelectors[i].className = activeIcon.className
|
||||||
activeButton.classList.add('active')
|
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', () => {
|
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||||
@@ -63,5 +68,3 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
})()
|
})()
|
||||||
|
|
||||||
{{ end }}
|
|
@@ -1,15 +1,65 @@
|
|||||||
|
{{- $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:
|
Source:
|
||||||
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
- 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) {
|
function inputFocus(e) {
|
||||||
if (e.ctrlKey && e.key === '/' ) {
|
if (e.ctrlKey && e.key === '/' ) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -21,23 +71,10 @@ function inputFocus(e) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('click', function(event) {
|
|
||||||
|
|
||||||
var isClickInsideElement = suggestions.contains(event.target);
|
|
||||||
|
|
||||||
if (!isClickInsideElement) {
|
|
||||||
suggestions.classList.add('d-none');
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Source:
|
Source:
|
||||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
document.addEventListener('keydown',suggestionFocus);
|
|
||||||
|
|
||||||
function suggestionFocus(e) {
|
function suggestionFocus(e) {
|
||||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||||
if (suggestionsHidden) return;
|
if (suggestionsHidden) return;
|
||||||
@@ -64,49 +101,7 @@ Source:
|
|||||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||||
*/
|
*/
|
||||||
|
function showResults() {
|
||||||
(function(){
|
|
||||||
|
|
||||||
var index = new FlexSearch.Document({
|
|
||||||
tokenize: "forward",
|
|
||||||
cache: 100,
|
|
||||||
document: {
|
|
||||||
id: "id",
|
|
||||||
tag: "tag",
|
|
||||||
store: ["href", "title", "description"],
|
|
||||||
index: ["title", "description", "content"]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 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', show_results, true);
|
|
||||||
|
|
||||||
function show_results(){
|
|
||||||
const maxResult = 5;
|
const maxResult = 5;
|
||||||
var searchQuery = this.value;
|
var searchQuery = this.value;
|
||||||
// filter the results for the currently tagged language
|
// filter the results for the currently tagged language
|
||||||
@@ -125,8 +120,9 @@ Source:
|
|||||||
|
|
||||||
// inform user that no results were found
|
// inform user that no results were found
|
||||||
if (flatResults.size === 0 && searchQuery) {
|
if (flatResults.size === 0 && searchQuery) {
|
||||||
|
const msg = suggestions.dataset.noResults;
|
||||||
const noResultsMessage = document.createElement('div')
|
const noResultsMessage = document.createElement('div')
|
||||||
noResultsMessage.innerHTML = `{{ T "ui_no_results" }} "<strong>${searchQuery}</strong>"`
|
noResultsMessage.innerHTML = `${msg} "<strong>${searchQuery}</strong>"`
|
||||||
noResultsMessage.classList.add("suggestion__no-results");
|
noResultsMessage.classList.add("suggestion__no-results");
|
||||||
suggestions.appendChild(noResultsMessage);
|
suggestions.appendChild(noResultsMessage);
|
||||||
return;
|
return;
|
||||||
@@ -157,5 +153,12 @@ Source:
|
|||||||
if (suggestions.childElementCount == maxResult) break;
|
if (suggestions.childElementCount == maxResult) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}());
|
|
||||||
|
|
||||||
|
if (search !== null && suggestions !== null) {
|
||||||
|
document.addEventListener('keydown', inputFocus);
|
||||||
|
document.addEventListener('keydown', suggestionFocus);
|
||||||
|
document.addEventListener('click', hideSuggestions);
|
||||||
|
initIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
{{- end -}}
|
20
assets/js/menu.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
const url = new URL(window.location.href)
|
||||||
|
const menu = url.searchParams.get('menu')
|
||||||
|
const child = url.searchParams.get('child')
|
||||||
|
const menuItems = document.querySelectorAll('[data-nav="main"]')
|
||||||
|
|
||||||
|
if (menu !== null) {
|
||||||
|
menuItems.forEach(element => {
|
||||||
|
element.classList.remove('active')
|
||||||
|
})
|
||||||
|
|
||||||
|
const targetMainItems = document.querySelectorAll(`[data-nav-main="${menu}"]:not([data-nav-child])`)
|
||||||
|
targetMainItems.forEach(element => {
|
||||||
|
element.classList.add('active')
|
||||||
|
})
|
||||||
|
|
||||||
|
const targetChildItems = document.querySelectorAll(`[data-nav-main="${menu}"][data-nav-child="${child}"]`)
|
||||||
|
targetChildItems.forEach(element => {
|
||||||
|
element.classList.add('active')
|
||||||
|
})
|
||||||
|
}
|
@@ -1,6 +1,8 @@
|
|||||||
const navbar = document.querySelector('.navbar')
|
const navbar = document.querySelector('.navbar')
|
||||||
const toggler = document.getElementById('main-nav-toggler')
|
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
|
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||||
window.onscroll = () => {
|
window.onscroll = () => {
|
||||||
if (window.scrollY > 75) {
|
if (window.scrollY > 75) {
|
||||||
@@ -14,3 +16,11 @@ window.onscroll = () => {
|
|||||||
toggler.onclick = () => {
|
toggler.onclick = () => {
|
||||||
navbar.classList.toggle('navbar-expanded')
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,10 +1,24 @@
|
|||||||
// Bootstrap toast example: https://getbootstrap.com/docs/5.2/components/toasts/
|
// Script to move all embedded toast messages into a container with id 'toast-container'. The container ensures multiple
|
||||||
const toastTrigger = document.getElementById('toastButton')
|
// toast messages are stacked properly. The script targets all elements specified by a 'data-toast-target' and ensures
|
||||||
const toastLiveExample = document.getElementById('toastMessage')
|
// the click event of the origin is linked as well.
|
||||||
if (toastTrigger) {
|
|
||||||
toastTrigger.addEventListener('click', () => {
|
const container = document.getElementById('toast-container')
|
||||||
|
if (container !== null) {
|
||||||
|
// process all data-toast-target elements
|
||||||
|
document.querySelectorAll('[data-toast-target]').forEach(trigger => {
|
||||||
|
const target = document.getElementById(trigger.getAttribute('data-toast-target'))
|
||||||
|
if (target !== null) {
|
||||||
|
// move the element to the toast containr
|
||||||
|
container.appendChild(target)
|
||||||
|
|
||||||
// eslint-disable-next-line no-undef
|
// eslint-disable-next-line no-undef
|
||||||
const toast = new bootstrap.Toast(toastLiveExample)
|
const toast = bootstrap.Toast.getOrCreateInstance(target)
|
||||||
|
if (toast !== null) {
|
||||||
|
// associate the click event of the origin with the toast element
|
||||||
|
trigger.addEventListener('click', () => {
|
||||||
toast.show()
|
toast.show()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@@ -1,17 +1,5 @@
|
|||||||
// Define template variables
|
// Define template variables
|
||||||
// TODO: optimize, see https://discourse.gohugo.io/t/initialize-sass-variables-from-hugo-templates/42053
|
@import "hugo:vars";
|
||||||
// requires installation of dart-sass, no cross-platform installation available yet
|
|
||||||
$themeFont: {{ site.Params.style.themeFont | default "Inter" }};
|
|
||||||
$primary: {{ site.Params.style.primary | default "#007bff" }};
|
|
||||||
$secondary: {{ site.Params.style.secondary | default "#6c757d" }};
|
|
||||||
$success: {{ site.Params.style.success | default "#198754" }};
|
|
||||||
$info: {{ site.Params.style.info | default "#0dcaf0" }};
|
|
||||||
$warning: {{ site.Params.style.warning | default "#ffc107" }};
|
|
||||||
$danger: {{ site.Params.style.danger | default "#dc3545" }};
|
|
||||||
$light: {{ site.Params.style.light | default "#f8f9fa" }};
|
|
||||||
$dark: {{ site.Params.style.dark | default "#212529" }};
|
|
||||||
$navbar-offset: {{ if site.Params.navigation.fixed }}{{ site.Params.navigation.offset | default "4em" }}{{ else }}0em{{ end }};
|
|
||||||
$enable-dark-mode: {{ site.Params.main.enableDarkMode | default true }} !default;
|
|
||||||
|
|
||||||
// Include default variable overrides
|
// Include default variable overrides
|
||||||
@import "common/variables.scss";
|
@import "common/variables.scss";
|
||||||
@@ -23,14 +11,14 @@ $enable-dark-mode: {{ site.Params.main.enableDarkMode | default tru
|
|||||||
@import "bootstrap/scss/functions";
|
@import "bootstrap/scss/functions";
|
||||||
|
|
||||||
// Import Bootstrap configuration
|
// Import Bootstrap configuration
|
||||||
@import "hotfix/variables";
|
@import "bootstrap/scss/variables";
|
||||||
@import "hotfix/variables-dark.scss";
|
@import "bootstrap/scss/variables-dark.scss";
|
||||||
@import "hotfix/maps";
|
@import "bootstrap/scss/maps";
|
||||||
@import "bootstrap/scss/mixins";
|
@import "bootstrap/scss/mixins";
|
||||||
@import "bootstrap/scss/utilities";
|
@import "bootstrap/scss/utilities";
|
||||||
|
|
||||||
// Import Bootstrap layout & components
|
// Import Bootstrap layout & components
|
||||||
@import "hotfix/root";
|
@import "bootstrap/scss/root";
|
||||||
@import "bootstrap/scss/reboot";
|
@import "bootstrap/scss/reboot";
|
||||||
@import "bootstrap/scss/type";
|
@import "bootstrap/scss/type";
|
||||||
@import "bootstrap/scss/images";
|
@import "bootstrap/scss/images";
|
||||||
@@ -65,9 +53,6 @@ $enable-dark-mode: {{ site.Params.main.enableDarkMode | default tru
|
|||||||
// 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
|
// scss-docs-start awesome
|
||||||
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
||||||
@@ -77,6 +62,7 @@ $enable-dark-mode: {{ site.Params.main.enableDarkMode | default tru
|
|||||||
// scss-docs-end awesome
|
// scss-docs-end awesome
|
||||||
|
|
||||||
// Import Hinode theme styles
|
// Import Hinode theme styles
|
||||||
|
@import "components/alert.scss";
|
||||||
@import "components/blockquote.scss";
|
@import "components/blockquote.scss";
|
||||||
@import "components/buttons.scss";
|
@import "components/buttons.scss";
|
||||||
@import "components/card.scss";
|
@import "components/card.scss";
|
||||||
@@ -86,18 +72,33 @@ $enable-dark-mode: {{ site.Params.main.enableDarkMode | default tru
|
|||||||
@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/pagination.scss";
|
||||||
|
@import "components/persona.scss";
|
||||||
@import "components/popover.scss";
|
@import "components/popover.scss";
|
||||||
@import "components/search.scss";
|
@import "components/search.scss";
|
||||||
@import "components/sidebar.scss";
|
@import "components/sidebar.scss";
|
||||||
@import "components/syntax.scss";
|
@import "components/syntax.scss";
|
||||||
@import "components/toc.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 "common/export.scss";
|
||||||
@import "helpers/colored-links.scss";
|
@import "helpers/colored-links.scss";
|
||||||
@import "helpers/hidden.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 placeholder
|
||||||
@import "theme.scss";
|
@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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -25,3 +25,4 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// scss-docs-end export
|
// scss-docs-end export
|
||||||
|
// stylelint-enable selector-pseudo-class-no-unknown
|
||||||
|
@@ -1,25 +1,41 @@
|
|||||||
// scss-docs-start icons
|
// scss-docs-start icons
|
||||||
$form-check-input-checked-bg-image: url("icons/form-check-input-checked-bg-image.svg") !default;
|
$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-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-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: url("/icons/form-switch-bg-image.svg") !default;
|
||||||
$form-switch-bg-image-dark: url("icons/form-switch-bg-image-dark.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-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-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: url("/icons/form-select-indicator.svg") !default;
|
||||||
$form-select-indicator-dark: url("icons/form-select-indicator-dark.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-valid: url("/icons/form-feedback-icon-valid.svg") !default;
|
||||||
$form-feedback-icon-invalid: url("icons/form-feedback-icon-invalid.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-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;
|
$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: url("/icons/accordion-button-icon.svg") !default;
|
||||||
$accordion-button-icon-dark: url("icons/accordion-button-icon-dark.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: url("/icons/accordion-button-active-icon.svg") !default;
|
||||||
$accordion-button-active-icon-dark: url("icons/accordion-button-active-icon-dark.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-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;
|
$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-close-bg: url("/icons/btn-close-bg.svg") !default;
|
||||||
$btn-toggle: url("icons/btn-toggle.svg") !default;
|
$btn-toggle: url("/icons/btn-toggle.svg") !default;
|
||||||
$btn-toggle-dark: url("icons/btn-toggle-dark.svg") !default;
|
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
|
||||||
|
|
||||||
// scss-docs-end icons
|
// scss-docs-end icons
|
||||||
|
|
||||||
|
.fa-wrapper {
|
||||||
|
container: wrapper / inline-size;
|
||||||
|
}
|
||||||
|
|
||||||
|
// define fallback size for browsers not supporting containers
|
||||||
|
.fa-fluid {
|
||||||
|
font-size: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set size based on container width
|
||||||
|
@container (min-width: 0) {
|
||||||
|
.fa-wrapper .fa-fluid {
|
||||||
|
font-size: 60cqi;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -18,3 +18,132 @@ a:active {
|
|||||||
.tickmark li::marker {
|
.tickmark li::marker {
|
||||||
content: "✓ ";
|
content: "✓ ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.anchor
|
||||||
|
{
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading:hover .anchor
|
||||||
|
{
|
||||||
|
transition: 0.25s ease-in-out;
|
||||||
|
color: $primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
$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 ),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
@media screen and (orientation: portrait) {
|
||||||
|
.min-vh-custom {
|
||||||
|
min-height: 25vh !important
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (orientation: landscape) {
|
||||||
|
.min-vh-custom {
|
||||||
|
min-height: 50vh !important
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--nav-height: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-up(sm) {
|
||||||
|
.ratio-section {
|
||||||
|
min-height: calc(min(100vh, 576px) - var(--nav-height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-up(md) {
|
||||||
|
.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
|
||||||
$enable-negative-margins: true;
|
$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";
|
||||||
@@ -8,7 +9,7 @@ $fa-font-path: "../fonts";
|
|||||||
$navbar-toggler-focus-width: 0 !default;
|
$navbar-toggler-focus-width: 0 !default;
|
||||||
|
|
||||||
// scss-docs-start font
|
// scss-docs-start font
|
||||||
$font-family-sans-serif: $themeFont, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
$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;
|
||||||
@@ -17,7 +18,7 @@ $font-weight-bold: 600 !default;
|
|||||||
$font-weight-bolder: bolder !default;
|
$font-weight-bolder: bolder !default;
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
font-weight: 600 !important;
|
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
// scss-docs-end font
|
// scss-docs-end font
|
||||||
|
|
||||||
|
3
assets/scss/components/_alert.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.alert-no-decoration {
|
||||||
|
--bs-alert-border-radius: none;
|
||||||
|
}
|
@@ -4,5 +4,24 @@
|
|||||||
.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);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-social {
|
||||||
|
--bs-btn-bg: transparent;
|
||||||
|
--bs-btn-border-width: none;
|
||||||
|
--bs-btn-color: var(--bs-secondary);
|
||||||
|
--bs-btn-border-color: none;
|
||||||
|
--bs-btn-hover-bg: none;
|
||||||
|
--bs-btn-hover-border-color: none;
|
||||||
|
--bs-btn-active-bg: none;
|
||||||
|
--bs-btn-active-border-color: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-social:hover,
|
||||||
|
.btn-social:focus,
|
||||||
|
.btn-social:active,
|
||||||
|
.btn-social.active,
|
||||||
|
.open > .dropdown-toggle.btn-primary {
|
||||||
|
color: var(--bs-primary) if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
// stylelint-disable annotation-no-unknown
|
|
||||||
|
|
||||||
// add zoom animation with opacity change on card img hover
|
// add zoom animation with opacity change on card img hover
|
||||||
// source: https://stackoverflow.com/a/43816376
|
// source: https://stackoverflow.com/a/43816376
|
||||||
|
|
||||||
@@ -8,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 {
|
||||||
@@ -25,11 +15,21 @@
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,29 +43,31 @@
|
|||||||
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 {
|
.card-body-link {
|
||||||
color: $body-color if($enable-important-utilities, !important, null);
|
color: $body-color if($enable-important-utilities, !important, null);
|
||||||
|
|
||||||
@if $link-shade-percentage != 0 {
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
color: tint-color($body-color, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.card-body-link {
|
.card-body-link {
|
||||||
color: $gray-500 if($enable-important-utilities, !important, null);
|
color: $gray-500 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@if $link-shade-percentage != 0 {
|
.card-zoom card-body-link,
|
||||||
|
.card-body-link {
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: shade-color($gray-500, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// stylelint-enable annotation-no-unknown
|
// stylelint-enable annotation-no-unknown
|
||||||
|
|
||||||
|
// make tag-link clickable on top of the stretched-link.
|
||||||
|
.card .tag-link {
|
||||||
|
z-index: 2;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
@@ -4,24 +4,32 @@
|
|||||||
|
|
||||||
.navbar {
|
.navbar {
|
||||||
transition: 0.5s ease-in-out;
|
transition: 0.5s ease-in-out;
|
||||||
background-color: none;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-active, .navbar-expanded {
|
.nav-active, .navbar-expanded {
|
||||||
background-color: var(--bs-body-bg);
|
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 */
|
||||||
@@ -89,8 +97,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-spacing {
|
|
||||||
width: 26px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// stylelint-enable annotation-no-unknown
|
// stylelint-enable annotation-no-unknown
|
||||||
|
11
assets/scss/components/_pagination.scss
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
.pagination {
|
||||||
|
--bs-pagination-bg: var(--bs-primary-bg-subtle);
|
||||||
|
--bs-pagination-border-color: none;
|
||||||
|
--bs-pagination-hover-color: var(--bs-pagination-active-color);
|
||||||
|
--bs-pagination-hover-bg: var(--bs-pagination-active-bg);
|
||||||
|
--bs-pagination-hover-border-color: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination .page-item {
|
||||||
|
margin: 0.4rem;
|
||||||
|
}
|
3
assets/scss/components/_persona.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.persona {
|
||||||
|
min-height: 320px !important
|
||||||
|
}
|
@@ -3,9 +3,24 @@
|
|||||||
top: $navbar-offset;
|
top: $navbar-offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sidebar-overflow {
|
||||||
|
top: $navbar-offset;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.sidebar-item {
|
.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;
|
color: black;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.btn-toggle {
|
.btn-toggle {
|
||||||
padding: 0.25rem 0.5rem;
|
padding: 0.25rem 0.5rem;
|
||||||
@@ -55,6 +70,14 @@
|
|||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.sidebar-item {
|
.sidebar-item {
|
||||||
color: var(--bs-tertiary-color);
|
color: var(--bs-tertiary-color);
|
||||||
|
margin-left: 0 !important;
|
||||||
|
padding-left: 0.85rem !important;
|
||||||
|
|
||||||
|
&.active,
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: var(--bs-secondary-color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-toggle {
|
.btn-toggle {
|
||||||
|
@@ -1,20 +1,21 @@
|
|||||||
//
|
//
|
||||||
// Table of contents sidebar
|
// Table of contents sidebar & drop-down panel
|
||||||
//
|
//
|
||||||
// scss-docs-start toc
|
// scss-docs-start toc
|
||||||
.toc {
|
.toc-sidebar {
|
||||||
grid-area: toc;
|
grid-area: toc;
|
||||||
right: 0;
|
right: 0;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
height: calc(100vh - 7rem);
|
height: calc(100vh - 5rem);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
top: $navbar-offset;
|
top: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
// scss-docs-end toc
|
// scss-docs-end toc
|
||||||
|
|
||||||
.toc nav {
|
.toc nav {
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem;
|
||||||
|
margin-bottom: -0.875rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav ul {
|
.toc nav ul {
|
||||||
@@ -33,6 +34,10 @@
|
|||||||
|
|
||||||
.toc nav a {
|
.toc nav a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--bs-primary);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc nav a:not(:hover) {
|
.toc nav a:not(:hover) {
|
||||||
@@ -42,3 +47,21 @@
|
|||||||
.toc nav a code {
|
.toc nav a code {
|
||||||
font: inherit;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,19 +1,37 @@
|
|||||||
// stylelint-disable function-name-case
|
|
||||||
|
|
||||||
// scss-docs-start colored-links
|
// scss-docs-start colored-links
|
||||||
@each $color, $value in $theme-colors {
|
$custom-colors: (
|
||||||
$contrast-color: color-contrast($value);
|
"primary": "light",
|
||||||
$color-rgb: to-rgb($value);
|
"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} {
|
.link-bg-#{$color} {
|
||||||
color: $contrast-color !important; // stylelint-disable-line declaration-no-important
|
color: $main-color if($enable-important-utilities, !important, null);
|
||||||
background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null); // stylelint-disable-line annotation-no-unknown
|
|
||||||
|
|
||||||
@if $link-shade-percentage != 0 {
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: if($contrast-color == $color-contrast-light, shade-color($contrast-color, $link-shade-percentage), tint-color($contrast-color, $link-shade-percentage)) !important; // stylelint-disable-line declaration-no-important
|
color: $emphasize-color if($enable-important-utilities, !important, null);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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 +0,0 @@
|
|||||||
.hidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
@@ -1,176 +0,0 @@
|
|||||||
// Copied from https://github.com/twbs/bootstrap/commit/15744ee1d04bcca03155c3bb37ee7e65a7b011c6
|
|
||||||
//
|
|
||||||
// Re-assigned maps
|
|
||||||
//
|
|
||||||
// Placed here so that others can override the default Sass maps and see automatic updates to utilities and more.
|
|
||||||
|
|
||||||
// scss-docs-start theme-colors-rgb
|
|
||||||
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
|
|
||||||
// scss-docs-end theme-colors-rgb
|
|
||||||
|
|
||||||
// scss-docs-start theme-text-map
|
|
||||||
$theme-colors-text: (
|
|
||||||
"primary": $primary-text-emphasis,
|
|
||||||
"secondary": $secondary-text-emphasis,
|
|
||||||
"success": $success-text-emphasis,
|
|
||||||
"info": $info-text-emphasis,
|
|
||||||
"warning": $warning-text-emphasis,
|
|
||||||
"danger": $danger-text-emphasis,
|
|
||||||
"light": $light-text-emphasis,
|
|
||||||
"dark": $dark-text-emphasis,
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end theme-text-map
|
|
||||||
|
|
||||||
// scss-docs-start theme-bg-subtle-map
|
|
||||||
$theme-colors-bg-subtle: (
|
|
||||||
"primary": $primary-bg-subtle,
|
|
||||||
"secondary": $secondary-bg-subtle,
|
|
||||||
"success": $success-bg-subtle,
|
|
||||||
"info": $info-bg-subtle,
|
|
||||||
"warning": $warning-bg-subtle,
|
|
||||||
"danger": $danger-bg-subtle,
|
|
||||||
"light": $light-bg-subtle,
|
|
||||||
"dark": $dark-bg-subtle,
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end theme-bg-subtle-map
|
|
||||||
|
|
||||||
// scss-docs-start theme-border-subtle-map
|
|
||||||
$theme-colors-border-subtle: (
|
|
||||||
"primary": $primary-border-subtle,
|
|
||||||
"secondary": $secondary-border-subtle,
|
|
||||||
"success": $success-border-subtle,
|
|
||||||
"info": $info-border-subtle,
|
|
||||||
"warning": $warning-border-subtle,
|
|
||||||
"danger": $danger-border-subtle,
|
|
||||||
"light": $light-border-subtle,
|
|
||||||
"dark": $dark-border-subtle,
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end theme-border-subtle-map
|
|
||||||
|
|
||||||
$theme-colors-text-dark: null !default;
|
|
||||||
$theme-colors-bg-subtle-dark: null !default;
|
|
||||||
$theme-colors-border-subtle-dark: null !default;
|
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
|
||||||
// scss-docs-start theme-text-dark-map
|
|
||||||
$theme-colors-text-dark: (
|
|
||||||
"primary": $primary-text-emphasis-dark,
|
|
||||||
"secondary": $secondary-text-emphasis-dark,
|
|
||||||
"success": $success-text-emphasis-dark,
|
|
||||||
"info": $info-text-emphasis-dark,
|
|
||||||
"warning": $warning-text-emphasis-dark,
|
|
||||||
"danger": $danger-text-emphasis-dark,
|
|
||||||
"light": $light-text-emphasis-dark,
|
|
||||||
"dark": $dark-text-emphasis-dark,
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end theme-text-dark-map
|
|
||||||
|
|
||||||
// scss-docs-start theme-bg-subtle-dark-map
|
|
||||||
$theme-colors-bg-subtle-dark: (
|
|
||||||
"primary": $primary-bg-subtle-dark,
|
|
||||||
"secondary": $secondary-bg-subtle-dark,
|
|
||||||
"success": $success-bg-subtle-dark,
|
|
||||||
"info": $info-bg-subtle-dark,
|
|
||||||
"warning": $warning-bg-subtle-dark,
|
|
||||||
"danger": $danger-bg-subtle-dark,
|
|
||||||
"light": $light-bg-subtle-dark,
|
|
||||||
"dark": $dark-bg-subtle-dark,
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end theme-bg-subtle-dark-map
|
|
||||||
|
|
||||||
// scss-docs-start theme-border-subtle-dark-map
|
|
||||||
$theme-colors-border-subtle-dark: (
|
|
||||||
"primary": $primary-border-subtle-dark,
|
|
||||||
"secondary": $secondary-border-subtle-dark,
|
|
||||||
"success": $success-border-subtle-dark,
|
|
||||||
"info": $info-border-subtle-dark,
|
|
||||||
"warning": $warning-border-subtle-dark,
|
|
||||||
"danger": $danger-border-subtle-dark,
|
|
||||||
"light": $light-border-subtle-dark,
|
|
||||||
"dark": $dark-border-subtle-dark,
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end theme-border-subtle-dark-map
|
|
||||||
}
|
|
||||||
|
|
||||||
// Utilities maps
|
|
||||||
//
|
|
||||||
// Extends the default `$theme-colors` maps to help create our utilities.
|
|
||||||
|
|
||||||
// Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
|
|
||||||
// scss-docs-start utilities-colors
|
|
||||||
$utilities-colors: $theme-colors-rgb !default;
|
|
||||||
// scss-docs-end utilities-colors
|
|
||||||
|
|
||||||
// scss-docs-start utilities-text-colors
|
|
||||||
$utilities-text: map-merge(
|
|
||||||
$utilities-colors,
|
|
||||||
(
|
|
||||||
"black": to-rgb($black),
|
|
||||||
"white": to-rgb($white),
|
|
||||||
"body": to-rgb($body-color)
|
|
||||||
)
|
|
||||||
) !default;
|
|
||||||
$utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
|
|
||||||
|
|
||||||
$utilities-text-emphasis-colors: (
|
|
||||||
"primary-emphasis": var(--#{$prefix}primary-text-emphasis),
|
|
||||||
"secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
|
|
||||||
"success-emphasis": var(--#{$prefix}success-text-emphasis),
|
|
||||||
"info-emphasis": var(--#{$prefix}info-text-emphasis),
|
|
||||||
"warning-emphasis": var(--#{$prefix}warning-text-emphasis),
|
|
||||||
"danger-emphasis": var(--#{$prefix}danger-text-emphasis),
|
|
||||||
"light-emphasis": var(--#{$prefix}light-text-emphasis),
|
|
||||||
"dark-emphasis": var(--#{$prefix}dark-text-emphasis)
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end utilities-text-colors
|
|
||||||
|
|
||||||
// scss-docs-start utilities-bg-colors
|
|
||||||
$utilities-bg: map-merge(
|
|
||||||
$utilities-colors,
|
|
||||||
(
|
|
||||||
"black": to-rgb($black),
|
|
||||||
"white": to-rgb($white),
|
|
||||||
"body": to-rgb($body-bg)
|
|
||||||
)
|
|
||||||
) !default;
|
|
||||||
$utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
|
|
||||||
|
|
||||||
$utilities-bg-subtle: (
|
|
||||||
"primary-subtle": var(--#{$prefix}primary-bg-subtle),
|
|
||||||
"secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
|
|
||||||
"success-subtle": var(--#{$prefix}success-bg-subtle),
|
|
||||||
"info-subtle": var(--#{$prefix}info-bg-subtle),
|
|
||||||
"warning-subtle": var(--#{$prefix}warning-bg-subtle),
|
|
||||||
"danger-subtle": var(--#{$prefix}danger-bg-subtle),
|
|
||||||
"light-subtle": var(--#{$prefix}light-bg-subtle),
|
|
||||||
"dark-subtle": var(--#{$prefix}dark-bg-subtle)
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end utilities-bg-colors
|
|
||||||
|
|
||||||
// scss-docs-start utilities-border-colors
|
|
||||||
$utilities-border: map-merge(
|
|
||||||
$utilities-colors,
|
|
||||||
(
|
|
||||||
"black": to-rgb($black),
|
|
||||||
"white": to-rgb($white)
|
|
||||||
)
|
|
||||||
) !default;
|
|
||||||
$utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
|
|
||||||
|
|
||||||
$utilities-border-subtle: (
|
|
||||||
"primary-subtle": var(--#{$prefix}primary-border-subtle),
|
|
||||||
"secondary-subtle": var(--#{$prefix}secondary-border-subtle),
|
|
||||||
"success-subtle": var(--#{$prefix}success-border-subtle),
|
|
||||||
"info-subtle": var(--#{$prefix}info-border-subtle),
|
|
||||||
"warning-subtle": var(--#{$prefix}warning-border-subtle),
|
|
||||||
"danger-subtle": var(--#{$prefix}danger-border-subtle),
|
|
||||||
"light-subtle": var(--#{$prefix}light-border-subtle),
|
|
||||||
"dark-subtle": var(--#{$prefix}dark-border-subtle)
|
|
||||||
) !default;
|
|
||||||
// scss-docs-end utilities-border-colors
|
|
||||||
|
|
||||||
$utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
|
|
||||||
|
|
||||||
$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
|
|
||||||
|
|
||||||
$gutters: $spacers !default;
|
|
@@ -1,180 +0,0 @@
|
|||||||
// Copied from https://github.com/twbs/bootstrap/commit/15744ee1d04bcca03155c3bb37ee7e65a7b011c6
|
|
||||||
|
|
||||||
:root,
|
|
||||||
[data-bs-theme="light"] {
|
|
||||||
// Note: Custom variable values only support SassScript inside `#{}`.
|
|
||||||
|
|
||||||
// Colors
|
|
||||||
//
|
|
||||||
// Generate palettes for full colors, grays, and theme colors.
|
|
||||||
|
|
||||||
@each $color, $value in $colors {
|
|
||||||
--#{$prefix}#{$color}: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $grays {
|
|
||||||
--#{$prefix}gray-#{$color}: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors {
|
|
||||||
--#{$prefix}#{$color}: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors-rgb {
|
|
||||||
--#{$prefix}#{$color}-rgb: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors-text {
|
|
||||||
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors-bg-subtle {
|
|
||||||
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors-border-subtle {
|
|
||||||
--#{$prefix}#{$color}-border-subtle: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
--#{$prefix}white-rgb: #{to-rgb($white)};
|
|
||||||
--#{$prefix}black-rgb: #{to-rgb($black)};
|
|
||||||
|
|
||||||
// Fonts
|
|
||||||
|
|
||||||
// Note: Use `inspect` for lists so that quoted items keep the quotes.
|
|
||||||
// See https://github.com/sass/sass/issues/2383#issuecomment-336349172
|
|
||||||
--#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};
|
|
||||||
--#{$prefix}font-monospace: #{inspect($font-family-monospace)};
|
|
||||||
--#{$prefix}gradient: #{$gradient};
|
|
||||||
|
|
||||||
// Root and body
|
|
||||||
// scss-docs-start root-body-variables
|
|
||||||
@if $font-size-root != null {
|
|
||||||
--#{$prefix}root-font-size: #{$font-size-root};
|
|
||||||
}
|
|
||||||
--#{$prefix}body-font-family: #{inspect($font-family-base)};
|
|
||||||
@include rfs($font-size-base, --#{$prefix}body-font-size);
|
|
||||||
--#{$prefix}body-font-weight: #{$font-weight-base};
|
|
||||||
--#{$prefix}body-line-height: #{$line-height-base};
|
|
||||||
@if $body-text-align != null {
|
|
||||||
--#{$prefix}body-text-align: #{$body-text-align};
|
|
||||||
}
|
|
||||||
|
|
||||||
--#{$prefix}body-color: #{$body-color};
|
|
||||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color)};
|
|
||||||
--#{$prefix}body-bg: #{$body-bg};
|
|
||||||
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
|
|
||||||
|
|
||||||
--#{$prefix}emphasis-color: #{$body-emphasis-color};
|
|
||||||
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};
|
|
||||||
|
|
||||||
--#{$prefix}secondary-color: #{$body-secondary-color};
|
|
||||||
--#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};
|
|
||||||
--#{$prefix}secondary-bg: #{$body-secondary-bg};
|
|
||||||
--#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};
|
|
||||||
|
|
||||||
--#{$prefix}tertiary-color: #{$body-tertiary-color};
|
|
||||||
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
|
|
||||||
--#{$prefix}tertiary-bg: #{$body-tertiary-bg};
|
|
||||||
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
|
|
||||||
// scss-docs-end root-body-variables
|
|
||||||
|
|
||||||
@if $headings-color != null {
|
|
||||||
--#{$prefix}heading-color: #{$headings-color};
|
|
||||||
}
|
|
||||||
|
|
||||||
--#{$prefix}link-color: #{$link-color};
|
|
||||||
--#{$prefix}link-color-rgb: #{to-rgb($link-color)};
|
|
||||||
--#{$prefix}link-decoration: #{$link-decoration};
|
|
||||||
|
|
||||||
--#{$prefix}link-hover-color: #{$link-hover-color};
|
|
||||||
--#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};
|
|
||||||
|
|
||||||
@if $link-hover-decoration != null {
|
|
||||||
--#{$prefix}link-hover-decoration: #{$link-hover-decoration};
|
|
||||||
}
|
|
||||||
|
|
||||||
--#{$prefix}code-color: #{$code-color};
|
|
||||||
--#{$prefix}highlight-bg: #{$mark-bg};
|
|
||||||
|
|
||||||
// scss-docs-start root-border-var
|
|
||||||
--#{$prefix}border-width: #{$border-width};
|
|
||||||
--#{$prefix}border-style: #{$border-style};
|
|
||||||
--#{$prefix}border-color: #{$border-color};
|
|
||||||
--#{$prefix}border-color-translucent: #{$border-color-translucent};
|
|
||||||
|
|
||||||
--#{$prefix}border-radius: #{$border-radius};
|
|
||||||
--#{$prefix}border-radius-sm: #{$border-radius-sm};
|
|
||||||
--#{$prefix}border-radius-lg: #{$border-radius-lg};
|
|
||||||
--#{$prefix}border-radius-xl: #{$border-radius-xl};
|
|
||||||
--#{$prefix}border-radius-xxl: #{$border-radius-xxl};
|
|
||||||
--#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency
|
|
||||||
--#{$prefix}border-radius-pill: #{$border-radius-pill};
|
|
||||||
// scss-docs-end root-border-var
|
|
||||||
|
|
||||||
--#{$prefix}box-shadow: #{$box-shadow};
|
|
||||||
--#{$prefix}box-shadow-sm: #{$box-shadow-sm};
|
|
||||||
--#{$prefix}box-shadow-lg: #{$box-shadow-lg};
|
|
||||||
--#{$prefix}box-shadow-inset: #{$box-shadow-inset};
|
|
||||||
|
|
||||||
// Focus styles
|
|
||||||
// scss-docs-start root-focus-variables
|
|
||||||
--#{$prefix}focus-ring-width: #{$focus-ring-width};
|
|
||||||
--#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
|
|
||||||
--#{$prefix}focus-ring-color: #{$focus-ring-color};
|
|
||||||
// By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
|
|
||||||
--#{$prefix}focus-ring-box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
|
|
||||||
// scss-docs-end root-focus-variables
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
|
||||||
@include color-mode(dark, true) {
|
|
||||||
color-scheme: dark;
|
|
||||||
|
|
||||||
// scss-docs-start root-dark-mode-vars
|
|
||||||
--#{$prefix}body-color: #{$body-color-dark};
|
|
||||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};
|
|
||||||
--#{$prefix}body-bg: #{$body-bg-dark};
|
|
||||||
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};
|
|
||||||
|
|
||||||
--#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
|
|
||||||
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
|
|
||||||
|
|
||||||
--#{$prefix}secondary-color: #{$body-secondary-color-dark};
|
|
||||||
--#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};
|
|
||||||
--#{$prefix}secondary-bg: #{$body-secondary-bg-dark};
|
|
||||||
--#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};
|
|
||||||
|
|
||||||
--#{$prefix}tertiary-color: #{$body-tertiary-color-dark};
|
|
||||||
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
|
|
||||||
--#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};
|
|
||||||
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors-text-dark {
|
|
||||||
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors-bg-subtle-dark {
|
|
||||||
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color, $value in $theme-colors-border-subtle-dark {
|
|
||||||
--#{$prefix}#{$color}-border-subtle: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $headings-color-dark != null {
|
|
||||||
--#{$prefix}heading-color: #{$headings-color-dark};
|
|
||||||
}
|
|
||||||
|
|
||||||
--#{$prefix}link-color: #{$link-color-dark};
|
|
||||||
--#{$prefix}link-hover-color: #{$link-hover-color-dark};
|
|
||||||
--#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};
|
|
||||||
--#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};
|
|
||||||
|
|
||||||
--#{$prefix}code-color: #{$code-color-dark};
|
|
||||||
|
|
||||||
--#{$prefix}border-color: #{$border-color-dark};
|
|
||||||
--#{$prefix}border-color-translucent: #{$border-color-translucent-dark};
|
|
||||||
// scss-docs-end root-dark-mode-vars
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,77 +0,0 @@
|
|||||||
// Copied from https://github.com/twbs/bootstrap/pull/37953
|
|
||||||
|
|
||||||
// Dark color mode variables
|
|
||||||
//
|
|
||||||
// Custom variables for the `[data-bs-theme="dark"]` theme. Use this as a starting point for your own custom color modes by creating a new theme-specific file like `_variables-dark.scss` and adding the variables you need.
|
|
||||||
|
|
||||||
//
|
|
||||||
// Global colors
|
|
||||||
//
|
|
||||||
|
|
||||||
// scss-docs-start sass-dark-mode-vars
|
|
||||||
// scss-docs-start theme-text-dark-variables
|
|
||||||
$primary-text-emphasis-dark: tint-color($primary, 40%) !default;
|
|
||||||
$secondary-text-emphasis-dark: tint-color($secondary, 40%) !default;
|
|
||||||
$success-text-emphasis-dark: tint-color($success, 40%) !default;
|
|
||||||
$info-text-emphasis-dark: tint-color($info, 40%) !default;
|
|
||||||
$warning-text-emphasis-dark: tint-color($warning, 40%) !default;
|
|
||||||
$danger-text-emphasis-dark: tint-color($danger, 40%) !default;
|
|
||||||
$light-text-emphasis-dark: $gray-100 !default;
|
|
||||||
$dark-text-emphasis-dark: $gray-300 !default;
|
|
||||||
// scss-docs-end theme-text-dark-variables
|
|
||||||
|
|
||||||
// scss-docs-start theme-bg-subtle-dark-variables
|
|
||||||
$primary-bg-subtle-dark: shade-color($primary, 80%) !default;
|
|
||||||
$secondary-bg-subtle-dark: shade-color($secondary, 80%) !default;
|
|
||||||
$success-bg-subtle-dark: shade-color($success, 80%) !default;
|
|
||||||
$info-bg-subtle-dark: shade-color($info, 80%) !default;
|
|
||||||
$warning-bg-subtle-dark: shade-color($warning, 80%) !default;
|
|
||||||
$danger-bg-subtle-dark: shade-color($danger, 80%) !default;
|
|
||||||
$light-bg-subtle-dark: $gray-800 !default;
|
|
||||||
$dark-bg-subtle-dark: mix($gray-800, $black) !default;
|
|
||||||
// scss-docs-end theme-bg-subtle-dark-variables
|
|
||||||
|
|
||||||
// scss-docs-start theme-border-subtle-dark-variables
|
|
||||||
$primary-border-subtle-dark: shade-color($primary, 40%) !default;
|
|
||||||
$secondary-border-subtle-dark: shade-color($secondary, 40%) !default;
|
|
||||||
$success-border-subtle-dark: shade-color($success, 40%) !default;
|
|
||||||
$info-border-subtle-dark: shade-color($info, 40%) !default;
|
|
||||||
$warning-border-subtle-dark: shade-color($warning, 40%) !default;
|
|
||||||
$danger-border-subtle-dark: shade-color($danger, 40%) !default;
|
|
||||||
$light-border-subtle-dark: $gray-700 !default;
|
|
||||||
$dark-border-subtle-dark: $gray-800 !default;
|
|
||||||
// scss-docs-end theme-border-subtle-dark-variables
|
|
||||||
|
|
||||||
$body-color-dark: $gray-500 !default;
|
|
||||||
$body-bg-dark: $gray-900 !default;
|
|
||||||
$body-secondary-color-dark: rgba($body-color-dark, .75) !default;
|
|
||||||
$body-secondary-bg-dark: $gray-800 !default;
|
|
||||||
$body-tertiary-color-dark: rgba($body-color-dark, .5) !default;
|
|
||||||
$body-tertiary-bg-dark: mix($gray-800, $gray-900, 50%) !default;
|
|
||||||
$body-emphasis-color-dark: $white !default;
|
|
||||||
$border-color-dark: $gray-700 !default;
|
|
||||||
$border-color-translucent-dark: rgba($white, .15) !default;
|
|
||||||
$headings-color-dark: null !default;
|
|
||||||
$link-color-dark: tint-color($primary, 40%) !default;
|
|
||||||
$link-hover-color-dark: shift-color($link-color-dark, -$link-shade-percentage) !default;
|
|
||||||
$code-color-dark: tint-color($code-color, 40%) !default;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Forms
|
|
||||||
//
|
|
||||||
|
|
||||||
$form-select-indicator-color-dark: $body-color-dark !default;
|
|
||||||
$form-select-indicator-dark: url("data:image/svg+xml,<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>") !default;
|
|
||||||
|
|
||||||
$form-switch-color-dark: rgba($white, .25) !default;
|
|
||||||
$form-switch-bg-image-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color-dark}'/></svg>") !default;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Accordion
|
|
||||||
//
|
|
||||||
|
|
||||||
$accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$primary-text-emphasis-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>") !default;
|
|
||||||
$accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$primary-text-emphasis-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>") !default;
|
|
||||||
// scss-docs-end sass-dark-mode-vars
|
|
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 */
|
||||||
|
}
|
@@ -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
|
|
@@ -6,6 +6,7 @@ enableGitInfo = true
|
|||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
# additional settings
|
# additional settings
|
||||||
|
googleAnalytics = "G-T85PPZ36GN"
|
||||||
baseURL = "https://demo.gethinode.com/"
|
baseURL = "https://demo.gethinode.com/"
|
||||||
canonifyURLs = false
|
canonifyURLs = false
|
||||||
enableEmoji = true
|
enableEmoji = true
|
||||||
@@ -16,9 +17,9 @@ enableInlineShortcodes = true
|
|||||||
# 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"]
|
||||||
|
|
||||||
# toml-docs-start build
|
# toml-docs-start timeout
|
||||||
timeout = "60s"
|
timeout = "180s"
|
||||||
# toml-docs-end build
|
# toml-docs-end timeout
|
||||||
|
|
||||||
# toml-docs-start language
|
# toml-docs-start language
|
||||||
languageCode = "en-us"
|
languageCode = "en-us"
|
||||||
@@ -26,6 +27,25 @@ defaultContentLanguage = "en"
|
|||||||
defaultContentLanguageInSubdir = true
|
defaultContentLanguageInSubdir = true
|
||||||
# toml-docs-end language
|
# toml-docs-end language
|
||||||
|
|
||||||
|
# toml-docs-start redirect
|
||||||
|
[outputFormats.REDIR]
|
||||||
|
mediaType = "text/netlify"
|
||||||
|
baseName = "_redirects"
|
||||||
|
isPlainText = true
|
||||||
|
notAlternative = true
|
||||||
|
|
||||||
|
[mediaTypes."text/netlify"]
|
||||||
|
delimiter = ""
|
||||||
|
|
||||||
|
[outputs]
|
||||||
|
home = ["HTML", "RSS", "REDIR"]
|
||||||
|
# toml-docs-end redirect
|
||||||
|
|
||||||
|
# toml-docs-start build
|
||||||
|
[build]
|
||||||
|
writeStats = true
|
||||||
|
# toml-docs-end build
|
||||||
|
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
tag = 'tags'
|
tag = 'tags'
|
||||||
|
|
||||||
@@ -73,6 +93,9 @@ defaultContentLanguageInSubdir = true
|
|||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "static"
|
source = "static"
|
||||||
target = "static"
|
target = "static"
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "static/fonts"
|
||||||
|
target = "static/fonts"
|
||||||
# toml-docs-start javascript
|
# toml-docs-start javascript
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "node_modules/bootstrap/dist/js"
|
source = "node_modules/bootstrap/dist/js"
|
||||||
@@ -83,3 +106,6 @@ defaultContentLanguageInSubdir = true
|
|||||||
target = "assets/js/vendor/flexsearch"
|
target = "assets/js/vendor/flexsearch"
|
||||||
includeFiles = "*.bundle.js"
|
includeFiles = "*.bundle.js"
|
||||||
# toml-docs-end javascript
|
# toml-docs-end javascript
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "node_modules/@fortawesome/fontawesome-free/webfonts"
|
||||||
|
target = "static/fonts"
|
||||||
|
@@ -8,10 +8,10 @@
|
|||||||
[en.params.head]
|
[en.params.head]
|
||||||
tagline = "A Hugo Theme"
|
tagline = "A Hugo Theme"
|
||||||
[en.params.feature]
|
[en.params.feature]
|
||||||
link = "/en/about"
|
link = "about"
|
||||||
caption = "About"
|
caption = "About"
|
||||||
[en.params.footer]
|
[en.params.footer]
|
||||||
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>)."
|
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
|
# toml-docs-end lang-param
|
||||||
@@ -23,9 +23,9 @@
|
|||||||
[nl.params.head]
|
[nl.params.head]
|
||||||
tagline = "Een Hugo Thema"
|
tagline = "Een Hugo Thema"
|
||||||
[nl.params.feature]
|
[nl.params.feature]
|
||||||
link = "/nl/over-mij"
|
link = "over-mij"
|
||||||
caption = "Over mij"
|
caption = "Over mij"
|
||||||
[nl.params.footer]
|
[nl.params.footer]
|
||||||
license = "Gelicenseerd onder 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>)."
|
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"
|
socialTitle = "Volg mij"
|
||||||
socialCaption = "Ik doe aan programmeren en tweet memes"
|
socialCaption = "Ik doe aan programmeren en tweet memes"
|
@@ -1,33 +1,33 @@
|
|||||||
[[main]]
|
[[main]]
|
||||||
name = "About"
|
name = "About"
|
||||||
url = "/about/"
|
pageRef = "/about/"
|
||||||
weight = 10
|
weight = 10
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Blog"
|
name = "Blog"
|
||||||
url = "/blog/"
|
pageRef = "/blog/"
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Projects"
|
name = "Projects"
|
||||||
url = "/projects/"
|
pageRef = "/projects/"
|
||||||
weight = 30
|
weight = 30
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Sample project"
|
name = "Sample project"
|
||||||
url = "/en/projects/sample-project/"
|
pageRef = "/projects/sample-project/"
|
||||||
parent = "Projects"
|
parent = "Projects"
|
||||||
weight = 1
|
weight = 1
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Another project"
|
name = "Another project"
|
||||||
url = "/en/projects/another-project/"
|
pageRef = "/projects/another-project/"
|
||||||
parent = "Projects"
|
parent = "Projects"
|
||||||
weight = 2
|
weight = 2
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Tags"
|
name = "Tags"
|
||||||
url = "/tags/"
|
pageRef = "/tags/"
|
||||||
weight = 40
|
weight = 40
|
||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
@@ -51,23 +51,23 @@
|
|||||||
# toml-docs-start sample-navigation
|
# toml-docs-start sample-navigation
|
||||||
[[sample]]
|
[[sample]]
|
||||||
name = "Blog"
|
name = "Blog"
|
||||||
url = "/blog/"
|
pageRef = "/blog/"
|
||||||
weight = 10
|
weight = 10
|
||||||
|
|
||||||
[[sample]]
|
[[sample]]
|
||||||
name = "Projects"
|
name = "Projects"
|
||||||
url = "/projects/"
|
pageRef = "/projects/"
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
[[sample]]
|
[[sample]]
|
||||||
name = "Sample project"
|
name = "Sample project"
|
||||||
url = "/en/projects/sample-project/"
|
pageRef = "/projects/sample-project/"
|
||||||
parent = "Projects"
|
parent = "Projects"
|
||||||
weight = 1
|
weight = 1
|
||||||
|
|
||||||
[[sample]]
|
[[sample]]
|
||||||
name = "Another project"
|
name = "Another project"
|
||||||
url = "/en/projects/another-project/"
|
pageRef = "/projects/another-project/"
|
||||||
parent = "Projects"
|
parent = "Projects"
|
||||||
weight = 2
|
weight = 2
|
||||||
# toml-docs-end sample-navigation
|
# toml-docs-end sample-navigation
|
@@ -1,33 +1,33 @@
|
|||||||
[[main]]
|
[[main]]
|
||||||
name = "Over mij"
|
name = "Over mij"
|
||||||
url = "/over-mij/"
|
pageRef = "/over-mij/"
|
||||||
weight = 10
|
weight = 10
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Blog"
|
name = "Blog"
|
||||||
url = "/blog/"
|
pageRef = "/blog/"
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Projecten"
|
name = "Projecten"
|
||||||
url = "/projecten/"
|
pageRef = "/projecten/"
|
||||||
weight = 30
|
weight = 30
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Voorbeeldproject"
|
name = "Voorbeeldproject"
|
||||||
url = "/nl/projecten/voorbeeldproject/"
|
pageRef = "/projecten/voorbeeldproject/"
|
||||||
parent = "Projecten"
|
parent = "Projecten"
|
||||||
weight = 1
|
weight = 1
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Ander project"
|
name = "Ander project"
|
||||||
url = "/nl/projecten/ander-project/"
|
pageRef = "/projecten/ander-project/"
|
||||||
parent = "Projecten"
|
parent = "Projecten"
|
||||||
weight = 2
|
weight = 2
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
name = "Tags"
|
name = "Tags"
|
||||||
url = "/tags/"
|
pageRef = "/tags/"
|
||||||
weight = 40
|
weight = 40
|
||||||
|
|
||||||
[[social]]
|
[[social]]
|
||||||
@@ -47,3 +47,27 @@
|
|||||||
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"
|
||||||
|
pageRef = "/blog/"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Projecten"
|
||||||
|
pageRef = "/projecten/"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Voorbeeldproject"
|
||||||
|
pageRef = "/projecten/voorbeeldproject/"
|
||||||
|
parent = "Projecten"
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[[sample]]
|
||||||
|
name = "Ander project"
|
||||||
|
pageRef = "/projecten/ander-project/"
|
||||||
|
parent = "Projecten"
|
||||||
|
weight = 2
|
||||||
|
# toml-docs-end sample-navigation
|
@@ -3,12 +3,18 @@
|
|||||||
separator = "-"
|
separator = "-"
|
||||||
description = "Hinode is a clean documentation and 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."
|
||||||
enableDarkMode = true
|
enableDarkMode = true
|
||||||
|
modes = ["light", "dark"]
|
||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
# toml-docs-start docs
|
# toml-docs-start docs
|
||||||
[docs]
|
[docs]
|
||||||
|
latest = "1.0"
|
||||||
version = "0.8"
|
version = "0.8"
|
||||||
basePath = ""
|
basePath = ""
|
||||||
|
github = "https://github.com/gethinode/hinode"
|
||||||
|
release = "https://github.com/gethinode/hinode/releases/tag/"
|
||||||
|
checkVersion = true
|
||||||
|
latestURL = "https://demo.gethinode.com/"
|
||||||
# toml-docs-end docs
|
# toml-docs-end docs
|
||||||
|
|
||||||
# toml-docs-start home
|
# toml-docs-start home
|
||||||
@@ -16,48 +22,99 @@
|
|||||||
sections = ["blog", "projects"]
|
sections = ["blog", "projects"]
|
||||||
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
||||||
fullCover = false
|
fullCover = false
|
||||||
|
centerHeadline = false
|
||||||
style = ""
|
style = ""
|
||||||
# toml-docs-end home
|
# toml-docs-end home
|
||||||
|
|
||||||
# toml-docs-start navigation
|
# toml-docs-start navigation
|
||||||
[navigation]
|
[navigation]
|
||||||
|
anchor = true
|
||||||
logo = "/img/logo_icon.svg"
|
logo = "/img/logo_icon.svg"
|
||||||
color = "body"
|
color = "body"
|
||||||
fixed = true
|
fixed = true
|
||||||
offset = "4em"
|
offset = "3.8em"
|
||||||
search = true
|
search = true
|
||||||
breadcrumb = false
|
breadcrumb = false
|
||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
# toml-docs-end navigation
|
# toml-docs-end navigation
|
||||||
|
|
||||||
# toml-docs-start list
|
# toml-docs-start messages
|
||||||
[list]
|
[messages]
|
||||||
[blog]
|
placement = "bottom-right"
|
||||||
|
# toml-docs-end messages
|
||||||
|
|
||||||
|
# toml-docs-start sharing
|
||||||
|
[sharing]
|
||||||
|
enabled = true
|
||||||
|
sort = "weight"
|
||||||
|
reverse = false
|
||||||
|
|
||||||
|
[[sharing.providers]]
|
||||||
|
name = "LinkedIn"
|
||||||
|
url = "https://www.linkedin.com/sharing/share-offsite/?url={url}"
|
||||||
|
icon = "fab linkedin"
|
||||||
|
weight = 10
|
||||||
|
|
||||||
|
[[sharing.providers]]
|
||||||
|
name = "Twitter"
|
||||||
|
url = "https://twitter.com/home?status={url}"
|
||||||
|
icon = "fab twitter"
|
||||||
|
weight = 20
|
||||||
|
|
||||||
|
[[sharing.providers]]
|
||||||
|
name = "Facebook"
|
||||||
|
url = "https://www.facebook.com/sharer.php?u={url}"
|
||||||
|
icon = "fab facebook"
|
||||||
|
weight = 30
|
||||||
|
|
||||||
|
[[sharing.providers]]
|
||||||
|
name = "WhatsApp"
|
||||||
|
url = "whatsapp://send?text={title}%20{url}"
|
||||||
|
icon = "fab whatsapp"
|
||||||
|
weight = 40
|
||||||
|
|
||||||
|
[[sharing.providers]]
|
||||||
|
name = "email"
|
||||||
|
url = "{url}"
|
||||||
|
icon = "fas link"
|
||||||
|
weight = 50
|
||||||
|
clipboard = true
|
||||||
|
# toml-docs-end sharing
|
||||||
|
|
||||||
|
# toml-docs-start sections
|
||||||
|
[sections]
|
||||||
|
[sections.blog]
|
||||||
title = "Blog"
|
title = "Blog"
|
||||||
sort = "date"
|
sort = "date"
|
||||||
reverse = false
|
reverse = true
|
||||||
|
nested = true
|
||||||
cols = 3
|
cols = 3
|
||||||
color = ""
|
color = ""
|
||||||
padding = "0"
|
padding = "0"
|
||||||
header = "full"
|
header = "full"
|
||||||
footer = "none"
|
footer = "none"
|
||||||
orientation = "stacked"
|
orientation = "stacked"
|
||||||
style = "border-0"
|
style = "border-0 card-zoom"
|
||||||
homepage = 3
|
homepage = 3
|
||||||
[projects]
|
separator = true
|
||||||
|
[sections.projects]
|
||||||
title = "Projects"
|
title = "Projects"
|
||||||
|
layout = "card"
|
||||||
sort = "title"
|
sort = "title"
|
||||||
reverse = false
|
reverse = false
|
||||||
|
nested = true
|
||||||
cols = 1
|
cols = 1
|
||||||
color = ""
|
background = "body-tertiary"
|
||||||
|
color = "body"
|
||||||
padding = "3"
|
padding = "3"
|
||||||
header = "none"
|
header = "none"
|
||||||
footer = "tags"
|
footer = "tags"
|
||||||
orientation = "none"
|
orientation = "horizontal"
|
||||||
style = "border-1 card-emphasize"
|
style = "border-1 card-emphasize"
|
||||||
homepage = 3
|
homepage = 3
|
||||||
# toml-docs-end list
|
separator = false
|
||||||
|
# toml-docs-end sections
|
||||||
|
|
||||||
[favicon]
|
[favicon]
|
||||||
logo = "img/favicon.png"
|
logo = "img/favicon.png"
|
||||||
@@ -65,7 +122,7 @@
|
|||||||
|
|
||||||
# toml-docs-start theme-colors
|
# toml-docs-start theme-colors
|
||||||
[style]
|
[style]
|
||||||
primary = "#D43900"
|
primary = "#d43900"
|
||||||
secondary = "#6c757d"
|
secondary = "#6c757d"
|
||||||
success = "#198754"
|
success = "#198754"
|
||||||
info = "#0dcaf0"
|
info = "#0dcaf0"
|
||||||
@@ -77,8 +134,12 @@
|
|||||||
themeOpacity = "10"
|
themeOpacity = "10"
|
||||||
# toml-docs-start font
|
# toml-docs-start font
|
||||||
themeFont = "Inter"
|
themeFont = "Inter"
|
||||||
themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap"
|
# 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-end font
|
||||||
|
# toml-docs-start build
|
||||||
|
purge = false
|
||||||
|
# toml-docs-end build
|
||||||
|
|
||||||
[schema]
|
[schema]
|
||||||
type = "Organization"
|
type = "Organization"
|
||||||
|
@@ -8,14 +8,15 @@ for = '/**'
|
|||||||
Content-Security-Policy = """\
|
Content-Security-Policy = """\
|
||||||
default-src 'self'; \
|
default-src 'self'; \
|
||||||
script-src 'self' \
|
script-src 'self' \
|
||||||
https://utteranc.es/client.js; \
|
https://utteranc.es/client.js https://*.google-analytics.com https://*.googletagmanager.com; \
|
||||||
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
style-src 'self' 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'; \
|
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' 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' \
|
||||||
"""
|
"""
|
||||||
|
@@ -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'
|
||||||
|
})
|
||||||
module.exports = {
|
const whitelister = require('purgecss-whitelister')
|
||||||
plugins: [
|
const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||||
autoprefixer(),
|
content: ['./hugo_stats.json'],
|
||||||
purgecss({
|
defaultExtractor: (content) => {
|
||||||
content: [
|
const els = JSON.parse(content).htmlElements
|
||||||
'./layouts/**/*.html',
|
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||||
'./content/**/*.md',
|
},
|
||||||
],
|
dynamicAttributes: ['data-bs-theme'],
|
||||||
safelist: [
|
safelist: [
|
||||||
/lazyloaded/,
|
|
||||||
/table/,
|
|
||||||
/thead/,
|
|
||||||
/tbody/,
|
|
||||||
/tr/,
|
|
||||||
/th/,
|
|
||||||
/td/,
|
|
||||||
/h5/,
|
|
||||||
/alert-link/,
|
|
||||||
/container-xxl/,
|
|
||||||
/container-fluid/,
|
|
||||||
/^bg-opacity-\d+/,
|
|
||||||
/svg.*/,
|
|
||||||
/fa.*/,
|
|
||||||
/ratio.*/,
|
|
||||||
/suggestion.*/,
|
|
||||||
...whitelister([
|
...whitelister([
|
||||||
'./assets/scss/components/_blockquote.scss',
|
|
||||||
'./assets/scss/components/_buttons.scss',
|
|
||||||
'./assets/scss/components/_card.scss',
|
|
||||||
'./assets/scss/components/_clipboard.scss',
|
'./assets/scss/components/_clipboard.scss',
|
||||||
'./assets/scss/components/_img.scss',
|
'./assets/scss/components/_command.scss',
|
||||||
'./assets/scss/components/_navbar.scss',
|
'./assets/scss/components/_navbar.scss',
|
||||||
'./assets/scss/components/_search.scss',
|
'./assets/scss/components/_search.scss',
|
||||||
'./assets/scss/components/_syntax.scss',
|
'./assets/scss/components/_syntax.scss',
|
||||||
'./assets/scss/layouts/_reboot.scss',
|
'./assets/scss/components/_syntax-dark.scss',
|
||||||
'./assets/scss/layouts/type.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/_dropdown.scss',
|
||||||
'./node_modules/bootstrap/scss/_utilities.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 = {
|
||||||
|
plugins: [
|
||||||
|
autoprefixer,
|
||||||
|
cssnano,
|
||||||
|
purgecss
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,7 @@ showComments: false
|
|||||||
|
|
||||||
Additional features include:
|
Additional features include:
|
||||||
|
|
||||||
|
* Switching between light mode and dark mode
|
||||||
* Support for multiple languages
|
* Support for multiple languages
|
||||||
* Reusable Bootstrap components through configurable shortcodes and partials
|
* Reusable Bootstrap components through configurable shortcodes and partials
|
||||||
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Blog
|
title: Blog
|
||||||
|
nested: true
|
||||||
---
|
---
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
author: Mark Dumay
|
author: Mark Dumay
|
||||||
title: Extra shortcodes
|
title: Bootstrap elements
|
||||||
date: 2023-02-12
|
date: 2023-05-20
|
||||||
description: Use shortcodes to add common Bootstrap elements with ease.
|
description: Use shortcodes to add common Bootstrap elements with ease.
|
||||||
tags: ["code"]
|
tags: ["bootstrap", "shortcode"]
|
||||||
thumbnail: img/paper.jpg
|
thumbnail: img/boots.jpg
|
||||||
photoCredits: <a href="https://www.pexels.com/@picjumbo-com-55570/">picjumbo.com</a>
|
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
|
||||||
photoSource: <a href="https://www.pexels.com/photo/blue-pen-beside-black-smartphone-on-white-paper-196646/">Pexels</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.
|
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||||
@@ -23,7 +23,7 @@ As an example, the following shortcode displays an accordion with three elements
|
|||||||
<code>show</code> to the <code>class</code> argument.
|
<code>show</code> to the <code>class</code> argument.
|
||||||
{{</* /accordion-item */>}}
|
{{</* /accordion-item */>}}
|
||||||
{{</* accordion-item header="Accordion Item #2" */>}}
|
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||||
This is the second item's accordion body. It too supports HTML content.
|
This is the second item's accordion body. It supports HTML content too.
|
||||||
{{</* /accordion-item */>}}
|
{{</* /accordion-item */>}}
|
||||||
{{</* accordion-item header="Accordion Item #3" */>}}
|
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||||
This is the third item's accordion body.
|
This is the third item's accordion body.
|
||||||
@@ -46,7 +46,7 @@ As an example, the following shortcode displays a simple alert.
|
|||||||
|
|
||||||
## Badge
|
## Badge
|
||||||
|
|
||||||
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options. The following example displays a badge for a heading of size four.
|
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options.
|
||||||
|
|
||||||
{{< example >}}
|
{{< example >}}
|
||||||
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
|
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
|
||||||
@@ -59,7 +59,7 @@ Use HTML code to display a badge for a heading. See the Bootstrap [documentation
|
|||||||
|
|
||||||
## Breadcrumb
|
## Breadcrumb
|
||||||
|
|
||||||
As an example, the following shortcode displays a breadcrumb for the current page.
|
As an example, the following shortcode displays a breadcrumb for the blog page.
|
||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
@@ -73,7 +73,7 @@ As an example, the following shortcode displays a tooltip for a dark button with
|
|||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* button color="secondary" tooltip="Click on the inbox to view your unread messages" href="#" badge="99+" */>}}
|
{{</* button color="secondary" tooltip="Click on the inbox to view your unread messages" href="#!" badge="99+" */>}}
|
||||||
Inbox
|
Inbox
|
||||||
{{</* /button */>}}
|
{{</* /button */>}}
|
||||||
{{< /example>}}
|
{{< /example>}}
|
||||||
@@ -86,20 +86,20 @@ As an example, the following shortcode displays a group of three buttons.
|
|||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* button-group aria-label="Basic example" */>}}
|
{{</* button-group aria-label="Basic example" */>}}
|
||||||
{{</* button color="primary" href="#" */>}}Left{{</* /button */>}}
|
{{</* button color="primary" href="#!" */>}}Left{{</* /button */>}}
|
||||||
{{</* button color="primary" href="#" */>}}Middle{{</* /button */>}}
|
{{</* button color="primary" href="#!" */>}}Middle{{</* /button */>}}
|
||||||
{{</* button color="primary" href="#" */>}}Right{{</* /button */>}}
|
{{</* button color="primary" href="#!" */>}}Right{{</* /button */>}}
|
||||||
{{</* /button-group */>}}
|
{{</* /button-group */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
## Card
|
## Card
|
||||||
|
|
||||||
As an example, the following shortcode displays a stacked card with icon that links to the [about]({{< ref "about" >}}) page. It includes a custom header and footer.
|
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 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* card path="about" padding="3" class="w-50" color="light" header="publication" footer="none" */>}}
|
{{</* card path="about" padding="3" class="w-50" color="body-tertiary" header="publication" footer="none" */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ echo "goodbye"
|
|||||||
|
|
||||||
## Docs
|
## Docs
|
||||||
|
|
||||||
Use the `docs` shortcode to display the content of a `toml` or `scss` file:
|
Use the `docs` shortcode to display the content of a `js`, `scss` or `toml` file:
|
||||||
|
|
||||||
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||||
|
|
||||||
@@ -192,13 +192,44 @@ As an example, the following shortcode displays an image with rounded corners an
|
|||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- 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
|
## Navbar
|
||||||
|
|
||||||
As an example, the following shortcode displays a light navigation header.
|
As an example, the following shortcode displays a light navigation header.
|
||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* navbar path="about" color="primary" size="sm" search="false" menus="sample" title="Brand" */>}}
|
{{</* navbar path="about" color="primary" size="md" search="false" menus="sample" title="Brand" mode="false" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Release
|
||||||
|
|
||||||
|
As an example, the following shortcode displays a default release button.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* release version="v0.14.1" */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
@@ -220,12 +251,20 @@ As an example, the following shortcode displays a button that, when clicked, tri
|
|||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* button id="toastButton" */>}}
|
{{</* button toast="toast-example-1" */>}}
|
||||||
Show toast
|
Show toast 1
|
||||||
{{</* /button */>}}
|
{{</* /button */>}}
|
||||||
|
|
||||||
{{</* toast header="Custom title" */>}}
|
{{</* button toast="toast-example-2" */>}}
|
||||||
This is a toast message.
|
Show toast 2
|
||||||
|
{{</* /button */>}}
|
||||||
|
|
||||||
|
{{</* toast id="toast-example-1" header="First title" */>}}
|
||||||
|
This is the first toast message.
|
||||||
|
{{</* /toast */>}}
|
||||||
|
|
||||||
|
{{</* toast id="toast-example-2" header="Second title" */>}}
|
||||||
|
This is the second toast message.
|
||||||
{{</* /toast */>}}
|
{{</* /toast */>}}
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
||||||
@@ -236,8 +275,6 @@ As an example, the following shortcode displays a tooltip for a colored hyperlin
|
|||||||
|
|
||||||
<!-- markdownlint-disable MD037 -->
|
<!-- markdownlint-disable MD037 -->
|
||||||
{{< example lang="hugo" >}}
|
{{< example lang="hugo" >}}
|
||||||
{{</* tooltip color="primary" title="Tooltip" href="#" */>}}
|
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
|
||||||
Tooltip demonstration
|
|
||||||
{{</* /tooltip */>}}
|
|
||||||
{{< /example >}}
|
{{< /example >}}
|
||||||
<!-- markdownlint-enable MD037 -->
|
<!-- markdownlint-enable MD037 -->
|
@@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Mark Dumay"
|
|
||||||
title: "Code Highlighting"
|
|
||||||
date: 2022-04-16
|
|
||||||
description: "Examples on how to enable code highlighting."
|
|
||||||
tags: ["code"]
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
|
|
||||||
## Code Fencing
|
|
||||||
|
|
||||||
Use code fencing to highlight the syntax of a specific language.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"version": "0.2.0",
|
|
||||||
"themes": [],
|
|
||||||
"projects": [],
|
|
||||||
"configuration": {}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```html
|
|
||||||
<div class="highlight">
|
|
||||||
<pre>
|
|
||||||
<code>some code...</code>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Highlight Shortcode
|
|
||||||
|
|
||||||
Use the `highlight` shortcode to customize the layout of a specific code block.
|
|
||||||
|
|
||||||
{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
|
|
||||||
// GetTitleFunc returns a func that can be used to transform a string to
|
|
||||||
// title case.
|
|
||||||
//
|
|
||||||
// The supported styles are
|
|
||||||
//
|
|
||||||
// - "Go" (strings.Title)
|
|
||||||
// - "AP" (see https://www.apstylebook.com/)
|
|
||||||
// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
|
|
||||||
//
|
|
||||||
// If an unknown or empty style is provided, AP style is what you get.
|
|
||||||
func GetTitleFunc(style string) func(s string) string {
|
|
||||||
switch strings.ToLower(style) {
|
|
||||||
case "go":
|
|
||||||
return strings.Title
|
|
||||||
case "chicago":
|
|
||||||
return transform.NewTitleConverter(transform.ChicagoStyle)
|
|
||||||
default:
|
|
||||||
return transform.NewTitleConverter(transform.APStyle)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{{< / highlight >}}
|
|
@@ -1,24 +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
|
|
||||||
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
|
||||||
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
|
||||||
photoSource: <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,165 +0,0 @@
|
|||||||
---
|
|
||||||
author: Hugo Authors
|
|
||||||
title: Markdown Syntax Guide
|
|
||||||
description: Use Markdown syntax and basic HTML elements to style your Hugo content files.
|
|
||||||
tags: ["markdown", "css", "html"]
|
|
||||||
date: 2022-01-14
|
|
||||||
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
|
||||||
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
|
|
||||||
photoSource: <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,34 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
title: "Rich Content"
|
|
||||||
date: 2021-07-13
|
|
||||||
description: "A brief description of Hugo Shortcodes."
|
|
||||||
tags: ["shortcode", "privacy"]
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
|
|
||||||
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" >}}
|
|
16
content/en/blog/second-post.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Second post
|
||||||
|
date: 2022-11-01
|
||||||
|
description: This is my second blog post.
|
||||||
|
tags: ["blog"]
|
||||||
|
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
||||||
|
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
|
||||||
|
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non sollicitudin sapien. Ut porttitor lectus eu tempor ultricies. Sed semper tincidunt nibh pellentesque condimentum. Vivamus dictum sem eu rhoncus semper. Vestibulum convallis congue tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris magna urna, egestas sit amet ligula quis, viverra semper arcu. Praesent laoreet nunc vitae nulla posuere facilisis.
|
||||||
|
|
||||||
|
Nunc eget dignissim ex, sed lobortis leo. Suspendisse mollis posuere tellus, in viverra nunc ullamcorper vitae. Nam vel tempor arcu, in imperdiet odio. Fusce malesuada vehicula odio, in iaculis nulla congue eget. Quisque id odio id nisl facilisis posuere porta sit amet mauris. Curabitur lorem leo, tempus id rhoncus eget, placerat vitae lectus. Morbi eu aliquet enim. Nulla malesuada laoreet sodales.
|
||||||
|
|
||||||
|
Nunc volutpat dui in elit euismod, sed egestas purus tristique. Nam in condimentum mauris. Praesent nec suscipit enim. Aliquam dolor ipsum, faucibus vitae purus ac, congue egestas nisi. Donec hendrerit erat eu arcu porttitor rhoncus. Nunc a odio bibendum metus semper pellentesque. Sed at sapien ut est semper eleifend. Aliquam lorem libero, porttitor nec tristique ut, auctor vitae ipsum. Suspendisse pretium pharetra rutrum. Nulla tincidunt tempus enim eu sagittis. Maecenas pulvinar metus a urna mattis dictum sed id tellus.
|
16
content/en/blog/third-post.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Third post
|
||||||
|
date: 2022-12-01
|
||||||
|
description: This is my third blog post.
|
||||||
|
tags: ["blog"]
|
||||||
|
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
||||||
|
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
||||||
|
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id scelerisque ligula. Vestibulum eu lorem tortor. Suspendisse tristique ultrices mauris, non maximus lorem faucibus in. Suspendisse sagittis eleifend dapibus. Curabitur dignissim luctus sapien eu consequat. Proin congue dui vel ipsum bibendum varius. Pellentesque cursus nisi metus, egestas eleifend ipsum sollicitudin vitae. Sed vitae erat elementum, semper turpis sed, molestie nulla.
|
||||||
|
|
||||||
|
Nulla molestie ultrices vehicula. Etiam iaculis, erat a blandit blandit, nulla tellus dapibus ligula, vitae venenatis turpis diam non felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae arcu in justo iaculis egestas. In imperdiet arcu vitae pharetra commodo. Quisque ut erat eget nisl semper laoreet vitae eget ligula. Mauris bibendum purus nec vulputate faucibus. In luctus sagittis ante, quis laoreet orci bibendum vitae. Nam at odio accumsan, tincidunt eros at, lacinia metus. In et ultricies sapien, a mollis est. Nunc convallis orci eu tristique euismod. Proin vel ullamcorper diam. Quisque et semper orci. Proin pharetra lorem justo, id malesuada erat feugiat sit amet. Praesent bibendum mi at lorem volutpat suscipit. Morbi sed libero elit.
|
||||||
|
|
||||||
|
Nunc sodales est eu ipsum volutpat, in mollis dui facilisis. Nulla faucibus interdum lectus, a condimentum elit vulputate eu. Nunc ipsum risus, suscipit sit amet nulla ac, pulvinar maximus nulla. In venenatis diam erat, non elementum ante dignissim posuere. Aliquam sem justo, luctus at vestibulum ut, egestas ut quam. Quisque a dolor viverra, aliquam nunc vel, lacinia nulla. In id magna magna. Morbi dapibus pretium sollicitudin. Morbi volutpat augue at felis tristique, quis euismod tellus vulputate. Morbi dui lacus, aliquam eget quam vel, vestibulum faucibus enim. Proin porta pretium metus id venenatis. Aliquam nec tempor lorem. Vivamus euismod est varius sagittis placerat. Maecenas tincidunt elementum libero, at imperdiet elit feugiat vel.
|
@@ -4,9 +4,7 @@ title: Another project
|
|||||||
date: 2021-07-15
|
date: 2021-07-15
|
||||||
description: Another project.
|
description: Another project.
|
||||||
tags: ["javascript", "golang"]
|
tags: ["javascript", "golang"]
|
||||||
thumbnail: img/coffee.jpg # https://picsum.photos/id/1060/5598/3732
|
icon: fas rocket
|
||||||
photoCredits: <a href="https://unsplash.com/@kfred">Karl Fredrickson</a>
|
|
||||||
photoSource: <a href="https://unsplash.com/photos/TYIzeCiZ_60">Unsplash</a>
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Vivamus iaculis metus sed magna porta tincidunt. Aliquam molestie eget orci eu elementum. Integer pellentesque dolor sit amet suscipit maximus. Duis consequat, massa vitae volutpat rhoncus, erat augue venenatis velit, a auctor leo nulla nec turpis. Nunc ut libero sapien. Vivamus aliquam ultrices vestibulum. Sed sit amet vestibulum dolor, ut vehicula diam. Sed felis purus, feugiat vitae vulputate quis, sodales vitae dui. Pellentesque volutpat fringilla sapien varius condimentum. Integer odio massa, pharetra at bibendum vitae, aliquam nec erat.
|
Vivamus iaculis metus sed magna porta tincidunt. Aliquam molestie eget orci eu elementum. Integer pellentesque dolor sit amet suscipit maximus. Duis consequat, massa vitae volutpat rhoncus, erat augue venenatis velit, a auctor leo nulla nec turpis. Nunc ut libero sapien. Vivamus aliquam ultrices vestibulum. Sed sit amet vestibulum dolor, ut vehicula diam. Sed felis purus, feugiat vitae vulputate quis, sodales vitae dui. Pellentesque volutpat fringilla sapien varius condimentum. Integer odio massa, pharetra at bibendum vitae, aliquam nec erat.
|
||||||
|
@@ -4,9 +4,7 @@ title: Sample project
|
|||||||
date: 2021-07-15
|
date: 2021-07-15
|
||||||
description: A sample project.
|
description: A sample project.
|
||||||
tags: ["html", "css"]
|
tags: ["html", "css"]
|
||||||
thumbnail: img/laptop.jpg # https://picsum.photos/id/0/5616/3744
|
icon: fab docker
|
||||||
photoCredits: <a href="https://unsplash.com/@alejandroescamilla">Alejandro Escamilla</a>
|
|
||||||
photoSource: <a href="https://unsplash.com/photos/yC-Yzbqy7PY">Unsplash</a>
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||||
|
@@ -1,14 +1,12 @@
|
|||||||
---
|
---
|
||||||
slug: "over-mij"
|
slug: over-mij
|
||||||
title: "Over mij"
|
title: Over mij
|
||||||
description: "Een blog thema voor Hugo gebaseerd op Bootstrap 5."
|
description: Een blog en documentatie thema voor Hugo gebaseerd op Bootstrap 5.
|
||||||
date: "2022-04-11"
|
date: 2023-02-17
|
||||||
showComments: false
|
showComments: false
|
||||||
---
|
---
|
||||||
|
|
||||||
<p class="text-center"><img src="/img/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 een blog thema voor Hugo, een open-source statische website generator.</center>
|
|
||||||
|
|
||||||
<section class="section section-sm mt-5">
|
<section class="section section-sm mt-5">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
@@ -35,13 +33,15 @@ showComments: false
|
|||||||
|
|
||||||
Overige functies:
|
Overige functies:
|
||||||
|
|
||||||
* Reacties
|
* Omschakelen tussen donkere en lichte modus
|
||||||
* Sociale links
|
* Ondersteuning voor meerdere talen
|
||||||
* Paginering
|
* Herbruikbare Bootstrap componenten via shortcodes en partials
|
||||||
* Scrollspy
|
* Integreren van commentaar via [utteranc.es]({{< param "links.utterances" >}})
|
||||||
* Code markeren
|
* Secundaire navigatie voor bijvoorbeeld documentatie
|
||||||
* Kleuren aanpassen
|
* Optimalisering van foto's voor meerdere schermafmetingen en resoluties
|
||||||
* Internationalisering
|
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||||
|
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||||
|
{.tickmark}
|
||||||
|
|
||||||
Hinode is geinspireerd door de volgende thema's:
|
Hinode is geinspireerd door de volgende thema's:
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
author: Katheryn Fox
|
author: Mark Dumay
|
||||||
title: Blog
|
title: Blog
|
||||||
---
|
---
|
||||||
|
281
content/nl/blog/bootstrap-elements.md
Normal file
@@ -0,0 +1,281 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Bootstrap elementen
|
||||||
|
slug: bootstrap-elementen
|
||||||
|
date: 2023-02-17
|
||||||
|
description: Gebruik shortcodes om eenvoudig Bootstrap elementen toe te voegen.
|
||||||
|
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 beschikt over meerdere shortcodes om eenvoudig Bootstrap elementen toe te voegen aan je website. De [officiële documentatie]({{< param "links.hinode_docs" >}}) bevat meer details.
|
||||||
|
|
||||||
|
## Accordion
|
||||||
|
|
||||||
|
De volgende shortcode toont een accordion met drie elementen, waarvan de eerste is uitgeklapt.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* accordion */>}}
|
||||||
|
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
|
||||||
|
Dit is de inhoud van het eerste element met ondersteuning voor HTML. De waarde <code>show</code>
|
||||||
|
voor het argument <code>class</code> geeft aan dat het element uitgeklapt moet worden.
|
||||||
|
{{</* /accordion-item */>}}
|
||||||
|
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||||
|
Dit is de inhoud van het tweede element. Het ondersteunt ook HTML.
|
||||||
|
{{</* /accordion-item */>}}
|
||||||
|
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||||
|
Dit is de inhoud van het derde element.
|
||||||
|
{{</* /accordion-item */>}}
|
||||||
|
{{</* /accordion */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Alert
|
||||||
|
|
||||||
|
De volgende shortcode toont een waarschuwing.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* alert color="danger" dismissible="true" */>}}
|
||||||
|
Een eenvoudige waarschuwing
|
||||||
|
{{</* /alert */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Badge
|
||||||
|
|
||||||
|
Gebruik HTML code om een label toe te voegen aan een titel. De Bootstrap [documentatie]({{< param "links.bs_badge_heading" >}}) beschrijft meer opties.
|
||||||
|
|
||||||
|
{{< example >}}
|
||||||
|
<h1>Voorbeeldtekst met grootte één <span class="badge bg-secondary">Nieuw</span></h1>
|
||||||
|
<h2>Voorbeeldtekst met grootte twee <span class="badge bg-secondary">Nieuw</span></h2>
|
||||||
|
<h3>Voorbeeldtekst met grootte drie <span class="badge bg-secondary">Nieuw</span></h3>
|
||||||
|
<h4>Voorbeeldtekst met grootte vier <span class="badge bg-secondary">Nieuw</span></h4>
|
||||||
|
<h5>Voorbeeldtekst met grootte vijf <span class="badge bg-secondary">Nieuw</span></h5>
|
||||||
|
<h6>Voorbeeldtekst met grootte zes <span class="badge bg-secondary">Nieuw</span></h6>
|
||||||
|
{{< /example >}}
|
||||||
|
|
||||||
|
## Breadcrumb
|
||||||
|
|
||||||
|
De volgende shortcode toont het navigatiepad voor de blog pagina.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* breadcrumb path="blog" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Button
|
||||||
|
|
||||||
|
De volgende shortcode toont een knop met een label en een aanwijzing.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button color="secondary" tooltip="Toon je ongelezen berichten" href="#!" badge="99+" */>}}
|
||||||
|
Inbox
|
||||||
|
{{</* /button */>}}
|
||||||
|
{{< /example>}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Button group
|
||||||
|
|
||||||
|
De volgende shortcode toont een groep van drie knoppen.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button-group aria-label="Basic example" */>}}
|
||||||
|
{{</* button color="primary" href="#!" */>}}Links{{</* /button */>}}
|
||||||
|
{{</* button color="primary" href="#!" */>}}Midden{{</* /button */>}}
|
||||||
|
{{</* button color="primary" href="#!" */>}}Rechts{{</* /button */>}}
|
||||||
|
{{</* /button-group */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Card
|
||||||
|
|
||||||
|
De volgende shortcode toont een kaart dat linkt naar de [over mij]({{< ref "about" >}}) pagina. De kaart bevat een titel.
|
||||||
|
|
||||||
|
<!-- 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
|
||||||
|
|
||||||
|
De volgende shortcode toont een carousel met drie pagina's, in een verhouding van 16x9 voor een breedte van 67% op grotere schermen.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||||
|
{{</* img src="img/coffee.jpg" caption="pagina 1" */>}}
|
||||||
|
{{</* img src="img/phone.jpg" caption="pagina 2" */>}}
|
||||||
|
{{</* img src="img/dunes.jpg" caption="pagina 3" */>}}
|
||||||
|
{{</* /carousel */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Collapse
|
||||||
|
|
||||||
|
De volgende shortcode toont een knop die een informatiepaneel toont of verbergt.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button collapse="collapse-1" */>}}
|
||||||
|
Trigger panel
|
||||||
|
{{</* /button */>}}
|
||||||
|
|
||||||
|
{{</* collapse id="collapse-1" class="p-3 border rounded" */>}}
|
||||||
|
Dit is een voorbeeldtekst. Het informatiepaneel is <i>standaard verborgen </i> maar wordt getoond als
|
||||||
|
de gebruiker op de bijbehorende knop drukt.
|
||||||
|
{{</* /collapse */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Command prompt
|
||||||
|
|
||||||
|
De volgende shortcode toont een prompt voor bash.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* command */>}}
|
||||||
|
export MY_VAR=123
|
||||||
|
{{</* /command */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
Voeg `user` en `host` om de gebruikerscontext op te geven. Als aanvulling, `(out)` definieert een outputregel en `\` is een markering die aangeeft dat de regel doorgaat op de volgende regel.
|
||||||
|
|
||||||
|
<!-- 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
|
||||||
|
|
||||||
|
Gebruik de volgende shortcode om de inhoud van een `toml` of `scss` bestand te tonen.
|
||||||
|
|
||||||
|
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||||
|
|
||||||
|
## Icon
|
||||||
|
|
||||||
|
De volgende shortcodes tonen drie verschillende iconen:
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* fa square-check */>}}
|
||||||
|
{{</* fab linkedin */>}}
|
||||||
|
{{</* fas circle-check */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Image
|
||||||
|
|
||||||
|
De volgende shortcode toont een plaatje met afgeronde hoeken en een 21x9 verhouding.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Onderschrift" class="rounded" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Nav
|
||||||
|
|
||||||
|
De volgende shortcode toont een groep met verticale tabbladen.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* nav type="pills" vertical="true" */>}}
|
||||||
|
{{</* nav-item header="Nav Item #1" show="true" */>}}
|
||||||
|
Dit is de inhoud van het eerste element met ondersteuning voor HTML. De waarde <code>show</code>
|
||||||
|
voor het argument <code>class</code> geeft aan dat het element uitgeklapt moet worden.
|
||||||
|
{{</* /nav-item */>}}
|
||||||
|
{{</* nav-item header="Nav Item #2" */>}}
|
||||||
|
Dit is de inhoud van het tweede element. Het ondersteunt ook HTML.
|
||||||
|
{{</* /nav-item */>}}
|
||||||
|
{{</* nav-item header="Nav Item #3" */>}}
|
||||||
|
Dit is de inhoud van het derde element.
|
||||||
|
{{</* /nav-item */>}}
|
||||||
|
{{</* /nav */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Navbar
|
||||||
|
|
||||||
|
De volgende shortcode toont een navigatiemenu.
|
||||||
|
|
||||||
|
<!-- 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 -->
|
||||||
|
|
||||||
|
## Release
|
||||||
|
|
||||||
|
De volgende shortcode toont een knop voor een nieuwe release.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* release version="v0.14.1" */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Spinner
|
||||||
|
|
||||||
|
De volgende shortcode toont een ronddraaiende cirkel.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* spinner color="info" class="text-center" */>}}
|
||||||
|
Loading...
|
||||||
|
{{</* /spinner */>}}
|
||||||
|
{{< /example>}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Toast
|
||||||
|
|
||||||
|
De volgende shortcode toont een knop die een bericht laat verschijnen op het scherm.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* button toast="toast-example-1" */>}}
|
||||||
|
Toon bericht 1
|
||||||
|
{{</* /button */>}}
|
||||||
|
|
||||||
|
{{</* button toast="toast-example-2" */>}}
|
||||||
|
Toon bericht 2
|
||||||
|
{{</* /button */>}}
|
||||||
|
|
||||||
|
{{</* toast id="toast-example-1" header="Eerste titel" */>}}
|
||||||
|
Dit is het eerste bericht.
|
||||||
|
{{</* /toast */>}}
|
||||||
|
|
||||||
|
{{</* toast id="toast-example-2" header="Tweede titel" */>}}
|
||||||
|
Dit is het tweede bericht.
|
||||||
|
{{</* /toast */>}}
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
||||||
|
|
||||||
|
## Tooltip
|
||||||
|
|
||||||
|
De volgende shortcode toont een uitleg voor een gekleurde link.
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD037 -->
|
||||||
|
{{< example lang="hugo" >}}
|
||||||
|
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstratie
|
||||||
|
{{< /example >}}
|
||||||
|
<!-- markdownlint-enable MD037 -->
|
@@ -1,60 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Mark Dumay"
|
|
||||||
slug: "code-markeren"
|
|
||||||
title: "Code markeren"
|
|
||||||
date: 2022-04-16
|
|
||||||
description: "Voorbeelden om de syntax van een taal te markeren."
|
|
||||||
tags: ["code"]
|
|
||||||
thumbnail: img/notepad.jpg
|
|
||||||
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
|
||||||
# credits: Photo by <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a> on <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
|
||||||
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
|
||||||
---
|
|
||||||
|
|
||||||
## Code Fencing
|
|
||||||
|
|
||||||
Gebruik code fencing om de syntax voor een specifieke taal te markeren.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"version": "0.2.0",
|
|
||||||
"themes": [],
|
|
||||||
"projects": [],
|
|
||||||
"configuration": {}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```html
|
|
||||||
<div class="highlight">
|
|
||||||
<pre>
|
|
||||||
<code>some code...</code>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Highlight Shortcode
|
|
||||||
|
|
||||||
Gebruik de `highlight` shortcode om de lay-out van een taalfragment aan te passen.
|
|
||||||
|
|
||||||
{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
|
|
||||||
// GetTitleFunc returns a func that can be used to transform a string to
|
|
||||||
// title case.
|
|
||||||
//
|
|
||||||
// The supported styles are
|
|
||||||
//
|
|
||||||
// - "Go" (strings.Title)
|
|
||||||
// - "AP" (see https://www.apstylebook.com/)
|
|
||||||
// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
|
|
||||||
//
|
|
||||||
// If an unknown or empty style is provided, AP style is what you get.
|
|
||||||
func GetTitleFunc(style string) func(s string) string {
|
|
||||||
switch strings.ToLower(style) {
|
|
||||||
case "go":
|
|
||||||
return strings.Title
|
|
||||||
case "chicago":
|
|
||||||
return transform.NewTitleConverter(transform.ChicagoStyle)
|
|
||||||
default:
|
|
||||||
return transform.NewTitleConverter(transform.APStyle)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{{< / highlight >}}
|
|
@@ -1,204 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Mark Dumay"
|
|
||||||
title: "Extra shortcodes"
|
|
||||||
date: 2022-12-05
|
|
||||||
modified: 2022-12-31
|
|
||||||
description: "Beschikbare shortcodes die gebruik maken van Bootstrap componenten en vormgeving."
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
|
|
||||||
Bootstrap is een open-source raamwerk voor het ontwikkelen van websites gemaakt door Twitter. Het volgt een aanpak die geschikt is voor meerdere schermformaten, inclusief mobiele apparaten. Bootstrap bevat een uitgebreide collectie van direct bruikbare componenten, zoals navigatiemenu's, paginering, knoppen, en nog veel meer. Om het gebruik hiervan in markdown pagina's te vergemakkelijken, stelt Hinode enkele van deze componenten beschikbaar als Hugo shortcode. De onderstaande paragrafen bieden een overzicht en uitleg van de beschikbare shortcodes.
|
|
||||||
|
|
||||||
## Carousel Shortcode
|
|
||||||
|
|
||||||
Gebruik de `carousel` shortcode om een carousel van meerdere plaatjes te tonen, analoog aan de [Image Shortcode](#image-shortcode). De shortcode ondersteunt de volgende parameters:
|
|
||||||
|
|
||||||
| Parameter | Verplicht | Toelichting |
|
|
||||||
|-----------|-----------|-------------|
|
|
||||||
| ratio | Nee | Verhouding van het plaatje, de mogelijke waarden zijn "1x1", "4x3" (standaard), "16x9", en "21x9". |
|
|
||||||
| class | Nee | Optionele `class` waarde van het `carousel` element, bijvoorbeeld "w-75". |
|
|
||||||
{.table}
|
|
||||||
|
|
||||||
Voeg een `img` element toe voor elke pagina van de carousel. Het `img` element ondersteunt de volgende parameters:
|
|
||||||
|
|
||||||
| Parameter | Verplicht | Toelichting |
|
|
||||||
|-----------|-----------|-------------|
|
|
||||||
| src | Ja | Verplichte url van het plaatje, bijvoorbeeld "img/boots.jpg" of "https://picsum.photos/id/27/3264/1836". |
|
|
||||||
| caption | Nee | Optionele beschrijving van het plaatje. Het plaatje wordt iets donkerder gemaakt om het contrast te verhogen. Op kleinere schermen wordt de beschrijving weggelaten. |
|
|
||||||
{.table}
|
|
||||||
|
|
||||||
Ter illustratie toont de volgende shortcode een carousel met drie pagina's in een verhouding van 16x9 en een relatieve breedte van 67% voor grote schermen.
|
|
||||||
|
|
||||||
```html
|
|
||||||
{{</* 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 */>}}
|
|
||||||
```
|
|
||||||
|
|
||||||
Het resultaat ziet er als volgt uit:
|
|
||||||
{{< 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 >}}
|
|
||||||
|
|
||||||
## Command Prompt Shortcode
|
|
||||||
|
|
||||||
De `command` shortcode simuleert een terminal voor `bash`, `powershell` of `sql` shell talen. De shortcode ondersteunt de volgende parameters:
|
|
||||||
|
|
||||||
| Parameter | Verplicht | Toelichting |
|
|
||||||
|-----------|----------|-------------|
|
|
||||||
| user | Nee | Optionele gebruiker om toe te voegen aan de prompt, bijvoorbeeld "user". |
|
|
||||||
| host | Nee | Optionele omgeving om toe te voegen aan de prompt, bijvoorbeeld "localhost". |
|
|
||||||
| prompt | Nee | Optionele vervanging van de prompt, bijvoorbeeld "PS C:\Users\User>". |
|
|
||||||
| shell | Nee | Type shell, met ondersteuning voor "bash" (standaard), "powershell", of "sql". |
|
|
||||||
{.table}
|
|
||||||
|
|
||||||
### Bash (standaard shell)
|
|
||||||
|
|
||||||
Gebruik de `command` shortcode om een bash terminal te simuleren.
|
|
||||||
|
|
||||||
```html
|
|
||||||
{{%/* command */%}}
|
|
||||||
export MY_VAR=123
|
|
||||||
{{%/* /command */%}}
|
|
||||||
```
|
|
||||||
|
|
||||||
Het resultaat ziet er als volgt uit:
|
|
||||||
{{% command %}}
|
|
||||||
export MY_VAR=123
|
|
||||||
{{% /command %}}
|
|
||||||
|
|
||||||
Gebruik `user` en `host` om de gebruikerscontext mee te geven aan de prompt. Maak daarnaast gebruik van `(out)` om output aan te geven, met `\` als markering van een bijbehorende regel.
|
|
||||||
|
|
||||||
```html
|
|
||||||
{{%/* 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 */%}}
|
|
||||||
```
|
|
||||||
|
|
||||||
Het resultaat ziet er als volgt uit:
|
|
||||||
{{% 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 %}}
|
|
||||||
|
|
||||||
### PowerShell
|
|
||||||
|
|
||||||
Geef `powershell` op als waarde voor het argument `shell` om een PowerShell terminal te simuleren. Je kunt `prompt` aanpassen om een eventule directory aan te geven. Het backtick `` ` `` symbool geeft aan dat het commando doorgaat op de volgende regel.
|
|
||||||
|
|
||||||
```html
|
|
||||||
{{%/* command prompt="PS C:\Users\User>" shell="powershell" */%}}
|
|
||||||
Write-Host `
|
|
||||||
'Hello' `
|
|
||||||
'from' `
|
|
||||||
'PowerShell!'
|
|
||||||
(out)Hello from PowerShell!
|
|
||||||
Write-Host 'Goodbye from PowerShell!'
|
|
||||||
(out)Goodbye from PowerShell!
|
|
||||||
{{%/* /command */%}}
|
|
||||||
```
|
|
||||||
|
|
||||||
Het resultaat ziet er als volgt uit:
|
|
||||||
{{% command prompt="PS C:\Users\User>" shell="powershell" %}}
|
|
||||||
Write-Host `
|
|
||||||
'Hello' `
|
|
||||||
'from' `
|
|
||||||
'PowerShell!'
|
|
||||||
(out)Hello from PowerShell!
|
|
||||||
Write-Host 'Goodbye from PowerShell!'
|
|
||||||
(out)Goodbye from PowerShell!
|
|
||||||
{{% /command %}}
|
|
||||||
|
|
||||||
### SQL
|
|
||||||
|
|
||||||
Geef `sql` op als waarde voor het argument `shell` om een SQL terminal te simuleren. Gebruik `(con)` als markering van een bijbehorende regel.
|
|
||||||
|
|
||||||
```html
|
|
||||||
{{%/* command prompt="mysql>" shell="sql" */%}}
|
|
||||||
set @my_var = 'foo';
|
|
||||||
set @my_other_var = 'bar';
|
|
||||||
CREATE TABLE people ((con)
|
|
||||||
first_name VARCHAR(30) NOT NULL,(con)
|
|
||||||
last_name VARCHAR(30) NOT NULL(con)
|
|
||||||
);
|
|
||||||
(out)Query OK, 0 rows affected (0.09 sec)
|
|
||||||
insert into people(con)
|
|
||||||
values ('John', 'Doe');
|
|
||||||
(out)Query OK, 1 row affected (0.02 sec)
|
|
||||||
select *(con)
|
|
||||||
from people(con)
|
|
||||||
order by last_name;
|
|
||||||
(out)+------------+-----------+
|
|
||||||
(out)| first_name | last_name |
|
|
||||||
(out)+------------+-----------+
|
|
||||||
(out)| John | Doe |
|
|
||||||
(out)+------------+-----------+
|
|
||||||
(out)1 row in set (0.00 sec)
|
|
||||||
{{%/* /command */%}}
|
|
||||||
```
|
|
||||||
|
|
||||||
Het resultaat ziet er als volgt uit:
|
|
||||||
{{% command prompt="mysql>" shell="sql" %}}
|
|
||||||
set @my_var = 'foo';
|
|
||||||
set @my_other_var = 'bar';
|
|
||||||
CREATE TABLE people ((con)
|
|
||||||
first_name VARCHAR(30) NOT NULL,(con)
|
|
||||||
last_name VARCHAR(30) NOT NULL(con)
|
|
||||||
);
|
|
||||||
(out)Query OK, 0 rows affected (0.09 sec)
|
|
||||||
insert into people(con)
|
|
||||||
values ('John', 'Doe');
|
|
||||||
(out)Query OK, 1 row affected (0.02 sec)
|
|
||||||
select *(con)
|
|
||||||
from people(con)
|
|
||||||
order by last_name;
|
|
||||||
(out)+------------+-----------+
|
|
||||||
(out)| first_name | last_name |
|
|
||||||
(out)+------------+-----------+
|
|
||||||
(out)| John | Doe |
|
|
||||||
(out)+------------+-----------+
|
|
||||||
(out)1 row in set (0.00 sec)
|
|
||||||
{{% /command %}}
|
|
||||||
|
|
||||||
## Image Shortcode
|
|
||||||
|
|
||||||
Gebruik de `image` shortcode om een adaptief plaatje met een specifieke verhouding te tonen. De bron kan verwijzen naar een bestand in de `/assets/img` folder van je website of naar een publieke weblocatie. De shortcode genereert het plaatje als een zogenaamde [image set]({{< param "links.mozilla_image" >}}) om deze te optimaliseren voor meerdere schermformaten en verschillende resoluties. Achter de schermen converteert Hugo de plaatjes naar een `WebP` bestandsformaat en slaat deze op in een lokale folder (`resources` of `public`). De kwaliteit van het plaatje kan worden opgegeven in de sectie `[imaging]` van de site [configuratie]({{< param "links.hugo_imaging" >}}) (75 is de standaardwaarde). De geschikte bestandsformaten zijn `.png`, `.jpeg`, `.gif`, `.tiff`, `.bmp` en `.webp`. Een plaatje in het formaat `.jpeg` is beschikbaar voor oudere browsers. De shortcode ondersteunt de volgende parameters:
|
|
||||||
|
|
||||||
| Parameter | Verplicht | Toelichting |
|
|
||||||
|-----------|----------|-------------|
|
|
||||||
| src | Ja | Verplichte url van het plaatje, bijvoorbeeld "img/boots.jpg" of "https://picsum.photos/id/27/3264/1836". |
|
|
||||||
| ratio | Nee | Verhouding van het plaatje, de mogelijke waarden zijn "1x1", "4x3", "16x9", en "21x9". Indien opgegeven wordt het plaatje bijgesneden en verkleind om te voldoen aan de ratio. Als de verhouding niet is opgegeven dan wordt de verhouding van het originele bestand gebruikt. |
|
|
||||||
| class | Nee | Optionele `class` waarde van het `img` element, bijvoorbeeld "rounded". |
|
|
||||||
| title | Nee | Optionele beschrijving van het plaatje. |
|
|
||||||
| caption | Nee | Optioneel onderschrift van het plaatje. |
|
|
||||||
{.table}
|
|
||||||
|
|
||||||
Ter illustratie toont de volgende shortcode een plaatje met afgeronde hoeken en een verhouding van 21x9.
|
|
||||||
|
|
||||||
```html
|
|
||||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Onderschrift" class="rounded" */>}}
|
|
||||||
```
|
|
||||||
|
|
||||||
Het resultaat ziet er als volgt uit:
|
|
||||||
{{< image src="img/flowers.jpg" ratio="21x9" caption="Onderschrift" class="rounded">}}
|
|
@@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
slug: "emoji-ondersteuning"
|
|
||||||
title: "Emoji ondersteuning"
|
|
||||||
date: 2021-07-15
|
|
||||||
description: "Gids voor het gebruik van emoji met Hugo."
|
|
||||||
tags: ["emoji"]
|
|
||||||
# thumbnail: img/dunes.jpg
|
|
||||||
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
|
||||||
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
|
||||||
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
|
||||||
---
|
|
||||||
|
|
||||||
Je kunt op meerdere manieren emoji gebruiken binnen Hugo.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
Je kunt de [`emojify`](https://gohugo.io/functions/emojify/) functie direct aanroepen vanuit een template of [Inline Shortcode](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
|
|
||||||
|
|
||||||
Zet de waarde `enableEmoji` op `true` in de globale [configuratie](https://gohugo.io/getting-started/configuration/) om emoji direct te kunnen gebruiken in content, bijvoorbeeld:
|
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
De [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) geeft een handig overzicht van alle beschikbare emoji codes.
|
|
15
content/nl/blog/first-post.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Eerste artikel
|
||||||
|
slug: eerste-artikel
|
||||||
|
date: 2022-10-01
|
||||||
|
description: Dit is mijn eerste artikel.
|
||||||
|
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.
|
17
content/nl/blog/fourth-post.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Vierde artikel
|
||||||
|
slug: vierde-artikel
|
||||||
|
date: 2023-01-01
|
||||||
|
description: Dit is mijn vierde artikel.
|
||||||
|
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,15 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
slug: "markdown-syntax-handleiding"
|
|
||||||
title: "Markdown syntax handleiding"
|
|
||||||
description: "Een voorbeeldartikel die het gebruik van Markdown illustreert."
|
|
||||||
tags: ["markdown", "css", "html"]
|
|
||||||
date: 2022-01-14
|
|
||||||
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
|
||||||
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
|
|
||||||
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
|
||||||
---
|
|
||||||
|
|
||||||
Nunc porta nisi ac massa tincidunt, ac facilisis magna faucibus. Nullam consectetur luctus ante, sed venenatis quam malesuada id. Curabitur tempus semper elit, in euismod justo vestibulum nec. Nulla luctus, arcu non venenatis posuere, sapien dolor interdum massa, eget feugiat ipsum nulla sed orci. Vivamus sit amet gravida diam. Morbi aliquam urna et congue tincidunt. Vestibulum tincidunt libero non dolor viverra, non malesuada nisl ultricies. Fusce venenatis justo non nisl pretium auctor. Aliquam fermentum metus sem, porttitor auctor diam elementum a. Phasellus vel ornare ante. Nunc blandit dictum rhoncus.
|
|
||||||
|
|
||||||
Proin sagittis felis sed euismod interdum. Duis pellentesque tempus leo non luctus. Integer convallis ultricies rhoncus. Donec eu mauris eget justo dictum efficitur imperdiet et nibh. Sed ornare enim eros, et ornare sem accumsan sodales. Maecenas pellentesque sollicitudin massa quis varius. Integer et tempor arcu. Curabitur vitae varius metus, at luctus massa. Pellentesque fringilla neque congue ultricies fermentum. Curabitur vulputate eros eget eros pharetra dignissim. Morbi pulvinar iaculis tincidunt.
|
|
@@ -1,35 +0,0 @@
|
|||||||
---
|
|
||||||
author: "Hugo Authors"
|
|
||||||
slug: "multimedia"
|
|
||||||
title: "Multimedia"
|
|
||||||
date: 2021-07-13
|
|
||||||
description: "Een overzicht van enkele Hugo Shortcodes."
|
|
||||||
tags: ["shortcode", "privacy"]
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
|
|
||||||
Hugo biedt diverse [shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes) voor het toevoegen van multimedia, inclusief een [privacy configuratie](https://gohugo.io/about/hugo-and-gdpr/) en een verzameling van eenvoudige shortcodes voor het toevoegen van statische en no-JS versies van diverse sociale media.
|
|
||||||
|
|
||||||
## <!--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" >}}
|
|
17
content/nl/blog/second-post.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Tweede artikel
|
||||||
|
slug: tweede-artikel
|
||||||
|
date: 2022-11-01
|
||||||
|
description: Dit is mijn tweede artikel.
|
||||||
|
tags: ["blog"]
|
||||||
|
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
||||||
|
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
|
||||||
|
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non sollicitudin sapien. Ut porttitor lectus eu tempor ultricies. Sed semper tincidunt nibh pellentesque condimentum. Vivamus dictum sem eu rhoncus semper. Vestibulum convallis congue tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris magna urna, egestas sit amet ligula quis, viverra semper arcu. Praesent laoreet nunc vitae nulla posuere facilisis.
|
||||||
|
|
||||||
|
Nunc eget dignissim ex, sed lobortis leo. Suspendisse mollis posuere tellus, in viverra nunc ullamcorper vitae. Nam vel tempor arcu, in imperdiet odio. Fusce malesuada vehicula odio, in iaculis nulla congue eget. Quisque id odio id nisl facilisis posuere porta sit amet mauris. Curabitur lorem leo, tempus id rhoncus eget, placerat vitae lectus. Morbi eu aliquet enim. Nulla malesuada laoreet sodales.
|
||||||
|
|
||||||
|
Nunc volutpat dui in elit euismod, sed egestas purus tristique. Nam in condimentum mauris. Praesent nec suscipit enim. Aliquam dolor ipsum, faucibus vitae purus ac, congue egestas nisi. Donec hendrerit erat eu arcu porttitor rhoncus. Nunc a odio bibendum metus semper pellentesque. Sed at sapien ut est semper eleifend. Aliquam lorem libero, porttitor nec tristique ut, auctor vitae ipsum. Suspendisse pretium pharetra rutrum. Nulla tincidunt tempus enim eu sagittis. Maecenas pulvinar metus a urna mattis dictum sed id tellus.
|
17
content/nl/blog/third-post.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
author: Mark Dumay
|
||||||
|
title: Derde artikel
|
||||||
|
slug: derde-artikel
|
||||||
|
date: 2022-12-01
|
||||||
|
description: Dit is mijn derde artikel.
|
||||||
|
tags: ["blog"]
|
||||||
|
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
||||||
|
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
||||||
|
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id scelerisque ligula. Vestibulum eu lorem tortor. Suspendisse tristique ultrices mauris, non maximus lorem faucibus in. Suspendisse sagittis eleifend dapibus. Curabitur dignissim luctus sapien eu consequat. Proin congue dui vel ipsum bibendum varius. Pellentesque cursus nisi metus, egestas eleifend ipsum sollicitudin vitae. Sed vitae erat elementum, semper turpis sed, molestie nulla.
|
||||||
|
|
||||||
|
Nulla molestie ultrices vehicula. Etiam iaculis, erat a blandit blandit, nulla tellus dapibus ligula, vitae venenatis turpis diam non felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae arcu in justo iaculis egestas. In imperdiet arcu vitae pharetra commodo. Quisque ut erat eget nisl semper laoreet vitae eget ligula. Mauris bibendum purus nec vulputate faucibus. In luctus sagittis ante, quis laoreet orci bibendum vitae. Nam at odio accumsan, tincidunt eros at, lacinia metus. In et ultricies sapien, a mollis est. Nunc convallis orci eu tristique euismod. Proin vel ullamcorper diam. Quisque et semper orci. Proin pharetra lorem justo, id malesuada erat feugiat sit amet. Praesent bibendum mi at lorem volutpat suscipit. Morbi sed libero elit.
|
||||||
|
|
||||||
|
Nunc sodales est eu ipsum volutpat, in mollis dui facilisis. Nulla faucibus interdum lectus, a condimentum elit vulputate eu. Nunc ipsum risus, suscipit sit amet nulla ac, pulvinar maximus nulla. In venenatis diam erat, non elementum ante dignissim posuere. Aliquam sem justo, luctus at vestibulum ut, egestas ut quam. Quisque a dolor viverra, aliquam nunc vel, lacinia nulla. In id magna magna. Morbi dapibus pretium sollicitudin. Morbi volutpat augue at felis tristique, quis euismod tellus vulputate. Morbi dui lacus, aliquam eget quam vel, vestibulum faucibus enim. Proin porta pretium metus id venenatis. Aliquam nec tempor lorem. Vivamus euismod est varius sagittis placerat. Maecenas tincidunt elementum libero, at imperdiet elit feugiat vel.
|
@@ -68,7 +68,7 @@
|
|||||||
|
|
||||||
# 404 page
|
# 404 page
|
||||||
- id: pageNotFound
|
- id: pageNotFound
|
||||||
translation: "Ups! Diese Seite existiert nicht. Versuche es über die"
|
translation: "Diese Seite existiert nicht. Versuche es über die"
|
||||||
- id: pageNotFoundTitle
|
- id: pageNotFoundTitle
|
||||||
translation: "Nicht gefunden"
|
translation: "Nicht gefunden"
|
||||||
- id: pageNotFoundHome
|
- id: pageNotFoundHome
|
||||||
|
44
i18n/en.yaml
@@ -27,8 +27,16 @@
|
|||||||
translation: "Next Post"
|
translation: "Next Post"
|
||||||
- id: recentProjects
|
- id: recentProjects
|
||||||
translation: "Projects"
|
translation: "Projects"
|
||||||
|
- id: moreFeatures
|
||||||
|
translation: "More Features"
|
||||||
|
- id: moreGuides
|
||||||
|
translation: "More Guides"
|
||||||
|
- id: moreOpensource
|
||||||
|
translation: "More Features"
|
||||||
- id: moreProjects
|
- id: moreProjects
|
||||||
translation: "More Projects"
|
translation: "More Projects"
|
||||||
|
- id: moreUsers
|
||||||
|
translation: "More Users"
|
||||||
- id: read
|
- id: read
|
||||||
translation: "read"
|
translation: "read"
|
||||||
- id: minutesShort
|
- id: minutesShort
|
||||||
@@ -45,18 +53,20 @@
|
|||||||
translation: "Article"
|
translation: "Article"
|
||||||
- id: articles
|
- id: articles
|
||||||
translation: "Articles"
|
translation: "Articles"
|
||||||
|
- id: paginationNav
|
||||||
|
translation: "Page navigation"
|
||||||
- id: paginationPrevious
|
- id: paginationPrevious
|
||||||
translation: "Previous"
|
translation: "Previous page"
|
||||||
- id: paginationNext
|
- id: paginationNext
|
||||||
translation: "Next"
|
translation: "Next page"
|
||||||
- id: paginationFirst
|
- id: paginationFirst
|
||||||
translation: "First"
|
translation: "First page"
|
||||||
- id: paginationLast
|
- id: paginationLast
|
||||||
translation: "Last"
|
translation: "Last page"
|
||||||
- id: toggleSidebar
|
- id: toggleSidebar
|
||||||
translation: "Toggle sidebar navigation"
|
translation: "Toggle sidebar navigation"
|
||||||
- id: colorMode
|
- id: colorMode
|
||||||
translation: "Color mode"
|
translation: "Toggle theme"
|
||||||
- id: colorLight
|
- id: colorLight
|
||||||
translation: "Light"
|
translation: "Light"
|
||||||
- id: colorDark
|
- id: colorDark
|
||||||
@@ -65,12 +75,32 @@
|
|||||||
translation: "Auto"
|
translation: "Auto"
|
||||||
- id: toggleMainNav
|
- id: toggleMainNav
|
||||||
translation: "Toggle main navigation"
|
translation: "Toggle main navigation"
|
||||||
|
- id: demo
|
||||||
|
translation: "Demo"
|
||||||
|
- id: addedFeature
|
||||||
|
translation: "Added in"
|
||||||
|
- id: deprecatedFeature
|
||||||
|
translation: "Deprecated in"
|
||||||
|
- id: shareLink
|
||||||
|
translation: "Share via"
|
||||||
|
- id: copiedToClipboard
|
||||||
|
translation: "copied to clipboard"
|
||||||
|
- id: link
|
||||||
|
translation: "Link"
|
||||||
|
- id: code
|
||||||
|
translation: "Code"
|
||||||
|
- id: latest
|
||||||
|
translation: "latest"
|
||||||
|
- id: allVersions
|
||||||
|
translation: "All versions"
|
||||||
|
- id: newerVersionAlert
|
||||||
|
translation: "There is a newer version of {{ . }}!"
|
||||||
|
|
||||||
# 404 page
|
# 404 page
|
||||||
- id: pageNotFound
|
- id: pageNotFound
|
||||||
translation: "Oops! This page doesn't exist. Try going back to our"
|
translation: "The page you are looking for does not exist or another error occurred. Try going back to our"
|
||||||
- id: pageNotFoundTitle
|
- id: pageNotFoundTitle
|
||||||
translation: "Not found"
|
translation: "Page not found"
|
||||||
- id: pageNotFoundHome
|
- id: pageNotFoundHome
|
||||||
translation: "home page"
|
translation: "home page"
|
||||||
|
|
||||||
|
24
i18n/nl.yaml
@@ -45,6 +45,8 @@
|
|||||||
translation: "Artikel"
|
translation: "Artikel"
|
||||||
- id: articles
|
- id: articles
|
||||||
translation: "Artikelen"
|
translation: "Artikelen"
|
||||||
|
- id: paginationNav
|
||||||
|
translation: "Pagina navigatie"
|
||||||
- id: paginationPrevious
|
- id: paginationPrevious
|
||||||
translation: "Vorige"
|
translation: "Vorige"
|
||||||
- id: paginationNext
|
- id: paginationNext
|
||||||
@@ -56,7 +58,7 @@
|
|||||||
- id: toggleSidebar
|
- id: toggleSidebar
|
||||||
translation: "Toon of verberg navigatie"
|
translation: "Toon of verberg navigatie"
|
||||||
- id: colorMode
|
- id: colorMode
|
||||||
translation: "Modus"
|
translation: "Pas modus aan"
|
||||||
- id: colorLight
|
- id: colorLight
|
||||||
translation: "Licht"
|
translation: "Licht"
|
||||||
- id: colorDark
|
- id: colorDark
|
||||||
@@ -65,10 +67,28 @@
|
|||||||
translation: "Automatisch"
|
translation: "Automatisch"
|
||||||
- id: toggleMainNav
|
- id: toggleMainNav
|
||||||
translation: "Toon of verberg hoofdnavigatie"
|
translation: "Toon of verberg hoofdnavigatie"
|
||||||
|
- id: addedFeature
|
||||||
|
translation: "Toegevoegd in"
|
||||||
|
- id: deprecatedFeature
|
||||||
|
translation: "Verouderd in"
|
||||||
|
- id: shareLink
|
||||||
|
translation: "Delen via"
|
||||||
|
- id: copiedToClipboard
|
||||||
|
translation: "gekopieerd naar clipboard"
|
||||||
|
- id: link
|
||||||
|
translation: "Link"
|
||||||
|
- id: code
|
||||||
|
translation: "Code"
|
||||||
|
- id: latest
|
||||||
|
translation: "meest recente"
|
||||||
|
- id: allVersions
|
||||||
|
translation: "Alle versies"
|
||||||
|
- id: newerVersionAlert
|
||||||
|
translation: "Er is een nieuwere versie van {{ . }}!"
|
||||||
|
|
||||||
# 404 page
|
# 404 page
|
||||||
- id: pageNotFound
|
- id: pageNotFound
|
||||||
translation: "Oeps, deze pagina bestaat niet. Ga terug naar het"
|
translation: "Deze pagina bestaat niet of er is een andere fout opgetreden. Ga terug naar het"
|
||||||
- id: pageNotFoundTitle
|
- id: pageNotFoundTitle
|
||||||
translation: "Niet gevonden"
|
translation: "Niet gevonden"
|
||||||
- id: pageNotFoundHome
|
- id: pageNotFoundHome
|
||||||
|
@@ -1,8 +1,12 @@
|
|||||||
{{ define "main"}}
|
{{ define "main"}}
|
||||||
<main id="main">
|
<div class="container-xxl flex-fill d-flex align-content-center flex-wrap">
|
||||||
<div>
|
<div class="w-100 text-center">
|
||||||
<h1 id="title">{{ T "pageNotFoundTitle" }}</h1>
|
<span class="text-secondary fw-bold">
|
||||||
<p>{{ T "pageNotFound" }} <a href="{{ "/" | relURL }}">{{ T "pageNotFoundHome" }}</a>.</p>
|
<i class="fa-regular fa-face-frown fa-10x"></i>
|
||||||
|
<p class="display-1 mt-3 fw-bold">404</p>
|
||||||
|
<p class="fs-3">{{ T "pageNotFoundTitle" }}</p>
|
||||||
|
</span>
|
||||||
|
<p>{{ T "pageNotFound" }} <a href="{{ "/" | relLangURL }}">{{ T "pageNotFoundHome" }}</a>.</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
5
layouts/_default/_markup/render-heading.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{{ if site.Params.navigation.anchor }}
|
||||||
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="heading">{{ .Text | safeHTML }} <a href="#{{ .Anchor | safeURL }}"><i class="fa-solid fa-link anchor"></i></a></h{{ .Level }}>
|
||||||
|
{{ else }}
|
||||||
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}</h{{ .Level }}>
|
||||||
|
{{ end }}
|
@@ -1,12 +1,28 @@
|
|||||||
{{- with partial "utilities/GetMenu" . }}{{ $.Scratch.Set "sidebar" . }}{{ end -}}
|
{{- $section := .Section }}
|
||||||
|
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
|
||||||
|
{{- $.Scratch.Set "version" $version -}}
|
||||||
|
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
|
||||||
|
|
||||||
|
{{- if site.Params.docs.checkVersion -}}
|
||||||
|
{{ with $version }}
|
||||||
|
{{- $isOlder := partial "utilities/IsOlder" (dict "current" .) -}}
|
||||||
|
{{- if $isOlder }}
|
||||||
|
{{- $.Scratch.Set "pageAlertMsg" (T "newerVersionAlert" site.Title) -}}
|
||||||
|
{{- $.Scratch.Set "pageAlertURL" (or site.Params.docs.latestURL site.baseURL) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="{{ .Site.Language.Lang }}" class="no-js" data-bs-theme="dark">
|
<html lang="{{ .Site.Language.Lang }}" class="no-js">
|
||||||
<head>
|
<head>
|
||||||
{{ block "head" . }}{{ end -}}
|
{{ block "head" . }}{{ end -}}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
{{- if site.Params.main.enableDarkMode -}}
|
||||||
|
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" .) -}}
|
||||||
|
{{- end -}}
|
||||||
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
|
<div class="d-flex flex-column min-vh-100{{ if and .IsHome .Site.Params.home.style }} {{ .Site.Params.home.style }}{{ end }}">
|
||||||
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
|
<div class="{{ if .Site.Params.navigation.fixed }}mb-4{{ end }}">
|
||||||
{{- partial "assets/navbar.html" (dict
|
{{- partial "assets/navbar.html" (dict
|
||||||
@@ -28,19 +44,23 @@
|
|||||||
<div class="d-flex flex-column flex-fill">
|
<div class="d-flex flex-column flex-fill">
|
||||||
{{ block "main" . }}{{ end -}}
|
{{ block "main" . }}{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
{{ if not .Site.Params.main.footerBelowFold }}
|
||||||
<div class="">
|
<div class="">
|
||||||
{{- partial "footer/social.html" . -}}
|
{{- partial "footer/social.html" . -}}
|
||||||
{{- partial "footer/footer.html" . -}}
|
{{- partial "footer/footer.html" . -}}
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ else -}}
|
{{ else -}}
|
||||||
<div class="d-flex flex-column flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
<div class="d-flex flex-column flex-fill {{ if .Site.Params.navigation.fixed }}mt-5{{ end }}">
|
||||||
{{ block "main" . }}{{ end -}}
|
{{ block "main" . }}{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
{{ if not .Site.Params.main.footerBelowFold }}
|
||||||
<div class="">
|
<div class="">
|
||||||
{{- partial "footer/social.html" . -}}
|
{{- partial "footer/social.html" . -}}
|
||||||
{{- partial "footer/footer.html" . -}}
|
{{- partial "footer/footer.html" . -}}
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -48,10 +68,18 @@
|
|||||||
<div class="">
|
<div class="">
|
||||||
{{ block "main" . }}{{ end -}}
|
{{ block "main" . }}{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="">
|
||||||
{{- partial "footer/social.html" . -}}
|
{{- partial "footer/social.html" . -}}
|
||||||
{{- partial "footer/footer.html" . -}}
|
{{- partial "footer/footer.html" . -}}
|
||||||
{{ end -}}
|
</div>
|
||||||
|
{{ else if .Site.Params.main.footerBelowFold }}
|
||||||
|
<div class="">
|
||||||
|
{{- partial "footer/social.html" . -}}
|
||||||
|
{{- partial "footer/footer.html" . -}}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{- partialCached "footer/scripts.html" . -}}
|
{{- partial "footer/toast-container.html" . -}}
|
||||||
|
{{- partialCached "footer/scripts.html" (dict "header" false "page" .) }}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -1,9 +1,12 @@
|
|||||||
{{- define "main" -}}
|
{{- define "main" -}}
|
||||||
{{- partial "assets/section-list.html" (dict
|
{{- partial "assets/section-list.html" (dict
|
||||||
"page" .
|
"page" .
|
||||||
"section" .Section
|
"section" .Type
|
||||||
"home" false
|
"home" false
|
||||||
|
"nested" .Params.Nested
|
||||||
"title" .Title
|
"title" .Title
|
||||||
|
"description" .Description
|
||||||
|
"content" .Content
|
||||||
"paginate" true)
|
"paginate" true)
|
||||||
-}}
|
-}}
|
||||||
{{- end -}}
|
{{- end -}}
|
@@ -1,11 +1,13 @@
|
|||||||
{{- define "partials/header.html" -}}
|
{{- define "partials/header.html" -}}
|
||||||
{{ if site.Params.navigation.breadcrumb }}{{ partial "breadcrumb.html" . }}{{ end -}}
|
{{ if site.Params.navigation.breadcrumb }}{{ partial "assets/breadcrumb.html" . }}{{ end -}}
|
||||||
{{ if in (slice "docs" "minimal") .Layout }}
|
{{ if in (slice "docs" "minimal") .Layout }}
|
||||||
<h1>{{ .Title }}</h1>
|
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
|
{{ partial "assets/sharing.html" . }}
|
||||||
|
<p class="lead mb-5">{{ .Description }}</p>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
{{ $lastmodstr := (partial "utilities/date.html" (dict "date" .Lastmod "format" "long")) -}}
|
||||||
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
{{ $datestr := (partial "utilities/date.html" (dict "date" .Date "format" "long")) -}}
|
||||||
<h1>{{ .Title }}</h1>
|
{{ with .Title }}<p class="display-4 mt-5">{{ . }}</p>{{ end }}
|
||||||
<small class="text-body-secondary text-uppercase">
|
<small class="text-body-secondary text-uppercase">
|
||||||
{{ $datestr | i18n "postedOnDate" -}}
|
{{ $datestr | i18n "postedOnDate" -}}
|
||||||
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }} •
|
{{ if ne $datestr $lastmodstr -}} ({{ $lastmodstr | i18n "lastModified" }}){{ end }} •
|
||||||
@@ -13,27 +15,45 @@
|
|||||||
{{ .WordCount | lang.FormatNumber 0 }} {{ i18n "words" }}
|
{{ .WordCount | lang.FormatNumber 0 }} {{ i18n "words" }}
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
|
{{- if gt (len (.GetTerms "tags")) 0 -}}
|
||||||
<div class="mt-3">
|
<div class="mt-3">
|
||||||
|
<div class="d-none-dark">
|
||||||
|
<div class="hstack gap-3">
|
||||||
{{ range (.GetTerms "tags") -}}
|
{{ range (.GetTerms "tags") -}}
|
||||||
<a class="btn btn-light btn-sm" href="{{ (path.Join .Page.RelPermalink) | relURL }}" role="button">{{ .LinkTitle }}</a>
|
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
||||||
|
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "light" "size" "sm") }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-none-light">
|
||||||
|
<div class="hstack gap-3">
|
||||||
|
{{ range (.GetTerms "tags") -}}
|
||||||
|
{{- $url := (path.Join .Page.RelPermalink) | relLangURL -}}
|
||||||
|
{{ partial "assets/button.html" (dict "href" $url "title" .LinkTitle "color" "secondary" "size" "sm" "outline" "true") }}
|
||||||
|
{{ end -}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
{{ partial "assets/sharing.html" . }}
|
||||||
|
<p class="lead mb-5 mt-3">{{ .Description }}</p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{ define "partials/body.html" -}}
|
{{ define "partials/body.html" -}}
|
||||||
{{ if eq .Layout "docs"}}
|
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||||
<p class="lead mb-5">{{ .Description }}</p>
|
<div class="d-md-none pb-5">{{ partial "assets/toc-dropdown.html" . }}</div>
|
||||||
{{ .Content }}
|
{{- end -}}
|
||||||
{{ else }}
|
|
||||||
<p class="lead mb-5 mt-3">{{ .Description }}</p>
|
{{ if not (in (slice "docs" "minimal") .Layout) }}
|
||||||
{{ if .Params.thumbnail -}}
|
{{ if .Params.thumbnail -}}
|
||||||
{{- $credits := "" -}}
|
{{- $credits := "" -}}
|
||||||
{{- if .Params.photoCredits }}{{ if .Params.PhotoSource }}{{ $credits = printf "%s %s %s %s" (T "photoBy") .Params.photoCredits (T "photoOn") .Params.PhotoSource }}{{ end }}{{ end -}}
|
{{- if .Params.photoCredits }}{{ if .Params.PhotoSource }}{{ $credits = printf "%s %s %s %s" (T "photoBy") .Params.photoCredits (T "photoOn") .Params.PhotoSource }}{{ end }}{{ end -}}
|
||||||
{{- partial "image.html" (dict "url" .Params.thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
|
{{- partial "assets/image.html" (dict "url" .Params.thumbnail "ratio" "21x9" "outerClass" "img-wrap" "innerClass" "rounded" "title" .Params.title "caption" $credits) -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{ .Content }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ .Content }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
|
|
||||||
{{ define "partials/footer.html" -}}
|
{{ define "partials/footer.html" -}}
|
||||||
@@ -41,7 +61,7 @@
|
|||||||
<div class="mt-5 small">
|
<div class="mt-5 small">
|
||||||
{{ partial "utilities/git.html" . }}
|
{{ partial "utilities/git.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ else }}
|
{{ else if ne .Layout "minimal" }}
|
||||||
<div class="row row-cols-2 mt-5 mb-3">
|
<div class="row row-cols-2 mt-5 mb-3">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{{ with .NextInSection -}}
|
{{ with .NextInSection -}}
|
||||||
@@ -69,29 +89,30 @@
|
|||||||
|
|
||||||
{{ define "main" -}}
|
{{ define "main" -}}
|
||||||
{{- $menu := .Scratch.Get "sidebar" -}}
|
{{- $menu := .Scratch.Get "sidebar" -}}
|
||||||
|
{{- $version := .Scratch.Get "version" -}}
|
||||||
{{- $sidebar := .Site.Params.navigation.sidebar | default true -}}
|
{{- $sidebar := .Site.Params.navigation.sidebar | default true -}}
|
||||||
{{ if and $menu $sidebar -}}
|
{{ if and $menu $sidebar -}}
|
||||||
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-labelledby="offcanvas-label">
|
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvass-sidebar" aria-inledby="offcanvas-label">
|
||||||
<div class="offcanvas-header">
|
<div class="offcanvas-header">
|
||||||
<h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper .Section }}</h5>
|
<h5 class="offcanvas-title" id="offcanvas-label">{{ strings.FirstUpper .Section }}</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="offcanvas-body">
|
<div class="offcanvas-body">
|
||||||
{{ partial "assets/sidebar" (dict "page" . "menu" $menu) }}
|
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-fluid">
|
<div class="container-xxl px-3 px-xxl-0">
|
||||||
<div class="row row-cols-md-2 row-cols-lg-3">
|
<div class="row row-cols-md-2 row-cols-lg-3">
|
||||||
<div class="col col-md-3 col-lg-2 d-none mt-5 d-md-block">
|
<div class="col col-md-3 col-lg-2 d-none pt-5 d-md-block sidebar-overflow sticky-top">
|
||||||
{{ partial "assets/sidebar" (dict "page" . "menu" $menu) }}
|
{{ partial "assets/sidebar" (dict "page" . "menu" $menu "version" $version) }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-md-9 col-lg-8 mb-5 p-4">
|
<div class="col col-md-9 col-lg-8 mb-5 p-4">
|
||||||
{{ partial "partials/header.html" . }}
|
{{ partial "partials/header.html" . }}
|
||||||
{{ partial "partials/body.html" . }}
|
{{ partial "partials/body.html" . }}
|
||||||
{{ partial "partials/footer.html" . }}
|
{{ partial "partials/footer.html" . }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col col-lg-2 d-none d-lg-block mt-5">
|
<div class="col col-lg-2 d-none d-lg-block pt-5">
|
||||||
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
{{- if and .Site.Params.navigation.toc .Params.includeToc | default true -}}
|
||||||
{{ partial "assets/toc.html" . -}}
|
{{ partial "assets/toc.html" . -}}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
@@ -99,7 +120,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<div class="container-fluid">
|
<div class="container-xxl px-3 px-xxl-0">
|
||||||
<div class="row row-cols-1 row-cols-sm-3">
|
<div class="row row-cols-1 row-cols-sm-3">
|
||||||
<div class="col col-md-2 d-none d-md-block"></div>
|
<div class="col col-md-2 d-none d-md-block"></div>
|
||||||
<div class="col col-sm-12 col-md-8">
|
<div class="col col-sm-12 col-md-8">
|
||||||
|
11
layouts/alias.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html{{ with site.LanguageCode | default site.Language.Lang }} lang="{{ . }}"{{ end }}>
|
||||||
|
<head>
|
||||||
|
<title>{{ .Permalink }}</title>
|
||||||
|
<link rel="canonical" href="{{ .Permalink }}">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
|
||||||
|
<script src="/js/alias.js"></script>
|
||||||
|
</head>
|
||||||
|
</html>
|
@@ -1,10 +0,0 @@
|
|||||||
<!-- Hugo considers all first-level directories to be a root section. As such, as "/en/docs/" is considered to be a
|
|
||||||
branch bundle, despite it not having an "_index.md" page. Being a branch bundle, Hugo uses a list template to
|
|
||||||
render the "/en/docs/" page. This overwrites the alias defined in "/en/docs/<ver>/getting-started/introduction/".
|
|
||||||
|
|
||||||
This empty list template is deliberately added to the "/layouts/docs/" directory to prevent Hugo from generating
|
|
||||||
a list page for "/en/docs/" (all other nested sections). This enables the alias defined in
|
|
||||||
"/en/docs/<version>/getting-started/introduction/".
|
|
||||||
|
|
||||||
See https://gohugo.io/content-management/sections/ for more details.
|
|
||||||
-->
|
|
@@ -4,12 +4,15 @@
|
|||||||
|
|
||||||
{{- define "main" -}}
|
{{- define "main" -}}
|
||||||
{{- $page := . -}}
|
{{- $page := . -}}
|
||||||
|
|
||||||
{{- range $index, $section := site.Params.home.sections -}}
|
{{- range $index, $section := site.Params.home.sections -}}
|
||||||
{{- $pages := where site.RegularPages "Type" "in" $section -}}
|
{{- $sectionPage := site.GetPage "section" $section -}}
|
||||||
{{- $sectionURL := "" -}}
|
{{- $sectionURL := $sectionPage.RelPermalink -}}
|
||||||
{{- range $page := first 1 $pages -}}
|
{{- $title := $sectionPage.Title -}}
|
||||||
{{- $sectionURL = $page.Parent.RelPermalink -}}
|
{{- $thumbnail := $sectionPage.Params.Thumbnail -}}
|
||||||
{{- end -}}
|
{{- $icon := $sectionPage.Params.Icon -}}
|
||||||
|
{{- $description := $sectionPage.Description -}}
|
||||||
|
{{- $content := $sectionPage.Content -}}
|
||||||
|
|
||||||
{{- $moreTitle := (T (printf "more%s" (strings.FirstUpper $section))) -}}
|
{{- $moreTitle := (T (printf "more%s" (strings.FirstUpper $section))) -}}
|
||||||
|
|
||||||
@@ -17,6 +20,10 @@
|
|||||||
"page" $page
|
"page" $page
|
||||||
"section" $section
|
"section" $section
|
||||||
"home" true
|
"home" true
|
||||||
|
"nested" true
|
||||||
|
"thumbnail" $thumbnail
|
||||||
|
"icon" $icon
|
||||||
|
"content" $content
|
||||||
"moreTitle" $moreTitle
|
"moreTitle" $moreTitle
|
||||||
"sectionURL" $sectionURL)
|
"sectionURL" $sectionURL)
|
||||||
-}}
|
-}}
|
||||||
|
10
layouts/index.redir
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{{- range .Site.Params.docs.releases -}}
|
||||||
|
{{- if .redirect -}}
|
||||||
|
{{ urls.JoinPath .url "/*" }} {{ urls.JoinPath .redirect ":splat" }} 200
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ range $p := .Site.AllPages }}
|
||||||
|
{{- range .Aliases -}}
|
||||||
|
{{ if hasPrefix . "." }}{{ urls.JoinPath $p.RelPermalink . }}{{ else }}{{ . }}{{ end }} {{ $p.RelPermalink }}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
15
layouts/partials/assets/breadcrumb.html
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<nav aria-label="breadcrumb">
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
{{- range $index, $item := .Page.Ancestors.Reverse -}}
|
||||||
|
{{- $title := .Title -}}
|
||||||
|
{{- if .IsHome }}{{ $title = T "home" }}{{ end -}}
|
||||||
|
{{- $address := or .Permalink (.Params.Redirect | absLangURL) -}}
|
||||||
|
{{ if $address }}
|
||||||
|
<li class="breadcrumb-item"><a href="{{ $address }}">{{ $title }}</a></li>
|
||||||
|
{{ else }}
|
||||||
|
<li class="breadcrumb-item">{{ $title }}</li>
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
<li class="breadcrumb-item active" aria-current="page">{{ .Page.Title }}</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|