mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-07 18:14:28 +00:00
Compare commits
709 Commits
v0.27.0-al
...
v1.0.0-alp
Author | SHA1 | Date | |
---|---|---|---|
![]() |
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 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
|||||||
_vendor/
|
_vendor/
|
||||||
|
prebuild/
|
||||||
public/
|
public/
|
||||||
resources/
|
resources/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
@@ -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) 2024 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
|
||||||
|
@@ -123,7 +123,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
|
||||||
|
@@ -3,13 +3,13 @@ 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,21 +0,0 @@
|
|||||||
// Adapted from https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/google_analytics.html
|
|
||||||
|
|
||||||
{{ if and (not hugo.IsServer) (not site.Config.Privacy.GoogleAnalytics.Disable) }}
|
|
||||||
{{ with site.Config.Services.GoogleAnalytics.ID }}
|
|
||||||
{{ if strings.HasPrefix (lower .) "ua-" }}
|
|
||||||
{{ warnf "Google Analytics 4 (GA4) replaced Google Universal Analytics (UA) effective 1 July 2023. See https://support.google.com/analytics/answer/11583528. Create a GA4 property and data stream, then replace the Google Analytics ID in your site configuration with the new value." }}
|
|
||||||
{{ else }}
|
|
||||||
var doNotTrack = false;
|
|
||||||
if ({{ site.Config.Privacy.GoogleAnalytics.RespectDoNotTrack }}) {
|
|
||||||
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
|
|
||||||
var doNotTrack = (dnt == "1" || dnt == "yes");
|
|
||||||
}
|
|
||||||
if (!doNotTrack) {
|
|
||||||
window.dataLayer = window.dataLayer || [];
|
|
||||||
function gtag(){dataLayer.push(arguments);}
|
|
||||||
gtag('js', new Date());
|
|
||||||
gtag('config', '{{ . }}');
|
|
||||||
}
|
|
||||||
{{ 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)
|
||||||
|
}
|
||||||
|
}
|
@@ -11,8 +11,8 @@
|
|||||||
|
|
||||||
const supportedThemes = ['auto', 'dark', 'light'];
|
const supportedThemes = ['auto', 'dark', 'light'];
|
||||||
|
|
||||||
// retrieves the currently stored theme from local storage (cookie)
|
// retrieves the currently stored theme from local storage
|
||||||
const storedTheme = localStorage.getItem('theme')
|
const storedTheme = getLocalStorage('theme', 'auto', 'functional')
|
||||||
|
|
||||||
// retrieves the theme preferred by the client, defaults to light
|
// retrieves the theme preferred by the client, defaults to light
|
||||||
function getPreferredTheme() {
|
function getPreferredTheme() {
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
return storedTheme
|
return storedTheme
|
||||||
} else {
|
} else {
|
||||||
const preference = getPreferredTheme()
|
const preference = getPreferredTheme()
|
||||||
localStorage.setItem('theme', preference)
|
setLocalStorage('theme', preference, 'functional')
|
||||||
return preference
|
return preference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
if (!supportedThemes.includes(theme)) {
|
if (!supportedThemes.includes(theme)) {
|
||||||
theme = 'auto'
|
theme = 'auto'
|
||||||
}
|
}
|
||||||
localStorage.setItem('theme', theme)
|
setLocalStorage('theme', theme, 'functional')
|
||||||
|
|
||||||
if (theme === 'auto') {
|
if (theme === 'auto') {
|
||||||
document.documentElement.setAttribute('data-bs-theme', (getPreferredTheme()))
|
document.documentElement.setAttribute('data-bs-theme', (getPreferredTheme()))
|
||||||
|
@@ -1,17 +1,20 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
{{- if site.Params.main.enableLanguageSelectionStorage -}}
|
{{- if site.Params.main.enableLanguageSelectionStorage -}}
|
||||||
|
{{- $folder := (urls.Parse site.BaseURL).Path | default "/" -}}
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
// Function to get the selected language from localStorage
|
const folder = '{{ $folder }}'
|
||||||
|
|
||||||
|
// Function to get the selected language from local storage
|
||||||
function getLanguage () {
|
function getLanguage () {
|
||||||
return localStorage.getItem('selectedLanguage')
|
return getLocalStorage('selectedLanguage', document.documentElement.lang, 'functional')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to set the selected language in localStorage
|
// Function to set the selected language in local storage
|
||||||
function setLanguage (language) {
|
function setLanguage (language) {
|
||||||
localStorage.setItem('selectedLanguage', language)
|
setLocalStorage('selectedLanguage', language, 'functional')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to apply the selected language to the website
|
// Function to apply the selected language to the website
|
||||||
@@ -22,17 +25,37 @@
|
|||||||
window.location.href = href
|
window.location.href = href
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
window.location.href = '/' + language + '/'
|
let target = folder + language + '/'
|
||||||
|
if (window.location.href !== target) {
|
||||||
|
window.location.href = target
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Event listener for language selection
|
// Event listener for language selection
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
const storedLanguage = getLanguage()
|
// override stored language when query string contains force is true
|
||||||
const languageItems = document.querySelectorAll('#language-selector .dropdown-item')
|
let params = new URLSearchParams(document.location.search)
|
||||||
|
let force = params.get('force')
|
||||||
|
if (force !== null && force.toLowerCase() == 'true') {
|
||||||
|
setLanguage(document.documentElement.lang)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (languageItems.length > 0) {
|
// 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
|
// Redirect if the stored language differs from the active language
|
||||||
if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) {
|
if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) {
|
||||||
languageItems.forEach(item => {
|
languageItems.forEach(item => {
|
||||||
@@ -54,10 +77,8 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Redirect to the localized homepage
|
// overrule the current stored language when no translation is available
|
||||||
const defaultLang = '{{ site.LanguageCode | default site.Language.Lang }}'
|
setLanguage(document.documentElement.lang)
|
||||||
let language = storedLanguage ? storedLanguage : defaultLang
|
|
||||||
window.location.href = '/' + language + '/'
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})()
|
})()
|
||||||
|
@@ -5,15 +5,22 @@ const modeSelectors = document.querySelectorAll('.switch-mode-collapsed')
|
|||||||
const colorsBG = ['body', 'secondary', 'tertiary']
|
const colorsBG = ['body', 'secondary', 'tertiary']
|
||||||
|
|
||||||
function updateNavbar () {
|
function updateNavbar () {
|
||||||
|
let storedTheme
|
||||||
|
if (typeof getLocalStorage === "function") {
|
||||||
|
storedTheme = getLocalStorage('theme', null, 'functional')
|
||||||
|
}
|
||||||
|
|
||||||
if (window.scrollY > 75) {
|
if (window.scrollY > 75) {
|
||||||
navbar.classList.add('nav-active')
|
navbar.classList.add('nav-active')
|
||||||
const storedTheme = localStorage.getItem('theme')
|
if (storedTheme) {
|
||||||
navbar.setAttribute('data-bs-theme', storedTheme)
|
navbar.setAttribute('data-bs-theme', storedTheme)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
navbar.classList.remove('nav-active')
|
navbar.classList.remove('nav-active')
|
||||||
const defaultTheme = navbar.getAttribute('data-bs-overlay')
|
const defaultTheme = navbar.getAttribute('data-bs-overlay')
|
||||||
|
|
||||||
if (defaultTheme) {
|
const targetTheme = defaultTheme ? defaultTheme : storedTheme
|
||||||
|
if (targetTheme) {
|
||||||
navbar.setAttribute('data-bs-theme', defaultTheme)
|
navbar.setAttribute('data-bs-theme', defaultTheme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 -}}
|
@@ -146,19 +146,19 @@ $utilities: map-merge(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-cover {
|
.section-cover {
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@include media-breakpoint-up(xxl) {
|
@include media-breakpoint-up(xxl) {
|
||||||
.main-cover {
|
.section-cover {
|
||||||
min-height: calc(min(100vh, 1000px));
|
min-height: calc(min(100vh, 1000px));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stylelint-disable media-feature-range-notation */
|
/* stylelint-disable media-feature-range-notation */
|
||||||
@media (min-height: 1400px) {
|
@media (min-height: 1400px) {
|
||||||
.main-cover {
|
.section-cover {
|
||||||
min-height: calc(min(100vh, 1000px));
|
min-height: calc(min(100vh, 1000px));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -16,6 +16,8 @@ $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);
|
||||||
}
|
}
|
||||||
@@ -33,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;
|
||||||
@@ -50,3 +54,18 @@ $primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-sha
|
|||||||
$dropdown-transition: opacity .15s ease-in-out !default;
|
$dropdown-transition: opacity .15s ease-in-out !default;
|
||||||
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
|
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
|
||||||
$dropdown-horizontal-padding-y: calc(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,
|
||||||
|
);
|
||||||
|
@@ -17,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;
|
||||||
@@ -42,3 +49,18 @@ $dropdown-transition: opacity .15s ease-in-out !default;
|
|||||||
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
|
$dropdown-horizontal-margin-top: calc((-1.5 * 1rem) - 2px);
|
||||||
$dropdown-horizontal-padding-y: calc(1rem + 2px);
|
$dropdown-horizontal-padding-y: calc(1rem + 2px);
|
||||||
// scss-docs-end horizontal-nav
|
// 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,
|
||||||
|
);
|
||||||
|
@@ -5,6 +5,10 @@
|
|||||||
background-color: var(--#{$prefix}secondary-bg);
|
background-color: var(--#{$prefix}secondary-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
--bs-card-bg: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
.card .card-img-wrap {
|
.card .card-img-wrap {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@@ -1,4 +1,8 @@
|
|||||||
.nav-tabs > .nav-link.active {
|
.nav-tabs .nav-tabs {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs .nav-link.active {
|
||||||
border-bottom-color: var(--bs-body-bg) !important;
|
border-bottom-color: var(--bs-body-bg) !important;
|
||||||
border-bottom-style: solid !important;
|
border-bottom-style: solid !important;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
@@ -12,13 +16,13 @@
|
|||||||
column-gap: var(--#{$prefix}nav-callout-gap) !important;
|
column-gap: var(--#{$prefix}nav-callout-gap) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-callout > .tab-content {
|
.nav-callout + .tab-content {
|
||||||
background-color: var(--#{$prefix}nav-callout-bg);
|
background-color: var(--#{$prefix}nav-callout-bg);
|
||||||
padding: 2 * $spacer;
|
padding: 2 * $spacer;
|
||||||
margin-top: 0 !important;
|
margin-top: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-callout > .nav-link {
|
.nav-callout .nav-link {
|
||||||
display: flex;
|
display: flex;
|
||||||
text-align: start;
|
text-align: start;
|
||||||
vertical-align: text-top;
|
vertical-align: text-top;
|
||||||
@@ -27,7 +31,7 @@
|
|||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-callout > .nav-link.active {
|
.nav-callout .nav-link.active {
|
||||||
background-image: linear-gradient(to top right, var(--#{$prefix}nav-callout-bg) 50%, transparent 0);
|
background-image: linear-gradient(to top right, var(--#{$prefix}nav-callout-bg) 50%, transparent 0);
|
||||||
background-size: 50% (3 * $spacer);
|
background-size: 50% (3 * $spacer);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
@@ -53,7 +57,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-callout > .accordion-item {
|
.nav-callout .accordion-item {
|
||||||
margin-top: 2 * $spacer;
|
margin-top: 2 * $spacer;
|
||||||
margin-bottom: 2 * $spacer;
|
margin-bottom: 2 * $spacer;
|
||||||
border: none;
|
border: none;
|
||||||
|
@@ -7,22 +7,45 @@
|
|||||||
top: var(--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
|
||||||
|
@@ -11,6 +11,10 @@
|
|||||||
padding-right: 1rem;
|
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 {
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
@@ -75,6 +74,35 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
||||||
|
10
component-library/bookshop.scss
Normal file
10
component-library/bookshop.scss
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
@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/faq/faq";
|
||||||
|
@import "modules/bookshop/components/hero/hero";
|
||||||
|
@import "modules/bookshop/components/releases/releases";
|
||||||
|
@import "modules/bookshop/components/separator/separator";
|
||||||
|
@import "modules/bookshop/components/video-message/video-message";
|
||||||
|
@import "modules/bookshop/theme";
|
39
component-library/components/about/about.bookshop.yml
Normal file
39
component-library/components/about/about.bookshop.yml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# 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:
|
||||||
|
link-type:
|
||||||
|
links:
|
||||||
|
-
|
||||||
|
title:
|
||||||
|
url:
|
||||||
|
icon:
|
||||||
|
force:
|
32
component-library/components/about/about.hugo.html
Normal file
32
component-library/components/about/about.hugo.html
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{{/*
|
||||||
|
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
|
||||||
|
"heading" $args.heading
|
||||||
|
"background" $args.background
|
||||||
|
"illustration" (merge (dict "ratio" "1x1") $args.illustration)
|
||||||
|
"order" $args.order
|
||||||
|
"link-type" $args.linkType
|
||||||
|
"links" $args.links
|
||||||
|
"orientation" "horizontal"
|
||||||
|
"width" (or .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);
|
||||||
|
}
|
45
component-library/components/articles/articles.bookshop.yml
Normal file
45
component-library/components/articles/articles.bookshop.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# 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:
|
||||||
|
cols:
|
||||||
|
padding:
|
||||||
|
max:
|
||||||
|
pagination:
|
||||||
|
paginate:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
scroll:
|
||||||
|
bento:
|
||||||
|
cover:
|
||||||
|
header-style:
|
||||||
|
footer-style:
|
||||||
|
orientation:
|
||||||
|
class:
|
109
component-library/components/articles/articles.hugo.html
Normal file
109
component-library/components/articles/articles.hugo.html
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
{{/*
|
||||||
|
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 }}
|
||||||
|
|
||||||
|
{{ $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 }}
|
||||||
|
<div class="container-xxl p-4 px-xxl-0">
|
||||||
|
{{- partial "assets/section-title.html" (dict "heading" $args.heading "class" "py-5") -}}
|
||||||
|
|
||||||
|
{{ $partial := "assets/card-group.html" }}
|
||||||
|
{{ $params := dict }}
|
||||||
|
{{- $params = merge $params (dict
|
||||||
|
"page" page
|
||||||
|
"list" $pages
|
||||||
|
"max" $args.max
|
||||||
|
"cols" $args.cols
|
||||||
|
"icon-rounded" $args.iconRounded
|
||||||
|
"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")
|
||||||
|
"icon-style" "fa-2x"
|
||||||
|
"align" "start"
|
||||||
|
"orientation" $args.orientation
|
||||||
|
"hook" "assets/live-card.html"
|
||||||
|
"pagination" $args.pagination
|
||||||
|
"paginate" $paginate
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
{{ partial $partial $params }}
|
||||||
|
</div>
|
||||||
|
{{ 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));
|
||||||
|
}
|
32
component-library/components/cards/cards.bookshop.yml
Normal file
32
component-library/components/cards/cards.bookshop.yml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# 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:
|
||||||
|
padding:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
elements:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
mode:
|
||||||
|
content:
|
||||||
|
orientation:
|
||||||
|
class:
|
71
component-library/components/cards/cards.hugo.html
Normal file
71
component-library/components/cards/cards.hugo.html
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{{/*
|
||||||
|
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 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}}
|
||||||
|
|
||||||
|
{{ if not $error }}
|
||||||
|
<div class="container-xxl p-4 px-xxl-0">
|
||||||
|
{{- partial "assets/section-title.html" (dict "heading" $args.heading "class" "py-5") -}}
|
||||||
|
|
||||||
|
{{- partial "assets/card-group.html" (dict
|
||||||
|
"page" page
|
||||||
|
"list" $list
|
||||||
|
"class" (printf "border-0 card-icon-primary d-sm-none %s" $args.class)
|
||||||
|
"cols" $args.cols
|
||||||
|
"gutter" "4"
|
||||||
|
"padding" $args.padding
|
||||||
|
"header-style" "none"
|
||||||
|
"footer-style" "none"
|
||||||
|
"icon-rounded" $args.iconRounded
|
||||||
|
"icon-style" "fa-2x"
|
||||||
|
"align" "start"
|
||||||
|
"orientation" ($args.orientation | default "horizontal-sm")
|
||||||
|
"hook" "assets/live-card.html"
|
||||||
|
) -}}
|
||||||
|
|
||||||
|
{{- partial "assets/card-group.html" (dict
|
||||||
|
"page" page
|
||||||
|
"list" $list
|
||||||
|
"class" (printf "border-0 card-icon-primary d-none d-sm-block %s" $args.class)
|
||||||
|
"cols" $args.cols
|
||||||
|
"gutter" "4"
|
||||||
|
"padding" $args.padding
|
||||||
|
"header-style" "none"
|
||||||
|
"footer-style" "none"
|
||||||
|
"icon-rounded" $args.iconRounded
|
||||||
|
"icon-style" "fa-2x"
|
||||||
|
"align" "start"
|
||||||
|
"orientation" ($args.orientation | default "stacked")
|
||||||
|
"hook" "assets/live-card.html"
|
||||||
|
) -}}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
0
component-library/components/cards/cards.scss
Normal file
0
component-library/components/cards/cards.scss
Normal file
26
component-library/components/faq/faq.bookshop.yml
Normal file
26
component-library/components/faq/faq.bookshop.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# 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:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
items:
|
||||||
|
- title:
|
||||||
|
description:
|
59
component-library/components/faq/faq.hugo.html
Normal file
59
component-library/components/faq/faq.hugo.html
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
{{/*
|
||||||
|
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 }}
|
||||||
|
|
||||||
|
{{ if not $args.err }}
|
||||||
|
<div class="container-xxl p-4 px-xxl-0">
|
||||||
|
{{ $color := "" }}
|
||||||
|
{{ if $args.contrast }}{{ $color = "white" }}{{ end }}
|
||||||
|
{{- partial "assets/section-title.html" (dict
|
||||||
|
"heading" $args.heading
|
||||||
|
"color" $color
|
||||||
|
"class" "py-5"
|
||||||
|
) -}}
|
||||||
|
|
||||||
|
{{ $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 mb-3{{ 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>
|
||||||
|
</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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
component-library/components/hero/hero.bookshop.yml
Normal file
40
component-library/components/hero/hero.bookshop.yml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# 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:
|
35
component-library/components/hero/hero.hugo.html
Normal file
35
component-library/components/hero/hero.hugo.html
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{{/*
|
||||||
|
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
|
||||||
|
"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
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
{{ 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;
|
||||||
|
}
|
24
component-library/components/releases/releases.bookshop.yml
Normal file
24
component-library/components/releases/releases.bookshop.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# 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:
|
||||||
|
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,8 @@
|
|||||||
|
# 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: []
|
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 "structure" "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 }}
|
||||||
|
<div class="container-xxl p-0"{{ with $args.theme }} data-bs-theme="{{ . }}"{{ end }}><hr></div>
|
||||||
|
{{ end }}
|
@@ -0,0 +1,51 @@
|
|||||||
|
# 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:
|
||||||
|
video:
|
||||||
|
provider:
|
||||||
|
account:
|
||||||
|
media-id:
|
||||||
|
autoplay:
|
||||||
|
query-args:
|
||||||
|
cols:
|
||||||
|
messages:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
content:
|
||||||
|
link:
|
||||||
|
label:
|
||||||
|
border:
|
||||||
|
width:
|
||||||
|
|
||||||
|
_structures:
|
||||||
|
messages:
|
||||||
|
values:
|
||||||
|
value:
|
||||||
|
title:
|
||||||
|
icon:
|
||||||
|
content:
|
||||||
|
link:
|
||||||
|
label:
|
@@ -0,0 +1,136 @@
|
|||||||
|
{{/*
|
||||||
|
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 }}
|
||||||
|
|
||||||
|
{{- $breakpoint := partial "utilities/GetBreakpoint.html" -}}
|
||||||
|
|
||||||
|
{{- define "_partials/inline/video.html" -}}
|
||||||
|
{{ $provider := .provider }}
|
||||||
|
{{ $account := .account }}
|
||||||
|
{{ $mediaID := (index . "media-id") }}
|
||||||
|
{{ $autoplay := .autoplay }}
|
||||||
|
{{ $queryArgs := .queryArgs }}
|
||||||
|
{{ $border := .border }}
|
||||||
|
|
||||||
|
{{ 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" "text-center mb-4") -}}
|
||||||
|
{{ 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 }}
|
||||||
|
|
||||||
|
{{- 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
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<div class="container-xxl p-4 px-xxl-0">
|
||||||
|
{{ $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
|
||||||
|
"class" "py-5"
|
||||||
|
) -}}
|
||||||
|
|
||||||
|
{{ 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
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="mt-4">
|
||||||
|
{{- partial "inline/messages.html" (dict "list" $list "cols" $args.cols "type" $args.type "iconRounded" $args.iconRounded) -}}
|
||||||
|
</div>
|
||||||
|
{{ else }}
|
||||||
|
<div class="container grid gap-4">
|
||||||
|
<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
|
||||||
|
) -}}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="col col-{{ $breakpoint.current }}-{{ sub 12 $args.width }} mt-4 mt-{{ $breakpoint.current }}-0">
|
||||||
|
{{- partial "inline/messages.html" (dict "list" $list "cols" 1 "type" $args.type "iconRounded" $args.iconRounded) -}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
@@ -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;
|
||||||
|
}
|
69
component-library/helpers/component.html
Normal file
69
component-library/helpers/component.html
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{{/* 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 "" -}}
|
||||||
|
|
||||||
|
{{- $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 := "" -}}
|
||||||
|
{{- $style := index $component_props "wrapper" -}}
|
||||||
|
{{- $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 }}
|
||||||
|
{{/* warnf "wrapper: '%s'" $wrapper */}}
|
||||||
|
{{- $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 }}
|
||||||
|
<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 -}}
|
||||||
|
{{ partial $resolved_component $component_props }}
|
||||||
|
</section>
|
||||||
|
{{ "<!--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,6 +1,6 @@
|
|||||||
# toml-docs-start main
|
# toml-docs-start main
|
||||||
title = "Hinode"
|
title = "Hinode"
|
||||||
copyright = "Copyright © 2024 Mark Dumay."
|
copyright = "Copyright © 2022 - 2025 Mark Dumay."
|
||||||
enableGitInfo = true
|
enableGitInfo = true
|
||||||
# toml-docs-end main
|
# toml-docs-end main
|
||||||
|
|
||||||
@@ -26,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
|
||||||
@@ -56,7 +84,7 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
disabled = false
|
disabled = false
|
||||||
simple = true
|
simple = true
|
||||||
|
|
||||||
[privacy.twitter]
|
[privacy.x]
|
||||||
disabled = false
|
disabled = false
|
||||||
enableDNT = true
|
enableDNT = true
|
||||||
simple = true
|
simple = true
|
||||||
@@ -72,20 +100,11 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
[services]
|
[services]
|
||||||
[services.instagram]
|
[services.instagram]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
[services.twitter]
|
[services.x]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
[services.googleAnalytics]
|
[services.googleAnalytics]
|
||||||
# ID = "G-xxxxxxxxxx"
|
# ID = "G-xxxxxxxxxx"
|
||||||
|
|
||||||
[outputFormats]
|
|
||||||
[outputFormats.XML]
|
|
||||||
isPlainText = false
|
|
||||||
mediaType = "application/xml"
|
|
||||||
isHtml = false
|
|
||||||
noUgly = true
|
|
||||||
permalinkable = false
|
|
||||||
name = "xml"
|
|
||||||
|
|
||||||
[minify]
|
[minify]
|
||||||
[minify.tdewolff.js]
|
[minify.tdewolff.js]
|
||||||
keepVarNames = true
|
keepVarNames = true
|
||||||
@@ -97,8 +116,7 @@ home = ["HTML", "RSS", "REDIR"]
|
|||||||
[module]
|
[module]
|
||||||
[module.hugoVersion]
|
[module.hugoVersion]
|
||||||
extended = true
|
extended = true
|
||||||
min = "0.134.0"
|
min = "0.141.0"
|
||||||
max = ""
|
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
source = "archetypes"
|
source = "archetypes"
|
||||||
target = "archetypes"
|
target = "archetypes"
|
||||||
@@ -120,24 +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]]
|
||||||
|
path = "github.com/gethinode/mod-csp"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-flexsearch/v2"
|
path = "github.com/gethinode/mod-flexsearch/v2"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-fontawesome"
|
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]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-lottie"
|
path = "github.com/gethinode/mod-lottie"
|
||||||
|
[[module.imports]]
|
||||||
|
path = "github.com/gethinode/mod-mermaid"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-simple-datatables"
|
path = "github.com/gethinode/mod-simple-datatables"
|
||||||
[[module.imports]]
|
[[module.imports]]
|
||||||
path = "github.com/gethinode/mod-utils/v2"
|
path = "github.com/gethinode/mod-utils/v3"
|
||||||
# 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
|
||||||
|
@@ -10,6 +10,10 @@
|
|||||||
footerBelowFold = false
|
footerBelowFold = false
|
||||||
loading = "lazy"
|
loading = "lazy"
|
||||||
breakpoint = "md"
|
breakpoint = "md"
|
||||||
|
titleCase = false
|
||||||
|
[main.internalLinks]
|
||||||
|
validate = true
|
||||||
|
pretty = false
|
||||||
[main.externalLinks]
|
[main.externalLinks]
|
||||||
cue = false
|
cue = false
|
||||||
tab = false
|
tab = false
|
||||||
@@ -38,6 +42,12 @@
|
|||||||
host = "youtube"
|
host = "youtube"
|
||||||
# toml-docs-end videos
|
# toml-docs-end videos
|
||||||
|
|
||||||
|
[dam]
|
||||||
|
videoCodecs = [
|
||||||
|
"webm/vp9",
|
||||||
|
"mp4/h265",
|
||||||
|
"mp4"
|
||||||
|
]
|
||||||
|
|
||||||
# toml-docs-start debugging
|
# toml-docs-start debugging
|
||||||
[debugging]
|
[debugging]
|
||||||
@@ -204,3 +214,60 @@
|
|||||||
|
|
||||||
[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,41 +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://*.google-analytics.com https://*.googletagmanager.com; \
|
|
||||||
style-src 'self' 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://player.cloudinary.com https://player.vimeo.com https://www.youtube-nocookie.com https://www.youtube.com; \
|
form-action 'self'; \
|
||||||
img-src 'self' data: https://*.imgix.net https://*.imagekit.io https://*.cloudinary.com 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=(), \
|
|
||||||
payment=() \
|
|
||||||
"""
|
|
||||||
cache-control = """\
|
|
||||||
max-age=0, \
|
|
||||||
no-cache, \
|
|
||||||
no-store, \
|
|
||||||
must-revalidate \
|
|
||||||
"""
|
|
||||||
Access-Control-Allow-Origin = "*"
|
|
||||||
# toml-docs-end server-config
|
|
||||||
|
@@ -3,14 +3,16 @@ 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',
|
||||||
@@ -24,6 +26,7 @@ const purgecss = require('@fullhuman/postcss-purgecss')({
|
|||||||
'./assets/scss/components/_video.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-cookieyes/v2/assets/scss/cookieyes.scss',
|
||||||
'./_vendor/github.com/gethinode/mod-flexsearch/v2/assets/scss/modules/flexsearch/flexsearch.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',
|
||||||
|
@@ -1,15 +1,24 @@
|
|||||||
---
|
---
|
||||||
title: Welcome to Hinode!
|
title: Welcome to Hinode!
|
||||||
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
description: A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
thumbnail:
|
content_blocks:
|
||||||
url: /img/sunrise.jpg
|
- _bookshop_name: hero
|
||||||
author: Harris Vo
|
heading:
|
||||||
authorURL: https://unsplash.com/@hoanvokim
|
title: Welcome to Hinode!
|
||||||
origin: https://unsplash.com/photos/ZX6BPboJrYk
|
content: |-
|
||||||
originName: Unsplash
|
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||||
actions:
|
align: start
|
||||||
get-started:
|
background:
|
||||||
url: "https://gethinode.com/docs"
|
color: primary
|
||||||
title: "Get started"
|
subtle: true
|
||||||
icon: "fas book-open"
|
illustration:
|
||||||
|
image: /img/sunrise.jpg
|
||||||
|
ratio: 16x9
|
||||||
|
width: 8
|
||||||
|
width: 6
|
||||||
|
links:
|
||||||
|
- title: Get started
|
||||||
|
url: https://gethinode.com/docs
|
||||||
|
icon: fas book-open
|
||||||
|
orientation: horizontal
|
||||||
---
|
---
|
||||||
|
35
data/netlify.toml
Normal file
35
data/netlify.toml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# toml-docs-start netlify
|
||||||
|
[build]
|
||||||
|
publish = "exampleSite/public"
|
||||||
|
command = "npm run build:example"
|
||||||
|
|
||||||
|
[build.environment]
|
||||||
|
DART_SASS_VERSION = "1.83.1"
|
||||||
|
HUGO_VERSION = "0.140.2"
|
||||||
|
HUGO_ENV = "production"
|
||||||
|
HUGO_ENABLEGITINFO = "true"
|
||||||
|
NODE_VERSION = "22.12.0"
|
||||||
|
NPM_VERSION = "10.9.0"
|
||||||
|
# toml-docs-end netlify
|
||||||
|
|
||||||
|
[context.deploy-preview]
|
||||||
|
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
|
||||||
|
|
||||||
|
[context.branch-deploy]
|
||||||
|
command = "npm run build:example -- -b $DEPLOY_PRIME_URL"
|
||||||
|
|
||||||
|
[dev]
|
||||||
|
framework = "#custom"
|
||||||
|
command = "npm run start:example"
|
||||||
|
targetPort = 1313
|
||||||
|
port = 8888
|
||||||
|
publish = "public"
|
||||||
|
autoLaunch = false
|
||||||
|
|
||||||
|
# toml-docs-start plugins
|
||||||
|
[[plugins]]
|
||||||
|
package = "@gethinode/netlify-plugin-dartsass"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
package = "netlify-plugin-hugo-cache-resources"
|
||||||
|
# toml-docs-end plugins
|
41
data/server.toml
Normal file
41
data/server.toml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# toml-docs-start server-config
|
||||||
|
[[headers]]
|
||||||
|
for = "/**"
|
||||||
|
[headers.values]
|
||||||
|
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
|
||||||
|
X-Content-Type-Options = "nosniff"
|
||||||
|
X-XSS-Protection = "1; mode=block"
|
||||||
|
X-Frame-Options = "SAMEORIGIN"
|
||||||
|
Referrer-Policy = "strict-origin"
|
||||||
|
Permissions-Policy = """\
|
||||||
|
geolocation=(), \
|
||||||
|
midi=(), \
|
||||||
|
sync-xhr=(), \
|
||||||
|
microphone=(), \
|
||||||
|
camera=(), \
|
||||||
|
magnetometer=(), \
|
||||||
|
gyroscope=(), \
|
||||||
|
fullscreen=(), \
|
||||||
|
payment=() \
|
||||||
|
"""
|
||||||
|
cache-control = """\
|
||||||
|
max-age=0, \
|
||||||
|
no-cache, \
|
||||||
|
no-store, \
|
||||||
|
must-revalidate \
|
||||||
|
"""
|
||||||
|
Access-Control-Allow-Origin = "*"
|
||||||
|
Content-Security-Policy = """\
|
||||||
|
default-src 'none'; \
|
||||||
|
script-src 'self'; \
|
||||||
|
font-src 'self'; \
|
||||||
|
connect-src 'self'; \
|
||||||
|
img-src 'self'; \
|
||||||
|
style-src 'self'; \
|
||||||
|
base-uri 'self'; \
|
||||||
|
object-src 'none'; \
|
||||||
|
form-action 'self'; \
|
||||||
|
manifest-src 'self'; \
|
||||||
|
media-src 'self' \
|
||||||
|
"""
|
||||||
|
# toml-docs-end server-config
|
1631
data/structures/_arguments.yml
Normal file
1631
data/structures/_arguments.yml
Normal file
File diff suppressed because it is too large
Load Diff
65
data/structures/_types.yml
Normal file
65
data/structures/_types.yml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
types:
|
||||||
|
background:
|
||||||
|
backdrop:
|
||||||
|
color:
|
||||||
|
subtle:
|
||||||
|
heading:
|
||||||
|
preheading:
|
||||||
|
title:
|
||||||
|
content:
|
||||||
|
align:
|
||||||
|
arrangement:
|
||||||
|
width:
|
||||||
|
size:
|
||||||
|
illustration:
|
||||||
|
image:
|
||||||
|
icon:
|
||||||
|
ratio:
|
||||||
|
class:
|
||||||
|
anchor:
|
||||||
|
mode:
|
||||||
|
width:
|
||||||
|
image-overlay:
|
||||||
|
hook:
|
||||||
|
input:
|
||||||
|
section:
|
||||||
|
nested:
|
||||||
|
keywords:
|
||||||
|
categories:
|
||||||
|
tags:
|
||||||
|
reverse:
|
||||||
|
sort:
|
||||||
|
items:
|
||||||
|
- title:
|
||||||
|
description:
|
||||||
|
elements:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
mode:
|
||||||
|
content:
|
||||||
|
links:
|
||||||
|
- title:
|
||||||
|
url:
|
||||||
|
icon:
|
||||||
|
force:
|
||||||
|
messages:
|
||||||
|
- title:
|
||||||
|
icon:
|
||||||
|
content:
|
||||||
|
link:
|
||||||
|
label:
|
||||||
|
more:
|
||||||
|
title:
|
||||||
|
link:
|
||||||
|
styles:
|
||||||
|
- ratio:
|
||||||
|
orientation:
|
||||||
|
portrait:
|
||||||
|
width:
|
||||||
|
video:
|
||||||
|
provider:
|
||||||
|
account:
|
||||||
|
id:
|
||||||
|
autoplay:
|
||||||
|
query-args:
|
@@ -19,7 +19,7 @@ arguments:
|
|||||||
the first (and only) matched argument. Non-alphanumeric keys must be quoted.
|
the first (and only) matched argument. Non-alphanumeric keys must be quoted.
|
||||||
data:
|
data:
|
||||||
type: string
|
type: string
|
||||||
default: abbr.yaml
|
default: abbr
|
||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
Filename of the abbrevation input. You can omit the file extension. The
|
Filename of the abbrevation input. You can omit the file extension. The
|
||||||
|
@@ -1,18 +1,17 @@
|
|||||||
comment: >-
|
comment: >-
|
||||||
Defines an individual accordion item.
|
Defines an individual accordion item.
|
||||||
arguments:
|
arguments:
|
||||||
|
title:
|
||||||
|
release: v1.0.0
|
||||||
|
show:
|
||||||
|
class:
|
||||||
|
# deprecated arguments
|
||||||
header:
|
header:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: true
|
||||||
comment: Header of the accordion item.
|
comment: Header of the accordion item.
|
||||||
show:
|
deprecated: v1.0.0
|
||||||
type: bool
|
alternative: title
|
||||||
optional: true
|
|
||||||
comment: Flag to indicate an item should be shown as collapsed.
|
|
||||||
class:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the accordion item.
|
|
||||||
body:
|
body:
|
||||||
optional: false
|
optional: false
|
||||||
comment: Content of the accordion item.
|
comment: Content of the accordion item.
|
||||||
|
@@ -3,16 +3,5 @@ comment: >-
|
|||||||
items. Add accordion-item inner elements for each accordion item.
|
items. Add accordion-item inner elements for each accordion item.
|
||||||
arguments:
|
arguments:
|
||||||
id:
|
id:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
ID of the accordion, defaults to `accordion-n` with a sequential number n.
|
|
||||||
always-open:
|
always-open:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag to make accordion items stay open when another item is opened.
|
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the accordion, e.g. `w-50`.
|
|
||||||
|
@@ -2,36 +2,14 @@ comment: >-
|
|||||||
Use the alert shortcode to display a contextual feedback message. The inner
|
Use the alert shortcode to display a contextual feedback message. The inner
|
||||||
content is used as alert text.
|
content is used as alert text.
|
||||||
arguments:
|
arguments:
|
||||||
|
alert-type:
|
||||||
|
release: v1.0.0
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the alert element.
|
|
||||||
color:
|
color:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: danger
|
default: danger
|
||||||
comment: Theme color of the alert.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- primary
|
|
||||||
- secondary
|
|
||||||
- success
|
|
||||||
- danger
|
|
||||||
- warning
|
|
||||||
- info
|
|
||||||
- light
|
|
||||||
- dark
|
|
||||||
- white
|
|
||||||
- black
|
|
||||||
dismissible:
|
dismissible:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: Flag to indicate the alert is dismissible.
|
|
||||||
icon:
|
icon:
|
||||||
type: string
|
# deprecated arguments
|
||||||
optional: true
|
|
||||||
comment: Font Awesome icon to include.
|
|
||||||
type:
|
type:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -40,6 +18,8 @@ arguments:
|
|||||||
values:
|
values:
|
||||||
- danger
|
- danger
|
||||||
- info
|
- info
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: alert-type
|
||||||
body:
|
body:
|
||||||
optional: false
|
optional: false
|
||||||
comment: Alert text.
|
comment: Alert text.
|
||||||
|
@@ -2,6 +2,9 @@ comment: >-
|
|||||||
Generates a markdown table of structured arguments. The argument definitions are
|
Generates a markdown table of structured arguments. The argument definitions are
|
||||||
expected to be defined in a data file identified by a provided structure name.
|
expected to be defined in a data file identified by a provided structure name.
|
||||||
arguments:
|
arguments:
|
||||||
|
page:
|
||||||
|
optional: false
|
||||||
|
group: partial
|
||||||
structure:
|
structure:
|
||||||
type: string
|
type: string
|
||||||
position: 0
|
position: 0
|
||||||
@@ -9,7 +12,8 @@ arguments:
|
|||||||
comment: >-
|
comment: >-
|
||||||
Name of the data file that contains argument definitions. Supported data
|
Name of the data file that contains argument definitions. Supported data
|
||||||
formats include JSON, TOML, YAML, and XML. You can omit the file
|
formats include JSON, TOML, YAML, and XML. You can omit the file
|
||||||
extension. The file should reside in the `data/structures` folder.
|
extension. The file should reside in the `data/structures` folder. For
|
||||||
|
bookshop components, add the `bookshop-` prefix to the structure name.
|
||||||
group:
|
group:
|
||||||
type: string
|
type: string
|
||||||
position: 1
|
position: 1
|
||||||
@@ -25,3 +29,28 @@ arguments:
|
|||||||
comment: >-
|
comment: >-
|
||||||
Flag to filter only arguments that have a parent attribute (either
|
Flag to filter only arguments that have a parent attribute (either
|
||||||
`cascade` or `merge`).
|
`cascade` or `merge`).
|
||||||
|
render-type:
|
||||||
|
type: select
|
||||||
|
position: 3
|
||||||
|
default: both
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Option whether to render arguments, user-defined types, or both. Please
|
||||||
|
note that the arguments will render a link to a user-defined type in any
|
||||||
|
case.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- arguments
|
||||||
|
- types
|
||||||
|
- both
|
||||||
|
release: v1.0.0
|
||||||
|
header-level:
|
||||||
|
type: int
|
||||||
|
default: 3
|
||||||
|
optional: true
|
||||||
|
options:
|
||||||
|
min: 1
|
||||||
|
max: 6
|
||||||
|
comment: >-
|
||||||
|
The header level to use for the user-defined type headers.
|
||||||
|
release: v1.0.0
|
||||||
|
5
data/structures/background.yml
Normal file
5
data/structures/background.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
comment: >-
|
||||||
|
Applies styling to the background of a element.
|
||||||
|
arguments:
|
||||||
|
background:
|
||||||
|
class:
|
@@ -1,27 +1,6 @@
|
|||||||
comment: Use the badge shortcode to enrich headings.
|
comment: Use the badge shortcode to enrich headings.
|
||||||
arguments:
|
arguments:
|
||||||
title:
|
title:
|
||||||
type: string
|
|
||||||
optional: false
|
|
||||||
comment: Title of the badge.
|
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the badge element.
|
|
||||||
color:
|
color:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: secondary
|
default: secondary
|
||||||
comment: Theme color of the element.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- primary
|
|
||||||
- secondary
|
|
||||||
- success
|
|
||||||
- danger
|
|
||||||
- warning
|
|
||||||
- info
|
|
||||||
- light
|
|
||||||
- dark
|
|
||||||
- white
|
|
||||||
- black
|
|
||||||
|
@@ -1,16 +1,4 @@
|
|||||||
comment: Displays a breadcrumb for a specific page.
|
comment: Displays a breadcrumb for a specific page.
|
||||||
arguments:
|
arguments:
|
||||||
page:
|
page:
|
||||||
type:
|
|
||||||
- '*hugolib.pageState'
|
|
||||||
- '*hugolib.pageForShortcode'
|
|
||||||
optional: false
|
|
||||||
comment: Page to display the breadcrumb for.
|
|
||||||
group: partial
|
|
||||||
path:
|
path:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Path of the page to display the breadcrumb for.
|
|
||||||
group: shortcode
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2,13 +2,7 @@ comment: >-
|
|||||||
Displays a group of buttons. Add inner <button> elements for each button.
|
Displays a group of buttons. Add inner <button> elements for each button.
|
||||||
arguments:
|
arguments:
|
||||||
label:
|
label:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Assistive label for the button group.
|
|
||||||
aria-label:
|
aria-label:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Alias for label.
|
|
||||||
body:
|
body:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: false
|
||||||
|
@@ -2,50 +2,51 @@ comment: >-
|
|||||||
Display a button with a hyperlink.
|
Display a button with a hyperlink.
|
||||||
arguments:
|
arguments:
|
||||||
title:
|
title:
|
||||||
type:
|
|
||||||
- string
|
|
||||||
- template.HTML
|
|
||||||
optional: true
|
|
||||||
comment: Title of the button, required unless icon is set.
|
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the button element, e.g. `p-5`.
|
|
||||||
color:
|
color:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: primary
|
default: primary
|
||||||
comment: Theme color of the element.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- primary
|
|
||||||
- secondary
|
|
||||||
- success
|
|
||||||
- danger
|
|
||||||
- warning
|
|
||||||
- info
|
|
||||||
- light
|
|
||||||
- dark
|
|
||||||
- white
|
|
||||||
- black
|
|
||||||
href:
|
href:
|
||||||
type:
|
|
||||||
- string
|
|
||||||
- template.URL
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Address for the button or hyperlink. Automatically assigned when using
|
|
||||||
collapse.
|
|
||||||
relref:
|
relref:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Name of the page to link to. Replaces `href` with a relative link if set.
|
|
||||||
group: shortcode
|
group: shortcode
|
||||||
id:
|
id:
|
||||||
type: string
|
button-state:
|
||||||
|
release: v1.0.0
|
||||||
|
button-size:
|
||||||
|
release: v1.0.0
|
||||||
|
outline:
|
||||||
|
badge:
|
||||||
|
label:
|
||||||
|
aria-label:
|
||||||
|
group: shortcode
|
||||||
|
tooltip:
|
||||||
|
collapse-id:
|
||||||
|
link-type:
|
||||||
|
release: v1.0.0
|
||||||
|
placement:
|
||||||
|
icon:
|
||||||
|
order:
|
||||||
|
justify:
|
||||||
|
toast-id:
|
||||||
|
release: v1.0.0
|
||||||
|
clipboard:
|
||||||
|
cue:
|
||||||
|
tab:
|
||||||
|
attributes:
|
||||||
|
spacing:
|
||||||
|
wrapper:
|
||||||
|
group: shortcode
|
||||||
|
# deprecated arguments
|
||||||
|
type:
|
||||||
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
comment: Identifier of the button, to be used in the DOM.
|
default: button
|
||||||
|
comment: Type of the element.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- link
|
||||||
|
- button
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: link-type
|
||||||
state:
|
state:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -57,6 +58,8 @@ arguments:
|
|||||||
- disabled
|
- disabled
|
||||||
- active
|
- active
|
||||||
- inactive
|
- inactive
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: button-state
|
||||||
size:
|
size:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -67,124 +70,19 @@ arguments:
|
|||||||
- sm
|
- sm
|
||||||
- md
|
- md
|
||||||
- lg
|
- lg
|
||||||
outline:
|
deprecated: v1.0.0
|
||||||
type: bool
|
alternative: button-size
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: Flag indicating the button should be outlined.
|
|
||||||
badge:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Positioned badge to display on top of the button.
|
|
||||||
label:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Assistive label for the button or badge. The label is applied
|
|
||||||
to the badge instead of the button when a badge has been defined.
|
|
||||||
The default value of the button's assistive label is its title.
|
|
||||||
aria-label:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Alias for label.
|
|
||||||
group: shortcode
|
|
||||||
tooltip:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Text to display in a tooltip. Cannot be used together with
|
|
||||||
collapse. Ignored for active/inactive buttons.
|
|
||||||
collapse:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Panel to collapse. Cannot be used together with tooltip. Ignored for
|
|
||||||
active/inactive buttons.
|
|
||||||
type:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: button
|
|
||||||
comment: Type of the element.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- link
|
|
||||||
- button
|
|
||||||
placement:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: top
|
|
||||||
comment: Position of the tooltip.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- top
|
|
||||||
- bottom
|
|
||||||
- left
|
|
||||||
- right
|
|
||||||
icon:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Font Awesome icon class attribute, required unless title is set. An
|
|
||||||
example value is `fas sort`.
|
|
||||||
order:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: last
|
|
||||||
comment: Order of the icon
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- first
|
|
||||||
- last
|
|
||||||
justify:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: center
|
|
||||||
comment: Justification of the button title and icon.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- start
|
|
||||||
- end
|
|
||||||
- center
|
|
||||||
- between
|
|
||||||
- around
|
|
||||||
- evenly
|
|
||||||
toast:
|
toast:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: Identifier (ID) of the toast to display when the button is clicked.
|
comment: Identifier (ID) of the toast to display when the button is clicked.
|
||||||
clipboard:
|
deprecated: v1.0.0
|
||||||
type:
|
alternative: toast-id
|
||||||
- string
|
collapse:
|
||||||
- template.URL
|
|
||||||
optional: true
|
|
||||||
comment: Text to be copied to the clipboard when the button is clicked.
|
|
||||||
cue:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate if an external link should show a visual cue, defaults
|
|
||||||
to the setting `main.externalLinks.cue` in the site's parameters.
|
|
||||||
tab:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate if an external link should open in a new tab, defaults
|
|
||||||
to setting `main.externalLinks.tab` in the site's parameters.
|
|
||||||
attributes:
|
|
||||||
type: map[string]interface {}
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Dictionary of key-value pairs added as custom attributes to the button
|
|
||||||
element ('<a>').
|
|
||||||
group: partial
|
|
||||||
spacing:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: true
|
|
||||||
comment: >-
|
|
||||||
Flag to add spacing to the inline button.
|
|
||||||
wrapper:
|
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: Element class of the button wrapper.
|
comment: >-
|
||||||
group: shortcode
|
ID of the panel to collapse. Cannot be used together with tooltip. Ignored
|
||||||
|
for active/inactive buttons.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: collapse-id
|
||||||
|
@@ -6,161 +6,155 @@ comment: >-
|
|||||||
behavior). Be aware a page can only contain one paginator at a time.
|
behavior). Be aware a page can only contain one paginator at a time.
|
||||||
arguments:
|
arguments:
|
||||||
page:
|
page:
|
||||||
type:
|
|
||||||
- '*hugolib.pageState'
|
|
||||||
- '*hugolib.pageForShortcode'
|
|
||||||
optional: true
|
optional: true
|
||||||
comment: Context of the current page.
|
|
||||||
group: partial
|
|
||||||
title:
|
title:
|
||||||
type: string
|
|
||||||
optional: true
|
optional: true
|
||||||
comment: Title of the card group.
|
class:
|
||||||
|
color:
|
||||||
|
padding:
|
||||||
gutter:
|
gutter:
|
||||||
type: int
|
|
||||||
optional: true
|
|
||||||
default: 4
|
|
||||||
comment: Gutter between columns in a group.
|
|
||||||
options:
|
|
||||||
min: 0
|
|
||||||
max: 5
|
|
||||||
release: v0.19.0
|
release: v0.19.0
|
||||||
|
header-style:
|
||||||
|
release: 1.0.0
|
||||||
|
body-style:
|
||||||
|
release: 1.0.0
|
||||||
|
footer-style:
|
||||||
|
release: 1.0.0
|
||||||
list:
|
list:
|
||||||
type:
|
|
||||||
- 'page.Pages'
|
|
||||||
- 'resource.Resources'
|
|
||||||
- '[]map[string]interface {}'
|
|
||||||
optional: true
|
|
||||||
comment: Array of pages or structured content to be rendered as cards.
|
|
||||||
group: partial
|
|
||||||
cards:
|
cards:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: String of rendered cards.
|
|
||||||
group: partial
|
|
||||||
max:
|
max:
|
||||||
type: int
|
|
||||||
optional: true
|
|
||||||
comment: Maximum number of cards to display.
|
|
||||||
group: partial
|
|
||||||
options:
|
|
||||||
min: 1
|
|
||||||
cols:
|
cols:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: "3"
|
|
||||||
comment: Number of grid columns.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- "1"
|
|
||||||
- "2"
|
|
||||||
- "3"
|
|
||||||
- "4"
|
|
||||||
- "5"
|
|
||||||
- "auto"
|
|
||||||
release: v0.19.0
|
release: v0.19.0
|
||||||
paginate:
|
paginate:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag indicating if pagination should be added to the card group, if the
|
|
||||||
list exceeds the maximum number of cards to display.
|
|
||||||
group: partial
|
|
||||||
pagination:
|
pagination:
|
||||||
type: int
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Number of elements per page in pagination, overrides site settings.
|
|
||||||
group: partial
|
|
||||||
options:
|
|
||||||
min: 1
|
|
||||||
release: v0.23.12
|
release: v0.23.12
|
||||||
href:
|
href:
|
||||||
|
group: partial
|
||||||
|
href-title:
|
||||||
|
release: v1.0.0
|
||||||
|
href-force:
|
||||||
|
release: v1.0.0
|
||||||
|
group: partial
|
||||||
|
separator:
|
||||||
|
loading:
|
||||||
|
ratio:
|
||||||
|
portrait:
|
||||||
|
icon-rounded:
|
||||||
|
release: v1.0.0
|
||||||
|
align:
|
||||||
|
wrapper:
|
||||||
|
default: p-0
|
||||||
|
responsive:
|
||||||
|
link-type:
|
||||||
|
release: v1.0.0
|
||||||
|
scroll:
|
||||||
|
icon-style:
|
||||||
|
release: v1.0.0
|
||||||
|
orientation:
|
||||||
|
subtle:
|
||||||
|
button:
|
||||||
|
spacer:
|
||||||
|
release: v0.24.16
|
||||||
|
hook:
|
||||||
|
default: assets/card.html
|
||||||
|
group: partial
|
||||||
|
bento:
|
||||||
|
release: v0.27.0
|
||||||
|
valign:
|
||||||
|
release: v0.27.0
|
||||||
|
styles:
|
||||||
|
release: v0.27.0
|
||||||
|
button-label:
|
||||||
|
release: v1.0.0
|
||||||
|
|
||||||
|
# deprecated arguments
|
||||||
|
header:
|
||||||
|
type: select
|
||||||
|
optional: true
|
||||||
|
default: full
|
||||||
|
parent: cascade
|
||||||
|
comment: >-
|
||||||
|
Header components of the card, displayed in small caps.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- full
|
||||||
|
- publication
|
||||||
|
- tags
|
||||||
|
- none
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: header-style
|
||||||
|
body:
|
||||||
|
type: select
|
||||||
|
optional: true
|
||||||
|
default: full
|
||||||
|
parent: cascade
|
||||||
|
release: v0.24.16
|
||||||
|
comment: >-
|
||||||
|
Body components of the element.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- full
|
||||||
|
- title
|
||||||
|
- none
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: body-style
|
||||||
|
footer:
|
||||||
|
type: select
|
||||||
|
optional: true
|
||||||
|
default: none
|
||||||
|
parent: cascade
|
||||||
|
comment: >-
|
||||||
|
Footer components of the element, displayed in small caps.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- full
|
||||||
|
- publication
|
||||||
|
- tags
|
||||||
|
- none
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: footer-style
|
||||||
|
iconRounded:
|
||||||
|
type: bool
|
||||||
|
parent: cascade
|
||||||
|
optional: true
|
||||||
|
release: v0.24.8
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: icon-rounded
|
||||||
|
comment: Stack the icon in a round container.
|
||||||
|
buttonType:
|
||||||
|
type: select
|
||||||
|
parent: cascade
|
||||||
|
optional: true
|
||||||
|
default: button
|
||||||
|
comment: Type of the button element.
|
||||||
|
release: v0.23.18
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: link-type
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- link
|
||||||
|
- button
|
||||||
|
style:
|
||||||
|
type: string
|
||||||
|
parent: cascade
|
||||||
|
optional: true
|
||||||
|
release: v0.23.0
|
||||||
|
comment: Icon style.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: icon-style
|
||||||
|
buttonLabel:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
|
release: v0.23.2
|
||||||
comment: >-
|
comment: >-
|
||||||
Address for the button or hyperlink. If set, a button is added if the
|
Label of the link button, defaults to the card title.
|
||||||
list exceeds the maximum number of cards to display.
|
deprecated: v1.0.0
|
||||||
group: partial
|
alternative: button-label
|
||||||
hrefTitle:
|
hrefTitle:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
Title of the button or hyperlink as companion to href.
|
Title of the button or hyperlink as companion to href.
|
||||||
group: partial
|
group: partial
|
||||||
separator:
|
deprecated: v1.0.0
|
||||||
type: bool
|
alternative: href-title
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate a horizontal line should be added between items on small
|
|
||||||
screens.
|
|
||||||
wrapper:
|
|
||||||
type: string
|
|
||||||
default: p-0
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Class attributes of the wrapper element, e.g. `p-4 px-xxl-0`.
|
|
||||||
responsive:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: true
|
|
||||||
comment: >-
|
|
||||||
Flag indicating if the number of columns should be responsive, defaults to
|
|
||||||
`true`.
|
|
||||||
buttonType:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: button
|
|
||||||
release: v0.23.18
|
|
||||||
comment: Type of the button elements.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- link
|
|
||||||
- button
|
|
||||||
scroll:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Enables horizontal scrolling of the cards. By default, the card group
|
|
||||||
wraps any cards beyond the amount of defined columns to a new line. When
|
|
||||||
`scroll` is set to true, a horizontal scroll bar is added instead.
|
|
||||||
spacer:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Inserts a spacer before the card.
|
|
||||||
release: v0.24.16
|
|
||||||
group: partial
|
|
||||||
hook:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
default: assets/card.html
|
|
||||||
comment: Render hook for the card partial.
|
|
||||||
group: partial
|
|
||||||
bento:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: >-
|
|
||||||
Trigger to use a bento-style layout instead of default grid layout.
|
|
||||||
release: v0.27.0
|
|
||||||
valign:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Defines the vertical card alignment, only applicable in bento layout.
|
|
||||||
release: v0.27.0
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- start
|
|
||||||
- center
|
|
||||||
- end
|
|
||||||
styles:
|
|
||||||
type:
|
|
||||||
- '[]map[string]interface {}'
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Styles to apply to the individual cards. Supported elements are `ratio`,
|
|
||||||
`orientation`, `portrait`, and `width`. The styles are rotated when the
|
|
||||||
amount of cards exceeds the available amount of styles.
|
|
||||||
release: v0.27.0
|
|
||||||
|
@@ -4,79 +4,74 @@ comment: >-
|
|||||||
arguments override any page attributes.
|
arguments override any page attributes.
|
||||||
arguments:
|
arguments:
|
||||||
title:
|
title:
|
||||||
type: string
|
|
||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
|
||||||
Title of the card, replaces the title of the referenced page (if any).
|
|
||||||
path:
|
path:
|
||||||
type: path
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Path of the page that the card reference to. If omitted, specify the
|
|
||||||
title, icon, thumbnail, and description (inner content) as needed.
|
|
||||||
href:
|
href:
|
||||||
type: url
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Address for the button or hyperlink.
|
|
||||||
group: partial
|
group: partial
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
parent: merge
|
parent: merge
|
||||||
comment: >-
|
|
||||||
Class attribute of the card element, e.g. “w-50”.
|
|
||||||
color:
|
color:
|
||||||
type: select
|
|
||||||
optional: true
|
optional: true
|
||||||
parent: cascade
|
parent: cascade
|
||||||
comment: >-
|
|
||||||
Theme color of the card. By default, no color is specified.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- primary
|
|
||||||
- secondary
|
|
||||||
- success
|
|
||||||
- danger
|
|
||||||
- warning
|
|
||||||
- info
|
|
||||||
- light
|
|
||||||
- dark
|
|
||||||
- white
|
|
||||||
- black
|
|
||||||
- body
|
|
||||||
- body-tertiary
|
|
||||||
padding:
|
padding:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: auto
|
|
||||||
parent: cascade
|
parent: cascade
|
||||||
comment: >-
|
|
||||||
Padding of the content.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- "0"
|
|
||||||
- "1"
|
|
||||||
- "2"
|
|
||||||
- "3"
|
|
||||||
- "4"
|
|
||||||
- "5"
|
|
||||||
- "auto"
|
|
||||||
gutter:
|
gutter:
|
||||||
type: select
|
default: 0
|
||||||
optional: true
|
|
||||||
default: "0"
|
|
||||||
parent: cascade
|
parent: cascade
|
||||||
comment: >-
|
header-style:
|
||||||
Gutter between columns in a group.
|
parent: cascade
|
||||||
options:
|
release: 1.0.0
|
||||||
values:
|
body-style:
|
||||||
- "0"
|
parent: cascade
|
||||||
- "1"
|
release: 1.0.0
|
||||||
- "2"
|
footer-style:
|
||||||
- "3"
|
parent: cascade
|
||||||
- "4"
|
release: 1.0.0
|
||||||
- "5"
|
description:
|
||||||
|
group: partial
|
||||||
|
loading:
|
||||||
|
parent: cascade
|
||||||
|
group: partial
|
||||||
|
thumbnail:
|
||||||
|
ratio:
|
||||||
|
parent: cascade
|
||||||
|
group: partial
|
||||||
|
portrait:
|
||||||
|
parent: cascade
|
||||||
|
release: v0.24.16
|
||||||
|
alt:
|
||||||
|
release: v0.19.0
|
||||||
|
icon:
|
||||||
|
icon-rounded:
|
||||||
|
release: v1.0.0
|
||||||
|
align:
|
||||||
|
parent: cascade
|
||||||
|
release: v0.23.0
|
||||||
|
scroll:
|
||||||
|
parent: cascade
|
||||||
|
group: partial
|
||||||
|
wrapper:
|
||||||
|
icon-style:
|
||||||
|
release: v1.0.0
|
||||||
|
orientation:
|
||||||
|
parent: cascade
|
||||||
|
subtle:
|
||||||
|
parent: cascade
|
||||||
|
release: v0.23.0
|
||||||
|
button:
|
||||||
|
parent: cascade
|
||||||
|
release: v0.23.0
|
||||||
|
button-label:
|
||||||
|
release: v1.0.0
|
||||||
|
link-type:
|
||||||
|
hook:
|
||||||
|
default: assets/image.html
|
||||||
|
group: partial
|
||||||
|
sizes:
|
||||||
|
group: partial
|
||||||
|
anchor:
|
||||||
|
release: v0.24.23
|
||||||
|
# deprecated arguments
|
||||||
header:
|
header:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -90,6 +85,8 @@ arguments:
|
|||||||
- publication
|
- publication
|
||||||
- tags
|
- tags
|
||||||
- none
|
- none
|
||||||
|
deprecated: 1.0.0
|
||||||
|
alternative: header-style
|
||||||
body:
|
body:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -97,158 +94,37 @@ arguments:
|
|||||||
parent: cascade
|
parent: cascade
|
||||||
release: v0.24.16
|
release: v0.24.16
|
||||||
comment: >-
|
comment: >-
|
||||||
Body of the card.
|
Body components of the element.
|
||||||
options:
|
options:
|
||||||
values:
|
values:
|
||||||
- full
|
- full
|
||||||
- title
|
- title
|
||||||
- none
|
- none
|
||||||
|
deprecated: 1.0.0
|
||||||
|
alternative: body-style
|
||||||
footer:
|
footer:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
default: none
|
default: none
|
||||||
parent: cascade
|
parent: cascade
|
||||||
comment: >-
|
comment: >-
|
||||||
Footer components of the card, displayed in small caps.
|
Footer components of the element, displayed in small caps.
|
||||||
options:
|
options:
|
||||||
values:
|
values:
|
||||||
- full
|
- full
|
||||||
- publication
|
- publication
|
||||||
- tags
|
- tags
|
||||||
- none
|
- none
|
||||||
description:
|
deprecated: v1.0.0
|
||||||
type:
|
alternative: footer-style
|
||||||
- string
|
|
||||||
- template.HTML
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Description of the card.
|
|
||||||
group: partial
|
|
||||||
loading:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
parent: cascade
|
|
||||||
default: eager
|
|
||||||
comment: >-
|
|
||||||
Loading behavior of the image. The loading of lazily loaded images is
|
|
||||||
deferred until the image is within scrolling range of the viewport. This
|
|
||||||
should reduce the initial loading time of the website. It is recommended
|
|
||||||
to lazily load only those images that are below the page fold.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- lazy
|
|
||||||
- eager
|
|
||||||
group: partial
|
|
||||||
thumbnail:
|
|
||||||
type: path
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Thumbnail image url, displayed on top or the left of the card.
|
|
||||||
ratio:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
parent: cascade
|
|
||||||
comment: >-
|
|
||||||
Ratio of the thumbnail image, defaults to `16x9` (stacked orientation)
|
|
||||||
or `1x1` (horizontal orientation).
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- 1x1
|
|
||||||
- 3x2
|
|
||||||
- 4x3
|
|
||||||
- 16x9
|
|
||||||
- 21x9
|
|
||||||
group: partial
|
|
||||||
portrait:
|
|
||||||
type: bool
|
|
||||||
parent: cascade
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
release: v0.24.16
|
|
||||||
comment: >-
|
|
||||||
Flag to adjust the ratio from landscape to portrait. The image itself is
|
|
||||||
not rotated, only the crop area is adjusted. Not applicable to vector
|
|
||||||
graphics.
|
|
||||||
alt:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
release: v0.19.0
|
|
||||||
comment: >-
|
|
||||||
Alternate text for the thumbnail, uses `title` by default.
|
|
||||||
icon:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Font Awesome icon, displayed on top or the left of the card.
|
|
||||||
iconRounded:
|
iconRounded:
|
||||||
type: bool
|
type: bool
|
||||||
parent: cascade
|
parent: cascade
|
||||||
optional: true
|
optional: true
|
||||||
release: v0.24.8
|
release: v0.24.8
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: icon-rounded
|
||||||
comment: Stack the icon in a round container.
|
comment: Stack the icon in a round container.
|
||||||
align:
|
|
||||||
type: select
|
|
||||||
parent: cascade
|
|
||||||
optional: true
|
|
||||||
default: start
|
|
||||||
release: v0.23.0
|
|
||||||
comment: Icon alignment.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- start
|
|
||||||
- end
|
|
||||||
- center
|
|
||||||
scroll:
|
|
||||||
type: bool
|
|
||||||
parent: cascade
|
|
||||||
optional: true
|
|
||||||
group: partial
|
|
||||||
comment: >-
|
|
||||||
Enables horizontal scrolling of the cards. By default, the card group
|
|
||||||
wraps any cards beyond the amount of defined columns to a new line. When
|
|
||||||
`scroll` is set to true, a horizontal scroll bar is added instead.
|
|
||||||
wrapper:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Element class of the card wrapper.
|
|
||||||
style:
|
|
||||||
type: string
|
|
||||||
parent: cascade
|
|
||||||
optional: true
|
|
||||||
release: v0.23.0
|
|
||||||
comment: Icon style.
|
|
||||||
orientation:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: stacked
|
|
||||||
parent: cascade
|
|
||||||
comment: Placement of the thumbnail or icon.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- stacked
|
|
||||||
- horizontal
|
|
||||||
- horizontal-sm
|
|
||||||
- overlay
|
|
||||||
- none
|
|
||||||
subtle:
|
|
||||||
type: bool
|
|
||||||
parent: cascade
|
|
||||||
optional: true
|
|
||||||
release: v0.23.0
|
|
||||||
comment: Apply subtle background colors.
|
|
||||||
button:
|
|
||||||
type: bool
|
|
||||||
parent: cascade
|
|
||||||
optional: true
|
|
||||||
release: v0.23.0
|
|
||||||
comment: >-
|
|
||||||
Flag indicating the cards should include a button that links to the provided address.
|
|
||||||
buttonLabel:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
release: v0.23.2
|
|
||||||
comment: >-
|
|
||||||
Label of the link button, defaults to the card title.
|
|
||||||
buttonType:
|
buttonType:
|
||||||
type: select
|
type: select
|
||||||
parent: cascade
|
parent: cascade
|
||||||
@@ -256,42 +132,28 @@ arguments:
|
|||||||
default: button
|
default: button
|
||||||
comment: Type of the button element.
|
comment: Type of the button element.
|
||||||
release: v0.23.18
|
release: v0.23.18
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: link-type
|
||||||
options:
|
options:
|
||||||
values:
|
values:
|
||||||
- link
|
- link
|
||||||
- button
|
- button
|
||||||
hook:
|
style:
|
||||||
|
type: string
|
||||||
|
parent: cascade
|
||||||
|
optional: true
|
||||||
|
release: v0.23.0
|
||||||
|
comment: Icon style.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: icon-style
|
||||||
|
buttonLabel:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: Render hook for the image partial.
|
release: v0.23.2
|
||||||
group: partial
|
|
||||||
sizes:
|
|
||||||
type: string
|
|
||||||
default: 100vw
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
comment: >-
|
||||||
One or more strings separated by commas, indicating the source sizes of an
|
Label of the link button, defaults to the card title.
|
||||||
image set.
|
deprecated: v1.0.0
|
||||||
group: partial
|
alternative: button-label
|
||||||
anchor:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment:
|
|
||||||
Anchor of the thumbnail's crop box, defaults to anchor value set in
|
|
||||||
`imaging` section of the site configuration (usually `Smart`).
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- TopLeft
|
|
||||||
- Top
|
|
||||||
- TopRight
|
|
||||||
- Left
|
|
||||||
- Center
|
|
||||||
- Right
|
|
||||||
- BottomLeft
|
|
||||||
- Bottom
|
|
||||||
- BottomRight
|
|
||||||
- Smart
|
|
||||||
release: v0.24.23
|
|
||||||
body:
|
body:
|
||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
|
@@ -1,59 +1,11 @@
|
|||||||
comment: Renders a carousel item with a responsive image.
|
comment: Renders a carousel item with a responsive image.
|
||||||
arguments:
|
arguments:
|
||||||
page:
|
page:
|
||||||
type:
|
|
||||||
- '*hugolib.pageState'
|
|
||||||
- '*hugolib.pageForShortcode'
|
|
||||||
optional: false
|
|
||||||
comment: Context of the current page.
|
|
||||||
group: partial
|
|
||||||
src:
|
src:
|
||||||
type: string
|
|
||||||
optional: false
|
|
||||||
comment: Path or url of the image, e.g. `img/example.jpg`.
|
|
||||||
ratio:
|
ratio:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Ratio of the image. If set, the image is resized and cropped to match the
|
|
||||||
ratio. Else the original aspect ratio of the image is kept.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- 1x1
|
|
||||||
- 3x2
|
|
||||||
- 4x3
|
|
||||||
- 16x9
|
|
||||||
- 21x9
|
|
||||||
group: partial
|
group: partial
|
||||||
portrait:
|
portrait:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: >-
|
|
||||||
Flag to adjust the ratio from landscape to portrait. The image itself
|
|
||||||
is not rotated, only the crop area is adjusted. Not applicable to vector
|
|
||||||
graphics.
|
|
||||||
group: partial
|
group: partial
|
||||||
loading:
|
loading:
|
||||||
type: select
|
|
||||||
default: eager
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Loading behavior of the image. The loading of lazily loaded images is
|
|
||||||
deferred until the image is within scrolling range of the viewport. This
|
|
||||||
should reduce the initial loading time of the website. It is recommended
|
|
||||||
to lazily load only those images that are below the pagefold.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- eager
|
|
||||||
- lazy
|
|
||||||
caption:
|
caption:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Carousel slide caption.
|
|
||||||
active:
|
active:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Sets the current carousel item as active (only one item at a time). By
|
|
||||||
default, the first slide is made active.
|
|
@@ -3,36 +3,10 @@ comment: >-
|
|||||||
more details). Add inner `img` elements to define individual image slides.
|
more details). Add inner `img` elements to define individual image slides.
|
||||||
arguments:
|
arguments:
|
||||||
id:
|
id:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
ID of the carousel, defaults to `carousel-n` with a sequential number `n`.
|
|
||||||
ratio:
|
ratio:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Ratio of the images. If set, the images are resized and cropped to match the
|
|
||||||
ratio. Else the original aspect ratio of the image is kept.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- 1x1
|
|
||||||
- 3x2
|
|
||||||
- 4x3
|
|
||||||
- 16x9
|
|
||||||
- 21x9
|
|
||||||
portrait:
|
portrait:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: >-
|
|
||||||
Flag to adjust the ratio from landscape to portrait. The images themselves
|
|
||||||
are not rotated, only the crop area is adjusted. Not applicable to vector
|
|
||||||
graphics.
|
|
||||||
release: v0.18.3
|
release: v0.18.3
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the carousel element, e.g. `w-75`.
|
|
||||||
body:
|
body:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: false
|
||||||
|
@@ -1,14 +1,7 @@
|
|||||||
comment: Defines a hidden panel that can be reveiled by a trigger.
|
comment: Defines a hidden panel that can be reveiled by a trigger.
|
||||||
arguments:
|
arguments:
|
||||||
id:
|
id:
|
||||||
type: string
|
|
||||||
optional: false
|
|
||||||
comment: >-
|
|
||||||
ID of the collapse element, e.g. `collapse-1`.
|
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the inner panel element, e.g. `p-3`.
|
|
||||||
body:
|
body:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: false
|
||||||
|
@@ -3,31 +3,10 @@ comment: >-
|
|||||||
languages.
|
languages.
|
||||||
arguments:
|
arguments:
|
||||||
user:
|
user:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: User to add to the prompt, e.g. `user`.
|
|
||||||
host:
|
host:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Host to add to the prompt, e.g. `localhost`.
|
|
||||||
prompt:
|
prompt:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Prompt override, e.g. `PS C:\Users\User>`.
|
|
||||||
shell:
|
shell:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: bash
|
|
||||||
comment: Type of shell.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- bash
|
|
||||||
- powershell
|
|
||||||
- sql
|
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the command element.
|
|
||||||
body:
|
body:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: false
|
||||||
|
@@ -6,39 +6,9 @@ comment: >-
|
|||||||
The snippet between the two markers is then rendered using syntax highlighting.
|
The snippet between the two markers is then rendered using syntax highlighting.
|
||||||
arguments:
|
arguments:
|
||||||
name:
|
name:
|
||||||
type: string
|
|
||||||
optional: false
|
|
||||||
comment: >-
|
|
||||||
Name of the code snippet, used to identify the relevant section of the
|
|
||||||
input file.
|
|
||||||
file:
|
file:
|
||||||
type: string
|
|
||||||
optional: false
|
|
||||||
comment: >-
|
|
||||||
Path of the input file. The path is relative to the `basePath` defined in
|
|
||||||
the `docs` section of the site's parameters. If the file starts with `./`,
|
|
||||||
the path of the repository is used as base path instead.
|
|
||||||
show:
|
show:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: true
|
default: true
|
||||||
comment: >-
|
|
||||||
If unset, shows the panel with the code snippet in collapsed state. By
|
|
||||||
default, the panel is expanded.
|
|
||||||
full:
|
full:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: true
|
|
||||||
comment: >-
|
|
||||||
If unset, shows the filename only. By default, the entire path (relative
|
|
||||||
to the base path) is shown.
|
|
||||||
id:
|
id:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
ID of the collapse panel holding the code snippet, defaults to
|
|
||||||
`docs-collapse-n` with a sequential number `n` starting at `1`.
|
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the tab control that wraps the docs element.
|
|
||||||
|
15
data/structures/download.yml
Normal file
15
data/structures/download.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
comment: Generate a download button.
|
||||||
|
arguments:
|
||||||
|
download:
|
||||||
|
title:
|
||||||
|
class:
|
||||||
|
color:
|
||||||
|
default: primary
|
||||||
|
outline:
|
||||||
|
default: true
|
||||||
|
icon:
|
||||||
|
default: fas download
|
||||||
|
button-size:
|
||||||
|
default: sm
|
||||||
|
justify:
|
||||||
|
minimal:
|
@@ -3,30 +3,28 @@ comment: >-
|
|||||||
accepts the languages supported by Hugo's highlight function.
|
accepts the languages supported by Hugo's highlight function.
|
||||||
arguments:
|
arguments:
|
||||||
id:
|
id:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Identifier of the element’s container.
|
|
||||||
lang:
|
lang:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
default: markdown
|
default: markdown
|
||||||
comment: >-
|
class:
|
||||||
Language used to display the code. Use `hugo` to process Hugo (escaped)
|
show-markup:
|
||||||
shortcodes.
|
release: v1.0.0
|
||||||
|
show-preview:
|
||||||
|
release: v1.0.0
|
||||||
|
# deprecated arguments
|
||||||
show_markup:
|
show_markup:
|
||||||
type: bool
|
type: bool
|
||||||
optional: true
|
optional: true
|
||||||
default: true
|
default: true
|
||||||
comment: Indicates if the markup should be output in the HTML.
|
comment: Indicates if the markup should be output in the HTML.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: show-markup
|
||||||
show_preview:
|
show_preview:
|
||||||
type: bool
|
type: bool
|
||||||
optional: true
|
optional: true
|
||||||
default: true
|
default: true
|
||||||
comment: Indicates if the preview should be output in the HTML.
|
comment: Indicates if the preview should be output in the HTML.
|
||||||
class:
|
deprecated: v1.0.0
|
||||||
type: string
|
alternative: show-preview
|
||||||
optional: true
|
|
||||||
comment: Class attributes of the element's container.
|
|
||||||
body:
|
body:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: false
|
||||||
|
12
data/structures/featured-illustration.yml
Normal file
12
data/structures/featured-illustration.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
arguments:
|
||||||
|
page:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
mode:
|
||||||
|
ratio:
|
||||||
|
sizes:
|
||||||
|
title:
|
||||||
|
wrapper:
|
||||||
|
class:
|
||||||
|
anchor:
|
@@ -2,39 +2,23 @@ comment: >-
|
|||||||
Print the full content of any given file supported by the Chroma syntax
|
Print the full content of any given file supported by the Chroma syntax
|
||||||
highlighter.
|
highlighter.
|
||||||
arguments:
|
arguments:
|
||||||
|
file:
|
||||||
|
optional: true
|
||||||
|
release: v1.0.0
|
||||||
|
lang:
|
||||||
|
show:
|
||||||
|
default: true
|
||||||
|
full:
|
||||||
|
id:
|
||||||
|
class:
|
||||||
|
options:
|
||||||
|
release: v0.27.6
|
||||||
|
# deprecated arguments
|
||||||
path:
|
path:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
|
||||||
comment: >-
|
comment: >-
|
||||||
Path of the input file. The path is relative to the `basePath` defined in
|
Path of the input file. The path is relative to the `basePath` defined in
|
||||||
the `docs` section of the site's parameters. If the file starts with `./`,
|
the `docs` section of the site's parameters. If the file starts with `./`,
|
||||||
the path of the repository is used as base path instead.
|
the path of the repository is used as base path instead.
|
||||||
lang:
|
deprecated: v1.0.0
|
||||||
type: string
|
alternative: file
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Language to be used by the syntax highlighter. If not set, the
|
|
||||||
language is derived from the file extension.
|
|
||||||
show:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
If unset, shows the panel with the code in collapsed state. By default,
|
|
||||||
the panel is expanded.
|
|
||||||
full:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: true
|
|
||||||
comment: >-
|
|
||||||
If unset, shows the filename only. By default, the entire path (relative
|
|
||||||
to the base path) is shown.
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Identifier of the collapse panel, defaults to `file-collapse-n` with a
|
|
||||||
sequential number `n` starting at 1.
|
|
||||||
class:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the tab control that wraps the file element.
|
|
||||||
|
4
data/structures/get-dimension.yml
Normal file
4
data/structures/get-dimension.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
comment: >-
|
||||||
|
Initializes images dimensions (widht x height for supported image ratios.
|
||||||
|
arguments:
|
||||||
|
ratio:
|
13
data/structures/hero-image.yml
Normal file
13
data/structures/hero-image.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
arguments:
|
||||||
|
page:
|
||||||
|
icon:
|
||||||
|
image:
|
||||||
|
anchor:
|
||||||
|
mode:
|
||||||
|
ratio:
|
||||||
|
sizes:
|
||||||
|
title:
|
||||||
|
wrapper:
|
||||||
|
class:
|
||||||
|
image-overlay:
|
27
data/structures/hero.yml
Normal file
27
data/structures/hero.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
comment: >-
|
||||||
|
Displays a hero banner, typically placed at the top of the page. The hero
|
||||||
|
supports a heading, featured illustration, and navigation links. You can
|
||||||
|
can also add a background image with an overlay to improve contrast.
|
||||||
|
arguments:
|
||||||
|
breadcrumb:
|
||||||
|
heading:
|
||||||
|
background:
|
||||||
|
illustration:
|
||||||
|
link-type:
|
||||||
|
links:
|
||||||
|
align:
|
||||||
|
order:
|
||||||
|
overlay-mode:
|
||||||
|
cover:
|
||||||
|
orientation:
|
||||||
|
width:
|
||||||
|
use-section:
|
||||||
|
use-title:
|
||||||
|
class:
|
||||||
|
padding:
|
||||||
|
default: px-4 px-xxl-0 py-4
|
||||||
|
width:
|
||||||
|
default: 8
|
||||||
|
theme:
|
||||||
|
hook:
|
||||||
|
default: assets/hero-image.html
|
@@ -1,29 +1,36 @@
|
|||||||
comment: >-
|
comment: >-
|
||||||
Rewrites an origin URL to a target URL as supported by a CDN image adapter.
|
Rewrites an origin URL to a target URL as supported by a CDN image adapter.
|
||||||
arguments:
|
arguments:
|
||||||
|
url-host:
|
||||||
|
release: v1.0.0
|
||||||
|
url-dir:
|
||||||
|
release: v1.0.0
|
||||||
|
url-file:
|
||||||
|
release: v1.0.0
|
||||||
account:
|
account:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Account name of the origin server.
|
|
||||||
container:
|
container:
|
||||||
type: string
|
# deprecated arguments
|
||||||
optional: true
|
|
||||||
comment: Container name of the origin server.
|
|
||||||
host:
|
host:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
Host of an URL. For example, the host of the URL
|
Host of an URL. For example, the host of the URL
|
||||||
'https://example.com/first/second/third.webp' equals 'example.com'.
|
'https://example.com/first/second/third.webp' equals 'example.com'.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: url-host
|
||||||
dir:
|
dir:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
All but the last element of an URL extension. For example, the dir of the
|
All but the last element of an URL extension. For example, the dir of the
|
||||||
URL 'https://example.com/first/second/third.webp' equals '/first/second/'.
|
URL 'https://example.com/first/second/third.webp' equals '/first/second/'.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: url-dir
|
||||||
file:
|
file:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
optional: false
|
||||||
comment: >-
|
comment: >-
|
||||||
The last element of an URL extension. For example, the file of the
|
The last element of an URL extension. For example, the file of the
|
||||||
URL 'https://example.com/first/second/third.webp' equals 'third.webp'.
|
URL 'https://example.com/first/second/third.webp' equals 'third.webp'.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: url-file
|
||||||
|
@@ -1,79 +1,19 @@
|
|||||||
comment: >-
|
comment: >-
|
||||||
Defines the interface to be implemented by a CDN image adapter.
|
Defines the interface to be implemented by a CDN image adapter.
|
||||||
arguments:
|
arguments:
|
||||||
host:
|
url-host:
|
||||||
type: string
|
release: v1.0.0
|
||||||
optional: true
|
url-dir:
|
||||||
comment: >-
|
release: v1.0.0
|
||||||
Host of an URL. For example, the host of the URL
|
url-file:
|
||||||
'https://example.com/first/second/third.webp' equals 'example.com'.
|
release: v1.0.0
|
||||||
dir:
|
absolute-url:
|
||||||
type: string
|
release: v1.0.0
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
All but the last element of an URL extension. For example, the dir of the
|
|
||||||
URL 'https://example.com/first/second/third.webp' equals '/first/second/'.
|
|
||||||
file:
|
|
||||||
type: string
|
|
||||||
optional: false
|
|
||||||
comment: >-
|
|
||||||
The last element of an URL extension. For example, the file of the
|
|
||||||
URL 'https://example.com/first/second/third.webp' equals 'third.webp'.
|
|
||||||
absoluteURL:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: >-
|
|
||||||
Defines if a local image should use absolute instead of relative paths.
|
|
||||||
img:
|
img:
|
||||||
type: "*resources.resourceAdapter"
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Image resource to process. Must be set when handling local images.
|
|
||||||
format:
|
format:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Image format; leave empty for an auto format (if supported) or default
|
|
||||||
format (usually jpg).
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- png
|
|
||||||
- jpg
|
|
||||||
- gif
|
|
||||||
- tiff
|
|
||||||
- bmp
|
|
||||||
- webp
|
|
||||||
transform:
|
transform:
|
||||||
type: select
|
image-height:
|
||||||
optional: false
|
release: v1.0.0
|
||||||
comment: Image transformation.
|
image-width:
|
||||||
options:
|
release: v1.0.0
|
||||||
values:
|
|
||||||
- fill
|
|
||||||
- fit
|
|
||||||
height:
|
|
||||||
type: int
|
|
||||||
optional: false
|
|
||||||
comment: Height of the image in pixels.
|
|
||||||
width:
|
|
||||||
type: int
|
|
||||||
optional: false
|
|
||||||
comment: Width of the image in pixels.
|
|
||||||
anchor:
|
anchor:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment: Anchor of the crop box.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- TopLeft
|
|
||||||
- Top
|
|
||||||
- TopRight
|
|
||||||
- Left
|
|
||||||
- Center
|
|
||||||
- Right
|
|
||||||
- BottomLeft
|
|
||||||
- Bottom
|
|
||||||
- BottomRight
|
|
||||||
- Smart
|
|
||||||
|
|
||||||
|
17
data/structures/image-definition.yml
Normal file
17
data/structures/image-definition.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
arguments:
|
||||||
|
src:
|
||||||
|
page:
|
||||||
|
mode:
|
||||||
|
ratio:
|
||||||
|
portrait:
|
||||||
|
loading:
|
||||||
|
priority:
|
||||||
|
sizes:
|
||||||
|
title:
|
||||||
|
caption:
|
||||||
|
wrapper:
|
||||||
|
class:
|
||||||
|
figclass:
|
||||||
|
plain:
|
||||||
|
anchor:
|
||||||
|
absolute-url:
|
10
data/structures/image-dimension.yml
Normal file
10
data/structures/image-dimension.yml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
arguments:
|
||||||
|
src:
|
||||||
|
page:
|
||||||
|
ratio:
|
||||||
|
portrait:
|
||||||
|
image-height:
|
||||||
|
image-width:
|
||||||
|
plain:
|
||||||
|
anchor:
|
||||||
|
imageset:
|
5
data/structures/image-rewrite.yml
Normal file
5
data/structures/image-rewrite.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
arguments:
|
||||||
|
src:
|
||||||
|
account:
|
||||||
|
container:
|
||||||
|
hook:
|
11
data/structures/image-set.yml
Normal file
11
data/structures/image-set.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
arguments:
|
||||||
|
src:
|
||||||
|
img:
|
||||||
|
absolute-url:
|
||||||
|
release: v1.0.0
|
||||||
|
dims:
|
||||||
|
hook:
|
||||||
|
transform:
|
||||||
|
format:
|
||||||
|
anchor:
|
||||||
|
include-width:
|
@@ -18,6 +18,33 @@ comment: >-
|
|||||||
graphics support an optional anchor `#` in their url to denote a symbol
|
graphics support an optional anchor `#` in their url to denote a symbol
|
||||||
reference.
|
reference.
|
||||||
arguments:
|
arguments:
|
||||||
|
src:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
position: 0
|
||||||
|
page:
|
||||||
|
optional: true
|
||||||
|
mode:
|
||||||
|
ratio:
|
||||||
|
portrait:
|
||||||
|
release: v0.18.3
|
||||||
|
loading:
|
||||||
|
release: v0.21.0
|
||||||
|
priority:
|
||||||
|
sizes:
|
||||||
|
group: partial
|
||||||
|
title:
|
||||||
|
caption:
|
||||||
|
wrapper:
|
||||||
|
release: v0.18.3
|
||||||
|
class:
|
||||||
|
figclass:
|
||||||
|
release: v0.23.0
|
||||||
|
plain:
|
||||||
|
release: v0.24.0
|
||||||
|
anchor:
|
||||||
|
release: v0.24.22
|
||||||
|
# deprecated arguments
|
||||||
url:
|
url:
|
||||||
type:
|
type:
|
||||||
- string
|
- string
|
||||||
@@ -27,137 +54,5 @@ arguments:
|
|||||||
Path or url of the image, e.g. `img/example.jpg`. Images with multiple
|
Path or url of the image, e.g. `img/example.jpg`. Images with multiple
|
||||||
color modes are expected to have a basename that ends with either `-dark`
|
color modes are expected to have a basename that ends with either `-dark`
|
||||||
or `-light`.
|
or `-light`.
|
||||||
src:
|
deprecated: v1.0.0
|
||||||
type: string
|
alternative: src
|
||||||
optional: true
|
|
||||||
position: 0
|
|
||||||
comment: Alias for url.
|
|
||||||
group: shortcode
|
|
||||||
page:
|
|
||||||
type:
|
|
||||||
- '*hugolib.pageState'
|
|
||||||
- '*hugolib.pageForRenderHooks'
|
|
||||||
- '*hugolib.pageForShortcode'
|
|
||||||
optional: true
|
|
||||||
comment: Page context, used to match page resources.
|
|
||||||
group: partial
|
|
||||||
mode:
|
|
||||||
type: bool
|
|
||||||
default: false
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag indicating if the image should support color modes. If set, the
|
|
||||||
shortcode searches for images that having a matching color-mode suffix
|
|
||||||
such as `-light` or `-dark`.
|
|
||||||
ratio:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Ratio of the image. If set, the image is resized and cropped to match the
|
|
||||||
ratio. Else the original aspect ratio of the image is kept. Not applicable
|
|
||||||
to vector graphics.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- 1x1
|
|
||||||
- 3x2
|
|
||||||
- 4x3
|
|
||||||
- 16x9
|
|
||||||
- 21x9
|
|
||||||
portrait:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: >-
|
|
||||||
Flag to adjust the ratio from landscape to portrait. The image itself is
|
|
||||||
not rotated, only the crop area is adjusted. Not applicable to vector
|
|
||||||
graphics.
|
|
||||||
release: v0.18.3
|
|
||||||
loading:
|
|
||||||
type: select
|
|
||||||
default: eager
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Loading behavior of the image. The loading of lazily loaded images is
|
|
||||||
deferred until the image is within scrolling range of the viewport. This
|
|
||||||
should reduce the initial loading time of the website. It is recommended
|
|
||||||
to lazily load only those images that are below the pagefold.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- eager
|
|
||||||
- lazy
|
|
||||||
release: v0.21.0
|
|
||||||
priority:
|
|
||||||
type: select
|
|
||||||
default: auto
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Fetch priority of the image. The priority provides a hint to the browser
|
|
||||||
on how it should prioritize the fetching of the image relative to other
|
|
||||||
images. The implementation is experimental and currently only supported by
|
|
||||||
Chrome, Edge, and Opera.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- high
|
|
||||||
- low
|
|
||||||
- auto
|
|
||||||
group: partial
|
|
||||||
sizes:
|
|
||||||
type: string
|
|
||||||
default: 100vw
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
One or more strings separated by commas, indicating the source sizes of an
|
|
||||||
image set.
|
|
||||||
group: partial
|
|
||||||
title:
|
|
||||||
type:
|
|
||||||
- string
|
|
||||||
- hstring.RenderedString
|
|
||||||
- hstring.HTML
|
|
||||||
optional: true
|
|
||||||
comment: Alternate text of the image.
|
|
||||||
caption:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Figure caption.
|
|
||||||
wrapper:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attributes of the wrapper element, e.g. `mx-auto`.
|
|
||||||
release: v0.18.3
|
|
||||||
class:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the inner img element, e.g. `rounded`.
|
|
||||||
figclass:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the figure caption, e.g. `px-4`.
|
|
||||||
release: v0.23.0
|
|
||||||
plain:
|
|
||||||
type: bool
|
|
||||||
default: false
|
|
||||||
optional: true
|
|
||||||
comment:
|
|
||||||
Flag to indicate if the image should render a plain image instead of an
|
|
||||||
image set. When set, no transformations are applied to the image.
|
|
||||||
release: v0.24.0
|
|
||||||
anchor:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment:
|
|
||||||
Anchor of the crop box, defaults to anchor value set in `imaging` section
|
|
||||||
of the site configuration (usually `Smart`).
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- TopLeft
|
|
||||||
- Top
|
|
||||||
- TopRight
|
|
||||||
- Left
|
|
||||||
- Center
|
|
||||||
- Right
|
|
||||||
- BottomLeft
|
|
||||||
- Bottom
|
|
||||||
- BottomRight
|
|
||||||
- Smart
|
|
||||||
release: v0.24.22
|
|
||||||
|
4
data/structures/ins.yml
Normal file
4
data/structures/ins.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
comment: Underlines text.
|
||||||
|
body:
|
||||||
|
optional: false
|
||||||
|
comment: Text to be underlined.
|
@@ -1,30 +1,17 @@
|
|||||||
comment: Adds a keyboard input element.
|
comment: Adds a keyboard input element.
|
||||||
arguments:
|
arguments:
|
||||||
title:
|
text:
|
||||||
type: string
|
optional: true
|
||||||
optional: false
|
|
||||||
position: 0
|
position: 0
|
||||||
|
release: v1.0.0
|
||||||
|
class:
|
||||||
|
color:
|
||||||
|
# deprecated arguments
|
||||||
|
title:
|
||||||
|
type: select
|
||||||
|
optional: true
|
||||||
comment: >-
|
comment: >-
|
||||||
Title of the keyboard input. In shorthand notation, this is the first (and
|
Title of the keyboard input. In shorthand notation, this is the first (and
|
||||||
only) matched argument.
|
only) matched argument.
|
||||||
class:
|
deprecated: v1.0.0
|
||||||
type: string
|
alternative: text
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the keyboard input element.
|
|
||||||
color:
|
|
||||||
type: select
|
|
||||||
default: secondary
|
|
||||||
optional: true
|
|
||||||
comment: Theme color of the element.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- primary
|
|
||||||
- secondary
|
|
||||||
- success
|
|
||||||
- danger
|
|
||||||
- warning
|
|
||||||
- info
|
|
||||||
- light
|
|
||||||
- dark
|
|
||||||
- white
|
|
||||||
- black
|
|
||||||
|
@@ -8,79 +8,44 @@ comment: >-
|
|||||||
containing a `#`).
|
containing a `#`).
|
||||||
arguments:
|
arguments:
|
||||||
page:
|
page:
|
||||||
type:
|
href:
|
||||||
- '*hugolib.pageState'
|
position: 0
|
||||||
- '*hugolib.pageForRenderHooks'
|
cue:
|
||||||
- '*hugolib.pageForShortcode'
|
tab:
|
||||||
optional: false
|
case:
|
||||||
|
external:
|
||||||
|
force:
|
||||||
|
release: v0.27.20
|
||||||
|
class:
|
||||||
|
text:
|
||||||
|
optional: true
|
||||||
group: partial
|
group: partial
|
||||||
comment: Context of the current page.
|
title:
|
||||||
|
release: v0.26.0
|
||||||
|
position:
|
||||||
|
group: partial
|
||||||
|
optional: true
|
||||||
|
release: v1.0.0
|
||||||
|
# deprecated arguments
|
||||||
destination:
|
destination:
|
||||||
type: string
|
type: string
|
||||||
optional: false
|
|
||||||
group: partial
|
|
||||||
comment: >-
|
|
||||||
Target destination.
|
|
||||||
href:
|
|
||||||
type: string
|
|
||||||
position: 0
|
|
||||||
optional: true
|
optional: true
|
||||||
comment: >-
|
group: partial
|
||||||
Reference to either an external link (if it starts with `http`), a named
|
comment: Target destination.
|
||||||
link (if it can be found in `params.links`), or internal reference.
|
deprecated: v1.0.0
|
||||||
Both external and internal references may include an anchor `#`.
|
alternative: href
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: Alias of href.
|
comment: Alias of href.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: href
|
||||||
url:
|
url:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
comment: Alias of href.
|
comment: Alias of href.
|
||||||
cue:
|
deprecated: v1.0.0
|
||||||
type: bool
|
alternative: href
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate if an external link should show a visual cue, defaults to
|
|
||||||
setting `main.externalLinks.cue` in the site's parameters.
|
|
||||||
tab:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate if an external link should open in a new tab, defaults to
|
|
||||||
setting `main.externalLinks.tab` in the site's parameters.
|
|
||||||
case:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: true
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate if the retrieved title (e.g. no inner text is provided)
|
|
||||||
of an internal link should use its original case. If false, the title is
|
|
||||||
set to lower case.
|
|
||||||
external:
|
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
default: false
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate if a link that contains baseURL host should be forced as external.
|
|
||||||
class:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the anchor element.
|
|
||||||
text:
|
|
||||||
type:
|
|
||||||
- string
|
|
||||||
- template.HTML
|
|
||||||
- hstring.RenderedString
|
|
||||||
- hstring.HTML
|
|
||||||
optional: true
|
|
||||||
group: partial
|
|
||||||
comment: Link description.
|
|
||||||
title:
|
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Link title.
|
|
||||||
release: v0.26.0
|
|
||||||
body:
|
body:
|
||||||
type: string
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
|
6
data/structures/links.yml
Normal file
6
data/structures/links.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
arguments:
|
||||||
|
page:
|
||||||
|
links:
|
||||||
|
align:
|
||||||
|
justify:
|
||||||
|
link-type:
|
76
data/structures/live-pages.yml
Normal file
76
data/structures/live-pages.yml
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
comment: >-
|
||||||
|
Retrieves a page collection relative to a provided page or optional section.
|
||||||
|
Provide tags to ensure the pages have at least one matching tag. You can sort
|
||||||
|
the collection by parameter in ascending or descending order.
|
||||||
|
|
||||||
|
As CloudCannon does not support the retrieval of page collection when live
|
||||||
|
editing, the partial returns a dummy collection instead.
|
||||||
|
arguments:
|
||||||
|
page:
|
||||||
|
type:
|
||||||
|
- '*hugolib.pageState'
|
||||||
|
- '*hugolib.pageForShortcode'
|
||||||
|
optional: false
|
||||||
|
comment: Page context, used to retrieve page collections.
|
||||||
|
group: partial
|
||||||
|
section:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Name of site section to use for the page collection. When omitted, the
|
||||||
|
current page is used as context instead. Use "/" to retrieve the home
|
||||||
|
page.
|
||||||
|
kind:
|
||||||
|
type: select
|
||||||
|
optional: true
|
||||||
|
default: regular
|
||||||
|
comment: >-
|
||||||
|
Kind of page collection to use.
|
||||||
|
options:
|
||||||
|
values:
|
||||||
|
- regular
|
||||||
|
- related
|
||||||
|
- taxonomy
|
||||||
|
nested:
|
||||||
|
type: bool
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
If set, retrieves all pages below the section or current page recursively.
|
||||||
|
By default, only first-order childs are retrieved.
|
||||||
|
tags:
|
||||||
|
type:
|
||||||
|
- string
|
||||||
|
- "[]interface {}"
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Tags to be used as filter. When set, only pages that match at least one of
|
||||||
|
the provided tags are retrieved.
|
||||||
|
keywords:
|
||||||
|
type:
|
||||||
|
- string
|
||||||
|
- "[]interface {}"
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Keywords to be used as filter. When set, only pages that match at least
|
||||||
|
one of the provided keywords are retrieved.
|
||||||
|
categories:
|
||||||
|
type:
|
||||||
|
- string
|
||||||
|
- "[]interface {}"
|
||||||
|
optional: true
|
||||||
|
comment: >-
|
||||||
|
Categories to be used as filter. When set, only pages that belong to at
|
||||||
|
least one of the provided categories are retrieved.
|
||||||
|
sort:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
default: date
|
||||||
|
comment: >-
|
||||||
|
Page parameter to sort the page collection by. Both default and custom
|
||||||
|
parameters can be used.
|
||||||
|
reverse:
|
||||||
|
type: bool
|
||||||
|
optional: true
|
||||||
|
default: true
|
||||||
|
comment: >-
|
||||||
|
If set, returns the page collection in descending order.
|
@@ -1,27 +1,7 @@
|
|||||||
comment: Highlights text by applying a background color.
|
comment: Highlights text by applying a background color.
|
||||||
arguments:
|
arguments:
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the highlight element.
|
|
||||||
color:
|
color:
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Theme color of the highlight. By default, the highlight uses the color of
|
|
||||||
the HTML mark function (usually yellow).
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- primary
|
|
||||||
- secondary
|
|
||||||
- success
|
|
||||||
- danger
|
|
||||||
- warning
|
|
||||||
- info
|
|
||||||
- light
|
|
||||||
- dark
|
|
||||||
- white
|
|
||||||
- black
|
|
||||||
body:
|
body:
|
||||||
optional: false
|
optional: false
|
||||||
comment: Text to be marked.
|
comment: Text to be marked.
|
||||||
|
@@ -1,46 +1,39 @@
|
|||||||
comment: >-
|
comment: >-
|
||||||
Defines an individual item.
|
Defines an individual item.
|
||||||
arguments:
|
arguments:
|
||||||
|
page:
|
||||||
|
group: partial
|
||||||
id:
|
id:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Identification of the item.
|
|
||||||
group: partial
|
group: partial
|
||||||
parentID:
|
parent-id:
|
||||||
type: string
|
release: v1.0.0
|
||||||
optional: false
|
title:
|
||||||
comment: Identification of the parent (e.g. nav control).
|
release: v1.0.0
|
||||||
group: partial
|
|
||||||
header:
|
|
||||||
type: string
|
|
||||||
optional: false
|
|
||||||
comment: Header of the item.
|
|
||||||
show:
|
show:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Flag to indicate if the item should be shown. Only one can be shown at a
|
|
||||||
time.
|
|
||||||
disabled:
|
disabled:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: Flag to indicate the item should be in a disabled state.
|
|
||||||
fade:
|
fade:
|
||||||
type: bool
|
|
||||||
optional: true
|
|
||||||
comment: Flag to make the tab pane fade in.
|
|
||||||
parent: cascade
|
|
||||||
class:
|
class:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the item.
|
|
||||||
body:
|
body:
|
||||||
|
group: partial
|
||||||
|
navitem-type:
|
||||||
|
release: v1.0.0
|
||||||
|
illustration:
|
||||||
type:
|
type:
|
||||||
- string
|
- string
|
||||||
- template.HTML
|
- template.HTML
|
||||||
optional: true
|
optional: true
|
||||||
comment: The body content of the item, supports Markdown and HTML (if enabled).
|
|
||||||
group: partial
|
group: partial
|
||||||
|
hook:
|
||||||
|
default: assets/hero-image.html
|
||||||
|
group: partial
|
||||||
|
release: v1.0.0
|
||||||
|
# deprecated arguments
|
||||||
|
header:
|
||||||
|
type: string
|
||||||
|
optional: true
|
||||||
|
comment: Header of the item.
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: title
|
||||||
item_type:
|
item_type:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -50,12 +43,15 @@ arguments:
|
|||||||
- accordion
|
- accordion
|
||||||
- tab-pane
|
- tab-pane
|
||||||
group: partial
|
group: partial
|
||||||
illustration:
|
deprecated: v1.0.0
|
||||||
type:
|
alternative: navitem-type
|
||||||
- string
|
parentID:
|
||||||
- template.HTML
|
type: string
|
||||||
optional: true
|
optional: true
|
||||||
|
comment: Identification of the parent (e.g. nav control).
|
||||||
group: partial
|
group: partial
|
||||||
|
deprecated: v1.0.0
|
||||||
|
alternative: parent-id
|
||||||
body:
|
body:
|
||||||
optional: false
|
optional: false
|
||||||
comment: Content of the item.
|
comment: Content of the item.
|
||||||
|
@@ -3,25 +3,25 @@ comment: >-
|
|||||||
tab pane.
|
tab pane.
|
||||||
arguments:
|
arguments:
|
||||||
id:
|
id:
|
||||||
type: string
|
|
||||||
optional: true
|
|
||||||
comment: >-
|
|
||||||
Identifier of the tab group, uses a generated sequence if not specified.
|
|
||||||
page:
|
page:
|
||||||
type:
|
|
||||||
- '*hugolib.pageState'
|
|
||||||
- '*hugolib.pageForShortcode'
|
|
||||||
optional: false
|
|
||||||
comment: Context of the current page.
|
|
||||||
group: partial
|
group: partial
|
||||||
list:
|
list:
|
||||||
type:
|
|
||||||
- page.Pages
|
|
||||||
- resource.Resources
|
|
||||||
- '[]map[string]interface {}'
|
|
||||||
optional: true
|
|
||||||
comment: Array of pages to be rendered as nav items.
|
|
||||||
group: partial
|
group: partial
|
||||||
|
nav-items:
|
||||||
|
release: v1.0.0
|
||||||
|
nav-titles:
|
||||||
|
release: v1.0.0
|
||||||
|
tab-type:
|
||||||
|
release: v1.0.0
|
||||||
|
vertical:
|
||||||
|
word-wrap:
|
||||||
|
release: v1.0.0
|
||||||
|
class:
|
||||||
|
pane:
|
||||||
|
width:
|
||||||
|
default: 12
|
||||||
|
group: partial
|
||||||
|
# deprecated arguments
|
||||||
type:
|
type:
|
||||||
type: select
|
type: select
|
||||||
optional: true
|
optional: true
|
||||||
@@ -32,52 +32,12 @@ arguments:
|
|||||||
- pills
|
- pills
|
||||||
- underline
|
- underline
|
||||||
- callout
|
- callout
|
||||||
vertical:
|
deprecated: v1.0.0
|
||||||
type: bool
|
alternative: tab-type
|
||||||
default: false
|
|
||||||
optional: true
|
|
||||||
comment: Flag to show vertical tabs instead of horizontal tabs.
|
|
||||||
wrap:
|
wrap:
|
||||||
type: bool
|
type: bool
|
||||||
default: false
|
default: false
|
||||||
optional: true
|
optional: true
|
||||||
comment: Flag to enable word wrapping of tab titles.
|
comment: Flag to enable word wrapping of tab titles.
|
||||||
class:
|
deprecated: v1.0.0
|
||||||
type: string
|
alternative: word-wrap
|
||||||
optional: true
|
|
||||||
comment: Class attribute of the tab group, e.g. `nav-fill`.
|
|
||||||
pane:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: none
|
|
||||||
comment: Style of the panes.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- none
|
|
||||||
- persona
|
|
||||||
group: partial
|
|
||||||
width:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: "100"
|
|
||||||
comment: Responsive width of the tab group.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- "50"
|
|
||||||
- "100"
|
|
||||||
group: partial
|
|
||||||
loading:
|
|
||||||
type: select
|
|
||||||
optional: true
|
|
||||||
default: eager
|
|
||||||
parent: cascade
|
|
||||||
comment: >-
|
|
||||||
Loading behavior of the image. The loading of lazily loaded images is
|
|
||||||
deferred until the image is within scrolling range of the viewport. This
|
|
||||||
should reduce the initial loading time of the website. It is recommended
|
|
||||||
to lazily load only those images that are below the page fold.
|
|
||||||
options:
|
|
||||||
values:
|
|
||||||
- lazy
|
|
||||||
- eager
|
|
||||||
group: partial
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user