Compare commits
912 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3d082a51a3 | ||
![]() |
db6b6238c5 | ||
![]() |
6011e5637a | ||
![]() |
855bf85be6 | ||
![]() |
ec37884f7a | ||
![]() |
057720bca8 | ||
![]() |
e3d607bd25 | ||
![]() |
a9e3a5ecbb | ||
![]() |
f9a3edbf30 | ||
![]() |
c199aa0902 | ||
![]() |
dfafdbb8af | ||
![]() |
c4d8507638 | ||
![]() |
44d5cfa4de | ||
![]() |
5aa3cfb80f | ||
![]() |
22b83dbcf9 | ||
![]() |
0a88ae04b9 | ||
![]() |
bf068977a6 | ||
![]() |
5dfc99efa0 | ||
![]() |
84f09f0dcb | ||
![]() |
65d9635f61 | ||
![]() |
452bd92029 | ||
![]() |
87fc26e289 | ||
![]() |
aad1335523 | ||
![]() |
a216b26857 | ||
![]() |
2c121c6cde | ||
![]() |
2bc4ff0233 | ||
![]() |
a76c80ba17 | ||
![]() |
6580955770 | ||
![]() |
38d6c01983 | ||
![]() |
af2ba38a86 | ||
![]() |
0242d388b5 | ||
![]() |
5a78dda34f | ||
![]() |
8564e3e2fc | ||
![]() |
913c6ad158 | ||
![]() |
5e676ee5fa | ||
![]() |
f1b4e556c4 | ||
![]() |
9856b670e6 | ||
![]() |
88ff187891 | ||
![]() |
5c54291eb8 | ||
![]() |
2a862034aa | ||
![]() |
56e0713582 | ||
![]() |
23a3f7ef71 | ||
![]() |
3418ac8d1d | ||
![]() |
c645024474 | ||
![]() |
f35c66c0ae | ||
![]() |
f479764542 | ||
![]() |
ab7cc04821 | ||
![]() |
6dd208f671 | ||
![]() |
833e438a23 | ||
![]() |
9d829b6d94 | ||
![]() |
0f42fae2c4 | ||
![]() |
a2f7749aa2 | ||
![]() |
ba87ccd4a5 | ||
![]() |
1c68399313 | ||
![]() |
30714ef6da | ||
![]() |
1ef92a0928 | ||
![]() |
8331a6ce7c | ||
![]() |
fd34766ffb | ||
![]() |
78573f8e51 | ||
![]() |
4a0cc8bc88 | ||
![]() |
8fd6f2af4e | ||
![]() |
0191e14a69 | ||
![]() |
1f8fb26278 | ||
![]() |
50548237c6 | ||
![]() |
7f35cf45ef | ||
![]() |
528f84c8c6 | ||
![]() |
33ab75ed84 | ||
![]() |
3010136585 | ||
![]() |
676a28c322 | ||
![]() |
a04ec4d73e | ||
![]() |
fcc93788a9 | ||
![]() |
f949a785a1 | ||
![]() |
becba931bc | ||
![]() |
03e3c5b3ee | ||
![]() |
311aa3b957 | ||
![]() |
62db3eb9db | ||
![]() |
56ea9eec47 | ||
![]() |
b845e210b7 | ||
![]() |
e8bba05213 | ||
![]() |
74d0d625c6 | ||
![]() |
9d98a3568c | ||
![]() |
dc55571f7a | ||
![]() |
b7ab9d5690 | ||
![]() |
5d20be19a8 | ||
![]() |
ecae077e2d | ||
![]() |
132c316ff0 | ||
![]() |
a3b9081b4d | ||
![]() |
8a689a95de | ||
![]() |
9bd04a5b2a | ||
![]() |
8dc884f846 | ||
![]() |
4cb558440b | ||
![]() |
0d78918aa4 | ||
![]() |
ba7ab907ef | ||
![]() |
af557ac054 | ||
![]() |
9ada0eee80 | ||
![]() |
ae3e20b596 | ||
![]() |
c49e6f14c1 | ||
![]() |
b4f6b1aa3d | ||
![]() |
962549f2ae | ||
![]() |
28601323c4 | ||
![]() |
a11ee72174 | ||
![]() |
8e91440261 | ||
![]() |
19879c4ecc | ||
![]() |
810dfef311 | ||
![]() |
c42fcefa73 | ||
![]() |
a3c417e378 | ||
![]() |
2bee381906 | ||
![]() |
244a3f7496 | ||
![]() |
563b526cea | ||
![]() |
fa7fad67b5 | ||
![]() |
966906778d | ||
![]() |
135128a5f9 | ||
![]() |
25663974ce | ||
![]() |
af5643f98f | ||
![]() |
743126d9b9 | ||
![]() |
b0187e3a75 | ||
![]() |
c7613ab7a8 | ||
![]() |
2a6a119762 | ||
![]() |
b556f4f4ec | ||
![]() |
9fa95da778 | ||
![]() |
3a07b36447 | ||
![]() |
ca5ed02bf9 | ||
![]() |
d19321af56 | ||
![]() |
142e21d792 | ||
![]() |
4c00655584 | ||
![]() |
38a2b9ff72 | ||
![]() |
efe8837eb3 | ||
![]() |
130e95ace5 | ||
![]() |
e6e38ac7c3 | ||
![]() |
3c0a6079af | ||
![]() |
4ae09056d3 | ||
![]() |
c20f367894 | ||
![]() |
4e41b5d233 | ||
![]() |
b78e9bd154 | ||
![]() |
5caaeae073 | ||
![]() |
df99d74a30 | ||
![]() |
976c541b03 | ||
![]() |
853a2f0ddd | ||
![]() |
e7b6216e4e | ||
![]() |
5f3e3fca43 | ||
![]() |
3e2340a14a | ||
![]() |
52f9dc5016 | ||
![]() |
542bf1103e | ||
![]() |
04d1d24c7b | ||
![]() |
398028858e | ||
![]() |
8658d02264 | ||
![]() |
6adb066773 | ||
![]() |
b68a632b63 | ||
![]() |
20d9de6c0f | ||
![]() |
51a26c4be8 | ||
![]() |
ef136b33da | ||
![]() |
04262c00d2 | ||
![]() |
bc17718fb8 | ||
![]() |
bd277e420c | ||
![]() |
69e196f8c2 | ||
![]() |
6663d8de58 | ||
![]() |
99d457a091 | ||
![]() |
4b1a72d1c0 | ||
![]() |
02875e731f | ||
![]() |
50664248ca | ||
![]() |
b3491cdadb | ||
![]() |
fe822cccaf | ||
![]() |
c0bcb96275 | ||
![]() |
cb09aba813 | ||
![]() |
fac6581dc9 | ||
![]() |
3ef2392913 | ||
![]() |
8531bf988f | ||
![]() |
bb2d3e7eeb | ||
![]() |
7892bd6afe | ||
![]() |
733b8b6dc8 | ||
![]() |
b5fb0d3ea8 | ||
![]() |
31e3fdc534 | ||
![]() |
641f2ee1d1 | ||
![]() |
951f595d29 | ||
![]() |
cab4338b23 | ||
![]() |
0921b1467e | ||
![]() |
23a1f2fed9 | ||
![]() |
1acc1a5264 | ||
![]() |
3c60c2c512 | ||
![]() |
9d3ac01de2 | ||
![]() |
09973c5a23 | ||
![]() |
2ed01bb499 | ||
![]() |
bca302323a | ||
![]() |
ac0152640b | ||
![]() |
5e15eb5dae | ||
![]() |
c1515325a8 | ||
![]() |
6fbec8dbac | ||
![]() |
6e20600893 | ||
![]() |
de7fb8927f | ||
![]() |
c14e45ac49 | ||
![]() |
32fd291194 | ||
![]() |
b45d0155ea | ||
![]() |
0530b2ea1e | ||
![]() |
8678741f72 | ||
![]() |
8c4e11b99f | ||
![]() |
00818cb91f | ||
![]() |
b3469d277c | ||
![]() |
3627059227 | ||
![]() |
4f92886b21 | ||
![]() |
0c2f951b81 | ||
![]() |
300efb780c | ||
![]() |
42a4fc4618 | ||
![]() |
683ffff1b2 | ||
![]() |
7738c06b6c | ||
![]() |
9aca661574 | ||
![]() |
3d5440fa3d | ||
![]() |
4854d238b7 | ||
![]() |
898764eb12 | ||
![]() |
40e66bba8a | ||
![]() |
a543db250f | ||
![]() |
8d6b34716f | ||
![]() |
ea89e1c8b5 | ||
![]() |
fb6d47c33e | ||
![]() |
dc71f43faf | ||
![]() |
78df40873f | ||
![]() |
43f996acc3 | ||
![]() |
dd51fbd542 | ||
![]() |
49df936f3b | ||
![]() |
b6643f12dd | ||
![]() |
2de996242a | ||
![]() |
3b8611ebd0 | ||
![]() |
3274c7453e | ||
![]() |
ff622c8080 | ||
![]() |
455e77b3e9 | ||
![]() |
22c85f7997 | ||
![]() |
d8799fabb5 | ||
![]() |
8ae01a2ce1 | ||
![]() |
d9d3054f22 | ||
![]() |
0bf25f7acd | ||
![]() |
d5c228d43c | ||
![]() |
96886e20d7 | ||
![]() |
171259fb29 | ||
![]() |
a706936849 | ||
![]() |
f538f3b772 | ||
![]() |
a848fccec8 | ||
![]() |
69352dd60a | ||
![]() |
e1c8641d41 | ||
![]() |
deb8dfb3cb | ||
![]() |
0dcd3f02c9 | ||
![]() |
d3105436a3 | ||
![]() |
38c982f7f4 | ||
![]() |
9c19327e19 | ||
![]() |
a9f2d56dd6 | ||
![]() |
434e02e7f5 | ||
![]() |
7e44d71ecb | ||
![]() |
be8c6d539b | ||
![]() |
3db2b1f734 | ||
![]() |
6802524aac | ||
![]() |
71cdad17d3 | ||
![]() |
626b82a619 | ||
![]() |
fbb60a0622 | ||
![]() |
a0684a8a49 | ||
![]() |
55516602e5 | ||
![]() |
fcab852216 | ||
![]() |
cb714201bc | ||
![]() |
c8de62f46b | ||
![]() |
53ab00357e | ||
![]() |
0cc246a79a | ||
![]() |
21541b9f80 | ||
![]() |
e3d4339730 | ||
![]() |
710efd0caa | ||
![]() |
493ff64be0 | ||
![]() |
f2e35074c2 | ||
![]() |
7597710980 | ||
![]() |
c44340ef9e | ||
![]() |
8dfe0cb9d4 | ||
![]() |
fdb8287951 | ||
![]() |
f4f9b7c754 | ||
![]() |
4bb5ba728a | ||
![]() |
bdb8c43fb9 | ||
![]() |
63e51006ed | ||
![]() |
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 | ||
![]() |
0abf604d2a | ||
![]() |
ca51130286 | ||
![]() |
28e96deb73 | ||
![]() |
9173b6eaaa | ||
![]() |
492420d13f | ||
![]() |
d2ec492827 | ||
![]() |
d12cdc7a76 | ||
![]() |
a4f49ffb18 | ||
![]() |
6599912985 | ||
![]() |
b7ef39a61c | ||
![]() |
d4bf047b09 | ||
![]() |
9df3426f41 | ||
![]() |
d7f887c6f6 | ||
![]() |
25dfbb3ed3 | ||
![]() |
4e48065605 | ||
![]() |
929a86e6b7 | ||
![]() |
e0895d9751 | ||
![]() |
7a1925594b | ||
![]() |
913813c602 | ||
![]() |
4fb4b31635 | ||
![]() |
6aedfc9c6a | ||
![]() |
2cc9204d9d | ||
![]() |
76fe879066 | ||
![]() |
34b161d10f | ||
![]() |
5c0f47fdc8 | ||
![]() |
919b62adac | ||
![]() |
909ff6bc9e | ||
![]() |
9b053b876c | ||
![]() |
831568fde3 | ||
![]() |
54f06566ee | ||
![]() |
f52241f4fe | ||
![]() |
ea5ce16f3c | ||
![]() |
e1c23e003b | ||
![]() |
a018b2af25 | ||
![]() |
16a7cecdbe | ||
![]() |
091cc49b1d | ||
![]() |
5982b8132f | ||
![]() |
90d158d8c4 | ||
![]() |
a5b3a7b3a5 | ||
![]() |
feafd3c3a9 | ||
![]() |
3fe31f9655 | ||
![]() |
317302fd94 | ||
![]() |
7d03be11e6 | ||
![]() |
a8b834c71c | ||
![]() |
ca00426f0d | ||
![]() |
040441b7eb | ||
![]() |
edde8164d7 | ||
![]() |
7451687be5 | ||
![]() |
0d55ad9f24 | ||
![]() |
c225e86ef3 | ||
![]() |
cd5886be9e | ||
![]() |
a2e909e0b0 | ||
![]() |
a2c45081a3 | ||
![]() |
3d7c49db2e | ||
![]() |
d2ba6f827b | ||
![]() |
2137062559 | ||
![]() |
d08c23f668 | ||
![]() |
c04a0c1981 | ||
![]() |
c2484433e8 | ||
![]() |
c92af394eb | ||
![]() |
e82b4cce0c | ||
![]() |
ff5624951d | ||
![]() |
0d1aa334b3 | ||
![]() |
24979034a3 | ||
![]() |
d43a992efd | ||
![]() |
d913dbf00b | ||
![]() |
e3c3f8eb75 | ||
![]() |
4e6c437274 | ||
![]() |
3ae4c5ee97 | ||
![]() |
bce3d8ed83 | ||
![]() |
02f3b9cedc | ||
![]() |
0721243d82 | ||
![]() |
63fda8378e | ||
![]() |
0bd6257ef5 | ||
![]() |
cfec32ac11 | ||
![]() |
8f32d613d1 |
@@ -1,3 +1,6 @@
|
||||
assets/js/critical/color.js
|
||||
assets/js/analytics.js
|
||||
assets/js/flexsearch.js
|
||||
assets/js/sharing.js
|
||||
assets/js/vendor
|
||||
node_modules
|
||||
|
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.
|
||||
|
||||
**Environment (please complete the following information):**
|
||||
- Host OS: [e.g. macOS Ventura 13.0]
|
||||
- Node version: [e.g. node v18.10.0]
|
||||
- Hinode version: [e.g. v0.11.3]
|
||||
- Host OS: [e.g. macOS Ventura 13.3]
|
||||
- Node version: [e.g. node v18.15.0]
|
||||
- Hugo version: [e.g. hugo v0.109.0-47b12b83e636224e5e601813ff3e6790c191e371+extended darwin/amd64 BuildDate=2022-12-23T10:38:11Z VendorInfo=gohugoio]
|
||||
- Browser: [e.g. Google Chrome Version 108.0.5359.124 (Official Build) (arm64)]
|
||||
|
||||
|
1
.github/dependabot.yml
vendored
@@ -7,3 +7,4 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
versioning-strategy: increase
|
||||
|
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}}
|
2
.github/workflows/build.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||
node-version: [14.x, 16.x, 18.x]
|
||||
node-version: [16.x, 18.x, 20.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
2
.github/workflows/lint.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [14.x, 16.x, 18.x]
|
||||
node-version: [16.x, 18.x, 20.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
|
37
.github/workflows/update.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Update Hugo Dependencies
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 3 * * *' # run daily at 03:00 AM
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
update-dep:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "lts/*"
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Update Hugo module dependencies
|
||||
run: npm run mod:update
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
token: ${{ secrets.HUGO_MOD_PR }}
|
||||
commit-message: 'fix: update Hugo module dependencies'
|
||||
branch: hugo-mod-dependencies
|
||||
delete-branch: true
|
||||
title: 'Update Hugo module dependencies'
|
||||
body: >
|
||||
This PR is auto-generated by
|
||||
[create-pull-request](https://github.com/peter-evans/create-pull-request).
|
||||
labels: dependencies
|
4
.gitignore
vendored
@@ -1,6 +1,8 @@
|
||||
/_vendor
|
||||
/public
|
||||
resources/
|
||||
node_modules/
|
||||
|
||||
.DS_store
|
||||
.hugo_build.lock
|
||||
.hugo_build.lock
|
||||
hugo_stats.json
|
@@ -1,5 +1,8 @@
|
||||
assets/scss/common/_variables.scss
|
||||
assets/scss/components/_syntax.scss
|
||||
assets/scss/components/_syntax-dark.scss
|
||||
assets/scss/components/_syntax-light.scss
|
||||
assets/scss/hotfix
|
||||
assets/scss/vendor
|
||||
assets/scss/theme/fonts.scss
|
||||
assets/scss/app.scss
|
||||
node_modules
|
||||
|
@@ -2,10 +2,7 @@
|
||||
"extends": "stylelint-config-standard-scss",
|
||||
"rules": {
|
||||
"no-empty-source": null,
|
||||
"indentation": 4,
|
||||
"string-quotes": "double",
|
||||
"scss/comment-no-empty": null,
|
||||
"max-line-length": null,
|
||||
"scss/at-extend-no-missing-placeholder": null,
|
||||
"scss/dollar-variable-colon-space-after": null,
|
||||
"scss/dollar-variable-empty-line-before": null,
|
||||
|
111
README.md
@@ -9,25 +9,31 @@
|
||||
<!-- Badges -->
|
||||
<p align="center">
|
||||
<a href="https://gohugo.io" alt="Hugo website">
|
||||
<img src="https://img.shields.io/badge/generator-hugo-brightgreen" />
|
||||
<img src="https://img.shields.io/badge/generator-hugo-brightgreen">
|
||||
</a>
|
||||
<a href="https://gethinode.com" alt="Hinode theme">
|
||||
<img src="https://img.shields.io/badge/theme-hinode-blue">
|
||||
</a>
|
||||
<a href="https://www.npmjs.com/package/%40gethinode/hinode" alt="npm package">
|
||||
<img src="https://img.shields.io/npm/v/%40gethinode/hinode">
|
||||
</a>
|
||||
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status">
|
||||
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" />
|
||||
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67">
|
||||
</a>
|
||||
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
|
||||
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" />
|
||||
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb">
|
||||
</a>
|
||||
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit">
|
||||
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" />
|
||||
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg">
|
||||
</a>
|
||||
<a href="https://github.com/gethinode/hinode/issues" alt="Issues">
|
||||
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg" />
|
||||
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg">
|
||||
</a>
|
||||
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls">
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" />
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg">
|
||||
</a>
|
||||
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License">
|
||||
<img src="https://img.shields.io/github/license/gethinode/hinode" />
|
||||
<img src="https://img.shields.io/github/license/gethinode/hinode">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -50,21 +56,21 @@
|
||||
- [PageSpeed Insights][pagespeed]
|
||||
- [Mozilla Observatory][observatory]
|
||||
|
||||
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme uses [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
||||
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme supports [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
||||
|
||||
Additional features include:
|
||||
|
||||
- Comments
|
||||
- Social links
|
||||
- Blog pagination
|
||||
- Code highlighting
|
||||
- Command prompt
|
||||
- Color customization
|
||||
- Language switcher
|
||||
- Flexible configuration of Hugo modules
|
||||
- Switching between light mode and dark mode
|
||||
- Support for multiple languages
|
||||
- Reusable Bootstrap components through configurable shortcodes and partials
|
||||
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
|
||||
- Integrated sidebar navigation for content-heavy sections, such as documentation pages
|
||||
- Reponsive image handling for multiple screen sizes and resolutions
|
||||
- Optimized search results, scoring 100 points for SEO on [PageSpeed Insights][pagespeed]
|
||||
- Secure by default, scoring A+ on [Mozilla Observatory test][observatory]
|
||||
|
||||
<!-- TODO: add tutorial deep-link
|
||||
Detailed background information is available on the author's [personal blog][blog].
|
||||
-->
|
||||
Detailed information about Hinode is available on the [official website][website].
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -74,56 +80,39 @@ Hinode requires Git, Node.js and npm for local development and testing. Download
|
||||
|
||||
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. As such, it is less applicable if you plan to customize a lot. Vice versa, the main theme allows for heavy customization, but is not synchronized with the latest available Hinode theme automatically.
|
||||
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:
|
||||
|
||||
Not quite sure? Use the Hinode child theme.
|
||||
```bash
|
||||
git clone https://github.com/gethinode/template.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
#### Hinode child theme
|
||||
Use the main theme if you intend to customize the base code:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/gethinode/child.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
```bash
|
||||
git clone https://github.com/gethinode/hinode.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
#### Hinode main theme
|
||||
1. Install dependencies
|
||||
|
||||
```bash
|
||||
git clone https://github.com/gethinode/hinode.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. Install dependencies
|
||||
1. Start development server
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 3. Start development server
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The main site configuration is available in `./config/_default`. Some remarks:
|
||||
|
||||
- **Menu items** - `menus/menus.en.toml` contains language-specific items for the navigation bar and social media links for the home page's footer.
|
||||
- **Content** - Ensure the `mainSections` in `config.toml` is synchronized with the `content` folder, default values are `["blog", "projects"]`.
|
||||
- **Theme style** - Update `primary` and `themeOpacity` within the `[style]` section of `params.toml` to update the site's primary color and opacity. Bootstrap's other key colors can be changed too. You can use the [WCAG Color Contrast Checker][contrast_checker] to validate the contrast ratio of your color to improve accessibility. Additionally, set `themeFont` and `themeFontPath` to override the default font.
|
||||
- **Comments** - Comments are powered by [utterances][utterances], a lightweight comments widget built on GitHub issues. Update the `repo` of the `[comments]` section of `params.toml`.
|
||||
- **Security policy** - The theme uses rather strict security policies by default. Be sure to include references to external sources in the header configuration to avoid broken links. The settings of the local development server are defined in `server.toml`. Similar settings are defined in the `netlify.toml` file provided in the repository's root when deploying to [Netlify][netlify].
|
||||
See the [official documentation][getstarted] on how to configure your site.
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Clone the repository and create a new branch
|
||||
|
||||
```console
|
||||
git checkout https://github.com/gethinode/hinode.git -b name_for_new_branch
|
||||
```
|
||||
|
||||
2. Make and test the changes
|
||||
3. Submit a Pull Request with a comprehensive description of the changes
|
||||
See the [official documentation][contribute] on how to contribute to the open-source development of Hinode.
|
||||
|
||||
## Credits
|
||||
|
||||
@@ -134,17 +123,16 @@ Hinode is inspired by the following themes:
|
||||
|
||||
## 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
|
||||
|
||||
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 -->
|
||||
[blist]: https://github.com/apvarun/blist-hugo-theme
|
||||
[bootstrap]: https://getbootstrap.com
|
||||
[cc-by-nc-4.0]: https://creativecommons.org/licenses/by-nc/4.0/
|
||||
[contrast_checker]: https://accessibleweb.com/color-contrast-checker/
|
||||
[doks]: https://github.com/h-enk/doks
|
||||
[flexsearch]: https://github.com/nextapps-de/flexsearch
|
||||
[git_download]: https://git-scm.com
|
||||
@@ -157,11 +145,10 @@ The `hinode` and `child` codebase is released under the [MIT license][license].
|
||||
[utterances]: https://utteranc.es
|
||||
|
||||
<!-- MARKDOWN MAINTAINED LINKS -->
|
||||
<!-- TODO: add blog link
|
||||
[blog]: https://markdumay.com
|
||||
[blog]: https://github.com/markdumay
|
||||
-->
|
||||
[contribute]: https://gethinode.com/contribute
|
||||
[getstarted]: https://gethinode.com/docs
|
||||
[demo]: https://demo.gethinode.com/
|
||||
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
|
||||
[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/
|
||||
|
3
assets/icons/accordion-button-active-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_active_color_dark }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 269 B |
3
assets/icons/accordion-button-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_color_dark }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 262 B |
3
assets/icons/btn-toggle-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 320 512' fill='{{ .btn_toggle_color_dark }}'>
|
||||
<path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 314 B |
@@ -1,3 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }} '>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }}'>
|
||||
<path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 239 B |
3
assets/icons/form-select-indicator-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
|
||||
<path fill='none' stroke='{{ .form_select_indicator_color_dark }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/>
|
||||
</svg>
|
After Width: | Height: | Size: 221 B |
3
assets/icons/form-switch-bg-image-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='3' fill='{{ .form_switch_color_dark }}' />
|
||||
</svg>
|
After Width: | Height: | Size: 125 B |
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 |
BIN
assets/img/paper.jpg
Normal file
After Width: | Height: | Size: 930 KiB |
BIN
assets/img/puzzle.jpg
Normal file
After Width: | Height: | Size: 152 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
|
||||
const button = document.createElement('button')
|
||||
button.className = 'clipboard-button'
|
||||
button.setAttribute('data-toast-target', 'toast-copied-code-message')
|
||||
button.type = 'button'
|
||||
button.innerHTML = svgCopy
|
||||
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.innerHTML = svgCheck
|
||||
@@ -36,3 +38,10 @@ const addCopyButtons = (clipboard) => {
|
||||
if (navigator && navigator.clipboard) {
|
||||
addCopyButtons(navigator.clipboard)
|
||||
}
|
||||
|
||||
document.querySelectorAll('[data-clipboard]').forEach(trigger => {
|
||||
const text = trigger.getAttribute('data-clipboard')
|
||||
trigger.addEventListener('click', () => {
|
||||
navigator.clipboard.writeText(text)
|
||||
})
|
||||
})
|
||||
|
74
assets/js/critical/color.js
Normal file
@@ -0,0 +1,74 @@
|
||||
{{- if site.Params.main.enableDarkMode -}}
|
||||
|
||||
/*!
|
||||
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
||||
*/
|
||||
|
||||
(() => {
|
||||
'use strict'
|
||||
|
||||
const storedTheme = localStorage.getItem('theme')
|
||||
|
||||
const getPreferredTheme = () => {
|
||||
if (storedTheme) {
|
||||
return storedTheme
|
||||
}
|
||||
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||
}
|
||||
|
||||
const setTheme = function (theme) {
|
||||
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.documentElement.setAttribute('data-bs-theme', 'dark')
|
||||
} else {
|
||||
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||
}
|
||||
}
|
||||
|
||||
setTheme(getPreferredTheme())
|
||||
|
||||
const showActiveTheme = theme => {
|
||||
const activeSelectors = document.querySelectorAll('.theme-icon-active')
|
||||
const activeButtons = document.querySelectorAll(`[data-bs-theme-value="${theme}"]`)
|
||||
if (activeButtons.length > 0) {
|
||||
const activeIcon = activeButtons[0].querySelector('span')
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||||
element.classList.remove('active')
|
||||
})
|
||||
|
||||
for (let i = 0; i < activeSelectors.length; ++i) {
|
||||
activeSelectors[i].className = activeIcon.className
|
||||
activeSelectors[i].className = activeSelectors[i].className.replace('theme-icon', 'theme-icon-active')
|
||||
}
|
||||
|
||||
for (let i = 0; i < activeButtons.length; ++i) {
|
||||
activeButtons[i].classList.add('active')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||
if (storedTheme !== 'light' || storedTheme !== 'dark') {
|
||||
setTheme(getPreferredTheme())
|
||||
}
|
||||
})
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
showActiveTheme(getPreferredTheme())
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]')
|
||||
.forEach(toggle => {
|
||||
toggle.addEventListener('click', () => {
|
||||
const theme = toggle.getAttribute('data-bs-theme-value')
|
||||
localStorage.setItem('theme', theme)
|
||||
setTheme(theme)
|
||||
showActiveTheme(theme)
|
||||
})
|
||||
})
|
||||
})
|
||||
})()
|
||||
|
||||
{{- end -}}
|
@@ -1,161 +0,0 @@
|
||||
/*
|
||||
Source:
|
||||
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
||||
*/
|
||||
|
||||
var suggestions = document.getElementById('suggestions');
|
||||
var search = document.getElementById('search');
|
||||
|
||||
if (search !== null) {
|
||||
document.addEventListener('keydown', inputFocus);
|
||||
}
|
||||
|
||||
function inputFocus(e) {
|
||||
if (e.ctrlKey && e.key === '/' ) {
|
||||
e.preventDefault();
|
||||
search.focus();
|
||||
}
|
||||
if (e.key === 'Escape' ) {
|
||||
search.blur();
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', function(event) {
|
||||
|
||||
var isClickInsideElement = suggestions.contains(event.target);
|
||||
|
||||
if (!isClickInsideElement) {
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||
*/
|
||||
|
||||
document.addEventListener('keydown',suggestionFocus);
|
||||
|
||||
function suggestionFocus(e) {
|
||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||
if (suggestionsHidden) return;
|
||||
|
||||
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
||||
if (focusableSuggestions.length === 0) return;
|
||||
|
||||
const index = focusableSuggestions.indexOf(document.activeElement);
|
||||
|
||||
if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
const nextIndex = index > 0 ? index - 1 : 0;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
else if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
var index = new FlexSearch.Document({
|
||||
tokenize: "forward",
|
||||
cache: 100,
|
||||
document: {
|
||||
id: "id",
|
||||
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;
|
||||
var searchQuery = this.value;
|
||||
// filter the results for the currently tagged language
|
||||
const lang = document.documentElement.lang;
|
||||
var results = index.search(searchQuery, { index: ['title', 'description', 'content'], limit: maxResult, tag: lang, enrich: true });
|
||||
|
||||
// flatten results since index.search() returns results for each indexed field
|
||||
const flatResults = new Map(); // keyed by href to dedupe results
|
||||
for (const result of results.flatMap(r => r.result)) {
|
||||
if (flatResults.has(result.doc.href)) continue;
|
||||
flatResults.set(result.doc.href, result.doc);
|
||||
}
|
||||
|
||||
suggestions.innerHTML = "";
|
||||
suggestions.classList.remove('d-none');
|
||||
|
||||
// inform user that no results were found
|
||||
if (flatResults.size === 0 && searchQuery) {
|
||||
const noResultsMessage = document.createElement('div')
|
||||
noResultsMessage.innerHTML = `{{ T "ui_no_results" }} "<strong>${searchQuery}</strong>"`
|
||||
noResultsMessage.classList.add("suggestion__no-results");
|
||||
suggestions.appendChild(noResultsMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
// construct a list of suggestions
|
||||
for(const [href, doc] of flatResults) {
|
||||
const entry = document.createElement('div');
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
const a = document.createElement('a');
|
||||
a.href = href;
|
||||
entry.appendChild(a);
|
||||
|
||||
const title = document.createElement('span');
|
||||
title.classList.add('text-start');
|
||||
title.textContent = doc.title;
|
||||
title.classList.add("suggestion__title");
|
||||
a.appendChild(title);
|
||||
|
||||
const description = document.createElement('span');
|
||||
description.textContent = doc.description;
|
||||
description.classList.add("suggestion__description");
|
||||
a.appendChild(description);
|
||||
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
if(suggestions.childElementCount == maxResult) break;
|
||||
}
|
||||
}
|
||||
}());
|
||||
|
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')
|
||||
})
|
||||
}
|
26
assets/js/navbar.js
Normal file
@@ -0,0 +1,26 @@
|
||||
const navbar = document.querySelector('.navbar')
|
||||
const toggler = document.getElementById('main-nav-toggler')
|
||||
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||
|
||||
if (navbar !== null && toggler !== null) {
|
||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||
window.onscroll = () => {
|
||||
if (window.scrollY > 75) {
|
||||
navbar.classList.add('nav-active')
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
}
|
||||
}
|
||||
|
||||
// set the navbar background color to opaque when expanded
|
||||
toggler.onclick = () => {
|
||||
navbar.classList.toggle('navbar-expanded')
|
||||
}
|
||||
|
||||
// invoke the navbar toggler for each mode switcher to collapse the main menu afterwards
|
||||
for (let i = 0; i < modeSelectors.length; ++i) {
|
||||
modeSelectors[i].onclick = () => {
|
||||
toggler.click()
|
||||
}
|
||||
}
|
||||
}
|
0
assets/js/optional/.gitkeep
Normal file
36
assets/js/sharing.js
Normal file
@@ -0,0 +1,36 @@
|
||||
{{- if site.Params.sharing.webshare -}}
|
||||
|
||||
// Adapted from: https://dev.to/j471n/how-to-share-anything-from-your-website-by-web-share-api-1h5g
|
||||
|
||||
// function for Web Share API
|
||||
function webShareAPI (title, description, link) {
|
||||
navigator
|
||||
.share({
|
||||
title,
|
||||
text: description,
|
||||
url: link
|
||||
})
|
||||
.then(() => console.log('Successful share'))
|
||||
.catch((error) => console.log('Error sharing', error))
|
||||
}
|
||||
|
||||
const shareBtn = document.getElementById('btn-webshare')
|
||||
|
||||
if (shareBtn !== null) {
|
||||
if (navigator.share) {
|
||||
const title = shareBtn.getAttribute('data-sharing-title')
|
||||
const description = shareBtn.getAttribute('data-sharing-description')
|
||||
const url = shareBtn.getAttribute('data-sharing-url')
|
||||
|
||||
// show button if it supports webShareAPI
|
||||
shareBtn.style.display = 'block'
|
||||
shareBtn.addEventListener('click', () =>
|
||||
webShareAPI(title, description, url)
|
||||
)
|
||||
} else {
|
||||
// hide button if host does not support Web Share API
|
||||
shareBtn.style.display = 'none'
|
||||
}
|
||||
}
|
||||
|
||||
{{- end -}}
|
@@ -1,10 +1,24 @@
|
||||
// Bootstrap toast example: https://getbootstrap.com/docs/5.2/components/toasts/
|
||||
const toastTrigger = document.getElementById('toastButton')
|
||||
const toastLiveExample = document.getElementById('toastMessage')
|
||||
if (toastTrigger) {
|
||||
toastTrigger.addEventListener('click', () => {
|
||||
// eslint-disable-next-line no-undef
|
||||
const toast = new bootstrap.Toast(toastLiveExample)
|
||||
toast.show()
|
||||
// Script to move all embedded toast messages into a container with id 'toast-container'. The container ensures multiple
|
||||
// toast messages are stacked properly. The script targets all elements specified by a 'data-toast-target' and ensures
|
||||
// the click event of the origin is linked as well.
|
||||
|
||||
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
|
||||
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()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@@ -1,82 +1,17 @@
|
||||
// Define template variables
|
||||
// TODO: optimize, see https://discourse.gohugo.io/t/initialize-sass-variables-from-hugo-templates/42053
|
||||
// requires installation of dart-sass, no cross-platform installation available yet
|
||||
$themeColor: {{ site.Params.style.themeColor | default "#007bff" }};
|
||||
$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 }};
|
||||
@import "hugo:vars";
|
||||
|
||||
// Include default variable overrides
|
||||
@import "common/variables.scss";
|
||||
@import "common/icons.scss";
|
||||
|
||||
// Import Bootstrap banner and functions
|
||||
@import "bootstrap/scss/mixins/banner";
|
||||
@include bsBanner("");
|
||||
@import "bootstrap/scss/functions";
|
||||
|
||||
// Import Bootstrap configuration
|
||||
@import "bootstrap/scss/variables";
|
||||
@import "bootstrap/scss/maps";
|
||||
@import "bootstrap/scss/mixins";
|
||||
@import "bootstrap/scss/utilities";
|
||||
|
||||
// Import Bootstrap layout & components
|
||||
@import "bootstrap/scss/root";
|
||||
@import "bootstrap/scss/reboot";
|
||||
@import "bootstrap/scss/type";
|
||||
@import "bootstrap/scss/images";
|
||||
@import "bootstrap/scss/containers";
|
||||
@import "bootstrap/scss/grid";
|
||||
@import "bootstrap/scss/tables";
|
||||
@import "bootstrap/scss/forms";
|
||||
@import "bootstrap/scss/buttons";
|
||||
@import "bootstrap/scss/transitions";
|
||||
@import "bootstrap/scss/dropdown";
|
||||
@import "bootstrap/scss/button-group";
|
||||
@import "bootstrap/scss/nav";
|
||||
@import "bootstrap/scss/navbar";
|
||||
@import "bootstrap/scss/card";
|
||||
@import "bootstrap/scss/accordion";
|
||||
@import "bootstrap/scss/breadcrumb";
|
||||
@import "bootstrap/scss/pagination";
|
||||
@import "bootstrap/scss/badge";
|
||||
@import "bootstrap/scss/alert";
|
||||
@import "bootstrap/scss/progress";
|
||||
@import "bootstrap/scss/list-group";
|
||||
@import "bootstrap/scss/close";
|
||||
@import "bootstrap/scss/toasts";
|
||||
@import "bootstrap/scss/modal";
|
||||
@import "bootstrap/scss/tooltip";
|
||||
@import "bootstrap/scss/popover";
|
||||
@import "bootstrap/scss/carousel";
|
||||
@import "bootstrap/scss/spinners";
|
||||
@import "bootstrap/scss/offcanvas";
|
||||
@import "bootstrap/scss/placeholders";
|
||||
|
||||
// Import Bootstrap helpers
|
||||
@import "bootstrap/scss/helpers";
|
||||
|
||||
// Import Bootstrap utilities
|
||||
@import "bootstrap/scss/utilities/api";
|
||||
|
||||
// Import Font Awesome
|
||||
// scss-docs-start awesome
|
||||
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
||||
@import "@fortawesome/fontawesome-free/scss/regular";
|
||||
@import "@fortawesome/fontawesome-free/scss/solid";
|
||||
@import "@fortawesome/fontawesome-free/scss/brands";
|
||||
// scss-docs-end awesome
|
||||
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
||||
@import "bootstrap.scss";
|
||||
|
||||
// Import Hinode theme styles
|
||||
@import "components/alert.scss";
|
||||
@import "components/blockquote.scss";
|
||||
@import "components/breadcrumb.scss";
|
||||
@import "components/buttons.scss";
|
||||
@import "components/card.scss";
|
||||
@import "components/carousel.scss";
|
||||
@@ -85,17 +20,33 @@ $navbar-offset: {{ if site.Params.navigation.fixed }}{{ site.Par
|
||||
@import "components/comments.scss";
|
||||
@import "components/navbar.scss";
|
||||
@import "components/img.scss";
|
||||
@import "components/pagination.scss";
|
||||
@import "components/persona.scss";
|
||||
@import "components/popover.scss";
|
||||
@import "components/search.scss";
|
||||
@import "components/sidebar.scss";
|
||||
@import "components/syntax.scss";
|
||||
@import "components/timeline.scss";
|
||||
@import "components/toc.scss";
|
||||
@import "components/vimeo.scss";
|
||||
@import "common/animation.scss";
|
||||
@import "common/styles.scss";
|
||||
@import "layouts/reboot.scss";
|
||||
@import "layouts/type.scss";
|
||||
@import "common/export.scss";
|
||||
@import "helpers/colored-links.scss";
|
||||
@import "helpers/display.scss";
|
||||
|
||||
// TODO: include fonts with following statement in Dart Sass
|
||||
// @if $import-fonts {
|
||||
// @include meta.load-css(theme/fonts);
|
||||
// }
|
||||
|
||||
{{ if (not (hasPrefix (lower site.Params.style.themeFontPath) "http")) }}
|
||||
@import "theme/fonts.scss";
|
||||
{{ end }}
|
||||
|
||||
// Import theme placeholder
|
||||
@import "theme.scss";
|
||||
@import "theme/theme.scss";
|
||||
|
||||
// Import Bootstrap utilities API (mounted by core Bootstrap module)
|
||||
@import "modules/bootstrap/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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,20 +3,26 @@
|
||||
// scss-docs-start export
|
||||
:hinode-theme {
|
||||
--accordion-icon-active-color: #{$accordion-icon-active-color};
|
||||
--accordion-icon-active-color-dark: #{$gray-300};
|
||||
--accordion-icon-color: #{$accordion-icon-color};
|
||||
--accordion-icon-color-dark: #{$gray-600};
|
||||
--btn-close-color: #{$btn-close-color};
|
||||
--btn-toggle-color: #{$btn-toggle-color};
|
||||
--btn-toggle-color-dark: #{$gray-600};
|
||||
--carousel-control-color: #{$carousel-control-color};
|
||||
--form-check-input-checked-color: #{$form-check-input-checked-color};
|
||||
--form-check-input-indeterminate-color: #{$form-check-input-indeterminate-color};
|
||||
--form-feedback-icon-invalid-color: #{$form-feedback-icon-invalid-color};
|
||||
--form-feedback-icon-valid-color: #{$form-feedback-icon-valid-color};
|
||||
--form-select-indicator-color: #{$form-select-indicator-color};
|
||||
--form-select-indicator-color-dark: #{$form-select-indicator-color-dark};
|
||||
--form-switch-checked-color: #{$form-switch-checked-color};
|
||||
--form-switch-color: #{$form-switch-color};
|
||||
--form-switch-color-dark: #{$form-switch-color-dark};
|
||||
--form-switch-focus-color: #{$form-switch-focus-color};
|
||||
--navbar-dark-color: #{$navbar-dark-color};
|
||||
--navbar-light-icon-color: rgba($body-color, 0.75); // TODO: See https://github.com/twbs/bootstrap/pull/37720
|
||||
}
|
||||
|
||||
// scss-docs-end export
|
||||
// stylelint-enable selector-pseudo-class-no-unknown
|
||||
|
@@ -1,20 +1,25 @@
|
||||
// scss-docs-start icons
|
||||
$form-check-input-checked-bg-image: url("icons/form-check-input-checked-bg-image.svg") !default;
|
||||
$form-check-radio-checked-bg-image: url("icons/form-check-radio-checked-bg-image.svg") !default;
|
||||
$form-check-input-indeterminate-bg-image: url("icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||
$form-switch-bg-image: url("icons/form-switch-bg-image.svg") !default;
|
||||
$form-switch-focus-bg-image: url("icons/form-switch-focus-bg-image.svg") !default;
|
||||
$form-switch-checked-bg-image: url("icons/form-switch-checked-bg-image.svg") !default;
|
||||
$form-select-indicator: url("icons/form-select-indicator.svg") !default;
|
||||
$form-feedback-icon-valid: url("icons/form-feedback-icon-valid.svg") !default;
|
||||
$form-feedback-icon-invalid: url("icons/form-feedback-icon-invalid.svg") !default;
|
||||
$navbar-light-toggler-icon-bg: url("icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||
$navbar-dark-toggler-icon-bg: url("icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||
$accordion-button-icon: url("icons/accordion-button-icon.svg") !default;
|
||||
$accordion-button-active-icon: url("icons/accordion-button-active-icon.svg") !default;
|
||||
$carousel-control-prev-icon-bg: url("icons/carousel-control-prev-icon-bg.svg") !default;
|
||||
$carousel-control-next-icon-bg: url("icons/carousel-control-next-icon-bg.svg") !default;
|
||||
$btn-close-bg: url("icons/btn-close-bg.svg") !default;
|
||||
$btn-toggle: url("icons/btn-toggle.svg") !default;
|
||||
$form-check-input-checked-bg-image: url("/icons/form-check-input-checked-bg-image.svg") !default;
|
||||
$form-check-radio-checked-bg-image: url("/icons/form-check-radio-checked-bg-image.svg") !default;
|
||||
$form-check-input-indeterminate-bg-image: url("/icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||
$form-switch-bg-image: url("/icons/form-switch-bg-image.svg") !default;
|
||||
$form-switch-bg-image-dark: url("/icons/form-switch-bg-image-dark.svg") !default;
|
||||
$form-switch-focus-bg-image: url("/icons/form-switch-focus-bg-image.svg") !default;
|
||||
$form-switch-checked-bg-image: url("/icons/form-switch-checked-bg-image.svg") !default;
|
||||
$form-select-indicator: url("/icons/form-select-indicator.svg") !default;
|
||||
$form-select-indicator-dark: url("/icons/form-select-indicator-dark.svg") !default;
|
||||
$form-feedback-icon-valid: url("/icons/form-feedback-icon-valid.svg") !default;
|
||||
$form-feedback-icon-invalid: url("/icons/form-feedback-icon-invalid.svg") !default;
|
||||
$navbar-light-toggler-icon-bg: url("/icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||
$navbar-dark-toggler-icon-bg: url("/icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||
$accordion-button-icon: url("/icons/accordion-button-icon.svg") !default;
|
||||
$accordion-button-icon-dark: url("/icons/accordion-button-icon-dark.svg") !default;
|
||||
$accordion-button-active-icon: url("/icons/accordion-button-active-icon.svg") !default;
|
||||
$accordion-button-active-icon-dark: url("/icons/accordion-button-active-icon-dark.svg") !default;
|
||||
$carousel-control-prev-icon-bg: url("/icons/carousel-control-prev-icon-bg.svg") !default;
|
||||
$carousel-control-next-icon-bg: url("/icons/carousel-control-next-icon-bg.svg") !default;
|
||||
$btn-close-bg: url("/icons/btn-close-bg.svg") !default;
|
||||
$btn-toggle: url("/icons/btn-toggle.svg") !default;
|
||||
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
|
||||
|
||||
// scss-docs-end icons
|
||||
|
@@ -18,3 +18,132 @@ a:active {
|
||||
.tickmark li::marker {
|
||||
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
|
||||
$enable-negative-margins: true;
|
||||
$enable-important-utilities: true !default;
|
||||
|
||||
// Font awesome variables overrides for theme
|
||||
$fa-font-path: "../fonts";
|
||||
@@ -8,7 +9,7 @@ $fa-font-path: "../fonts";
|
||||
$navbar-toggler-focus-width: 0 !default;
|
||||
|
||||
// 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;
|
||||
$font-weight-lighter: lighter !default;
|
||||
$font-weight-light: 200 !default;
|
||||
@@ -17,9 +18,13 @@ $font-weight-bold: 600 !default;
|
||||
$font-weight-bolder: bolder !default;
|
||||
|
||||
strong {
|
||||
font-weight: 600 !important;
|
||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
// scss-docs-end font
|
||||
|
||||
$black: #000 !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
|
||||
$carousel-dark-indicator-active-bg: #ffffff !default;
|
||||
$carousel-dark-caption-color: #ffffff !default;
|
||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||
|
3
assets/scss/components/_alert.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
.alert-no-decoration {
|
||||
--bs-alert-border-radius: none;
|
||||
}
|
6
assets/scss/components/_breadcrumb.scss
Normal file
@@ -0,0 +1,6 @@
|
||||
// scss-docs-start breadcrumb
|
||||
.breadcrumb {
|
||||
padding-top: 0.3 * $navbar-offset;
|
||||
}
|
||||
|
||||
// scss-docs-end breadcrumb
|
@@ -4,5 +4,24 @@
|
||||
.btn-primary:active,
|
||||
.btn-primary.active,
|
||||
.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);
|
||||
}
|
||||
|
@@ -6,16 +6,8 @@
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.card-img-wrap::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
opacity: 0;
|
||||
transition: opacity 0.25s;
|
||||
.card-zoom {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.card-img-wrap img {
|
||||
@@ -23,11 +15,21 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card-img-wrap:hover img {
|
||||
transform: scale(1.1);
|
||||
.card-zoom::after .card-img-wrap img {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -40,3 +42,32 @@
|
||||
transform: scale(1.01);
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
|
||||
// stylelint-disable annotation-no-unknown
|
||||
.card-body-link {
|
||||
color: $body-color if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.card-body-link {
|
||||
color: $gray-500 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-zoom card-body-link,
|
||||
.card-body-link {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
||||
// make tag-link clickable on top of the stretched-link.
|
||||
.card .tag-link {
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
}
|
||||
|
@@ -1,16 +1,35 @@
|
||||
// stylelint-disable annotation-no-unknown
|
||||
|
||||
// Source: https://jsfiddle.net/njhgr40m/
|
||||
|
||||
.navbar {
|
||||
transition: 0.5s ease-in-out;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.nav-active, .navbar-expanded {
|
||||
background-color: var(--bs-body-bg);
|
||||
}
|
||||
|
||||
.navbar-expanded {
|
||||
box-shadow: $box-shadow-sm;
|
||||
}
|
||||
|
||||
/* Remove border from toggler */
|
||||
.navbar-toggler {
|
||||
border: 0 !important;
|
||||
border: 0 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.navbar-toggler:focus,
|
||||
.navbar-toggler:active,
|
||||
.navbar-toggler-icon:focus {
|
||||
outline: none !important;
|
||||
box-shadow: none !important;
|
||||
border: 0 !important;
|
||||
outline: none if($enable-important-utilities, !important, null);
|
||||
box-shadow: none if($enable-important-utilities, !important, null);
|
||||
border: 0 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.fw-30 {
|
||||
width: 30px !important;
|
||||
}
|
||||
|
||||
/* Lines of the Toggler */
|
||||
@@ -65,3 +84,17 @@
|
||||
.navbar-toggler.collapsed .toggler-icon {
|
||||
background-color: #777;
|
||||
}
|
||||
|
||||
.emphasis {
|
||||
background-color: $black if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.emphasis {
|
||||
background-color: $white if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
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
|
||||
}
|
@@ -1,118 +0,0 @@
|
||||
// Adapted from https://github.com/h-enk/doks
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.search {
|
||||
max-width: 20rem;
|
||||
margin-top: 0.125rem;
|
||||
margin-bottom: 0.125rem;
|
||||
}
|
||||
}
|
||||
|
||||
.form-control.is-search {
|
||||
padding-right: 4rem;
|
||||
border: 1px solid transparent;
|
||||
background: $gray-100;
|
||||
}
|
||||
|
||||
.form-control.is-search:focus {
|
||||
border: 1px solid $primary;
|
||||
}
|
||||
|
||||
.search::after {
|
||||
position: absolute;
|
||||
top: 0.4625rem;
|
||||
right: 0.5375rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 1.5rem;
|
||||
padding-right: 0.3125rem;
|
||||
padding-left: 0.3125rem;
|
||||
font-size: $font-size-base * 0.75;
|
||||
color: $gray-700;
|
||||
content: "Ctrl + /";
|
||||
border: 1px solid $gray-300;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.navbar-form {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#suggestions {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
margin-top: 0.5rem;
|
||||
width: calc(100vw - 3rem);
|
||||
z-index: $zindex-dropdown;
|
||||
}
|
||||
|
||||
#suggestions a,
|
||||
.suggestion__no-results {
|
||||
padding: 0.75rem;
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
|
||||
#suggestions a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#suggestions a:focus {
|
||||
background: $gray-100;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
#suggestions div:not(:first-child) {
|
||||
border-top: 1px dashed $gray-200;
|
||||
}
|
||||
|
||||
#suggestions div:first-child {
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
#suggestions div:last-child {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
#suggestions a:hover {
|
||||
background: $gray-100;
|
||||
}
|
||||
|
||||
#suggestions span {
|
||||
display: flex;
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
.suggestion__title {
|
||||
font-weight: $headings-font-weight;
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.suggestion__description,
|
||||
.suggestion__no-results {
|
||||
color: $gray-700;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
#suggestions {
|
||||
width: 31.125rem;
|
||||
}
|
||||
|
||||
#suggestions a {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.suggestion__title {
|
||||
width: 9rem;
|
||||
padding-right: 1rem;
|
||||
border-right: 1px solid $gray-200;
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.suggestion__description {
|
||||
width: 19rem;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
}
|
@@ -3,6 +3,25 @@
|
||||
top: $navbar-offset;
|
||||
}
|
||||
|
||||
.sidebar-overflow {
|
||||
top: $navbar-offset;
|
||||
max-height: 90vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.sidebar-item {
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
margin-left: 0 !important;
|
||||
padding-left: 0.85rem !important;
|
||||
display: inline-block;
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-weight: 600;
|
||||
@@ -11,7 +30,7 @@
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
color: black;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
@@ -24,10 +43,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end sidebar
|
||||
|
||||
.btn-toggle[aria-expanded="true"] {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
color: black;
|
||||
|
||||
&::before {
|
||||
transform: rotate(90deg);
|
||||
@@ -49,6 +66,58 @@
|
||||
}
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.sidebar-item {
|
||||
color: var(--bs-tertiary-color);
|
||||
margin-left: 0 !important;
|
||||
padding-left: 0.85rem !important;
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: var(--bs-secondary-color);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
color: var(--bs-tertiary-color);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $secondary;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: $btn-toggle-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle[aria-expanded="true"] {
|
||||
color: var(--bs-secondary-color);
|
||||
}
|
||||
|
||||
.btn-toggle-nav a {
|
||||
padding: 0.1875rem 0.5rem;
|
||||
margin-top: 0.125rem;
|
||||
margin-left: 1.25rem;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $secondary;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end sidebar
|
||||
|
||||
.dropdown-toggle {
|
||||
outline: 0;
|
||||
}
|
||||
|
86
assets/scss/components/_syntax-dark.scss
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Background */ .bg { color: #c9d1d9; background-color: #0d1117; }
|
||||
/* PreWrapper */ .chroma { color: #c9d1d9; background-color: #0d1117; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #f85149 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #b8b800 }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #ff7b72 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #79c0ff }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #ff7b72 }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #ff7b72 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #79c0ff }
|
||||
/* KeywordReserved */ .chroma .kr { color: #ff7b72 }
|
||||
/* KeywordType */ .chroma .kt { color: #ff7b72 }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { }
|
||||
/* NameBuiltin */ .chroma .nb { }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { }
|
||||
/* NameClass */ .chroma .nc { color: #f0883e; font-weight: bold }
|
||||
/* NameConstant */ .chroma .no { color: #79c0ff; font-weight: bold }
|
||||
/* NameDecorator */ .chroma .nd { color: #d2a8ff; font-weight: bold }
|
||||
/* NameEntity */ .chroma .ni { color: #ffa657 }
|
||||
/* NameException */ .chroma .ne { color: #f0883e; font-weight: bold }
|
||||
/* NameFunction */ .chroma .nf { color: #d2a8ff; font-weight: bold }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { color: #79c0ff; font-weight: bold }
|
||||
/* NameNamespace */ .chroma .nn { color: #ff7b72 }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { color: #79c0ff }
|
||||
/* NameTag */ .chroma .nt { color: #7ee787 }
|
||||
/* NameVariable */ .chroma .nv { color: #79c0ff }
|
||||
/* NameVariableClass */ .chroma .vc { }
|
||||
/* NameVariableGlobal */ .chroma .vg { }
|
||||
/* NameVariableInstance */ .chroma .vi { }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { color: #a5d6ff }
|
||||
/* LiteralDate */ .chroma .ld { color: #79c0ff }
|
||||
/* LiteralString */ .chroma .s { color: #a5d6ff }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #79c0ff }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #a5d6ff }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #a5d6ff }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #79c0ff }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #a5d6ff }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #a5d6ff }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #79c0ff }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #79c0ff }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #a5d6ff }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #a5d6ff }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #79c0ff }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #a5d6ff }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #a5d6ff }
|
||||
/* LiteralNumber */ .chroma .m { color: #a5d6ff }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #a5d6ff }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #a5d6ff }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #a5d6ff }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #a5d6ff }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #a5d6ff }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #a5d6ff }
|
||||
/* Operator */ .chroma .o { color: #ff7b72; font-weight: bold }
|
||||
/* OperatorWord */ .chroma .ow { color: #ff7b72; font-weight: bold }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #8b949e; font-style: italic }
|
||||
/* CommentHashbang */ .chroma .ch { color: #8b949e; font-style: italic }
|
||||
/* CommentMultiline */ .chroma .cm { color: #8b949e; font-style: italic }
|
||||
/* CommentSingle */ .chroma .c1 { color: #8b949e; font-style: italic }
|
||||
/* CommentSpecial */ .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* CommentPreproc */ .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #ffa198; background-color: #490202 }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #ffa198 }
|
||||
/* GenericHeading */ .chroma .gh { color: #79c0ff; font-weight: bold }
|
||||
/* GenericInserted */ .chroma .gi { color: #56d364; background-color: #0f5323 }
|
||||
/* GenericOutput */ .chroma .go { color: #8b949e }
|
||||
/* GenericPrompt */ .chroma .gp { color: #8b949e }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #79c0ff }
|
||||
/* GenericTraceback */ .chroma .gt { color: #ff7b72 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { color: #6e7681 }
|
86
assets/scss/components/_syntax-light.scss
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Background */ .bg { background-color: #ffffff; }
|
||||
/* PreWrapper */ .chroma { background-color: #ffffff; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
|
||||
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold }
|
||||
/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold }
|
||||
/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { color: #008080 }
|
||||
/* NameBuiltin */ .chroma .nb { color: #0086b3 }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color: #999999 }
|
||||
/* NameClass */ .chroma .nc { color: #445588; font-weight: bold }
|
||||
/* NameConstant */ .chroma .no { color: #008080 }
|
||||
/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold }
|
||||
/* NameEntity */ .chroma .ni { color: #800080 }
|
||||
/* NameException */ .chroma .ne { color: #990000; font-weight: bold }
|
||||
/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold }
|
||||
/* NameNamespace */ .chroma .nn { color: #555555 }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { }
|
||||
/* NameTag */ .chroma .nt { color: #000080 }
|
||||
/* NameVariable */ .chroma .nv { color: #008080 }
|
||||
/* NameVariableClass */ .chroma .vc { color: #008080 }
|
||||
/* NameVariableGlobal */ .chroma .vg { color: #008080 }
|
||||
/* NameVariableInstance */ .chroma .vi { color: #008080 }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { }
|
||||
/* LiteralDate */ .chroma .ld { }
|
||||
/* LiteralString */ .chroma .s { color: #dd1144 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #dd1144 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #dd1144 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #dd1144 }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #dd1144 }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #dd1144 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #dd1144 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #009926 }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #990073 }
|
||||
/* LiteralNumber */ .chroma .m { color: #009999 }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #009999 }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #009999 }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #009999 }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #009999 }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #009999 }
|
||||
/* Operator */ .chroma .o { color: #000000; font-weight: bold }
|
||||
/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #999988; font-style: italic }
|
||||
/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic }
|
||||
/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic }
|
||||
/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic }
|
||||
/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
|
||||
/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #aa0000 }
|
||||
/* GenericHeading */ .chroma .gh { color: #999999 }
|
||||
/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
|
||||
/* GenericOutput */ .chroma .go { color: #888888 }
|
||||
/* GenericPrompt */ .chroma .gp { color: #555555 }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #aaaaaa }
|
||||
/* GenericTraceback */ .chroma .gt { color: #aa0000 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { color: #bbbbbb }
|
@@ -1,86 +1,42 @@
|
||||
/* Background */ .bg { color: #272822; }
|
||||
/* PreWrapper */ .chroma { color: #272822 }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #960050 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #00a8c8 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #00a8c8 }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #00a8c8 }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #f92672 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #00a8c8 }
|
||||
/* KeywordReserved */ .chroma .kr { color: #00a8c8 }
|
||||
/* KeywordType */ .chroma .kt { color: #00a8c8 }
|
||||
/* Name */ .chroma .n { color: #111111 }
|
||||
/* NameAttribute */ .chroma .na { color: #75af00 }
|
||||
/* NameBuiltin */ .chroma .nb { color: #111111 }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color: #111111 }
|
||||
/* NameClass */ .chroma .nc { color: #75af00 }
|
||||
/* NameConstant */ .chroma .no { color: #00a8c8 }
|
||||
/* NameDecorator */ .chroma .nd { color: #75af00 }
|
||||
/* NameEntity */ .chroma .ni { color: #111111 }
|
||||
/* NameException */ .chroma .ne { color: #75af00 }
|
||||
/* NameFunction */ .chroma .nf { color: #75af00 }
|
||||
/* NameFunctionMagic */ .chroma .fm { color: #111111 }
|
||||
/* NameLabel */ .chroma .nl { color: #111111 }
|
||||
/* NameNamespace */ .chroma .nn { color: #111111 }
|
||||
/* NameOther */ .chroma .nx { color: #75af00 }
|
||||
/* NameProperty */ .chroma .py { color: #111111 }
|
||||
/* NameTag */ .chroma .nt { color: #f92672 }
|
||||
/* NameVariable */ .chroma .nv { color: #111111 }
|
||||
/* NameVariableClass */ .chroma .vc { color: #111111 }
|
||||
/* NameVariableGlobal */ .chroma .vg { color: #111111 }
|
||||
/* NameVariableInstance */ .chroma .vi { color: #111111 }
|
||||
/* NameVariableMagic */ .chroma .vm { color: #111111 }
|
||||
/* Literal */ .chroma .l { color: #ae81ff }
|
||||
/* LiteralDate */ .chroma .ld { color: #d88200 }
|
||||
/* LiteralString */ .chroma .s { color: #d88200 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #d88200 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #d88200 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #d88200 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #d88200 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #d88200 }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #d88200 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #8045ff }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #d88200 }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #d88200 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #d88200 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #d88200 }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #d88200 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #d88200 }
|
||||
/* LiteralNumber */ .chroma .m { color: #ae81ff }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
|
||||
/* Operator */ .chroma .o { color: #f92672 }
|
||||
/* OperatorWord */ .chroma .ow { color: #f92672 }
|
||||
/* Punctuation */ .chroma .p { color: #111111 }
|
||||
/* Comment */ .chroma .c { color: #75715e }
|
||||
/* CommentHashbang */ .chroma .ch { color: #75715e }
|
||||
/* CommentMultiline */ .chroma .cm { color: #75715e }
|
||||
/* CommentSingle */ .chroma .c1 { color: #75715e }
|
||||
/* CommentSpecial */ .chroma .cs { color: #75715e }
|
||||
/* CommentPreproc */ .chroma .cp { color: #75715e }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #75715e }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericError */ .chroma .gr { }
|
||||
/* GenericHeading */ .chroma .gh { }
|
||||
/* GenericInserted */ .chroma .gi { }
|
||||
/* GenericOutput */ .chroma .go { }
|
||||
/* GenericPrompt */ .chroma .gp { }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { }
|
||||
/* GenericTraceback */ .chroma .gt { }
|
||||
/* GenericUnderline */ .chroma .gl { }
|
||||
/* TextWhitespace */ .chroma .w { }
|
||||
// stylelint-disable annotation-no-unknown
|
||||
@import "components/syntax-light";
|
||||
|
||||
.bg,
|
||||
.chroma,
|
||||
.chroma .err {
|
||||
// set to transparent background to avoid rendering issues with example shortcode
|
||||
background-color: transparent if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.preview-background {
|
||||
background-color: var(--bs-dark-bg-subtle) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
[data-bs-theme="dark"] {
|
||||
@import "components/syntax-dark"; // stylelint-disable-line no-invalid-position-at-import-rule
|
||||
|
||||
.bg,
|
||||
.chroma,
|
||||
.chroma .err {
|
||||
// set to transparent background to avoid rendering issues with example shortcode
|
||||
background-color: transparent if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.bg,
|
||||
.chroma {
|
||||
color: #c9d1d9 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
165
assets/scss/components/_timeline.scss
Normal file
@@ -0,0 +1,165 @@
|
||||
// scss-docs-start timeline
|
||||
$connector-radius: 0.8rem;
|
||||
$semi-circle-radius: 8rem;
|
||||
$semi-circle-border: 0.2rem;
|
||||
|
||||
:root {
|
||||
--timeline-highlight: var(--bs-primary);
|
||||
--timeline-icon-radius: #{$semi-circle-radius};
|
||||
--timeline-offset: 50%;
|
||||
--timeline-connector-bg: var(--bs-body-bg);
|
||||
}
|
||||
|
||||
@each $state in map-keys($theme-colors) {
|
||||
.timeline-#{$state} {
|
||||
--timeline-highlight: var(--#{$prefix}#{$state});
|
||||
}
|
||||
|
||||
.timeline-bg-#{$state} {
|
||||
--timeline-connector-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end timeline
|
||||
|
||||
.timeline, .timeline-sm {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.timeline-sm {
|
||||
--timeline-icon-radius: calc(#{$semi-circle-radius} / 2);
|
||||
--timeline-offset: 25%
|
||||
}
|
||||
|
||||
.timeline::before, .timeline-sm::before {
|
||||
content: "";
|
||||
width: 2 * $semi-circle-border;
|
||||
margin: 0 auto;
|
||||
background: var(--bs-body-color);
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
}
|
||||
|
||||
.timeline-sm::before {
|
||||
margin: 0 calc(var(--timeline-offset) - #{$semi-circle-border});
|
||||
}
|
||||
|
||||
.timeline-semi-circle-start, .timeline-semi-circle-end {
|
||||
width: var(--timeline-icon-radius);
|
||||
height: var(--timeline-icon-radius);
|
||||
border-radius: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.timeline-semi-circle-start {
|
||||
left: -$semi-circle-border;
|
||||
}
|
||||
|
||||
.timeline-semi-circle-end {
|
||||
left: $semi-circle-border;
|
||||
}
|
||||
|
||||
.timeline-semi-circle-start::before {
|
||||
content: "";
|
||||
width: var(--timeline-icon-radius);
|
||||
height: var(--timeline-icon-radius);
|
||||
border-radius: 100%;
|
||||
border: $semi-circle-border solid;
|
||||
position: absolute;
|
||||
border-color: transparent var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight);
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
|
||||
.timeline-semi-circle-start::after {
|
||||
content: "";
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: var(--timeline-icon-radius);
|
||||
height: var(--timeline-icon-radius);
|
||||
border-radius: 100%;
|
||||
border: $semi-circle-border solid;
|
||||
position: absolute;
|
||||
border-color: var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight) transparent;
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
|
||||
.timeline-semi-circle-end::before {
|
||||
content: "";
|
||||
width: var(--timeline-icon-radius);
|
||||
height: var(--timeline-icon-radius);
|
||||
border-radius: 100%;
|
||||
border: $semi-circle-border solid;
|
||||
position: absolute;
|
||||
border-color: transparent var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight);
|
||||
transform: rotate(-225deg);
|
||||
}
|
||||
|
||||
.timeline-semi-circle-end::after {
|
||||
content: "";
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: var(--timeline-icon-radius);
|
||||
height: var(--timeline-icon-radius);
|
||||
border-radius: 100%;
|
||||
border: $semi-circle-border solid;
|
||||
position: absolute;
|
||||
border-color: var(--timeline-highlight) var(--timeline-highlight) var(--timeline-highlight) transparent;
|
||||
transform: rotate(-180deg);
|
||||
}
|
||||
|
||||
.timeline-description-text-start {
|
||||
border-bottom: $semi-circle-border solid var(--timeline-highlight);
|
||||
margin-right: 2 * $connector-radius;
|
||||
}
|
||||
|
||||
.timeline-description-text-end {
|
||||
border-bottom: $semi-circle-border solid var(--timeline-highlight);
|
||||
margin-left: 2 * $connector-radius;
|
||||
}
|
||||
|
||||
.timeline-panel-start, .timeline-panel-end, .timeline-connector-start, .timeline-connector-end {
|
||||
top: calc(var(--timeline-icon-radius) / 2);
|
||||
position: relative;
|
||||
width: calc(var(--timeline-icon-radius) / 2);
|
||||
height: calc($semi-circle-border + var(--timeline-icon-radius) / 2);
|
||||
border: $semi-circle-border solid var(--timeline-highlight);
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.timeline-panel-start {
|
||||
top: 50%;
|
||||
right: 50%;
|
||||
position: absolute;
|
||||
width: calc(var(--timeline-icon-radius) * 2);
|
||||
width: 2 * $connector-radius;
|
||||
height: 50%;
|
||||
border-top: $semi-circle-border solid var(--timeline-highlight);
|
||||
border-left: $semi-circle-border solid var(--timeline-highlight);
|
||||
}
|
||||
|
||||
.timeline-panel-end {
|
||||
top: 50%;
|
||||
position: absolute;
|
||||
width: calc(var(--timeline-icon-radius) * 2);
|
||||
width: 2 * $connector-radius;
|
||||
height: 50%;
|
||||
border-top: $semi-circle-border solid var(--timeline-highlight);
|
||||
border-right: $semi-circle-border solid var(--timeline-highlight);
|
||||
}
|
||||
|
||||
.timeline-dot::after {
|
||||
display: inline-block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: var(--timeline-offset);
|
||||
margin: (-$connector-radius) 0 0 (-$connector-radius);
|
||||
width: 2 * $connector-radius;
|
||||
height: 2 * $connector-radius;
|
||||
border-radius: 100%;
|
||||
border: ($semi-circle-border * 1.5) solid var(--timeline-connector-bg);
|
||||
color: var(--timeline-highlight);
|
||||
background: var(--timeline-highlight);
|
||||
}
|
@@ -1,20 +1,21 @@
|
||||
//
|
||||
// Table of contents sidebar
|
||||
// Table of contents sidebar & drop-down panel
|
||||
//
|
||||
// scss-docs-start toc
|
||||
.toc {
|
||||
.toc-sidebar {
|
||||
grid-area: toc;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
height: calc(100vh - 7rem);
|
||||
height: calc(100vh - 5rem);
|
||||
overflow-y: auto;
|
||||
top: $navbar-offset;
|
||||
top: 5rem;
|
||||
}
|
||||
|
||||
// scss-docs-end toc
|
||||
|
||||
.toc nav {
|
||||
font-size: 0.875rem;
|
||||
margin-bottom: -0.875rem;
|
||||
}
|
||||
|
||||
.toc nav ul {
|
||||
@@ -33,6 +34,10 @@
|
||||
|
||||
.toc nav a {
|
||||
color: inherit;
|
||||
|
||||
&:hover {
|
||||
color: var(--bs-primary);
|
||||
}
|
||||
}
|
||||
|
||||
.toc nav a:not(:hover) {
|
||||
@@ -42,3 +47,21 @@
|
||||
.toc nav a code {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.toc-button {
|
||||
--bs-btn-hover-color: var(--bs-primary);
|
||||
--bs-btn-hover-bg: var(--bs-body-bg);
|
||||
--bs-btn-hover-border-color: var(--bs-primary);
|
||||
--bs-btn-active-color: var(--bs-primary);
|
||||
--bs-btn-active-bg: var(--bs-body-bg);
|
||||
--bs-btn-active-border-color: var(--bs-primary);
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: var(--bs-primary);
|
||||
border-color: var(--bs-primary);
|
||||
box-shadow: 0 0 0 4px var(--bs-primary-border-subtle);
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
@@ -1,19 +1,37 @@
|
||||
// stylelint-disable function-name-case
|
||||
|
||||
// scss-docs-start colored-links
|
||||
@each $color, $value in $theme-colors {
|
||||
$contrast-color: color-contrast($value);
|
||||
$color-rgb: to-rgb($value);
|
||||
$custom-colors: (
|
||||
"primary": "light",
|
||||
"secondary": "light",
|
||||
"success": "light",
|
||||
"danger": "light",
|
||||
"dark": "light",
|
||||
"black": "light",
|
||||
"info": "dark",
|
||||
"warning": "dark",
|
||||
"light": "dark",
|
||||
"white": "dark",
|
||||
"body": "adaptive",
|
||||
"body-tertiary": "adaptive"
|
||||
);
|
||||
|
||||
@each $color, $value in $custom-colors {
|
||||
$main-color: var(--bs-body-color);
|
||||
$emphasize-color: var(--bs-secondary-color);
|
||||
|
||||
@if $value == "light" {
|
||||
$main-color: $white;
|
||||
$emphasize-color: shade-color($main-color, $link-shade-percentage);
|
||||
} @else if $value == "dark" {
|
||||
$main-color: $black;
|
||||
$emphasize-color: tint-color($main-color, $link-shade-percentage);
|
||||
}
|
||||
|
||||
.link-bg-#{$color} {
|
||||
color: $contrast-color !important; // stylelint-disable-line declaration-no-important
|
||||
background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null); // stylelint-disable-line annotation-no-unknown
|
||||
color: $main-color if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&: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
|
||||
}
|
||||
&:hover,
|
||||
&:focus {
|
||||
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
|
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
|
||||
|
||||
# additional settings
|
||||
googleAnalytics = "G-T85PPZ36GN"
|
||||
baseURL = "https://demo.gethinode.com/"
|
||||
canonifyURLs = false
|
||||
enableEmoji = true
|
||||
@@ -16,9 +17,9 @@ enableInlineShortcodes = true
|
||||
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
|
||||
ignoreErrors = ["error-remote-getjson"]
|
||||
|
||||
# toml-docs-start build
|
||||
timeout = "60s"
|
||||
# toml-docs-end build
|
||||
# toml-docs-start timeout
|
||||
timeout = "180s"
|
||||
# toml-docs-end timeout
|
||||
|
||||
# toml-docs-start language
|
||||
languageCode = "en-us"
|
||||
@@ -26,6 +27,25 @@ defaultContentLanguage = "en"
|
||||
defaultContentLanguageInSubdir = true
|
||||
# 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]
|
||||
tag = 'tags'
|
||||
|
||||
@@ -65,21 +85,35 @@ defaultContentLanguageInSubdir = true
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
extended = true
|
||||
min = "0.81.0"
|
||||
min = "0.110.0"
|
||||
max = ""
|
||||
[[module.mounts]]
|
||||
source = "archetypes"
|
||||
target = "archetypes"
|
||||
[[module.mounts]]
|
||||
source = "assets"
|
||||
target = "assets"
|
||||
[[module.mounts]]
|
||||
source = "i18n"
|
||||
target = "i18n"
|
||||
[[module.mounts]]
|
||||
source = "layouts"
|
||||
target = "layouts"
|
||||
[[module.mounts]]
|
||||
source = "static"
|
||||
target = "static"
|
||||
# toml-docs-start javascript
|
||||
[[module.mounts]]
|
||||
source = "node_modules/bootstrap/dist/js"
|
||||
target = "assets/js/vendor/bootstrap"
|
||||
includeFiles = "*.bundle.js"
|
||||
[[module.mounts]]
|
||||
source = "node_modules/flexsearch/dist"
|
||||
target = "assets/js/vendor/flexsearch"
|
||||
includeFiles = "*.bundle.js"
|
||||
# toml-docs-end javascript
|
||||
source = "netlify.toml"
|
||||
target = "assets/config/netlify.toml"
|
||||
# toml-docs-start modules
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-bootstrap"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-flexsearch"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-fontawesome"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-katex"
|
||||
[[module.imports]]
|
||||
path = "github.com/gethinode/mod-leaflet"
|
||||
# toml-docs-end modules
|
@@ -8,10 +8,10 @@
|
||||
[en.params.head]
|
||||
tagline = "A Hugo Theme"
|
||||
[en.params.feature]
|
||||
link = "/en/about"
|
||||
link = "about"
|
||||
caption = "About"
|
||||
[en.params.footer]
|
||||
license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank'>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"
|
||||
socialCaption = "I work on everything coding and tweet developer memes"
|
||||
# toml-docs-end lang-param
|
||||
@@ -23,9 +23,9 @@
|
||||
[nl.params.head]
|
||||
tagline = "Een Hugo Thema"
|
||||
[nl.params.feature]
|
||||
link = "/nl/over-mij"
|
||||
link = "over-mij"
|
||||
caption = "Over mij"
|
||||
[nl.params.footer]
|
||||
license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank'>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"
|
||||
socialCaption = "Ik doe aan programmeren en tweet memes"
|
@@ -1,73 +1,73 @@
|
||||
[[main]]
|
||||
name = "About"
|
||||
url = "/about/"
|
||||
pageRef = "/about/"
|
||||
weight = 10
|
||||
|
||||
[[main]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
pageRef = "/blog/"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "Projects"
|
||||
url = "/projects/"
|
||||
pageRef = "/projects/"
|
||||
weight = 30
|
||||
|
||||
[[main]]
|
||||
name = "Sample project"
|
||||
url = "/en/projects/sample-project/"
|
||||
pageRef = "/projects/sample-project/"
|
||||
parent = "Projects"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
name = "Another project"
|
||||
url = "/en/projects/another-project/"
|
||||
pageRef = "/projects/another-project/"
|
||||
parent = "Projects"
|
||||
weight = 2
|
||||
|
||||
[[main]]
|
||||
name = "Tags"
|
||||
url = "/tags/"
|
||||
pageRef = "/tags/"
|
||||
weight = 40
|
||||
|
||||
[[social]]
|
||||
name = "LinkedIn"
|
||||
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
|
||||
pre = "fab linkedin"
|
||||
url = "https://linkedin.com/"
|
||||
weight = 10
|
||||
|
||||
[[social]]
|
||||
name = "GitHub"
|
||||
pre = "<i class=\"fab fa-github fa-2x\"></i>"
|
||||
pre = "fab fa-github"
|
||||
url = "https://github.com/"
|
||||
weight = 20
|
||||
|
||||
[[social]]
|
||||
name = "Medium"
|
||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
||||
pre = "fab medium"
|
||||
url = "https://medium.com/"
|
||||
weight = 30
|
||||
|
||||
# toml-docs-start sample-navigation
|
||||
[[sample]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
pageRef = "/blog/"
|
||||
weight = 10
|
||||
|
||||
[[sample]]
|
||||
name = "Projects"
|
||||
url = "/projects/"
|
||||
pageRef = "/projects/"
|
||||
weight = 20
|
||||
|
||||
[[sample]]
|
||||
name = "Sample project"
|
||||
url = "/en/projects/sample-project/"
|
||||
pageRef = "/projects/sample-project/"
|
||||
parent = "Projects"
|
||||
weight = 1
|
||||
|
||||
[[sample]]
|
||||
name = "Another project"
|
||||
url = "/en/projects/another-project/"
|
||||
pageRef = "/projects/another-project/"
|
||||
parent = "Projects"
|
||||
weight = 2
|
||||
# toml-docs-end sample-navigation
|
@@ -1,49 +1,73 @@
|
||||
[[main]]
|
||||
name = "Over mij"
|
||||
url = "/over-mij/"
|
||||
pageRef = "/over-mij/"
|
||||
weight = 10
|
||||
|
||||
[[main]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
pageRef = "/blog/"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "Projecten"
|
||||
url = "/projecten/"
|
||||
pageRef = "/projecten/"
|
||||
weight = 30
|
||||
|
||||
[[main]]
|
||||
name = "Voorbeeldproject"
|
||||
url = "/nl/projecten/voorbeeldproject/"
|
||||
pageRef = "/projecten/voorbeeldproject/"
|
||||
parent = "Projecten"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
name = "Ander project"
|
||||
url = "/nl/projecten/ander-project/"
|
||||
pageRef = "/projecten/ander-project/"
|
||||
parent = "Projecten"
|
||||
weight = 2
|
||||
|
||||
[[main]]
|
||||
name = "Tags"
|
||||
url = "/tags/"
|
||||
pageRef = "/tags/"
|
||||
weight = 40
|
||||
|
||||
[[social]]
|
||||
name = "LinkedIn"
|
||||
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
|
||||
pre = "fab linkedin"
|
||||
url = "https://linkedin.com/"
|
||||
weight = 10
|
||||
|
||||
[[social]]
|
||||
name = "GitHub"
|
||||
pre = "<i class=\"fab fa-github fa-2x\"></i>"
|
||||
pre = "fab github"
|
||||
url = "https://github.com/"
|
||||
weight = 20
|
||||
|
||||
[[social]]
|
||||
name = "Medium"
|
||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
||||
pre = "fab medium"
|
||||
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
|
@@ -2,12 +2,37 @@
|
||||
[main]
|
||||
separator = "-"
|
||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||
enableDarkMode = true
|
||||
modes = ["light", "dark"]
|
||||
canonifyAssetsURLs = false
|
||||
[main.externalLinks]
|
||||
cue = false
|
||||
tab = false
|
||||
# toml-docs-end main
|
||||
|
||||
# toml-docs-start modules
|
||||
[modules]
|
||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
||||
optional = ["leaflet", "katex"]
|
||||
excludeSCSS = ["bootstrap"]
|
||||
disableTemplate = ["katex"]
|
||||
[modules.fontawesome]
|
||||
inline = true
|
||||
debug = true
|
||||
skipMissing = false
|
||||
# toml-docs-end modules
|
||||
|
||||
# toml-docs-start debugging
|
||||
[debugging]
|
||||
showJS = false
|
||||
showSCSS = false
|
||||
# toml-docs-end debugging
|
||||
|
||||
# toml-docs-start docs
|
||||
[docs]
|
||||
version = "0.8"
|
||||
basePath = ""
|
||||
github = "https://github.com/gethinode/hinode"
|
||||
release = "https://github.com/gethinode/hinode/releases/tag/"
|
||||
checkVersion = false
|
||||
# toml-docs-end docs
|
||||
|
||||
# toml-docs-start home
|
||||
@@ -15,48 +40,100 @@
|
||||
sections = ["blog", "projects"]
|
||||
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
fullCover = false
|
||||
centerHeadline = false
|
||||
style = ""
|
||||
# toml-docs-end home
|
||||
|
||||
# toml-docs-start navigation
|
||||
[navigation]
|
||||
logo = "/img/logo_embedded.svg"
|
||||
color = "white"
|
||||
style = "light"
|
||||
anchor = true
|
||||
logo = "/img/logo_icon.svg"
|
||||
color = "body"
|
||||
fixed = true
|
||||
offset = "4em"
|
||||
offset = "3.8em"
|
||||
search = true
|
||||
breadcrumb = false
|
||||
breadcrumb = true
|
||||
toc = true
|
||||
sidebar = true
|
||||
# toml-docs-end navigation
|
||||
|
||||
# toml-docs-start list
|
||||
[list]
|
||||
[blog]
|
||||
# toml-docs-start messages
|
||||
[messages]
|
||||
placement = "bottom-right"
|
||||
# toml-docs-end messages
|
||||
|
||||
# toml-docs-start sharing
|
||||
[sharing]
|
||||
enabled = true
|
||||
sort = "weight"
|
||||
reverse = false
|
||||
webshare = true
|
||||
|
||||
[[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 x-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"
|
||||
sort = "date"
|
||||
reverse = false
|
||||
reverse = true
|
||||
nested = true
|
||||
cols = 3
|
||||
color = ""
|
||||
padding = "0"
|
||||
header = "full"
|
||||
footer = "none"
|
||||
orientation = "stacked"
|
||||
style = "border-0"
|
||||
style = "border-0 card-zoom"
|
||||
homepage = 3
|
||||
[projects]
|
||||
separator = true
|
||||
[sections.projects]
|
||||
title = "Projects"
|
||||
layout = "card"
|
||||
sort = "title"
|
||||
reverse = false
|
||||
nested = true
|
||||
cols = 1
|
||||
color = ""
|
||||
background = "body-tertiary"
|
||||
color = "body"
|
||||
padding = "3"
|
||||
header = "none"
|
||||
footer = "tags"
|
||||
orientation = "none"
|
||||
orientation = "horizontal"
|
||||
style = "border-1 card-emphasize"
|
||||
homepage = 3
|
||||
# toml-docs-end list
|
||||
separator = false
|
||||
# toml-docs-end sections
|
||||
|
||||
[favicon]
|
||||
logo = "img/favicon.png"
|
||||
@@ -64,7 +141,7 @@
|
||||
|
||||
# toml-docs-start theme-colors
|
||||
[style]
|
||||
primary = "#D43900"
|
||||
primary = "#d43900"
|
||||
secondary = "#6c757d"
|
||||
success = "#198754"
|
||||
info = "#0dcaf0"
|
||||
@@ -76,8 +153,12 @@
|
||||
themeOpacity = "10"
|
||||
# toml-docs-start font
|
||||
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-start build
|
||||
purge = false
|
||||
# toml-docs-end build
|
||||
|
||||
[schema]
|
||||
type = "Organization"
|
||||
@@ -115,78 +196,11 @@
|
||||
#theme = ""
|
||||
|
||||
[links]
|
||||
azure = "https://azure.microsoft.com"
|
||||
az_blob_domain = "https://learn.microsoft.com/en-us/azure/storage/blobs/storage-custom-domain-name"
|
||||
az_blob_pricing = "https://azure.microsoft.com/en-us/free"
|
||||
az_cdn_rules = "https://learn.microsoft.com/en-us/azure/cdn/cdn-standard-rules-engine-reference"
|
||||
blist = "https://github.com/apvarun/blist-hugo-theme"
|
||||
bootstrap = "https://getbootstrap.com"
|
||||
bs_badge_heading = "https://getbootstrap.com/docs/5.2/components/badge/#headings"
|
||||
bs_breakpoints = "https://getbootstrap.com/docs/5.3/layout/breakpoints"
|
||||
bs_grid = "https://getbootstrap.com/docs/5.3/layout/grid"
|
||||
bs_offcanvas = "https://getbootstrap.com/docs/5.3/components/offcanvas"
|
||||
bs_navbar_placement = "https://getbootstrap.com/docs/5.3/components/navbar/#placement"
|
||||
bs_tables = "https://getbootstrap.com/docs/5.3/content/tables"
|
||||
cc_by_nc_4_0 = "https://creativecommons.org/licenses/by-nc/4.0/"
|
||||
commit_message = "https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html"
|
||||
contrast_checker = "https://accessibleweb.com/color-contrast-checker/"
|
||||
css_codeguide = "https://codeguide.co/#css"
|
||||
doks = "https://github.com/h-enk/doks"
|
||||
eslint = "https://eslint.org"
|
||||
flexsearch = "https://github.com/nextapps-de/flexsearch"
|
||||
fontawesome = "https://fontawesome.com"
|
||||
fa_icons = "https://fontawesome.com/icons"
|
||||
fa_styling = "https://fontawesome.com/docs/web/style/styling"
|
||||
fa_animation = "https://fontawesome.com/docs/web/style/animate"
|
||||
git_download = "https://git-scm.com"
|
||||
github_pr = "https://help.github.com/articles/about-pull-requests/"
|
||||
github_rebase = "https://help.github.com/articles/about-git-rebase/"
|
||||
google_fonts = "https://fonts.google.com"
|
||||
html_codeguide = "https://codeguide.co/#html"
|
||||
hugo = "https://gohugo.io"
|
||||
hugo_config = "https://gohugo.io/getting-started/configuration/#all-configuration-settings"
|
||||
hugo_config_dir = "https://gohugo.io/getting-started/configuration/#configuration-directory"
|
||||
hugo_content = "https://gohugo.io/content-management/formats"
|
||||
hugo_chroma = "https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages"
|
||||
hugo_deploy = "https://gohugo.io/hosting-and-deployment/hugo-deploy"
|
||||
hugo_deployment = "https://gohugo.io/hosting-and-deployment"
|
||||
hugo_config_deploy = "https://gohugo.io/hosting-and-deployment/hugo-deploy/#configure-the-deployment"
|
||||
hugo_fingerprint = "https://gohugo.io/hugo-pipes/fingerprint"
|
||||
hugo_frontmatter = "https://gohugo.io/content-management/front-matter"
|
||||
hugo_i18n = "https://gohugo.io/functions/i18n"
|
||||
hugo_image = "https://gohugo.io/content-management/image-processing"
|
||||
hugo_lang = "https://gohugo.io/content-management/multilingual"
|
||||
hugo_lang_config = "https://gohugo.io/content-management/multilingual/#configure-languages"
|
||||
hugo_links = "https://gohugo.io/content-management/cross-references"
|
||||
hugo_menus = "https://gohugo.io/content-management/menus/"
|
||||
hugo_mounts = "https://gohugo.io/hugo-modules/configuration/#module-config-mounts"
|
||||
hinode_docs = "https://gethinode.com/docs"
|
||||
hugo_imaging = "https://gohugo.io/content-management/image-processing/#imaging-configuration"
|
||||
hugo_ordering = "https://gohugo.io/templates/lists/#order-content"
|
||||
hugo_templates = "https://gohugo.io/templates/introduction/"
|
||||
hugo_toc = "https://gohugo.io/content-management/toc"
|
||||
issue_tracker = "https://github.com/gethinode/hinode/issues"
|
||||
license = "https://github.com/gethinode/hinode/blob/main/LICENSE"
|
||||
markdown_emoji = "https://gist.github.com/rxaviers/7360908"
|
||||
markdown_md013 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md013---line-length"
|
||||
markdown_md024 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md024---multiple-headings-with-the-same-content"
|
||||
markdown_md026 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md026---trailing-punctuation-in-heading"
|
||||
markdown_md033 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md033---inline-html"
|
||||
markdown_md034 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md034---bare-url-used"
|
||||
markdown_md051 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md051---link-fragments-should-be-valid"
|
||||
markdown_md053 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md053---link-and-image-reference-definitions-should-be-needed"
|
||||
markdown_rules = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md"
|
||||
markdownlint = "https://github.com/DavidAnson/markdownlint-cli2"
|
||||
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
|
||||
netlify = "https://www.netlify.com"
|
||||
nodejs = "https://nodejs.org"
|
||||
npm = "https://www.npmjs.com"
|
||||
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
|
||||
package_npm = "https://www.npmjs.com/package/@gethinode/hinode"
|
||||
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
|
||||
repository = "https://github.com/gethinode/hinode"
|
||||
repository_child = "https://github.com/gethinode/child.git"
|
||||
repository_owner = "https://github.com/gethinode/"
|
||||
semver = "https://semver.org"
|
||||
stylelint = "https://stylelint.io"
|
||||
utterances = "https://utteranc.es"
|
||||
wcag_contrast = "https://www.w3.org/TR/WCAG20/#visual-audio-contrast"
|
||||
|
@@ -8,14 +8,15 @@ for = '/**'
|
||||
Content-Security-Policy = """\
|
||||
default-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; \
|
||||
object-src 'none'; \
|
||||
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; \
|
||||
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' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
"""
|
||||
@@ -32,6 +33,11 @@ for = '/**'
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
Cache-Control = "public, max-age=31536000"
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
# toml-docs-end server-config
|
@@ -1,47 +1,43 @@
|
||||
const autoprefixer = require('autoprefixer');
|
||||
const purgecss = require('@fullhuman/postcss-purgecss');
|
||||
const whitelister = require('purgecss-whitelister');
|
||||
const autoprefixer = require('autoprefixer')({})
|
||||
const cssnano = require('cssnano')({
|
||||
preset: 'advanced'
|
||||
})
|
||||
const whitelister = require('purgecss-whitelister')
|
||||
const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
content: ['./hugo_stats.json'],
|
||||
defaultExtractor: (content) => {
|
||||
const els = JSON.parse(content).htmlElements
|
||||
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||
},
|
||||
dynamicAttributes: ['data-bs-theme'],
|
||||
safelist: [
|
||||
...whitelister([
|
||||
'./assets/scss/components/_clipboard.scss',
|
||||
'./assets/scss/components/_command.scss',
|
||||
'./assets/scss/components/_navbar.scss',
|
||||
'./assets/scss/components/_search.scss',
|
||||
'./assets/scss/components/_syntax.scss',
|
||||
'./assets/scss/components/_syntax-dark.scss',
|
||||
'./assets/scss/components/_syntax-light.scss',
|
||||
'./assets/scss/theme/fonts.scss',
|
||||
'./assets/scss/theme/theme.scss',
|
||||
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
||||
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
||||
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
|
||||
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
|
||||
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',
|
||||
'./_vendor/github.com/twbs/bootstrap/scss/_utilities.scss'
|
||||
])
|
||||
]
|
||||
})
|
||||
|
||||
module.exports = {
|
||||
plugins: [
|
||||
autoprefixer(),
|
||||
purgecss({
|
||||
content: [
|
||||
'./layouts/**/*.html',
|
||||
'./content/**/*.md',
|
||||
],
|
||||
safelist: [
|
||||
/lazyloaded/,
|
||||
/table/,
|
||||
/thead/,
|
||||
/tbody/,
|
||||
/tr/,
|
||||
/th/,
|
||||
/td/,
|
||||
/h5/,
|
||||
/alert-link/,
|
||||
/container-xxl/,
|
||||
/container-fluid/,
|
||||
/^bg-opacity-\d+/,
|
||||
/svg.*/,
|
||||
/fa.*/,
|
||||
/ratio.*/,
|
||||
/suggestion.*/,
|
||||
...whitelister([
|
||||
'./assets/scss/components/_blockquote.scss',
|
||||
'./assets/scss/components/_buttons.scss',
|
||||
'./assets/scss/components/_card.scss',
|
||||
'./assets/scss/components/_clipboard.scss',
|
||||
'./assets/scss/components/_img.scss',
|
||||
'./assets/scss/components/_navbar.scss',
|
||||
'./assets/scss/components/_search.scss',
|
||||
'./assets/scss/components/_syntax.scss',
|
||||
'./assets/scss/layouts/_reboot.scss',
|
||||
'./assets/scss/layouts/type.scss',
|
||||
'./node_modules/bootstrap/scss/_dropdown.scss',
|
||||
'./node_modules/bootstrap/scss/_utilities.scss',
|
||||
]),
|
||||
],
|
||||
}),
|
||||
],
|
||||
autoprefixer,
|
||||
cssnano,
|
||||
purgecss
|
||||
]
|
||||
}
|
||||
|
@@ -1 +0,0 @@
|
||||
canonifyURLs = false
|
@@ -2,27 +2,27 @@
|
||||
title: About
|
||||
description: Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
date: 2022-04-11
|
||||
updated: 2023-01-14
|
||||
updated: 2023-08-02
|
||||
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>
|
||||
|
||||
<section class="section section-sm mt-5 mb-5">
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center text-center">
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
||||
{{< icon fab bootstrap fa-2xl >}}
|
||||
<h2 class="h4">Bootstrap framework</h2>
|
||||
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
||||
{{< icon fas magnifying-glass fa-2xl >}}
|
||||
<h2 class="h4">Full text search</h2>
|
||||
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-code fa-2xl"></i>
|
||||
{{< icon fas code fa-2xl >}}
|
||||
<h2 class="h4">Development tools</h2>
|
||||
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
|
||||
</div>
|
||||
@@ -32,10 +32,11 @@ showComments: false
|
||||
|
||||
Additional features include:
|
||||
|
||||
* Switching between light mode and dark mode
|
||||
* Support for multiple languages
|
||||
* Reusable Bootstrap components through configurable shortcodes and partials
|
||||
* Versioned documentation, including sidebar navigation and version switcher
|
||||
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
||||
* Integrated sidebar navigation for content-heavy sections, such as documentation pages
|
||||
* Reponsive image handling for multiple screen sizes and resolutions
|
||||
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Secure by default, scoring A+ on [Mozilla Observatory test]({{< param "links.observatory" >}})
|
||||
|
@@ -1,4 +1,5 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Blog
|
||||
nested: true
|
||||
---
|
||||
|
290
content/en/blog/bootstrap-elements.md
Normal file
@@ -0,0 +1,290 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Bootstrap elements
|
||||
date: 2023-05-20
|
||||
description: Use shortcodes to add common Bootstrap elements with ease.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail: img/boots.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/QLPWQvHvmII">Unsplash</a>
|
||||
---
|
||||
|
||||
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||
|
||||
## Accordion
|
||||
|
||||
As an example, the following shortcode displays an accordion with three elements, of which the first element is expanded.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* accordion */>}}
|
||||
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
|
||||
This is the first item's accordion body. It supports HTML content. The item is shown by adding the value
|
||||
<code>show</code> to the <code>class</code> argument.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||
This is the second item's accordion body. It supports HTML content too.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||
This is the third item's accordion body.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* /accordion */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Alert
|
||||
|
||||
As an example, the following shortcode displays a simple alert.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* alert color="danger" dismissible="true" */>}}
|
||||
A simple danger alert—check it out!
|
||||
{{</* /alert */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Badge
|
||||
|
||||
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options.
|
||||
|
||||
{{< example >}}
|
||||
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
|
||||
<h2>Example heading of size two <span class="badge bg-secondary">New</span></h2>
|
||||
<h3>Example heading of size three <span class="badge bg-secondary">New</span></h3>
|
||||
<h4>Example heading of size four <span class="badge bg-secondary">New</span></h4>
|
||||
<h5>Example heading of size five <span class="badge bg-secondary">New</span></h5>
|
||||
<h6>Example heading of size six <span class="badge bg-secondary">New</span></h6>
|
||||
{{< /example >}}
|
||||
|
||||
## Breadcrumb
|
||||
|
||||
As an example, the following shortcode displays a breadcrumb for the blog page.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* breadcrumb path="blog" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a dark button with a badge.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button color="secondary" tooltip="Click on the inbox to view your unread messages" href="#!" badge="99+" */>}}
|
||||
Inbox
|
||||
{{</* /button */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button group
|
||||
|
||||
As an example, the following shortcode displays a group of three buttons.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button-group aria-label="Basic example" */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Left{{</* /button */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Middle{{</* /button */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Right{{</* /button */>}}
|
||||
{{</* /button-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Card
|
||||
|
||||
As an example, the following shortcode displays a stacked card that links to the [about]({{< ref "about" >}}) page. It includes a custom header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="body-tertiary" header="publication" footer="none" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Carousel
|
||||
|
||||
As an example, the following shortcode displays a centered carousel with three slides, 16x9 aspect ratio, and a relative width of 67% on large screens.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||
{{</* img src="img/phone.jpg" caption="slide 2" */>}}
|
||||
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Collapse
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers a panel to appear or disappear.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button collapse="collapse-1" */>}}
|
||||
Trigger panel
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* collapse id="collapse-1" class="p-3 border rounded bg-primary-subtle" */>}}
|
||||
Some placeholder content for the collapse component. This panel is <i>hidden by default</i> but
|
||||
revealed when the user activates the relevant trigger.
|
||||
{{</* /collapse */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Command prompt
|
||||
|
||||
Use the `command` shortcode to generate a block with a default bash command prompt.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
Specify `user` and `host` to add the user context to the prompt. In addition, use `(out)` to specify an output line and use `\` to denote a line continuation.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command user="user" host="localhost" */>}}
|
||||
export MY_VAR=123
|
||||
echo "hello"
|
||||
(out)hello
|
||||
echo one \
|
||||
two \
|
||||
three
|
||||
(out)one two three
|
||||
echo "goodbye"
|
||||
(out)goodbye
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Docs
|
||||
|
||||
Use the `docs` shortcode to display the content of a `js`, `scss` or `toml` file:
|
||||
|
||||
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||
|
||||
## Icon
|
||||
|
||||
As an example, the following shortcodes show a square check, a brand logo, and a circle check.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* fa square-check */>}}
|
||||
{{</* fab linkedin */>}}
|
||||
{{</* fas circle-check */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Image
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Nav
|
||||
|
||||
As an example, the following shortcode displays a tab group with vertically aligned pills.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* nav type="pills" vertical="true" */>}}
|
||||
{{</* nav-item header="Nav Item #1" show="true" */>}}
|
||||
This is the first item's nav body. It supports HTML content. The item is shown by adding the value
|
||||
<code>show</code> to the <code>class</code> argument.
|
||||
{{</* /nav-item */>}}
|
||||
{{</* nav-item header="Nav Item #2" */>}}
|
||||
This is the second item's nav body. It too supports HTML content.
|
||||
{{</* /nav-item */>}}
|
||||
{{</* nav-item header="Nav Item #3" */>}}
|
||||
This is the third item's nav body.
|
||||
{{</* /nav-item */>}}
|
||||
{{</* /nav */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Navbar
|
||||
|
||||
As an example, the following shortcode displays a light navigation header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* navbar path="about" color="primary" size="md" search="false" menus="sample" title="Brand" mode="false" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Release
|
||||
|
||||
As an example, the following shortcode displays a default release button.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* release version="v0.14.1" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Spinner
|
||||
|
||||
As an example, the following shortcode displays a centered spinner.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* spinner color="info" class="text-center" */>}}
|
||||
Loading...
|
||||
{{</* /spinner */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Timeline
|
||||
|
||||
As an example, the following shortcode displays a timeline with the file `data/timeline-en.yml` as data.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* timeline data="timeline-en" background="dark" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Toast
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers the toast message.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button toast="toast-example-1" */>}}
|
||||
Show toast 1
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* button toast="toast-example-2" */>}}
|
||||
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 */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Tooltip
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a colored hyperlink.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}Tooltip{{</* /tooltip */>}} demonstration
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,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 >}}
|
36
content/en/blog/components.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Components
|
||||
date: 2023-07-21
|
||||
description: Use shortcodes to add predefined components powered by external libraries.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail: img/puzzle.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@ryoji__iwata">Ryoji Iwata</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/5siQcvSxCP8">Unsplash</a>
|
||||
modules: ["katex", "leaflet"]
|
||||
---
|
||||
|
||||
Hinode provides several shortcodes on top of the common [Bootstrap elements]({{< relref "bootstrap-elements" >}}). Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||
|
||||
## Formula (KaTeX)
|
||||
|
||||
As an example, the following markdown renders two formulas using the KaTeX typesetting library.
|
||||
|
||||
{{< example lang="markdown" >}}
|
||||
This is an inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formula
|
||||
|
||||
This is not an inline formula:
|
||||
|
||||
$$x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}$$
|
||||
$$\forall x \in X, \quad \exists y \leq \epsilon$$
|
||||
{{< /example >}}
|
||||
|
||||
## Map
|
||||
|
||||
As an example, the following shortcode displays an interactive map of the city of Amsterdam.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* map lat=52.377 long=4.90 zoom=13 popup="Amsterdam Central Station" popup-lat=52.378062 popup-long=4.900562 */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -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
|
||||
description: Another project.
|
||||
tags: ["javascript", "golang"]
|
||||
thumbnail: img/coffee.jpg # https://picsum.photos/id/1060/5598/3732
|
||||
photoCredits: <a href="https://unsplash.com/@kfred">Karl Fredrickson</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/TYIzeCiZ_60">Unsplash</a>
|
||||
icon: fas rocket
|
||||
---
|
||||
|
||||
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
|
||||
description: A sample project.
|
||||
tags: ["html", "css"]
|
||||
thumbnail: img/laptop.jpg # https://picsum.photos/id/0/5616/3744
|
||||
photoCredits: <a href="https://unsplash.com/@alejandroescamilla">Alejandro Escamilla</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/yC-Yzbqy7PY">Unsplash</a>
|
||||
icon: fab docker
|
||||
---
|
||||
|
||||
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,31 +1,30 @@
|
||||
---
|
||||
slug: "over-mij"
|
||||
title: "Over mij"
|
||||
description: "Een blog thema voor Hugo gebaseerd op Bootstrap 5."
|
||||
date: "2022-04-11"
|
||||
slug: over-mij
|
||||
title: Over mij
|
||||
description: Een blog en documentatie thema voor Hugo gebaseerd op Bootstrap 5.
|
||||
date: 2023-02-17
|
||||
updated: 2023-08-02
|
||||
showComments: false
|
||||
---
|
||||
|
||||
<p class="text-center"><img src="/img/logo_embedded.svg" class="img-fluid w-50" alt="Logo"></p>
|
||||
|
||||
<center>Hinode is een blog thema voor Hugo, een open-source statische website generator.</center>
|
||||
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
|
||||
|
||||
<section class="section section-sm mt-5">
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center text-center">
|
||||
<div class="row justify-content-center text-center">
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
||||
{{< icon fab bootstrap fa-2xl >}}
|
||||
<h2 class="h4">Bootstrap raamwerk</h2>
|
||||
<p>Bouw snelle websites geschikt voor mobiele en desktop schermen met Bootstrap 5. Pas de site eenvoudig aan met bronbestanden in Sass.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
||||
{{< icon fas magnifying-glass fa-2xl >}}
|
||||
<h2 class="h4">Volledig doorzoekbaar</h2>
|
||||
<p>Doorzoek je site met FlexSearch, een software bibliotheek zonder afhankelijkheden.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-code fa-2xl"></i>
|
||||
{{< icon fas code fa-2xl >}}
|
||||
<h2 class="h4">Ontwikkelgereedschap</h2>
|
||||
<p>Gebruik Node Package Manager om het bouwproces inclusief versiebeheer volledig te automatiseren.</p>
|
||||
</div>
|
||||
@@ -35,13 +34,15 @@ showComments: false
|
||||
|
||||
Overige functies:
|
||||
|
||||
* Reacties
|
||||
* Sociale links
|
||||
* Paginering
|
||||
* Scrollspy
|
||||
* Code markeren
|
||||
* Kleuren aanpassen
|
||||
* Internationalisering
|
||||
* Omschakelen tussen donkere en lichte modus
|
||||
* Ondersteuning voor meerdere talen
|
||||
* Herbruikbare Bootstrap componenten via shortcodes en partials
|
||||
* Versiebeheer van documentatiepagina's, inclusief secundaire navigatie en selectie van versies
|
||||
* Integreren van commentaar via [utteranc.es]({{< param "links.utterances" >}})
|
||||
* Optimalisering van foto's voor meerdere schermafmetingen en resoluties
|
||||
* 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:
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
---
|
||||
author: Katheryn Fox
|
||||
author: Mark Dumay
|
||||
title: Blog
|
||||
---
|
||||
|
291
content/nl/blog/bootstrap-elements.md
Normal file
@@ -0,0 +1,291 @@
|
||||
---
|
||||
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 -->
|
||||
|
||||
## Timeline
|
||||
|
||||
De volgende shortcode toont een tijdslijn met het bestand `data/timeline-nl.yml` als input.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* timeline data="timeline-nl" */>}}
|
||||
{{< /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 >}}
|
37
content/nl/blog/components.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Componenten
|
||||
slug: componenten
|
||||
date: 2023-07-21
|
||||
description: Gebruik shortcodes om voorgedefiniëerde componenten toe te voegen die gebruikmaken van externe libraries.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail: img/puzzle.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@ryoji__iwata">Ryoji Iwata</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/5siQcvSxCP8">Unsplash</a>
|
||||
modules: ["katex", "leaflet"]
|
||||
---
|
||||
|
||||
Hinode biedt meerdere shortcodes aan bovenop de gebruikelijke [Bootstrap elementen]({{< relref "bootstrap-elements" >}}). Zie de [officiële documentatie]({{< param "links.hinode_docs" >}}) voor meer details.
|
||||
|
||||
## Formule (KaTeX)
|
||||
|
||||
De volgende markdown code genereert twee wiskundige formules met behulp van KaTeX.
|
||||
|
||||
{{< example lang="markdown" >}}
|
||||
Dit is een inline $-b \pm \sqrt{b^2 - 4ac} \over 2a$ formule
|
||||
|
||||
Dit is geen inline formule:
|
||||
|
||||
$$x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}$$
|
||||
$$\forall x \in X, \quad \exists y \leq \epsilon$$
|
||||
{{< /example >}}
|
||||
|
||||
## Map
|
||||
|
||||
De volgende shortcode toont een interactieve kaart van Amsterdam.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* map lat=52.377 long=4.90 zoom=13 popup="Amsterdam CS" popup-lat=52.378062 popup-long=4.900562 */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -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.
|