mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 18:14:28 +00:00
Compare commits
2544 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4bd20f6bb0 | ||
![]() |
6db9cbec0e | ||
![]() |
0170417ddc | ||
![]() |
3eb2e36429 | ||
![]() |
773b365b1c | ||
![]() |
550945f0f6 | ||
![]() |
b60ad8fd0b | ||
![]() |
38d1ddb86d | ||
![]() |
17287492e5 | ||
![]() |
992d724a6f | ||
![]() |
0b81eba373 | ||
![]() |
0a5e8bed92 | ||
![]() |
a387adca66 | ||
![]() |
5341db7db2 | ||
![]() |
f4d59a0324 | ||
![]() |
6c068898a3 | ||
![]() |
eec6697ff6 | ||
![]() |
26402fb5be | ||
![]() |
e08aebf928 | ||
![]() |
787ad2eb91 | ||
![]() |
8f137b0c54 | ||
![]() |
a979dd8d58 | ||
![]() |
b77a125485 | ||
![]() |
004da99765 | ||
![]() |
907c8ac800 | ||
![]() |
a8efc27771 | ||
![]() |
3bf8da3767 | ||
![]() |
131de0c064 | ||
![]() |
a914fe18e8 | ||
![]() |
a855a41c13 | ||
![]() |
c41cd0650e | ||
![]() |
a83bab6689 | ||
![]() |
03a099ae66 | ||
![]() |
cd837cf116 | ||
![]() |
8cffd358aa | ||
![]() |
0d33a15e98 | ||
![]() |
9be691eb6b | ||
![]() |
fd727228d7 | ||
![]() |
a9f1cd098d | ||
![]() |
dc1c358cfa | ||
![]() |
0d24dc445d | ||
![]() |
f6f034252b | ||
![]() |
863b81efbb | ||
![]() |
9b0683d176 | ||
![]() |
dd1b2eb97f | ||
![]() |
3f6dc3b2d7 | ||
![]() |
873277b691 | ||
![]() |
7a456a12d2 | ||
![]() |
b437b414b0 | ||
![]() |
80ac704d81 | ||
![]() |
996e9ec294 | ||
![]() |
0ab274d6f5 | ||
![]() |
3742e8ef04 | ||
![]() |
3eadaa02b8 | ||
![]() |
90bc571b76 | ||
![]() |
aad5b59a48 | ||
![]() |
4d7fdffd4a | ||
![]() |
c384836224 | ||
![]() |
cb547351d9 | ||
![]() |
3b47a5b66f | ||
![]() |
9f9029baf0 | ||
![]() |
3079f1f7dd | ||
![]() |
e546d34422 | ||
![]() |
00e80f6400 | ||
![]() |
b46dd52101 | ||
![]() |
b1a8c956fc | ||
![]() |
1b8aa10d11 | ||
![]() |
32fd60bb58 | ||
![]() |
8fa19c9ed1 | ||
![]() |
d36fcd894b | ||
![]() |
7378a61542 | ||
![]() |
fb63e36c56 | ||
![]() |
ae1cda1f5a | ||
![]() |
4846d1b016 | ||
![]() |
01522dad71 | ||
![]() |
0bbef1dad2 | ||
![]() |
5e048d32df | ||
![]() |
d1128fa7c3 | ||
![]() |
cf9a39b51f | ||
![]() |
ae9ec71966 | ||
![]() |
f6c4bbfffb | ||
![]() |
7a655315f1 | ||
![]() |
5c27178881 | ||
![]() |
c829049842 | ||
![]() |
613da916aa | ||
![]() |
d3d75c9dc6 | ||
![]() |
2f5b49397e | ||
![]() |
632f3d861b | ||
![]() |
004063f02a | ||
![]() |
1bd498f816 | ||
![]() |
291220256a | ||
![]() |
7bcb87a73e | ||
![]() |
55cebc752e | ||
![]() |
14bf59a551 | ||
![]() |
bce0fedd15 | ||
![]() |
694e7fc7b1 | ||
![]() |
93749cb368 | ||
![]() |
cf01e22a4d | ||
![]() |
f416f6bb7e | ||
![]() |
a7b776c0dc | ||
![]() |
e70f3acb57 | ||
![]() |
6e7b40ad0f | ||
![]() |
7446b2958e | ||
![]() |
6c18ada352 | ||
![]() |
323b42996b | ||
![]() |
ab8074b293 | ||
![]() |
9419e18ba9 | ||
![]() |
0f007ba5c2 | ||
![]() |
7d0943fb0c | ||
![]() |
3d2cfdaf0a | ||
![]() |
281c16b561 | ||
![]() |
fe68bd6be3 | ||
![]() |
3bf0c241a3 | ||
![]() |
a6a670cd2b | ||
![]() |
a44b5449f8 | ||
![]() |
461f53c67e | ||
![]() |
9a5059d8bd | ||
![]() |
c1586ee00e | ||
![]() |
88d2a50954 | ||
![]() |
77aa394c8e | ||
![]() |
5d4147fea9 | ||
![]() |
9c1d84487d | ||
![]() |
944a9705d7 | ||
![]() |
5e274d952a | ||
![]() |
a7f2d6d003 | ||
![]() |
057ae25f7b | ||
![]() |
a6454e3b4e | ||
![]() |
4b8f59782a | ||
![]() |
777c4f671f | ||
![]() |
990a016434 | ||
![]() |
1e64f4f009 | ||
![]() |
8bd3f0a254 | ||
![]() |
d6b3aaeb99 | ||
![]() |
e2e351f964 | ||
![]() |
b711d0591d | ||
![]() |
7a76408876 | ||
![]() |
1a53fdc636 | ||
![]() |
81f60a28e1 | ||
![]() |
193edecd03 | ||
![]() |
9ed4d00d19 | ||
![]() |
e821670be9 | ||
![]() |
7f7c8d12d9 | ||
![]() |
450e065117 | ||
![]() |
1360a750a5 | ||
![]() |
e7bb3ba1ca | ||
![]() |
5121c1cf1c | ||
![]() |
50bf5fa168 | ||
![]() |
363fcc3788 | ||
![]() |
d2e2b424b8 | ||
![]() |
859140e92f | ||
![]() |
38ef1bbbfe | ||
![]() |
508da2ba2b | ||
![]() |
529301ec8b | ||
![]() |
91acdeca75 | ||
![]() |
805350c7b7 | ||
![]() |
9900dce30d | ||
![]() |
d40927f97a | ||
![]() |
8c5e032514 | ||
![]() |
47a410f333 | ||
![]() |
fe0d3553fb | ||
![]() |
05af8f72a3 | ||
![]() |
977c82b10d | ||
![]() |
be92798dec | ||
![]() |
db9b96797a | ||
![]() |
d41d58cf5d | ||
![]() |
d3fe893287 | ||
![]() |
e64a08c339 | ||
![]() |
900fce4169 | ||
![]() |
c82f9a41d4 | ||
![]() |
ea83db2eeb | ||
![]() |
d37c2f6517 | ||
![]() |
68a4859638 | ||
![]() |
81494cb1ed | ||
![]() |
8307e2ab57 | ||
![]() |
4e6aad33d6 | ||
![]() |
8c3989e4f1 | ||
![]() |
42a81bab5f | ||
![]() |
559f7be37f | ||
![]() |
a51e0c81c0 | ||
![]() |
463a6b229c | ||
![]() |
60302a7d36 | ||
![]() |
31395afee3 | ||
![]() |
40d16ebab9 | ||
![]() |
5aa08d45f2 | ||
![]() |
2a05087eab | ||
![]() |
24ae3d3ca1 | ||
![]() |
6b250b8d4c | ||
![]() |
90f8f91e61 | ||
![]() |
cc0d83189d | ||
![]() |
4d4db9e870 | ||
![]() |
58cfcc9131 | ||
![]() |
362aae875e | ||
![]() |
3f3a7c21e3 | ||
![]() |
dddb881628 | ||
![]() |
1a0b2f5632 | ||
![]() |
b25de1eb02 | ||
![]() |
0a0315e531 | ||
![]() |
9a1a1405fe | ||
![]() |
f7bda6236e | ||
![]() |
c8c5384bd3 | ||
![]() |
4d4d5ad9bd | ||
![]() |
ffa359806f | ||
![]() |
a2a32662d1 | ||
![]() |
1ea7e3734f | ||
![]() |
afb6524fc1 | ||
![]() |
6d0d217da1 | ||
![]() |
23e8a14ea0 | ||
![]() |
bfc4584583 | ||
![]() |
50daaa0415 | ||
![]() |
35bb3d3c50 | ||
![]() |
7bea8050bf | ||
![]() |
4f9901c6ab | ||
![]() |
dd75e9b4af | ||
![]() |
ee244cace3 | ||
![]() |
150282c274 | ||
![]() |
efeabfe8c6 | ||
![]() |
9a30a12547 | ||
![]() |
694509e4e2 | ||
![]() |
827db014bf | ||
![]() |
f528f12fb5 | ||
![]() |
2f7c5b0f4e | ||
![]() |
6080998ba9 | ||
![]() |
e48f75c572 | ||
![]() |
79c0139887 | ||
![]() |
6e5316fb7d | ||
![]() |
a1db830818 | ||
![]() |
d1f63fa0e8 | ||
![]() |
9cbc5dea20 | ||
![]() |
fa8ae34136 | ||
![]() |
cba21df8bb | ||
![]() |
8cef4eb317 | ||
![]() |
6766fb9f4f | ||
![]() |
59371ed72e | ||
![]() |
b111fd13d2 | ||
![]() |
c8f7cec162 | ||
![]() |
93f0d88c22 | ||
![]() |
691da89124 | ||
![]() |
1db7f5ac9f | ||
![]() |
3d226799c4 | ||
![]() |
5a6b96d255 | ||
![]() |
e2d6630390 | ||
![]() |
ba855228da | ||
![]() |
c0007335ab | ||
![]() |
105034219f | ||
![]() |
814887911c | ||
![]() |
0fd34c98f8 | ||
![]() |
4a3d2e53cc | ||
![]() |
38e871a857 | ||
![]() |
94c5a5d585 | ||
![]() |
3ba638ea46 | ||
![]() |
19303d6181 | ||
![]() |
709719b689 | ||
![]() |
6f169388e2 | ||
![]() |
494f203866 | ||
![]() |
220a645e10 | ||
![]() |
4165ccb1ac | ||
![]() |
543a2708a3 | ||
![]() |
f70ddb4779 | ||
![]() |
2fb48b51f5 | ||
![]() |
9dd220ad47 | ||
![]() |
b40f4eaebe | ||
![]() |
87a7ddf514 | ||
![]() |
1c2c896a32 | ||
![]() |
f0493ec9f7 | ||
![]() |
af26baf31c | ||
![]() |
9749a1c0a9 | ||
![]() |
ebbee9ba40 | ||
![]() |
f7085d70fe | ||
![]() |
69ce5e43b0 | ||
![]() |
0267f25232 | ||
![]() |
16048b0cee | ||
![]() |
ccd945d49c | ||
![]() |
5c9f274dab | ||
![]() |
713cf5946c | ||
![]() |
9f3ed31e59 | ||
![]() |
c8f95ce71c | ||
![]() |
055aed5832 | ||
![]() |
99b10995ec | ||
![]() |
bc37e291e6 | ||
![]() |
6b1e241fad | ||
![]() |
e2df3c4005 | ||
![]() |
0b4851796a | ||
![]() |
5524957f60 | ||
![]() |
414b46c7de | ||
![]() |
fdccaadabc | ||
![]() |
41a9aaf033 | ||
![]() |
9f9af30a22 | ||
![]() |
b10c0d443d | ||
![]() |
c208b760b7 | ||
![]() |
6dd75f2407 | ||
![]() |
bf2c0f4f42 | ||
![]() |
38d832c11f | ||
![]() |
9b359a1a2f | ||
![]() |
d1d006bf25 | ||
![]() |
9a1875b187 | ||
![]() |
4e9cd4e389 | ||
![]() |
392d382c07 | ||
![]() |
30bb980d6f | ||
![]() |
58edbc6b2f | ||
![]() |
c71e77043f | ||
![]() |
b57b2e8d83 | ||
![]() |
f6898056a1 | ||
![]() |
9904a18519 | ||
![]() |
6583c2b860 | ||
![]() |
95c19813d2 | ||
![]() |
6d1229fd90 | ||
![]() |
cc40aa71e3 | ||
![]() |
4232dec87a | ||
![]() |
160774c4ab | ||
![]() |
80bff5fa61 | ||
![]() |
851b320fab | ||
![]() |
0bc595c4d2 | ||
![]() |
810cd66dd3 | ||
![]() |
19b0c431de | ||
![]() |
029c8f366a | ||
![]() |
9939503a11 | ||
![]() |
7dd2b9af0b | ||
![]() |
0f7c371909 | ||
![]() |
2d91c0c9e4 | ||
![]() |
fb0f47702c | ||
![]() |
f07dfa9e77 | ||
![]() |
1906a0cfca | ||
![]() |
23ffb15eb8 | ||
![]() |
b798517864 | ||
![]() |
5978426771 | ||
![]() |
7b810caa40 | ||
![]() |
84296e2964 | ||
![]() |
16c4833e89 | ||
![]() |
60d2338308 | ||
![]() |
30775ea52c | ||
![]() |
0a43a914c5 | ||
![]() |
773a940c68 | ||
![]() |
205a9d6202 | ||
![]() |
3e68c86103 | ||
![]() |
507716b1d2 | ||
![]() |
bee956167e | ||
![]() |
d7cfadf0ea | ||
![]() |
93d6fb6241 | ||
![]() |
c07c6aeb6f | ||
![]() |
db949c40f3 | ||
![]() |
87f0822b12 | ||
![]() |
f5bb33dd5a | ||
![]() |
c57ceb9934 | ||
![]() |
93b475b510 | ||
![]() |
d136e88508 | ||
![]() |
6ade2d1243 | ||
![]() |
b05f8b0dc7 | ||
![]() |
6659299c7c | ||
![]() |
05a32a2697 | ||
![]() |
9a53b8fad7 | ||
![]() |
300636f144 | ||
![]() |
a98259c5f5 | ||
![]() |
f3c984780e | ||
![]() |
af7fe7bc79 | ||
![]() |
75a3504a73 | ||
![]() |
2a24c4ab40 | ||
![]() |
429ba232f2 | ||
![]() |
2c1fbc859d | ||
![]() |
62766923e9 | ||
![]() |
cb2b692cf9 | ||
![]() |
91ab627f05 | ||
![]() |
abca69e378 | ||
![]() |
6248dcd74c | ||
![]() |
f7335cb5b9 | ||
![]() |
8252cde9ca | ||
![]() |
60ba0f6c07 | ||
![]() |
813457bb48 | ||
![]() |
f4c0feed0a | ||
![]() |
02e9281a9b | ||
![]() |
76e1274262 | ||
![]() |
33add3e1fd | ||
![]() |
572776af8a | ||
![]() |
27a35b14fd | ||
![]() |
30f1f35f52 | ||
![]() |
088fbdbbc2 | ||
![]() |
bd031ffddb | ||
![]() |
c1ae0730cb | ||
![]() |
070641f09a | ||
![]() |
4bd5a7dff7 | ||
![]() |
fa58472e35 | ||
![]() |
6d6fcdfa5d | ||
![]() |
6b2b622f8f | ||
![]() |
880dc959dc | ||
![]() |
7b4dde4022 | ||
![]() |
1a855fd44d | ||
![]() |
3c06fba993 | ||
![]() |
c02389212a | ||
![]() |
5b1d1866d5 | ||
![]() |
0754bafb41 | ||
![]() |
d1bedea219 | ||
![]() |
e21815d4d2 | ||
![]() |
8d38e6b8c2 | ||
![]() |
974b0db6ee | ||
![]() |
1aa0243bb5 | ||
![]() |
bff00ecca6 | ||
![]() |
fc436a1398 | ||
![]() |
60b06880f7 | ||
![]() |
3e986fa135 | ||
![]() |
3d7c877cec | ||
![]() |
f21a7bc0da | ||
![]() |
a4057ad498 | ||
![]() |
09d3294867 | ||
![]() |
7b167e32c4 | ||
![]() |
941698cc15 | ||
![]() |
1ec7d7477b | ||
![]() |
9ef702ef06 | ||
![]() |
5e41fddef3 | ||
![]() |
a620900c18 | ||
![]() |
cc25fe311d | ||
![]() |
c057b11094 | ||
![]() |
df6fb8f0ff | ||
![]() |
a6c3de6a7d | ||
![]() |
efb9c56b55 | ||
![]() |
7e3301d277 | ||
![]() |
068df86fd8 | ||
![]() |
4f57919a96 | ||
![]() |
21f90455d4 | ||
![]() |
50499a415a | ||
![]() |
e75c8cf40f | ||
![]() |
42529594b0 | ||
![]() |
73afeb13bd | ||
![]() |
23ece830e2 | ||
![]() |
41f5dbaea1 | ||
![]() |
5e368f2726 | ||
![]() |
2db3365115 | ||
![]() |
bf2235a96b | ||
![]() |
2ab8ee674f | ||
![]() |
e52d14e21a | ||
![]() |
46101e174e | ||
![]() |
d28b51aa63 | ||
![]() |
dd80ee2bfe | ||
![]() |
2e8b087c48 | ||
![]() |
03592cba67 | ||
![]() |
65a44637d5 | ||
![]() |
6bbdb813de | ||
![]() |
3ad358bb96 | ||
![]() |
2e1c05fa63 | ||
![]() |
d67fc81c87 | ||
![]() |
8e532ce61b | ||
![]() |
dd7803110d | ||
![]() |
8c05e15693 | ||
![]() |
b78d0a9912 | ||
![]() |
25aeaeb195 | ||
![]() |
d8336200ef | ||
![]() |
2831b510d6 | ||
![]() |
ddc319e380 | ||
![]() |
0e4c493dd2 | ||
![]() |
48ceeb0b64 | ||
![]() |
45bd45c5fa | ||
![]() |
9f85b5bc93 | ||
![]() |
41215fcc25 | ||
![]() |
912a34baa3 | ||
![]() |
db4fa60bff | ||
![]() |
8ebc170e0e | ||
![]() |
0b5a8756ad | ||
![]() |
7cec88af78 | ||
![]() |
1681d9691e | ||
![]() |
5b661f8f7f | ||
![]() |
3ca09592f7 | ||
![]() |
2d701111aa | ||
![]() |
dbb3b2026c | ||
![]() |
7d724dbb1f | ||
![]() |
7c436dcacd | ||
![]() |
1da69c08ae | ||
![]() |
1bca15042b | ||
![]() |
40fd76988d | ||
![]() |
8190e77152 | ||
![]() |
d0d681a6a9 | ||
![]() |
0d6964c7ed | ||
![]() |
3090aaa810 | ||
![]() |
c7cf48a6c1 | ||
![]() |
300a473a37 | ||
![]() |
dac09afbba | ||
![]() |
a35e59df3d | ||
![]() |
51b80d8820 | ||
![]() |
28c12e61e9 | ||
![]() |
c2d4782375 | ||
![]() |
4aa5723235 | ||
![]() |
6d602df62d | ||
![]() |
336f32b4a4 | ||
![]() |
1792ee527d | ||
![]() |
d750dcfb5a | ||
![]() |
448ebdbaad | ||
![]() |
7b8152d84e | ||
![]() |
df00db0447 | ||
![]() |
658a02798e | ||
![]() |
7329fdf3f9 | ||
![]() |
34550a3e00 | ||
![]() |
b88b17642d | ||
![]() |
ecb06164e0 | ||
![]() |
a4d9638cc1 | ||
![]() |
c8af80ab86 | ||
![]() |
1e06f4ef2c | ||
![]() |
3cfe1c296b | ||
![]() |
2b32c3c8fc | ||
![]() |
efa1ae2076 | ||
![]() |
35c869b729 | ||
![]() |
ccbc9b24d5 | ||
![]() |
680614d446 | ||
![]() |
93f6acd70d | ||
![]() |
8d761aa5d7 | ||
![]() |
9df7f951c6 | ||
![]() |
0bf7671675 | ||
![]() |
43a285db86 | ||
![]() |
f982b0f9d4 | ||
![]() |
669dfec6af | ||
![]() |
05ea55d73d | ||
![]() |
e64fdee0ea | ||
![]() |
90ef36d39a | ||
![]() |
d4321cea30 | ||
![]() |
9fd3781c25 | ||
![]() |
ed833307f8 | ||
![]() |
a73268fea6 | ||
![]() |
413082a23d | ||
![]() |
2b15ff26dc | ||
![]() |
42db5b3f9b | ||
![]() |
d3e58591be | ||
![]() |
5c9187a5ed | ||
![]() |
1db2652304 | ||
![]() |
003f9a329c | ||
![]() |
c7bed9de24 | ||
![]() |
1de5aa70da | ||
![]() |
eb51223fa8 | ||
![]() |
4b732c02f8 | ||
![]() |
3193ff6e0d | ||
![]() |
d66f8eef93 | ||
![]() |
9bb9bb580a | ||
![]() |
c29b43866a | ||
![]() |
e3d88bdf37 | ||
![]() |
a35db80260 | ||
![]() |
3d19b57d5e | ||
![]() |
3bd8f99678 | ||
![]() |
a01c726de4 | ||
![]() |
fe74653749 | ||
![]() |
c143634c4a | ||
![]() |
58e0946636 | ||
![]() |
d2dd3a32d0 | ||
![]() |
045dfd5a13 | ||
![]() |
ecab03d15c | ||
![]() |
6972f71077 | ||
![]() |
92c87629a0 | ||
![]() |
a0dd30d2c7 | ||
![]() |
50c6c80d8a | ||
![]() |
548ba82abe | ||
![]() |
31e47ad940 | ||
![]() |
f04f5719ec | ||
![]() |
8ab0d2fb1e | ||
![]() |
9f83f33afd | ||
![]() |
e9789a420c | ||
![]() |
8459665fcf | ||
![]() |
75083fe543 | ||
![]() |
d5d29bab37 | ||
![]() |
46d2e57e4b | ||
![]() |
8a0658e931 | ||
![]() |
9be5b22911 | ||
![]() |
71181905c3 | ||
![]() |
61a00fd205 | ||
![]() |
71c2e4f5c6 | ||
![]() |
14c05f62ad | ||
![]() |
712634ec57 | ||
![]() |
d8070914f9 | ||
![]() |
8006143d3f | ||
![]() |
b56516b77b | ||
![]() |
ac6a47e528 | ||
![]() |
d6f86a0a4c | ||
![]() |
d950555d75 | ||
![]() |
231425dbdf | ||
![]() |
2cccbc499a | ||
![]() |
92572a21bc | ||
![]() |
261c174739 | ||
![]() |
fbdfd10969 | ||
![]() |
2c2cd595c1 | ||
![]() |
2b6fc61628 | ||
![]() |
40096611cf | ||
![]() |
937b16ca60 | ||
![]() |
64d7ff5d93 | ||
![]() |
b7fb5bee75 | ||
![]() |
63d7d4de85 | ||
![]() |
035387d8c1 | ||
![]() |
f7c5769817 | ||
![]() |
6853a455cb | ||
![]() |
190f849b5a | ||
![]() |
1165ffffe0 | ||
![]() |
214812b750 | ||
![]() |
20f1a87d8b | ||
![]() |
66f904c7fb | ||
![]() |
cdf9d39242 | ||
![]() |
98c53ccd6d | ||
![]() |
5409aa7a63 | ||
![]() |
10a69d6bfd | ||
![]() |
705967641a | ||
![]() |
a5b49bdf70 | ||
![]() |
44d46f92c9 | ||
![]() |
78a2caf728 | ||
![]() |
7f5bebacab | ||
![]() |
b95ce558a6 | ||
![]() |
e75533a0ae | ||
![]() |
19a45b4399 | ||
![]() |
e08178cfce | ||
![]() |
b24c6bc21f | ||
![]() |
d1e06588a5 | ||
![]() |
13fb13ec10 | ||
![]() |
ccca047155 | ||
![]() |
7443319ad9 | ||
![]() |
db4ba8babe | ||
![]() |
c7c03ebc8c | ||
![]() |
4bd1578724 | ||
![]() |
ecd16fa3cc | ||
![]() |
3ef8a16e18 | ||
![]() |
3fc30b9941 | ||
![]() |
8fb9610c84 | ||
![]() |
dc88861a43 | ||
![]() |
871edd7aa4 | ||
![]() |
b172a5021a | ||
![]() |
9ddd1983d0 | ||
![]() |
2f00f07a2f | ||
![]() |
c043f26268 | ||
![]() |
99d689a323 | ||
![]() |
ec7275913b | ||
![]() |
255456447b | ||
![]() |
004940d9bc | ||
![]() |
6b39b028fb | ||
![]() |
9a83550378 | ||
![]() |
792443c4cf | ||
![]() |
3d52162925 | ||
![]() |
80b28f7557 | ||
![]() |
43eebdf53f | ||
![]() |
b5062fe687 | ||
![]() |
51aa15266b | ||
![]() |
19f638a129 | ||
![]() |
aa2e5ca6f4 | ||
![]() |
04eea0db71 | ||
![]() |
4645f4ee7c | ||
![]() |
bb6421c70b | ||
![]() |
622c6ee1c0 | ||
![]() |
f1befb05cc | ||
![]() |
e146e3a559 | ||
![]() |
068e773ab0 | ||
![]() |
3ae91a78a1 | ||
![]() |
6627446961 | ||
![]() |
d4fd6ece60 | ||
![]() |
a746fd147c | ||
![]() |
d0410af879 | ||
![]() |
314f1a0ca4 | ||
![]() |
066c5ce8eb | ||
![]() |
bba9629f54 | ||
![]() |
d2d59ec3ef | ||
![]() |
c080be2872 | ||
![]() |
3c17234b33 | ||
![]() |
16884abcba | ||
![]() |
2abbe4f6de | ||
![]() |
c6f9de0a64 | ||
![]() |
39f104fa5f | ||
![]() |
437ad0dbf7 | ||
![]() |
2eb354d941 | ||
![]() |
5a7f46bca4 | ||
![]() |
0bc37ff426 | ||
![]() |
0d24f85e13 | ||
![]() |
d067171ba2 | ||
![]() |
09e649d432 | ||
![]() |
87c7bd4238 | ||
![]() |
19734f6a1f | ||
![]() |
12a5ebad9f | ||
![]() |
1b964777a4 | ||
![]() |
f910d1bbbb | ||
![]() |
86461c9739 | ||
![]() |
a730255eb6 | ||
![]() |
e940cc9931 | ||
![]() |
3a70d25f2e | ||
![]() |
9e72e5fe73 | ||
![]() |
561bdcac28 | ||
![]() |
11cd2bb167 | ||
![]() |
45a71fc1d1 | ||
![]() |
3f5c10319b | ||
![]() |
e4331c8ce7 | ||
![]() |
6166615629 | ||
![]() |
27c15b4e36 | ||
![]() |
c99e8c83d1 | ||
![]() |
a0cbdd0cbb | ||
![]() |
1ed825d7ca | ||
![]() |
09099eba58 | ||
![]() |
58b2eebea5 | ||
![]() |
46a2a6c994 | ||
![]() |
0dcec12256 | ||
![]() |
50a188e807 | ||
![]() |
400f27dcc9 | ||
![]() |
90bcc744ff | ||
![]() |
cf0fae6dc1 | ||
![]() |
1b39d23ddf | ||
![]() |
c94249408c | ||
![]() |
f4f207fa25 | ||
![]() |
307067629e | ||
![]() |
f9174e4505 | ||
![]() |
320d44c78d | ||
![]() |
091526a17b | ||
![]() |
9ec61d645d | ||
![]() |
0630043210 | ||
![]() |
2933d1d3bb | ||
![]() |
aa5118cdf6 | ||
![]() |
ec1c87070b | ||
![]() |
e806dc07a4 | ||
![]() |
9e7478f4c4 | ||
![]() |
686dd1c946 | ||
![]() |
548a2fa835 | ||
![]() |
1338df7b8a | ||
![]() |
150e438c59 | ||
![]() |
285f262a01 | ||
![]() |
7989dd17d4 | ||
![]() |
5f4070b481 | ||
![]() |
00160137e8 | ||
![]() |
51510ae047 | ||
![]() |
4fc95db0e9 | ||
![]() |
a1f899c1de | ||
![]() |
e358e737be | ||
![]() |
0e35d26f20 | ||
![]() |
ede04405d1 | ||
![]() |
30aa2df2d2 | ||
![]() |
47d582f855 | ||
![]() |
fa1fcc3dd0 | ||
![]() |
04bc95720b | ||
![]() |
5c539ec003 | ||
![]() |
b19201e561 | ||
![]() |
7e21c93e22 | ||
![]() |
c81efe61d0 | ||
![]() |
6fe8e12509 | ||
![]() |
44b243489b | ||
![]() |
548dca2bb1 | ||
![]() |
b3e47b85f3 | ||
![]() |
087d3666b8 | ||
![]() |
77f4354499 | ||
![]() |
362bf368ce | ||
![]() |
fc17256fd2 | ||
![]() |
887aff5c5b | ||
![]() |
6ec26f1216 | ||
![]() |
357c74e3e0 | ||
![]() |
4b419810ea | ||
![]() |
0a313172bd | ||
![]() |
93eec0ff5a | ||
![]() |
f9fc8d9a6a | ||
![]() |
c537b9cfe4 | ||
![]() |
c37fe75f0d | ||
![]() |
4034289a7f | ||
![]() |
9b5c572ab9 | ||
![]() |
10c6344493 | ||
![]() |
fc386fcad9 | ||
![]() |
a680a61825 | ||
![]() |
a075ca5f7b | ||
![]() |
a816d2be25 | ||
![]() |
52ff0fb71e | ||
![]() |
95fd919a6f | ||
![]() |
85778dd374 | ||
![]() |
3b65b2c87f | ||
![]() |
ee3a0ee8c4 | ||
![]() |
3b721690f1 | ||
![]() |
96b2ed2f4c | ||
![]() |
d6d39ad946 | ||
![]() |
f8db72ebad | ||
![]() |
9a8ee943a9 | ||
![]() |
520c5ba43b | ||
![]() |
4205c07993 | ||
![]() |
7cd1dc3c27 | ||
![]() |
d96ef8af35 | ||
![]() |
2defd83f0f | ||
![]() |
ba10e2115a | ||
![]() |
1d4a5d960f | ||
![]() |
ec492c005f | ||
![]() |
624d57c374 | ||
![]() |
e7dda56408 | ||
![]() |
c3e135de9e | ||
![]() |
b84fc502b5 | ||
![]() |
b18b662cef | ||
![]() |
3070e4abac | ||
![]() |
052033fe42 | ||
![]() |
c37bb67c09 | ||
![]() |
0728a148b8 | ||
![]() |
6bf687dbf8 | ||
![]() |
e656ec9f33 | ||
![]() |
d522fb07d5 | ||
![]() |
39d98b2b6c | ||
![]() |
6dfab4aa5f | ||
![]() |
c5bdae6466 | ||
![]() |
f79267a39e | ||
![]() |
ea05749f0e | ||
![]() |
2dd027028c | ||
![]() |
3a4b1c8670 | ||
![]() |
e2b92c9519 | ||
![]() |
1defbd32f9 | ||
![]() |
edd303bab1 | ||
![]() |
43041f42fc | ||
![]() |
250bfc33e6 | ||
![]() |
b7d4af7c0a | ||
![]() |
631d952923 | ||
![]() |
744dd361f0 | ||
![]() |
719b5893d7 | ||
![]() |
228f6f29dc | ||
![]() |
3ea24f7e7f | ||
![]() |
418069773f | ||
![]() |
0791000f10 | ||
![]() |
cee94a9664 | ||
![]() |
d42a6c4150 | ||
![]() |
73160b0cfe | ||
![]() |
2d5225e205 | ||
![]() |
d7e9f05588 | ||
![]() |
f936bdd117 | ||
![]() |
fc05a338c7 | ||
![]() |
367e2f78d3 | ||
![]() |
6af1df3862 | ||
![]() |
a1c124cb38 | ||
![]() |
07b1a0d0ce | ||
![]() |
a3f215c211 | ||
![]() |
c31fdae5e4 | ||
![]() |
c208bc8946 | ||
![]() |
6c285b203d | ||
![]() |
a867458f4b | ||
![]() |
973fbf6637 | ||
![]() |
367f209c73 | ||
![]() |
06f384a206 | ||
![]() |
2ce4001fa8 | ||
![]() |
fe2e3ba5f4 | ||
![]() |
0830e0da77 | ||
![]() |
195f0b192f | ||
![]() |
f98d2000e3 | ||
![]() |
54f49944cc | ||
![]() |
7525ecddc2 | ||
![]() |
09ab64c361 | ||
![]() |
2b3f87b885 | ||
![]() |
213bb31133 | ||
![]() |
b0130d9f7d | ||
![]() |
07a3be644c | ||
![]() |
262bc47260 | ||
![]() |
51553a05f0 | ||
![]() |
bd06ee211b | ||
![]() |
cc8e889825 | ||
![]() |
a6144122b2 | ||
![]() |
853e0c818f | ||
![]() |
1c5fb55d89 | ||
![]() |
d48fb1a300 | ||
![]() |
f2aa9d2661 | ||
![]() |
d721e1cfc2 | ||
![]() |
7f7bf2152c | ||
![]() |
a9543de1e7 | ||
![]() |
39e4073837 | ||
![]() |
d2782349d5 | ||
![]() |
fe97815460 | ||
![]() |
7bcaa69d5b | ||
![]() |
30ae3f6b3c | ||
![]() |
6540e11fa9 | ||
![]() |
14f2145239 | ||
![]() |
856a0aed08 | ||
![]() |
5c6b91f1ce | ||
![]() |
152b8ca060 | ||
![]() |
0f8870fed0 | ||
![]() |
742ae6784b | ||
![]() |
ce4c8c0a7c | ||
![]() |
40de449fed | ||
![]() |
4c27864248 | ||
![]() |
3efb2b7451 | ||
![]() |
721e222849 | ||
![]() |
77b9d62d76 | ||
![]() |
efe3c947c2 | ||
![]() |
beee2e40e0 | ||
![]() |
895d606175 | ||
![]() |
9a17df96f3 | ||
![]() |
d2e1a1678a | ||
![]() |
d8451e2699 | ||
![]() |
f98ab74905 | ||
![]() |
6e453ea2ab | ||
![]() |
d6ca890c80 | ||
![]() |
46aecfe65a | ||
![]() |
496c07ff7e | ||
![]() |
3a63f4fad7 | ||
![]() |
bbf99507d6 | ||
![]() |
2a92cfd155 | ||
![]() |
31a5377cf4 | ||
![]() |
633a33796c | ||
![]() |
9b224317bb | ||
![]() |
a410fcaa19 | ||
![]() |
a6b2ddd2f9 | ||
![]() |
2e4a3660cc | ||
![]() |
2b0620b2d9 | ||
![]() |
98fc43cf7d | ||
![]() |
de1101c7ec | ||
![]() |
c42f3bb27b | ||
![]() |
267007b7e8 | ||
![]() |
77288da0de | ||
![]() |
1764ccd9f4 | ||
![]() |
14f8c27eca | ||
![]() |
884b7b323d | ||
![]() |
a0795b35db | ||
![]() |
0db4e4c32a | ||
![]() |
71a084943c | ||
![]() |
6bad597805 | ||
![]() |
b11aefd592 | ||
![]() |
f280f6402b | ||
![]() |
157b3da43e | ||
![]() |
5de693297f | ||
![]() |
65633ca62c | ||
![]() |
81589efb00 | ||
![]() |
1d50bb5ed2 | ||
![]() |
b5a19fa7d6 | ||
![]() |
fc76bac8b0 | ||
![]() |
f671c31130 | ||
![]() |
cdb84e8f21 | ||
![]() |
121625515a | ||
![]() |
60b6e1c960 | ||
![]() |
6628e9f879 | ||
![]() |
a3178e06af | ||
![]() |
fc86946cff | ||
![]() |
e440386999 | ||
![]() |
01c864bd64 | ||
![]() |
16cc468cf1 | ||
![]() |
1147c8fff6 | ||
![]() |
6b0fd9e244 | ||
![]() |
05bb9417b0 | ||
![]() |
03fc50852a | ||
![]() |
4de91bb7f2 | ||
![]() |
96b9a3b38d | ||
![]() |
da52d6e596 | ||
![]() |
b369e34f32 | ||
![]() |
e456061d19 | ||
![]() |
a87de9c37c | ||
![]() |
6283970443 | ||
![]() |
200ca109b1 | ||
![]() |
acded37e83 | ||
![]() |
782a40e1e8 | ||
![]() |
7b2bb803b3 | ||
![]() |
0e0561b081 | ||
![]() |
e3cf2e1337 | ||
![]() |
c18316250b | ||
![]() |
29a8666d7d | ||
![]() |
431125e46c | ||
![]() |
dae6541185 | ||
![]() |
41d0edb6c1 | ||
![]() |
5d9d11c388 | ||
![]() |
3b26c04bdd | ||
![]() |
01d41ae38e | ||
![]() |
22d5859432 | ||
![]() |
551b185dd9 | ||
![]() |
2edf12fb8b | ||
![]() |
fbdf79e05e | ||
![]() |
92e37ef847 | ||
![]() |
62084600a5 | ||
![]() |
8867ab1cbe | ||
![]() |
c3e09c341f | ||
![]() |
6cf4deceb7 | ||
![]() |
0dd790cf7a | ||
![]() |
6353b68c3e | ||
![]() |
fadd5b2fb5 | ||
![]() |
1d4add88ec | ||
![]() |
0b779d5f3a | ||
![]() |
2898745383 | ||
![]() |
892546886b | ||
![]() |
b09f039929 | ||
![]() |
86bcfa21fa | ||
![]() |
f97eeff745 | ||
![]() |
205e10d86b | ||
![]() |
3eb0794f08 | ||
![]() |
a1abc5970f | ||
![]() |
7b0839ad92 | ||
![]() |
3f20ddcd65 | ||
![]() |
24e0282eb7 | ||
![]() |
9fba521bc5 | ||
![]() |
60a34aac97 | ||
![]() |
15daf8c090 | ||
![]() |
7e4459ca8d | ||
![]() |
5ef2aad372 | ||
![]() |
4c6f4a9da9 | ||
![]() |
fd7f3692dd | ||
![]() |
f48b462c51 | ||
![]() |
287bc7700c | ||
![]() |
ee5e2745e2 | ||
![]() |
31fb07e180 | ||
![]() |
aaf8513688 | ||
![]() |
acd2812218 | ||
![]() |
665357e538 | ||
![]() |
f678352b78 | ||
![]() |
17b39caef7 | ||
![]() |
38ab9f2e43 | ||
![]() |
aa4da56910 | ||
![]() |
ea8e851e45 | ||
![]() |
90e6c9869d | ||
![]() |
628eb99f62 | ||
![]() |
a0293cc081 | ||
![]() |
d37dcdd20c | ||
![]() |
f0ff631b0d | ||
![]() |
b84bd07073 | ||
![]() |
b800906956 | ||
![]() |
049b38d3c1 | ||
![]() |
27c2500c92 | ||
![]() |
a182b2a134 | ||
![]() |
43abf793b8 | ||
![]() |
e11fa8d377 | ||
![]() |
fb94544bb0 | ||
![]() |
67f687d6b9 | ||
![]() |
879efc07e8 | ||
![]() |
29bcb26d04 | ||
![]() |
e04a8dc0ed | ||
![]() |
c7e70bf933 | ||
![]() |
1700abc7de | ||
![]() |
3ef857dba9 | ||
![]() |
5acc2e8f9e | ||
![]() |
0caa00a1a1 | ||
![]() |
b27a5ac7cb | ||
![]() |
24261c9193 | ||
![]() |
d1aa9c0f7c | ||
![]() |
a18d387379 | ||
![]() |
2d9cbf9195 | ||
![]() |
64abda14ce | ||
![]() |
3625675577 | ||
![]() |
e6e115a65d | ||
![]() |
9832b566db | ||
![]() |
f3211eabe0 | ||
![]() |
82c1d00af4 | ||
![]() |
70386eaeec | ||
![]() |
7413155dea | ||
![]() |
cfd1706f5f | ||
![]() |
5eca63c50d | ||
![]() |
d3f471a281 | ||
![]() |
b4acd7aef2 | ||
![]() |
49a3ef3c42 | ||
![]() |
56eaa9d90b | ||
![]() |
492dbbec24 | ||
![]() |
d2fc5e3433 | ||
![]() |
b5cc3f6d84 | ||
![]() |
e1e1041c1b | ||
![]() |
e1cac645a7 | ||
![]() |
d23d533575 | ||
![]() |
d447a4a65a | ||
![]() |
3a466277e3 | ||
![]() |
2b09ceef93 | ||
![]() |
ee30409257 | ||
![]() |
c5edb65550 | ||
![]() |
70583bdb33 | ||
![]() |
8e1a299a72 | ||
![]() |
e20aba4907 | ||
![]() |
1aedf22923 | ||
![]() |
e77671ffef | ||
![]() |
433f8ef60d | ||
![]() |
acb261ba69 | ||
![]() |
b04b5a136f | ||
![]() |
953f4ba908 | ||
![]() |
90e65b5614 | ||
![]() |
944437ea4c | ||
![]() |
5d0593bf65 | ||
![]() |
4935e627f6 | ||
![]() |
f7d535d025 | ||
![]() |
67280d6ad0 | ||
![]() |
e21332d016 | ||
![]() |
f306bc2b22 | ||
![]() |
475745cc6c | ||
![]() |
90c43c84e5 | ||
![]() |
a81b672731 | ||
![]() |
b86ec388b6 | ||
![]() |
5dd0fce394 | ||
![]() |
a66dc2f91c | ||
![]() |
0072292522 | ||
![]() |
d3f534629d | ||
![]() |
1407e1ba0d | ||
![]() |
b9bce4800c | ||
![]() |
a5a424b6ed | ||
![]() |
9c8b21233c | ||
![]() |
b564696728 | ||
![]() |
c669c82324 | ||
![]() |
8014f4d636 | ||
![]() |
7f80f52294 | ||
![]() |
485db3808f | ||
![]() |
7b10339aea | ||
![]() |
ed5c32a7a4 | ||
![]() |
c42a379ca0 | ||
![]() |
22c17c3123 | ||
![]() |
e4f82c1304 | ||
![]() |
07fa46b9a6 | ||
![]() |
809ce0d4ad | ||
![]() |
deb97e0e29 | ||
![]() |
14a89a2ff9 | ||
![]() |
81b40d145d | ||
![]() |
1dfce3d445 | ||
![]() |
145b2c29d1 | ||
![]() |
77fe046bea | ||
![]() |
63250c6ac9 | ||
![]() |
54e0f720bd | ||
![]() |
423670f95f | ||
![]() |
78560aa07a | ||
![]() |
1c6ff7ac55 | ||
![]() |
eb9b7ea8f0 | ||
![]() |
753b949af2 | ||
![]() |
2322cdcdc0 | ||
![]() |
edc8128395 | ||
![]() |
cc22f73f5c | ||
![]() |
8312de35c8 | ||
![]() |
a3a8d7e08c | ||
![]() |
0513692cf5 | ||
![]() |
bfa6e00c2f | ||
![]() |
c61fa6b4c7 | ||
![]() |
c754451002 | ||
![]() |
8d4cb82863 | ||
![]() |
ae18134218 | ||
![]() |
fb20543d88 | ||
![]() |
14d1489b60 | ||
![]() |
e99ac83fbc | ||
![]() |
d96b103180 | ||
![]() |
7f1dc95402 | ||
![]() |
e3420e357c | ||
![]() |
5ee51ebb18 | ||
![]() |
684ec0f823 | ||
![]() |
5335e3d607 | ||
![]() |
3fc51e6158 | ||
![]() |
4a20e8beef | ||
![]() |
163ac52332 | ||
![]() |
176c5447a8 | ||
![]() |
1a88fa93bb | ||
![]() |
b0d266aedc | ||
![]() |
eba81c236a | ||
![]() |
cdca92ea02 | ||
![]() |
a4743aabf5 | ||
![]() |
cf8465e627 | ||
![]() |
86941f05d0 | ||
![]() |
cbb777f524 | ||
![]() |
d20d00e42f | ||
![]() |
348981a1a0 | ||
![]() |
0942d79e2c | ||
![]() |
0251bd1838 | ||
![]() |
ae5e240cf1 | ||
![]() |
dd127b973a | ||
![]() |
63b186a2e5 | ||
![]() |
bc71ba1d19 | ||
![]() |
9c3bd970a5 | ||
![]() |
9f143786af | ||
![]() |
e8ccada6f3 | ||
![]() |
a40092b1eb | ||
![]() |
00965b5224 | ||
![]() |
92dc97d325 | ||
![]() |
2394f148e5 | ||
![]() |
8d259a3e3a | ||
![]() |
1c8912e92e | ||
![]() |
207c08431f | ||
![]() |
d2703d4885 | ||
![]() |
4728191370 | ||
![]() |
cd40d75962 | ||
![]() |
2d4732d03b | ||
![]() |
e3c256b41f | ||
![]() |
f0a53f252c | ||
![]() |
a1273d99d5 | ||
![]() |
4e62956c82 | ||
![]() |
cf096a7f6a | ||
![]() |
ee790dc6fd | ||
![]() |
df9bc9ed6c | ||
![]() |
69338b4abf | ||
![]() |
c206054dc8 | ||
![]() |
a2bcba5916 | ||
![]() |
788b68f6bc | ||
![]() |
73697f43aa | ||
![]() |
129df382cd | ||
![]() |
c15eb4edc3 | ||
![]() |
12725caa1c | ||
![]() |
6077c33fcc | ||
![]() |
b944d818c8 | ||
![]() |
f25fbb3440 | ||
![]() |
0b9d43f130 | ||
![]() |
884da31fd0 | ||
![]() |
6dbfb0ac64 | ||
![]() |
3bef9579b4 | ||
![]() |
0ea1f92d4c | ||
![]() |
77d44d44c6 | ||
![]() |
e8c1eac2af | ||
![]() |
2f992b82cf | ||
![]() |
fe70b24859 | ||
![]() |
d18f0469fc | ||
![]() |
497c5d0e5e | ||
![]() |
834435db00 | ||
![]() |
3d8195e24b | ||
![]() |
ce31587f22 | ||
![]() |
6342ae1a33 | ||
![]() |
88eb894fde | ||
![]() |
8870668c21 | ||
![]() |
cd379fa8d7 | ||
![]() |
fd029492f7 | ||
![]() |
29b0d6f978 | ||
![]() |
bed2afe44d | ||
![]() |
1922fc825e | ||
![]() |
8c3ea99429 | ||
![]() |
d8929da5ec | ||
![]() |
4a5e8c7311 | ||
![]() |
600b487f43 | ||
![]() |
ed013e9b6f | ||
![]() |
5a299a73dc | ||
![]() |
82f3837db1 | ||
![]() |
69cf1ccf6c | ||
![]() |
bf76ee7108 | ||
![]() |
7a1c3970ea | ||
![]() |
a679b1c7e0 | ||
![]() |
bb448f3194 | ||
![]() |
b017a0a785 | ||
![]() |
00d141a4da | ||
![]() |
88dfc50c50 | ||
![]() |
61ad1106c5 | ||
![]() |
f47d738577 | ||
![]() |
323f36a514 | ||
![]() |
151b1d2230 | ||
![]() |
f58f8f1a0a | ||
![]() |
7c786048cc | ||
![]() |
2c0a34c0e1 | ||
![]() |
b6320787e7 | ||
![]() |
c695e0a1f5 | ||
![]() |
8acd6538a5 | ||
![]() |
e18bb8f1b2 | ||
![]() |
d74f9565e4 | ||
![]() |
3016267a7b | ||
![]() |
d1b347b46f | ||
![]() |
777440ef22 | ||
![]() |
f104ff1519 | ||
![]() |
a7a0d26b27 | ||
![]() |
058cebb0b4 | ||
![]() |
af146e3989 | ||
![]() |
69c306bb69 | ||
![]() |
1cfe6190b6 | ||
![]() |
4b40e66534 | ||
![]() |
96af9412b3 | ||
![]() |
1ec9568997 | ||
![]() |
9a0f907bd4 | ||
![]() |
1d59a914b8 | ||
![]() |
91090aa87e | ||
![]() |
e1a3109a95 | ||
![]() |
c53d653751 | ||
![]() |
e95b99a742 | ||
![]() |
548f1f7107 | ||
![]() |
0a59f1ea2b | ||
![]() |
4b96b405ec | ||
![]() |
aaa6ced022 | ||
![]() |
0582716f19 | ||
![]() |
71df26f256 | ||
![]() |
8db0f6585e | ||
![]() |
0d703ac531 | ||
![]() |
55d73b3fbd | ||
![]() |
741bff8a8a | ||
![]() |
f8dcebb14d | ||
![]() |
d054c3e07f | ||
![]() |
c962f93dda | ||
![]() |
2bea049d20 | ||
![]() |
407a7b3703 | ||
![]() |
e57e8d32cb | ||
![]() |
417475643c | ||
![]() |
99801eb90a | ||
![]() |
28a061e4ee | ||
![]() |
be776f10a8 | ||
![]() |
57bfea7b71 | ||
![]() |
9126df161a | ||
![]() |
6ced4573b0 | ||
![]() |
be38c8eab7 | ||
![]() |
cab8e0e9f1 | ||
![]() |
e1378b9f92 | ||
![]() |
23d051e6bc | ||
![]() |
c3c1b4b246 | ||
![]() |
caa3a2a7c7 | ||
![]() |
f235eb42b6 | ||
![]() |
7aae640999 | ||
![]() |
7c606ef48c | ||
![]() |
cca70f538c | ||
![]() |
ac8f0c3e95 | ||
![]() |
7c1a19f6a1 | ||
![]() |
41e02bf064 | ||
![]() |
d8fcae856b | ||
![]() |
c4c7f55334 | ||
![]() |
76c10271f3 | ||
![]() |
88a271cf9d | ||
![]() |
fb74835018 | ||
![]() |
c801ff0241 | ||
![]() |
dfc3cd706a | ||
![]() |
95a1a3b860 | ||
![]() |
f5462ca5ba | ||
![]() |
f42722c526 | ||
![]() |
4d02900162 | ||
![]() |
3ca8bdd0a5 | ||
![]() |
371b054302 | ||
![]() |
055614e6ee | ||
![]() |
7d712b13fe | ||
![]() |
5ee8383868 | ||
![]() |
54f012f5be | ||
![]() |
d28a642283 | ||
![]() |
91becdeeb5 | ||
![]() |
b7c5b8a47e | ||
![]() |
776aad8427 | ||
![]() |
bcf9b8aa7c | ||
![]() |
15d0161240 | ||
![]() |
998db85994 | ||
![]() |
e6586b52cd | ||
![]() |
937964a02b | ||
![]() |
9b4afdfb35 | ||
![]() |
2121e663a0 | ||
![]() |
46699664dc | ||
![]() |
98ec788fb3 | ||
![]() |
e248862905 | ||
![]() |
8ba8acf675 | ||
![]() |
a7cf1ad918 | ||
![]() |
492ce3e38b | ||
![]() |
eaa5c217db | ||
![]() |
410d681d23 | ||
![]() |
deaf9f0fec | ||
![]() |
7ed3313c55 | ||
![]() |
1477ff7bb2 | ||
![]() |
7e2f6606bf | ||
![]() |
2acc8fc737 | ||
![]() |
96fe90ce9d | ||
![]() |
acf25e5375 | ||
![]() |
aa35e03692 | ||
![]() |
31cf9eb577 | ||
![]() |
9a8ebd3558 | ||
![]() |
148c587283 | ||
![]() |
7c9c4cbabb | ||
![]() |
20f14934c2 | ||
![]() |
840e67d12d | ||
![]() |
8ef57a265e | ||
![]() |
8677357450 | ||
![]() |
79ac2dae4f | ||
![]() |
20cad07a0b | ||
![]() |
2c97af2fef | ||
![]() |
95ded6296c | ||
![]() |
3b46095821 | ||
![]() |
1bf4e74e56 | ||
![]() |
9b75b46c49 | ||
![]() |
107077f5ec | ||
![]() |
528b70bfa2 | ||
![]() |
75ab4625b1 | ||
![]() |
bac3054ec2 | ||
![]() |
d63fd5f212 | ||
![]() |
c8b9df7ae5 | ||
![]() |
12daa88f39 | ||
![]() |
c5d895388b | ||
![]() |
5678d2cab5 | ||
![]() |
99d939a3a0 | ||
![]() |
c9a87e8514 | ||
![]() |
af08829f7d | ||
![]() |
28a59a4eac | ||
![]() |
727387931c | ||
![]() |
13a085099c | ||
![]() |
473f390ee6 | ||
![]() |
65cfc0933a | ||
![]() |
321e7f6df5 | ||
![]() |
dda623f040 | ||
![]() |
80d1147d08 | ||
![]() |
b28abcd6f2 | ||
![]() |
93885492d7 | ||
![]() |
ed5daa780d | ||
![]() |
00501edadd | ||
![]() |
fdb1472f9e | ||
![]() |
b176fbd365 | ||
![]() |
f2b0e49aa9 | ||
![]() |
5b8df68db5 | ||
![]() |
fce4b7dde9 | ||
![]() |
ba43672bf6 | ||
![]() |
1b93485064 | ||
![]() |
8d9f12d676 | ||
![]() |
1a89aa39c2 | ||
![]() |
6b60188702 | ||
![]() |
5e410040cc | ||
![]() |
b00f39f850 | ||
![]() |
7e396c5a4d | ||
![]() |
4d43f0bb9b | ||
![]() |
3512bb9dfe | ||
![]() |
7dde897e41 | ||
![]() |
f2cad0fe88 | ||
![]() |
eed2d8f68d | ||
![]() |
d1aebe2fbe | ||
![]() |
013614b149 | ||
![]() |
d55446d5cc | ||
![]() |
80a225e814 | ||
![]() |
c7e63308c5 | ||
![]() |
7bc712b5f3 | ||
![]() |
cf95a84f2a | ||
![]() |
b1e35836f9 | ||
![]() |
a794ab5c52 | ||
![]() |
8fd7d9cde9 | ||
![]() |
93f2f04bae | ||
![]() |
b2a8d78c73 | ||
![]() |
025afc37d4 | ||
![]() |
be5ca21019 | ||
![]() |
69584215b8 | ||
![]() |
e6cef96a03 | ||
![]() |
a6d4a71500 | ||
![]() |
388d8a7e27 | ||
![]() |
9df1b1b981 | ||
![]() |
82d426c14b | ||
![]() |
a2c5073a3d | ||
![]() |
11077b9178 | ||
![]() |
6e8011f111 | ||
![]() |
c6e23b58c5 | ||
![]() |
3267f1165e | ||
![]() |
e46d4764fd | ||
![]() |
2fb4829f68 | ||
![]() |
6009c45e5a | ||
![]() |
69505a1dca | ||
![]() |
c195d903c7 | ||
![]() |
07c1422bbb | ||
![]() |
6be688515d | ||
![]() |
5d83f12b35 | ||
![]() |
008c6a099a | ||
![]() |
125b72177c | ||
![]() |
75054731f4 | ||
![]() |
d36ce74eae | ||
![]() |
2433fa8a66 | ||
![]() |
adbff26d18 | ||
![]() |
bdcdeb9b55 | ||
![]() |
0636708dac | ||
![]() |
eb65b94ef4 | ||
![]() |
01b51f6ef1 | ||
![]() |
89b81cf1b8 | ||
![]() |
54396f4dc0 | ||
![]() |
0660a4c6e9 | ||
![]() |
cba7768e39 | ||
![]() |
a040ab42c3 | ||
![]() |
fa6c01a380 | ||
![]() |
ed6c415bb2 | ||
![]() |
59c71d9bb2 | ||
![]() |
7dde1b3bb7 | ||
![]() |
1d994fa1fe | ||
![]() |
5a9191fea5 | ||
![]() |
790b3ac3d2 | ||
![]() |
f298dd2979 | ||
![]() |
df7a7e2d3d | ||
![]() |
e28ca112de | ||
![]() |
a34dc0f4a0 | ||
![]() |
3eb682b0d9 | ||
![]() |
d824ab39dd | ||
![]() |
5d27d602d2 | ||
![]() |
66f3fd227b | ||
![]() |
e8f38fc73c | ||
![]() |
6f5756f3bf | ||
![]() |
a56b1d6614 | ||
![]() |
967492de76 | ||
![]() |
2b876fbb2e | ||
![]() |
8a0b0df3ff | ||
![]() |
20f4e959d6 | ||
![]() |
a46317f1d2 | ||
![]() |
d264c9154e | ||
![]() |
96dacd5838 | ||
![]() |
5a6f58a96d | ||
![]() |
05e57ff255 | ||
![]() |
cd32208639 | ||
![]() |
ecfd56f2f8 | ||
![]() |
4bfba0c633 | ||
![]() |
02251b0b03 | ||
![]() |
cf486aa9c7 | ||
![]() |
1dafc6a881 | ||
![]() |
4c70245e4f | ||
![]() |
b2a79c2732 | ||
![]() |
8ad9f92752 | ||
![]() |
3cf45385db | ||
![]() |
83c697a7ae | ||
![]() |
6b62c2c701 | ||
![]() |
428e10bc5a | ||
![]() |
6deeeaf9d9 | ||
![]() |
2c191482ab | ||
![]() |
cc934652cc | ||
![]() |
7641184189 | ||
![]() |
fae0dff78b | ||
![]() |
d0b7922ebb | ||
![]() |
6433ba14aa | ||
![]() |
bf8cbee305 | ||
![]() |
af24d3ed3d | ||
![]() |
942323218c | ||
![]() |
d1baf26c08 | ||
![]() |
8aa288d9aa | ||
![]() |
9c71856e49 | ||
![]() |
9300a794b1 | ||
![]() |
6d57058d9e | ||
![]() |
b6e5b24514 | ||
![]() |
f1d99aa191 | ||
![]() |
5597ad8c7d | ||
![]() |
cce1a68c0b | ||
![]() |
b3116d0c86 | ||
![]() |
0540f4f0ae | ||
![]() |
172fbcfbfb | ||
![]() |
2cfb171f9e | ||
![]() |
d1e589f60c | ||
![]() |
e866263fd0 | ||
![]() |
f749f7311c | ||
![]() |
29f0caf070 | ||
![]() |
b3a16435f8 | ||
![]() |
2a17b0faa1 | ||
![]() |
b29206df52 | ||
![]() |
88210f6f0f | ||
![]() |
571353a1f0 | ||
![]() |
22a2b3e308 | ||
![]() |
c91642cbb8 | ||
![]() |
12f334292a | ||
![]() |
9394ae46e8 | ||
![]() |
aa82875644 | ||
![]() |
6245c70de5 | ||
![]() |
51a85ac675 | ||
![]() |
a9d62233b4 | ||
![]() |
b9ff083fee | ||
![]() |
a8efa359f9 | ||
![]() |
0be27d429a | ||
![]() |
e6de1f6d5c | ||
![]() |
7db1b24358 | ||
![]() |
7b68f9b26c | ||
![]() |
9c0427be0d | ||
![]() |
da32ba604a | ||
![]() |
011c83bfc9 | ||
![]() |
5bc0364110 | ||
![]() |
b4e09ac819 | ||
![]() |
baa8b31078 | ||
![]() |
54c3afaa31 | ||
![]() |
00bc00d877 | ||
![]() |
9f03167c1e | ||
![]() |
b7add5ed8d | ||
![]() |
d78df1cd0a | ||
![]() |
b231f486b0 | ||
![]() |
0601a8583f | ||
![]() |
d9190b121f | ||
![]() |
d568cdadf1 | ||
![]() |
c17d98e073 | ||
![]() |
7d3a878c56 | ||
![]() |
f7d5605d2d | ||
![]() |
306a94261b | ||
![]() |
484dc39338 | ||
![]() |
dca9b3a1da | ||
![]() |
f11f9f0d71 | ||
![]() |
e10d41cb76 | ||
![]() |
b929b8e12a | ||
![]() |
f4d8ab82f1 | ||
![]() |
7aa17ef998 | ||
![]() |
aa2da9a398 | ||
![]() |
d920da77f2 | ||
![]() |
5920c352bd | ||
![]() |
934ea784cc | ||
![]() |
2577c24b08 | ||
![]() |
da74fc8a93 | ||
![]() |
1a2b4a1b02 | ||
![]() |
da7dfc58ef | ||
![]() |
c14b8279b6 | ||
![]() |
ebf5c7e0ac | ||
![]() |
86aa6a2041 | ||
![]() |
f0f7f13293 | ||
![]() |
d71a0af48d | ||
![]() |
2037a93c84 | ||
![]() |
40cdde008d | ||
![]() |
fad037d8f8 | ||
![]() |
b4a973dbf7 | ||
![]() |
ffc19cd7ce | ||
![]() |
68a7f37439 | ||
![]() |
a5a73fd188 | ||
![]() |
f030fa8140 | ||
![]() |
f2fefdaa9e | ||
![]() |
1a585304f3 | ||
![]() |
05e1f58c1a | ||
![]() |
dda87bb14f | ||
![]() |
2bce17eb46 | ||
![]() |
5356483d71 | ||
![]() |
a465c23cb3 | ||
![]() |
26c2519c8b | ||
![]() |
8ee63e6a8b | ||
![]() |
c71895ffcf | ||
![]() |
e52ae48f28 | ||
![]() |
340f591c09 | ||
![]() |
e873fed3f2 | ||
![]() |
b60dc747c6 | ||
![]() |
996d31ca5b | ||
![]() |
6bbe0a166d | ||
![]() |
48d500776a | ||
![]() |
4e3cfb2e86 | ||
![]() |
5361d1d182 | ||
![]() |
4a0d0aa896 | ||
![]() |
cab639f687 | ||
![]() |
2c4a905d36 | ||
![]() |
3119cf064b | ||
![]() |
a3b678e88b | ||
![]() |
e03b82a0d1 | ||
![]() |
546186670d | ||
![]() |
b02e9f864c | ||
![]() |
f7ba0acf96 | ||
![]() |
214856b97f | ||
![]() |
5410a0dc5f | ||
![]() |
a1049bce2c | ||
![]() |
660f2bce9f | ||
![]() |
065c0a0ab2 | ||
![]() |
61cb0c50da | ||
![]() |
c897cd3860 | ||
![]() |
184ccea8c2 | ||
![]() |
d5b8e6af8b | ||
![]() |
ff120808ad | ||
![]() |
ceaa91b511 | ||
![]() |
1f0ba55904 | ||
![]() |
37a97bf2a5 | ||
![]() |
109ccc1599 | ||
![]() |
cbdf348bd1 | ||
![]() |
d17079951c | ||
![]() |
a69402a205 | ||
![]() |
2b4472d9fe | ||
![]() |
6e9b54a5ff | ||
![]() |
10e3e5358e | ||
![]() |
3ff8eb8f14 | ||
![]() |
e4fa0716aa | ||
![]() |
fd3522eb54 | ||
![]() |
80d7c3e9cb | ||
![]() |
0df7bedbab | ||
![]() |
51cdae471f | ||
![]() |
ce79ef402e | ||
![]() |
d63c838799 | ||
![]() |
e209704acf | ||
![]() |
01d19609c4 | ||
![]() |
ee3bdfc9a0 | ||
![]() |
a0db71d3ff | ||
![]() |
fc40ee55c3 | ||
![]() |
2f61fcabf2 | ||
![]() |
9d30a98ff3 | ||
![]() |
b3c0b7a4e8 | ||
![]() |
3705aea23d | ||
![]() |
5a7f215604 | ||
![]() |
2608545104 | ||
![]() |
a78361ec9f | ||
![]() |
9b79092328 | ||
![]() |
41198b04be | ||
![]() |
c4684f0073 | ||
![]() |
063cabc610 | ||
![]() |
72304ff12e | ||
![]() |
d7e0aacd9a | ||
![]() |
3add028519 | ||
![]() |
1ef26ef98b | ||
![]() |
5d56f2bd01 | ||
![]() |
71c57b277b | ||
![]() |
38afd31cff | ||
![]() |
7a460ca0de | ||
![]() |
f3d5fef59d | ||
![]() |
10f1519c33 | ||
![]() |
aecb6d45ff | ||
![]() |
1c763939b9 | ||
![]() |
fbabf9c02c | ||
![]() |
d584761891 | ||
![]() |
65e85e5991 | ||
![]() |
ae665652ca | ||
![]() |
d5c494d510 | ||
![]() |
4760d5562a | ||
![]() |
455af2d04a | ||
![]() |
e13adaa5ca | ||
![]() |
cae4d7702d | ||
![]() |
ed6001f1bc | ||
![]() |
18e1b4032a | ||
![]() |
67b7871464 | ||
![]() |
1be67ff695 | ||
![]() |
8f3a4a425d | ||
![]() |
166010a3a1 | ||
![]() |
dd6f54cbbe | ||
![]() |
bc50cce9bb | ||
![]() |
100d1d9aa4 | ||
![]() |
56d5191734 | ||
![]() |
81e0a8ee80 | ||
![]() |
7af4a9c0f4 | ||
![]() |
769faa5877 | ||
![]() |
c1510e8dfe | ||
![]() |
632a29ed35 | ||
![]() |
04cf43eaf9 | ||
![]() |
34a25d9034 | ||
![]() |
7841145c72 | ||
![]() |
156ef8cb1f | ||
![]() |
3936dab5cf | ||
![]() |
aa5118a2ec | ||
![]() |
e8ff6841b2 | ||
![]() |
78d3fc96b3 | ||
![]() |
f4054126b3 | ||
![]() |
380363663c | ||
![]() |
3bb8b54286 | ||
![]() |
92975614b8 | ||
![]() |
f7a769d894 | ||
![]() |
4d8648720d | ||
![]() |
e9bbb411c0 | ||
![]() |
fcc6866980 | ||
![]() |
ce7e613017 | ||
![]() |
eb4f49c62b | ||
![]() |
084b8c30ad | ||
![]() |
a11085eb4b | ||
![]() |
f27b426089 | ||
![]() |
ddc2a16c68 | ||
![]() |
343a4856c3 | ||
![]() |
ba47834a9f | ||
![]() |
ebcf0633f1 | ||
![]() |
54307f7daa | ||
![]() |
f7903cec97 | ||
![]() |
78362323ed | ||
![]() |
8463bfa73b | ||
![]() |
cd3dd2ce9c | ||
![]() |
9966439c14 | ||
![]() |
59aca5c4c9 | ||
![]() |
edc3d911b9 | ||
![]() |
65c20e3708 | ||
![]() |
2eda22473d | ||
![]() |
1bff1e4aa8 | ||
![]() |
c099bfdb8f | ||
![]() |
527d206612 | ||
![]() |
6633ba5938 | ||
![]() |
fda61c1809 | ||
![]() |
50d6cc2c78 | ||
![]() |
2406fb759d | ||
![]() |
a5e599f3e4 | ||
![]() |
febe070629 | ||
![]() |
d1ef5772ed | ||
![]() |
3c9fc55fb1 | ||
![]() |
b7581d5a08 | ||
![]() |
1fc30d0012 | ||
![]() |
a7ae848186 | ||
![]() |
03c5d625b0 | ||
![]() |
59bb699df3 | ||
![]() |
985bf47a07 | ||
![]() |
2b172f9248 | ||
![]() |
b5ce9eefe8 | ||
![]() |
7c581836c5 | ||
![]() |
89d804caa6 | ||
![]() |
74f0fe3188 | ||
![]() |
3e4b543c38 | ||
![]() |
38bcc60fd1 | ||
![]() |
5250b62739 | ||
![]() |
1b33f198f0 | ||
![]() |
9d59c0ba0d | ||
![]() |
22bfb75c82 | ||
![]() |
2b9a0aa085 | ||
![]() |
d36c70b98e | ||
![]() |
941c0f4954 | ||
![]() |
94867de265 | ||
![]() |
02d4aafd10 | ||
![]() |
fcb64b9e77 | ||
![]() |
ed764e14f5 | ||
![]() |
0b20d24918 | ||
![]() |
00ef30b768 | ||
![]() |
cb6402ac92 | ||
![]() |
89758426a9 | ||
![]() |
d48c6ab314 | ||
![]() |
aa5e6c6189 | ||
![]() |
5bf7712307 | ||
![]() |
ddb847c974 | ||
![]() |
9e52107dbf | ||
![]() |
e1011919a5 | ||
![]() |
7c3aed4822 | ||
![]() |
dbe2c6bb59 | ||
![]() |
9e644185f2 | ||
![]() |
9a12ce32d3 | ||
![]() |
66d6a89431 | ||
![]() |
b7a605ea9c | ||
![]() |
a2b1cca1ab | ||
![]() |
b8cd3dbee6 | ||
![]() |
fe46126e19 | ||
![]() |
a439623119 | ||
![]() |
86713488b4 | ||
![]() |
fbaa5bcfa7 | ||
![]() |
23deaf6df3 | ||
![]() |
4db9c6fde8 | ||
![]() |
67ad2fe076 | ||
![]() |
00e169512c | ||
![]() |
3171f065eb | ||
![]() |
5dcb44b2d0 | ||
![]() |
b54c415f39 | ||
![]() |
7ecc818ca1 | ||
![]() |
85fdf28bdc | ||
![]() |
1c1f4be1f9 | ||
![]() |
e4f949f67b | ||
![]() |
2fe3c69a2d | ||
![]() |
08b3725307 | ||
![]() |
664fb87e4e | ||
![]() |
9bf90dfa98 | ||
![]() |
867f684b6a | ||
![]() |
3bcb2138c1 | ||
![]() |
693c2be098 | ||
![]() |
da63bcb4eb | ||
![]() |
564a62e780 | ||
![]() |
01e4837669 | ||
![]() |
0a2a1a8b1a | ||
![]() |
154ddfe1cc | ||
![]() |
14786383ec | ||
![]() |
e5aae017a6 | ||
![]() |
68ceb8c71e | ||
![]() |
dcd94a7137 | ||
![]() |
1e75a3675e | ||
![]() |
6c301e2512 | ||
![]() |
59c06c7f02 | ||
![]() |
85aad4c431 | ||
![]() |
ade4df79ed | ||
![]() |
ec12b41293 | ||
![]() |
7216c88e0b | ||
![]() |
fac87c69e2 | ||
![]() |
62d4fdeb32 | ||
![]() |
91da0c7d0d | ||
![]() |
b116c2582f | ||
![]() |
276307fb5c | ||
![]() |
54ae613298 | ||
![]() |
a22040f4e3 | ||
![]() |
630cc55361 | ||
![]() |
2aacace6ad | ||
![]() |
91714727c3 | ||
![]() |
8e21f36619 | ||
![]() |
baa88ca957 | ||
![]() |
1874fc9b47 | ||
![]() |
6c9543d05a | ||
![]() |
a614c35f05 | ||
![]() |
0d7bc8e7d8 | ||
![]() |
39b3d500d0 | ||
![]() |
03200f3828 | ||
![]() |
044a5eadcd | ||
![]() |
e924bd96ec | ||
![]() |
e234240e74 | ||
![]() |
33473b0db1 | ||
![]() |
cfad29f9d4 | ||
![]() |
7ffdbea3ec | ||
![]() |
2c2fb4d305 | ||
![]() |
709172c506 | ||
![]() |
8727ee50ee | ||
![]() |
04d4d20ba6 | ||
![]() |
e77ea9358e | ||
![]() |
6263dc0649 | ||
![]() |
52eccfc384 | ||
![]() |
13085416e2 | ||
![]() |
f7efa99fc3 | ||
![]() |
32d6b8844a | ||
![]() |
1c4287a3ed | ||
![]() |
354fa85f38 | ||
![]() |
78fb0760f3 | ||
![]() |
dfdda4d27f | ||
![]() |
6d8f90bdce | ||
![]() |
3e531da29c | ||
![]() |
6065ebb6b4 | ||
![]() |
75373935f1 | ||
![]() |
1d5784a4d1 | ||
![]() |
5df94ffe33 | ||
![]() |
6aeaa8812a | ||
![]() |
b1f8044e02 | ||
![]() |
09fc0991bd | ||
![]() |
a7b70efef0 | ||
![]() |
4c3df8e769 | ||
![]() |
15418f7bdc | ||
![]() |
0a2bc468e5 | ||
![]() |
df8bcff315 | ||
![]() |
56e992ba7a | ||
![]() |
e7a6582229 | ||
![]() |
02946a9c9b | ||
![]() |
a5ca5fcff1 | ||
![]() |
b412c03b72 | ||
![]() |
22678d4ecc | ||
![]() |
d84099e41f | ||
![]() |
853aac57a6 | ||
![]() |
a5bddcb033 | ||
![]() |
3a7178166f | ||
![]() |
3f89bfb444 | ||
![]() |
e5ba3a94a4 | ||
![]() |
dc7af61a3a | ||
![]() |
da560a0275 | ||
![]() |
41cf694792 | ||
![]() |
59f42c0dbd | ||
![]() |
b2302e2e9f | ||
![]() |
8e6c0f8ade | ||
![]() |
ba92505daa | ||
![]() |
e6e93888f6 | ||
![]() |
e92598dc5b | ||
![]() |
697c6a1aae | ||
![]() |
2487001b0d | ||
![]() |
7cd722bcc2 | ||
![]() |
e0b7d7c3bb | ||
![]() |
23470b705d | ||
![]() |
70a624a9f3 | ||
![]() |
bce38385ab | ||
![]() |
8848b126ca | ||
![]() |
45a90fbe9d | ||
![]() |
d2929bf776 | ||
![]() |
3bab1c1250 | ||
![]() |
e59d4696da | ||
![]() |
f44f74f34c | ||
![]() |
22474722ad | ||
![]() |
99df503a90 | ||
![]() |
0df055db8c | ||
![]() |
f73936d056 | ||
![]() |
e1c976e09a | ||
![]() |
21579f7a40 | ||
![]() |
693882aff1 | ||
![]() |
6b42ed0845 | ||
![]() |
ed9373bc7e | ||
![]() |
0d2f5cc553 | ||
![]() |
12f6e9e552 | ||
![]() |
999c7a8fff | ||
![]() |
a5494f4681 | ||
![]() |
404a5500df | ||
![]() |
4442833c1b | ||
![]() |
4cb800d485 | ||
![]() |
f1598c3c4b | ||
![]() |
6b9915a425 | ||
![]() |
59befa908f | ||
![]() |
af68fb24b5 | ||
![]() |
73870663f6 | ||
![]() |
ac48cf6b57 | ||
![]() |
6a5d4a1363 | ||
![]() |
8be3996fb2 | ||
![]() |
bd7d2ffb09 | ||
![]() |
9375248a09 | ||
![]() |
713d1920a3 | ||
![]() |
adc1212cd7 | ||
![]() |
b8803d75fe | ||
![]() |
8006acb8c9 | ||
![]() |
7be7e3b7f0 | ||
![]() |
a6c18c91e5 | ||
![]() |
81c531e2b5 | ||
![]() |
d66910740f | ||
![]() |
3323bf500d | ||
![]() |
3cc34d18e0 | ||
![]() |
aeb050440f | ||
![]() |
a9a6bd0d31 | ||
![]() |
2b921def52 | ||
![]() |
f5a1a97383 | ||
![]() |
c87b96f8f0 | ||
![]() |
1def105bda | ||
![]() |
1d67a30ece | ||
![]() |
1a3d50ca17 | ||
![]() |
ce26722c96 | ||
![]() |
f2aab26b6e | ||
![]() |
10e086594b | ||
![]() |
30ea77182d | ||
![]() |
e899d7d39a | ||
![]() |
3b2e780a20 | ||
![]() |
d443d89616 | ||
![]() |
c981ac45d3 | ||
![]() |
ceabca3a43 | ||
![]() |
99b6fcbc42 | ||
![]() |
dde79bf5d0 | ||
![]() |
ff3e957558 | ||
![]() |
1466c7a927 | ||
![]() |
1a7c18d209 | ||
![]() |
2c8ed7c494 | ||
![]() |
0526b4c5e0 | ||
![]() |
c2f4e6bc48 | ||
![]() |
0cc5fcb33a | ||
![]() |
e461a9564f | ||
![]() |
183879d51c | ||
![]() |
cddae05b53 | ||
![]() |
67d831d898 | ||
![]() |
d726323220 | ||
![]() |
f76fea84cc | ||
![]() |
6ec24e12f7 | ||
![]() |
cf27cce44d | ||
![]() |
6ea22d121f | ||
![]() |
2d7bfaa9dc | ||
![]() |
0e62cc4fec | ||
![]() |
ae0307092f | ||
![]() |
2ebf6fe7fa | ||
![]() |
f9805de74c | ||
![]() |
20b7b6b95c | ||
![]() |
c2beca3504 | ||
![]() |
7414a1badf | ||
![]() |
cd5f7e08c4 | ||
![]() |
fd804fa29a | ||
![]() |
08c310c59e | ||
![]() |
46bde0918f | ||
![]() |
a77c3aa347 | ||
![]() |
d27c04dc64 | ||
![]() |
b0c8326255 | ||
![]() |
99a35a3ffd | ||
![]() |
c5673efea2 | ||
![]() |
c3b48e0033 | ||
![]() |
5aa57dd402 | ||
![]() |
d919d3f068 | ||
![]() |
38ad418005 | ||
![]() |
ba50786118 | ||
![]() |
aee3cb3e03 | ||
![]() |
61430b07e2 | ||
![]() |
5d393598c5 | ||
![]() |
4b0c075b53 | ||
![]() |
2b5b6434da | ||
![]() |
ae0877037a | ||
![]() |
64a12da2e6 | ||
![]() |
6865fa40f7 | ||
![]() |
79632aeed0 | ||
![]() |
6f03f3e5fd | ||
![]() |
df53150972 | ||
![]() |
9282cd630d | ||
![]() |
a3eb2fc7cc | ||
![]() |
4e39d03240 | ||
![]() |
8cadb30179 | ||
![]() |
d2c02ca016 | ||
![]() |
1bbfba32a5 | ||
![]() |
cf59cc3a49 | ||
![]() |
897db61ee2 | ||
![]() |
ac14ac23fb | ||
![]() |
0f1bc34d37 | ||
![]() |
26d318356f | ||
![]() |
9f4a0d35b6 | ||
![]() |
a201be6487 | ||
![]() |
380ebcd1d8 | ||
![]() |
c06499033d | ||
![]() |
0874957993 | ||
![]() |
6019c7412f | ||
![]() |
30c300cabf | ||
![]() |
46f11f02ab | ||
![]() |
71e6029117 | ||
![]() |
5c67da7882 | ||
![]() |
af4f6de4b9 | ||
![]() |
9b173d6c68 | ||
![]() |
2f4fb5230d | ||
![]() |
9144a1fec3 | ||
![]() |
4192af1d46 | ||
![]() |
0e72124cdc | ||
![]() |
8300b9afee | ||
![]() |
5f61e74dfb | ||
![]() |
44b3ccd21e | ||
![]() |
29e54ce7ec | ||
![]() |
f2835209c6 | ||
![]() |
a0a1b8a9c0 | ||
![]() |
83f6ec1cb9 | ||
![]() |
af5b07202e | ||
![]() |
0bcfa59a12 | ||
![]() |
e00095f68d | ||
![]() |
5cbd2a1a82 | ||
![]() |
9b5a45a3f6 | ||
![]() |
325500620a | ||
![]() |
134bfa1a0b | ||
![]() |
df593859fa | ||
![]() |
4204fae5a0 | ||
![]() |
cc12c49143 | ||
![]() |
f09694da70 | ||
![]() |
d923df2156 | ||
![]() |
71d1db456a | ||
![]() |
ec0eaa2faa | ||
![]() |
836cd21df2 | ||
![]() |
7a4c364b49 | ||
![]() |
79f10ba724 | ||
![]() |
d0ea4ecd1b | ||
![]() |
867e448e21 | ||
![]() |
50a07d368f | ||
![]() |
21e2435350 | ||
![]() |
0dab66f24c | ||
![]() |
827595ded2 | ||
![]() |
fda99f18e8 | ||
![]() |
c9b76c9bc4 | ||
![]() |
3e2e2de482 | ||
![]() |
d648873e21 | ||
![]() |
2490b26277 | ||
![]() |
66ccd7a71d | ||
![]() |
4ef440d499 | ||
![]() |
e334dd1d10 | ||
![]() |
c7e62acf9d | ||
![]() |
f44adf92b4 | ||
![]() |
87cd07801d | ||
![]() |
24e96e2724 | ||
![]() |
a5f5a9ff24 | ||
![]() |
dd19b8a236 | ||
![]() |
0a80f40c07 | ||
![]() |
772cc97a8b | ||
![]() |
ce7f1d6c26 | ||
![]() |
a41994fc0f | ||
![]() |
6e42a729e7 | ||
![]() |
33a634e4fc | ||
![]() |
fc61c52939 | ||
![]() |
5e4ff5b780 | ||
![]() |
2e5903abed | ||
![]() |
62db8f574f | ||
![]() |
d44ee41268 | ||
![]() |
6baadfef75 | ||
![]() |
fbec6a9b35 | ||
![]() |
197d9359dd | ||
![]() |
fa083e0bde | ||
![]() |
1cf427fddd | ||
![]() |
819e9e89dc | ||
![]() |
900632c5f5 | ||
![]() |
dc66a4334f | ||
![]() |
badbe334df | ||
![]() |
fa334d6e84 | ||
![]() |
9580d4e72e | ||
![]() |
252257be8b | ||
![]() |
04c253995f | ||
![]() |
8c007fd627 | ||
![]() |
afcd59e1a4 | ||
![]() |
bba0ecad63 | ||
![]() |
c1058ac665 | ||
![]() |
b891fcdc4f | ||
![]() |
3bea9dfc8f | ||
![]() |
4d99d7dfc4 | ||
![]() |
373b8eddeb | ||
![]() |
d463d1feb3 | ||
![]() |
48a96a8d79 | ||
![]() |
0e1128aba3 | ||
![]() |
c3be4957ba | ||
![]() |
3618aadf74 | ||
![]() |
74a8c36c74 | ||
![]() |
49aa52b36f | ||
![]() |
ee95a05b48 | ||
![]() |
134e544718 | ||
![]() |
306a767686 | ||
![]() |
47ca9d303a | ||
![]() |
6fc68fe540 | ||
![]() |
9195bd7f4e | ||
![]() |
4ef503e07f | ||
![]() |
4711139513 | ||
![]() |
fc56508b91 | ||
![]() |
232c78364f | ||
![]() |
d85e16f1fa | ||
![]() |
562b386cb5 | ||
![]() |
daab751299 | ||
![]() |
9e82ff8de5 | ||
![]() |
52b2c23565 | ||
![]() |
617fd688db | ||
![]() |
2cf7fff3ba | ||
![]() |
a34d3fde1f | ||
![]() |
be054a723e | ||
![]() |
fc43f6a52e | ||
![]() |
195d3cb69b | ||
![]() |
92c69b6011 | ||
![]() |
ea78805587 | ||
![]() |
76e90ea321 | ||
![]() |
b300758aa5 | ||
![]() |
68c44c55d4 | ||
![]() |
228a89f61d | ||
![]() |
2645453de2 | ||
![]() |
5ce069a4c0 | ||
![]() |
6661434c35 | ||
![]() |
aee6b3a32d | ||
![]() |
4b0cc260cb | ||
![]() |
7611315941 | ||
![]() |
3b1f71a601 | ||
![]() |
fead3555fc | ||
![]() |
cd3f99fc90 | ||
![]() |
a2e6855117 | ||
![]() |
1e4cd3a5da | ||
![]() |
865898ac4f | ||
![]() |
44ace26cde | ||
![]() |
d0350c7672 | ||
![]() |
943a115ef0 | ||
![]() |
745322b3fe | ||
![]() |
90ea2cb760 | ||
![]() |
2d6c3c7d64 | ||
![]() |
4401c49c54 | ||
![]() |
fa3bfa7008 | ||
![]() |
14c2ddc725 | ||
![]() |
1e55dc8f65 | ||
![]() |
78980dde3f | ||
![]() |
3a770b6f40 | ||
![]() |
b271adef3f | ||
![]() |
639c9770b8 | ||
![]() |
e6b29666ad | ||
![]() |
dd052250f6 | ||
![]() |
1223a22d7e | ||
![]() |
b6f034f8e3 | ||
![]() |
ca01b67396 | ||
![]() |
eb3a2b0bb1 | ||
![]() |
41711fb527 | ||
![]() |
6e7a9a8796 | ||
![]() |
92838c0572 | ||
![]() |
3f71da19ee | ||
![]() |
43a6dd2b79 | ||
![]() |
806fac97db | ||
![]() |
9fd07827db | ||
![]() |
28cdcec7ee | ||
![]() |
cb2e946435 | ||
![]() |
2e7bb50d43 | ||
![]() |
3d7875ba18 | ||
![]() |
29ab88d581 | ||
![]() |
d93bbe4fe3 | ||
![]() |
3a2d062e22 | ||
![]() |
c3ef897a71 | ||
![]() |
73964e6be4 | ||
![]() |
520c000d3b | ||
![]() |
e3c1db7b88 | ||
![]() |
9ba3218f61 | ||
![]() |
a912d65608 | ||
![]() |
ffd6bb9c46 | ||
![]() |
6a238c3a11 | ||
![]() |
3210d72068 | ||
![]() |
add57592cd | ||
![]() |
584131c8c4 | ||
![]() |
9e8a1b4e3d | ||
![]() |
61efc2de16 | ||
![]() |
ce1f688b38 | ||
![]() |
088464bf13 | ||
![]() |
936ca3ffc2 | ||
![]() |
4f6320f7cf | ||
![]() |
ccf3169381 | ||
![]() |
54d66d2b02 | ||
![]() |
25aeb94364 | ||
![]() |
5657ef5b40 | ||
![]() |
c8818d104f | ||
![]() |
ed239034bf | ||
![]() |
774f936d3b | ||
![]() |
905c28886a | ||
![]() |
ad430074f7 | ||
![]() |
6449f01185 | ||
![]() |
0c3488472c | ||
![]() |
ee7990ec1e | ||
![]() |
b892b48388 | ||
![]() |
340213e4ff | ||
![]() |
989f2eed4c | ||
![]() |
4fadb7a6ab | ||
![]() |
8f1fd120eb | ||
![]() |
f2fc3b60a4 | ||
![]() |
c0735f71ef | ||
![]() |
858f9b3430 | ||
![]() |
402a7a85b8 | ||
![]() |
97fbc6087c | ||
![]() |
cc4a4766a9 | ||
![]() |
6821ac2b60 | ||
![]() |
06e10655ec | ||
![]() |
d32fdfa987 | ||
![]() |
9e97f063e5 | ||
![]() |
627f174ae4 | ||
![]() |
c349c28f08 | ||
![]() |
e73f96ffe9 | ||
![]() |
bd4ab51aff | ||
![]() |
81823c35ec | ||
![]() |
c567949205 | ||
![]() |
def136cb1b | ||
![]() |
889dc2e5ef | ||
![]() |
371323f929 | ||
![]() |
1694702d11 | ||
![]() |
048f50ddc4 | ||
![]() |
488cfc576b | ||
![]() |
1d8e564acf | ||
![]() |
6e94bc279b | ||
![]() |
90ee15cccf | ||
![]() |
751ff334ac | ||
![]() |
c200af1ad2 | ||
![]() |
5232afa812 | ||
![]() |
ad8e2f51d7 | ||
![]() |
ff708cf580 | ||
![]() |
f93ee9f01b | ||
![]() |
611320e661 | ||
![]() |
8a56d82cb9 | ||
![]() |
c052086388 | ||
![]() |
d4bfbf925a | ||
![]() |
b6b7e7be4f | ||
![]() |
61ef48798b | ||
![]() |
d65382e80d | ||
![]() |
e97d3e6fe9 | ||
![]() |
5cb189d545 | ||
![]() |
7897fe5f00 | ||
![]() |
6c4e0e8992 | ||
![]() |
3c6a533236 | ||
![]() |
69a9108655 | ||
![]() |
4fdc7bb7d3 | ||
![]() |
170bd7034a | ||
![]() |
2bc99753d6 | ||
![]() |
3ae1671b46 | ||
![]() |
4b9f137d41 | ||
![]() |
651f733622 | ||
![]() |
a2b0c2c05f | ||
![]() |
21476927ef | ||
![]() |
8c86081271 | ||
![]() |
fe5e94d277 | ||
![]() |
585db8094e | ||
![]() |
4bcc536d42 | ||
![]() |
b22c2e5ca5 | ||
![]() |
715b714781 | ||
![]() |
1d4b95a827 | ||
![]() |
0530a01445 | ||
![]() |
2a29eba66e | ||
![]() |
e93b66f4b8 | ||
![]() |
44bb9d7f12 | ||
![]() |
4f58f20b94 | ||
![]() |
cd047ea6fe | ||
![]() |
7d6526f291 | ||
![]() |
ede17bdae8 | ||
![]() |
876315613e | ||
![]() |
b2c5efb4bd | ||
![]() |
74047866e5 | ||
![]() |
6fb25c2111 | ||
![]() |
db3fc0014e | ||
![]() |
7105f8e719 | ||
![]() |
96ab7df306 | ||
![]() |
1a964adabb | ||
![]() |
9f4adc0777 | ||
![]() |
da1edce3aa | ||
![]() |
863012256f | ||
![]() |
faecbf7f45 | ||
![]() |
49581b6749 | ||
![]() |
d795d506dd | ||
![]() |
6348b8ed3f | ||
![]() |
aa2ec54189 | ||
![]() |
a8fdd78b21 | ||
![]() |
e1170b8a95 | ||
![]() |
400ef7d2c5 | ||
![]() |
02fec2c512 | ||
![]() |
8f4ec5e8d6 | ||
![]() |
e16e10a8e8 | ||
![]() |
15764b7642 | ||
![]() |
a4247c6c6a | ||
![]() |
1fcfc7c874 | ||
![]() |
0a885188a8 | ||
![]() |
213a78c864 | ||
![]() |
767d0d0efe | ||
![]() |
51ac0e4c33 | ||
![]() |
f3d1f2a84b | ||
![]() |
856fcdd9f2 | ||
![]() |
3aaef99bb3 | ||
![]() |
fed96e723f | ||
![]() |
58ba3c1838 | ||
![]() |
d6b233da3e | ||
![]() |
8bf7668cc5 | ||
![]() |
632badddb5 | ||
![]() |
c2e1cd370a | ||
![]() |
4ac787bef0 | ||
![]() |
678b9502ff | ||
![]() |
e2222be7b8 | ||
![]() |
4c5c2eef73 | ||
![]() |
064baae07d | ||
![]() |
a3a0f0fe6c | ||
![]() |
c5dd3c39d9 | ||
![]() |
7bb0853525 | ||
![]() |
25928bf38a | ||
![]() |
09e516db93 | ||
![]() |
0bf26224df | ||
![]() |
347704fc8e | ||
![]() |
829795f3fe | ||
![]() |
5f25b5458e | ||
![]() |
d3e80198a8 | ||
![]() |
5afb2936b8 | ||
![]() |
2da3f2a2b8 | ||
![]() |
acebdc610f | ||
![]() |
490df18d60 | ||
![]() |
9f963bdd2d | ||
![]() |
104d19e203 | ||
![]() |
261981ca23 | ||
![]() |
1acc469ba2 | ||
![]() |
64287d42b8 | ||
![]() |
bcf22f193c | ||
![]() |
6272f08d3a | ||
![]() |
14cf7a3f6f | ||
![]() |
51a92ecbe7 | ||
![]() |
567235ff3c | ||
![]() |
3a7f30474d | ||
![]() |
2f8a7c412e | ||
![]() |
f338da681b | ||
![]() |
80a2a2da3b | ||
![]() |
1b660ebd80 | ||
![]() |
43b9854190 | ||
![]() |
3779237f6a | ||
![]() |
e94d9b3b1a | ||
![]() |
8ec4bcfa5e | ||
![]() |
962835fc80 | ||
![]() |
cdd7e63e46 | ||
![]() |
1ae4678cdb | ||
![]() |
ec6dcbe049 | ||
![]() |
58e609c6f3 | ||
![]() |
128e52266f | ||
![]() |
576e50822f | ||
![]() |
5ff61d44d7 | ||
![]() |
7b1b2ecb42 | ||
![]() |
70b09a5265 | ||
![]() |
54ec23c85a | ||
![]() |
d97b88bcdd | ||
![]() |
6f5c7626c8 | ||
![]() |
0e1525ca7f | ||
![]() |
f6b520fb30 | ||
![]() |
a1849663cf | ||
![]() |
d4d0b075ed | ||
![]() |
e90bb990e8 | ||
![]() |
a9808cab34 | ||
![]() |
a40bb78a07 | ||
![]() |
8111ee0c76 | ||
![]() |
7191b57318 | ||
![]() |
f44670d2ca | ||
![]() |
9671f0c2eb | ||
![]() |
6ad6eef347 | ||
![]() |
43ed4d411e | ||
![]() |
7c8d5453cc | ||
![]() |
f4a40367f6 | ||
![]() |
e786ef279a | ||
![]() |
a6684e1bb5 | ||
![]() |
4fbe389245 | ||
![]() |
04b0af5d58 | ||
![]() |
7f797af3eb | ||
![]() |
4a3a0fb0bb | ||
![]() |
f9e9eec611 | ||
![]() |
cb71742a91 | ||
![]() |
638c7054d0 | ||
![]() |
fb21633f8c | ||
![]() |
9bb7cf1825 | ||
![]() |
e00ad4498b | ||
![]() |
a0f7e62616 | ||
![]() |
11653015ab | ||
![]() |
e6a37cab0f | ||
![]() |
7fcc6713a4 | ||
![]() |
5694938b81 | ||
![]() |
b6d3c17a87 | ||
![]() |
40ba175409 | ||
![]() |
bcc98d507b | ||
![]() |
ce1c32c930 | ||
![]() |
08d462f698 | ||
![]() |
d32e615837 | ||
![]() |
83368cdf3a | ||
![]() |
45525a6e3c | ||
![]() |
75a082c8df | ||
![]() |
d3d4d99fe4 | ||
![]() |
f05764d4a8 | ||
![]() |
a7822fcd55 | ||
![]() |
f0a0d2022a | ||
![]() |
2ccc85926e | ||
![]() |
b9699ab8bc | ||
![]() |
02ca7271fc | ||
![]() |
9dbe4bc8a1 | ||
![]() |
2ca20096a0 | ||
![]() |
1d7e8e3adb | ||
![]() |
88c897e09c | ||
![]() |
f1a1ec128f | ||
![]() |
b0bc03f251 | ||
![]() |
0f57e9ad1d | ||
![]() |
8b27c8986b | ||
![]() |
1210117922 | ||
![]() |
3a1e310e22 | ||
![]() |
918c043f10 | ||
![]() |
fbfb02d7ca | ||
![]() |
3026837946 | ||
![]() |
f7ccdad1df | ||
![]() |
4b4f70e6e0 | ||
![]() |
c28e9861ba | ||
![]() |
15c2b5466e | ||
![]() |
58bcdff782 | ||
![]() |
a08cdeeeb6 | ||
![]() |
9be2f7712d | ||
![]() |
f59e34758c | ||
![]() |
fc3846424d | ||
![]() |
11a0e4943a | ||
![]() |
5d95eb0420 | ||
![]() |
ef0b797e60 | ||
![]() |
dfa34a1838 | ||
![]() |
d58a32e283 | ||
![]() |
5fa1abe7bc | ||
![]() |
251dec084c | ||
![]() |
52ef24a5f6 | ||
![]() |
0a7fc04fa5 | ||
![]() |
612dbcc868 | ||
![]() |
850a92bee9 | ||
![]() |
5664e98d89 | ||
![]() |
1bd6f0f04e | ||
![]() |
58e3e0f53e | ||
![]() |
a3d8585276 | ||
![]() |
882269bf72 | ||
![]() |
c71e21ca0b | ||
![]() |
890ab25210 | ||
![]() |
81687c19ef | ||
![]() |
c98165c61e | ||
![]() |
0ee3ddef1d | ||
![]() |
06af1481e6 | ||
![]() |
740108432b | ||
![]() |
331959e3da | ||
![]() |
679e49e55f | ||
![]() |
5ae69f2466 | ||
![]() |
15c7d53acc | ||
![]() |
a1d93fca52 | ||
![]() |
56af6dda1d | ||
![]() |
7c62e115c3 | ||
![]() |
5f13e2d7ab | ||
![]() |
0186b3db8b | ||
![]() |
db4e353d8a | ||
![]() |
30468c2dab | ||
![]() |
3afe0a8a99 | ||
![]() |
fc626dc4c0 | ||
![]() |
7e4f582445 | ||
![]() |
f740443f73 | ||
![]() |
d43da60e8e | ||
![]() |
d29759da9b | ||
![]() |
4b3a2e441b | ||
![]() |
a8b8d07bf4 | ||
![]() |
34410446f3 | ||
![]() |
13098a351d | ||
![]() |
d071fa03a6 | ||
![]() |
6ff65c37ac | ||
![]() |
e03396490e | ||
![]() |
ad453b6400 | ||
![]() |
500a572a9c | ||
![]() |
f3bffcb5fb | ||
![]() |
30305ffd1c | ||
![]() |
62f2e33b64 | ||
![]() |
24d655ec76 | ||
![]() |
7668f795da | ||
![]() |
96a5853333 | ||
![]() |
6b767410dc | ||
![]() |
3f8dd1d457 | ||
![]() |
8cb501186a | ||
![]() |
bdfe42b22f | ||
![]() |
37c4fbdec0 | ||
![]() |
9af109d23d | ||
![]() |
3322e3337a | ||
![]() |
6ede71d164 | ||
![]() |
da2e41d59d | ||
![]() |
c08af69752 | ||
![]() |
1a3b438bfb | ||
![]() |
f15ee8cc5b | ||
![]() |
d65897ad09 | ||
![]() |
607f9690cc | ||
![]() |
3cbdc511c8 | ||
![]() |
e21ab89f89 | ||
![]() |
c50e0153f6 | ||
![]() |
bd3c2f9d78 | ||
![]() |
57bcc6d1ac | ||
![]() |
8331cb9f38 | ||
![]() |
1ef0f32ad9 | ||
![]() |
c9cab7f43d | ||
![]() |
73d8efcea7 | ||
![]() |
e9c45a45d7 | ||
![]() |
5b94307559 | ||
![]() |
ee03b65f2d | ||
![]() |
7920512f2b | ||
![]() |
928e355618 | ||
![]() |
efac0a7026 | ||
![]() |
42d10ed012 | ||
![]() |
b0655adff4 | ||
![]() |
c1b025d04b | ||
![]() |
3cf5884e10 | ||
![]() |
ce0acb9547 | ||
![]() |
777c54f6a1 | ||
![]() |
8e17d093c7 | ||
![]() |
33ba9d6e59 | ||
![]() |
f6a1751efe | ||
![]() |
00372947fa | ||
![]() |
c86167851f | ||
![]() |
6a90952319 | ||
![]() |
02f135eec3 | ||
![]() |
daa9bcc471 | ||
![]() |
5072fd6a07 | ||
![]() |
20f5868759 | ||
![]() |
db0297e898 | ||
![]() |
1efb03f3be | ||
![]() |
4e00d967a6 | ||
![]() |
266ca8db68 | ||
![]() |
2b976a3eec | ||
![]() |
962429ad33 | ||
![]() |
5d5c645308 | ||
![]() |
f1c7792f87 | ||
![]() |
fe86a21303 | ||
![]() |
33cccd76b3 | ||
![]() |
1f90c552a7 | ||
![]() |
614e789ce4 | ||
![]() |
07f2f82675 | ||
![]() |
d28d2be7c5 | ||
![]() |
a3250b31c2 | ||
![]() |
eae97e2017 | ||
![]() |
7983a52de9 | ||
![]() |
92b1b81b25 | ||
![]() |
f91fe303fb | ||
![]() |
529b0db71d | ||
![]() |
bd142ac66d | ||
![]() |
3749937799 | ||
![]() |
16d309cc34 | ||
![]() |
5315bc950a | ||
![]() |
2dbf6a9faf | ||
![]() |
a67e38bd1b | ||
![]() |
4688176216 | ||
![]() |
dbee9aafd7 | ||
![]() |
8c20617b1a | ||
![]() |
9e2ed6480d | ||
![]() |
7ef1b1aba9 | ||
![]() |
b74071d4cf | ||
![]() |
dc7578a5c3 | ||
![]() |
2227cf5fe2 |
@@ -1,6 +0,0 @@
|
|||||||
assets/js/critical/color.js
|
|
||||||
assets/js/analytics.js
|
|
||||||
assets/js/flexsearch.js
|
|
||||||
assets/js/sharing.js
|
|
||||||
assets/js/vendor
|
|
||||||
node_modules
|
|
42
.github/ISSUE_TEMPLATE/bug_report.md
vendored
42
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -7,31 +7,55 @@ assignees: ''
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Describe the bug**
|
<!---
|
||||||
|
Please use the discussion forum (https://github.com/gethinode/hinode/discussions) for questions and troubleshooting. We prefer to use GitHub issues for verified bugs and vetted enhancements.
|
||||||
|
|
||||||
|
When submitting a bug, please include the exact steps to reproduce the issue. Ideally, use a minimal repo created with the Hinode installation steps for either Hugo or npm (https://gethinode.com/docs/getting-started/introduction/#installation). Add any additional commands and configuration adjustments from there on.
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Describe the bug
|
||||||
|
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
**To reproduce**
|
## To reproduce
|
||||||
|
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
1. Go to '...'
|
1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
3. Scroll down to '....'
|
3. Scroll down to '....'
|
||||||
4. See error
|
4. See error
|
||||||
|
|
||||||
**Expected behavior**
|
Alternatively, include the commands from your terminal as bash script.
|
||||||
A clear and concise description of what you expected to happen.
|
|
||||||
|
## Expected behavior
|
||||||
|
|
||||||
|
If applicable, a clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
## Log file
|
||||||
|
|
||||||
**Log file**
|
|
||||||
If applicable, add a copy of Hugo's log messages.
|
If applicable, add a copy of Hugo's log messages.
|
||||||
|
|
||||||
**Screenshots**
|
## Screenshots
|
||||||
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
**Environment (please complete the following information):**
|
## Host environment
|
||||||
|
|
||||||
|
Please complete the following information where applicable.
|
||||||
|
|
||||||
- Hinode version: [e.g. v0.11.3]
|
- Hinode version: [e.g. v0.11.3]
|
||||||
- Host OS: [e.g. macOS Ventura 13.3]
|
- Host OS: [e.g. macOS Ventura 13.3]
|
||||||
- Node version: [e.g. node v18.15.0]
|
- 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)]
|
- Browser: [e.g. Google Chrome Version 108.0.5359.124 (Official Build) (arm64)]
|
||||||
|
|
||||||
**Additional context**
|
## Hugo environment
|
||||||
|
|
||||||
|
Copy the output of `hugo env` or `npm run env` here.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[env output]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional context
|
||||||
|
|
||||||
Add any other context about the problem here.
|
Add any other context about the problem here.
|
||||||
|
14
.github/ISSUE_TEMPLATE/feature_request.md
vendored
14
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -7,14 +7,18 @@ assignees: ''
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
## Problem or enhancement idea
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
||||||
|
A clear and concise description of what the problem is. E.g. I'm always frustrated when ... Or else, the enhancement idea to further improve Hinode.
|
||||||
|
|
||||||
|
## Proposed solution
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
|
||||||
A clear and concise description of what you want to happen.
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
## Alternatives
|
||||||
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
**Additional context**
|
## Additional context
|
||||||
|
|
||||||
Add any other context or screenshots about the feature request here.
|
Add any other context or screenshots about the feature request here.
|
||||||
|
5
.github/dependabot.yml
vendored
5
.github/dependabot.yml
vendored
@@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
open-pull-requests-limit: 10
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
|
2
.github/release.yml
vendored
2
.github/release.yml
vendored
@@ -14,7 +14,7 @@ changelog:
|
|||||||
labels:
|
labels:
|
||||||
- Semver-Minor
|
- Semver-Minor
|
||||||
- enhancement
|
- enhancement
|
||||||
- title: 🐛 Bug fixes
|
- title: 🐛 Bug Fixes
|
||||||
labels:
|
labels:
|
||||||
- fix
|
- fix
|
||||||
- bugfix
|
- bugfix
|
||||||
|
2
.github/workflows/auto-merge.yml
vendored
2
.github/workflows/auto-merge.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Dependabot metadata
|
- name: Dependabot metadata
|
||||||
id: metadata
|
id: metadata
|
||||||
uses: dependabot/fetch-metadata@v1
|
uses: dependabot/fetch-metadata@v2
|
||||||
with:
|
with:
|
||||||
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
|
24
.github/workflows/lint-build.yml
vendored
24
.github/workflows/lint-build.yml
vendored
@@ -14,16 +14,20 @@ env:
|
|||||||
CACHE_PATH_WIN: '~\AppData\Local\hugo_cache'
|
CACHE_PATH_WIN: '~\AppData\Local\hugo_cache'
|
||||||
CACHE_PATH_MAC: '/Users/runner/Library/Caches/hugo_cache'
|
CACHE_PATH_MAC: '/Users/runner/Library/Caches/hugo_cache'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: read
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Check out repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: lts/*
|
node-version: lts/*
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -43,16 +47,21 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
node-version: [16.x, 18.x, 20.x]
|
node-version: [20.x, 22.x]
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Check out repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ">1.0.0"
|
||||||
|
|
||||||
- name: Set up Node.js ${{ matrix.node-version }}
|
- name: Set up Node.js ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -82,13 +91,16 @@ jobs:
|
|||||||
# Cache Hugo cachedir and resourcedir (configured in config/ci/hugo.toml) for each OS
|
# Cache Hugo cachedir and resourcedir (configured in config/ci/hugo.toml) for each OS
|
||||||
# No additional cache invalidation is needed, Hugo uses checksums itself
|
# No additional cache invalidation is needed, Hugo uses checksums itself
|
||||||
- name: Use Hugo cache
|
- name: Use Hugo cache
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ${{ runner.os == 'Windows' && env.CACHE_PATH_WIN || runner.os == 'macOS' && env.CACHE_PATH_MAC || env.CACHE_PATH_DEBIAN }}
|
path: ${{ runner.os == 'Windows' && env.CACHE_PATH_WIN || runner.os == 'macOS' && env.CACHE_PATH_MAC || env.CACHE_PATH_DEBIAN }}
|
||||||
key: ${{ runner.os }}-${{ env.CACHE_KEY }}
|
key: ${{ runner.os }}-${{ env.CACHE_KEY }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-${{ env.CACHE_KEY }}
|
${{ runner.os }}-${{ env.CACHE_KEY }}
|
||||||
|
|
||||||
|
- name: Display environment
|
||||||
|
run: npm run env
|
||||||
|
|
||||||
- name: Build main site
|
- name: Build main site
|
||||||
run: npm run build:cache
|
run: npm run build:cache
|
||||||
|
|
||||||
|
6
.github/workflows/mod-update.yml
vendored
6
.github/workflows/mod-update.yml
vendored
@@ -14,10 +14,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: lts/*
|
node-version: lts/*
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -38,7 +38,7 @@ jobs:
|
|||||||
echo 'EOF' >> $GITHUB_OUTPUT
|
echo 'EOF' >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: gethinode-actions/create-pull-request@v5
|
uses: gethinode-actions/create-pull-request@v6
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.HUGO_MOD_PR }}
|
token: ${{ secrets.HUGO_MOD_PR }}
|
||||||
commit-message: 'fix: update Hugo module dependencies'
|
commit-message: 'fix: update Hugo module dependencies'
|
||||||
|
41
.github/workflows/npm-publish.yml
vendored
41
.github/workflows/npm-publish.yml
vendored
@@ -1,41 +0,0 @@
|
|||||||
# This workflow will run tests using node and then publish a package to npmjs.org when a release is created
|
|
||||||
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
|
|
||||||
name: Publish package to npmjs
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
|
|
||||||
env:
|
|
||||||
REGISTRY_URL: 'https://registry.npmjs.org/'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest]
|
|
||||||
node-version: [20.x]
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Setup .npmrc file to publish to npm
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
registry-url: ${{ env.REGISTRY_URL }}
|
|
||||||
cache: 'npm'
|
|
||||||
cache-dependency-path: '**/package-lock.json'
|
|
||||||
|
|
||||||
# [27/AUG/23] Adjusted from npm ci to prevent EBADPLATFORM error due to fsevents
|
|
||||||
- name: Install npm
|
|
||||||
run: npm i
|
|
||||||
|
|
||||||
- name: Publish package to npm
|
|
||||||
run: npm publish
|
|
||||||
env:
|
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
44
.github/workflows/release.yml
vendored
Normal file
44
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: Release
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
HUSKY: 0
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # for checkout
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write # to be able to publish a GitHub release
|
||||||
|
issues: write # to be able to comment on released issues
|
||||||
|
pull-requests: write # to be able to comment on released pull requests
|
||||||
|
id-token: write # to enable use of OIDC for npm provenance
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "lts/*"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm clean-install
|
||||||
|
|
||||||
|
- name: Verify the integrity of provenance attestations and registry signatures for installed dependencies
|
||||||
|
run: npm audit signatures
|
||||||
|
|
||||||
|
- name: Release
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: npx semantic-release
|
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,6 @@
|
|||||||
/_vendor
|
_vendor/
|
||||||
|
prebuild/
|
||||||
|
prebuild-headers/
|
||||||
public/
|
public/
|
||||||
resources/
|
resources/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
1
.husky/commit-msg
Normal file
1
.husky/commit-msg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
npx --no -- commitlint --edit $1
|
6
.husky/install.mjs
Normal file
6
.husky/install.mjs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
// Skip Husky install in production and CI
|
||||||
|
if (process.env.NODE_ENV === 'production' || process.env.CI === 'true') {
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
const husky = (await import('husky')).default
|
||||||
|
console.log(husky())
|
1
.husky/pre-commit
Normal file
1
.husky/pre-commit
Normal file
@@ -0,0 +1 @@
|
|||||||
|
npm test
|
@@ -6,7 +6,9 @@
|
|||||||
"MD026": false,
|
"MD026": false,
|
||||||
"MD034": false,
|
"MD034": false,
|
||||||
"MD051": false,
|
"MD051": false,
|
||||||
"MD053": false
|
"MD053": false,
|
||||||
|
"MD055": false,
|
||||||
|
"MD056": false
|
||||||
},
|
},
|
||||||
"ignores": ["node_modules", "CHANGELOG.md"]
|
"ignores": ["node_modules", "CHANGELOG.md"]
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
"selector-id-pattern": null,
|
"selector-id-pattern": null,
|
||||||
"selector-class-pattern": null,
|
"selector-class-pattern": null,
|
||||||
"scss/no-global-function-names": null,
|
"scss/no-global-function-names": null,
|
||||||
|
"color-function-alias-notation": null,
|
||||||
"number-max-precision": null,
|
"number-max-precision": null,
|
||||||
"hue-degree-notation": null,
|
"hue-degree-notation": null,
|
||||||
"value-no-vendor-prefix": null,
|
"value-no-vendor-prefix": null,
|
||||||
|
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2023 Mark Dumay
|
Copyright (c) 2022-2025 Mark Dumay
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
55
README.md
55
README.md
@@ -9,32 +9,29 @@
|
|||||||
|
|
||||||
<!-- Badges -->
|
<!-- Badges -->
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://gohugo.io" alt="Hugo website">
|
<a href="https://gohugo.io">
|
||||||
<img src="https://img.shields.io/badge/generator-hugo-brightgreen">
|
<img src="https://img.shields.io/badge/generator-hugo-brightgreen" alt="Hugo website">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://gethinode.com" alt="Hinode theme">
|
<a href="https://gethinode.com">
|
||||||
<img src="https://img.shields.io/badge/theme-hinode-blue">
|
<img src="https://img.shields.io/badge/theme-hinode-blue" alt="Hinode theme">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.npmjs.com/package/%40gethinode/hinode" alt="npm package">
|
<a href="https://app.netlify.com/sites/gethinode-demo/deploys">
|
||||||
<img src="https://img.shields.io/npm/v/%40gethinode/hinode">
|
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" alt="Netlify Status">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status">
|
<a href="https://stats.uptimerobot.com/xyGVYhLJmV">
|
||||||
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67">
|
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" alt="UptimeRobot Status">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
|
<a href="https://github.com/gethinode/hinode/commits/main">
|
||||||
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb">
|
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" alt="Last commit">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit">
|
<a href="https://github.com/gethinode/hinode/issues">
|
||||||
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg">
|
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg" alt="Issues">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/gethinode/hinode/issues" alt="Issues">
|
<a href="https://github.com/gethinode/hinode/pulls">
|
||||||
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg">
|
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" alt="Pulls">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls">
|
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE">
|
||||||
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg">
|
<img src="https://img.shields.io/github/license/gethinode/hinode" alt="License">
|
||||||
</a>
|
|
||||||
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License">
|
|
||||||
<img src="https://img.shields.io/github/license/gethinode/hinode">
|
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -69,12 +66,20 @@ Hinode is a [Hugo theme that uses modules][hugo_modules] to install and maintain
|
|||||||
The installation instructions in this readme install Hinode as a regular Hugo theme. Hinode requires the following software to be installed on your local machine.
|
The installation instructions in this readme install Hinode as a regular Hugo theme. Hinode requires the following software to be installed on your local machine.
|
||||||
|
|
||||||
- [Go binary][golang_download]
|
- [Go binary][golang_download]
|
||||||
- [Hugo][nodejs] (extended version)
|
- [Hugo][hugo_download] (extended version)
|
||||||
|
|
||||||
[Git][git_download] is recommended, but is not a strict requirement.
|
[Git][git_download] is recommended, but is not a strict requirement.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD033 -->
|
||||||
|
<details>
|
||||||
|
<summary>Installation notes for Windows</summary>
|
||||||
|
|
||||||
|
The installation for Windows requires PowerShell v7. Download it from the Microsoft Store as needed. Check your current version with the command `$PSVersionTable`.
|
||||||
|
</details>
|
||||||
|
<!-- markdownlint-enable MD033 -->
|
||||||
|
|
||||||
Start a new Hinode project in three steps:
|
Start a new Hinode project in three steps:
|
||||||
|
|
||||||
1. **Create a new site**
|
1. **Create a new site**
|
||||||
@@ -83,14 +88,15 @@ Start a new Hinode project in three steps:
|
|||||||
hugo new site my-hinode-site && cd my-hinode-site
|
hugo new site my-hinode-site && cd my-hinode-site
|
||||||
```
|
```
|
||||||
|
|
||||||
1. **Initialize the module system**
|
2. **Initialize the module system**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
hugo mod init example.com/my-hinode-site
|
hugo mod init example.com/my-hinode-site
|
||||||
echo "[[module.imports]]\npath = 'github.com/gethinode/hinode'" >> hugo.toml
|
echo "[[module.imports]]" >> hugo.toml
|
||||||
|
echo "path = 'github.com/gethinode/hinode'" >> hugo.toml
|
||||||
```
|
```
|
||||||
|
|
||||||
1. **Start a development server**
|
3. **Start a development server**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
hugo server
|
hugo server
|
||||||
@@ -114,7 +120,7 @@ Hinode is inspired by the following themes:
|
|||||||
## Donate
|
## Donate
|
||||||
|
|
||||||
<!-- markdownlint-disable MD033 -->
|
<!-- markdownlint-disable MD033 -->
|
||||||
<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>
|
<a href="https://www.buymeacoffee.com/markdumay" target="_blank" rel="noopener noreferrer nofollow"><img src="https://cdn.buymeacoffee.com/buttons/lato-orange.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;"></a>
|
||||||
<!-- markdownlint-enable MD033 -->
|
<!-- markdownlint-enable MD033 -->
|
||||||
|
|
||||||
## License
|
## License
|
||||||
@@ -136,7 +142,6 @@ The `hinode`, `docs`, and `template` codebase is released under the [MIT license
|
|||||||
[npm]: https://www.npmjs.com
|
[npm]: https://www.npmjs.com
|
||||||
[observatory]: https://observatory.mozilla.org/analyze/demo.gethinode.com
|
[observatory]: https://observatory.mozilla.org/analyze/demo.gethinode.com
|
||||||
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F
|
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F
|
||||||
[utterances]: https://utteranc.es
|
|
||||||
|
|
||||||
<!-- MARKDOWN MAINTAINED LINKS -->
|
<!-- MARKDOWN MAINTAINED LINKS -->
|
||||||
[contribute]: https://gethinode.com/contribute
|
[contribute]: https://gethinode.com/contribute
|
||||||
|
BIN
assets/img/creator-1x1.jpg
Normal file
BIN
assets/img/creator-1x1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 MiB |
@@ -1,14 +1,15 @@
|
|||||||
|
/* eslint-disable no-undef */
|
||||||
const alert = document.getElementById('page-alert')
|
const alert = document.getElementById('page-alert')
|
||||||
const closeBtn = document.getElementById('page-alert-btn-close')
|
const closeBtn = document.getElementById('page-alert-btn-close')
|
||||||
if (alert !== null && closeBtn !== null) {
|
if (alert !== null && closeBtn !== null) {
|
||||||
const version = alert.getAttribute('data-page-alert-version') || 'unknown'
|
const version = alert.getAttribute('data-page-alert-version') || 'unknown'
|
||||||
const hideAlert = sessionStorage.getItem(`page-alert-${version}`) !== null
|
const hideAlert = getSessionStorage(`page-alert-${version}`, null, 'functional') !== null
|
||||||
if (hideAlert) {
|
if (hideAlert) {
|
||||||
alert.classList.add('d-none')
|
alert.classList.add('d-none')
|
||||||
}
|
}
|
||||||
|
|
||||||
closeBtn.addEventListener('click', () => {
|
closeBtn.addEventListener('click', () => {
|
||||||
sessionStorage.setItem(`page-alert-${version}`, 'seen')
|
setSessionStorage(`page-alert-${version}`, 'seen', 'functional')
|
||||||
alert.classList.add('d-none')
|
alert.classList.add('d-none')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -1,69 +0,0 @@
|
|||||||
// 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 }}
|
|
33
assets/js/critical/_cookie.js
Normal file
33
assets/js/critical/_cookie.js
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/* eslint-disable no-undef, no-unused-vars */
|
||||||
|
function hasConsent (category) {
|
||||||
|
// TODO: placeholder function
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLocalStorage (key, def, category) {
|
||||||
|
if (hasConsent(category)) {
|
||||||
|
return localStorage.getItem(key)
|
||||||
|
} else {
|
||||||
|
return def
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setLocalStorage (key, val, category) {
|
||||||
|
if (hasConsent(category)) {
|
||||||
|
localStorage.setItem(key, val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSessionStorage (key, def, category) {
|
||||||
|
if (hasConsent(category)) {
|
||||||
|
return sessionStorage.getItem(key)
|
||||||
|
} else {
|
||||||
|
return def
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSessionStorage (key, val, category) {
|
||||||
|
if (hasConsent(category)) {
|
||||||
|
sessionStorage.setItem(key, val)
|
||||||
|
}
|
||||||
|
}
|
@@ -9,44 +9,49 @@
|
|||||||
(() => {
|
(() => {
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const storedTheme = localStorage.getItem('theme')
|
const supportedThemes = ['auto', 'dark', 'light'];
|
||||||
|
|
||||||
const getPreferredTheme = () => {
|
// retrieves the currently stored theme from local storage
|
||||||
if (storedTheme) {
|
const storedTheme = getLocalStorage('theme', 'auto', 'functional')
|
||||||
return storedTheme
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// retrieves the theme preferred by the client, defaults to light
|
||||||
|
function getPreferredTheme() {
|
||||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||||
}
|
}
|
||||||
|
|
||||||
const setTheme = function (theme) {
|
// retrieves the current theme, either from local storage or client's preferences
|
||||||
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
function getTheme() {
|
||||||
document.documentElement.setAttribute('data-bs-theme', 'dark')
|
if (storedTheme) {
|
||||||
|
return storedTheme
|
||||||
} else {
|
} else {
|
||||||
document.documentElement.setAttribute('data-bs-theme', theme)
|
const preference = getPreferredTheme()
|
||||||
|
setLocalStorage('theme', preference, 'functional')
|
||||||
|
return preference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setTheme(getPreferredTheme())
|
// applies and stores requested theme
|
||||||
|
function setTheme(theme) {
|
||||||
const showActiveTheme = theme => {
|
if (!supportedThemes.includes(theme)) {
|
||||||
const activeSelectors = document.querySelectorAll('.theme-icon-active')
|
theme = 'auto'
|
||||||
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].innerHTML = activeIcon.innerHTML
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < activeButtons.length; ++i) {
|
|
||||||
activeButtons[i].classList.add('active')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
setLocalStorage('theme', theme, 'functional')
|
||||||
|
|
||||||
|
if (theme === 'auto') {
|
||||||
|
document.documentElement.setAttribute('data-bs-theme', (getPreferredTheme()))
|
||||||
|
} else {
|
||||||
|
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
|
||||||
|
chk.checked = (document.documentElement.getAttribute('data-bs-theme') === 'light')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// alternates the currently active theme
|
||||||
|
function toggleTheme() {
|
||||||
|
const target = document.documentElement.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'
|
||||||
|
setTheme(target)
|
||||||
}
|
}
|
||||||
|
|
||||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||||
@@ -56,18 +61,16 @@
|
|||||||
})
|
})
|
||||||
|
|
||||||
window.addEventListener('DOMContentLoaded', () => {
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
showActiveTheme(getPreferredTheme())
|
document.querySelectorAll('.navbar-mode-selector').forEach(chk => {
|
||||||
|
chk.addEventListener('change', function () {
|
||||||
document.querySelectorAll('[data-bs-theme-value]')
|
document.documentElement.setAttribute('data-bs-theme-animate', 'true')
|
||||||
.forEach(toggle => {
|
toggleTheme()
|
||||||
toggle.addEventListener('click', () => {
|
|
||||||
const theme = toggle.getAttribute('data-bs-theme-value')
|
|
||||||
localStorage.setItem('theme', theme)
|
|
||||||
setTheme(theme)
|
|
||||||
showActiveTheme(theme)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// initialize theme directly when script is invoked
|
||||||
|
setTheme(getTheme())
|
||||||
})()
|
})()
|
||||||
|
|
||||||
{{- end -}}
|
{{- end -}}
|
86
assets/js/critical/languageSelector.js
Normal file
86
assets/js/critical/languageSelector.js
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
{{- if site.Params.main.enableLanguageSelectionStorage -}}
|
||||||
|
{{- $folder := (urls.Parse site.BaseURL).Path | default "/" -}}
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const folder = '{{ $folder }}'
|
||||||
|
|
||||||
|
// Function to get the selected language from local storage
|
||||||
|
function getLanguage () {
|
||||||
|
return getLocalStorage('selectedLanguage', document.documentElement.lang, 'functional')
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to set the selected language in local storage
|
||||||
|
function setLanguage (language) {
|
||||||
|
setLocalStorage('selectedLanguage', language, 'functional')
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to apply the selected language to the website
|
||||||
|
function applyLanguage (language, href) {
|
||||||
|
if (document.documentElement.lang !== language) {
|
||||||
|
if (href) {
|
||||||
|
if (window.location.pathname !== href) {
|
||||||
|
window.location.href = href
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let target = folder + language + '/'
|
||||||
|
if (window.location.href !== target) {
|
||||||
|
window.location.href = target
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Event listener for language selection
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
// override stored language when query string contains force is true
|
||||||
|
let params = new URLSearchParams(document.location.search)
|
||||||
|
let force = params.get('force')
|
||||||
|
if (force !== null && force.toLowerCase() == 'true') {
|
||||||
|
setLanguage(document.documentElement.lang)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// continue with regular code
|
||||||
|
const storedLanguage = getLanguage()
|
||||||
|
const languageItems = document.querySelectorAll('#language-selector[data-translated=true] .dropdown-item')
|
||||||
|
|
||||||
|
const link = document.querySelector("link[rel='canonical']")
|
||||||
|
let alias = ''
|
||||||
|
if (link !== null) {
|
||||||
|
alias = link.getAttribute('href')
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((alias !== '') && (window.location.href !== alias)) {
|
||||||
|
window.location.href = alias
|
||||||
|
} else if (languageItems.length > 0) {
|
||||||
|
// Redirect if the stored language differs from the active language
|
||||||
|
if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) {
|
||||||
|
languageItems.forEach(item => {
|
||||||
|
if (item.getAttribute('hreflang') === storedLanguage) {
|
||||||
|
applyLanguage(storedLanguage, item.getAttribute('href'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the stored language when the user selects a new one
|
||||||
|
languageItems.forEach(item => {
|
||||||
|
item.addEventListener('click', () => {
|
||||||
|
const selectedLanguage = item.getAttribute('hreflang')
|
||||||
|
|
||||||
|
if (selectedLanguage) {
|
||||||
|
setLanguage(selectedLanguage)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// overrule the current stored language when no translation is available
|
||||||
|
setLanguage(document.documentElement.lang)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})()
|
||||||
|
{{- end -}}
|
||||||
|
/* eslint-enable */
|
45
assets/js/nav.js
Normal file
45
assets/js/nav.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
function updateDropdown (element, id, label) {
|
||||||
|
const dropdown = document.getElementById(element)
|
||||||
|
if (dropdown != null) {
|
||||||
|
dropdown.querySelector('.dropdown-toggle').textContent = label
|
||||||
|
dropdown.querySelectorAll('.panel-dropdown .dropdown-item').forEach(item => {
|
||||||
|
item.classList.remove('active')
|
||||||
|
let target = item.getAttribute('data-link')
|
||||||
|
if (target != null) {
|
||||||
|
target = target.replace(/^#+/, '')
|
||||||
|
if (target === id) {
|
||||||
|
item.classList.add('active')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('.panel-dropdown').forEach(trigger => {
|
||||||
|
trigger.addEventListener('hide.bs.dropdown', event => {
|
||||||
|
if (event.clickEvent != null) {
|
||||||
|
let target = event.clickEvent.srcElement.getAttribute('data-link')
|
||||||
|
if (target != null) {
|
||||||
|
trigger.querySelectorAll('.panel-dropdown .dropdown-item').forEach(item => {
|
||||||
|
item.classList.remove('active')
|
||||||
|
})
|
||||||
|
target = target.replace(/^#+/, '')
|
||||||
|
const btn = document.getElementById(target)
|
||||||
|
if (btn != null) {
|
||||||
|
event.clickEvent.srcElement.classList.add('active')
|
||||||
|
trigger.querySelector('.dropdown-toggle').textContent = event.clickEvent.srcElement.textContent
|
||||||
|
btn.click()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
document.querySelectorAll('.nav-panel .nav-link').forEach(trigger => {
|
||||||
|
trigger.addEventListener('click', event => {
|
||||||
|
const companion = event.srcElement.parentElement.parentElement.getAttribute('data-companion')
|
||||||
|
if (companion != null) {
|
||||||
|
updateDropdown(companion, trigger.getAttribute('id'), trigger.textContent.trim())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
@@ -1,15 +1,57 @@
|
|||||||
|
const fixed = {{ site.Params.navigation.fixed }}
|
||||||
const navbar = document.querySelector('.navbar')
|
const navbar = document.querySelector('.navbar')
|
||||||
const togglers = document.querySelectorAll('.main-nav-toggler')
|
const togglers = document.querySelectorAll('.main-nav-toggler')
|
||||||
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
||||||
|
const colorsBG = ['body', 'secondary', 'tertiary']
|
||||||
|
|
||||||
|
function updateNavbar () {
|
||||||
|
let storedTheme
|
||||||
|
if (typeof getLocalStorage === "function") {
|
||||||
|
storedTheme = getLocalStorage('theme', null, 'functional')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.scrollY > 75) {
|
||||||
|
navbar.classList.add('nav-active')
|
||||||
|
if (storedTheme) {
|
||||||
|
navbar.setAttribute('data-bs-theme', storedTheme)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
navbar.classList.remove('nav-active')
|
||||||
|
const defaultTheme = navbar.getAttribute('data-bs-overlay')
|
||||||
|
|
||||||
|
const targetTheme = defaultTheme ? defaultTheme : storedTheme
|
||||||
|
if (targetTheme) {
|
||||||
|
navbar.setAttribute('data-bs-theme', defaultTheme)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((navbar !== null) && (window.performance.getEntriesByType)) {
|
||||||
|
if (window.performance.getEntriesByType('navigation')[0].type === 'reload') {
|
||||||
|
fixed && updateNavbar()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (navbar !== null && togglers !== null) {
|
if (navbar !== null && togglers !== null) {
|
||||||
|
// observe state changes to the site's color mode
|
||||||
|
const html = document.querySelector('html')
|
||||||
|
const config = {
|
||||||
|
attributes: true,
|
||||||
|
attributeFilter: ['data-bs-theme']
|
||||||
|
}
|
||||||
|
const Observer = new MutationObserver((mutationrecords) => {
|
||||||
|
fixed && updateNavbar()
|
||||||
|
})
|
||||||
|
Observer.observe(html, config)
|
||||||
|
|
||||||
|
// initialize background color
|
||||||
|
const color = (navbar.getAttribute('data-navbar-color') || 'body')
|
||||||
|
const bg = colorsBG.includes(color) ? `var(--bs-${color}-bg)` : `var(--bs-navbar-color-${color})`
|
||||||
|
navbar.style.setProperty('--bs-navbar-expanded-color', bg)
|
||||||
|
|
||||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||||
window.onscroll = () => {
|
window.onscroll = () => {
|
||||||
if (window.scrollY > 75) {
|
fixed && updateNavbar()
|
||||||
navbar.classList.add('nav-active')
|
|
||||||
} else {
|
|
||||||
navbar.classList.remove('nav-active')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the navbar background color to opaque when expanded
|
// set the navbar background color to opaque when expanded
|
||||||
|
@@ -14,23 +14,22 @@ function webShareAPI (title, description, link) {
|
|||||||
.catch((error) => console.log('Error sharing', error))
|
.catch((error) => console.log('Error sharing', error))
|
||||||
}
|
}
|
||||||
|
|
||||||
const shareBtn = document.getElementById('btn-webshare')
|
const shareButtons = document.querySelectorAll('[data-sharing-url]')
|
||||||
|
shareButtons.forEach(btn => {
|
||||||
if (shareBtn !== null) {
|
|
||||||
if (navigator.share) {
|
if (navigator.share) {
|
||||||
const title = shareBtn.getAttribute('data-sharing-title')
|
const title = btn.getAttribute('data-sharing-title')
|
||||||
const description = shareBtn.getAttribute('data-sharing-description')
|
const description = btn.getAttribute('data-sharing-description')
|
||||||
const url = shareBtn.getAttribute('data-sharing-url')
|
const url = btn.getAttribute('data-sharing-url')
|
||||||
|
|
||||||
// show button if it supports webShareAPI
|
// show button if it supports webShareAPI
|
||||||
shareBtn.style.display = 'block'
|
btn.style.display = 'block'
|
||||||
shareBtn.addEventListener('click', () =>
|
btn.addEventListener('click', () =>
|
||||||
webShareAPI(title, description, url)
|
webShareAPI(title, description, url)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
// hide button if host does not support Web Share API
|
// hide button if host does not support Web Share API
|
||||||
shareBtn.style.display = 'none'
|
btn.style.display = 'none'
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
{{- end -}}
|
{{- end -}}
|
3
assets/js/video.js
Normal file
3
assets/js/video.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
document.querySelectorAll('[data-video-padding]').forEach(element => {
|
||||||
|
element.style.paddingBottom = element.getAttribute('data-video-padding')
|
||||||
|
})
|
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
// Include default variable overrides
|
// Include default variable overrides
|
||||||
@import "common/variables-dart.scss"; // note: modified for dart-sass
|
@import "common/variables-dart.scss"; // note: modified for dart-sass
|
||||||
|
@import "theme/variables.scss";
|
||||||
@import "common/icons.scss";
|
@import "common/icons.scss";
|
||||||
|
|
||||||
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
||||||
@@ -14,17 +15,18 @@
|
|||||||
@import "common/variables-dark.scss";
|
@import "common/variables-dark.scss";
|
||||||
|
|
||||||
// Import Hinode theme styles
|
// Import Hinode theme styles
|
||||||
|
@import "components/abbr.scss";
|
||||||
@import "components/alert.scss";
|
@import "components/alert.scss";
|
||||||
@import "components/blockquote.scss";
|
@import "components/blockquote.scss";
|
||||||
@import "components/breadcrumb.scss";
|
@import "components/breadcrumb.scss";
|
||||||
@import "components/buttons.scss";
|
@import "components/button.scss";
|
||||||
@import "components/card.scss";
|
@import "components/card.scss";
|
||||||
@import "components/carousel.scss";
|
@import "components/carousel.scss";
|
||||||
@import "components/clipboard.scss";
|
@import "components/clipboard.scss";
|
||||||
@import "components/command.scss";
|
@import "components/command.scss";
|
||||||
@import "components/comments.scss";
|
|
||||||
@import "components/feature.scss";
|
@import "components/feature.scss";
|
||||||
@import "components/footer.scss";
|
@import "components/footer.scss";
|
||||||
|
@import "components/nav.scss";
|
||||||
@import "components/navbar.scss";
|
@import "components/navbar.scss";
|
||||||
@import "components/img.scss";
|
@import "components/img.scss";
|
||||||
@import "components/pagination.scss";
|
@import "components/pagination.scss";
|
||||||
@@ -35,8 +37,10 @@
|
|||||||
@import "components/table.scss";
|
@import "components/table.scss";
|
||||||
@import "components/timeline.scss";
|
@import "components/timeline.scss";
|
||||||
@import "components/toc.scss";
|
@import "components/toc.scss";
|
||||||
@import "components/vimeo.scss";
|
@import "components/video.scss";
|
||||||
@import "common/animation.scss";
|
@import "common/animation.scss";
|
||||||
|
@import "common/masonry.scss";
|
||||||
|
@import "common/scrollbar.scss";
|
||||||
@import "common/styles.scss";
|
@import "common/styles.scss";
|
||||||
@import "layouts/reboot.scss";
|
@import "layouts/reboot.scss";
|
||||||
@import "layouts/type.scss";
|
@import "layouts/type.scss";
|
||||||
@@ -49,8 +53,9 @@
|
|||||||
@include meta.load-css(theme/fonts);
|
@include meta.load-css(theme/fonts);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Import theme placeholder
|
// Import theme placeholders
|
||||||
|
@import "theme/base.scss";
|
||||||
@import "theme/theme.scss";
|
@import "theme/theme.scss";
|
||||||
|
|
||||||
// Import Bootstrap utilities API (mounted by core Bootstrap module)
|
// Import Bootstrap utilities API (mounted by core Bootstrap module)
|
||||||
@import "modules/bootstrap/utilities/api";
|
@import "modules/bootstrap/utilities/api";
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
// Include default variable overrides
|
// Include default variable overrides
|
||||||
@import "common/variables.scss";
|
@import "common/variables.scss";
|
||||||
|
@import "theme/variables.scss";
|
||||||
@import "common/icons.scss";
|
@import "common/icons.scss";
|
||||||
|
|
||||||
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
// Import Bootstrap configuration (mounted by core Bootstrap module)
|
||||||
@@ -12,17 +13,18 @@
|
|||||||
@import "common/variables-dark.scss";
|
@import "common/variables-dark.scss";
|
||||||
|
|
||||||
// Import Hinode theme styles
|
// Import Hinode theme styles
|
||||||
|
@import "components/abbr.scss";
|
||||||
@import "components/alert.scss";
|
@import "components/alert.scss";
|
||||||
@import "components/blockquote.scss";
|
@import "components/blockquote.scss";
|
||||||
@import "components/breadcrumb.scss";
|
@import "components/breadcrumb.scss";
|
||||||
@import "components/buttons.scss";
|
@import "components/button.scss";
|
||||||
@import "components/card.scss";
|
@import "components/card.scss";
|
||||||
@import "components/carousel.scss";
|
@import "components/carousel.scss";
|
||||||
@import "components/clipboard.scss";
|
@import "components/clipboard.scss";
|
||||||
@import "components/command.scss";
|
@import "components/command.scss";
|
||||||
@import "components/comments.scss";
|
|
||||||
@import "components/feature.scss";
|
@import "components/feature.scss";
|
||||||
@import "components/footer.scss";
|
@import "components/footer.scss";
|
||||||
|
@import "components/nav.scss";
|
||||||
@import "components/navbar.scss";
|
@import "components/navbar.scss";
|
||||||
@import "components/img.scss";
|
@import "components/img.scss";
|
||||||
@import "components/pagination.scss";
|
@import "components/pagination.scss";
|
||||||
@@ -33,8 +35,10 @@
|
|||||||
@import "components/table.scss";
|
@import "components/table.scss";
|
||||||
@import "components/timeline.scss";
|
@import "components/timeline.scss";
|
||||||
@import "components/toc.scss";
|
@import "components/toc.scss";
|
||||||
@import "components/vimeo.scss";
|
@import "components/video.scss";
|
||||||
@import "common/animation.scss";
|
@import "common/animation.scss";
|
||||||
|
@import "common/masonry.scss";
|
||||||
|
@import "common/scrollbar.scss";
|
||||||
@import "common/styles.scss";
|
@import "common/styles.scss";
|
||||||
@import "layouts/reboot.scss";
|
@import "layouts/reboot.scss";
|
||||||
@import "layouts/type.scss";
|
@import "layouts/type.scss";
|
||||||
@@ -42,17 +46,13 @@
|
|||||||
@import "helpers/colored-links.scss";
|
@import "helpers/colored-links.scss";
|
||||||
@import "helpers/display.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")) }}
|
{{ if (not (hasPrefix (lower site.Params.style.themeFontPath) "http")) }}
|
||||||
@import "theme/fonts.scss";
|
@import "theme/fonts.scss";
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
// Import theme placeholder
|
// Import theme placeholders
|
||||||
|
@import "theme/base.scss";
|
||||||
@import "theme/theme.scss";
|
@import "theme/theme.scss";
|
||||||
|
|
||||||
// Import Bootstrap utilities API (mounted by core Bootstrap module)
|
// Import Bootstrap utilities API (mounted by core Bootstrap module)
|
||||||
@import "modules/bootstrap/utilities/api";
|
@import "modules/bootstrap/utilities/api";
|
||||||
|
@@ -1,25 +1,25 @@
|
|||||||
// scss-docs-start icons
|
// scss-docs-start icons
|
||||||
$form-check-input-checked-bg-image: url("/icons/form-check-input-checked-bg-image.svg") !default;
|
$form-check-input-checked-bg-image: url("#{$base-url}icons/form-check-input-checked-bg-image.svg") !default;
|
||||||
$form-check-radio-checked-bg-image: url("/icons/form-check-radio-checked-bg-image.svg") !default;
|
$form-check-radio-checked-bg-image: url("#{$base-url}icons/form-check-radio-checked-bg-image.svg") !default;
|
||||||
$form-check-input-indeterminate-bg-image: url("/icons/form-check-input-indeterminate-bg-image.svg") !default;
|
$form-check-input-indeterminate-bg-image: url("#{$base-url}icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||||
$form-switch-bg-image: url("/icons/form-switch-bg-image.svg") !default;
|
$form-switch-bg-image: url("#{$base-url}icons/form-switch-bg-image.svg") !default;
|
||||||
$form-switch-bg-image-dark: url("/icons/form-switch-bg-image-dark.svg") !default;
|
$form-switch-bg-image-dark: url("#{$base-url}icons/form-switch-bg-image-dark.svg") !default;
|
||||||
$form-switch-focus-bg-image: url("/icons/form-switch-focus-bg-image.svg") !default;
|
$form-switch-focus-bg-image: url("#{$base-url}icons/form-switch-focus-bg-image.svg") !default;
|
||||||
$form-switch-checked-bg-image: url("/icons/form-switch-checked-bg-image.svg") !default;
|
$form-switch-checked-bg-image: url("#{$base-url}icons/form-switch-checked-bg-image.svg") !default;
|
||||||
$form-select-indicator: url("/icons/form-select-indicator.svg") !default;
|
$form-select-indicator: url("#{$base-url}icons/form-select-indicator.svg") !default;
|
||||||
$form-select-indicator-dark: url("/icons/form-select-indicator-dark.svg") !default;
|
$form-select-indicator-dark: url("#{$base-url}icons/form-select-indicator-dark.svg") !default;
|
||||||
$form-feedback-icon-valid: url("/icons/form-feedback-icon-valid.svg") !default;
|
$form-feedback-icon-valid: url("#{$base-url}icons/form-feedback-icon-valid.svg") !default;
|
||||||
$form-feedback-icon-invalid: url("/icons/form-feedback-icon-invalid.svg") !default;
|
$form-feedback-icon-invalid: url("#{$base-url}icons/form-feedback-icon-invalid.svg") !default;
|
||||||
$navbar-light-toggler-icon-bg: url("/icons/navbar-light-toggler-icon-bg.svg") !default;
|
$navbar-light-toggler-icon-bg: url("#{$base-url}icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||||
$navbar-dark-toggler-icon-bg: url("/icons/navbar-dark-toggler-icon-bg.svg") !default;
|
$navbar-dark-toggler-icon-bg: url("#{$base-url}icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||||
$accordion-button-icon: url("/icons/accordion-button-icon.svg") !default;
|
$accordion-button-icon: url("#{$base-url}icons/accordion-button-icon.svg") !default;
|
||||||
$accordion-button-icon-dark: url("/icons/accordion-button-icon-dark.svg") !default;
|
$accordion-button-icon-dark: url("#{$base-url}icons/accordion-button-icon-dark.svg") !default;
|
||||||
$accordion-button-active-icon: url("/icons/accordion-button-active-icon.svg") !default;
|
$accordion-button-active-icon: url("#{$base-url}icons/accordion-button-active-icon.svg") !default;
|
||||||
$accordion-button-active-icon-dark: url("/icons/accordion-button-active-icon-dark.svg") !default;
|
$accordion-button-active-icon-dark: url("#{$base-url}icons/accordion-button-active-icon-dark.svg") !default;
|
||||||
$carousel-control-prev-icon-bg: url("/icons/carousel-control-prev-icon-bg.svg") !default;
|
$carousel-control-prev-icon-bg: url("#{$base-url}icons/carousel-control-prev-icon-bg.svg") !default;
|
||||||
$carousel-control-next-icon-bg: url("/icons/carousel-control-next-icon-bg.svg") !default;
|
$carousel-control-next-icon-bg: url("#{$base-url}icons/carousel-control-next-icon-bg.svg") !default;
|
||||||
$btn-close-bg: url("/icons/btn-close-bg.svg") !default;
|
$btn-close-bg: url("#{$base-url}icons/btn-close-bg.svg") !default;
|
||||||
$btn-toggle: url("/icons/btn-toggle.svg") !default;
|
$btn-toggle: url("#{$base-url}icons/btn-toggle.svg") !default;
|
||||||
$btn-toggle-dark: url("/icons/btn-toggle-dark.svg") !default;
|
$btn-toggle-dark: url("#{$base-url}icons/btn-toggle-dark.svg") !default;
|
||||||
|
|
||||||
// scss-docs-end icons
|
// scss-docs-end icons
|
||||||
|
38
assets/scss/common/_masonry.scss
Normal file
38
assets/scss/common/_masonry.scss
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
.masonry {
|
||||||
|
--masonry-padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding: 0 var(--masonry-padding);
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-col {
|
||||||
|
flex: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
padding: 0 var(--masonry-padding);
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-col div {
|
||||||
|
margin-top: calc(2 * var(--masonry-padding));
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
$utilities: map-merge(
|
||||||
|
$utilities,
|
||||||
|
(
|
||||||
|
"m-col": (
|
||||||
|
property: max-width,
|
||||||
|
responsive: true,
|
||||||
|
class: m-col,
|
||||||
|
values: (
|
||||||
|
1: 100%,
|
||||||
|
2: 50%,
|
||||||
|
3: 33.3%,
|
||||||
|
4: 25%,
|
||||||
|
5: 20%,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
34
assets/scss/common/_scrollbar.scss
Normal file
34
assets/scss/common/_scrollbar.scss
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
@mixin scrollbar(
|
||||||
|
$foreground-color: var(--bs-primary),
|
||||||
|
$background-color: var(--bs-tertiary-bg),
|
||||||
|
$size: 10px
|
||||||
|
) {
|
||||||
|
// For Safari and Chrome (to force appearance in Chrome)
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
width: $size;
|
||||||
|
height: $size;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-thumb {
|
||||||
|
border-radius: calc($size / 2);
|
||||||
|
background: $foreground-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-track {
|
||||||
|
border-radius: calc($size / 2);
|
||||||
|
background: $background-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Standard version (Firefox, only appears on scroll)
|
||||||
|
@supports (-moz-appearance:none) {
|
||||||
|
scrollbar-color: $foreground-color $background-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.scrollbar-horizontal
|
||||||
|
{
|
||||||
|
@include scrollbar;
|
||||||
|
|
||||||
|
overflow-x: scroll;
|
||||||
|
margin: auto;
|
||||||
|
}
|
@@ -1,3 +1,9 @@
|
|||||||
|
@if $enable-dark-mode {
|
||||||
|
[data-bs-theme-animate="true"] body {
|
||||||
|
transition: background-color 0.5s, color 0.5s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Remove underline from all links
|
// Remove underline from all links
|
||||||
//
|
//
|
||||||
@@ -12,9 +18,27 @@ a:active {
|
|||||||
// Ensure main page is rendered to full viewport height
|
// Ensure main page is rendered to full viewport height
|
||||||
//
|
//
|
||||||
.main {
|
.main {
|
||||||
|
--navbar-height: #{$navbar-height};
|
||||||
|
--overlay-offset: #{$overlay-offset};
|
||||||
|
--section-height: 88vh;
|
||||||
|
--max-section-height: 1024px;
|
||||||
|
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
margin-top: var(--overlay-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$utilities: map-merge(
|
||||||
|
$utilities,
|
||||||
|
(
|
||||||
|
"cursor": (
|
||||||
|
property: margin-left margin-right,
|
||||||
|
class: mx,
|
||||||
|
responsive: true,
|
||||||
|
values: auto 0,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
.tickmark li::marker {
|
.tickmark li::marker {
|
||||||
content: "✓ ";
|
content: "✓ ";
|
||||||
}
|
}
|
||||||
@@ -66,52 +90,28 @@ $utilities: map-merge(
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@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 {
|
:root {
|
||||||
--nav-height: 90px;
|
--nav-height: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
.section-cover {
|
||||||
.ratio-section {
|
min-height: calc(var(--section-height) - var(--overlay-offset));
|
||||||
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) {
|
@include media-breakpoint-up(xxl) {
|
||||||
.ratio-section {
|
.section-cover {
|
||||||
min-height: calc(min(100vh, 1400px) - var(--nav-height));
|
min-height: calc(min(calc(var(--section-height) - var(--overlay-offset)), var(--max-section-height)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable media-feature-range-notation */
|
||||||
|
@media (min-height: 1400px) {
|
||||||
|
.section-cover {
|
||||||
|
min-height: calc(min(calc(var(--section-height) - var(--overlay-offset)), var(--max-section-height)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* stylelint-enable media-feature-range-notation */
|
||||||
|
|
||||||
$utilities: map-merge(
|
$utilities: map-merge(
|
||||||
$utilities,
|
$utilities,
|
||||||
(
|
(
|
||||||
|
@@ -5,6 +5,8 @@
|
|||||||
--bs-primary-dark: #{$primary-bg-subtle-dark};
|
--bs-primary-dark: #{$primary-bg-subtle-dark};
|
||||||
--bs-primary-bg-subtle: #{$primary-bg-subtle-dark};
|
--bs-primary-bg-subtle: #{$primary-bg-subtle-dark};
|
||||||
--bg-primary-subtle: rgba(var(--bs-primary-rgb), var(--bs-link-opacity, 0.1));
|
--bg-primary-subtle: rgba(var(--bs-primary-rgb), var(--bs-link-opacity, 0.1));
|
||||||
|
--bs-body: var(--bs-body-bg);
|
||||||
|
--bs-body-tertiary: var(--bs-tertiary-bg);
|
||||||
|
|
||||||
.bg-primary-subtle {
|
.bg-primary-subtle {
|
||||||
background-color: var(--bg-primary-subtle) if($enable-important-utilities, !important, null);
|
background-color: var(--bg-primary-subtle) if($enable-important-utilities, !important, null);
|
||||||
|
@@ -5,8 +5,10 @@ $enable-important-utilities: true !default;
|
|||||||
// Remove the border from the focused navigation toggler
|
// Remove the border from the focused navigation toggler
|
||||||
$navbar-toggler-focus-width: 0 !default;
|
$navbar-toggler-focus-width: 0 !default;
|
||||||
|
|
||||||
|
$base-url: h.$base-url;
|
||||||
|
|
||||||
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||||
$font-size-base: h.$font-size-base !default;;
|
$font-size-base: h.$font-size-base !default;
|
||||||
$headings-font-weight: 600 !default;
|
$headings-font-weight: 600 !default;
|
||||||
$font-weight-lighter: lighter !default;
|
$font-weight-lighter: lighter !default;
|
||||||
$font-weight-light: 200 !default;
|
$font-weight-light: 200 !default;
|
||||||
@@ -14,11 +16,17 @@ $font-weight-normal: 300 !default;
|
|||||||
$font-weight-bold: 600 !default;
|
$font-weight-bold: 600 !default;
|
||||||
$font-weight-bolder: bolder !default;
|
$font-weight-bolder: bolder !default;
|
||||||
|
|
||||||
|
$theme-border-radius: 1rem;
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$navbar-height: h.$navbar-height;
|
||||||
$navbar-offset: h.$navbar-offset;
|
$navbar-offset: h.$navbar-offset;
|
||||||
|
$navbar-offset-xs: h.$navbar-offset-xs;
|
||||||
|
$navbar-size: h.$navbar-size;
|
||||||
|
$overlay-offset: h.$overlay-offset;
|
||||||
$primary: h.$primary;
|
$primary: h.$primary;
|
||||||
$secondary: h.$secondary;
|
$secondary: h.$secondary;
|
||||||
$success: h.$success;
|
$success: h.$success;
|
||||||
@@ -27,8 +35,10 @@ $warning: h.$warning;
|
|||||||
$danger: h.$danger;
|
$danger: h.$danger;
|
||||||
$light: h.$light;
|
$light: h.$light;
|
||||||
$dark: h.$dark;
|
$dark: h.$dark;
|
||||||
|
$white: #fff !default;
|
||||||
$black: #000 !default;
|
$black: #000 !default;
|
||||||
|
$body-bg: #fff !default;
|
||||||
|
$gray-100: #f8f9fa !default;
|
||||||
$btn-toggle-color: $black !default;
|
$btn-toggle-color: $black !default;
|
||||||
|
|
||||||
$carousel-dark-indicator-active-bg: #fff !default;
|
$carousel-dark-indicator-active-bg: #fff !default;
|
||||||
@@ -39,4 +49,28 @@ $primary-text-emphasis-dark: mix(white, h.$primary, h.$dark-mode-tint) !d
|
|||||||
$secondary-text-emphasis-dark: mix(white, h.$secondary, h.$dark-mode-tint) !default;
|
$secondary-text-emphasis-dark: mix(white, h.$secondary, h.$dark-mode-tint) !default;
|
||||||
$link-color-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
|
$link-color-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
|
||||||
$primary-bg-subtle-dark: mix(black, h.$primary, h.$dark-mode-shade) !default;
|
$primary-bg-subtle-dark: mix(black, h.$primary, h.$dark-mode-shade) !default;
|
||||||
$primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-shade / 2)) !default;
|
$primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-shade / 2)) !default;
|
||||||
|
|
||||||
|
$dropdown-transition: opacity .15s ease-in-out !default;
|
||||||
|
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
|
||||||
|
$dropdown-horizontal-padding-y: calc(1rem + 2px);
|
||||||
|
|
||||||
|
$theme-colors: (
|
||||||
|
"primary": $primary,
|
||||||
|
"secondary": $secondary,
|
||||||
|
"success": $success,
|
||||||
|
"info": $info,
|
||||||
|
"warning": $warning,
|
||||||
|
"danger": $danger,
|
||||||
|
"light": $light,
|
||||||
|
"dark": $dark,
|
||||||
|
"white": $white,
|
||||||
|
"black": $black,
|
||||||
|
"body": $body-bg,
|
||||||
|
"body-tertiary": $gray-100,
|
||||||
|
);
|
||||||
|
|
||||||
|
$btn-padding-y-xs: .08rem !default;
|
||||||
|
$btn-padding-x-xs: 0.3rem !default;
|
||||||
|
$btn-font-size-xs: $font-size-base * .6 !default;
|
||||||
|
$btn-border-radius-xs: .2rem !default;
|
||||||
|
@@ -5,6 +5,8 @@ $enable-important-utilities: true !default;
|
|||||||
// Remove the border from the focused navigation toggler
|
// Remove the border from the focused navigation toggler
|
||||||
$navbar-toggler-focus-width: 0 !default;
|
$navbar-toggler-focus-width: 0 !default;
|
||||||
|
|
||||||
|
$base-url: $base-url;
|
||||||
|
|
||||||
// scss-docs-start font
|
// scss-docs-start font
|
||||||
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||||
$font-size-base: $font-size-base !default;;
|
$font-size-base: $font-size-base !default;;
|
||||||
@@ -15,14 +17,21 @@ $font-weight-normal: 300 !default;
|
|||||||
$font-weight-bold: 600 !default;
|
$font-weight-bold: 600 !default;
|
||||||
$font-weight-bolder: bolder !default;
|
$font-weight-bolder: bolder !default;
|
||||||
|
|
||||||
|
$theme-border-radius: 1rem;
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
// scss-docs-end font
|
// scss-docs-end font
|
||||||
|
|
||||||
|
$white: #fff !default;
|
||||||
$black: #000 !default;
|
$black: #000 !default;
|
||||||
|
$body-bg: #fff !default;
|
||||||
|
$gray-100: #f8f9fa !default;
|
||||||
$btn-toggle-color: $black !default;
|
$btn-toggle-color: $black !default;
|
||||||
|
|
||||||
|
$card-color: var(--bs-body-color);
|
||||||
|
|
||||||
$carousel-dark-indicator-active-bg: #fff !default;
|
$carousel-dark-indicator-active-bg: #fff !default;
|
||||||
$carousel-dark-caption-color: #fff !default;
|
$carousel-dark-caption-color: #fff !default;
|
||||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||||
@@ -33,4 +42,30 @@ $secondary-text-emphasis-dark: mix(white, $secondary, $dark-mode-tint) !def
|
|||||||
$link-color-dark: mix(white, $primary, $dark-mode-tint) !default;
|
$link-color-dark: mix(white, $primary, $dark-mode-tint) !default;
|
||||||
$primary-bg-subtle-dark: mix(black, $primary, $dark-mode-shade) !default;
|
$primary-bg-subtle-dark: mix(black, $primary, $dark-mode-shade) !default;
|
||||||
$primary-border-subtle-dark: mix(black, $primary, $dark-mode-shade / 2) !default;
|
$primary-border-subtle-dark: mix(black, $primary, $dark-mode-shade / 2) !default;
|
||||||
// scss-docs-end color-mode
|
// scss-docs-end color-mode
|
||||||
|
|
||||||
|
// scss-docs-start horizontal-nav
|
||||||
|
$dropdown-transition: opacity .15s ease-in-out !default;
|
||||||
|
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
|
||||||
|
$dropdown-horizontal-padding-y: calc(1rem + 2px);
|
||||||
|
// scss-docs-end horizontal-nav
|
||||||
|
|
||||||
|
$theme-colors: (
|
||||||
|
"primary": $primary,
|
||||||
|
"secondary": $secondary,
|
||||||
|
"success": $success,
|
||||||
|
"info": $info,
|
||||||
|
"warning": $warning,
|
||||||
|
"danger": $danger,
|
||||||
|
"light": $light,
|
||||||
|
"dark": $dark,
|
||||||
|
"white": $white,
|
||||||
|
"black": $black,
|
||||||
|
"body": $body-bg,
|
||||||
|
"body-tertiary": $gray-100,
|
||||||
|
);
|
||||||
|
|
||||||
|
$btn-padding-y-xs: .08rem !default;
|
||||||
|
$btn-padding-x-xs: 0.3rem !default;
|
||||||
|
$btn-font-size-xs: $font-size-base * .6 !default;
|
||||||
|
$btn-border-radius-xs: .2rem !default;
|
||||||
|
22
assets/scss/components/_abbr.scss
Normal file
22
assets/scss/components/_abbr.scss
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
@media (hover: none) {
|
||||||
|
abbr[title] {
|
||||||
|
position: relative;
|
||||||
|
text-decoration: underline dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
abbr[title]:hover::after,
|
||||||
|
abbr[title]:focus::after {
|
||||||
|
content: attr(title);
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: -30px;
|
||||||
|
width: auto;
|
||||||
|
white-space: nowrap;
|
||||||
|
background-color: var(--bs-body-bg);
|
||||||
|
color: var(--bs-tooltip-color);
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: 1px 1px 5px 0 rgba(0,0,0,0.4);
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 3px 5px;
|
||||||
|
}
|
||||||
|
}
|
@@ -1,6 +1,54 @@
|
|||||||
.blockquote {
|
.blockquote {
|
||||||
// background: var(--bs-light);
|
|
||||||
border-left: 0.3rem solid;
|
border-left: 0.3rem solid;
|
||||||
border-color: $secondary;
|
border-color: $secondary;
|
||||||
padding: 1rem 1.5rem;
|
padding: 1rem 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.blockquote-alert {
|
||||||
|
--bs-blockquote-alert-color: $secondary;
|
||||||
|
|
||||||
|
border-left: 0.3rem solid;
|
||||||
|
border-color: var(--bs-blockquote-alert-color);
|
||||||
|
padding: .5rem 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert > p:nth-of-type(2) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert-heading {
|
||||||
|
font-weight: bold;
|
||||||
|
color: var(--bs-blockquote-alert-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert-caution {
|
||||||
|
--bs-blockquote-alert-color: var(--#{$prefix}danger);
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert-important {
|
||||||
|
--bs-blockquote-alert-color: var(--#{$prefix}primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert-note {
|
||||||
|
--bs-blockquote-alert-color: var(--#{$prefix}info);
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert-tip {
|
||||||
|
--bs-blockquote-alert-color: var(--#{$prefix}success);
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert-warning {
|
||||||
|
--bs-blockquote-alert-color: var(--#{$prefix}warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
.blockquote-alert a.btn-link {
|
||||||
|
--bs-link-color: var(--bs-blockquote-alert-color);
|
||||||
|
--bs-link-hover-color: color-mix(in srgb, var(--bs-link-color), black 20%);
|
||||||
|
|
||||||
|
color: var(--bs-link-color) !important;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: var(--bs-link-hover-color) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// scss-docs-start breadcrumb
|
// scss-docs-start breadcrumb
|
||||||
.breadcrumb {
|
.breadcrumb {
|
||||||
padding-top: 0.3 * $navbar-offset;
|
padding-top: calc(0.3 * var(--navbar-offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
// scss-docs-end breadcrumb
|
// scss-docs-end breadcrumb
|
||||||
|
@@ -28,3 +28,27 @@
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: var(--bs-primary) if($enable-important-utilities, !important, null);
|
color: var(--bs-primary) if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.btn {
|
||||||
|
margin-top: $spacer * .25;
|
||||||
|
margin-bottom: $spacer * .25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-close {
|
||||||
|
background-color: transparent if($enable-important-utilities, !important, null);
|
||||||
|
background-image: var(--#{$prefix}btn-close-bg) if($enable-important-utilities, !important, null);
|
||||||
|
background-position: center if($enable-important-utilities, !important, null);
|
||||||
|
background-repeat: no-repeat if($enable-important-utilities, !important, null);
|
||||||
|
background-size: $btn-close-width if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-link {
|
||||||
|
--bs-btn-padding-x: 0;
|
||||||
|
--bs-btn-padding-y: 0;
|
||||||
|
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-xs {
|
||||||
|
@include button-size($btn-padding-y-xs, $btn-padding-x-xs, $btn-font-size-xs, $btn-border-radius-xs);
|
||||||
|
}
|
@@ -1,11 +1,29 @@
|
|||||||
// add zoom animation with opacity change on card img hover
|
// add zoom animation with opacity change on card img hover
|
||||||
// source: https://stackoverflow.com/a/43816376
|
// source: https://stackoverflow.com/a/43816376
|
||||||
|
|
||||||
.card-img-wrap {
|
.card-img-bg {
|
||||||
|
background-color: var(--#{$prefix}secondary-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
--bs-card-bg: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-img-wrap {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card .card-img-wrap:has(.card-img-top) {
|
||||||
|
border-top-left-radius: var(--#{$prefix}card-inner-border-radius);
|
||||||
|
border-top-right-radius: var(--#{$prefix}card-inner-border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .card-img-wrap:has(.card-img-bottom) {
|
||||||
|
border-bottom-right-radius: var(--#{$prefix}card-inner-border-radius);
|
||||||
|
border-bottom-left-radius: var(--#{$prefix}card-inner-border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
.card-zoom {
|
.card-zoom {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
@@ -15,6 +33,10 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-icon {
|
||||||
|
color: $secondary;
|
||||||
|
}
|
||||||
|
|
||||||
.card-zoom::after .card-img-wrap img {
|
.card-zoom::after .card-img-wrap img {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -60,8 +82,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-zoom card-body-link,
|
.card-zoom .card-body-link {
|
||||||
.card-body-link {
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||||
@@ -70,8 +91,7 @@
|
|||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.card-zoom card-body-link,
|
.card-zoom .card-body-link {
|
||||||
.card-body-link {
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: $primary-bg-subtle-dark if($enable-important-utilities, !important, null);
|
color: $primary-bg-subtle-dark if($enable-important-utilities, !important, null);
|
||||||
@@ -82,8 +102,65 @@
|
|||||||
|
|
||||||
// stylelint-enable annotation-no-unknown
|
// stylelint-enable annotation-no-unknown
|
||||||
|
|
||||||
// make tag-link clickable on top of the stretched-link.
|
// make tag-link and card-button clickable on top of the stretched-link.
|
||||||
.card .tag-link {
|
.card .tag-link, .card .card-button {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-button-link {
|
||||||
|
text-decoration: underline if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// support horizontally scrollable card groups
|
||||||
|
.card-container-wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.card-container-wrapper::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
height: calc(100% - 2rem);
|
||||||
|
background: linear-gradient(
|
||||||
|
90deg,
|
||||||
|
var(--bs-body-bg) 0%,
|
||||||
|
transparent 1.5rem,
|
||||||
|
transparent calc(100% - 1.5rem),
|
||||||
|
var(--bs-body-bg) 100%
|
||||||
|
);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-container {
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
padding-right: 1.5rem;
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
scroll-snap-type: x proximity;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-block-1 {
|
||||||
|
width: 80%;
|
||||||
|
scroll-snap-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-block-2 {
|
||||||
|
width: 40%;
|
||||||
|
scroll-snap-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-block-3 {
|
||||||
|
width: 27%;
|
||||||
|
scroll-snap-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-block-4 {
|
||||||
|
width: 20%;
|
||||||
|
scroll-snap-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-block-5 {
|
||||||
|
width: 16%;
|
||||||
|
scroll-snap-align: center;
|
||||||
|
}
|
||||||
|
@@ -1,20 +0,0 @@
|
|||||||
.utterances {
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
max-width: 760px;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.utterances-frame {
|
|
||||||
color-scheme: light;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 1px;
|
|
||||||
min-width: 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
@@ -1,3 +1,3 @@
|
|||||||
.feature {
|
.feature {
|
||||||
margin-top: 0.3 * $navbar-offset;
|
margin-top: calc(0.3 * var(--navbar-offset));
|
||||||
}
|
}
|
||||||
|
@@ -14,3 +14,16 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mirrorred {
|
||||||
|
-webkit-transform: scaleX(-1);
|
||||||
|
transform: scaleX(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.background-img {
|
||||||
|
--overlay-offset: #{$overlay-offset};
|
||||||
|
|
||||||
|
height: calc(100vh - var(--overlay-offset));
|
||||||
|
width: 100vw;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
101
assets/scss/components/_nav.scss
Normal file
101
assets/scss/components/_nav.scss
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
.nav-tabs {
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout, .tab-content {
|
||||||
|
--#{$prefix}nav-callout-bg: var(--#{$prefix}light);
|
||||||
|
--#{$prefix}nav-callout-active-bg: var(--bs-primary-bg-subtle);
|
||||||
|
--#{$prefix}nav-callout-gap: #{$nav-underline-gap};
|
||||||
|
|
||||||
|
column-gap: var(--#{$prefix}nav-callout-gap) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout + .tab-content {
|
||||||
|
background-color: var(--#{$prefix}nav-callout-bg);
|
||||||
|
padding: 2 * $spacer;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .nav-link {
|
||||||
|
display: flex;
|
||||||
|
text-align: start;
|
||||||
|
vertical-align: text-top;
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 0 0 (4 * $spacer);
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .nav-link.active {
|
||||||
|
background-image: linear-gradient(to top right, var(--#{$prefix}nav-callout-bg) 50%, transparent 0);
|
||||||
|
background-size: 50% (3 * $spacer);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 50% bottom;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--bs-nav-underline-link-active-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .accordion-button {
|
||||||
|
background-color: var(--#{$prefix}nav-callout-bg) !important;
|
||||||
|
border: solid;
|
||||||
|
border-color: var(--#{$prefix}border-color);
|
||||||
|
border-radius: var(--#{$prefix}accordion-inner-border-radius) !important;
|
||||||
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
border-bottom: none !important;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.collapsed) {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .accordion-item {
|
||||||
|
margin-top: 2 * $spacer;
|
||||||
|
margin-bottom: 2 * $spacer;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .accordion-button[aria-expanded="false"] {
|
||||||
|
border-bottom: solid !important;
|
||||||
|
border-color: var(--#{$prefix}border-color) !important;
|
||||||
|
border-radius: var(--#{$prefix}accordion-inner-border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .accordion-button[aria-expanded="true"] {
|
||||||
|
border-color: var(--#{$prefix}border-color) !important;
|
||||||
|
border-bottom: none !important;
|
||||||
|
border-radius: var(--#{$prefix}accordion-inner-border-radius) var(--#{$prefix}accordion-inner-border-radius) 0 0 !important;
|
||||||
|
padding-bottom: 3 * $spacer;
|
||||||
|
background-image: linear-gradient(to top right, var(--#{$prefix}nav-callout-active-bg) 50%, transparent 0);
|
||||||
|
background-size: 10% (2.5 * $spacer);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 10% bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .accordion-collapse {
|
||||||
|
background-color: var(--#{$prefix}nav-callout-active-bg) !important;
|
||||||
|
border-radius: 0 0 var(--#{$prefix}accordion-inner-border-radius) var(--#{$prefix}accordion-inner-border-radius);
|
||||||
|
border-top: none !important;
|
||||||
|
border-left: solid;
|
||||||
|
border-right: solid;
|
||||||
|
border-bottom: solid;
|
||||||
|
border-color: var(--#{$prefix}border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
.nav-callout, .tab-content {
|
||||||
|
--#{$prefix}nav-callout-bg: var(--#{$prefix}tertiary-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .accordion-button[aria-expanded="true"] {
|
||||||
|
background-image: linear-gradient(to top right, shade-color($primary, 70%) 50%, transparent 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-callout .accordion-collapse {
|
||||||
|
background-color: shade-color($primary, 70%) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,20 +1,106 @@
|
|||||||
// stylelint-disable annotation-no-unknown
|
// stylelint-disable annotation-no-unknown
|
||||||
|
|
||||||
|
// adapted from https://www.codeply.com/p/UsTEwDkzNp#
|
||||||
|
.checkbox {
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-switch {
|
||||||
|
--#{$prefix}mode-switch-width: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-switch .label {
|
||||||
|
border-color: var(--#{$prefix}border-color);
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px;
|
||||||
|
border-radius: var(--#{$prefix}mode-switch-width);
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 5px;
|
||||||
|
position: relative;
|
||||||
|
height: calc(1px + var(--#{$prefix}mode-switch-width) / 2);
|
||||||
|
width: var(--#{$prefix}mode-switch-width);
|
||||||
|
transform: scale(0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
.notransition {
|
||||||
|
-webkit-transition: none !important;
|
||||||
|
-moz-transition: none !important;
|
||||||
|
-o-transition: none !important;
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-switch .label .ball {
|
||||||
|
background-color: var(--#{$prefix}border-color);
|
||||||
|
border-radius: 50%;
|
||||||
|
position: absolute;
|
||||||
|
top: 2px;
|
||||||
|
left: 2px;
|
||||||
|
height: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
|
||||||
|
width: calc((var(--#{$prefix}mode-switch-width) / 2) - 5px);
|
||||||
|
transition: transform 0.2s linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-switch .checkbox:checked + .label .ball {
|
||||||
|
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
[data-bs-theme="light"] .mode-switch .ball {
|
||||||
|
transform: translateX(calc((var(--#{$prefix}mode-switch-width) / 2) - 1px));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-switch .fa-moon {
|
||||||
|
color: $yellow;
|
||||||
|
transform: scale(0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-switch .fa-sun {
|
||||||
|
color: var(--#{$prefix}bs-body-color);
|
||||||
|
transform: scale(0.8);
|
||||||
|
}
|
||||||
|
|
||||||
// Source: https://jsfiddle.net/njhgr40m/
|
// Source: https://jsfiddle.net/njhgr40m/
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
[data-bs-theme-animate="true"] .navbar {
|
||||||
|
transition: 0.5s ease-in-out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.navbar {
|
.navbar {
|
||||||
transition: 0.5s ease-in-out;
|
--bs-navbar-expanded-color: var(--bs-body-bg);
|
||||||
|
--bs-navbar-toggler-color: var(--bs-navbar-hover-color);
|
||||||
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
||||||
|
@each $state, $val in $theme-colors {
|
||||||
|
--bs-navbar-color-#{$state}: #{$val};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-active, .navbar-expanded {
|
.nav-active, .navbar-expanded {
|
||||||
background-color: var(--bs-body-bg);
|
background-color: var(--bs-navbar-expanded-color);
|
||||||
|
border-bottom: 1px solid var(--bs-secondary-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
margin: 0 .15rem;
|
margin: 0 .15rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.navbar-title {
|
||||||
|
display: inline-block;
|
||||||
|
white-space: normal;
|
||||||
|
text-align: center !important;
|
||||||
|
vertical-align: middle;
|
||||||
|
padding: 0 $spacer;
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
.navbar-contrast .nav-link.active, .navbar-contrast .nav-link.show, .navbar-contrast .nav-link:hover {
|
.navbar-contrast .nav-link.active, .navbar-contrast .nav-link.show, .navbar-contrast .nav-link:hover {
|
||||||
border-bottom: solid 1px var(--bs-navbar-hover-color);
|
border-bottom: solid 1px var(--bs-navbar-hover-color);
|
||||||
margin-bottom: -1px;
|
margin-bottom: -1px;
|
||||||
@@ -25,12 +111,27 @@
|
|||||||
--bs-navbar-hover-color: white !important;
|
--bs-navbar-hover-color: white !important;
|
||||||
--bs-navbar-disabled-color: white !important;
|
--bs-navbar-disabled-color: white !important;
|
||||||
--bs-navbar-active-color: white !important;
|
--bs-navbar-active-color: white !important;
|
||||||
|
--bs-navbar-toggler-color: white;
|
||||||
|
|
||||||
|
.navbar-title, .mode-switch {
|
||||||
|
--#{$prefix}border-color: white;
|
||||||
|
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mode-switch .fa-moon {
|
||||||
|
color: $white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-expanded {
|
.navbar-expanded {
|
||||||
box-shadow: $box-shadow-sm;
|
box-shadow: $box-shadow-sm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-item .vr {
|
||||||
|
color: var(--bs-navbar-color);
|
||||||
|
}
|
||||||
|
|
||||||
/* Remove border from toggler */
|
/* Remove border from toggler */
|
||||||
.navbar-toggler {
|
.navbar-toggler {
|
||||||
border: 0 if($enable-important-utilities, !important, null);
|
border: 0 if($enable-important-utilities, !important, null);
|
||||||
@@ -97,19 +198,11 @@
|
|||||||
|
|
||||||
/* Color of Toggler when collapsed */
|
/* Color of Toggler when collapsed */
|
||||||
.navbar-toggler.collapsed .toggler-icon {
|
.navbar-toggler.collapsed .toggler-icon {
|
||||||
background-color: #777;
|
background-color: var(--bs-navbar-toggler-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.emphasis-light {
|
.emphasis {
|
||||||
background-color: $black if($enable-important-utilities, !important, null);
|
background-color: var(--bs-navbar-toggler-color);
|
||||||
}
|
|
||||||
|
|
||||||
.emphasis-dark {
|
|
||||||
background-color: $white if($enable-important-utilities, !important, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
.emphasis, {
|
|
||||||
background-color: $black if($enable-important-utilities, !important, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
@@ -119,3 +212,110 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// stylelint-enable annotation-no-unknown
|
// stylelint-enable annotation-no-unknown
|
||||||
|
|
||||||
|
.navbar .dropdown-divider-bg {
|
||||||
|
color: var(--#{$prefix}navbar-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--dropdown-horizontal-bg: var(--#{$prefix}light);
|
||||||
|
--navbar-offset: #{$navbar-offset-xs};
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-container {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-brand {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-up(#{$navbar-size}) {
|
||||||
|
:root {
|
||||||
|
--navbar-offset: #{$navbar-offset};
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-container {
|
||||||
|
width: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-title {
|
||||||
|
text-align: initial !important;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-brand {
|
||||||
|
margin-right: var(--bs-navbar-brand-margin-end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
--dropdown-horizontal-bg: var(--#{$prefix}tertiary-bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-horizontal {
|
||||||
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||||
|
$next: breakpoint-next($breakpoint, $grid-breakpoints);
|
||||||
|
$infix: breakpoint-infix($next, $grid-breakpoints);
|
||||||
|
|
||||||
|
@include media-breakpoint-up($next) {
|
||||||
|
&#{$infix} {
|
||||||
|
position: static !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&#{$infix} > .dropdown-menu {
|
||||||
|
opacity: 0;
|
||||||
|
display: block;
|
||||||
|
visibility: hidden;
|
||||||
|
background-color: var(--dropdown-horizontal-bg) if($enable-important-utilities, !important, null);
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 0;
|
||||||
|
border: 0;
|
||||||
|
margin-top: $dropdown-horizontal-margin-top;
|
||||||
|
padding-top: $dropdown-horizontal-padding-y;
|
||||||
|
padding-bottom: $dropdown-horizontal-padding-y;
|
||||||
|
box-shadow: 0.125rem 0.25rem rgba(0, 0, 0, .075);
|
||||||
|
|
||||||
|
@include transition($dropdown-transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
&#{$infix} > .dropdown-menu.show {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&#{$infix} > .dropdown-menu > li {
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: $spacer;
|
||||||
|
padding-right: $spacer;
|
||||||
|
}
|
||||||
|
|
||||||
|
&#{$infix} > .dropdown-menu > li > a {
|
||||||
|
padding-left: .25 * $spacer;
|
||||||
|
padding-right: .25 * $spacer;
|
||||||
|
|
||||||
|
&.active,
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: var(--bs-body-color);
|
||||||
|
border-bottom: solid 1px var(--bs-navbar-hover-color);
|
||||||
|
margin-bottom: -1px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&#{$infix} > .nav-link.show {
|
||||||
|
background-color: var(--dropdown-horizontal-bg) if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-overlay {
|
||||||
|
position: absolute;
|
||||||
|
z-index: $zindex-fixed;
|
||||||
|
}
|
||||||
|
@@ -1,28 +1,51 @@
|
|||||||
// scss-docs-start sidebar
|
// scss-docs-start sidebar
|
||||||
.sidebar {
|
.sidebar {
|
||||||
top: $navbar-offset;
|
top: var(--navbar-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-overflow {
|
.sidebar-overflow {
|
||||||
top: $navbar-offset;
|
top: var(--navbar-offset);
|
||||||
max-height: 90vh;
|
max-height: 90vh;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
scrollbar-gutter: stable;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-item {
|
.sidebar-item {
|
||||||
color: rgba(0, 0, 0, 0.65);
|
color: rgba(0, 0, 0, 0.65);
|
||||||
margin-left: 0 !important;
|
margin-left: 0 !important;
|
||||||
padding-left: 0.85rem !important;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
padding: 0.1875rem 0.5rem !important;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: $primary;
|
||||||
|
}
|
||||||
|
|
||||||
&.active,
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: black;
|
color: $primary;
|
||||||
|
background-color: tint-color($primary, 90%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-toggle {
|
.sidebar-item-group {
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: $primary;
|
||||||
|
background-color: tint-color($primary, 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
> div > a {
|
||||||
|
color: var(--bs-body-color) !important;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-item-group > div {
|
||||||
|
padding: 0.1875rem 0.5rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-toggle-group {
|
||||||
padding: 0.25rem 0.5rem;
|
padding: 0.25rem 0.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: rgba(0, 0, 0, 0.65);
|
color: rgba(0, 0, 0, 0.65);
|
||||||
@@ -30,8 +53,7 @@
|
|||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: black;
|
background-color: transparent;
|
||||||
background-color: tint-color($primary, 90%);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
@@ -43,50 +65,49 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-toggle[aria-expanded="true"] {
|
.btn-toggle-group[aria-expanded="true"] {
|
||||||
color: black;
|
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
transform: rotate(90deg);
|
transform: rotate(90deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-toggle-nav a {
|
|
||||||
padding: 0.1875rem 0.5rem;
|
|
||||||
margin-top: 0.125rem;
|
|
||||||
margin-left: 1.25rem;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
background-color: tint-color($primary, 90%);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.sidebar-item {
|
.sidebar-item {
|
||||||
color: var(--bs-body-color);
|
color: var(--bs-body-color);
|
||||||
margin-left: 0 !important;
|
|
||||||
padding-left: 0.85rem !important;
|
&.active {
|
||||||
|
color: $primary-text-emphasis-dark !important;
|
||||||
&.active,
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: $primary-text-emphasis-dark !important;
|
||||||
|
background-color: transparent;
|
||||||
|
box-shadow: inset 0 0 0 1px $primary-bg-subtle-dark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-item-group {
|
||||||
|
color: var(--bs-body-color) !important;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: $primary-text-emphasis-dark !important;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: white !important;
|
color: white !important;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
box-shadow: inset 0 0 0 1px $primary-bg-subtle-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-toggle {
|
.btn-toggle-group {
|
||||||
color: var(--bs-body-color);
|
color: var(--bs-body-color);
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: white !important;
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,26 +116,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-toggle[aria-expanded="true"] {
|
.btn-toggle-group[aria-expanded="true"] {
|
||||||
color: var(--bs-secondary-color);
|
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: white !important;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// scss-docs-end sidebar
|
// scss-docs-end sidebar
|
||||||
|
@@ -1,3 +1,20 @@
|
|||||||
|
.datatable-container {
|
||||||
|
border-bottom: none if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.datatable-bottom {
|
||||||
|
padding-top: 0 if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.datatable-sorter {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-border-bottom-wrap {
|
||||||
|
border-bottom-style: none !important
|
||||||
|
}
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.table-striped, .table-striped-columns {
|
.table-striped, .table-striped-columns {
|
||||||
@@ -9,5 +26,13 @@
|
|||||||
--bs-table-hover-bg: var(--bs-tertiary-bg);
|
--bs-table-hover-bg: var(--bs-tertiary-bg);
|
||||||
--bs-table-striped-color: var(--bs-body-color);
|
--bs-table-striped-color: var(--bs-body-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.datatable-pagination-list-item {
|
||||||
|
&:hover,
|
||||||
|
&:focus,
|
||||||
|
&.datatable-active {
|
||||||
|
color: var(--bs-body-bg) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -12,7 +12,15 @@ $semi-circle-border: 0.2rem;
|
|||||||
|
|
||||||
@each $state in map-keys($theme-colors) {
|
@each $state in map-keys($theme-colors) {
|
||||||
.timeline-#{$state} {
|
.timeline-#{$state} {
|
||||||
--timeline-highlight: var(--#{$prefix}#{$state});
|
--timeline-highlight: var(--#{$prefix}#{$state});
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline-bg-#{$state} {
|
||||||
|
--timeline-connector-bg: var(--#{$prefix}#{$state});
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline-bg-#{$state}-subtle {
|
||||||
|
--timeline-connector-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6,7 +6,6 @@
|
|||||||
grid-area: toc;
|
grid-area: toc;
|
||||||
right: 0;
|
right: 0;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
height: calc(100vh - 5rem);
|
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
top: 5rem;
|
top: 5rem;
|
||||||
}
|
}
|
||||||
@@ -50,6 +49,9 @@
|
|||||||
|
|
||||||
#toc-collapse {
|
#toc-collapse {
|
||||||
border-color: var(--bs-secondary-color) !important;
|
border-color: var(--bs-secondary-color) !important;
|
||||||
|
border-radius: 0 0 var(--bs-border-radius) var(--bs-border-radius) !important;
|
||||||
|
margin-top: -1.5rem;
|
||||||
|
padding-top: 1.5rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc-button {
|
.toc-button {
|
||||||
@@ -60,6 +62,8 @@
|
|||||||
--bs-btn-active-bg: var(--bs-body-bg);
|
--bs-btn-active-bg: var(--bs-body-bg);
|
||||||
--bs-btn-active-border-color: var(--bs-primary);
|
--bs-btn-active-border-color: var(--bs-primary);
|
||||||
|
|
||||||
|
background-color: var(--#{$prefix}body-bg) !important;
|
||||||
|
|
||||||
&.active,
|
&.active,
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
@@ -70,11 +74,44 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.toc-item {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-1 {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-2 {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-3 {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-4 {
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-5 {
|
||||||
|
margin-left: 4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.toc-level-6 {
|
||||||
|
margin-left: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
[data-bs-theme="dark"] {
|
[data-bs-theme="dark"] {
|
||||||
.toc-button {
|
.toc-button {
|
||||||
--bs-btn-color: var(--bs-body-color);
|
--bs-btn-color: var(--bs-body-color);
|
||||||
--bs-btn-border-color: var(--bs-body-color);
|
--bs-btn-border-color: var(--bs-body-color);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#toc-collapse {
|
#toc-collapse {
|
||||||
@@ -89,4 +126,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.section-menu > .nav-link.active, .section-menu > .nav-link:hover {
|
||||||
|
color: var(--bs-primary);
|
||||||
|
}
|
||||||
|
@@ -1,3 +1,19 @@
|
|||||||
|
.video-embedded {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.25%;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-embedded > iframe {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
|
||||||
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
|
// Adapted from https://github.com/gohugoio/hugo/tpl/tplimpl/embedded/templates/shortcodes/vimeo_simple.html
|
||||||
.__h_video {
|
.__h_video {
|
||||||
position: relative;
|
position: relative;
|
@@ -5,7 +5,7 @@
|
|||||||
// stylelint-disable annotation-no-unknown
|
// stylelint-disable annotation-no-unknown
|
||||||
|
|
||||||
// scss-docs-start display-color
|
// scss-docs-start display-color
|
||||||
.d-none-light {
|
.d-none-light, .d-none-inline-light {
|
||||||
display: none if($enable-important-utilities, !important, null);
|
display: none if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13,13 +13,21 @@
|
|||||||
display: block if($enable-important-utilities, !important, null);
|
display: block if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.d-none-inline-dark {
|
||||||
|
display: inline if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark) {
|
@include color-mode(dark) {
|
||||||
.d-none-light {
|
.d-none-light {
|
||||||
display: block if($enable-important-utilities, !important, null);
|
display: block if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
.d-none-dark {
|
.d-none-inline-light {
|
||||||
|
display: inline if($enable-important-utilities, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
.d-none-dark, .d-none-inline-dark {
|
||||||
display: none if($enable-important-utilities, !important, null);
|
display: none if($enable-important-utilities, !important, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,30 +3,34 @@
|
|||||||
//
|
//
|
||||||
h1 {
|
h1 {
|
||||||
margin-top: $spacer * 2.5;
|
margin-top: $spacer * 2.5;
|
||||||
scroll-margin-top: $navbar-offset;
|
scroll-margin-top: var(--navbar-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
margin-top: $spacer * 2;
|
margin-top: $spacer * 2;
|
||||||
scroll-margin-top: $navbar-offset;
|
scroll-margin-top: var(--navbar-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
margin-top: $spacer * 1.75;
|
margin-top: $spacer * 1.75;
|
||||||
scroll-margin-top: $navbar-offset;
|
scroll-margin-top: var(--navbar-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
margin-top: $spacer * 1.5;
|
margin-top: $spacer * 1.5;
|
||||||
scroll-margin-top: $navbar-offset;
|
scroll-margin-top: var(--navbar-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
h5 {
|
h5 {
|
||||||
margin-top: $spacer * 1.25;
|
margin-top: $spacer * 1.25;
|
||||||
scroll-margin-top: $navbar-offset;
|
scroll-margin-top: var(--navbar-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
h6 {
|
h6 {
|
||||||
margin-top: $spacer;
|
margin-top: $spacer;
|
||||||
scroll-margin-top: $navbar-offset;
|
scroll-margin-top: var(--navbar-offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
|
||||||
|
scroll-margin-top: var(--navbar-offset);
|
||||||
}
|
}
|
||||||
|
2
assets/scss/theme/_variables.scss
Normal file
2
assets/scss/theme/_variables.scss
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Placeholder to quickly add your own theme variable overrides
|
||||||
|
// The file is included at the beginning of the build pipeline
|
2
assets/scss/theme/base.scss
Normal file
2
assets/scss/theme/base.scss
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Placeholder for themes extending the core Hinode theme
|
||||||
|
// The file is included last in the build pipeline, but prior to theme.scss
|
1
commitlint.config.js
Normal file
1
commitlint.config.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
module.exports = {extends: ['@commitlint/config-conventional']}
|
12
component-library/bookshop.scss
Normal file
12
component-library/bookshop.scss
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@import "modules/bookshop/shared/styles/global";
|
||||||
|
@import "modules/bookshop/components/about/about";
|
||||||
|
@import "modules/bookshop/components/articles/articles";
|
||||||
|
@import "modules/bookshop/components/cards/cards";
|
||||||
|
@import "modules/bookshop/components/cta/cta";
|
||||||
|
@import "modules/bookshop/components/faq/faq";
|
||||||
|
@import "modules/bookshop/components/hero/hero";
|
||||||
|
@import "modules/bookshop/components/panels/panels";
|
||||||
|
@import "modules/bookshop/components/releases/releases";
|
||||||
|
@import "modules/bookshop/components/separator/separator";
|
||||||
|
@import "modules/bookshop/components/video-message/video-message";
|
||||||
|
@import "modules/bookshop/theme";
|
40
component-library/components/about/about.bookshop.yml
Normal file
40
component-library/components/about/about.bookshop.yml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: About
|
||||||
|
description: About section
|
||||||
|
icon: fingerprint
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
arrangement:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
illustration:
|
||||||
|
image:
|
||||||
|
icon:
|
||||||
|
ratio:
|
||||||
|
class:
|
||||||
|
anchor:
|
||||||
|
mode:
|
||||||
|
order:
|
||||||
|
width:
|
||||||
|
justify:
|
||||||
|
link-type:
|
||||||
|
links:
|
||||||
|
-
|
||||||
|
title:
|
||||||
|
url:
|
||||||
|
icon:
|
||||||
|
force:
|
33
component-library/components/about/about.hugo.html
Normal file
33
component-library/components/about/about.hugo.html
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "about" "args" .) }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/about/about.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $args.error }}
|
||||||
|
{{ partial "assets/hero.html" (dict
|
||||||
|
"page" page
|
||||||
|
"heading" $args.heading
|
||||||
|
"background" $args.background
|
||||||
|
"illustration" (merge (dict "ratio" "auto") $args.illustration)
|
||||||
|
"order" $args.order
|
||||||
|
"link-type" $args.linkType
|
||||||
|
"links" $args.links
|
||||||
|
"orientation" "horizontal"
|
||||||
|
"width" (or $args.width 8)
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
{{- end -}}
|
3
component-library/components/about/about.scss
Normal file
3
component-library/components/about/about.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.about {
|
||||||
|
scroll-margin-block: var(--navbar-offset);
|
||||||
|
}
|
49
component-library/components/articles/articles.bookshop.yml
Normal file
49
component-library/components/articles/articles.bookshop.yml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Articles
|
||||||
|
description: Articles section
|
||||||
|
icon: post
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
heading:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
width:
|
||||||
|
hide-empty:
|
||||||
|
input:
|
||||||
|
section:
|
||||||
|
nested:
|
||||||
|
keywords:
|
||||||
|
categories:
|
||||||
|
tags:
|
||||||
|
reverse:
|
||||||
|
sort:
|
||||||
|
more:
|
||||||
|
title:
|
||||||
|
link:
|
||||||
|
icon-rounded:
|
||||||
|
icon-style:
|
||||||
|
cols:
|
||||||
|
padding:
|
||||||
|
limit:
|
||||||
|
pagination:
|
||||||
|
paginate:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
scroll:
|
||||||
|
bento:
|
||||||
|
cover:
|
||||||
|
header-style:
|
||||||
|
footer-style:
|
||||||
|
orientation:
|
||||||
|
class:
|
||||||
|
width:
|
||||||
|
justify:
|
121
component-library/components/articles/articles.hugo.html
Normal file
121
component-library/components/articles/articles.hugo.html
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{ $error := false }}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "articles" "args" .)}}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/articles/articles.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ $error = $args.err }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{/* Initialize local variables */}}
|
||||||
|
{{ $pages := slice }}
|
||||||
|
{{ $result := partial "assets/live-pages.html" (dict
|
||||||
|
"page" $args.page
|
||||||
|
"section" $args.input.section
|
||||||
|
"nested" $args.input.nested
|
||||||
|
"keywords" $args.input.keywords
|
||||||
|
"categories" $args.input.categories
|
||||||
|
"tags" $args.input.tags
|
||||||
|
"sort" $args.input.sort
|
||||||
|
"reverse" $args.input.reverse
|
||||||
|
)}}
|
||||||
|
{{ $pages = $result.pages }}
|
||||||
|
|
||||||
|
<!-- Add style definitions -->
|
||||||
|
{{ $styles := slice
|
||||||
|
(dict "ratio" "1x1" "orientation" "overlay" "portrait" false "width" "6")
|
||||||
|
(dict "ratio" "4x3" "orientation" "stacked" "portrait" true "width" "3")
|
||||||
|
(dict "ratio" "1x1" "orientation" "stacked" "portrait" false "width" "3")
|
||||||
|
(dict "ratio" "16x9" "orientation" "stacked" "portrait" true "width" "3")
|
||||||
|
(dict "ratio" "1x1" "orientation" "stacked" "portrait" false "width" "3")
|
||||||
|
}}
|
||||||
|
|
||||||
|
<!-- Define more button -->
|
||||||
|
{{ $moreButton := site.Params.modules.bookshop.articles.moreButton | default false }}
|
||||||
|
{{ $moreTitle := T "more" (pluralize $args.input.section) }}
|
||||||
|
{{ $moreLink := $args.input.section }}
|
||||||
|
{{ with $args.more }}
|
||||||
|
{{ if .title }}{{ $moreTitle = .title }}{{ end }}
|
||||||
|
{{ if .link }}{{ $moreLink = .link }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $paginate := $args.paginate }}
|
||||||
|
{{ if and $paginate page.IsPage }}
|
||||||
|
{{ partial "utilities/LogWarn.html" (dict
|
||||||
|
"partial" "component-library/components/articles/articles.hugo.html"
|
||||||
|
"msg" "Pagination not supported"
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ $paginate = false }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $error }}
|
||||||
|
{{ if or (gt (len $pages) 0) (not $args.hideEmpty) }}
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{ $partial := "assets/card-group.html" }}
|
||||||
|
{{ $params := dict }}
|
||||||
|
{{- $params = merge $params (dict
|
||||||
|
"page" page
|
||||||
|
"list" $pages
|
||||||
|
"limit" $args.limit
|
||||||
|
"cols" $args.cols
|
||||||
|
"icon-rounded" $args.iconRounded
|
||||||
|
"icon-style" $args.iconStyle
|
||||||
|
"href" (cond $moreButton $moreLink "")
|
||||||
|
"href-title" (cond $moreButton $moreTitle "")
|
||||||
|
"href-force" (gt $result.total (len $result.pages))
|
||||||
|
)}}
|
||||||
|
|
||||||
|
{{ if $args.scroll }}
|
||||||
|
{{ $partial := "assets/stack.html" }}
|
||||||
|
{{ $params = merge $params (dict
|
||||||
|
"header-style" "none"
|
||||||
|
"body-style" "title"
|
||||||
|
"footer-style" "none"
|
||||||
|
"gutter" 1
|
||||||
|
"padding" 3
|
||||||
|
"ratio" "1x1"
|
||||||
|
"orientation" "horizontal-sm"
|
||||||
|
"styles" (cond $args.bento $styles "")
|
||||||
|
) -}}
|
||||||
|
{{ else }}
|
||||||
|
{{ $params = merge $params (dict
|
||||||
|
"header-style" $args.headerStyle
|
||||||
|
"footer-style" $args.footerStyle
|
||||||
|
"padding" $args.padding
|
||||||
|
"class" (or $args.class "border-0")
|
||||||
|
"align" "start"
|
||||||
|
"orientation" $args.orientation
|
||||||
|
"hook" "assets/live-card.html"
|
||||||
|
"pagination" $args.pagination
|
||||||
|
"paginate" $paginate
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ if gt (len $pages) 0 }}
|
||||||
|
{{ partial $partial $params }}
|
||||||
|
{{ else }}
|
||||||
|
<p class="pt-{{ $padding.y }}">{{- T "emptyList" }}.</p>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
8
component-library/components/articles/articles.scss
Normal file
8
component-library/components/articles/articles.scss
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.card-overlay-gradient {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: linear-gradient(to bottom, rgba(0, 0, 0, 0),rgba(0, 0, 0, 1));
|
||||||
|
}
|
36
component-library/components/cards/cards.bookshop.yml
Normal file
36
component-library/components/cards/cards.bookshop.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Benefits
|
||||||
|
description: Introduction section
|
||||||
|
icon: check
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
heading:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
width:
|
||||||
|
cols:
|
||||||
|
icon-rounded:
|
||||||
|
icon-style:
|
||||||
|
padding:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
elements:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
mode:
|
||||||
|
content:
|
||||||
|
orientation:
|
||||||
|
class:
|
||||||
|
width:
|
||||||
|
justify:
|
||||||
|
align:
|
82
component-library/components/cards/cards.hugo.html
Normal file
82
component-library/components/cards/cards.hugo.html
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{ $error := false }}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "cards" "args" .)}}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/cards/cards.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ $error = $args.err }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{/* Initialize local variables */}}
|
||||||
|
{{ $list := slice }}
|
||||||
|
{{ range $args.elements }}
|
||||||
|
<!-- TODO: check mode -->
|
||||||
|
{{ $list = $list | append (dict
|
||||||
|
"title" .title
|
||||||
|
"description" (.content | page.RenderString)
|
||||||
|
"icon" .icon
|
||||||
|
"thumbnail" .image
|
||||||
|
) }}
|
||||||
|
{{ end}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $error }}
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{/* Layout for small screens */}}
|
||||||
|
{{- partial "assets/card-group.html" (dict
|
||||||
|
"page" page
|
||||||
|
"list" $list
|
||||||
|
"class" (printf "border-0 card-icon-primary %s" (or $args.class ""))
|
||||||
|
"wrapper" (printf "d-%s-none" $breakpoint.prev)
|
||||||
|
"cols" $args.cols
|
||||||
|
"gutter" "4"
|
||||||
|
"padding" $args.padding
|
||||||
|
"header-style" "none"
|
||||||
|
"footer-style" "none"
|
||||||
|
"icon-rounded" $args.iconRounded
|
||||||
|
"icon-style" (or $args.iconStyle "fa-2x")
|
||||||
|
"align" $args.align
|
||||||
|
"orientation" ($args.orientation | default "horizontal-sm")
|
||||||
|
"hook" "assets/live-card.html"
|
||||||
|
) -}}
|
||||||
|
|
||||||
|
{{/* Layout for regular screens */}}
|
||||||
|
{{- partial "assets/card-group.html" (dict
|
||||||
|
"page" page
|
||||||
|
"list" $list
|
||||||
|
"class" (printf "border-0 card-icon-primary %s" (or $args.class ""))
|
||||||
|
"wrapper" (printf "d-none d-%s-block" $breakpoint.prev)
|
||||||
|
"cols" $args.cols
|
||||||
|
"gutter" "4"
|
||||||
|
"padding" $args.padding
|
||||||
|
"header-style" "none"
|
||||||
|
"footer-style" "none"
|
||||||
|
"icon-rounded" $args.iconRounded
|
||||||
|
"icon-style" (or $args.iconStyle "fa-2x")
|
||||||
|
"align" $args.align
|
||||||
|
"orientation" ($args.orientation | default "stacked")
|
||||||
|
"hook" "assets/live-card.html"
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
|
0
component-library/components/cards/cards.scss
Normal file
0
component-library/components/cards/cards.scss
Normal file
43
component-library/components/cta/cta.bookshop.yml
Normal file
43
component-library/components/cta/cta.bookshop.yml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: CTA
|
||||||
|
description: Call to action
|
||||||
|
icon: contact_page
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
arrangement:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
contact:
|
||||||
|
caption-url:
|
||||||
|
illustration:
|
||||||
|
image:
|
||||||
|
icon:
|
||||||
|
ratio:
|
||||||
|
class:
|
||||||
|
anchor:
|
||||||
|
mode:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
links:
|
||||||
|
-
|
||||||
|
title:
|
||||||
|
url:
|
||||||
|
icon:
|
||||||
|
force:
|
||||||
|
align:
|
||||||
|
fluid:
|
||||||
|
padding:
|
||||||
|
order:
|
||||||
|
width:
|
43
component-library/components/cta/cta.hugo.html
Normal file
43
component-library/components/cta/cta.hugo.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "cta" "args" .) }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/cta/cta.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $args.error }}
|
||||||
|
{{ $links := slice }}
|
||||||
|
{{ if and (reflect.IsSlice .links) (gt (len .links) 0) }}
|
||||||
|
{{ $links = .links }}
|
||||||
|
{{ else }}
|
||||||
|
{{ with site.Params.modules.bookshop.cta.defaultURL }}
|
||||||
|
{{ $links = $links | append (dict "title" (T "contactAction") "url" . "icon" "fas chevron-right") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partial "assets/contact.html" (dict
|
||||||
|
"page" page
|
||||||
|
"orientation" "horizontal"
|
||||||
|
"heading" $args.heading
|
||||||
|
"contact" $args.contact
|
||||||
|
"caption-url" $args.captionUrl
|
||||||
|
"illustration" $args.illustration
|
||||||
|
"class" "contact-img"
|
||||||
|
"links" $links
|
||||||
|
"align" $args.align
|
||||||
|
"order" $args.order
|
||||||
|
"data" site.Params.modules.bookshop.cta.section
|
||||||
|
) }}
|
||||||
|
{{ end }}
|
8
component-library/components/cta/cta.scss
Normal file
8
component-library/components/cta/cta.scss
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.cta {
|
||||||
|
background-color: var(--#{$prefix}primary-bg-subtle);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta .contact-img {
|
||||||
|
background-color: var(--#{$prefix}body-bg);
|
||||||
|
border-radius: var(--bs-border-radius);
|
||||||
|
}
|
28
component-library/components/faq/faq.bookshop.yml
Normal file
28
component-library/components/faq/faq.bookshop.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: FAQ
|
||||||
|
description: Accordion of frequently asked questions
|
||||||
|
icon: expand_more
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
contrast:
|
||||||
|
width:
|
||||||
|
justify:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
items:
|
||||||
|
- title:
|
||||||
|
description:
|
62
component-library/components/faq/faq.hugo.html
Normal file
62
component-library/components/faq/faq.hugo.html
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "faq" "args" .)}}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/faq/faq.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $args.err }}
|
||||||
|
{{ $color := "" }}
|
||||||
|
{{ if $args.contrast }}{{ $color = "white" }}{{ end }}
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{ $class := "" }}
|
||||||
|
{{ $id := printf "faq-%s" (md5 (delimit (slice . now) "-")) }}
|
||||||
|
|
||||||
|
<div id="{{ $id }}" class="accordion accordion-faq {{ if $args.contrast }}accordion-faq-contrast text-white {{ end -}}
|
||||||
|
accordion-flush{{ with $class }} {{ . }}{{ end }} col-12 col-md-6 mx-auto">
|
||||||
|
{{ range $index, $item := $args.items }}
|
||||||
|
<div class="accordion-item">
|
||||||
|
{{- with $item.title -}}
|
||||||
|
<div class="accordion-header m-0" id="{{ $id }}-heading-{{ $id }}">
|
||||||
|
<button class="accordion-button collapsed"
|
||||||
|
type="button"
|
||||||
|
data-bs-toggle="collapse"
|
||||||
|
data-bs-target="#{{ $id }}-item-{{ $index }}"
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-controls="{{ $id }}-item-{{ $index }}"
|
||||||
|
>
|
||||||
|
{{ if $args.color }}<div class="text-{{ $args.color }}">{{ . }}</div>{{ else }}{{ . }}{{ end }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
<div id="{{ $id }}-item-{{ $index }}"
|
||||||
|
class="accordion-collapse collapse"
|
||||||
|
aria-labelledby="{{ $id }}-heading-{{ $index }}"
|
||||||
|
data-bs-parent="#{{ $id }}"
|
||||||
|
>
|
||||||
|
<div class="accordion-body">{{ $item.description | page.RenderString | safeHTML }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
44
component-library/components/faq/faq.scss
Normal file
44
component-library/components/faq/faq.scss
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
$accordion-button-icon-white: url("/icons/accordion-button-icon-white.svg") !default;
|
||||||
|
$accordion-button-active-icon-white: url("/icons/accordion-button-active-icon-white.svg") !default;
|
||||||
|
|
||||||
|
|
||||||
|
.accordion-faq {
|
||||||
|
--#{$prefix}accordion-btn-padding-x: 0;
|
||||||
|
--#{$prefix}accordion-btn-focus-border-color: none;
|
||||||
|
--#{$prefix}accordion-btn-focus-box-shadow: none;
|
||||||
|
--#{$prefix}accordion-body-padding-x: 0;
|
||||||
|
--#{$prefix}accordion-active-color: var(--#{$prefix}primary);
|
||||||
|
--#{$prefix}accordion-active-bg: none;
|
||||||
|
--#{$prefix}accordion-border-color: var(--#{$prefix}body-color);
|
||||||
|
--#{$prefix}accordion-bg: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-faq .accordion-button {
|
||||||
|
font-size: $h5-font-size;
|
||||||
|
}
|
||||||
|
|
||||||
|
// note: explicitly suppresses border in Safari
|
||||||
|
.accordion-faq [aria-expanded="true"] {
|
||||||
|
--#{$prefix}accordion-border-color: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-faq-contrast {
|
||||||
|
--#{$prefix}accordion-active-color: var(--#{$prefix}white);
|
||||||
|
--#{$prefix}accordion-border-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-faq-contrast .accordion-button, .accordion-faq-contrast .accordion-body {
|
||||||
|
--#{$prefix}accordion-btn-icon: #{$accordion-button-icon-white};
|
||||||
|
--#{$prefix}accordion-btn-active-icon: #{$accordion-button-active-icon-white};
|
||||||
|
--#{$prefix}accordion-border-color: white;
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
.accordion-faq .accordion-button {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
41
component-library/components/hero/hero.bookshop.yml
Normal file
41
component-library/components/hero/hero.bookshop.yml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Hero
|
||||||
|
description: Main page Hero block
|
||||||
|
icon: title
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
breadcrumb:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
arrangement:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
illustration:
|
||||||
|
image:
|
||||||
|
icon:
|
||||||
|
ratio:
|
||||||
|
class:
|
||||||
|
anchor:
|
||||||
|
mode:
|
||||||
|
width:
|
||||||
|
link-type:
|
||||||
|
links:
|
||||||
|
align:
|
||||||
|
order:
|
||||||
|
overlay-mode:
|
||||||
|
cover:
|
||||||
|
orientation:
|
||||||
|
width:
|
||||||
|
justify:
|
37
component-library/components/hero/hero.hugo.html
Normal file
37
component-library/components/hero/hero.hugo.html
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "hero" "args" .) }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/hero/hero.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not $args.err }}
|
||||||
|
{{ partial "assets/hero.html" (dict
|
||||||
|
"page" page
|
||||||
|
"breadcrumb" $args.breadcrumb
|
||||||
|
"heading" $args.heading
|
||||||
|
"background" $args.background
|
||||||
|
"illustration" $args.illustration
|
||||||
|
"align" $args.align
|
||||||
|
"order" $args.order
|
||||||
|
"overlay-mode" $args.overlayMode
|
||||||
|
"cover" $args.cover
|
||||||
|
"link-type" $args.linkType
|
||||||
|
"links" $args.links
|
||||||
|
"orientation" $args.orientation
|
||||||
|
"width" $args.width
|
||||||
|
"justify" $args.justify
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
{{ end }}
|
18
component-library/components/hero/hero.scss
Normal file
18
component-library/components/hero/hero.scss
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
.background-img-fluid {
|
||||||
|
position: absolute;
|
||||||
|
object-fit: cover;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background-container {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
background-color: rgba($dark, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-content {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
35
component-library/components/panels/panels.bookshop.yml
Normal file
35
component-library/components/panels/panels.bookshop.yml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Panels
|
||||||
|
description: Introduction section
|
||||||
|
icon: check
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
heading:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
width:
|
||||||
|
cols:
|
||||||
|
padding:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
elements:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
mode:
|
||||||
|
content:
|
||||||
|
tab-type:
|
||||||
|
ratio:
|
||||||
|
responsive:
|
||||||
|
class:
|
||||||
|
width:
|
||||||
|
justify:
|
87
component-library/components/panels/panels.hugo.html
Normal file
87
component-library/components/panels/panels.hugo.html
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{ $error := false }}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "panels" "args" .)}}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/panels/panels.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ $error = $args.err }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global arguments */}}
|
||||||
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{/* Initialize local variables */}}
|
||||||
|
{{ $list := slice }}
|
||||||
|
{{ $titles := slice }}
|
||||||
|
{{ $toc := slice }}
|
||||||
|
{{ $parentID := printf "panel-%v" (cond (isset . "_ordinal") (index . "_ordinal") (md5 (delimit (slice . now) "-"))) }}
|
||||||
|
{{ $inner := "" }}
|
||||||
|
{{ range $i, $element := $args.elements }}
|
||||||
|
{{ $toc = $toc | append (dict "href" "panel-0-1" "level" 2 "title" $element.title) }}
|
||||||
|
|
||||||
|
{{ $hero := partial "assets/hero.html" (dict
|
||||||
|
"page" page
|
||||||
|
"heading" (dict "title" $element.title "content" $element.content "width" 8 "size" 6)
|
||||||
|
"background" $args.background
|
||||||
|
"illustration" (dict "ratio" $args.ratio "icon" $element.icon "image" $element.image "mode" $element.mode)
|
||||||
|
"order" $args.order
|
||||||
|
"link-type" $args.linkType
|
||||||
|
"links" $args.links
|
||||||
|
"orientation" "horizontal"
|
||||||
|
"align" "start"
|
||||||
|
"width" 12
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{- $output := partial "assets/nav-item.html" (dict
|
||||||
|
"page" page
|
||||||
|
"id" $i
|
||||||
|
"parent-id" $parentID
|
||||||
|
"fade" false
|
||||||
|
"title" $element.title
|
||||||
|
"show" (eq $i 0)
|
||||||
|
"raw" $hero
|
||||||
|
)
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{ $inner = printf "%s\n%s" $inner $output }}
|
||||||
|
{{ $titles = $titles | append $element.title }}
|
||||||
|
{{ end}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $error }}
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{- partial "assets/nav.html" (dict
|
||||||
|
"id" (or $args.id $parentID)
|
||||||
|
"page" page
|
||||||
|
"nav-items" $inner
|
||||||
|
"nav-titles" $titles
|
||||||
|
"tab-type" $args.tabType
|
||||||
|
"vertical" $args.vertical
|
||||||
|
"word-wrap" $args.wordWrap
|
||||||
|
"class" $args.class
|
||||||
|
"pane" $args.pane
|
||||||
|
"width" $args.width
|
||||||
|
"responsive" $args.responsive
|
||||||
|
)
|
||||||
|
-}}
|
||||||
|
{{ end }}
|
||||||
|
|
3
component-library/components/panels/panels.scss
Normal file
3
component-library/components/panels/panels.scss
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.panels .dropdown-toggle {
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
26
component-library/components/releases/releases.bookshop.yml
Normal file
26
component-library/components/releases/releases.bookshop.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Releases
|
||||||
|
description: Release timeline
|
||||||
|
icon: fingerprint
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
arrangement:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
width:
|
||||||
|
justify:
|
||||||
|
data:
|
28
component-library/components/releases/releases.hugo.html
Normal file
28
component-library/components/releases/releases.hugo.html
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "releases" "args" .) }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/releases/releases.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $args.error }}
|
||||||
|
{{ partial "assets/timeline.html" (dict
|
||||||
|
"page" page
|
||||||
|
"background" $args.background
|
||||||
|
"heading" $args.heading
|
||||||
|
"data" $args.data
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
{{- end -}}
|
0
component-library/components/releases/releases.scss
Normal file
0
component-library/components/releases/releases.scss
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Separator
|
||||||
|
description: Inserts a horizontal page section separator
|
||||||
|
icon: horizontal_rule
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
blueprint:
|
20
component-library/components/separator/separator.hugo.html
Normal file
20
component-library/components/separator/separator.hugo.html
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "separator" "args" .) }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/separator/separator.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not $args.err }}
|
||||||
|
<hr class="w-100">
|
||||||
|
{{ end }}
|
@@ -0,0 +1,53 @@
|
|||||||
|
# Metadata about this component, to be used in the CMS
|
||||||
|
spec:
|
||||||
|
structures:
|
||||||
|
- content_blocks
|
||||||
|
label: Video
|
||||||
|
description: Video section
|
||||||
|
icon: build
|
||||||
|
tags: []
|
||||||
|
|
||||||
|
# Defines the structure of this component, as well as the default values
|
||||||
|
blueprint:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
arrangement:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
link-type:
|
||||||
|
orientation:
|
||||||
|
icon-rounded:
|
||||||
|
icon-style:
|
||||||
|
video:
|
||||||
|
provider:
|
||||||
|
account:
|
||||||
|
media-id:
|
||||||
|
autoplay:
|
||||||
|
query-args:
|
||||||
|
cols:
|
||||||
|
messages:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
content:
|
||||||
|
link:
|
||||||
|
label:
|
||||||
|
border:
|
||||||
|
width:
|
||||||
|
justify:
|
||||||
|
|
||||||
|
_structures:
|
||||||
|
messages:
|
||||||
|
values:
|
||||||
|
value:
|
||||||
|
title:
|
||||||
|
icon:
|
||||||
|
content:
|
||||||
|
link:
|
||||||
|
label:
|
@@ -0,0 +1,160 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright © 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
||||||
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
||||||
|
Visit gethinode.com/license for more details.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/* Initialize arguments */}}
|
||||||
|
{{ $args := partial "utilities/InitArgs.html" (dict "bookshop" "video-message" "args" .) }}
|
||||||
|
{{ if or $args.err $args.warnmsg }}
|
||||||
|
{{ partial (cond $args.err "utilities/LogErr.html" "utilities/LogWarn.html") (dict
|
||||||
|
"partial" "component-library/components/video-message/video-message.hugo.html"
|
||||||
|
"warnid" "warn-invalid-arguments"
|
||||||
|
"msg" "Invalid arguments"
|
||||||
|
"details" ($args.errmsg | append $args.warnmsg)
|
||||||
|
"file" page.File
|
||||||
|
)}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Initialize global variables */}}
|
||||||
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
|
||||||
|
{{- define "_partials/inline/video.html" -}}
|
||||||
|
{{ $provider := .provider }}
|
||||||
|
{{ $account := .account }}
|
||||||
|
{{ $mediaID := (index . "media-id") }}
|
||||||
|
{{ $autoplay := .autoplay }}
|
||||||
|
{{ $queryArgs := .queryArgs }}
|
||||||
|
{{ $border := .border }}
|
||||||
|
{{ $padding := .padding }}
|
||||||
|
|
||||||
|
{{ if site.Params.env_bookshop_live }}
|
||||||
|
{{/* Define dummy content as we cannot retrieve video data in live mode */}}
|
||||||
|
{{- partial "assets/live-image.html" (dict
|
||||||
|
"src" "/img/placeholder-video.svg"
|
||||||
|
"ratio" "21x9"
|
||||||
|
"wrapper" (printf "text-center mb-%d" $padding.y)) -}}
|
||||||
|
{{ else }}
|
||||||
|
<div class="video-container{{ if $border }} video-container-border{{ end}}">
|
||||||
|
{{ partial "assets/video.html" (dict
|
||||||
|
"page" page
|
||||||
|
"provider" $provider
|
||||||
|
"account" $account
|
||||||
|
"media-id" $mediaID
|
||||||
|
"autoplay" $autoplay
|
||||||
|
"query-args" $queryArgs
|
||||||
|
) -}}
|
||||||
|
{{ if $border }}
|
||||||
|
<div class="video-overlay video-overlay-start"></div>
|
||||||
|
<div class="video-overlay video-overlay-top"></div>
|
||||||
|
<div class="video-overlay video-overlay-end"></div>
|
||||||
|
<div class="video-overlay video-overlay-bottom"></div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{- define "_partials/inline/messages.html" -}}
|
||||||
|
{{ $list := .list }}
|
||||||
|
{{ $cols := .cols }}
|
||||||
|
{{ $type := .type }}
|
||||||
|
{{ $iconRounded := .iconRounded }}
|
||||||
|
{{ $iconStyle := .iconStyle }}
|
||||||
|
|
||||||
|
{{- partial "assets/card-group.html" (dict
|
||||||
|
"page" page
|
||||||
|
"list" $list
|
||||||
|
"class" "border-0 card-icon card-icon-secondary"
|
||||||
|
"cols" $cols
|
||||||
|
"gutter" ""
|
||||||
|
"padding" "0"
|
||||||
|
"header-style" "none"
|
||||||
|
"footer-style" "none"
|
||||||
|
"icon-style" "fa-fluid fa-fw"
|
||||||
|
"align" "start"
|
||||||
|
"orientation" "horizontal-sm"
|
||||||
|
"button" true
|
||||||
|
"link-type" $type
|
||||||
|
"icon-rounded" $iconRounded
|
||||||
|
"icon-style" $iconStyle
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Main code */}}
|
||||||
|
{{ if not $args.err }}
|
||||||
|
{{ $list := slice }}
|
||||||
|
|
||||||
|
{{ range $args.messages }}
|
||||||
|
{{ $path := "" }}
|
||||||
|
{{ $href := "" }}
|
||||||
|
{{ with .link }}{{ if hasPrefix . "http" }}{{ $href = . }}{{ else }}{{ $path = . }}{{ end }}{{ end }}
|
||||||
|
|
||||||
|
{{ $list = $list | append (dict
|
||||||
|
"title" .title
|
||||||
|
"description" (.content | page.RenderString)
|
||||||
|
"icon" .icon
|
||||||
|
"href" $href
|
||||||
|
"path" $path
|
||||||
|
"button-label" .label
|
||||||
|
) }}
|
||||||
|
{{ end}}
|
||||||
|
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"justify" $args.justify
|
||||||
|
"class" (printf "pb-%d" $padding.y))
|
||||||
|
-}}
|
||||||
|
|
||||||
|
{{ if eq $args.orientation "stacked" }}
|
||||||
|
<div class="col-{{ $breakpoint.current }}-{{ $args.width }} mx-auto">
|
||||||
|
{{ with $args.video }}
|
||||||
|
{{- partial "inline/video.html" (dict
|
||||||
|
"provider" .provider
|
||||||
|
"account" .account
|
||||||
|
"media-id" (index . "media-id")
|
||||||
|
"autoplay" .autoplay
|
||||||
|
"query-args" .queryArgs
|
||||||
|
"border" $.border
|
||||||
|
"padding" $padding
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-{{ $padding.y }}">
|
||||||
|
{{- partial "inline/messages.html" (dict
|
||||||
|
"list" $list
|
||||||
|
"cols" $args.cols
|
||||||
|
"type" $args.type
|
||||||
|
"iconRounded" $args.iconRounded
|
||||||
|
"iconStyle" $args.iconStyle
|
||||||
|
) -}}
|
||||||
|
</div>
|
||||||
|
{{ else }}
|
||||||
|
<div class="container grid gap-{{ $padding.x }}">
|
||||||
|
<div class="row row-cols-1 row-cols-{{ $breakpoint.current }}-2">
|
||||||
|
<div class="col col-{{ $breakpoint.current }}-{{ $args.width }} p-0">
|
||||||
|
{{ with $args.video }}
|
||||||
|
{{- partial "inline/video.html" (dict
|
||||||
|
"provider" .provider
|
||||||
|
"account" .account
|
||||||
|
"media-id" (index . "media-id")
|
||||||
|
"autoplay" .autoplay
|
||||||
|
"query-args" .queryArgs
|
||||||
|
"border" $.border
|
||||||
|
"padding" $padding
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="col col-{{ $breakpoint.current }}-{{ sub 12 $args.width }} mt-{{ $padding.y }} mt-{{ $breakpoint.current }}-0">
|
||||||
|
{{- partial "inline/messages.html" (dict
|
||||||
|
"list" $list
|
||||||
|
"cols" 1
|
||||||
|
"type" $args.type
|
||||||
|
"iconRounded" $args.iconRounded
|
||||||
|
"iconStyle" $args.iconStyle
|
||||||
|
) -}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
@@ -0,0 +1,59 @@
|
|||||||
|
.video-container {
|
||||||
|
--bs-video-border-color: var(--bs-primary);
|
||||||
|
--bs-video-border-width: 1rem;
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-container > .video-embedded {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-container-border > .video-embedded {
|
||||||
|
width: calc(100% - var(--bs-video-border-width) / 2);
|
||||||
|
height: calc(100% - var(--bs-video-border-width) / 2);
|
||||||
|
margin-left: calc(var(--bs-video-border-width) / 2);
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-overlay {
|
||||||
|
border: calc(var(--bs-video-border-width) / 2) solid var(--bs-video-border-color);
|
||||||
|
background: var(--bs-video-border-color);
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-overlay-start {
|
||||||
|
border-bottom-left-radius: $theme-border-radius;
|
||||||
|
border-top-left-radius: $theme-border-radius;
|
||||||
|
width: 1;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-overlay-top {
|
||||||
|
width: calc(100% - 1rem);
|
||||||
|
height: 1;
|
||||||
|
left: 1rem;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-overlay-bottom {
|
||||||
|
width: calc(100% - 1rem);
|
||||||
|
height: 1;
|
||||||
|
left: 1rem;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-overlay-end {
|
||||||
|
border-bottom-right-radius: $theme-border-radius;
|
||||||
|
border-top-right-radius: $theme-border-radius;
|
||||||
|
width: 1;
|
||||||
|
height: 100%;
|
||||||
|
left: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
91
component-library/helpers/component.html
Normal file
91
component-library/helpers/component.html
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
{{/* Adapted from https://github.com/CloudCannon/bookshop/blob/main/hugo/v3/core/helpers/component.html */}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Renders a single Bookshop component,
|
||||||
|
wrapping in in a live editing context tag.
|
||||||
|
|
||||||
|
Expects a slice:
|
||||||
|
[
|
||||||
|
<string>, # Component name
|
||||||
|
<_> # Component props
|
||||||
|
]
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- $component_name := index . 0 -}}
|
||||||
|
{{- $component_props := index . 1 -}}
|
||||||
|
{{- $class := index . 2 | default "p-0" -}}
|
||||||
|
{{- $bgclass := index . 3 | default "" -}}
|
||||||
|
{{- $padding := partial "utilities/GetPadding.html" -}}
|
||||||
|
{{- with index $component_props "padding" }}{{ $padding = dict "x" . "y" . }}{{ end -}}
|
||||||
|
{{- $component_path := partial "_bookshop/helpers/component_key" $component_name -}}
|
||||||
|
{{- $flat_component_path := partial "_bookshop/helpers/flat_component_key" $component_name -}}
|
||||||
|
|
||||||
|
{{- $resolved_component := false -}}
|
||||||
|
{{- if templates.Exists ( printf "_partials/%s" $component_path ) -}}
|
||||||
|
{{- $resolved_component = $component_path -}}
|
||||||
|
{{- else if templates.Exists ( printf "_partials/%s" $flat_component_path ) -}}
|
||||||
|
{{- $resolved_component = $flat_component_path -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $resolved_component -}}
|
||||||
|
{{- $id := index $component_props "id" -}}
|
||||||
|
{{- $cover := index $component_props "cover" -}}
|
||||||
|
{{- $background := index $component_props "background" -}}
|
||||||
|
{{- $backdrop := "" -}}
|
||||||
|
{{- $fluid := index $component_props "fluid" | default true -}}
|
||||||
|
{{- $style := index $component_props "wrapper" -}}
|
||||||
|
{{- $width := index $component_props "width" -}}
|
||||||
|
{{- $justify := index $component_props "justify" | default "start" -}}
|
||||||
|
{{- $paddingOuter := cond (ne $component_name "separator") (printf "px-xxl-0 px-%d py-0" $padding.x) "" -}}
|
||||||
|
{{- $padding := cond (ne $component_name "separator") (printf "px-%d %spy-%d" $padding.x (cond $fluid "px-xxl-0 " "") $padding.y) "" -}}
|
||||||
|
{{- $wrapper := $style }}
|
||||||
|
{{ with $background }}
|
||||||
|
{{ $wrapper = partial "utilities/GetBackgroundStyle.html" (dict "background" . "class" $style) }}
|
||||||
|
{{ if reflect.IsMap $background }}
|
||||||
|
{{ with $background.backdrop }}{{ $wrapper = "" }}{{ $backdrop = . }}{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- $theme := index $component_props "theme" -}}
|
||||||
|
{{- $overlayMode := (or (index $component_props "overlay-mode") page.Params.overlayMode) | default "dark" -}}
|
||||||
|
{{ if not $backdrop }}{{ $overlayMode = page.Params.overlayMode }}{{ end }}
|
||||||
|
{{ if eq $overlayMode "none" }}{{ $overlayMode = "" }}{{ end }}
|
||||||
|
|
||||||
|
{{ (printf "<!--bookshop-live name(%s)-->" $component_name) | safeHTML }}
|
||||||
|
{{ if not $fluid }}<div class="container-xxl {{ $paddingOuter }}">{{ end }}
|
||||||
|
<section {{ with $id }}id="{{ . }}" {{ end }}class="{{ $component_name }}
|
||||||
|
container-fluid {{ $class }}
|
||||||
|
{{ with $wrapper }}{{ . }}{{ end -}}
|
||||||
|
{{- if and $backdrop $overlayMode }} background-container{{ end -}}
|
||||||
|
{{- if $cover }} section-cover d-flex align-items-center{{ end }}"
|
||||||
|
{{ with $overlayMode -}}
|
||||||
|
data-bs-theme="{{ . }}"
|
||||||
|
data-bs-overlay="{{ . }}"
|
||||||
|
{{- else -}}
|
||||||
|
{{- with $theme }}data-bs-theme="{{ . }}"{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
>
|
||||||
|
{{- if $backdrop -}}
|
||||||
|
{{ partial "assets/live-image.html" (dict
|
||||||
|
"src" $backdrop
|
||||||
|
"class" (printf "background-img-fluid %s" $bgclass)
|
||||||
|
"title" (T "backgroundImage"))
|
||||||
|
}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ $col := cond (and $width (lt $width 12)) (printf "col-12 col-md-%d" $width) "" }}
|
||||||
|
|
||||||
|
<div class="container-{{ cond $fluid "xxl" "fluid" }} {{ $padding }} d-flex flex-column align-items-{{ $justify }}">
|
||||||
|
{{ with $col }}
|
||||||
|
<div class="{{ . }}">{{ partial $resolved_component $component_props }}</div>
|
||||||
|
{{ else }}
|
||||||
|
{{ partial $resolved_component $component_props }}
|
||||||
|
{{ end}}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ if not $fluid }}</div>{{ end }}
|
||||||
|
{{ "<!--bookshop-live end-->" | safeHTML }}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $file_loc := slicestr $component_path 9 -}}
|
||||||
|
{{- $flat_file_loc := slicestr $flat_component_path 9 -}}
|
||||||
|
{{- partial "_bookshop/errors/err" (printf "Component \"%s\" does not exist.\n Create this component by placing a file in your bookshop at %s or %s" $component_name $file_loc $flat_file_loc) -}}
|
||||||
|
{{- end -}}
|
27
component-library/helpers/partial.html
Normal file
27
component-library/helpers/partial.html
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{{/* Adapted from https://github.com/CloudCannon/bookshop/blob/main/hugo/v3/core/helpers/partial.html */}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Renders a single Bookshop partial,
|
||||||
|
wrapping in in a live editing context tag.
|
||||||
|
|
||||||
|
Expects a slice:
|
||||||
|
[
|
||||||
|
<string>, # Partial name
|
||||||
|
<_> # Partial props
|
||||||
|
]
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- $partial_name := index . 0 -}}
|
||||||
|
{{- $partial_props := index . 1 -}}
|
||||||
|
{{- $partial_path := partial "_bookshop/helpers/partial_key" $partial_name -}}
|
||||||
|
|
||||||
|
{{- if templates.Exists ( printf "partials/%s" $partial_path ) -}}
|
||||||
|
|
||||||
|
{{ (printf "<!--bookshop-live name(%s)-->" $partial_name) | safeHTML }}
|
||||||
|
{{ partial $partial_path $partial_props }}
|
||||||
|
{{ "<!--bookshop-live end-->" | safeHTML }}
|
||||||
|
|
||||||
|
{{- else -}}
|
||||||
|
{{- $file_loc := slicestr $partial_path 9 -}}
|
||||||
|
{{- partial "_bookshop/errors/err" (printf "Partial \"%s\" does not exist.\n Create this partial by placing a file in your bookshop at %s" $partial_name $file_loc) -}}
|
||||||
|
{{- end -}}
|
5
component-library/shared/hugo/page.hugo.html
Normal file
5
component-library/shared/hugo/page.hugo.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<div>
|
||||||
|
{{ range . }}
|
||||||
|
{{ partial "bookshop" . }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
23
component-library/shared/styles/global.scss
Normal file
23
component-library/shared/styles/global.scss
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// Files in shared/styles will be used as global stylesheets on your site,
|
||||||
|
// as well as in the component browser and screenshots.
|
||||||
|
|
||||||
|
.display-1 > strong {
|
||||||
|
color: var(--bs-primary);
|
||||||
|
font-weight: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $enable-dark-mode {
|
||||||
|
@include color-mode(dark) {
|
||||||
|
.preheading.text-primary {
|
||||||
|
color: #{$primary-text-emphasis-dark} !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h1[class*="display-"] {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-offset {
|
||||||
|
padding-top: var(--navbar-offset);
|
||||||
|
}
|
2
component-library/theme.scss
Normal file
2
component-library/theme.scss
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// Placeholder to quickly add your own styles
|
||||||
|
// The file is included last in the build pipeline
|
@@ -1,12 +1,10 @@
|
|||||||
# toml-docs-start main
|
# toml-docs-start main
|
||||||
title = "Hinode"
|
title = "Hinode"
|
||||||
copyright = "Copyright © 2023 Mark Dumay."
|
copyright = "Copyright © 2022 - 2025 Mark Dumay."
|
||||||
paginate = 9
|
|
||||||
enableGitInfo = true
|
enableGitInfo = true
|
||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
# additional settings
|
# additional settings
|
||||||
# googleAnalytics = "G-xxxxxxxxxx"
|
|
||||||
baseURL = "https://example.com/"
|
baseURL = "https://example.com/"
|
||||||
canonifyURLs = false
|
canonifyURLs = false
|
||||||
enableEmoji = true
|
enableEmoji = true
|
||||||
@@ -28,20 +26,48 @@ defaultContentLanguage = "en"
|
|||||||
defaultContentLanguageInSubdir = false
|
defaultContentLanguageInSubdir = false
|
||||||
# toml-docs-end language
|
# toml-docs-end language
|
||||||
|
|
||||||
|
# toml-docs-start headers
|
||||||
|
[outputFormats]
|
||||||
|
[outputFormats.server]
|
||||||
|
mediaType = "application/toml"
|
||||||
|
baseName = "server"
|
||||||
|
isPlainText = true
|
||||||
|
notAlternative = true
|
||||||
|
permalinkable = true
|
||||||
|
root = true
|
||||||
|
[outputFormats.netlify]
|
||||||
|
mediaType = "application/toml"
|
||||||
|
baseName = "netlify"
|
||||||
|
isPlainText = true
|
||||||
|
notAlternative = true
|
||||||
|
permalinkable = true
|
||||||
|
root = true
|
||||||
|
# toml-docs-end headers
|
||||||
|
|
||||||
|
[outputFormats.XML]
|
||||||
|
isPlainText = false
|
||||||
|
mediaType = "application/xml"
|
||||||
|
isHtml = false
|
||||||
|
noUgly = true
|
||||||
|
permalinkable = false
|
||||||
|
name = "xml"
|
||||||
|
|
||||||
# toml-docs-start redirect
|
# toml-docs-start redirect
|
||||||
[outputFormats.REDIR]
|
[outputFormats.REDIR]
|
||||||
mediaType = "text/netlify"
|
mediaType = "text/netlify"
|
||||||
baseName = "_redirects"
|
baseName = "_redirects"
|
||||||
isPlainText = true
|
isPlainText = true
|
||||||
notAlternative = true
|
notAlternative = true
|
||||||
|
|
||||||
[mediaTypes."text/netlify"]
|
[mediaTypes."text/netlify"]
|
||||||
delimiter = ""
|
delimiter = ""
|
||||||
|
|
||||||
[outputs]
|
|
||||||
home = ["HTML", "RSS", "REDIR"]
|
|
||||||
# toml-docs-end redirect
|
# toml-docs-end redirect
|
||||||
|
|
||||||
|
# toml-docs-start outputs
|
||||||
|
[outputs]
|
||||||
|
home = ["HTML", "RSS", "REDIR", "netlify", "server"]
|
||||||
|
# toml-docs-end outputs
|
||||||
|
|
||||||
# toml-docs-start build
|
# toml-docs-start build
|
||||||
[build]
|
[build]
|
||||||
writeStats = true
|
writeStats = true
|
||||||
@@ -50,12 +76,15 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
[taxonomies]
|
[taxonomies]
|
||||||
tag = 'tags'
|
tag = 'tags'
|
||||||
|
|
||||||
|
[pagination]
|
||||||
|
pagerSize = 9
|
||||||
|
|
||||||
[privacy]
|
[privacy]
|
||||||
[privacy.vimeo]
|
[privacy.vimeo]
|
||||||
disabled = false
|
disabled = false
|
||||||
simple = true
|
simple = true
|
||||||
|
|
||||||
[privacy.twitter]
|
[privacy.x]
|
||||||
disabled = false
|
disabled = false
|
||||||
enableDNT = true
|
enableDNT = true
|
||||||
simple = true
|
simple = true
|
||||||
@@ -71,23 +100,23 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
[services]
|
[services]
|
||||||
[services.instagram]
|
[services.instagram]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
[services.twitter]
|
[services.x]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
|
[services.googleAnalytics]
|
||||||
|
# ID = "G-xxxxxxxxxx"
|
||||||
|
|
||||||
[outputFormats]
|
[minify]
|
||||||
[outputFormats.XML]
|
[minify.tdewolff.js]
|
||||||
isPlainText = false
|
keepVarNames = true
|
||||||
mediaType = "application/xml"
|
precision = 0
|
||||||
isHtml = false
|
version = 2022
|
||||||
noUgly = true
|
[minify.tdewolff.html]
|
||||||
permalinkable = false
|
keepWhitespace = true
|
||||||
name = "xml"
|
|
||||||
|
|
||||||
[module]
|
[module]
|
||||||
[module.hugoVersion]
|
[module.hugoVersion]
|
||||||
extended = true
|
extended = true
|
||||||
min = "0.110.0"
|
min = "0.146.0"
|
||||||
max = ""
|
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "archetypes"
|
source = "archetypes"
|
||||||
target = "archetypes"
|
target = "archetypes"
|
||||||
@@ -97,6 +126,9 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "content"
|
source = "content"
|
||||||
target = "content"
|
target = "content"
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "data"
|
||||||
|
target = "data"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "i18n"
|
source = "i18n"
|
||||||
target = "i18n"
|
target = "i18n"
|
||||||
@@ -106,18 +138,67 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "static"
|
source = "static"
|
||||||
target = "static"
|
target = "static"
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'component-library'
|
||||||
|
target = 'layouts/partials/bookshop'
|
||||||
|
includeFiles = ['**/*.hugo.html']
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'component-library'
|
||||||
|
target = 'data/structures'
|
||||||
|
includeFiles = ['**/*.bookshop.yml']
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'component-library'
|
||||||
|
target = 'assets/bookshop'
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'component-library'
|
||||||
|
target = 'assets/scss/modules/bookshop'
|
||||||
|
includeFiles = ['**/*.scss']
|
||||||
|
excludeFiles = ['bookshop.scss']
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'component-library/bookshop.scss'
|
||||||
|
target = 'assets/scss/bookshop.scss'
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'component-library/helpers'
|
||||||
|
target = 'layouts/partials/_bookshop/helpers'
|
||||||
|
# ensures main package.json is always available, even when using workspaces
|
||||||
|
# in workspaces, the package.json is pointing to the first imported module
|
||||||
|
[[module.mounts]]
|
||||||
|
source = "package.json"
|
||||||
|
target = "assets/data/package-hinode.json"
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "netlify.toml"
|
source = "netlify.toml"
|
||||||
target = "assets/config/netlify.toml"
|
target = "assets/config/netlify.toml"
|
||||||
# toml-docs-start modules
|
# toml-docs-start modules
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/cloudcannon/bookshop/hugo/v3"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-bootstrap"
|
path = "github.com/gethinode/mod-bootstrap"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-flexsearch"
|
path = "github.com/gethinode/mod-csp"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-fontawesome"
|
path = "github.com/gethinode/mod-flexsearch/v2"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-fontawesome/v2"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-google-analytics"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-katex"
|
path = "github.com/gethinode/mod-katex"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-leaflet"
|
path = "github.com/gethinode/mod-leaflet"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-lottie"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-mermaid/v2"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-simple-datatables/v2"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-utils/v4"
|
||||||
# toml-docs-end modules
|
# toml-docs-end modules
|
||||||
|
|
||||||
|
# toml-docs-start segments
|
||||||
|
[segments]
|
||||||
|
[segments.headers]
|
||||||
|
[[segments.headers.includes]]
|
||||||
|
kind = '{home}'
|
||||||
|
output = '{netlify,server}'
|
||||||
|
# toml-docs-end segments
|
||||||
|
@@ -11,5 +11,5 @@
|
|||||||
title = "Follow me"
|
title = "Follow me"
|
||||||
caption = "I work on everything coding and tweet developer memes"
|
caption = "I work on everything coding and tweet developer memes"
|
||||||
[en.params.footer]
|
[en.params.footer]
|
||||||
# license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank' rel='noopener noreferrer'>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 nofollow'>CC BY-NC-SA 4.0</a>)."
|
||||||
# toml-docs-end lang-param
|
# toml-docs-end lang-param
|
||||||
|
@@ -24,9 +24,15 @@ defaultMarkdownHandler = "goldmark"
|
|||||||
table = true
|
table = true
|
||||||
taskList = true
|
taskList = true
|
||||||
typographer = true
|
typographer = true
|
||||||
|
[goldmark.extensions.passthrough]
|
||||||
|
enable = true
|
||||||
|
[goldmark.extensions.passthrough.delimiters]
|
||||||
|
block = [['\[', '\]'], ['$$', '$$']]
|
||||||
|
inline = [['\(', '\)'], ['$', '$']]
|
||||||
[goldmark.parser]
|
[goldmark.parser]
|
||||||
autoHeadingID = true
|
autoHeadingID = true
|
||||||
autoHeadingIDType = 'github'
|
autoHeadingIDType = 'github'
|
||||||
|
wrapStandAloneImageWithinParagraph = false
|
||||||
[goldmark.parser.attribute]
|
[goldmark.parser.attribute]
|
||||||
block = true
|
block = true
|
||||||
[goldmark.renderer]
|
[goldmark.renderer]
|
||||||
|
@@ -3,9 +3,20 @@
|
|||||||
separator = "-"
|
separator = "-"
|
||||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||||
enableDarkMode = true
|
enableDarkMode = true
|
||||||
|
enableLanguageSelectionStorage = false
|
||||||
modes = ["light", "dark"]
|
modes = ["light", "dark"]
|
||||||
canonifyAssetsURLs = false
|
canonifyAssetsURLs = false
|
||||||
endorse = true
|
endorse = true
|
||||||
|
footerBelowFold = false
|
||||||
|
loading = "lazy"
|
||||||
|
breakpoint = "md"
|
||||||
|
titleCase = false
|
||||||
|
[main.padding]
|
||||||
|
x = 4
|
||||||
|
y = 4
|
||||||
|
[main.internalLinks]
|
||||||
|
validate = true
|
||||||
|
pretty = false
|
||||||
[main.externalLinks]
|
[main.externalLinks]
|
||||||
cue = false
|
cue = false
|
||||||
tab = false
|
tab = false
|
||||||
@@ -13,23 +24,40 @@
|
|||||||
transpiler = "libsass"
|
transpiler = "libsass"
|
||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
# toml-docs-start modules
|
# toml-docs-start images
|
||||||
[modules]
|
[images]
|
||||||
core = ["bootstrap", "flexsearch", "fontawesome"]
|
[images.cloudinary]
|
||||||
optional = ["leaflet", "katex"]
|
host = "cloudinary"
|
||||||
excludeSCSS = ["bootstrap"]
|
[images.imagekit]
|
||||||
disableTemplate = ["katex"]
|
host = "imagekit"
|
||||||
[modules.fontawesome]
|
[images.imgix]
|
||||||
inline = true
|
host = "imgix"
|
||||||
debug = true
|
# toml-docs-end images
|
||||||
skipMissing = false
|
|
||||||
# toml-docs-end modules
|
# toml-docs-start videos
|
||||||
|
[videos]
|
||||||
|
[videos.cloudinary]
|
||||||
|
host = "cloudinary"
|
||||||
|
account = "demo"
|
||||||
|
[videos.vimeo]
|
||||||
|
host = "vimeo"
|
||||||
|
[videos.youtube]
|
||||||
|
host = "youtube"
|
||||||
|
# toml-docs-end videos
|
||||||
|
|
||||||
|
[dam]
|
||||||
|
videoCodecs = [
|
||||||
|
"webm/vp9",
|
||||||
|
"mp4/h265",
|
||||||
|
"mp4"
|
||||||
|
]
|
||||||
|
|
||||||
# toml-docs-start debugging
|
# toml-docs-start debugging
|
||||||
[debugging]
|
[debugging]
|
||||||
showJS = false
|
showJS = false
|
||||||
showSCSS = false
|
showSCSS = false
|
||||||
purgeHTMLComments = false
|
purgeHTMLComments = false
|
||||||
|
includeSVGOrigin = true
|
||||||
# toml-docs-end debugging
|
# toml-docs-end debugging
|
||||||
|
|
||||||
# toml-docs-start docs
|
# toml-docs-start docs
|
||||||
@@ -45,20 +73,33 @@
|
|||||||
fullCover = false
|
fullCover = false
|
||||||
centerHeadline = false
|
centerHeadline = false
|
||||||
style = ""
|
style = ""
|
||||||
|
[home.feature]
|
||||||
|
orientation = "horizontal"
|
||||||
|
color = "primary"
|
||||||
|
width = 4
|
||||||
|
align = "start"
|
||||||
# toml-docs-end home
|
# toml-docs-end home
|
||||||
|
|
||||||
# toml-docs-start navigation
|
# toml-docs-start navigation
|
||||||
[navigation]
|
[navigation]
|
||||||
anchor = true
|
anchor = true
|
||||||
logo = "/img/logo_icon.svg"
|
logo = "/img/logo_icon.svg"
|
||||||
|
logo-height = 30
|
||||||
color = "body"
|
color = "body"
|
||||||
fixed = true
|
fixed = true
|
||||||
offset = "3.8em"
|
overlay = false
|
||||||
|
overlayMode = "dark"
|
||||||
|
horizontal = false
|
||||||
|
offset = "5.5rem"
|
||||||
search = true
|
search = true
|
||||||
|
searchModal = false
|
||||||
breadcrumb = true
|
breadcrumb = true
|
||||||
toc = true
|
toc = true
|
||||||
sidebar = true
|
sidebar = true
|
||||||
size = "md"
|
size = "md"
|
||||||
|
[navigation.padding]
|
||||||
|
x = 4
|
||||||
|
y = 4
|
||||||
# toml-docs-end navigation
|
# toml-docs-end navigation
|
||||||
|
|
||||||
# toml-docs-start messages
|
# toml-docs-start messages
|
||||||
@@ -145,6 +186,7 @@
|
|||||||
themeFont = "Inter"
|
themeFont = "Inter"
|
||||||
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||||
themeFontPath = "/fonts" # local path
|
themeFontPath = "/fonts" # local path
|
||||||
|
themeFontPreload = "/fonts/inter-v12-latin-regular.woff2"
|
||||||
fontSizeBase = "1rem" # assumes the browser default, typically '16px'
|
fontSizeBase = "1rem" # assumes the browser default, typically '16px'
|
||||||
# toml-docs-end font
|
# toml-docs-end font
|
||||||
# toml-docs-start build
|
# toml-docs-start build
|
||||||
@@ -159,16 +201,16 @@
|
|||||||
# linkedIn = ""
|
# linkedIn = ""
|
||||||
github = "https://github.com/gethinode/hinode"
|
github = "https://github.com/gethinode/hinode"
|
||||||
section = "blog"
|
section = "blog"
|
||||||
[author]
|
[schema.author]
|
||||||
name = "Mark Dumay"
|
name = "Mark Dumay"
|
||||||
# twitter = "https://twitter.com/markdumay"
|
# twitter = "https://twitter.com/markdumay"
|
||||||
linkedin = "https://www.linkedin.com/in/markdumay/"
|
linkedin = "https://www.linkedin.com/in/markdumay/"
|
||||||
github = "https://github.com/markdumay"
|
github = "https://github.com/markdumay"
|
||||||
[logo]
|
[schema.logo]
|
||||||
url = "img/logo512x512.png"
|
url = "img/logo512x512.png"
|
||||||
width = 512
|
width = 512
|
||||||
height = 512
|
height = 512
|
||||||
[image]
|
[schema.image]
|
||||||
url = "img/logo1280x640.png"
|
url = "img/logo1280x640.png"
|
||||||
width = 1280
|
width = 1280
|
||||||
height = 640
|
height = 640
|
||||||
@@ -177,14 +219,62 @@
|
|||||||
images = ["logo.png"]
|
images = ["logo.png"]
|
||||||
locale = "en_US"
|
locale = "en_US"
|
||||||
|
|
||||||
[comments]
|
|
||||||
enabled = false
|
|
||||||
repo = "" # Replace with your repository.
|
|
||||||
#issueTerm = "pathname" # pathname, url, title, og:title
|
|
||||||
#label = "comment"
|
|
||||||
# By default, light and dark mode correspond to github-light and github-dark, respectively.
|
|
||||||
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
|
|
||||||
#theme = ""
|
|
||||||
|
|
||||||
[links]
|
[links]
|
||||||
hinode = "https://gethinode.com"
|
hinode = "https://gethinode.com"
|
||||||
|
|
||||||
|
# toml-docs-start headers
|
||||||
|
[headers]
|
||||||
|
[headers.netlify]
|
||||||
|
source = "netlify.toml"
|
||||||
|
# toml-docs-end headers
|
||||||
|
|
||||||
|
# toml-docs-start csp
|
||||||
|
[modules.hinode.csp]
|
||||||
|
style-src = ["www.youtube.com"]
|
||||||
|
font-src = ["fonts.gstatic.com"]
|
||||||
|
frame-src = [
|
||||||
|
"player.cloudinary.com",
|
||||||
|
"www.youtube-nocookie.com",
|
||||||
|
"www.youtube.com"
|
||||||
|
]
|
||||||
|
img-src = [
|
||||||
|
"data:",
|
||||||
|
"*.imgix.net",
|
||||||
|
"*.imagekit.io",
|
||||||
|
"*.cloudinary.com",
|
||||||
|
"i.ytimg.com"
|
||||||
|
]
|
||||||
|
# toml-docs-end csp
|
||||||
|
|
||||||
|
[modules.vimeo]
|
||||||
|
local = true
|
||||||
|
integration = "optional"
|
||||||
|
state = "async"
|
||||||
|
url = "https://player.vimeo.com/api/player.js"
|
||||||
|
|
||||||
|
[modules.vimeo.csp]
|
||||||
|
frame-src = ["player.vimeo.com"]
|
||||||
|
img-src = ["i.vimeocdn.com"]
|
||||||
|
script-src = ["player.vimeo.com"]
|
||||||
|
|
||||||
|
# define module integration
|
||||||
|
[modules.bookshop]
|
||||||
|
integration = "core"
|
||||||
|
|
||||||
|
# provide default hero settings
|
||||||
|
[modules.bookshop.hero]
|
||||||
|
align = "start"
|
||||||
|
# backdrop = "/assets/img/nat-9l98kFByiao-unsplash.jpg"
|
||||||
|
overlayMode = "dark"
|
||||||
|
section = true
|
||||||
|
default = ["section"]
|
||||||
|
# default = ["page", "home", "section"]
|
||||||
|
|
||||||
|
[modules.bookshop.title]
|
||||||
|
size = 4
|
||||||
|
arrangement = "above"
|
||||||
|
headingStyle = "display"
|
||||||
|
bodyStyle = "lead text-muted"
|
||||||
|
|
||||||
|
[modules.bookshop.articles]
|
||||||
|
moreButton = true
|
||||||
|
@@ -1,43 +1,29 @@
|
|||||||
# toml-docs-start server-config
|
# Auto-generated file - do not modify
|
||||||
|
|
||||||
[[headers]]
|
[[headers]]
|
||||||
for = '/**'
|
for = '/**'
|
||||||
[headers.values]
|
|
||||||
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
|
[headers.values]
|
||||||
X-Content-Type-Options = "nosniff"
|
Access-Control-Allow-Origin = '*'
|
||||||
X-XSS-Protection = "1; mode=block"
|
Content-Security-Policy = """
|
||||||
Content-Security-Policy = """\
|
|
||||||
default-src 'self'; \
|
|
||||||
script-src 'self' \
|
|
||||||
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'; \
|
base-uri 'self'; \
|
||||||
connect-src 'self'
|
connect-src 'self' *.analytics.google.com *.google.com *.google-analytics.com *.googletagmanager.com; \
|
||||||
https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; \
|
default-src 'none'; \
|
||||||
font-src 'self' https://fonts.gstatic.com; \
|
font-src 'self' fonts.gstatic.com data:; \
|
||||||
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
form-action 'self'; \
|
||||||
img-src 'self' data: https://i.vimeocdn.com https://i.ytimg.com https://*.google-analytics.com https://*.googletagmanager.com https://tile.openstreetmap.org; \
|
frame-src *.googletagmanager.com player.cloudinary.com www.youtube-nocookie.com www.youtube.com player.vimeo.com; \
|
||||||
|
img-src 'self' *.google-analytics.com *.googletagmanager.com googletagmanager.com ssl.gstatic.com www.gstatic.com data: *.imgix.net *.imagekit.io *.cloudinary.com i.ytimg.com tile.openstreetmap.org i.vimeocdn.com; \
|
||||||
manifest-src 'self'; \
|
manifest-src 'self'; \
|
||||||
media-src 'self' \
|
media-src 'self'; \
|
||||||
|
object-src 'none'; \
|
||||||
|
script-src 'self' *.google-analytics.com *.googletagmanager.com *.analytics.google.com googletagmanager.com tagmanager.google.com player.vimeo.com; \
|
||||||
|
style-src 'self' googletagmanager.com tagmanager.google.com fonts.googleapis.com www.youtube.com; \
|
||||||
"""
|
"""
|
||||||
X-Frame-Options = "SAMEORIGIN"
|
Permissions-Policy = 'geolocation=(), midi=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), fullscreen=(), payment=() '
|
||||||
Referrer-Policy = "strict-origin"
|
Referrer-Policy = 'strict-origin'
|
||||||
Permissions-Policy = """\
|
Strict-Transport-Security = 'max-age=31536000; includeSubDomains; preload'
|
||||||
geolocation=(), \
|
X-Content-Type-Options = 'nosniff'
|
||||||
midi=(), \
|
X-Frame-Options = 'SAMEORIGIN'
|
||||||
sync-xhr=(), \
|
X-XSS-Protection = '1; mode=block'
|
||||||
microphone=(), \
|
cache-control = 'max-age=0, no-cache, no-store, must-revalidate '
|
||||||
camera=(), \
|
|
||||||
magnetometer=(), \
|
|
||||||
gyroscope=(), \
|
|
||||||
fullscreen=(), \
|
|
||||||
payment=() \
|
|
||||||
"""
|
|
||||||
cache-control = """\
|
|
||||||
max-age=0, \
|
|
||||||
no-cache, \
|
|
||||||
no-store, \
|
|
||||||
must-revalidate \
|
|
||||||
"""
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
# toml-docs-end server-config
|
|
||||||
|
@@ -3,30 +3,37 @@ const cssnano = require('cssnano')({
|
|||||||
preset: 'advanced'
|
preset: 'advanced'
|
||||||
})
|
})
|
||||||
const whitelister = require('purgecss-whitelister')
|
const whitelister = require('purgecss-whitelister')
|
||||||
const purgecss = require('@fullhuman/postcss-purgecss')({
|
const purgeImport = require('@fullhuman/postcss-purgecss')
|
||||||
|
const purgeCSSPlugin = purgeImport.purgeCSSPlugin || purgeImport.default || purgeImport
|
||||||
|
const purgecss = purgeCSSPlugin({
|
||||||
content: ['./hugo_stats.json'],
|
content: ['./hugo_stats.json'],
|
||||||
defaultExtractor: (content) => {
|
defaultExtractor: (content) => {
|
||||||
const els = JSON.parse(content).htmlElements
|
const els = JSON.parse(content).htmlElements
|
||||||
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||||
},
|
},
|
||||||
dynamicAttributes: ['data-bs-theme'],
|
dynamicAttributes: ['data-bs-theme', 'data-bs-theme-animate'],
|
||||||
safelist: [
|
safelist: ['was-validated',
|
||||||
...whitelister([
|
...whitelister([
|
||||||
'./assets/scss/components/_clipboard.scss',
|
'./assets/scss/components/_clipboard.scss',
|
||||||
'./assets/scss/components/_command.scss',
|
'./assets/scss/components/_command.scss',
|
||||||
|
'./assets/scss/components/_nav.scss',
|
||||||
'./assets/scss/components/_navbar.scss',
|
'./assets/scss/components/_navbar.scss',
|
||||||
'./assets/scss/components/_search.scss',
|
'./assets/scss/components/_search.scss',
|
||||||
'./assets/scss/components/_syntax.scss',
|
'./assets/scss/components/_syntax.scss',
|
||||||
'./assets/scss/components/_syntax-dark.scss',
|
'./assets/scss/components/_syntax-dark.scss',
|
||||||
'./assets/scss/components/_syntax-light.scss',
|
'./assets/scss/components/_syntax-light.scss',
|
||||||
'./assets/scss/components/_table.scss',
|
'./assets/scss/components/_table.scss',
|
||||||
|
'./assets/scss/components/_video.scss',
|
||||||
'./assets/scss/theme/fonts.scss',
|
'./assets/scss/theme/fonts.scss',
|
||||||
'./assets/scss/theme/theme.scss',
|
'./assets/scss/theme/theme.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-flexsearch/assets/scss/modules/flexsearch/flexsearch.scss',
|
'./_vendor/github.com/gethinode/mod-cookieyes/v2/assets/scss/cookieyes.scss',
|
||||||
|
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
'./_vendor/github.com/gethinode/mod-katex/dist/katex.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
'./_vendor/github.com/gethinode/mod-leaflet/dist/leaflet.scss',
|
||||||
|
'./_vendor/github.com/gethinode/mod-simple-datatables/v2/dist/simple-datatables.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_carousel.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_dropdown.scss',
|
||||||
|
'./_vendor/github.com/twbs/bootstrap/scss/_modal.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_reboot.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_tooltip.scss',
|
||||||
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',
|
'./_vendor/github.com/twbs/bootstrap/scss/_transitions.scss',
|
||||||
|
@@ -1,13 +1,24 @@
|
|||||||
---
|
---
|
||||||
title: Welcome to Hinode!
|
title: Welcome to Hinode!
|
||||||
thumbnail:
|
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
url: /img/sunrise.jpg
|
content_blocks:
|
||||||
author: Harris Vo
|
- _bookshop_name: hero
|
||||||
authorURL: https://unsplash.com/@hoanvokim
|
heading:
|
||||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
title: Welcome to Hinode!
|
||||||
originName: Unsplash
|
content: |-
|
||||||
|
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
|
width: 6
|
||||||
|
background:
|
||||||
|
color: primary
|
||||||
|
subtle: true
|
||||||
|
illustration:
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
ratio: 16x9
|
||||||
|
width: 8
|
||||||
|
links:
|
||||||
|
- title: Getting started
|
||||||
|
url: https://gethinode.com/docs
|
||||||
|
icon: fas chevron-right
|
||||||
|
orientation: horizontal
|
||||||
|
justify: center
|
||||||
---
|
---
|
||||||
|
|
||||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
|
||||||
|
|
||||||
{{< button href="https://gethinode.com/docs" icon="fas book-open" order="first" >}}Get Started{{< /button>}}
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user