Compare commits
610 Commits
v0.1
...
v0.9.0-alp
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b7ef39a61c | ||
![]() |
d4bf047b09 | ||
![]() |
9df3426f41 | ||
![]() |
d7f887c6f6 | ||
![]() |
25dfbb3ed3 | ||
![]() |
4e48065605 | ||
![]() |
929a86e6b7 | ||
![]() |
e0895d9751 | ||
![]() |
7a1925594b | ||
![]() |
913813c602 | ||
![]() |
4fb4b31635 | ||
![]() |
6aedfc9c6a | ||
![]() |
2cc9204d9d | ||
![]() |
76fe879066 | ||
![]() |
34b161d10f | ||
![]() |
5c0f47fdc8 | ||
![]() |
919b62adac | ||
![]() |
909ff6bc9e | ||
![]() |
9b053b876c | ||
![]() |
831568fde3 | ||
![]() |
54f06566ee | ||
![]() |
f52241f4fe | ||
![]() |
ea5ce16f3c | ||
![]() |
e1c23e003b | ||
![]() |
a018b2af25 | ||
![]() |
16a7cecdbe | ||
![]() |
091cc49b1d | ||
![]() |
5982b8132f | ||
![]() |
90d158d8c4 | ||
![]() |
a5b3a7b3a5 | ||
![]() |
feafd3c3a9 | ||
![]() |
3fe31f9655 | ||
![]() |
317302fd94 | ||
![]() |
7d03be11e6 | ||
![]() |
a8b834c71c | ||
![]() |
ca00426f0d | ||
![]() |
040441b7eb | ||
![]() |
edde8164d7 | ||
![]() |
7451687be5 | ||
![]() |
0d55ad9f24 | ||
![]() |
c225e86ef3 | ||
![]() |
cd5886be9e | ||
![]() |
a2e909e0b0 | ||
![]() |
a2c45081a3 | ||
![]() |
3d7c49db2e | ||
![]() |
d2ba6f827b | ||
![]() |
2137062559 | ||
![]() |
d08c23f668 | ||
![]() |
c04a0c1981 | ||
![]() |
c2484433e8 | ||
![]() |
c92af394eb | ||
![]() |
e82b4cce0c | ||
![]() |
ff5624951d | ||
![]() |
0d1aa334b3 | ||
![]() |
24979034a3 | ||
![]() |
d43a992efd | ||
![]() |
d913dbf00b | ||
![]() |
e3c3f8eb75 | ||
![]() |
4e6c437274 | ||
![]() |
3ae4c5ee97 | ||
![]() |
bce3d8ed83 | ||
![]() |
02f3b9cedc | ||
![]() |
0721243d82 | ||
![]() |
63fda8378e | ||
![]() |
0bd6257ef5 | ||
![]() |
cfec32ac11 | ||
![]() |
8f32d613d1 | ||
![]() |
7a46a47cea | ||
![]() |
a0e446dc2c | ||
![]() |
8938f4270d | ||
![]() |
25bd5ea47c | ||
![]() |
0bce0a9fb7 | ||
![]() |
f6aeed969c | ||
![]() |
088dd82bd3 | ||
![]() |
503554046c | ||
![]() |
419ad7bb86 | ||
![]() |
74e6367b30 | ||
![]() |
4c8e73af33 | ||
![]() |
73446e5580 | ||
![]() |
223ae24416 | ||
![]() |
4167cf1695 | ||
![]() |
cf98b4d067 | ||
![]() |
e0e694cda4 | ||
![]() |
40b36ef34b | ||
![]() |
d47adb99a2 | ||
![]() |
32b86d1183 | ||
![]() |
c17ac02c13 | ||
![]() |
ea6623349c | ||
![]() |
0d1b08e770 | ||
![]() |
868430b726 | ||
![]() |
d3330716ee | ||
![]() |
9799b9d6eb | ||
![]() |
092ee2f4a7 | ||
![]() |
9c0fca16bf | ||
![]() |
ac5521bffa | ||
![]() |
8634b1ecce | ||
![]() |
258040c345 | ||
![]() |
1cd93c131e | ||
![]() |
cba64fccfe | ||
![]() |
bd6743acc6 | ||
![]() |
1d30b45c2b | ||
![]() |
8d8a6918b6 | ||
![]() |
58ba98f180 | ||
![]() |
736d93774a | ||
![]() |
7a0b0f318d | ||
![]() |
d65bea328f | ||
![]() |
4e84e97146 | ||
![]() |
29f8016ebc | ||
![]() |
60b4cc0403 | ||
![]() |
47d642bd38 | ||
![]() |
8bfd3ffee8 | ||
![]() |
6fa0c2b101 | ||
![]() |
c8735634a1 | ||
![]() |
1487fec2ff | ||
![]() |
1421103b6c | ||
![]() |
cbc1b3bbb9 | ||
![]() |
0750ec61b8 | ||
![]() |
b237246290 | ||
![]() |
1a8c8439b8 | ||
![]() |
0221e71dce | ||
![]() |
7a8cee0f0b | ||
![]() |
e832ad9493 | ||
![]() |
4c0bd6ef82 | ||
![]() |
1fda10837d | ||
![]() |
06a1744a40 | ||
![]() |
3960504a98 | ||
![]() |
d187748394 | ||
![]() |
0beac5cd20 | ||
![]() |
2e5053fefb | ||
![]() |
af8bc2d26d | ||
![]() |
03aa601922 | ||
![]() |
a6d8f7e6f1 | ||
![]() |
f09e71f27f | ||
![]() |
2ede4c52a2 | ||
![]() |
579f2a9a79 | ||
![]() |
c2e1ae5346 | ||
![]() |
2c078631a1 | ||
![]() |
6a6458f65c | ||
![]() |
b28dffac49 | ||
![]() |
7d86c45658 | ||
![]() |
02c1b17e96 | ||
![]() |
ba7e617deb | ||
![]() |
cc6c5be156 | ||
![]() |
5489001d06 | ||
![]() |
69b7ef0642 | ||
![]() |
75b7423668 | ||
![]() |
7de9cd670a | ||
![]() |
7b6586dca8 | ||
![]() |
8ca0351aee | ||
![]() |
b6acf81025 | ||
![]() |
5669704aed | ||
![]() |
a6a61f0561 | ||
![]() |
72d4302cd2 | ||
![]() |
b2b872481a | ||
![]() |
459482f83b | ||
![]() |
a9f488e0a2 | ||
![]() |
8b0104eb45 | ||
![]() |
423793f181 | ||
![]() |
e2b2b57899 | ||
![]() |
298800c988 | ||
![]() |
c5ce6094de | ||
![]() |
1277bf3fac | ||
![]() |
ba7b911a5f | ||
![]() |
acb249e4f8 | ||
![]() |
b6c6f34786 | ||
![]() |
cb8f4cfe36 | ||
![]() |
0420aedb32 | ||
![]() |
57991ed86f | ||
![]() |
b4a761d9ae | ||
![]() |
de97ce712a | ||
![]() |
56d950d8b3 | ||
![]() |
36f1895ef0 | ||
![]() |
e26b140185 | ||
![]() |
b021836322 | ||
![]() |
35dc525cbc | ||
![]() |
154bea7f34 | ||
![]() |
d644d0009a | ||
![]() |
21391c5062 | ||
![]() |
9e004b053b | ||
![]() |
cdb0583cfa | ||
![]() |
80c45ae937 | ||
![]() |
34186b4a3a | ||
![]() |
5b3bc65044 | ||
![]() |
4cb4d71c29 | ||
![]() |
63c340388a | ||
![]() |
f1eca1820a | ||
![]() |
7e3e1d5f3c | ||
![]() |
91894368bd | ||
![]() |
240ab445fd | ||
![]() |
14d3f87433 | ||
![]() |
de23b953b8 | ||
![]() |
bab08f2645 | ||
![]() |
52c6fa27b1 | ||
![]() |
fba194e0c4 | ||
![]() |
9b6da30281 | ||
![]() |
628e6d0a82 | ||
![]() |
0cd6fefac6 | ||
![]() |
0639ea4f8e | ||
![]() |
0d6804ae6b | ||
![]() |
eceb98923c | ||
![]() |
7b1ea3bb48 | ||
![]() |
0dc7887e99 | ||
![]() |
fe6f49b516 | ||
![]() |
2632c690ea | ||
![]() |
62dee1a440 | ||
![]() |
4257ff2e37 | ||
![]() |
17f72ec5fd | ||
![]() |
197505e79d | ||
![]() |
5e6f878606 | ||
![]() |
9cf568cd40 | ||
![]() |
bdff2c24df | ||
![]() |
11b95e35a4 | ||
![]() |
214b667409 | ||
![]() |
daf881a6ad | ||
![]() |
6cf89f5c59 | ||
![]() |
24be96a4a7 | ||
![]() |
9221a05c8f | ||
![]() |
859b62d460 | ||
![]() |
f458b2250c | ||
![]() |
ca798c391d | ||
![]() |
ea14e90901 | ||
![]() |
058ec3f1df | ||
![]() |
d239ec482d | ||
![]() |
779fcfbda1 | ||
![]() |
b326a0c121 | ||
![]() |
e4ef15b702 | ||
![]() |
24ba30acb0 | ||
![]() |
3884e32245 | ||
![]() |
49733cc31c | ||
![]() |
0bc440c640 | ||
![]() |
dec5269f56 | ||
![]() |
33a55ef9f3 | ||
![]() |
4c3920abbc | ||
![]() |
664d9fa9b0 | ||
![]() |
644fdaefca | ||
![]() |
7c6d9bc7a3 | ||
![]() |
ec50c950bb | ||
![]() |
4015b923a7 | ||
![]() |
cd0786e82c | ||
![]() |
a2762ebf4b | ||
![]() |
0dda1af72d | ||
![]() |
af792bf385 | ||
![]() |
4a77d9cafd | ||
![]() |
db1b0efd04 | ||
![]() |
0b273a0bb7 | ||
![]() |
3c22cda509 | ||
![]() |
5b7645797b | ||
![]() |
dcb0d27883 | ||
![]() |
76622657dd | ||
![]() |
3ef9622c9a | ||
![]() |
1dbc144fbc | ||
![]() |
a5d5ddc5e6 | ||
![]() |
cfe4cc8505 | ||
![]() |
4d98627e21 | ||
![]() |
d31c1cdd92 | ||
![]() |
3fb9f43969 | ||
![]() |
58422ae631 | ||
![]() |
28801aeef7 | ||
![]() |
294928c254 | ||
![]() |
cd40afe6e4 | ||
![]() |
bf1728b88f | ||
![]() |
1c9e8166a8 | ||
![]() |
5492032128 | ||
![]() |
070fe64d82 | ||
![]() |
d3c45aff32 | ||
![]() |
1c60dfa023 | ||
![]() |
976f437949 | ||
![]() |
e2db1af696 | ||
![]() |
7b2cf91811 | ||
![]() |
83adf87e5b | ||
![]() |
7769d58ad9 | ||
![]() |
d79be40cae | ||
![]() |
849d60d4f8 | ||
![]() |
781bc8678b | ||
![]() |
314fd94eeb | ||
![]() |
e0fbacc57d | ||
![]() |
87ed025a87 | ||
![]() |
b31e2cac82 | ||
![]() |
acc96631cf | ||
![]() |
d49a17c015 | ||
![]() |
3b4813d65a | ||
![]() |
91da9eaecf | ||
![]() |
b8c555449b | ||
![]() |
73364ae305 | ||
![]() |
c138b5999f | ||
![]() |
963100834e | ||
![]() |
4a4ee8d2fc | ||
![]() |
ca60f7e2c3 | ||
![]() |
e28a6086b8 | ||
![]() |
010b0e8b04 | ||
![]() |
c83c5ccb48 | ||
![]() |
bb3edcc0b9 | ||
![]() |
b7e4ec2465 | ||
![]() |
5b7f2d33ca | ||
![]() |
0f401bf345 | ||
![]() |
b77215f7b6 | ||
![]() |
5e5d8d8338 | ||
![]() |
cbb7713737 | ||
![]() |
17f63f93e4 | ||
![]() |
3755c20a55 | ||
![]() |
0a8ec00c90 | ||
![]() |
8aabb262ca | ||
![]() |
9d26a7386c | ||
![]() |
b61c68ce68 | ||
![]() |
8bb66ff0cd | ||
![]() |
d038ef2590 | ||
![]() |
175f726e3c | ||
![]() |
03b665f273 | ||
![]() |
786dbbab1e | ||
![]() |
13c7e4e9a4 | ||
![]() |
c4d8665e10 | ||
![]() |
06f739dc79 | ||
![]() |
aff07f0392 | ||
![]() |
20061058bf | ||
![]() |
318abf8f19 | ||
![]() |
7ad9f428ab | ||
![]() |
b5d6c2dc8f | ||
![]() |
59e6b6c789 | ||
![]() |
cdaa9a97ed | ||
![]() |
6f1a22172a | ||
![]() |
6f26c0257e | ||
![]() |
393b4d0324 | ||
![]() |
c78b4daa75 | ||
![]() |
2a3a236025 | ||
![]() |
d19cec8547 | ||
![]() |
6800125faa | ||
![]() |
7b6966c48f | ||
![]() |
f8c25163c6 | ||
![]() |
79aae2c355 | ||
![]() |
1adb480281 | ||
![]() |
801733ac98 | ||
![]() |
8de92ae0c0 | ||
![]() |
3aa9e5eee3 | ||
![]() |
e95262d887 | ||
![]() |
e6dac64a66 | ||
![]() |
1b23707d68 | ||
![]() |
38fbdfe0dd | ||
![]() |
17123df07f | ||
![]() |
ac663e4300 | ||
![]() |
d6931e08b0 | ||
![]() |
8d9f9126ba | ||
![]() |
6174f6902d | ||
![]() |
3a48245e47 | ||
![]() |
5e41528313 | ||
![]() |
a1c8571883 | ||
![]() |
b6e4f1c9e8 | ||
![]() |
3396edd49d | ||
![]() |
2935b19918 | ||
![]() |
fb9a3198e3 | ||
![]() |
572bff160a | ||
![]() |
49c6f2e722 | ||
![]() |
842706b39b | ||
![]() |
221888a9df | ||
![]() |
85b52116a0 | ||
![]() |
b371b0f162 | ||
![]() |
9f30ce0dfa | ||
![]() |
7ed1309e67 | ||
![]() |
fe7c7af9e9 | ||
![]() |
77986aea12 | ||
![]() |
0ed4e12eec | ||
![]() |
29ae08aca8 | ||
![]() |
fc98cb27cb | ||
![]() |
f31f67bc38 | ||
![]() |
ced65e93f2 | ||
![]() |
ccabca0e44 | ||
![]() |
ac36334e46 | ||
![]() |
8e65ad0d9b | ||
![]() |
b88536991c | ||
![]() |
609ead6929 | ||
![]() |
42f2d40782 | ||
![]() |
414f635da0 | ||
![]() |
7f883265bf | ||
![]() |
a76d144961 | ||
![]() |
89546e97a9 | ||
![]() |
266dfeb378 | ||
![]() |
a2a9c5cced | ||
![]() |
9eb3eb45d8 | ||
![]() |
7235f804cf | ||
![]() |
6ee2903e1f | ||
![]() |
94519ebab7 | ||
![]() |
bdb383971f | ||
![]() |
28ccceb4e7 | ||
![]() |
44c7effd84 | ||
![]() |
c35f4af315 | ||
![]() |
b9f4ad7dd4 | ||
![]() |
cca17670df | ||
![]() |
6b0c5cbbf3 | ||
![]() |
059870d86b | ||
![]() |
adf10a184c | ||
![]() |
8e26e8ef7f | ||
![]() |
840fbd42af | ||
![]() |
3945be2871 | ||
![]() |
eb8422e277 | ||
![]() |
60a5a87990 | ||
![]() |
7a689eb6c5 | ||
![]() |
9f47ce8f23 | ||
![]() |
09ce9835fb | ||
![]() |
06cedc7285 | ||
![]() |
95dba924e3 | ||
![]() |
abb09b91ea | ||
![]() |
793eaeaab1 | ||
![]() |
a2b28da988 | ||
![]() |
1ec9690fe1 | ||
![]() |
9ba31ad1c3 | ||
![]() |
3cc530b3f6 | ||
![]() |
c19a0d1b06 | ||
![]() |
1cd1bfe463 | ||
![]() |
fed06d16d5 | ||
![]() |
ffeaeb47f6 | ||
![]() |
7c7331a219 | ||
![]() |
9138fae240 | ||
![]() |
155c1c6e68 | ||
![]() |
1fa374c7e6 | ||
![]() |
98e95bf03e | ||
![]() |
e28ed2283c | ||
![]() |
a651d0e14d | ||
![]() |
81b2f8fd1f | ||
![]() |
125e2b011b | ||
![]() |
d1c26f8321 | ||
![]() |
66e619af96 | ||
![]() |
5a8bf71cd6 | ||
![]() |
820aa45a58 | ||
![]() |
50b712cf9c | ||
![]() |
2c8097bbb8 | ||
![]() |
f89dfd23ef | ||
![]() |
0999eb451b | ||
![]() |
152a955597 | ||
![]() |
f72cd1de3c | ||
![]() |
482a9bfe26 | ||
![]() |
a0fb57d7d3 | ||
![]() |
c6c686ec65 | ||
![]() |
48f967ad92 | ||
![]() |
ba3af4f031 | ||
![]() |
70a175bdaa | ||
![]() |
fdc0750f13 | ||
![]() |
43db7912d0 | ||
![]() |
5a4f0dc14d | ||
![]() |
c93b62817e | ||
![]() |
3a6ab9df76 | ||
![]() |
ad5989d80f | ||
![]() |
0b9eadffb6 | ||
![]() |
9963b746b1 | ||
![]() |
836ef99122 | ||
![]() |
156b444582 | ||
![]() |
aa27ab0f2c | ||
![]() |
76e0040505 | ||
![]() |
d3baf1a86a | ||
![]() |
681bf636dc | ||
![]() |
607b5e3fec | ||
![]() |
5f4192a639 | ||
![]() |
220cd05f6d | ||
![]() |
3cfc732dff | ||
![]() |
f04b37e0d3 | ||
![]() |
05274cef64 | ||
![]() |
8f5ac20310 | ||
![]() |
db65425c06 | ||
![]() |
e475460a48 | ||
![]() |
6dfe7a7045 | ||
![]() |
9b23079fe1 | ||
![]() |
c5c9d6404c | ||
![]() |
42cb871283 | ||
![]() |
39778b9c5b | ||
![]() |
8bb7c354c7 | ||
![]() |
37b76f8816 | ||
![]() |
5164413ab8 | ||
![]() |
857ce9e811 | ||
![]() |
3d6bd7ae3a | ||
![]() |
87529a9d55 | ||
![]() |
7dbf1e09a3 | ||
![]() |
991596d368 | ||
![]() |
72b319323c | ||
![]() |
2170bed0be | ||
![]() |
517185039d | ||
![]() |
8d9eecc4c2 | ||
![]() |
c94b4b75ea | ||
![]() |
2487a4740d | ||
![]() |
b0239c614a | ||
![]() |
a1b692965a | ||
![]() |
a2149c8966 | ||
![]() |
8bc980d1b7 | ||
![]() |
97864fe177 | ||
![]() |
f676190178 | ||
![]() |
0130aa39ee | ||
![]() |
cc3584d82f | ||
![]() |
5a6a662eb0 | ||
![]() |
d32dd7ec26 | ||
![]() |
ff355a56d5 | ||
![]() |
a76b5f34c8 | ||
![]() |
d7cffa69da | ||
![]() |
bb24bd4e5e | ||
![]() |
92aefe5ef7 | ||
![]() |
b8540aacc5 | ||
![]() |
2bfee732e0 | ||
![]() |
dbfccb7593 | ||
![]() |
f8ae07e536 | ||
![]() |
b48d4c5c9d | ||
![]() |
4e4ea9d552 | ||
![]() |
7ae605a78a | ||
![]() |
7604fd8eb0 | ||
![]() |
4dbd820f6a | ||
![]() |
9975795b94 | ||
![]() |
82de138569 | ||
![]() |
0c1f4984dd | ||
![]() |
91dbd725b9 | ||
![]() |
9aba69838a | ||
![]() |
dd65f959da | ||
![]() |
441a6de8e1 | ||
![]() |
cdf5cf88f7 | ||
![]() |
27599f8cc4 | ||
![]() |
37901579b8 | ||
![]() |
787fc7bfb8 | ||
![]() |
69400ecbd4 | ||
![]() |
055b1c50b2 | ||
![]() |
9823ec410e | ||
![]() |
ae8181d889 | ||
![]() |
c1a8624422 | ||
![]() |
e0d90e5d98 | ||
![]() |
510af56cc0 | ||
![]() |
c999e1c9e7 | ||
![]() |
766961b3a8 | ||
![]() |
36fe901504 | ||
![]() |
0317555d61 | ||
![]() |
91aebdfc98 | ||
![]() |
933c9d7114 | ||
![]() |
1bcc11b9a8 | ||
![]() |
3063bc51ee | ||
![]() |
615b894d0b | ||
![]() |
242a9662d9 | ||
![]() |
c4d6f498f6 | ||
![]() |
814d447d8c | ||
![]() |
d5e0064a68 | ||
![]() |
23a51fd1d8 | ||
![]() |
686397a671 | ||
![]() |
a2e3f8625a | ||
![]() |
0b8dabe195 | ||
![]() |
20accdb6b9 | ||
![]() |
22234b15b5 | ||
![]() |
33903c5df8 | ||
![]() |
35902ed071 | ||
![]() |
1add0050b6 | ||
![]() |
959c874630 | ||
![]() |
c15ac68a6f | ||
![]() |
f7e81d2ab9 | ||
![]() |
1f539bf724 | ||
![]() |
2e9a26d84a | ||
![]() |
a36890d61d | ||
![]() |
21a4a8666c | ||
![]() |
79ad3bdb32 | ||
![]() |
0bc216ed49 | ||
![]() |
f3ee0f4fe4 | ||
![]() |
cefb5e3668 | ||
![]() |
778704d51b | ||
![]() |
25933a7e39 | ||
![]() |
38b6b590f3 | ||
![]() |
b888ad5b02 | ||
![]() |
a6cc743573 | ||
![]() |
577fc55fef | ||
![]() |
4df6168e87 | ||
![]() |
14b6d25f79 | ||
![]() |
2ed6e0aa4b | ||
![]() |
dd9ccb4351 | ||
![]() |
96b7ce6259 | ||
![]() |
9d1a5ad65a | ||
![]() |
c44f35d629 | ||
![]() |
1efbc967f9 | ||
![]() |
72b1cf7eaf | ||
![]() |
2094e69b4a | ||
![]() |
628ba75262 | ||
![]() |
04d749b2d5 | ||
![]() |
408f434654 | ||
![]() |
c996f7b902 | ||
![]() |
6d1af55263 | ||
![]() |
176d14fe8a | ||
![]() |
294526883d | ||
![]() |
4b9bf2c254 | ||
![]() |
954154c2a5 | ||
![]() |
c8f33170da | ||
![]() |
0aa9877169 | ||
![]() |
f4c4ea28ed | ||
![]() |
12d406ea38 | ||
![]() |
2e1040b25b | ||
![]() |
c019703a30 | ||
![]() |
81a3be47a7 | ||
![]() |
e2c5c92e9b | ||
![]() |
791f318614 | ||
![]() |
7be58d48dc | ||
![]() |
70d9d054ce | ||
![]() |
7be7cb171c | ||
![]() |
4889daf3e2 | ||
![]() |
db3fc14da4 | ||
![]() |
c535323ea0 | ||
![]() |
74156590c5 | ||
![]() |
a2f91fac9b | ||
![]() |
ec682d687b | ||
![]() |
4cf595d901 | ||
![]() |
e5c7b3c5a4 | ||
![]() |
3024924f50 | ||
![]() |
b5721351ea | ||
![]() |
7a45644625 | ||
![]() |
03ba42ca55 | ||
![]() |
c9da39ee46 | ||
![]() |
a70cae1574 | ||
![]() |
dd5e55848d | ||
![]() |
c52635f6d1 | ||
![]() |
0d8161e605 | ||
![]() |
2192ec30b7 | ||
![]() |
7cfbf72847 | ||
![]() |
7fb5ccb5a5 | ||
![]() |
d461180dce | ||
![]() |
d5046426cc |
@@ -1,3 +1,4 @@
|
||||
assets/js/index.js
|
||||
assets/js/color.js
|
||||
assets/js/flexsearch.js
|
||||
assets/js/vendor
|
||||
node_modules
|
||||
|
36
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: "[BUG]"
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Log file**
|
||||
If applicable, add a copy of Hugo's log messages.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Environment (please complete the following information):**
|
||||
- Host OS: [e.g. macOS Ventura 13.0]
|
||||
- Node version: [e.g. node v18.10.0]
|
||||
- Hugo version: [e.g. hugo v0.109.0-47b12b83e636224e5e601813ff3e6790c191e371+extended darwin/amd64 BuildDate=2022-12-23T10:38:11Z VendorInfo=gohugoio]
|
||||
- Browser: [e.g. Google Chrome Version 108.0.5359.124 (Official Build) (arm64)]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
9
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
28
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
name: build
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v*
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||
node-version: [14.x, 16.x, 18.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- run: npm ci
|
||||
- run: npm run build
|
2
.github/workflows/lint.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x, 14.x, 16.x]
|
||||
node-version: [14.x, 16.x, 18.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
|
35
.github/workflows/npm-publish.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
|
||||
|
||||
name: Node.js Package
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
branches: [ main ]
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
- run: npm ci
|
||||
- run: npm test
|
||||
|
||||
publish-npm:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
registry-url: https://registry.npmjs.org/
|
||||
- run: npm ci
|
||||
- run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
@@ -5,7 +5,9 @@
|
||||
"MD024": false,
|
||||
"MD026": false,
|
||||
"MD033": false,
|
||||
"MD034": false
|
||||
"MD034": false,
|
||||
"MD051": false,
|
||||
"MD053": false
|
||||
},
|
||||
"ignores": ["node_modules", "CHANGELOG.md"]
|
||||
}
|
||||
|
@@ -1,4 +1,7 @@
|
||||
assets/scss/common/_variables.scss
|
||||
assets/scss/components/_syntax-dark.scss
|
||||
assets/scss/components/_syntax-light.scss
|
||||
assets/scss/hotfix
|
||||
assets/scss/vendor
|
||||
assets/scss/app.scss
|
||||
node_modules
|
||||
|
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Mark Dumay
|
||||
Copyright (c) 2023 Mark Dumay
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
127
README.md
@@ -2,29 +2,32 @@
|
||||
|
||||
<!-- Tagline -->
|
||||
<p align="center">
|
||||
<b>A clean blog theme for your Hugo site based on Bootstrap 5</b>
|
||||
<b>A clean documentation and blog theme for your Hugo site based on Bootstrap 5</b>
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<!-- Badges -->
|
||||
<p align="center">
|
||||
<a href="https://app.netlify.com/sites/hinode-demo/deploys" alt="Netlify Status">
|
||||
<img src="https://img.shields.io/netlify/151e88a3-d161-4045-856d-778fea43fc2f" />
|
||||
<a href="https://gohugo.io" alt="Hugo website">
|
||||
<img src="https://img.shields.io/badge/generator-hugo-brightgreen" />
|
||||
</a>
|
||||
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status">
|
||||
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" />
|
||||
</a>
|
||||
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
|
||||
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/commits/main" alt="Last commit">
|
||||
<img src="https://img.shields.io/github/last-commit/markdumay/hugo-theme-hinode.svg" />
|
||||
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit">
|
||||
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/issues" alt="Issues">
|
||||
<img src="https://img.shields.io/github/issues/markdumay/hugo-theme-hinode.svg" />
|
||||
<a href="https://github.com/gethinode/hinode/issues" alt="Issues">
|
||||
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/pulls" alt="Pulls">
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/markdumay/hugo-theme-hinode.svg" />
|
||||
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls">
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/blob/main/LICENSE" alt="License">
|
||||
<img src="https://img.shields.io/github/license/markdumay/hugo-theme-hinode" />
|
||||
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License">
|
||||
<img src="https://img.shields.io/github/license/gethinode/hinode" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -41,26 +44,25 @@
|
||||
|
||||
## About
|
||||
|
||||

|
||||

|
||||
|
||||
- [Online Demo][demo]
|
||||
- [PageSpeed Insights][pagespeed]
|
||||
- [Mozilla Observatory][observatory]
|
||||
|
||||
Hinode is a clean blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme uses [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
||||
Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source static site generator. Based on the [Bootstrap 5][bootstrap] framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch][flexsearch] to enable full text search across your site. Finally, the theme uses [Node Package Manager][npm] to automate the build process and to keep track of dependencies.
|
||||
|
||||
Additional features include:
|
||||
|
||||
- Comments
|
||||
- Social links
|
||||
- Blog pagination
|
||||
- Code highlighting
|
||||
- Color customization
|
||||
- i18n support
|
||||
- Support for multiple languages
|
||||
- Reusable Bootstrap components through configurable shortcodes and partials
|
||||
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
|
||||
- Integrated sidebar navigation for content-heavy sections, such as documentation pages
|
||||
- Reponsive image handling for multiple screen sizes and resolutions
|
||||
- Optimized search results, scoring 100 points for SEO on [PageSpeed Insights][pagespeed]
|
||||
- Secure by default, scoring A+ on [Mozilla Observatory test][observatory]
|
||||
|
||||
<!-- TODO: add tutorial deep-link
|
||||
Detailed background information is available on the author's [personal blog][blog].
|
||||
-->
|
||||
Detailed information about Hinode is available on the [official website][website].
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -70,63 +72,43 @@ Hinode requires Git, Node.js and npm for local development and testing. Download
|
||||
|
||||
Start a new Hinode project in three steps:
|
||||
|
||||
### 1. Create a new site
|
||||
1. Create a new site
|
||||
|
||||
<!-- Hinode is available as a child theme, and a starter theme:
|
||||
Hinode is available as a [child theme][repository_child], and a [main theme][repository]. The child theme uses [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the child theme:
|
||||
|
||||
- Use the Hinode child theme, if you do **not** plan to customize a lot, and/or need future Hinode updates.
|
||||
- Use the Hinode starter theme, if you plan to customize a lot, and/or do **not** need future Hinode updates.
|
||||
```bash
|
||||
git clone https://github.com/gethinode/child.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
Not quite sure? Use the Hinode child theme.
|
||||
Use the main theme if you intend to customize the base code:
|
||||
|
||||
#### Hinode child theme
|
||||
```bash
|
||||
git clone https://github.com/gethinode/hinode.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
```bash
|
||||
git clone https://github.com/markdumay/hugo-theme-hinode-child.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
1. Install dependencies
|
||||
|
||||
#### Hinode starter theme -->
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
```bash
|
||||
git clone https://github.com/markdumay/hugo-theme-hinode.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
1. Start development server
|
||||
|
||||
### 2. Install dependencies
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 3. Start development server
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The main site configuration is available in `./config/_default`. Some remarks:
|
||||
|
||||
- Menu items - `menus/menus.en.toml` contains language-specific items for the navigation bar and social media links for the home page's footer.
|
||||
- Content - Ensure the `mainSections` in `config.toml` is synchronized with the `content` folder, default values are `["blog", "projects"]`.
|
||||
- Theme color - Update `themeColor` and `themeOpacity` within the `[style]` section of `params.toml` to update the site's primary color and opacity. You can use the [WCAG Color Contrast Checker][contrast_checker] to validate the contrast ratio of your color to improve accessibility.
|
||||
- Comments - Comments are powered by [utterances][utterances], a lightweight comments widget built on GitHub issues. Update the `repo` of the `[comments]` section of `params.toml`.
|
||||
- Security headings - The local development server uses the header configuration as provided by `server.toml`. Similar settings are provided in the `netlify.toml` file provided in the repository's root when deploying to [Netlify][netlify].
|
||||
See the [official documentation][getstarted] on how to configure your site.
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Clone the repository and create a new branch
|
||||
|
||||
```console
|
||||
git checkout https://github.com/markdumay/hugo-theme-hinode.git -b name_for_new_branch
|
||||
```
|
||||
|
||||
2. Make and test the changes
|
||||
3. Submit a Pull Request with a comprehensive description of the changes
|
||||
See the [official documentation][contribute] on how to contribute to the open-source development of Hinode.
|
||||
|
||||
## Credits
|
||||
|
||||
The Hinode theme is inspired by the following themes:
|
||||
Hinode is inspired by the following themes:
|
||||
|
||||
- [Blist][blist] - a clean and fast blog theme for your Hugo site using Tailwind CSS.
|
||||
- [Doks][doks] - a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize.
|
||||
@@ -137,13 +119,12 @@ The Hinode theme is inspired by the following themes:
|
||||
|
||||
## License
|
||||
|
||||
The `hugo-theme-hinode` codebase is released under the [MIT license][license]. The documentation (including the "README") is licensed under the Creative Commons ([CC BY-NC 4.0)][cc-by-nc-4.0] license.
|
||||
The `hinode` and `child` codebase is released under the [MIT license][license]. The documentation (including the "README" and `docs` codebase) is licensed under the Creative Commons ([CC BY-NC 4.0)][cc-by-nc-4.0] license.
|
||||
|
||||
<!-- MARKDOWN PUBLIC LINKS -->
|
||||
[blist]: https://github.com/apvarun/blist-hugo-theme
|
||||
[bootstrap]: https://getbootstrap.com
|
||||
[cc-by-nc-4.0]: https://creativecommons.org/licenses/by-nc/4.0/
|
||||
[contrast_checker]: https://accessibleweb.com/color-contrast-checker/
|
||||
[doks]: https://github.com/h-enk/doks
|
||||
[flexsearch]: https://github.com/nextapps-de/flexsearch
|
||||
[git_download]: https://git-scm.com
|
||||
@@ -151,15 +132,15 @@ The `hugo-theme-hinode` codebase is released under the [MIT license][license]. T
|
||||
[netlify]: https://www.netlify.com
|
||||
[nodejs]: https://nodejs.org
|
||||
[npm]: https://www.npmjs.com
|
||||
[observatory]: https://observatory.mozilla.org/analyze/hinode-demo.markdumay.org
|
||||
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fhinode-demo.markdumay.org%2F
|
||||
[observatory]: https://observatory.mozilla.org/analyze/demo.gethinode.com
|
||||
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F
|
||||
[utterances]: https://utteranc.es
|
||||
|
||||
<!-- MARKDOWN MAINTAINED LINKS -->
|
||||
<!-- TODO: add blog link
|
||||
[blog]: https://markdumay.com
|
||||
-->
|
||||
[blog]: https://github.com/markdumay
|
||||
[demo]: https://hinode-demo.markdumay.org/
|
||||
[license]: https://github.com/markdumay/hugo-theme-hinode/blob/main/LICENSE
|
||||
[repository]: https://github.com/markdumay/hugo-theme-hinode.git
|
||||
[contribute]: https://gethinode.com/contribute
|
||||
[getstarted]: https://gethinode.com/docs
|
||||
[demo]: https://demo.gethinode.com/
|
||||
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
|
||||
[repository]: https://github.com/gethinode/hinode.git
|
||||
[repository_child]: https://github.com/gethinode/child.git
|
||||
[website]: https://gethinode.com/
|
||||
|
3
assets/icons/accordion-button-active-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_active_color_dark }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 269 B |
3
assets/icons/accordion-button-active-icon.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_active_color }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 264 B |
3
assets/icons/accordion-button-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_color_dark }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 262 B |
3
assets/icons/accordion-button-icon.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_color }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 257 B |
3
assets/icons/btn-close-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .btn_close_color }}'>
|
||||
<path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 305 B |
3
assets/icons/btn-toggle-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 320 512' fill='{{ .btn_toggle_color_dark }}'>
|
||||
<path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 314 B |
3
assets/icons/btn-toggle.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 320 512' fill='{{ .btn_toggle_color }}'>
|
||||
<path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 309 B |
3
assets/icons/carousel-control-next-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }}'>
|
||||
<path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 239 B |
3
assets/icons/carousel-control-prev-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }}'>
|
||||
<path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 238 B |
3
assets/icons/form-check-input-checked-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
||||
<path fill='none' stroke='{{ .form_check_input_checked_color }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
||||
</svg>
|
After Width: | Height: | Size: 220 B |
3
assets/icons/form-check-input-indeterminate-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
||||
<path fill='none' stroke='{{ .form_check_input_indeterminate_color }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/>
|
||||
</svg>
|
After Width: | Height: | Size: 220 B |
3
assets/icons/form-check-radio-checked-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='2' fill='{{ .form_check_input_checked_color }}'/>
|
||||
</svg>
|
After Width: | Height: | Size: 132 B |
3
assets/icons/form-feedback-icon-invalid.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='{{ .form_feedback_icon_invalid_color }}'>
|
||||
<circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='{{ .form_feedback_icon_invalid_color }}' stroke='none'/>
|
||||
</svg>
|
After Width: | Height: | Size: 334 B |
3
assets/icons/form-feedback-icon-valid.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'>
|
||||
<path fill='{{ .form_feedback_icon_valid_color }}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 229 B |
3
assets/icons/form-select-indicator-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
|
||||
<path fill='none' stroke='{{ .form_select_indicator_color_dark }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/>
|
||||
</svg>
|
After Width: | Height: | Size: 221 B |
3
assets/icons/form-select-indicator.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
|
||||
<path fill='none' stroke='{{ .form_select_indicator_color }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/>
|
||||
</svg>
|
After Width: | Height: | Size: 216 B |
3
assets/icons/form-switch-bg-image-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='3' fill='{{ .form_switch_color_dark }}' />
|
||||
</svg>
|
After Width: | Height: | Size: 125 B |
3
assets/icons/form-switch-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='3' fill='{{ .form_switch_color }}' />
|
||||
</svg>
|
After Width: | Height: | Size: 120 B |
3
assets/icons/form-switch-checked-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='3' fill='{{ .form_switch_checked_color }}'/>
|
||||
</svg>
|
After Width: | Height: | Size: 127 B |
3
assets/icons/form-switch-focus-bg-image.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='3' fill='{{ .form_switch_focus_color }}'/>
|
||||
</svg>
|
After Width: | Height: | Size: 125 B |
3
assets/icons/navbar-dark-toggler-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'>
|
||||
<path stroke="{{ .navbar_dark_color }}" stroke-opacity="0.55" stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/>
|
||||
</svg>
|
After Width: | Height: | Size: 226 B |
3
assets/icons/navbar-light-toggler-icon-bg.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'>
|
||||
<path stroke='{{ .navbar_light_icon_color }}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/>
|
||||
</svg>
|
After Width: | Height: | Size: 210 B |
BIN
assets/img/azblob-step1a.png
Normal file
After Width: | Height: | Size: 480 KiB |
BIN
assets/img/azblob-step1b.png
Normal file
After Width: | Height: | Size: 396 KiB |
BIN
assets/img/azblob-step1c.png
Normal file
After Width: | Height: | Size: 442 KiB |
BIN
assets/img/azblob-step2.png
Normal file
After Width: | Height: | Size: 476 KiB |
BIN
assets/img/azblob-step3.png
Normal file
After Width: | Height: | Size: 420 KiB |
BIN
assets/img/boots.jpg
Normal file
After Width: | Height: | Size: 4.8 MiB |
BIN
assets/img/netlify-step1.png
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
assets/img/netlify-step2.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
assets/img/netlify-step3.png
Normal file
After Width: | Height: | Size: 229 KiB |
BIN
assets/img/netlify-step4.png
Normal file
After Width: | Height: | Size: 648 KiB |
BIN
assets/img/netlify-step5.png
Normal file
After Width: | Height: | Size: 325 KiB |
BIN
assets/img/netlify-step6.png
Normal file
After Width: | Height: | Size: 362 KiB |
BIN
assets/img/netlify-step7.png
Normal file
After Width: | Height: | Size: 290 KiB |
BIN
assets/img/notepad.jpg
Normal file
After Width: | Height: | Size: 173 KiB |
BIN
assets/img/paper.jpg
Normal file
After Width: | Height: | Size: 930 KiB |
BIN
assets/img/sketch.jpg
Normal file
After Width: | Height: | Size: 646 KiB |
1
assets/js/bootstrap.js
vendored
@@ -1 +0,0 @@
|
||||
import 'bootstrap/dist/js/bootstrap.bundle.min.js'
|
38
assets/js/clipboard.js
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Source:
|
||||
- https://simplernerd.com/hugo-add-copy-to-clipboard-button/
|
||||
*/
|
||||
|
||||
const svgCopy =
|
||||
'<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"><path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/><path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/></svg>'
|
||||
const svgCheck =
|
||||
'<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"><path fill-rule="evenodd" fill="rgb(63, 185, 80)" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>'
|
||||
|
||||
const addCopyButtons = (clipboard) => {
|
||||
// 1. Look for pre > code elements in the DOM
|
||||
document.querySelectorAll('pre > code').forEach((codeBlock) => {
|
||||
// 2. Create a button that will trigger a copy operation
|
||||
const button = document.createElement('button')
|
||||
button.className = 'clipboard-button'
|
||||
button.type = 'button'
|
||||
button.innerHTML = svgCopy
|
||||
button.addEventListener('click', () => {
|
||||
clipboard.writeText(codeBlock.innerText).then(
|
||||
() => {
|
||||
button.blur()
|
||||
button.innerHTML = svgCheck
|
||||
setTimeout(() => (button.innerHTML = svgCopy), 2000)
|
||||
},
|
||||
// eslint-disable-next-line n/handle-callback-err
|
||||
(error) => (button.innerHTML = 'Error')
|
||||
)
|
||||
})
|
||||
// 3. Append the button directly before the pre tag
|
||||
const pre = codeBlock.parentNode
|
||||
pre.parentNode.insertBefore(button, pre)
|
||||
})
|
||||
}
|
||||
|
||||
if (navigator && navigator.clipboard) {
|
||||
addCopyButtons(navigator.clipboard)
|
||||
}
|
67
assets/js/color.js
Normal file
@@ -0,0 +1,67 @@
|
||||
/*!
|
||||
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
||||
*/
|
||||
|
||||
{{ if site.Params.main.enableDarkMode }}
|
||||
|
||||
(() => {
|
||||
'use strict'
|
||||
|
||||
const storedTheme = localStorage.getItem('theme')
|
||||
|
||||
const getPreferredTheme = () => {
|
||||
if (storedTheme) {
|
||||
return storedTheme
|
||||
}
|
||||
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||
}
|
||||
|
||||
const setTheme = function (theme) {
|
||||
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.documentElement.setAttribute('data-bs-theme', 'dark')
|
||||
} else {
|
||||
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||
}
|
||||
}
|
||||
|
||||
setTheme(getPreferredTheme())
|
||||
|
||||
const showActiveTheme = theme => {
|
||||
const activeSelector = document.querySelector('.theme-icon-active')
|
||||
const activeButton = document.querySelector(`[data-bs-theme-value="${theme}"]`)
|
||||
const activeIcon = activeButton.querySelector('i')
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||||
element.classList.remove('active')
|
||||
})
|
||||
|
||||
activeSelector.className = activeIcon.className
|
||||
activeSelector.className = activeSelector.className.replace('theme-icon', 'theme-icon-active')
|
||||
activeButton.classList.add('active')
|
||||
}
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||
if (storedTheme !== 'light' || storedTheme !== 'dark') {
|
||||
setTheme(getPreferredTheme())
|
||||
}
|
||||
})
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
showActiveTheme(getPreferredTheme())
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]')
|
||||
.forEach(toggle => {
|
||||
toggle.addEventListener('click', () => {
|
||||
const theme = toggle.getAttribute('data-bs-theme-value')
|
||||
localStorage.setItem('theme', theme)
|
||||
setTheme(theme)
|
||||
showActiveTheme(theme)
|
||||
})
|
||||
})
|
||||
})
|
||||
})()
|
||||
|
||||
{{ end }}
|
161
assets/js/flexsearch.js
Normal file
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
Source:
|
||||
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
||||
*/
|
||||
|
||||
var suggestions = document.getElementById('suggestions');
|
||||
var search = document.getElementById('search');
|
||||
|
||||
if (search !== null) {
|
||||
document.addEventListener('keydown', inputFocus);
|
||||
}
|
||||
|
||||
function inputFocus(e) {
|
||||
if (e.ctrlKey && e.key === '/' ) {
|
||||
e.preventDefault();
|
||||
search.focus();
|
||||
}
|
||||
if (e.key === 'Escape' ) {
|
||||
search.blur();
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', function(event) {
|
||||
|
||||
var isClickInsideElement = suggestions.contains(event.target);
|
||||
|
||||
if (!isClickInsideElement) {
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||
*/
|
||||
|
||||
document.addEventListener('keydown',suggestionFocus);
|
||||
|
||||
function suggestionFocus(e) {
|
||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||
if (suggestionsHidden) return;
|
||||
|
||||
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
||||
if (focusableSuggestions.length === 0) return;
|
||||
|
||||
const index = focusableSuggestions.indexOf(document.activeElement);
|
||||
|
||||
if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
const nextIndex = index > 0 ? index - 1 : 0;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
else if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
var index = new FlexSearch.Document({
|
||||
tokenize: "forward",
|
||||
cache: 100,
|
||||
document: {
|
||||
id: "id",
|
||||
tag: "tag",
|
||||
store: ["href", "title", "description"],
|
||||
index: ["title", "description", "content"]
|
||||
}
|
||||
});
|
||||
|
||||
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
|
||||
// Note: uses .Site.AllPages as .Site.RegularPages only returns content for the current language
|
||||
// pages without a title (such as browserconfig.xml) are excluded
|
||||
{{ $list := where (where .Site.AllPages "Kind" "in" "page") "Title" "!=" "" }}
|
||||
{{ $len := (len $list) -}}
|
||||
|
||||
index.add(
|
||||
{{ range $index, $element := $list -}}
|
||||
{
|
||||
id: {{ $index }},
|
||||
tag: "{{ .Lang }}",
|
||||
href: "{{ .RelPermalink }}",
|
||||
title: {{ .Title | jsonify }},
|
||||
{{ with .Description -}}
|
||||
description: {{ . | jsonify }},
|
||||
{{ else -}}
|
||||
description: {{ .Summary | plainify | jsonify }},
|
||||
{{ end -}}
|
||||
content: {{ .Plain | jsonify }}
|
||||
})
|
||||
{{ if ne (add $index 1) $len -}}
|
||||
.add(
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
;
|
||||
|
||||
search.addEventListener('input', show_results, true);
|
||||
|
||||
function show_results(){
|
||||
const maxResult = 5;
|
||||
var searchQuery = this.value;
|
||||
// filter the results for the currently tagged language
|
||||
const lang = document.documentElement.lang;
|
||||
var results = index.search(searchQuery, { index: ['title', 'description', 'content'], limit: maxResult, tag: lang, enrich: true });
|
||||
|
||||
// flatten results since index.search() returns results for each indexed field
|
||||
const flatResults = new Map(); // keyed by href to dedupe results
|
||||
for (const result of results.flatMap(r => r.result)) {
|
||||
if (flatResults.has(result.doc.href)) continue;
|
||||
flatResults.set(result.doc.href, result.doc);
|
||||
}
|
||||
|
||||
suggestions.innerHTML = "";
|
||||
suggestions.classList.remove('d-none');
|
||||
|
||||
// inform user that no results were found
|
||||
if (flatResults.size === 0 && searchQuery) {
|
||||
const noResultsMessage = document.createElement('div')
|
||||
noResultsMessage.innerHTML = `{{ T "ui_no_results" }} "<strong>${searchQuery}</strong>"`
|
||||
noResultsMessage.classList.add("suggestion__no-results");
|
||||
suggestions.appendChild(noResultsMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
// construct a list of suggestions
|
||||
for(const [href, doc] of flatResults) {
|
||||
const entry = document.createElement('div');
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
const a = document.createElement('a');
|
||||
a.href = href;
|
||||
entry.appendChild(a);
|
||||
|
||||
const title = document.createElement('span');
|
||||
title.classList.add('text-start');
|
||||
title.textContent = doc.title;
|
||||
title.classList.add("suggestion__title");
|
||||
a.appendChild(title);
|
||||
|
||||
const description = document.createElement('span');
|
||||
description.textContent = doc.description;
|
||||
description.classList.add("suggestion__description");
|
||||
a.appendChild(description);
|
||||
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
if(suggestions.childElementCount == maxResult) break;
|
||||
}
|
||||
}
|
||||
}());
|
||||
|
@@ -1,157 +0,0 @@
|
||||
/*
|
||||
Source:
|
||||
- https://raw.githubusercontent.com/h-enk/doks/master/assets/js/index.js
|
||||
*/
|
||||
|
||||
var suggestions = document.getElementById('suggestions');
|
||||
var search = document.getElementById('search');
|
||||
|
||||
if (search !== null) {
|
||||
document.addEventListener('keydown', inputFocus);
|
||||
}
|
||||
|
||||
function inputFocus(e) {
|
||||
if (e.ctrlKey && e.key === '/' ) {
|
||||
e.preventDefault();
|
||||
search.focus();
|
||||
}
|
||||
if (e.key === 'Escape' ) {
|
||||
search.blur();
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', function(event) {
|
||||
|
||||
var isClickInsideElement = suggestions.contains(event.target);
|
||||
|
||||
if (!isClickInsideElement) {
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||
*/
|
||||
|
||||
document.addEventListener('keydown',suggestionFocus);
|
||||
|
||||
function suggestionFocus(e) {
|
||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||
if (suggestionsHidden) return;
|
||||
|
||||
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
||||
if (focusableSuggestions.length === 0) return;
|
||||
|
||||
const index = focusableSuggestions.indexOf(document.activeElement);
|
||||
|
||||
if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
const nextIndex = index > 0 ? index - 1 : 0;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
else if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
var index = new FlexSearch.Document({
|
||||
tokenize: "forward",
|
||||
cache: 100,
|
||||
document: {
|
||||
id: 'id',
|
||||
store: [
|
||||
"href", "title", "description"
|
||||
],
|
||||
index: ["title", "description", "content"]
|
||||
}
|
||||
});
|
||||
|
||||
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
|
||||
|
||||
{{ $list := (site.RegularPages) -}}
|
||||
{{ $len := (len $list) -}}
|
||||
|
||||
index.add(
|
||||
{{ range $index, $element := $list -}}
|
||||
{
|
||||
id: {{ $index }},
|
||||
href: "{{ .RelPermalink }}",
|
||||
title: {{ .Title | jsonify }},
|
||||
{{ with .Description -}}
|
||||
description: {{ . | jsonify }},
|
||||
{{ else -}}
|
||||
description: {{ .Summary | plainify | jsonify }},
|
||||
{{ end -}}
|
||||
content: {{ .Plain | jsonify }}
|
||||
})
|
||||
{{ if ne (add $index 1) $len -}}
|
||||
.add(
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
;
|
||||
|
||||
search.addEventListener('input', show_results, true);
|
||||
|
||||
function show_results(){
|
||||
const maxResult = 5;
|
||||
var searchQuery = this.value;
|
||||
var results = index.search(searchQuery, {limit: maxResult, enrich: true});
|
||||
|
||||
// flatten results since index.search() returns results for each indexed field
|
||||
const flatResults = new Map(); // keyed by href to dedupe results
|
||||
for (const result of results.flatMap(r => r.result)) {
|
||||
if (flatResults.has(result.doc.href)) continue;
|
||||
flatResults.set(result.doc.href, result.doc);
|
||||
}
|
||||
|
||||
suggestions.innerHTML = "";
|
||||
suggestions.classList.remove('d-none');
|
||||
|
||||
// inform user that no results were found
|
||||
if (flatResults.size === 0 && searchQuery) {
|
||||
const noResultsMessage = document.createElement('div')
|
||||
noResultsMessage.innerHTML = `{{ T "ui_no_results" }} "<strong>${searchQuery}</strong>"`
|
||||
noResultsMessage.classList.add("suggestion__no-results");
|
||||
suggestions.appendChild(noResultsMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
// construct a list of suggestions
|
||||
for(const [href, doc] of flatResults) {
|
||||
const entry = document.createElement('div');
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
const a = document.createElement('a');
|
||||
a.href = href;
|
||||
entry.appendChild(a);
|
||||
|
||||
const title = document.createElement('span');
|
||||
title.textContent = doc.title;
|
||||
title.classList.add("suggestion__title");
|
||||
a.appendChild(title);
|
||||
|
||||
const description = document.createElement('span');
|
||||
description.textContent = doc.description;
|
||||
description.classList.add("suggestion__description");
|
||||
a.appendChild(description);
|
||||
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
if(suggestions.childElementCount == maxResult) break;
|
||||
}
|
||||
}
|
||||
}());
|
3
assets/js/popover.js
Normal file
@@ -0,0 +1,3 @@
|
||||
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
|
||||
// eslint-disable-next-line no-undef, no-unused-vars
|
||||
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
|
10
assets/js/toast.js
Normal file
@@ -0,0 +1,10 @@
|
||||
// Bootstrap toast example: https://getbootstrap.com/docs/5.2/components/toasts/
|
||||
const toastTrigger = document.getElementById('toastButton')
|
||||
const toastLiveExample = document.getElementById('toastMessage')
|
||||
if (toastTrigger) {
|
||||
toastTrigger.addEventListener('click', () => {
|
||||
// eslint-disable-next-line no-undef
|
||||
const toast = new bootstrap.Toast(toastLiveExample)
|
||||
toast.show()
|
||||
})
|
||||
}
|
4
assets/js/tooltip.js
Normal file
@@ -0,0 +1,4 @@
|
||||
// Bootstrap tooltip example: https://getbootstrap.com/docs/5.2/components/tooltips/
|
||||
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
|
||||
// eslint-disable-next-line no-unused-vars, no-undef
|
||||
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
|
@@ -1,19 +1,36 @@
|
||||
// Define template variables
|
||||
$themeColor: {{ site.Params.style.themeColor | default "#007bff" }};
|
||||
|
||||
// Import Bootstrap functions
|
||||
@import "bootstrap/scss/functions";
|
||||
// Define template variables
|
||||
// TODO: optimize, see https://discourse.gohugo.io/t/initialize-sass-variables-from-hugo-templates/42053
|
||||
// requires installation of dart-sass, no cross-platform installation available yet
|
||||
$themeFont: {{ site.Params.style.themeFont | default "Inter" }};
|
||||
$primary: {{ site.Params.style.primary | default "#007bff" }};
|
||||
$secondary: {{ site.Params.style.secondary | default "#6c757d" }};
|
||||
$success: {{ site.Params.style.success | default "#198754" }};
|
||||
$info: {{ site.Params.style.info | default "#0dcaf0" }};
|
||||
$warning: {{ site.Params.style.warning | default "#ffc107" }};
|
||||
$danger: {{ site.Params.style.danger | default "#dc3545" }};
|
||||
$light: {{ site.Params.style.light | default "#f8f9fa" }};
|
||||
$dark: {{ site.Params.style.dark | default "#212529" }};
|
||||
$navbar-offset: {{ if site.Params.navigation.fixed }}{{ site.Params.navigation.offset | default "4em" }}{{ else }}0em{{ end }};
|
||||
$enable-dark-mode: {{ site.Params.main.enableDarkMode | default true }} !default;
|
||||
|
||||
// Include default variable overrides
|
||||
@import "common/variables.scss";
|
||||
@import "common/icons.scss";
|
||||
|
||||
// Import Bootstrap banner and functions
|
||||
@import "bootstrap/scss/mixins/banner";
|
||||
@include bsBanner("");
|
||||
@import "bootstrap/scss/functions";
|
||||
|
||||
// Import Bootstrap configuration
|
||||
@import "bootstrap/scss/variables";
|
||||
@import "hotfix/variables";
|
||||
@import "hotfix/variables-dark.scss";
|
||||
@import "hotfix/maps";
|
||||
@import "bootstrap/scss/mixins";
|
||||
@import "bootstrap/scss/utilities";
|
||||
|
||||
// Import Bootstrap layout & components
|
||||
@import "bootstrap/scss/root";
|
||||
@import "hotfix/root";
|
||||
@import "bootstrap/scss/reboot";
|
||||
@import "bootstrap/scss/type";
|
||||
@import "bootstrap/scss/images";
|
||||
@@ -52,19 +69,35 @@ $themeColor: {{ site.Params.style.themeColor | default "#007bff" }};
|
||||
@import "bootstrap/scss/utilities/api";
|
||||
|
||||
// Import Font Awesome
|
||||
// scss-docs-start awesome
|
||||
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
||||
@import "@fortawesome/fontawesome-free/scss/regular";
|
||||
@import "@fortawesome/fontawesome-free/scss/solid";
|
||||
@import "@fortawesome/fontawesome-free/scss/brands";
|
||||
// scss-docs-end awesome
|
||||
|
||||
// Import theme styles
|
||||
// Import Hinode theme styles
|
||||
@import "components/blockquote.scss";
|
||||
@import "components/buttons.scss";
|
||||
@import "components/card.scss";
|
||||
@import "components/carousel.scss";
|
||||
@import "components/clipboard.scss";
|
||||
@import "components/command.scss";
|
||||
@import "components/comments.scss";
|
||||
@import "components/navbar.scss";
|
||||
@import "components/img.scss";
|
||||
@import "components/popover.scss";
|
||||
@import "components/search.scss";
|
||||
@import "components/sidebar.scss";
|
||||
@import "components/syntax.scss";
|
||||
@import "components/toc.scss";
|
||||
@import "components/vimeo.scss";
|
||||
@import "common/styles.scss";
|
||||
@import "layouts/reboot.scss";
|
||||
@import "layouts/type.scss";
|
||||
@import "common/export.scss";
|
||||
@import "helpers/colored-links.scss";
|
||||
@import "helpers/hidden.scss";
|
||||
|
||||
// Import theme placeholder
|
||||
@import "theme.scss";
|
27
assets/scss/common/_export.scss
Normal file
@@ -0,0 +1,27 @@
|
||||
// stylelint-disable selector-pseudo-class-no-unknown
|
||||
|
||||
// scss-docs-start export
|
||||
:hinode-theme {
|
||||
--accordion-icon-active-color: #{$accordion-icon-active-color};
|
||||
--accordion-icon-active-color-dark: #{$gray-300};
|
||||
--accordion-icon-color: #{$accordion-icon-color};
|
||||
--accordion-icon-color-dark: #{$gray-600};
|
||||
--btn-close-color: #{$btn-close-color};
|
||||
--btn-toggle-color: #{$btn-toggle-color};
|
||||
--btn-toggle-color-dark: #{$gray-600};
|
||||
--carousel-control-color: #{$carousel-control-color};
|
||||
--form-check-input-checked-color: #{$form-check-input-checked-color};
|
||||
--form-check-input-indeterminate-color: #{$form-check-input-indeterminate-color};
|
||||
--form-feedback-icon-invalid-color: #{$form-feedback-icon-invalid-color};
|
||||
--form-feedback-icon-valid-color: #{$form-feedback-icon-valid-color};
|
||||
--form-select-indicator-color: #{$form-select-indicator-color};
|
||||
--form-select-indicator-color-dark: #{$form-select-indicator-color-dark};
|
||||
--form-switch-checked-color: #{$form-switch-checked-color};
|
||||
--form-switch-color: #{$form-switch-color};
|
||||
--form-switch-color-dark: #{$form-switch-color-dark};
|
||||
--form-switch-focus-color: #{$form-switch-focus-color};
|
||||
--navbar-dark-color: #{$navbar-dark-color};
|
||||
--navbar-light-icon-color: rgba($body-color, 0.75); // TODO: See https://github.com/twbs/bootstrap/pull/37720
|
||||
}
|
||||
|
||||
// scss-docs-end export
|
25
assets/scss/common/_icons.scss
Normal file
@@ -0,0 +1,25 @@
|
||||
// scss-docs-start icons
|
||||
$form-check-input-checked-bg-image: url("icons/form-check-input-checked-bg-image.svg") !default;
|
||||
$form-check-radio-checked-bg-image: url("icons/form-check-radio-checked-bg-image.svg") !default;
|
||||
$form-check-input-indeterminate-bg-image: url("icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||
$form-switch-bg-image: url("icons/form-switch-bg-image.svg") !default;
|
||||
$form-switch-bg-image-dark: url("icons/form-switch-bg-image-dark.svg") !default;
|
||||
$form-switch-focus-bg-image: url("icons/form-switch-focus-bg-image.svg") !default;
|
||||
$form-switch-checked-bg-image: url("icons/form-switch-checked-bg-image.svg") !default;
|
||||
$form-select-indicator: url("icons/form-select-indicator.svg") !default;
|
||||
$form-select-indicator-dark: url("icons/form-select-indicator-dark.svg") !default;
|
||||
$form-feedback-icon-valid: url("icons/form-feedback-icon-valid.svg") !default;
|
||||
$form-feedback-icon-invalid: url("icons/form-feedback-icon-invalid.svg") !default;
|
||||
$navbar-light-toggler-icon-bg: url("icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||
$navbar-dark-toggler-icon-bg: url("icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||
$accordion-button-icon: url("icons/accordion-button-icon.svg") !default;
|
||||
$accordion-button-icon-dark: url("icons/accordion-button-icon-dark.svg") !default;
|
||||
$accordion-button-active-icon: url("icons/accordion-button-active-icon.svg") !default;
|
||||
$accordion-button-active-icon-dark: url("icons/accordion-button-active-icon-dark.svg") !default;
|
||||
$carousel-control-prev-icon-bg: url("icons/carousel-control-prev-icon-bg.svg") !default;
|
||||
$carousel-control-next-icon-bg: url("icons/carousel-control-next-icon-bg.svg") !default;
|
||||
$btn-close-bg: url("icons/btn-close-bg.svg") !default;
|
||||
$btn-toggle: url("icons/btn-toggle.svg") !default;
|
||||
$btn-toggle-dark: url("icons/btn-toggle-dark.svg") !default;
|
||||
|
||||
// scss-docs-end icons
|
@@ -15,44 +15,6 @@ a:active {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
//
|
||||
// Table of contents sidebar
|
||||
//
|
||||
.toc {
|
||||
grid-area: toc;
|
||||
top: 5rem;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
height: calc(100vh - 7rem);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.toc nav {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.toc nav ul {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.toc nav ul ul {
|
||||
padding-left: 1rem;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
|
||||
.toc nav li {
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.toc nav a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.toc nav a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.toc nav a code {
|
||||
font: inherit;
|
||||
.tickmark li::marker {
|
||||
content: "✓ ";
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
// Bootstrap variables overrides for theme
|
||||
$primary: $themeColor;
|
||||
$enable-negative-margins: true;
|
||||
|
||||
// Font awesome variables overrides for theme
|
||||
$fa-font-path: "../fonts";
|
||||
@@ -7,10 +7,23 @@ $fa-font-path: "../fonts";
|
||||
// Remove the border from the focused navigation toggler
|
||||
$navbar-toggler-focus-width: 0 !default;
|
||||
|
||||
$font-family-sans-serif: "Inter", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
// scss-docs-start font
|
||||
$font-family-sans-serif: $themeFont, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
$headings-font-weight: 600 !default;
|
||||
$font-weight-lighter: lighter !default;
|
||||
$font-weight-light: 200 !default;
|
||||
$font-weight-normal: 300 !default;
|
||||
$font-weight-bold: 600 !default;
|
||||
$font-weight-bolder: bolder !default;
|
||||
|
||||
strong {
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
// scss-docs-end font
|
||||
|
||||
$black: #000 !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
|
||||
$carousel-dark-indicator-active-bg: #ffffff !default;
|
||||
$carousel-dark-caption-color: #ffffff !default;
|
||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||
|
@@ -1,3 +1,5 @@
|
||||
// stylelint-disable annotation-no-unknown
|
||||
|
||||
// add zoom animation with opacity change on card img hover
|
||||
// source: https://stackoverflow.com/a/43816376
|
||||
|
||||
@@ -31,12 +33,39 @@
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.project-card {
|
||||
.card-emphasize {
|
||||
transition: 0.3s transform cubic-bezier(0.155, 1.105, 0.295, 1.12), 0.3s box-shadow, 0.3s -webkit-transform cubic-bezier(0.155, 1.105, 0.295, 1.12);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.project-card:hover {
|
||||
.card-emphasize:hover {
|
||||
transform: scale(1.01);
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
|
||||
.card-body-link {
|
||||
color: $body-color if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: tint-color($body-color, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.card-body-link {
|
||||
color: $gray-500 if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: shade-color($gray-500, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
8
assets/scss/components/_carousel.scss
Normal file
@@ -0,0 +1,8 @@
|
||||
.gradient {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
41
assets/scss/components/_clipboard.scss
Normal file
@@ -0,0 +1,41 @@
|
||||
// Adapted from https://simplernerd.com/hugo-add-copy-to-clipboard-button/
|
||||
|
||||
.clipboard-button {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
padding: 2px 7px 5px;
|
||||
margin: 5px;
|
||||
color: $secondary;
|
||||
background-color: transparent;
|
||||
border-style: none;
|
||||
font-size: 0.8em;
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
transition: 0.1s;
|
||||
}
|
||||
|
||||
.clipboard-button > svg {
|
||||
fill: $secondary;
|
||||
}
|
||||
|
||||
.clipboard-button:hover {
|
||||
cursor: pointer;
|
||||
color: $primary;
|
||||
}
|
||||
|
||||
.clipboard-button:hover > svg {
|
||||
fill: $primary;
|
||||
}
|
||||
|
||||
.clipboard-button:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.highlight:hover > .clipboard-button {
|
||||
opacity: 1;
|
||||
transition: 0.2s;
|
||||
}
|
43
assets/scss/components/_command.scss
Normal file
@@ -0,0 +1,43 @@
|
||||
/* Adapted from PrismJS 1.29.0
|
||||
https://prismjs.com/download.html#themes=prism&plugins=command-line */
|
||||
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
|
||||
.command-line-prompt {
|
||||
border-right: 1px solid #999;
|
||||
display: block;
|
||||
float: left;
|
||||
font-size: 100%;
|
||||
letter-spacing: -1px;
|
||||
margin-right: 1em;
|
||||
pointer-events: none;
|
||||
text-align: right;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.command-line-prompt > span::before {
|
||||
opacity: 0.7;
|
||||
content: " ";
|
||||
display: block;
|
||||
padding-right: 0.8em;
|
||||
}
|
||||
|
||||
.command-line-prompt > span[data-prompt]::before {
|
||||
content: attr(data-prompt);
|
||||
}
|
||||
|
||||
.command-line-prompt > span[data-continuation-prompt]::before {
|
||||
content: attr(data-continuation-prompt);
|
||||
}
|
||||
|
||||
.command-line span.token.output {
|
||||
/* Make shell output lines a bit lighter to distinguish them from shell commands */
|
||||
opacity: 0.7;
|
||||
}
|
@@ -8,3 +8,9 @@
|
||||
width: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.card-img-h100 {
|
||||
width: auto;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
@@ -1,3 +1,5 @@
|
||||
// stylelint-disable annotation-no-unknown
|
||||
|
||||
// Source: https://jsfiddle.net/njhgr40m/
|
||||
|
||||
/* Remove border from toggler */
|
||||
@@ -65,3 +67,21 @@
|
||||
.navbar-toggler.collapsed .toggler-icon {
|
||||
background-color: #777;
|
||||
}
|
||||
|
||||
.emphasis {
|
||||
background-color: $black if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.emphasis {
|
||||
background-color: $white if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-spacing {
|
||||
width: 26px;
|
||||
}
|
||||
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
3
assets/scss/components/_popover.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
.popover-header {
|
||||
margin-top: 0;
|
||||
}
|
@@ -11,7 +11,7 @@
|
||||
.form-control.is-search {
|
||||
padding-right: 4rem;
|
||||
border: 1px solid transparent;
|
||||
background: $gray-100;
|
||||
background: var(--bs-tertiary-bg);
|
||||
}
|
||||
|
||||
.form-control.is-search:focus {
|
||||
@@ -29,9 +29,9 @@
|
||||
padding-right: 0.3125rem;
|
||||
padding-left: 0.3125rem;
|
||||
font-size: $font-size-base * 0.75;
|
||||
color: $gray-700;
|
||||
color: var(--bs-secondary-color);
|
||||
content: "Ctrl + /";
|
||||
border: 1px solid $gray-300;
|
||||
border: 1px solid var(--bs-border-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
@@ -59,12 +59,12 @@
|
||||
}
|
||||
|
||||
#suggestions a:focus {
|
||||
background: $gray-100;
|
||||
background-color: var(--bs-tertiary-bg);
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
#suggestions div:not(:first-child) {
|
||||
border-top: 1px dashed $gray-200;
|
||||
border-top: 1px dashed var(--bs-border-color);
|
||||
}
|
||||
|
||||
#suggestions div:first-child {
|
||||
@@ -76,7 +76,7 @@
|
||||
}
|
||||
|
||||
#suggestions a:hover {
|
||||
background: $gray-100;
|
||||
background-color: var(--bs-tertiary-bg);
|
||||
}
|
||||
|
||||
#suggestions span {
|
||||
@@ -86,12 +86,11 @@
|
||||
|
||||
.suggestion__title {
|
||||
font-weight: $headings-font-weight;
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.suggestion__description,
|
||||
.suggestion__no-results {
|
||||
color: $gray-700;
|
||||
color: var(--bs-secondary-color);
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
@@ -106,7 +105,7 @@
|
||||
.suggestion__title {
|
||||
width: 9rem;
|
||||
padding-right: 1rem;
|
||||
border-right: 1px solid $gray-200;
|
||||
border-right: 1px solid var(--bs-border-color);
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
}
|
||||
|
100
assets/scss/components/_sidebar.scss
Normal file
@@ -0,0 +1,100 @@
|
||||
// scss-docs-start sidebar
|
||||
.sidebar {
|
||||
top: $navbar-offset;
|
||||
}
|
||||
|
||||
.sidebar-item {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-weight: 600;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
background-color: transparent;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: black;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&::before {
|
||||
width: 1.25em;
|
||||
line-height: 0;
|
||||
content: $btn-toggle;
|
||||
transition: transform 0.35s ease;
|
||||
transform-origin: 0.5em 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle[aria-expanded="true"] {
|
||||
color: black;
|
||||
|
||||
&::before {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle-nav a {
|
||||
padding: 0.1875rem 0.5rem;
|
||||
margin-top: 0.125rem;
|
||||
margin-left: 1.25rem;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.sidebar-item {
|
||||
color: var(--bs-tertiary-color);
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
color: var(--bs-tertiary-color);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $secondary;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: $btn-toggle-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle[aria-expanded="true"] {
|
||||
color: var(--bs-secondary-color);
|
||||
}
|
||||
|
||||
.btn-toggle-nav a {
|
||||
padding: 0.1875rem 0.5rem;
|
||||
margin-top: 0.125rem;
|
||||
margin-left: 1.25rem;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $secondary;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end sidebar
|
||||
|
||||
.dropdown-toggle {
|
||||
outline: 0;
|
||||
}
|
86
assets/scss/components/_syntax-dark.scss
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Background */ .bg { color: #c9d1d9; background-color: #0d1117; }
|
||||
/* PreWrapper */ .chroma { color: #c9d1d9; background-color: #0d1117; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #f85149 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #ff7b72 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #79c0ff }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #ff7b72 }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #ff7b72 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #79c0ff }
|
||||
/* KeywordReserved */ .chroma .kr { color: #ff7b72 }
|
||||
/* KeywordType */ .chroma .kt { color: #ff7b72 }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { }
|
||||
/* NameBuiltin */ .chroma .nb { }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { }
|
||||
/* NameClass */ .chroma .nc { color: #f0883e; font-weight: bold }
|
||||
/* NameConstant */ .chroma .no { color: #79c0ff; font-weight: bold }
|
||||
/* NameDecorator */ .chroma .nd { color: #d2a8ff; font-weight: bold }
|
||||
/* NameEntity */ .chroma .ni { color: #ffa657 }
|
||||
/* NameException */ .chroma .ne { color: #f0883e; font-weight: bold }
|
||||
/* NameFunction */ .chroma .nf { color: #d2a8ff; font-weight: bold }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { color: #79c0ff; font-weight: bold }
|
||||
/* NameNamespace */ .chroma .nn { color: #ff7b72 }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { color: #79c0ff }
|
||||
/* NameTag */ .chroma .nt { color: #7ee787 }
|
||||
/* NameVariable */ .chroma .nv { color: #79c0ff }
|
||||
/* NameVariableClass */ .chroma .vc { }
|
||||
/* NameVariableGlobal */ .chroma .vg { }
|
||||
/* NameVariableInstance */ .chroma .vi { }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { color: #a5d6ff }
|
||||
/* LiteralDate */ .chroma .ld { color: #79c0ff }
|
||||
/* LiteralString */ .chroma .s { color: #a5d6ff }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #79c0ff }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #a5d6ff }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #a5d6ff }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #79c0ff }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #a5d6ff }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #a5d6ff }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #79c0ff }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #79c0ff }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #a5d6ff }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #a5d6ff }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #79c0ff }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #a5d6ff }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #a5d6ff }
|
||||
/* LiteralNumber */ .chroma .m { color: #a5d6ff }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #a5d6ff }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #a5d6ff }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #a5d6ff }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #a5d6ff }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #a5d6ff }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #a5d6ff }
|
||||
/* Operator */ .chroma .o { color: #ff7b72; font-weight: bold }
|
||||
/* OperatorWord */ .chroma .ow { color: #ff7b72; font-weight: bold }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #8b949e; font-style: italic }
|
||||
/* CommentHashbang */ .chroma .ch { color: #8b949e; font-style: italic }
|
||||
/* CommentMultiline */ .chroma .cm { color: #8b949e; font-style: italic }
|
||||
/* CommentSingle */ .chroma .c1 { color: #8b949e; font-style: italic }
|
||||
/* CommentSpecial */ .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* CommentPreproc */ .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #ffa198; background-color: #490202 }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #ffa198 }
|
||||
/* GenericHeading */ .chroma .gh { color: #79c0ff; font-weight: bold }
|
||||
/* GenericInserted */ .chroma .gi { color: #56d364; background-color: #0f5323 }
|
||||
/* GenericOutput */ .chroma .go { color: #8b949e }
|
||||
/* GenericPrompt */ .chroma .gp { color: #8b949e }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #79c0ff }
|
||||
/* GenericTraceback */ .chroma .gt { color: #ff7b72 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { color: #6e7681 }
|
86
assets/scss/components/_syntax-light.scss
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Background */ .bg { background-color: #ffffff; }
|
||||
/* PreWrapper */ .chroma { background-color: #ffffff; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
|
||||
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold }
|
||||
/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold }
|
||||
/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { color: #008080 }
|
||||
/* NameBuiltin */ .chroma .nb { color: #0086b3 }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color: #999999 }
|
||||
/* NameClass */ .chroma .nc { color: #445588; font-weight: bold }
|
||||
/* NameConstant */ .chroma .no { color: #008080 }
|
||||
/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold }
|
||||
/* NameEntity */ .chroma .ni { color: #800080 }
|
||||
/* NameException */ .chroma .ne { color: #990000; font-weight: bold }
|
||||
/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold }
|
||||
/* NameNamespace */ .chroma .nn { color: #555555 }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { }
|
||||
/* NameTag */ .chroma .nt { color: #000080 }
|
||||
/* NameVariable */ .chroma .nv { color: #008080 }
|
||||
/* NameVariableClass */ .chroma .vc { color: #008080 }
|
||||
/* NameVariableGlobal */ .chroma .vg { color: #008080 }
|
||||
/* NameVariableInstance */ .chroma .vi { color: #008080 }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { }
|
||||
/* LiteralDate */ .chroma .ld { }
|
||||
/* LiteralString */ .chroma .s { color: #dd1144 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #dd1144 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #dd1144 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #dd1144 }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #dd1144 }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #dd1144 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #dd1144 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #009926 }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #990073 }
|
||||
/* LiteralNumber */ .chroma .m { color: #009999 }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #009999 }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #009999 }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #009999 }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #009999 }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #009999 }
|
||||
/* Operator */ .chroma .o { color: #000000; font-weight: bold }
|
||||
/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #999988; font-style: italic }
|
||||
/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic }
|
||||
/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic }
|
||||
/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic }
|
||||
/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
|
||||
/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #aa0000 }
|
||||
/* GenericHeading */ .chroma .gh { color: #999999 }
|
||||
/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
|
||||
/* GenericOutput */ .chroma .go { color: #888888 }
|
||||
/* GenericPrompt */ .chroma .gp { color: #555555 }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #aaaaaa }
|
||||
/* GenericTraceback */ .chroma .gt { color: #aa0000 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { color: #bbbbbb }
|
40
assets/scss/components/_syntax.scss
Normal file
@@ -0,0 +1,40 @@
|
||||
// stylelint-disable annotation-no-unknown
|
||||
@import "syntax-light";
|
||||
|
||||
.bg,
|
||||
.chroma,
|
||||
.chroma .err {
|
||||
// set to transparent background to avoid rendering issues with example shortcode
|
||||
background-color: transparent if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.preview-background {
|
||||
background-color: var(--bs-secondary-bg) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
[data-bs-theme="dark"] {
|
||||
@import "syntax-dark"; // stylelint-disable-line no-invalid-position-at-import-rule
|
||||
|
||||
.bg,
|
||||
.chroma,
|
||||
.chroma .err {
|
||||
// set to transparent background to avoid rendering issues with example shortcode
|
||||
background-color: transparent if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.bg,
|
||||
.chroma {
|
||||
color: #c9d1d9 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
// stylelint-enable annotation-no-unknown
|
44
assets/scss/components/_toc.scss
Normal file
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// Table of contents sidebar
|
||||
//
|
||||
// scss-docs-start toc
|
||||
.toc {
|
||||
grid-area: toc;
|
||||
right: 0;
|
||||
z-index: 2;
|
||||
height: calc(100vh - 7rem);
|
||||
overflow-y: auto;
|
||||
top: $navbar-offset;
|
||||
}
|
||||
|
||||
// scss-docs-end toc
|
||||
|
||||
.toc nav {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.toc nav ul {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.toc nav ul ul {
|
||||
padding-left: 1rem;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
|
||||
.toc nav li {
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.toc nav a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.toc nav a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.toc nav a code {
|
||||
font: inherit;
|
||||
}
|
21
assets/scss/helpers/_colored-links.scss
Normal file
@@ -0,0 +1,21 @@
|
||||
// stylelint-disable function-name-case
|
||||
|
||||
// scss-docs-start colored-links
|
||||
@each $color, $value in $theme-colors {
|
||||
$contrast-color: color-contrast($value);
|
||||
$color-rgb: to-rgb($value);
|
||||
|
||||
.link-bg-#{$color} {
|
||||
color: $contrast-color !important; // stylelint-disable-line declaration-no-important
|
||||
background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null); // stylelint-disable-line annotation-no-unknown
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: if($contrast-color == $color-contrast-light, shade-color($contrast-color, $link-shade-percentage), tint-color($contrast-color, $link-shade-percentage)) !important; // stylelint-disable-line declaration-no-important
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end colored-links
|
3
assets/scss/helpers/_hidden.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
176
assets/scss/hotfix/_maps.scss
Normal file
@@ -0,0 +1,176 @@
|
||||
// Copied from https://github.com/twbs/bootstrap/commit/15744ee1d04bcca03155c3bb37ee7e65a7b011c6
|
||||
//
|
||||
// Re-assigned maps
|
||||
//
|
||||
// Placed here so that others can override the default Sass maps and see automatic updates to utilities and more.
|
||||
|
||||
// scss-docs-start theme-colors-rgb
|
||||
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
|
||||
// scss-docs-end theme-colors-rgb
|
||||
|
||||
// scss-docs-start theme-text-map
|
||||
$theme-colors-text: (
|
||||
"primary": $primary-text-emphasis,
|
||||
"secondary": $secondary-text-emphasis,
|
||||
"success": $success-text-emphasis,
|
||||
"info": $info-text-emphasis,
|
||||
"warning": $warning-text-emphasis,
|
||||
"danger": $danger-text-emphasis,
|
||||
"light": $light-text-emphasis,
|
||||
"dark": $dark-text-emphasis,
|
||||
) !default;
|
||||
// scss-docs-end theme-text-map
|
||||
|
||||
// scss-docs-start theme-bg-subtle-map
|
||||
$theme-colors-bg-subtle: (
|
||||
"primary": $primary-bg-subtle,
|
||||
"secondary": $secondary-bg-subtle,
|
||||
"success": $success-bg-subtle,
|
||||
"info": $info-bg-subtle,
|
||||
"warning": $warning-bg-subtle,
|
||||
"danger": $danger-bg-subtle,
|
||||
"light": $light-bg-subtle,
|
||||
"dark": $dark-bg-subtle,
|
||||
) !default;
|
||||
// scss-docs-end theme-bg-subtle-map
|
||||
|
||||
// scss-docs-start theme-border-subtle-map
|
||||
$theme-colors-border-subtle: (
|
||||
"primary": $primary-border-subtle,
|
||||
"secondary": $secondary-border-subtle,
|
||||
"success": $success-border-subtle,
|
||||
"info": $info-border-subtle,
|
||||
"warning": $warning-border-subtle,
|
||||
"danger": $danger-border-subtle,
|
||||
"light": $light-border-subtle,
|
||||
"dark": $dark-border-subtle,
|
||||
) !default;
|
||||
// scss-docs-end theme-border-subtle-map
|
||||
|
||||
$theme-colors-text-dark: null !default;
|
||||
$theme-colors-bg-subtle-dark: null !default;
|
||||
$theme-colors-border-subtle-dark: null !default;
|
||||
|
||||
@if $enable-dark-mode {
|
||||
// scss-docs-start theme-text-dark-map
|
||||
$theme-colors-text-dark: (
|
||||
"primary": $primary-text-emphasis-dark,
|
||||
"secondary": $secondary-text-emphasis-dark,
|
||||
"success": $success-text-emphasis-dark,
|
||||
"info": $info-text-emphasis-dark,
|
||||
"warning": $warning-text-emphasis-dark,
|
||||
"danger": $danger-text-emphasis-dark,
|
||||
"light": $light-text-emphasis-dark,
|
||||
"dark": $dark-text-emphasis-dark,
|
||||
) !default;
|
||||
// scss-docs-end theme-text-dark-map
|
||||
|
||||
// scss-docs-start theme-bg-subtle-dark-map
|
||||
$theme-colors-bg-subtle-dark: (
|
||||
"primary": $primary-bg-subtle-dark,
|
||||
"secondary": $secondary-bg-subtle-dark,
|
||||
"success": $success-bg-subtle-dark,
|
||||
"info": $info-bg-subtle-dark,
|
||||
"warning": $warning-bg-subtle-dark,
|
||||
"danger": $danger-bg-subtle-dark,
|
||||
"light": $light-bg-subtle-dark,
|
||||
"dark": $dark-bg-subtle-dark,
|
||||
) !default;
|
||||
// scss-docs-end theme-bg-subtle-dark-map
|
||||
|
||||
// scss-docs-start theme-border-subtle-dark-map
|
||||
$theme-colors-border-subtle-dark: (
|
||||
"primary": $primary-border-subtle-dark,
|
||||
"secondary": $secondary-border-subtle-dark,
|
||||
"success": $success-border-subtle-dark,
|
||||
"info": $info-border-subtle-dark,
|
||||
"warning": $warning-border-subtle-dark,
|
||||
"danger": $danger-border-subtle-dark,
|
||||
"light": $light-border-subtle-dark,
|
||||
"dark": $dark-border-subtle-dark,
|
||||
) !default;
|
||||
// scss-docs-end theme-border-subtle-dark-map
|
||||
}
|
||||
|
||||
// Utilities maps
|
||||
//
|
||||
// Extends the default `$theme-colors` maps to help create our utilities.
|
||||
|
||||
// Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
|
||||
// scss-docs-start utilities-colors
|
||||
$utilities-colors: $theme-colors-rgb !default;
|
||||
// scss-docs-end utilities-colors
|
||||
|
||||
// scss-docs-start utilities-text-colors
|
||||
$utilities-text: map-merge(
|
||||
$utilities-colors,
|
||||
(
|
||||
"black": to-rgb($black),
|
||||
"white": to-rgb($white),
|
||||
"body": to-rgb($body-color)
|
||||
)
|
||||
) !default;
|
||||
$utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
|
||||
|
||||
$utilities-text-emphasis-colors: (
|
||||
"primary-emphasis": var(--#{$prefix}primary-text-emphasis),
|
||||
"secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
|
||||
"success-emphasis": var(--#{$prefix}success-text-emphasis),
|
||||
"info-emphasis": var(--#{$prefix}info-text-emphasis),
|
||||
"warning-emphasis": var(--#{$prefix}warning-text-emphasis),
|
||||
"danger-emphasis": var(--#{$prefix}danger-text-emphasis),
|
||||
"light-emphasis": var(--#{$prefix}light-text-emphasis),
|
||||
"dark-emphasis": var(--#{$prefix}dark-text-emphasis)
|
||||
) !default;
|
||||
// scss-docs-end utilities-text-colors
|
||||
|
||||
// scss-docs-start utilities-bg-colors
|
||||
$utilities-bg: map-merge(
|
||||
$utilities-colors,
|
||||
(
|
||||
"black": to-rgb($black),
|
||||
"white": to-rgb($white),
|
||||
"body": to-rgb($body-bg)
|
||||
)
|
||||
) !default;
|
||||
$utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
|
||||
|
||||
$utilities-bg-subtle: (
|
||||
"primary-subtle": var(--#{$prefix}primary-bg-subtle),
|
||||
"secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
|
||||
"success-subtle": var(--#{$prefix}success-bg-subtle),
|
||||
"info-subtle": var(--#{$prefix}info-bg-subtle),
|
||||
"warning-subtle": var(--#{$prefix}warning-bg-subtle),
|
||||
"danger-subtle": var(--#{$prefix}danger-bg-subtle),
|
||||
"light-subtle": var(--#{$prefix}light-bg-subtle),
|
||||
"dark-subtle": var(--#{$prefix}dark-bg-subtle)
|
||||
) !default;
|
||||
// scss-docs-end utilities-bg-colors
|
||||
|
||||
// scss-docs-start utilities-border-colors
|
||||
$utilities-border: map-merge(
|
||||
$utilities-colors,
|
||||
(
|
||||
"black": to-rgb($black),
|
||||
"white": to-rgb($white)
|
||||
)
|
||||
) !default;
|
||||
$utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
|
||||
|
||||
$utilities-border-subtle: (
|
||||
"primary-subtle": var(--#{$prefix}primary-border-subtle),
|
||||
"secondary-subtle": var(--#{$prefix}secondary-border-subtle),
|
||||
"success-subtle": var(--#{$prefix}success-border-subtle),
|
||||
"info-subtle": var(--#{$prefix}info-border-subtle),
|
||||
"warning-subtle": var(--#{$prefix}warning-border-subtle),
|
||||
"danger-subtle": var(--#{$prefix}danger-border-subtle),
|
||||
"light-subtle": var(--#{$prefix}light-border-subtle),
|
||||
"dark-subtle": var(--#{$prefix}dark-border-subtle)
|
||||
) !default;
|
||||
// scss-docs-end utilities-border-colors
|
||||
|
||||
$utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
|
||||
|
||||
$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
|
||||
|
||||
$gutters: $spacers !default;
|
180
assets/scss/hotfix/_root.scss
Normal file
@@ -0,0 +1,180 @@
|
||||
// Copied from https://github.com/twbs/bootstrap/commit/15744ee1d04bcca03155c3bb37ee7e65a7b011c6
|
||||
|
||||
:root,
|
||||
[data-bs-theme="light"] {
|
||||
// Note: Custom variable values only support SassScript inside `#{}`.
|
||||
|
||||
// Colors
|
||||
//
|
||||
// Generate palettes for full colors, grays, and theme colors.
|
||||
|
||||
@each $color, $value in $colors {
|
||||
--#{$prefix}#{$color}: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $grays {
|
||||
--#{$prefix}gray-#{$color}: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
--#{$prefix}#{$color}: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-rgb {
|
||||
--#{$prefix}#{$color}-rgb: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-text {
|
||||
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-bg-subtle {
|
||||
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-border-subtle {
|
||||
--#{$prefix}#{$color}-border-subtle: #{$value};
|
||||
}
|
||||
|
||||
--#{$prefix}white-rgb: #{to-rgb($white)};
|
||||
--#{$prefix}black-rgb: #{to-rgb($black)};
|
||||
|
||||
// Fonts
|
||||
|
||||
// Note: Use `inspect` for lists so that quoted items keep the quotes.
|
||||
// See https://github.com/sass/sass/issues/2383#issuecomment-336349172
|
||||
--#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};
|
||||
--#{$prefix}font-monospace: #{inspect($font-family-monospace)};
|
||||
--#{$prefix}gradient: #{$gradient};
|
||||
|
||||
// Root and body
|
||||
// scss-docs-start root-body-variables
|
||||
@if $font-size-root != null {
|
||||
--#{$prefix}root-font-size: #{$font-size-root};
|
||||
}
|
||||
--#{$prefix}body-font-family: #{inspect($font-family-base)};
|
||||
@include rfs($font-size-base, --#{$prefix}body-font-size);
|
||||
--#{$prefix}body-font-weight: #{$font-weight-base};
|
||||
--#{$prefix}body-line-height: #{$line-height-base};
|
||||
@if $body-text-align != null {
|
||||
--#{$prefix}body-text-align: #{$body-text-align};
|
||||
}
|
||||
|
||||
--#{$prefix}body-color: #{$body-color};
|
||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color)};
|
||||
--#{$prefix}body-bg: #{$body-bg};
|
||||
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
|
||||
|
||||
--#{$prefix}emphasis-color: #{$body-emphasis-color};
|
||||
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};
|
||||
|
||||
--#{$prefix}secondary-color: #{$body-secondary-color};
|
||||
--#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};
|
||||
--#{$prefix}secondary-bg: #{$body-secondary-bg};
|
||||
--#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};
|
||||
|
||||
--#{$prefix}tertiary-color: #{$body-tertiary-color};
|
||||
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
|
||||
--#{$prefix}tertiary-bg: #{$body-tertiary-bg};
|
||||
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
|
||||
// scss-docs-end root-body-variables
|
||||
|
||||
@if $headings-color != null {
|
||||
--#{$prefix}heading-color: #{$headings-color};
|
||||
}
|
||||
|
||||
--#{$prefix}link-color: #{$link-color};
|
||||
--#{$prefix}link-color-rgb: #{to-rgb($link-color)};
|
||||
--#{$prefix}link-decoration: #{$link-decoration};
|
||||
|
||||
--#{$prefix}link-hover-color: #{$link-hover-color};
|
||||
--#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};
|
||||
|
||||
@if $link-hover-decoration != null {
|
||||
--#{$prefix}link-hover-decoration: #{$link-hover-decoration};
|
||||
}
|
||||
|
||||
--#{$prefix}code-color: #{$code-color};
|
||||
--#{$prefix}highlight-bg: #{$mark-bg};
|
||||
|
||||
// scss-docs-start root-border-var
|
||||
--#{$prefix}border-width: #{$border-width};
|
||||
--#{$prefix}border-style: #{$border-style};
|
||||
--#{$prefix}border-color: #{$border-color};
|
||||
--#{$prefix}border-color-translucent: #{$border-color-translucent};
|
||||
|
||||
--#{$prefix}border-radius: #{$border-radius};
|
||||
--#{$prefix}border-radius-sm: #{$border-radius-sm};
|
||||
--#{$prefix}border-radius-lg: #{$border-radius-lg};
|
||||
--#{$prefix}border-radius-xl: #{$border-radius-xl};
|
||||
--#{$prefix}border-radius-xxl: #{$border-radius-xxl};
|
||||
--#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency
|
||||
--#{$prefix}border-radius-pill: #{$border-radius-pill};
|
||||
// scss-docs-end root-border-var
|
||||
|
||||
--#{$prefix}box-shadow: #{$box-shadow};
|
||||
--#{$prefix}box-shadow-sm: #{$box-shadow-sm};
|
||||
--#{$prefix}box-shadow-lg: #{$box-shadow-lg};
|
||||
--#{$prefix}box-shadow-inset: #{$box-shadow-inset};
|
||||
|
||||
// Focus styles
|
||||
// scss-docs-start root-focus-variables
|
||||
--#{$prefix}focus-ring-width: #{$focus-ring-width};
|
||||
--#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
|
||||
--#{$prefix}focus-ring-color: #{$focus-ring-color};
|
||||
// By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
|
||||
--#{$prefix}focus-ring-box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
|
||||
// scss-docs-end root-focus-variables
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark, true) {
|
||||
color-scheme: dark;
|
||||
|
||||
// scss-docs-start root-dark-mode-vars
|
||||
--#{$prefix}body-color: #{$body-color-dark};
|
||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};
|
||||
--#{$prefix}body-bg: #{$body-bg-dark};
|
||||
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};
|
||||
|
||||
--#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
|
||||
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
|
||||
|
||||
--#{$prefix}secondary-color: #{$body-secondary-color-dark};
|
||||
--#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};
|
||||
--#{$prefix}secondary-bg: #{$body-secondary-bg-dark};
|
||||
--#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};
|
||||
|
||||
--#{$prefix}tertiary-color: #{$body-tertiary-color-dark};
|
||||
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
|
||||
--#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};
|
||||
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
|
||||
|
||||
@each $color, $value in $theme-colors-text-dark {
|
||||
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-bg-subtle-dark {
|
||||
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-border-subtle-dark {
|
||||
--#{$prefix}#{$color}-border-subtle: #{$value};
|
||||
}
|
||||
|
||||
@if $headings-color-dark != null {
|
||||
--#{$prefix}heading-color: #{$headings-color-dark};
|
||||
}
|
||||
|
||||
--#{$prefix}link-color: #{$link-color-dark};
|
||||
--#{$prefix}link-hover-color: #{$link-hover-color-dark};
|
||||
--#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};
|
||||
--#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};
|
||||
|
||||
--#{$prefix}code-color: #{$code-color-dark};
|
||||
|
||||
--#{$prefix}border-color: #{$border-color-dark};
|
||||
--#{$prefix}border-color-translucent: #{$border-color-translucent-dark};
|
||||
// scss-docs-end root-dark-mode-vars
|
||||
}
|
||||
}
|
77
assets/scss/hotfix/_variables-dark.scss
Normal file
@@ -0,0 +1,77 @@
|
||||
// Copied from https://github.com/twbs/bootstrap/pull/37953
|
||||
|
||||
// Dark color mode variables
|
||||
//
|
||||
// Custom variables for the `[data-bs-theme="dark"]` theme. Use this as a starting point for your own custom color modes by creating a new theme-specific file like `_variables-dark.scss` and adding the variables you need.
|
||||
|
||||
//
|
||||
// Global colors
|
||||
//
|
||||
|
||||
// scss-docs-start sass-dark-mode-vars
|
||||
// scss-docs-start theme-text-dark-variables
|
||||
$primary-text-emphasis-dark: tint-color($primary, 40%) !default;
|
||||
$secondary-text-emphasis-dark: tint-color($secondary, 40%) !default;
|
||||
$success-text-emphasis-dark: tint-color($success, 40%) !default;
|
||||
$info-text-emphasis-dark: tint-color($info, 40%) !default;
|
||||
$warning-text-emphasis-dark: tint-color($warning, 40%) !default;
|
||||
$danger-text-emphasis-dark: tint-color($danger, 40%) !default;
|
||||
$light-text-emphasis-dark: $gray-100 !default;
|
||||
$dark-text-emphasis-dark: $gray-300 !default;
|
||||
// scss-docs-end theme-text-dark-variables
|
||||
|
||||
// scss-docs-start theme-bg-subtle-dark-variables
|
||||
$primary-bg-subtle-dark: shade-color($primary, 80%) !default;
|
||||
$secondary-bg-subtle-dark: shade-color($secondary, 80%) !default;
|
||||
$success-bg-subtle-dark: shade-color($success, 80%) !default;
|
||||
$info-bg-subtle-dark: shade-color($info, 80%) !default;
|
||||
$warning-bg-subtle-dark: shade-color($warning, 80%) !default;
|
||||
$danger-bg-subtle-dark: shade-color($danger, 80%) !default;
|
||||
$light-bg-subtle-dark: $gray-800 !default;
|
||||
$dark-bg-subtle-dark: mix($gray-800, $black) !default;
|
||||
// scss-docs-end theme-bg-subtle-dark-variables
|
||||
|
||||
// scss-docs-start theme-border-subtle-dark-variables
|
||||
$primary-border-subtle-dark: shade-color($primary, 40%) !default;
|
||||
$secondary-border-subtle-dark: shade-color($secondary, 40%) !default;
|
||||
$success-border-subtle-dark: shade-color($success, 40%) !default;
|
||||
$info-border-subtle-dark: shade-color($info, 40%) !default;
|
||||
$warning-border-subtle-dark: shade-color($warning, 40%) !default;
|
||||
$danger-border-subtle-dark: shade-color($danger, 40%) !default;
|
||||
$light-border-subtle-dark: $gray-700 !default;
|
||||
$dark-border-subtle-dark: $gray-800 !default;
|
||||
// scss-docs-end theme-border-subtle-dark-variables
|
||||
|
||||
$body-color-dark: $gray-500 !default;
|
||||
$body-bg-dark: $gray-900 !default;
|
||||
$body-secondary-color-dark: rgba($body-color-dark, .75) !default;
|
||||
$body-secondary-bg-dark: $gray-800 !default;
|
||||
$body-tertiary-color-dark: rgba($body-color-dark, .5) !default;
|
||||
$body-tertiary-bg-dark: mix($gray-800, $gray-900, 50%) !default;
|
||||
$body-emphasis-color-dark: $white !default;
|
||||
$border-color-dark: $gray-700 !default;
|
||||
$border-color-translucent-dark: rgba($white, .15) !default;
|
||||
$headings-color-dark: null !default;
|
||||
$link-color-dark: tint-color($primary, 40%) !default;
|
||||
$link-hover-color-dark: shift-color($link-color-dark, -$link-shade-percentage) !default;
|
||||
$code-color-dark: tint-color($code-color, 40%) !default;
|
||||
|
||||
|
||||
//
|
||||
// Forms
|
||||
//
|
||||
|
||||
$form-select-indicator-color-dark: $body-color-dark !default;
|
||||
$form-select-indicator-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color-dark}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>") !default;
|
||||
|
||||
$form-switch-color-dark: rgba($white, .25) !default;
|
||||
$form-switch-bg-image-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color-dark}'/></svg>") !default;
|
||||
|
||||
|
||||
//
|
||||
// Accordion
|
||||
//
|
||||
|
||||
$accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$primary-text-emphasis-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
|
||||
$accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$primary-text-emphasis-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
|
||||
// scss-docs-end sass-dark-mode-vars
|
1730
assets/scss/hotfix/_variables.scss
Normal file
@@ -1,3 +1,4 @@
|
||||
pre {
|
||||
padding: $spacer;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
@@ -3,24 +3,30 @@
|
||||
//
|
||||
h1 {
|
||||
margin-top: $spacer * 2.5;
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: $spacer * 2;
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: $spacer * 1.75;
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-top: $spacer * 1.5;
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
||||
h5 {
|
||||
margin-top: $spacer * 1.25;
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
||||
h6 {
|
||||
margin-top: $spacer;
|
||||
scroll-margin-top: $navbar-offset;
|
||||
}
|
||||
|
2
assets/scss/theme.scss
Normal file
@@ -0,0 +1,2 @@
|
||||
// Placeholder to quickly add your own styles
|
||||
// The file is included last in the build pipeline
|
@@ -1,25 +1,30 @@
|
||||
baseURL = "https://hinode-demo.markdumay.org/"
|
||||
canonifyURLs = false
|
||||
|
||||
# toml-docs-start main
|
||||
title = "Hinode"
|
||||
author = "Mark Dumay"
|
||||
copyright = "Copyright © 2022 Mark Dumay."
|
||||
copyright = "Copyright © 2023 Mark Dumay."
|
||||
paginate = 9
|
||||
enableGitInfo = true
|
||||
# toml-docs-end main
|
||||
|
||||
# additional settings
|
||||
baseURL = "https://demo.gethinode.com/"
|
||||
canonifyURLs = false
|
||||
enableEmoji = true
|
||||
enableRobotsTXT = true
|
||||
languageCode = "en-us"
|
||||
enableInlineShortcodes = true
|
||||
|
||||
# prevent build failures when using Hugo's Instagram shortcode due to deprecated Instagram API.
|
||||
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
|
||||
ignoreErrors = ["error-remote-getjson"]
|
||||
enableEmoji = true
|
||||
|
||||
# Multilingual
|
||||
# toml-docs-start build
|
||||
timeout = "60s"
|
||||
# toml-docs-end build
|
||||
|
||||
# toml-docs-start language
|
||||
languageCode = "en-us"
|
||||
defaultContentLanguage = "en"
|
||||
disableLanguages = ["nl"]
|
||||
|
||||
|
||||
|
||||
mainSections = ["blog", "projects"]
|
||||
defaultContentLanguageInSubdir = true
|
||||
# toml-docs-end language
|
||||
|
||||
[taxonomies]
|
||||
tag = 'tags'
|
||||
@@ -48,7 +53,6 @@ mainSections = ["blog", "projects"]
|
||||
[services.twitter]
|
||||
disableInlineCSS = true
|
||||
|
||||
|
||||
[outputFormats]
|
||||
[outputFormats.XML]
|
||||
isPlainText = false
|
||||
@@ -69,6 +73,13 @@ mainSections = ["blog", "projects"]
|
||||
[[module.mounts]]
|
||||
source = "static"
|
||||
target = "static"
|
||||
# toml-docs-start javascript
|
||||
[[module.mounts]]
|
||||
source = "node_modules/flexsearch"
|
||||
target = "assets/js/vendor/flexsearch"
|
||||
source = "node_modules/bootstrap/dist/js"
|
||||
target = "assets/js/vendor/bootstrap"
|
||||
includeFiles = "*.bundle.js"
|
||||
[[module.mounts]]
|
||||
source = "node_modules/flexsearch/dist"
|
||||
target = "assets/js/vendor/flexsearch"
|
||||
includeFiles = "*.bundle.js"
|
||||
# toml-docs-end javascript
|
||||
|
@@ -1,12 +1,31 @@
|
||||
# toml-docs-start lang-main
|
||||
[en]
|
||||
languageName = "English"
|
||||
contentDir = "content/en"
|
||||
weight = 1
|
||||
[en.params]
|
||||
introTitle = "Welcome to Hinode!"
|
||||
introCaption = "A clean blog theme for your Hugo site based on Bootstrap 5."
|
||||
introLink = "/about"
|
||||
introLinkTitle = "About"
|
||||
# toml-docs-end lang-main
|
||||
# toml-docs-start lang-param
|
||||
[en.params.head]
|
||||
tagline = "A Hugo Theme"
|
||||
[en.params.feature]
|
||||
link = "/en/about"
|
||||
caption = "About"
|
||||
[en.params.footer]
|
||||
license = "Licensed under Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank'>CC BY-NC-SA 4.0</a>)."
|
||||
socialTitle = "Follow me"
|
||||
socialCaption = "I work on everything coding and tweet developer memes"
|
||||
socialCaption = "I work on everything coding and tweet developer memes"
|
||||
# toml-docs-end lang-param
|
||||
|
||||
[nl]
|
||||
languageName = "Nederlands"
|
||||
contentDir = "content/nl"
|
||||
weight = 2
|
||||
[nl.params.head]
|
||||
tagline = "Een Hugo Thema"
|
||||
[nl.params.feature]
|
||||
link = "/nl/over-mij"
|
||||
caption = "Over mij"
|
||||
[nl.params.footer]
|
||||
license = "Gelicenseerd onder Creative Commons (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' class='link-secondary' target='_blank'>CC BY-NC-SA 4.0</a>)."
|
||||
socialTitle = "Volg mij"
|
||||
socialCaption = "Ik doe aan programmeren en tweet memes"
|
@@ -1,17 +1,19 @@
|
||||
defaultMarkdownHandler = "goldmark"
|
||||
|
||||
[highlight]
|
||||
anchorLineNos = false
|
||||
codeFences = true
|
||||
guessSyntax = true
|
||||
hl_Lines = ""
|
||||
lineAnchors = ""
|
||||
lineNoStart = 1
|
||||
lineNos = true
|
||||
lineNumbersInTable = false
|
||||
noClasses = false
|
||||
# style = "monokai" # This parameter affects nothing, see https://github.com/razonyang/hugo-theme-bootstrap#syntax-highlighting.
|
||||
tabWidth = 2
|
||||
anchorLineNos = false
|
||||
codeFences = true
|
||||
guessSyntax = true
|
||||
hl_Lines = ""
|
||||
lineAnchors = ""
|
||||
lineNoStart = 1
|
||||
lineNos = false
|
||||
lineNumbersInTable = false
|
||||
noClasses = false
|
||||
tabWidth = 2
|
||||
## Update the 'create:syntax' command in package.json to modify the style
|
||||
## The first two lines have been modified to remove the background color
|
||||
# style = "monokailight"
|
||||
|
||||
[goldmark]
|
||||
[goldmark.extensions]
|
||||
|
@@ -13,6 +13,18 @@
|
||||
url = "/projects/"
|
||||
weight = 30
|
||||
|
||||
[[main]]
|
||||
name = "Sample project"
|
||||
url = "/en/projects/sample-project/"
|
||||
parent = "Projects"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
name = "Another project"
|
||||
url = "/en/projects/another-project/"
|
||||
parent = "Projects"
|
||||
weight = 2
|
||||
|
||||
[[main]]
|
||||
name = "Tags"
|
||||
url = "/tags/"
|
||||
@@ -34,4 +46,28 @@
|
||||
name = "Medium"
|
||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
||||
url = "https://medium.com/"
|
||||
weight = 30
|
||||
weight = 30
|
||||
|
||||
# toml-docs-start sample-navigation
|
||||
[[sample]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
weight = 10
|
||||
|
||||
[[sample]]
|
||||
name = "Projects"
|
||||
url = "/projects/"
|
||||
weight = 20
|
||||
|
||||
[[sample]]
|
||||
name = "Sample project"
|
||||
url = "/en/projects/sample-project/"
|
||||
parent = "Projects"
|
||||
weight = 1
|
||||
|
||||
[[sample]]
|
||||
name = "Another project"
|
||||
url = "/en/projects/another-project/"
|
||||
parent = "Projects"
|
||||
weight = 2
|
||||
# toml-docs-end sample-navigation
|
49
config/_default/menus/menus.nl.toml
Normal file
@@ -0,0 +1,49 @@
|
||||
[[main]]
|
||||
name = "Over mij"
|
||||
url = "/over-mij/"
|
||||
weight = 10
|
||||
|
||||
[[main]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "Projecten"
|
||||
url = "/projecten/"
|
||||
weight = 30
|
||||
|
||||
[[main]]
|
||||
name = "Voorbeeldproject"
|
||||
url = "/nl/projecten/voorbeeldproject/"
|
||||
parent = "Projecten"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
name = "Ander project"
|
||||
url = "/nl/projecten/ander-project/"
|
||||
parent = "Projecten"
|
||||
weight = 2
|
||||
|
||||
[[main]]
|
||||
name = "Tags"
|
||||
url = "/tags/"
|
||||
weight = 40
|
||||
|
||||
[[social]]
|
||||
name = "LinkedIn"
|
||||
pre = "<i class=\"fab fa-linkedin fa-2x\"></i>"
|
||||
url = "https://linkedin.com/"
|
||||
weight = 10
|
||||
|
||||
[[social]]
|
||||
name = "GitHub"
|
||||
pre = "<i class=\"fab fa-github fa-2x\"></i>"
|
||||
url = "https://github.com/"
|
||||
weight = 20
|
||||
|
||||
[[social]]
|
||||
name = "Medium"
|
||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
||||
url = "https://medium.com/"
|
||||
weight = 30
|
@@ -1,56 +1,110 @@
|
||||
## Homepage
|
||||
title = "Hinode"
|
||||
titleSeparator = "-"
|
||||
titleAddition = "Clean Blog Theme"
|
||||
description = "Hinode is a clean blog theme for your Hugo site based on Bootstrap 5."
|
||||
# toml-docs-start main
|
||||
[main]
|
||||
separator = "-"
|
||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||
enableDarkMode = true
|
||||
# toml-docs-end main
|
||||
|
||||
## Open Graph
|
||||
images = ["logo.png"]
|
||||
ogLocale = "en_US"
|
||||
domainTLD = "hinode-demo.markdumay.org"
|
||||
# toml-docs-start docs
|
||||
[docs]
|
||||
version = "0.8"
|
||||
basePath = ""
|
||||
# toml-docs-end docs
|
||||
|
||||
## Twitter Cards
|
||||
# twitterSite = "@gethinode"
|
||||
# twitterCreator = "@markdumay"
|
||||
# toml-docs-start home
|
||||
[home]
|
||||
sections = ["blog", "projects"]
|
||||
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
fullCover = false
|
||||
# toml-docs-end home
|
||||
|
||||
## JSON-LD
|
||||
schemaType = "Organization"
|
||||
schemaName = "Hinode"
|
||||
schemaAuthor = "Mark Dumay"
|
||||
schemaAuthorTwitter = "https://twitter.com/markdumay"
|
||||
schemaAuthorLinkedIn = "https://www.linkedin.com/in/markdumay/"
|
||||
schemaAuthorGitHub = "https://github.com/markdumay"
|
||||
schemaLocale = "en-US"
|
||||
schemaLogo = "logo512x512.png"
|
||||
schemaLogoWidth = 512
|
||||
schemaLogoHeight = 512
|
||||
schemaImage = "logo1280x640.png"
|
||||
schemaImageWidth = 1280
|
||||
schemaImageHeight = 640
|
||||
# schemaTwitter = "https://twitter.com/gethinode"
|
||||
# schemaLinkedIn = ""
|
||||
schemaGitHub = "https://github.com/markdumay/hugo-theme-hinode"
|
||||
schemaSection = "blog"
|
||||
# toml-docs-start navigation
|
||||
[navigation]
|
||||
logo = "/img/logo_icon.svg"
|
||||
color = "body"
|
||||
style = "light"
|
||||
fixed = true
|
||||
offset = "4em"
|
||||
search = true
|
||||
breadcrumb = false
|
||||
toc = true
|
||||
sidebar = true
|
||||
# toml-docs-end navigation
|
||||
|
||||
# toml-docs-start list
|
||||
[list]
|
||||
[blog]
|
||||
title = "Blog"
|
||||
sort = "date"
|
||||
reverse = false
|
||||
cols = 3
|
||||
color = ""
|
||||
padding = "0"
|
||||
header = "full"
|
||||
footer = "none"
|
||||
orientation = "stacked"
|
||||
style = "border-0"
|
||||
homepage = 3
|
||||
[projects]
|
||||
title = "Projects"
|
||||
sort = "title"
|
||||
reverse = false
|
||||
cols = 1
|
||||
color = ""
|
||||
padding = "3"
|
||||
header = "none"
|
||||
footer = "tags"
|
||||
orientation = "none"
|
||||
style = "border-1 card-emphasize"
|
||||
homepage = 3
|
||||
# toml-docs-end list
|
||||
|
||||
[favicon]
|
||||
logo = "img/favicon.png"
|
||||
sizes = [16, 32, 48]
|
||||
|
||||
[search]
|
||||
enabled = true
|
||||
|
||||
[toc]
|
||||
enabled = true
|
||||
|
||||
# toml-docs-start theme-colors
|
||||
[style]
|
||||
themeColor = "#D43900" #00b0f0
|
||||
primary = "#D43900"
|
||||
secondary = "#6c757d"
|
||||
success = "#198754"
|
||||
info = "#0dcaf0"
|
||||
warning = "#ffc107"
|
||||
danger = "#dc3545"
|
||||
light = "#f8f9fa"
|
||||
dark = "#212529"
|
||||
# toml-docs-end theme-colors
|
||||
themeOpacity = "10"
|
||||
# toml-docs-start font
|
||||
themeFont = "Inter"
|
||||
themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap"
|
||||
# toml-docs-end font
|
||||
|
||||
[main]
|
||||
featurePhoto = "img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
logo = "/logo_embedded.svg"
|
||||
[schema]
|
||||
type = "Organization"
|
||||
name = "Hinode"
|
||||
locale = "en-US"
|
||||
# twitter = "https://twitter.com/gethinode"
|
||||
# linkedIn = ""
|
||||
github = "https://github.com/gethinode/hinode"
|
||||
section = "blog"
|
||||
[author]
|
||||
name = "Mark Dumay"
|
||||
# twitter = "https://twitter.com/markdumay"
|
||||
linkedin = "https://www.linkedin.com/in/markdumay/"
|
||||
github = "https://github.com/markdumay"
|
||||
[logo]
|
||||
url = "img/logo512x512.png"
|
||||
width = 512
|
||||
height = 512
|
||||
[image]
|
||||
url = "img/logo1280x640.png"
|
||||
width = 1280
|
||||
height = 640
|
||||
|
||||
[opengraph]
|
||||
images = ["logo.png"]
|
||||
locale = "en_US"
|
||||
|
||||
[comments]
|
||||
enabled = false
|
||||
@@ -60,3 +114,13 @@ schemaSection = "blog"
|
||||
# By default, light and dark mode correspond to github-light and github-dark, respectively.
|
||||
# Optional values: github-light, github-dark, preferred-color-scheme, github-dark-orange, icy-dark, dark-blue, photon-dark.
|
||||
#theme = ""
|
||||
|
||||
[links]
|
||||
bs_badge_heading = "https://getbootstrap.com/docs/5.2/components/badge/#headings"
|
||||
hinode_docs = "https://gethinode.com/docs"
|
||||
hugo_imaging = "https://gohugo.io/content-management/image-processing/#imaging-configuration"
|
||||
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
|
||||
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
|
||||
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
|
||||
utterances = "https://utteranc.es"
|
||||
|
@@ -1,3 +1,4 @@
|
||||
# toml-docs-start server-config
|
||||
[[headers]]
|
||||
for = '/**'
|
||||
[headers.values]
|
||||
@@ -7,15 +8,13 @@ for = '/**'
|
||||
Content-Security-Policy = """\
|
||||
default-src 'self'; \
|
||||
script-src 'self' \
|
||||
https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js \
|
||||
https://cdn.jsdelivr.net/npm/flexsearch@0.7.21/dist/flexsearch.bundle.js \
|
||||
https://utteranc.es/client.js; \
|
||||
style-src 'self' localhost:1313 https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||
style-src 'self' https://utteranc.es https://fonts.googleapis.com https://www.youtube.com; \
|
||||
object-src 'none'; \
|
||||
base-uri 'self'; \
|
||||
connect-src 'self' localhost:1313 ws://localhost:1313/livereload; \
|
||||
connect-src 'self'; \
|
||||
font-src 'self' https://fonts.gstatic.com; \
|
||||
frame-src 'self' localhost:1313 https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
frame-src 'self' https://utteranc.es https://www.youtube-nocookie.com https://www.youtube.com; \
|
||||
img-src 'self' https://i.vimeocdn.com https://i.ytimg.com; \
|
||||
manifest-src 'self'; \
|
||||
media-src 'self' \
|
||||
@@ -33,5 +32,11 @@ for = '/**'
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
Cache-Control = "public, max-age=31536000"
|
||||
Access-Control-Allow-Origin = "*"
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
# toml-docs-end server-config
|
@@ -10,38 +10,38 @@ module.exports = {
|
||||
'./layouts/**/*.html',
|
||||
'./content/**/*.md',
|
||||
],
|
||||
safelist: {
|
||||
standard: [
|
||||
/lazyloaded/,
|
||||
/table/,
|
||||
/thead/,
|
||||
/tbody/,
|
||||
/tr/,
|
||||
/th/,
|
||||
/td/,
|
||||
/h5/,
|
||||
/alert-link/,
|
||||
/container-xxl/,
|
||||
/container-fluid/,
|
||||
/^bg-opacity-\d+/,
|
||||
/svg.*/,
|
||||
/fa.*/,
|
||||
/ratio.*/,
|
||||
/suggestion.*/,
|
||||
],
|
||||
safelist: [
|
||||
/lazyloaded/,
|
||||
/table/,
|
||||
/thead/,
|
||||
/tbody/,
|
||||
/tr/,
|
||||
/th/,
|
||||
/td/,
|
||||
/h5/,
|
||||
/alert-link/,
|
||||
/container-xxl/,
|
||||
/container-fluid/,
|
||||
/^bg-opacity-\d+/,
|
||||
/svg.*/,
|
||||
/fa.*/,
|
||||
/ratio.*/,
|
||||
/suggestion.*/,
|
||||
...whitelister([
|
||||
'./assets/scss/components/_blockquote.scss',
|
||||
'./assets/scss/components/_buttons.scss',
|
||||
'./assets/scss/components/_card.scss',
|
||||
'./assets/scss/components/_clipboard.scss',
|
||||
'./assets/scss/components/_img.scss',
|
||||
'./assets/scss/components/_navbar.scss',
|
||||
'./assets/scss/components/_search.scss',
|
||||
'./assets/scss/components/_syntax.scss',
|
||||
'./assets/scss/layouts/_reboot.scss',
|
||||
'./assets/scss/layouts/type.scss',
|
||||
'./node_modules/bootstrap/scss/_dropdown.scss',
|
||||
'./node_modules/bootstrap/scss/_utilities.scss',
|
||||
]),
|
||||
},
|
||||
],
|
||||
}),
|
||||
],
|
||||
}
|
||||
}
|
||||
|
31
config/production/deployment.toml
Normal file
@@ -0,0 +1,31 @@
|
||||
# toml-docs-start az-blob
|
||||
# By default, files are uploaded in an arbitrary order.
|
||||
# Files that match the regular expressions in the "Order" list
|
||||
# will be uploaded first, in the listed order.
|
||||
order = [".webp$", ".jpg$", ".gif$"]
|
||||
|
||||
[targets]
|
||||
name = "hinode"
|
||||
URL = "azblob://$web"
|
||||
|
||||
[[matchers]]
|
||||
# Cache static assets for 1 year.
|
||||
pattern = "^.+\\.(js|css|svg|ttf)$"
|
||||
cacheControl = "max-age=31536000, no-transform, public"
|
||||
gzip = true
|
||||
|
||||
[[matchers]]
|
||||
pattern = "^.+\\.(png|jpg|webp)$"
|
||||
cacheControl = "max-age=31536000, no-transform, public"
|
||||
gzip = false
|
||||
|
||||
[[matchers]]
|
||||
# Set custom content type for /sitemap.xml
|
||||
pattern = "^sitemap\\.xml$"
|
||||
contentType = "application/xml"
|
||||
gzip = true
|
||||
|
||||
[[matchers]]
|
||||
pattern = "^.+\\.(html|xml|json)$"
|
||||
gzip = true
|
||||
# toml-docs-end az-blob
|
@@ -1,3 +1,6 @@
|
||||
---
|
||||
author: "Hugo Authors"
|
||||
author: Mark Dumay
|
||||
title: Welcome to Hinode!
|
||||
---
|
||||
|
||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
|
@@ -1,48 +1,42 @@
|
||||
---
|
||||
title: "About"
|
||||
description: "A clean blog theme for your Hugo site based on Bootstrap 5."
|
||||
date: "2022-04-11"
|
||||
title: About
|
||||
description: Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
date: 2022-04-11
|
||||
updated: 2023-02-11
|
||||
showComments: false
|
||||
---
|
||||
|
||||
<p class="text-center"><img src="/logo_embedded.svg" class="img-fluid w-50" alt="Logo"></p>
|
||||
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
|
||||
|
||||
<center>Hinode is a clean blog theme for Hugo, an open-source static site generator.</center>
|
||||
|
||||
<section class="section section-sm mt-5">
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center text-center">
|
||||
<div class="row justify-content-center text-center">
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
||||
<h2 class="h4">Bootstrap framework</h2>
|
||||
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
||||
<h2 class="h4">Full text search</h2>
|
||||
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-code fa-2xl"></i>
|
||||
<h2 class="h4">Development tools</h2>
|
||||
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
|
||||
</div>
|
||||
<section class="section section-sm mt-5 mb-5">
|
||||
<div class="container-fluid">
|
||||
<div class="row justify-content-center text-center">
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-brands fa-bootstrap fa-2xl"></i>
|
||||
<h2 class="h4">Bootstrap framework</h2>
|
||||
<p>Build fast, responsive sites with Bootstrap 5. Easily customize your site with the source Sass files.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-magnifying-glass fa-2xl"></i>
|
||||
<h2 class="h4">Full text search</h2>
|
||||
<p>Search your site with FlexSearch, a full-text search library with zero dependencies.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<i class="fa-solid fa-code fa-2xl"></i>
|
||||
<h2 class="h4">Development tools</h2>
|
||||
<p>Use Node Package Manager to automate the build process and to keep track of dependencies.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Additional features include:
|
||||
|
||||
* Comments
|
||||
* Social links
|
||||
* Blog pagination
|
||||
* Scrollspy
|
||||
* Code highlighting
|
||||
* Color customization
|
||||
* i18n support
|
||||
|
||||
The Hinode theme is inspired by the following themes:
|
||||
|
||||
* [Blist](https://github.com/apvarun/blist-hugo-theme) - a clean and fast blog theme for your Hugo site using Tailwind CSS.
|
||||
* [Doks](https://github.com/h-enk/doks) - a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize.
|
||||
* Support for multiple languages
|
||||
* Reusable Bootstrap components through configurable shortcodes and partials
|
||||
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
||||
* Integrated sidebar navigation for content-heavy sections, such as documentation pages
|
||||
* Reponsive image handling for multiple screen sizes and resolutions
|
||||
* Optimized search results, scoring 100 points for SEO on [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Secure by default, scoring A+ on [Mozilla Observatory test]({{< param "links.observatory" >}})
|
||||
{.tickmark}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
---
|
||||
author: Katheryn Fox
|
||||
author: Mark Dumay
|
||||
title: Blog
|
||||
---
|
||||
|
58
content/en/blog/code-highlighting.md
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Code Highlighting"
|
||||
date: 2022-04-16
|
||||
description: "Examples on how to enable code highlighting."
|
||||
tags: ["code"]
|
||||
thumbnail: img/notepad.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||
---
|
||||
|
||||
## Code Fencing
|
||||
|
||||
Use code fencing to highlight the syntax of a specific language.
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"themes": [],
|
||||
"projects": [],
|
||||
"configuration": {}
|
||||
}
|
||||
```
|
||||
|
||||
```html
|
||||
<div class="highlight">
|
||||
<pre>
|
||||
<code>some code...</code>
|
||||
</pre>
|
||||
</div>
|
||||
```
|
||||
|
||||
## Highlight Shortcode
|
||||
|
||||
Use the `highlight` shortcode to customize the layout of a specific code block.
|
||||
|
||||
{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
|
||||
// GetTitleFunc returns a func that can be used to transform a string to
|
||||
// title case.
|
||||
//
|
||||
// The supported styles are
|
||||
//
|
||||
// - "Go" (strings.Title)
|
||||
// - "AP" (see https://www.apstylebook.com/)
|
||||
// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
|
||||
//
|
||||
// If an unknown or empty style is provided, AP style is what you get.
|
||||
func GetTitleFunc(style string) func(s string) string {
|
||||
switch strings.ToLower(style) {
|
||||
case "go":
|
||||
return strings.Title
|
||||
case "chicago":
|
||||
return transform.NewTitleConverter(transform.ChicagoStyle)
|
||||
default:
|
||||
return transform.NewTitleConverter(transform.APStyle)
|
||||
}
|
||||
}
|
||||
{{< / highlight >}}
|
@@ -2,10 +2,12 @@
|
||||
author: "Hugo Authors"
|
||||
title: "Emoji Support"
|
||||
date: 2021-07-15
|
||||
description: "Guide to emoji usage in Hugo"
|
||||
description: "Guide to emoji usage in Hugo."
|
||||
tags: ["emoji"]
|
||||
thumbnail: img/dunes.jpg # https://picsum.photos/id/184/4288/2848
|
||||
credits: Photo by <a href="https://unsplash.com/@timdegroot">Tim de Groot</a> on <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
||||
# thumbnail: img/dunes.jpg
|
||||
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
||||
---
|
||||
|
||||
Emoji can be enabled in a Hugo project in a number of ways.
|
||||
|
243
content/en/blog/extra-shortcodes.md
Normal file
@@ -0,0 +1,243 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Extra shortcodes
|
||||
date: 2023-02-12
|
||||
description: Use shortcodes to add common Bootstrap elements with ease.
|
||||
tags: ["code"]
|
||||
thumbnail: img/paper.jpg
|
||||
photoCredits: <a href="https://www.pexels.com/@picjumbo-com-55570/">picjumbo.com</a>
|
||||
photoSource: <a href="https://www.pexels.com/photo/blue-pen-beside-black-smartphone-on-white-paper-196646/">Pexels</a>
|
||||
---
|
||||
|
||||
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||
|
||||
## Accordion
|
||||
|
||||
As an example, the following shortcode displays an accordion with three elements, of which the first element is expanded.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* accordion */>}}
|
||||
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
|
||||
This is the first item's accordion body. It supports HTML content. The item is shown by adding the value
|
||||
<code>show</code> to the <code>class</code> argument.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||
This is the second item's accordion body. It too supports HTML content.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||
This is the third item's accordion body.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* /accordion */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Alert
|
||||
|
||||
As an example, the following shortcode displays a simple alert.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* alert color="danger" dismissible="true" */>}}
|
||||
A simple danger alert—check it out!
|
||||
{{</* /alert */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Badge
|
||||
|
||||
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options. The following example displays a badge for a heading of size four.
|
||||
|
||||
{{< example >}}
|
||||
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
|
||||
<h2>Example heading of size two <span class="badge bg-secondary">New</span></h2>
|
||||
<h3>Example heading of size three <span class="badge bg-secondary">New</span></h3>
|
||||
<h4>Example heading of size four <span class="badge bg-secondary">New</span></h4>
|
||||
<h5>Example heading of size five <span class="badge bg-secondary">New</span></h5>
|
||||
<h6>Example heading of size six <span class="badge bg-secondary">New</span></h6>
|
||||
{{< /example >}}
|
||||
|
||||
## Breadcrumb
|
||||
|
||||
As an example, the following shortcode displays a breadcrumb for the current page.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* breadcrumb path="blog" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a dark button with a badge.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button color="secondary" tooltip="Click on the inbox to view your unread messages" href="#" badge="99+" */>}}
|
||||
Inbox
|
||||
{{</* /button */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button group
|
||||
|
||||
As an example, the following shortcode displays a group of three buttons.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button-group aria-label="Basic example" */>}}
|
||||
{{</* button color="primary" href="#" */>}}Left{{</* /button */>}}
|
||||
{{</* button color="primary" href="#" */>}}Middle{{</* /button */>}}
|
||||
{{</* button color="primary" href="#" */>}}Right{{</* /button */>}}
|
||||
{{</* /button-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Card
|
||||
|
||||
As an example, the following shortcode displays a stacked card with icon that links to the [about]({{< ref "about" >}}) page. It includes a custom header and footer.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="light" header="publication" footer="none" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Carousel
|
||||
|
||||
As an example, the following shortcode displays a centered carousel with three slides, 16x9 aspect ratio, and a relative width of 67% on large screens.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||
{{</* img src="img/phone.jpg" caption="slide 2" */>}}
|
||||
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Collapse
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers a panel to appear or disappear.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button collapse="collapse-1" */>}}
|
||||
Trigger panel
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* collapse id="collapse-1" class="p-3 border rounded" */>}}
|
||||
Some placeholder content for the collapse component. This panel is <i>hidden by default</i> but
|
||||
revealed when the user activates the relevant trigger.
|
||||
{{</* /collapse */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Command prompt
|
||||
|
||||
Use the `command` shortcode to generate a block with a default bash command prompt.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
Specify `user` and `host` to add the user context to the prompt. In addition, use `(out)` to specify an output line and use `\` to denote a line continuation.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command user="user" host="localhost" */>}}
|
||||
export MY_VAR=123
|
||||
echo "hello"
|
||||
(out)hello
|
||||
echo one \
|
||||
two \
|
||||
three
|
||||
(out)one two three
|
||||
echo "goodbye"
|
||||
(out)goodbye
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Docs
|
||||
|
||||
Use the `docs` shortcode to display the content of a `toml` or `scss` file:
|
||||
|
||||
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||
|
||||
## Icon
|
||||
|
||||
As an example, the following shortcodes show a square check, a brand logo, and a circle check.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* fa square-check */>}}
|
||||
{{</* fab linkedin */>}}
|
||||
{{</* fas circle-check */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Image
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Navbar
|
||||
|
||||
As an example, the following shortcode displays a light navigation header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* navbar path="about" color="primary" size="sm" search="false" menus="sample" title="Brand" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Spinner
|
||||
|
||||
As an example, the following shortcode displays a centered spinner.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* spinner color="info" class="text-center" */>}}
|
||||
Loading...
|
||||
{{</* /spinner */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Toast
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers the toast message.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button id="toastButton" */>}}
|
||||
Show toast
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* toast header="Custom title" */>}}
|
||||
This is a toast message.
|
||||
{{</* /toast */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Tooltip
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a colored hyperlink.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#" */>}}
|
||||
Tooltip demonstration
|
||||
{{</* /tooltip */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,11 +1,12 @@
|
||||
---
|
||||
author: "Hugo Authors"
|
||||
title: "Markdown Syntax Guide"
|
||||
description: "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
|
||||
author: Hugo Authors
|
||||
title: Markdown Syntax Guide
|
||||
description: Use Markdown syntax and basic HTML elements to style your Hugo content files.
|
||||
tags: ["markdown", "css", "html"]
|
||||
date: 2022-01-14
|
||||
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
||||
credits: Photo by <a href="https://unsplash.com/@thomweerd">Thom</a> on <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
||||
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
||||
---
|
||||
|
||||
This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
|
||||
@@ -87,7 +88,7 @@ Tables aren't part of the core Markdown spec, but Hugo supports supports them ou
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta charset="utf-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
|