mirror of
https://github.com/hugo-fixit/FixIt.git
synced 2026-08-28 17:22:41 +00:00
Compare commits
759 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ba63d67a3c | |||
| 69d8e67c24 | |||
| 6196cd5edf | |||
| 83a658ba25 | |||
| 78a994b92b | |||
| 8599d14976 | |||
| 0928c72452 | |||
| c3ac728f04 | |||
| 93d0b52cd7 | |||
| 2199c7f125 | |||
| 3926cc0220 | |||
| 175cf888d5 | |||
| 581d8373bf | |||
| 98f337a545 | |||
| 9e946c6316 | |||
| e23a50d755 | |||
| 2a5bd268a3 | |||
| 5036111d11 | |||
| 8367c13ebd | |||
| 536e0b171e | |||
| 03f3500c35 | |||
| b4008081d7 | |||
| fdfd772100 | |||
| 0c1d074890 | |||
| b29368c3e6 | |||
| 50d27e0e5b | |||
| 8b5315a141 | |||
| c257b9b10f | |||
| 12b7c65f80 | |||
| 4514affb78 | |||
| 6986044dbc | |||
| fb300f2b16 | |||
| 43ecb1bdd0 | |||
| dda0d1e3f5 | |||
| 4a3df3cbdb | |||
| 31e5b99f1f | |||
| 296e86ad56 | |||
| 572382b5ad | |||
| 84c1358ecb | |||
| a79213969f | |||
| 2c2b25d8fc | |||
| 5b8ea64d77 | |||
| d637c8b22f | |||
| 00870fda7e | |||
| 81f867d0cd | |||
| fcbd8938c2 | |||
| 44b1271229 | |||
| c1071077ae | |||
| 7ffaca013c | |||
| e87060f707 | |||
| 825d458222 | |||
| b4d5859b2b | |||
| 1dcc2ecf1f | |||
| 3865162f6d | |||
| 721c9d9b10 | |||
| 0ae4f63595 | |||
| d55d53741d | |||
| 26dc22ba16 | |||
| 74ed94bec9 | |||
| 37a799b2cb | |||
| 3f5d0e0583 | |||
| 8ffb9a9563 | |||
| 3482b8bf08 | |||
| dcc5e32cba | |||
| 06273f725d | |||
| e501477398 | |||
| 35526b7410 | |||
| 4fec1cdaa2 | |||
| 1039e3280e | |||
| 8635841c80 | |||
| 0978234bf6 | |||
| 7efb9fc3ac | |||
| a78c07f782 | |||
| 1bb21fcbd1 | |||
| fdcc20af26 | |||
| 9bcdbe3325 | |||
| 4cd9a6940e | |||
| c76cb4c8be | |||
| 3c7babb5ea | |||
| 3f14576073 | |||
| 88dfed5486 | |||
| 051f45a73c | |||
| 10b355bdee | |||
| 4d95fd8d30 | |||
| f2b6218edc | |||
| 0a614e1763 | |||
| 4d3b556684 | |||
| c35dce56d0 | |||
| ebfa5ad741 | |||
| a96a76abf4 | |||
| e600d047da | |||
| 93478b47e1 | |||
| 053e5b4bd0 | |||
| d1c016269a | |||
| f771f6acb3 | |||
| 9ce1da104f | |||
| b209022ba0 | |||
| 6d00e42b03 | |||
| ffe0c3bd67 | |||
| 99fd4fb709 | |||
| 9c98f2142f | |||
| efeb70e19f | |||
| 7d530c9f32 | |||
| 6f99565f0d | |||
| 2cbf7aadd4 | |||
| 3f809345ff | |||
| 32627dc060 | |||
| af3be7a692 | |||
| 0630497968 | |||
| 9c05109181 | |||
| afc8c07511 | |||
| 237c2f3d13 | |||
| b78f22b698 | |||
| c8223a756b | |||
| 3045374786 | |||
| 0aac71430d | |||
| ea20bdb82d | |||
| aad75044e9 | |||
| 44d68d9a5b | |||
| 63655b30a8 | |||
| de3b234033 | |||
| f23f7933eb | |||
| 113ad247de | |||
| 1ba0303572 | |||
| 96b2f5f8ae | |||
| 066c82cc78 | |||
| 6f27a2b215 | |||
| 4bf8b5abeb | |||
| 956649b2f7 | |||
| dba83f8ddd | |||
| 924d72f5f0 | |||
| f984fc6de4 | |||
| dd877f8041 | |||
| fe129dd207 | |||
| 6907fd03dc | |||
| 486e8758ac | |||
| 5c74d4318a | |||
| c6f6a6c296 | |||
| 5fc14ff16f | |||
| 70c3124e98 | |||
| fa94e69877 | |||
| 55a9cc7671 | |||
| b4cb5a5ac1 | |||
| 11b485b6c4 | |||
| 664e9f0e16 | |||
| 94968bbbe1 | |||
| 969d0cc090 | |||
| 1c95aef348 | |||
| 5c07b3724d | |||
| 42a5ebdc71 | |||
| 50488dfb51 | |||
| b850cfc70e | |||
| a228cce083 | |||
| 5d03f558dd | |||
| 4abf68bd38 | |||
| 8cc38f6ca3 | |||
| 81c333ca63 | |||
| c430a012c0 | |||
| 944295052b | |||
| 56836eb077 | |||
| 210a43eaff | |||
| da7569b1e7 | |||
| fde7e1cf38 | |||
| f5fb989ad1 | |||
| f5dd25858d | |||
| f3053330bf | |||
| 1c1ec7e2ed | |||
| d8624386c7 | |||
| c923116b9b | |||
| 0cc7882d22 | |||
| 64cc597d17 | |||
| e9366b5ab2 | |||
| c174646bb2 | |||
| 0f68046afa | |||
| a3d9e474ea | |||
| afde1ce578 | |||
| 2d581efbc2 | |||
| 841eb3d20f | |||
| d4305d9bb2 | |||
| 93acf8ea79 | |||
| cc2ef7bf70 | |||
| 9c294816bb | |||
| a459d2dfb8 | |||
| 57d920244b | |||
| c6e31682c3 | |||
| 6297849227 | |||
| c890f61359 | |||
| 014e1fa67c | |||
| 77fcd7fa93 | |||
| 3c3f6084cc | |||
| e04bb611dc | |||
| ba6cc4ed8e | |||
| 08d3c62b31 | |||
| 7b9c3e62c7 | |||
| 590b8f47b2 | |||
| 311501ad6e | |||
| 59bea1e518 | |||
| fe034a2a40 | |||
| bf3fe68378 | |||
| b27a3098ac | |||
| 45f101a456 | |||
| a37eeecd79 | |||
| fe351c7e38 | |||
| 57ccd47083 | |||
| c3cba949c0 | |||
| 5101841fd6 | |||
| a1cd700b54 | |||
| 193fd1933d | |||
| c9a3a6f899 | |||
| c9e01dd090 | |||
| 9293ee27f3 | |||
| 92d0a857c1 | |||
| 3e8bdfd8f9 | |||
| d9043280fe | |||
| 3408f1596a | |||
| 89f9373bae | |||
| fb4f1f7389 | |||
| 0ce74d82f8 | |||
| a5614505bc | |||
| 6123eaac2c | |||
| ad092e7f72 | |||
| b2e6f70a81 | |||
| c4a1c79972 | |||
| 87ca54d024 | |||
| cfe1d7a601 | |||
| 7788eded58 | |||
| 6a1ed440df | |||
| 5b0a27125c | |||
| 2cb4bb2966 | |||
| 74f999995f | |||
| a85a665530 | |||
| 35413d613f | |||
| d1d3ed2954 | |||
| 9c8c0b6dee | |||
| 0cf0d4f4e7 | |||
| e663ebbd45 | |||
| 6eb582fef7 | |||
| 3053d889e2 | |||
| f7a9c52aac | |||
| 78971cdedb | |||
| d41e53bba4 | |||
| cb0d63717b | |||
| b45ab833d5 | |||
| 450e774d3c | |||
| a93f67762f | |||
| c21914dd49 | |||
| 1360438540 | |||
| 669f836488 | |||
| e62c0f2409 | |||
| de72a8c802 | |||
| f5b867d717 | |||
| 5ba4a8145b | |||
| 80e4d07294 | |||
| c2dc17e9e0 | |||
| b7edbf3e49 | |||
| adeecfb69d | |||
| 64378cb9c0 | |||
| 12c64431cb | |||
| 142e933fa2 | |||
| 1a43881170 | |||
| b0170f55f0 | |||
| 40c5dcb8c2 | |||
| ed14126001 | |||
| 22c3353dde | |||
| 2b936cb6ad | |||
| e2afa113be | |||
| 6c7145c311 | |||
| 8212d6fd02 | |||
| ad01016092 | |||
| 7d41c8af85 | |||
| 3f66669581 | |||
| e0523a15d1 | |||
| 8b4021295f | |||
| cf04ad3593 | |||
| 015610b7e8 | |||
| d6bd1ce697 | |||
| 1739d6937b | |||
| 2f564429de | |||
| 07816709b5 | |||
| b124218350 | |||
| a58d15e140 | |||
| 409d6c8894 | |||
| 53149ad6d2 | |||
| 1e59a684a6 | |||
| 30a67c4b52 | |||
| 469af95f10 | |||
| 21750077ba | |||
| 54675a61d5 | |||
| 72baedd5f5 | |||
| 03b3bfbd09 | |||
| 33a8861ec6 | |||
| d3cb08f56f | |||
| f537b808cf | |||
| 45ce8679ad | |||
| 036cbb415b | |||
| d816b1c836 | |||
| 2e96060d41 | |||
| 10b46284a1 | |||
| 3e210af76a | |||
| fcd72c9d66 | |||
| 68b028e9b6 | |||
| e2eeaf9632 | |||
| 91f3ad7471 | |||
| 041d5e2517 | |||
| 1d09297784 | |||
| 5931bf3786 | |||
| 0e7dc99319 | |||
| 9614598f07 | |||
| 637c4641cb | |||
| d2c4d7c18f | |||
| 99f51de9f9 | |||
| 9faf1ac1a8 | |||
| 393a1393c3 | |||
| 5e587a13a2 | |||
| 5712ea5a0d | |||
| a30c683582 | |||
| ac4418e24e | |||
| c3d63475b8 | |||
| c0115f6d94 | |||
| fda3fa66ef | |||
| 83d25c36b8 | |||
| d7788e962f | |||
| 582b96b8ef | |||
| f66dc32ec2 | |||
| f0af975663 | |||
| 54298bed8c | |||
| c06afaba20 | |||
| 4c06eeffac | |||
| b77d209136 | |||
| decb259ee1 | |||
| ec9a544f04 | |||
| 03db8d32a2 | |||
| eca4fa4057 | |||
| 46edabd81a | |||
| 6a04876258 | |||
| 4886c05395 | |||
| 168f1babc3 | |||
| 38b681cdfe | |||
| fb80b8b3dc | |||
| f1ba78efa1 | |||
| 3c96081689 | |||
| fd000ad6b3 | |||
| 35cc57e64d | |||
| 453ed31df0 | |||
| 0af0b136ba | |||
| a073b0e9f2 | |||
| 9913731705 | |||
| aa1709fbdd | |||
| fcb0f1efd5 | |||
| 59ee34b710 | |||
| 5518053a26 | |||
| 2a0821f531 | |||
| ad45d89098 | |||
| 261f7b66ef | |||
| fd15415b9a | |||
| ec0663668e | |||
| 712cf2a868 | |||
| 41014f7f5b | |||
| 85d91b8527 | |||
| 3a5d0dee65 | |||
| f98ca2197a | |||
| db77d49afb | |||
| 4df8fd023e | |||
| 8fa3538725 | |||
| 867984fda2 | |||
| 8d10880b35 | |||
| 894c512b1d | |||
| 64f954ccf7 | |||
| c08671dedf | |||
| 28759d5020 | |||
| 0c0fb03a8d | |||
| 39ccc51610 | |||
| 581466fd25 | |||
| 9471b94b09 | |||
| c974c905e5 | |||
| 3edabbef89 | |||
| f738e4a926 | |||
| 12cc5f7e60 | |||
| 39a48f35f0 | |||
| f7670a714b | |||
| cf71f1e289 | |||
| bd40c85586 | |||
| 19ceeb2e99 | |||
| 95436c11ac | |||
| b66fd37057 | |||
| 58cfa55e65 | |||
| 9c440df3d0 | |||
| 53f221b77a | |||
| 729c2c394a | |||
| 566a87c791 | |||
| e9edbba217 | |||
| 9e9bc9effd | |||
| b44555d403 | |||
| ed8cf316a5 | |||
| f9dde8fd2c | |||
| 27a7605b49 | |||
| 456db3851b | |||
| c36d87fd84 | |||
| 954d86432f | |||
| fabe057f61 | |||
| 185c68035a | |||
| 9d0518eb85 | |||
| b727c382bb | |||
| 849d7d486d | |||
| 72594d9612 | |||
| fad3c988de | |||
| b76e6af972 | |||
| 617e2df2e6 | |||
| dafc2665c3 | |||
| de0dae97c1 | |||
| b64908c9e2 | |||
| 1ca9fdb760 | |||
| 9e67e259fb | |||
| c2bcccc996 | |||
| 4203b573cb | |||
| 5991958bca | |||
| afc504e33a | |||
| c8081affa6 | |||
| 1f22b538b5 | |||
| 442ec84049 | |||
| 52184d96d4 | |||
| 5dac03a90d | |||
| e2cf5fe31d | |||
| 8798f5b51f | |||
| 3b99838980 | |||
| 5aaacec004 | |||
| 349de54009 | |||
| 312b6363dc | |||
| a67efe41be | |||
| 64529c99c8 | |||
| ede47a2bae | |||
| b7ed9cac69 | |||
| ccce5b52fd | |||
| e7dd4c838c | |||
| 18643271f8 | |||
| 91f3c7c3cf | |||
| 466bb7b7e9 | |||
| 3ffef8acb0 | |||
| 6a83650506 | |||
| 1c84791db9 | |||
| 24873c5e99 | |||
| 51d64cb152 | |||
| 94553e9b8e | |||
| 656f00b6a4 | |||
| 9a1b4570a7 | |||
| 976db36bc8 | |||
| c0942a92b9 | |||
| 0a5007921a | |||
| a482e14bd5 | |||
| 9109ef22e2 | |||
| ed2f5f6d10 | |||
| 4065ce606a | |||
| 72a77c2fc5 | |||
| 291364255c | |||
| 66b86d97cf | |||
| 16c903fac9 | |||
| 7c85205519 | |||
| 7c67b90acf | |||
| 6c752c1bbd | |||
| b8ecfc1127 | |||
| a0b4b81fd6 | |||
| 25e358d920 | |||
| 6cbb89875a | |||
| bcd6987910 | |||
| dd33cabe16 | |||
| 99dc099939 | |||
| de18e91146 | |||
| 537ad1df3f | |||
| 7c836776c0 | |||
| 9894d9900c | |||
| 9d32ba9d9e | |||
| affaea7ecb | |||
| 03e9b119cc | |||
| 3e2484e69b | |||
| 44b63ca817 | |||
| f44d89a52a | |||
| 2a53dbac37 | |||
| 9925af0808 | |||
| 07c40dbc3e | |||
| ec1debab38 | |||
| ee4441c3ea | |||
| 42f811de22 | |||
| f6911c4fd2 | |||
| 9bacfa92f4 | |||
| b3b0e6a4e0 | |||
| df7c7b9e18 | |||
| 419ade9c73 | |||
| 632243e60c | |||
| dc279b4346 | |||
| 26051115cd | |||
| f9a09e4610 | |||
| 2b2bde7ba8 | |||
| 6d9c6f5b93 | |||
| 45c71ef58e | |||
| e39d78965f | |||
| 3dcb3b1a98 | |||
| 906f3463ba | |||
| adf2acd22c | |||
| c021a53d15 | |||
| b067289648 | |||
| c18aac486b | |||
| 4f56a40653 | |||
| 061a3e3e2b | |||
| 44d0c7611d | |||
| cf91f230e8 | |||
| 052d128922 | |||
| 91b583817a | |||
| 9d1ab1a578 | |||
| ca73ca2066 | |||
| 678e2c0053 | |||
| 7e2e1006f1 | |||
| 256f491244 | |||
| 6eaae74708 | |||
| 5c4de3ae21 | |||
| 8db70c5829 | |||
| b4940f46ea | |||
| cbde3f0898 | |||
| 4c9e20b377 | |||
| 1a454de9d2 | |||
| b998371564 | |||
| 9679c3442a | |||
| d908af0a27 | |||
| b1f5515beb | |||
| 069355cc70 | |||
| 6cc4d44ef4 | |||
| 3c4284eb21 | |||
| a985b0e789 | |||
| 70afe3e883 | |||
| efd7b86b67 | |||
| d7c06360c2 | |||
| aa68514546 | |||
| 6b65ca8946 | |||
| 3e6dfc337b | |||
| d82fefa7dd | |||
| f13e95950a | |||
| df7443951b | |||
| 71e855ab08 | |||
| eb0acca980 | |||
| f32402dcdf | |||
| 3e60685d5a | |||
| 3682a2a1d3 | |||
| 4d07d872d5 | |||
| a1e123ac02 | |||
| 6c3c3d7a9a | |||
| a66bc4e0d1 | |||
| b7e9c6166b | |||
| df47c49726 | |||
| c881715c2a | |||
| b32370803b | |||
| 020a8fdbcc | |||
| b06b89cc11 | |||
| ba4b506b2f | |||
| 51bffc18b5 | |||
| 87f0fe68ae | |||
| c2d168c6d1 | |||
| c1b61c7997 | |||
| 5098685763 | |||
| 3c886553db | |||
| 84bca1af4f | |||
| 851b8e48cb | |||
| 89beb8fe4f | |||
| 462506cb92 | |||
| f6ed1ce8fe | |||
| b52b31a0cd | |||
| 12ada20fb8 | |||
| 39e6466d78 | |||
| fd0b171e5f | |||
| 7ceed732d2 | |||
| e07904b0f6 | |||
| 5f5d019f09 | |||
| f4e8babd12 | |||
| 1ed0acdf35 | |||
| 3b89a4eaab | |||
| 20433ed50d | |||
| 6c83d0630c | |||
| 79b5c27ed8 | |||
| dfeaf0e9a7 | |||
| 1e493fef48 | |||
| 7f19569336 | |||
| 429698a096 | |||
| 09440190aa | |||
| 1217640d40 | |||
| 300bbe9a44 | |||
| 7ec41cdb00 | |||
| fd13ca782b | |||
| bae1678c59 | |||
| 72bd72f5ed | |||
| c09f141034 | |||
| a2d8eaa249 | |||
| ff8e5fc7bf | |||
| 84e9eea483 | |||
| 5705048952 | |||
| d379911220 | |||
| 773a8a7eb9 | |||
| 6ab33ff7bf | |||
| dc0b96210a | |||
| 4dc8d0f7d7 | |||
| 76fec05da2 | |||
| 54c773368e | |||
| 05693d8b4c | |||
| 38cf4ee0de | |||
| 3df577cb0d | |||
| 063d8fa219 | |||
| 7f38d99ae4 | |||
| c771bce957 | |||
| 2ea592b4a3 | |||
| a9fd15e47d | |||
| d6be3c1fc2 | |||
| c9af0b9018 | |||
| b2b47095eb | |||
| 002ebda06f | |||
| 551938f0b4 | |||
| 9d6ee9feef | |||
| 1bd56105b7 | |||
| b7dba0713e | |||
| dd4f422dba | |||
| aaebdfb02c | |||
| 9eb18b9e75 | |||
| 594c89eb1e | |||
| 976d1ea82a | |||
| b16a06893c | |||
| 32711ff29c | |||
| 38eb829194 | |||
| 4c9b5b6773 | |||
| 8b2dd976e6 | |||
| 8789f6eaff | |||
| 34021a58a3 | |||
| 804d1e484d | |||
| e482fbe36a | |||
| de5fd0c3f7 | |||
| 07756a8c34 | |||
| ef84231860 | |||
| 0c87728979 | |||
| 90032a4471 | |||
| 2ebc77797c | |||
| 714a656ca8 | |||
| 175a307673 | |||
| 8e3d880557 | |||
| 9f24e82770 | |||
| 7e8e2e9431 | |||
| fbe58346e5 | |||
| 7aface4334 | |||
| b9539e9d69 | |||
| 927e6f9946 | |||
| da54fef151 | |||
| 0c3148b3ee | |||
| 7c7b81f589 | |||
| d777b2cfaf | |||
| 928fba19a8 | |||
| 68f4d5fb80 | |||
| df3aaa7ea3 | |||
| 4753da9236 | |||
| e4bc95172c | |||
| f5a79bac03 | |||
| 8beeb2dfa5 | |||
| 9894cf6263 | |||
| bece9f6fa2 | |||
| 9f7bce87a7 | |||
| 6c6a326607 | |||
| 4342d40158 | |||
| e4367587f1 | |||
| 2cc276e5f5 | |||
| caeb3d443e | |||
| 4b2ff9e773 | |||
| 95612e33f5 | |||
| 443abcf784 | |||
| 7b7fba261b | |||
| d02a9977a2 | |||
| 4bfe3962a9 | |||
| 9718a1c5c7 | |||
| a846d74e43 | |||
| c606e8c96e | |||
| 307851fc25 | |||
| 94a1796e63 | |||
| c783ced12f | |||
| 5d16e1ac0f | |||
| c7a03ea847 | |||
| 8ccf57862c | |||
| 86f4630f0b | |||
| 8416b6f757 | |||
| 30dbc469bd | |||
| 1cfabbe8bc | |||
| d4d2a95f98 | |||
| b5208b3f4b | |||
| fb16d9e1a2 | |||
| dc288de30f | |||
| e953d16f1c | |||
| a8e815aaa0 | |||
| 7991f97e7a | |||
| 65875dec78 | |||
| 8aa3cf96a9 | |||
| ac39b35cd5 | |||
| dba2e38ac8 | |||
| 9e3a440909 | |||
| 8cfd7d30a4 | |||
| 6f16b3ffe1 | |||
| a1833aaf41 | |||
| 2d0887173e | |||
| 17070d6fba | |||
| e3c69a6b13 | |||
| 5e9f24e3d3 | |||
| 1761aa17b9 | |||
| fdc501904c | |||
| 9ec83753d3 | |||
| 1121c9df57 | |||
| 95c8113d62 | |||
| 6fe37cef59 | |||
| 4e29d5e5ca | |||
| 02dda642ea | |||
| c2bb7e0f80 | |||
| 4fb9711fa6 | |||
| 6682d38af2 | |||
| eaa1fea5dc | |||
| 81f6d68f0a | |||
| a9678bf73c | |||
| c4a1b10e6a | |||
| fa952dfac7 | |||
| 089fce6a1c | |||
| bdad5f7758 | |||
| d484414e20 | |||
| d22d261e69 | |||
| 0de8e5053f | |||
| ecb0d964ad | |||
| c4606930ff | |||
| a631096b29 | |||
| b9fe4cc207 | |||
| aae1380688 | |||
| 223a42e3b7 | |||
| c4519a9194 | |||
| 98bf58d9bc | |||
| 4d223bdc29 | |||
| b3b9e358fd | |||
| 9f1773b6c7 | |||
| 1f412dc12d | |||
| e11caf7a59 | |||
| 496b60cff1 | |||
| b4741cc1a3 | |||
| b58fddda9c | |||
| 5c043e2c0f | |||
| 98c5a1ad54 | |||
| 23626dd604 | |||
| deed146884 | |||
| 9b47648aa5 | |||
| a25331bca3 | |||
| 8bb2a35dcc | |||
| 608693c962 | |||
| 5df739e5dc | |||
| 8611f00cf4 | |||
| 7fa16bbf66 | |||
| 88ec3aad5b | |||
| aff8b7f2c9 | |||
| 2956b9927c | |||
| 78416fa920 | |||
| 3443e0745b | |||
| 1b359b7f14 | |||
| 6df8f283f2 | |||
| 38043616ef | |||
| d7a25beafa | |||
| d64a6210f2 |
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"comments": false,
|
||||
"minified": true,
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
"targets": "> 0.25%, not dead"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
assets/lib/**/* linguist-vendored
|
||||
*.toml linguist-detectable
|
||||
*.md linguist-detectable
|
||||
@@ -1,3 +0,0 @@
|
||||
custom: [
|
||||
"https://paypal.me/Lruihao"
|
||||
]
|
||||
@@ -1,51 +1,55 @@
|
||||
name: "Bug Report 错误报告"
|
||||
description: "Create a bug report 创建一个错误报告"
|
||||
title: "[BUG] Some problem ..."
|
||||
labels: ["bug"]
|
||||
name: Bug Report
|
||||
description: Create a report to help us improve
|
||||
title: '[Bug report] '
|
||||
body:
|
||||
- type: textarea
|
||||
id: describe
|
||||
- type: markdown
|
||||
attributes:
|
||||
label: Describe the bug 描述你遇到的错误
|
||||
description: |
|
||||
A clear and concise description of what the bug is.
|
||||
一段简短的对于你遇到的错误的描述。
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report!
|
||||
- type: textarea
|
||||
id: expected
|
||||
id: bug-description
|
||||
attributes:
|
||||
label: Expected behavior 期待的行为
|
||||
description: |
|
||||
A clear and concise description of what you expected to happen.
|
||||
一段简短的对于你期待的行为的描述。
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
label: Description
|
||||
description: A clear and concise description of what the bug is. If applicable, add screenshots to help explain your problem. If you intend to submit a PR for this issue, tell us in the description. Thanks!
|
||||
placeholder: Bug description
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: reproduction
|
||||
attributes:
|
||||
label: Screenshots 屏幕截图
|
||||
description: |
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
如果可以的话,提供屏幕截图对解决问题很有帮助。
|
||||
label: Reproduction
|
||||
description: Please provide a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required.
|
||||
placeholder: Reproduction
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: installation-method
|
||||
attributes:
|
||||
label: Installation Method
|
||||
description: Select the installation method you used.
|
||||
options:
|
||||
- Hugo Module
|
||||
- Git Submodule
|
||||
- Git Clone
|
||||
- Manual
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: environment
|
||||
attributes:
|
||||
label: Build Environment 构建环境
|
||||
label: Build Environment
|
||||
description: |
|
||||
Please try to use Hugo **extended** version before opening the issue.
|
||||
请在创建 issue 之前尝试使用 Hugo **extended** 版本。
|
||||
placeholder: |
|
||||
- OS: [e.g. Windows 10, macOS, Ubuntu]
|
||||
- Theme version/commit [e.g. 0.2.0, 2ccba79]
|
||||
- Hugo version [e.g. 0.69.0]
|
||||
- type: textarea
|
||||
id: preview
|
||||
attributes:
|
||||
label: Preview Environment 预览环境
|
||||
placeholder: |
|
||||
- OS: [e.g. Windows 10, macOS, Ubuntu, iOS, Android]
|
||||
- Browser [e.g. Chrome, Safari, Firefox]
|
||||
- Hugo version [e.g. 0.147.0]
|
||||
- OS: [e.g. Windows 10, macOS, Ubuntu]
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: Additional Information 补充信息
|
||||
label: Additional Information
|
||||
description: |
|
||||
Configuration files or front matter code ...
|
||||
配置文件或者前置参数的代码……
|
||||
Configuration files or front matter code snippets that may help us understand the issue.
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Questions 问题讨论
|
||||
- name: Questions
|
||||
url: https://github.com/hugo-fixit/FixIt/discussions/new
|
||||
about: Please ask questions in Discussion. 请在讨论中提问。
|
||||
|
||||
- name: 官方 QQ 群
|
||||
url: https://qm.qq.com/cgi-bin/qm/qr?k=awbwdTtSQ_-H5QGzeJxdWgv6JMbNehNM&jump_from=webapi
|
||||
about: '加入 FixIt 主题交流群: 814031017'
|
||||
|
||||
- name: Theme Documentation 主题文档
|
||||
url: https://fixit.lruihao.cn/categories/documentation/
|
||||
about: Please read the documentation carefully. 请先仔细阅读主题文档。
|
||||
about: Please ask questions in Discussion.
|
||||
- name: Theme Documentation
|
||||
url: https://fixit.lruihao.cn/
|
||||
about: Please read the documentation carefully.
|
||||
|
||||
@@ -1,22 +1,35 @@
|
||||
name: "Feature request 功能请求"
|
||||
description: "Suggest an idea for this project 为这个项目提供一个建议"
|
||||
title: "[FEATURE] Some feature"
|
||||
labels: ["enhancement"]
|
||||
name: Feature Request
|
||||
description: Suggest an idea for this project
|
||||
title: '[Feature request] '
|
||||
body:
|
||||
- type: textarea
|
||||
id: describe
|
||||
attributes:
|
||||
label: Describe the feature you want 描述你的功能需求
|
||||
description: |
|
||||
Please submit new issues for different features.
|
||||
请针对不同的功能建议提交新的 issue。
|
||||
placeholder: |
|
||||
I recommend adding this feature ...
|
||||
我希望添加这样的一个功能……
|
||||
- type: textarea
|
||||
id: reference
|
||||
attributes:
|
||||
label: Useful reference 有价值的参考
|
||||
description: |
|
||||
If available, provide useful links to fulfill the feature.
|
||||
如果可以的话,提供实现这个功能的相关参考链接。
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for your interest in the project and taking the time to fill out this feature request!
|
||||
- type: textarea
|
||||
id: feature-description
|
||||
attributes:
|
||||
label: Clear and concise description of the problem
|
||||
description: As a user or developer using FixIt, what feature your want in details. If you intend to submit a PR for this issue, tell us in the description. Thanks!
|
||||
placeholder: Feature description
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: suggested-solution
|
||||
attributes:
|
||||
label: Suggested solution
|
||||
description: We could provide following implementation...
|
||||
placeholder: Suggested solution
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: alternative
|
||||
attributes:
|
||||
label: Alternative
|
||||
description: Clear and concise description of any alternative solutions or features you've considered.
|
||||
placeholder: Alternative solution
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Any other context or screenshots about the feature request here.
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<!-- Thank you for contributing! -->
|
||||
|
||||
### Description
|
||||
|
||||
<!-- Please insert your description here and provide especially info about the "what" this PR is solving -->
|
||||
|
||||
### Before submitting the PR, please make sure you do the following <!-- (put an "X" next to an item) -->
|
||||
|
||||
- [ ] Read the [Contributing Guidelines](https://github.com/hugo-fixit/FixIt/blob/main/CONTRIBUTING.md).
|
||||
- [ ] Provide a description in this PR that addresses **what** the PR is solving. If this PR is going to solve an existing issue, please reference the issue (e.g. `close #123`).
|
||||
|
||||
### What is the purpose of this pull request? <!-- (put an "X" next to an item) -->
|
||||
|
||||
- [ ] Bug fix
|
||||
- [ ] New feature
|
||||
- [ ] Other
|
||||
|
||||
### Screenshots
|
||||
|
||||
<!-- If your PR includes UI changes, please provide before/after screenshots. If there are any other images that add context to the PR, add them here as well -->
|
||||
|
||||
**Before**
|
||||
|
||||
**After**
|
||||
@@ -1,27 +0,0 @@
|
||||
# Set to true to add reviewers to PRs
|
||||
addReviewers: true
|
||||
|
||||
# Set to 'author' to add PR's author as a assignee
|
||||
addAssignees: author
|
||||
|
||||
# A list of reviewers to be added to PRs (GitHub user name)
|
||||
reviewers:
|
||||
- Lruihao
|
||||
|
||||
# A number of reviewers added to the PR
|
||||
# Set 0 to add all the reviewers (default: 0)
|
||||
numberOfReviewers: 1
|
||||
|
||||
# A list of assignees, overrides reviewers if set
|
||||
assignees:
|
||||
- Lruihao
|
||||
|
||||
# A number of assignees to add to the PRs
|
||||
# Set to 0 to add all of the assignees.
|
||||
# Uses numberOfReviewers if unset.
|
||||
numberOfAssignees: 0
|
||||
|
||||
# A list of keywords to be skipped the process if PR's title include it
|
||||
skipKeywords:
|
||||
- wip
|
||||
- deps-dev
|
||||
@@ -1,5 +1,4 @@
|
||||
name: "CodeQL config"
|
||||
name: CodeQL config
|
||||
|
||||
paths-ignore:
|
||||
- assets/lib/**
|
||||
- docs/**
|
||||
@@ -0,0 +1,315 @@
|
||||
# FixIt 编码标准和指导原则
|
||||
|
||||
本文档定义了 FixIt 主题项目的编码标准、最佳实践和开发指导原则。所有贡献者和 AI 助手在参与项目开发时都应遵循这些规范。
|
||||
|
||||
## 项目概述
|
||||
|
||||
FixIt 是一个面向 Hugo 静态网站生成器的现代化、响应式主题。项目基于以下技术栈:
|
||||
|
||||
- **Hugo**: 静态网站生成器(≥ 0.156.0)
|
||||
- **SCSS**: CSS 预处理器,用于样式开发
|
||||
- **JavaScript**: ES6+ 标准,用于前端交互功能
|
||||
- **Go Templates**: Hugo 模板引擎
|
||||
- **Node.js**: 开发环境和构建工具
|
||||
- **pnpm**: 包管理器
|
||||
|
||||
## 目录结构约定
|
||||
|
||||
```
|
||||
FixIt/
|
||||
├── apps/ # 最小化站点
|
||||
│ ├── demo/ # 演示站点
|
||||
│ └── test/ # 测试站点
|
||||
├── archetypes/ # 内容模板
|
||||
├── assets/ # 主题资源文件
|
||||
│ ├── css/ # SCSS 样式文件
|
||||
│ ├── js/ # JavaScript 文件
|
||||
│ ├── images/ # 图像资源
|
||||
│ └── lib/ # 第三方库
|
||||
├── i18n/ # 国际化翻译文件
|
||||
├── layouts/ # Hugo 模板文件
|
||||
│ ├── _markup/ # Hugo 渲染钩子
|
||||
│ ├── _partials/ # 可复用模板组件
|
||||
│ └── _shortcodes/ # 自定义短代码
|
||||
├── packages/ # 主题相关包
|
||||
├── static/ # 静态文件
|
||||
├── hugo.toml # 主题默认配置
|
||||
└── package.json # npm 脚本和依赖
|
||||
```
|
||||
|
||||
## SCSS/CSS 编码规范
|
||||
|
||||
### 文件组织结构
|
||||
|
||||
1. **主入口文件**: `assets/css/style.scss`
|
||||
2. **变量文件**: `assets/css/_variables.scss` - 全局变量定义
|
||||
3. **覆写文件**: `assets/css/_override.scss` - 用户自定义覆写
|
||||
4. **组织结构**:
|
||||
- `_core/`: 核心样式(基础、布局、媒体查询等)
|
||||
- `_mixin/`: SCSS mixins 和函数
|
||||
- `_page/`: 页面特定样式
|
||||
- `_partials/`: 组件样式
|
||||
- `_shortcodes/`: 短代码样式
|
||||
|
||||
### 命名约定
|
||||
|
||||
1. **CSS 类名**: 使用 BEM 方法论或语义化命名
|
||||
|
||||
```scss
|
||||
.header-desktop {}
|
||||
.menu-item {}
|
||||
.single-title {}
|
||||
.post-tag {}
|
||||
```
|
||||
|
||||
2. **SCSS 变量**: 使用连字符分隔,语义化命名
|
||||
|
||||
```scss
|
||||
$global-font-family: system-ui, sans-serif;
|
||||
$code-background-color: #f6f8fa;
|
||||
$header-height: 3.5rem;
|
||||
```
|
||||
|
||||
3. **CSS 自定义属性**: 使用前缀约定
|
||||
|
||||
```scss
|
||||
$prefix: fi-;
|
||||
$rootPrefix: --fi-;
|
||||
```
|
||||
|
||||
### 样式组织原则
|
||||
|
||||
1. **主题切换支持**: 使用 CSS 变量实现主题切换
|
||||
|
||||
```scss
|
||||
.element {
|
||||
color: var(#{$rootPrefix}global-font-color);
|
||||
}
|
||||
```
|
||||
|
||||
2. **Mixin 使用**: 提高代码复用性
|
||||
|
||||
```scss
|
||||
@include border-radius;
|
||||
@include transition(all 0.2s ease);
|
||||
@include blur;
|
||||
```
|
||||
|
||||
### 代码质量要求
|
||||
|
||||
1. **缩进**: 使用 2 个空格
|
||||
2. **注释**: 为复杂逻辑添加注释
|
||||
3. **颜色**: 使用变量而非硬编码颜色值
|
||||
4. **单位**: 优先使用相对单位(rem、em、%)
|
||||
|
||||
## JavaScript 编码规范
|
||||
|
||||
### 代码风格
|
||||
|
||||
1. **ES6+ 标准**: 使用现代 JavaScript 语法
|
||||
2. **模块化**: 使用 ES6 模块系统
|
||||
|
||||
### 文件组织
|
||||
|
||||
1. **主题核心**: `assets/js/theme.js` - 主题核心逻辑
|
||||
2. **工具函数**: `assets/js/util.js` - 通用工具函数
|
||||
3. **特定功能**: 按功能划分独立模块
|
||||
|
||||
### 编码实例
|
||||
|
||||
```javascript
|
||||
// 使用 ES6 类
|
||||
export default class Util {
|
||||
copyText(text) {
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
// 主题类组织
|
||||
class FixIt {
|
||||
constructor() {
|
||||
this.config = window.config
|
||||
this.util = new Util()
|
||||
}
|
||||
|
||||
init() {
|
||||
this.initTheme()
|
||||
this.initComponents()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 最佳实践
|
||||
|
||||
1. **错误处理**: 使用 try-catch 处理异常
|
||||
2. **异步操作**: 优先使用 async/await
|
||||
3. **事件处理**: 合理使用事件委托
|
||||
4. **性能优化**: 避免不必要的 DOM 操作
|
||||
|
||||
## Hugo 模板规范
|
||||
|
||||
### 模板组织
|
||||
|
||||
1. **布局模板**: `layouts/` 目录下的主要模板
|
||||
2. **局部模板**: `layouts/_partials/` 下的可复用组件
|
||||
3. **短代码**: `layouts/_shortcodes/` 下的内容短代码
|
||||
|
||||
### 编码约定
|
||||
|
||||
1. **变量命名**: 使用驼峰命名法
|
||||
|
||||
```go-html-template
|
||||
{{- $footerConfig := .Site.Params.footer -}}
|
||||
{{- $fingerprint := .Site.Store.Get "fingerprint" -}}
|
||||
```
|
||||
|
||||
2. **注释规范**: 使用 Hugo 注释语法
|
||||
|
||||
```go-html-template
|
||||
{{- /* 这是模板注释 */ -}}
|
||||
{{- /*
|
||||
多行注释
|
||||
可以跨越多行
|
||||
*/ -}}
|
||||
```
|
||||
|
||||
3. **条件判断**: 清晰的条件结构
|
||||
|
||||
```go-html-template
|
||||
{{- if ne $config.enable false -}}
|
||||
<!-- 内容 -->
|
||||
{{- end -}}
|
||||
```
|
||||
|
||||
4. **循环遍历**: 合理使用 range
|
||||
|
||||
```go-html-template
|
||||
{{- range $index, $value := .Pages -}}
|
||||
<!-- 处理逻辑 -->
|
||||
{{- end -}}
|
||||
```
|
||||
|
||||
### 国际化处理
|
||||
|
||||
1. **翻译函数**: 使用 `T` 函数
|
||||
|
||||
```go-html-template
|
||||
{{ T "header.switchTheme" }}
|
||||
```
|
||||
|
||||
2. **多语言支持**: 考虑多语言环境
|
||||
|
||||
```go-html-template
|
||||
{{- if hugo.IsMultilingual -}}
|
||||
<!-- 多语言逻辑 -->
|
||||
{{- end -}}
|
||||
```
|
||||
|
||||
## 开发工作流程
|
||||
|
||||
### 环境设置
|
||||
|
||||
1. **前置要求**:
|
||||
- Node.js (≥ 20.0.0)
|
||||
- Hugo Extended (≥ 0.156.0)
|
||||
- pnpm (包管理器)
|
||||
|
||||
2. **开发命令**:
|
||||
|
||||
```bash
|
||||
pnpm dev:demo # 启动 demo 站点开发服务器
|
||||
pnpm dev:test # 启动 test 站点开发服务器
|
||||
pnpm dev:docs # 启动文档开发服务器(需有 fixit-docs 作为同级目录)
|
||||
pnpm build:demo # 构建 demo 站点
|
||||
pnpm build:test # 构建 test 站点
|
||||
pnpm build # 一键构建所有站点
|
||||
pnpm preview # 预览构建后的站点(需先构建)
|
||||
```
|
||||
|
||||
### 代码质量
|
||||
|
||||
1. **代码审查**: 提交前进行自我审查
|
||||
2. **测试验证**: 在多个环境中测试功能
|
||||
3. **文档更新**: 必要时更新相关文档
|
||||
4. **向后兼容**: 确保更改不破坏现有功能
|
||||
|
||||
### Git 提交规范
|
||||
|
||||
遵循 [Conventional Commits](https://www.conventionalcommits.org/) 规范:
|
||||
|
||||
```
|
||||
feat: 新增功能
|
||||
fix: 修复 bug
|
||||
docs: 文档更新
|
||||
style: 代码格式调整
|
||||
refactor: 代码重构
|
||||
test: 测试相关
|
||||
chore: 构建过程或工具相关
|
||||
```
|
||||
|
||||
## 性能优化指导
|
||||
|
||||
### CSS 性能
|
||||
|
||||
1. **选择器优化**: 避免过深的嵌套
|
||||
2. **媒体查询**: 合理组织响应式断点
|
||||
3. **动画优化**: 使用 transform 和 opacity
|
||||
4. **资源压缩**: 生产环境启用压缩
|
||||
|
||||
### JavaScript 性能
|
||||
|
||||
1. **延迟加载**: 非关键脚本使用 defer
|
||||
2. **事件优化**: 合理使用防抖和节流
|
||||
3. **内存管理**: 及时清理事件监听器
|
||||
4. **模块化**: 按需加载功能模块
|
||||
|
||||
### Hugo 模板性能
|
||||
|
||||
1. **缓存策略**: 合理使用 Hugo 缓存机制
|
||||
2. **资源处理**: 优化图片和静态资源
|
||||
3. **构建优化**: 减少不必要的模板处理
|
||||
|
||||
## 可访问性要求
|
||||
|
||||
1. **语义化 HTML**: 使用正确的 HTML 标签
|
||||
2. **ARIA 属性**: 为复杂组件添加 ARIA 支持
|
||||
3. **键盘导航**: 确保键盘可访问性
|
||||
4. **颜色对比**: 满足 WCAG 对比度要求
|
||||
5. **屏幕阅读器**: 提供适当的文本替代
|
||||
|
||||
## 浏览器兼容性
|
||||
|
||||
1. **目标浏览器**: 支持现代浏览器
|
||||
2. **渐进增强**: 基础功能向下兼容
|
||||
3. **特性检测**: 使用特性检测而非浏览器检测
|
||||
4. **Polyfill**: 必要时提供 polyfill 支持
|
||||
|
||||
## 安全考虑
|
||||
|
||||
1. **XSS 防护**: 正确处理用户输入
|
||||
2. **CSRF 保护**: 表单提交安全
|
||||
3. **内容安全**: 合理设置 CSP 策略
|
||||
4. **依赖安全**: 定期更新依赖包
|
||||
|
||||
## 文档要求
|
||||
|
||||
1. **代码注释**: 复杂逻辑必须注释
|
||||
2. **API 文档**: 公共方法需要文档
|
||||
3. **使用示例**: 提供清晰的使用示例
|
||||
4. **更新日志**: 重要更改记录在 CHANGELOG
|
||||
|
||||
## 第三方库管理
|
||||
|
||||
1. **依赖选择**: 优先选择轻量、维护活跃的库
|
||||
2. **版本管理**: 及时更新安全补丁
|
||||
3. **许可证**: 确保许可证兼容性
|
||||
4. **定制化**: 必要时进行本地化修改
|
||||
|
||||
## 贡献指导
|
||||
|
||||
1. **讨论优先**: 重大更改前先讨论
|
||||
2. **小步迭代**: 避免大规模重构
|
||||
3. **测试覆盖**: 新功能需要充分测试
|
||||
4. **文档同步**: 功能和文档同时更新
|
||||
|
||||
遵循这些编码标准将有助于维护代码质量,提高开发效率,并确保项目的长期可维护性。
|
||||
+30
-16
@@ -1,34 +1,48 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "npm" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
- package-ecosystem: npm # See documentation for possible values
|
||||
directory: / # Location of package manifests
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
interval: monthly
|
||||
open-pull-requests-limit: 1000
|
||||
assignees:
|
||||
- "Lruihao"
|
||||
- Lruihao
|
||||
labels:
|
||||
- "dependencies"
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
- dependencies
|
||||
ignore:
|
||||
- dependency-name: '@types/node'
|
||||
update-types:
|
||||
- 'version-update:semver-major'
|
||||
groups:
|
||||
npm-development:
|
||||
dependency-type: development
|
||||
update-types:
|
||||
- minor
|
||||
- patch
|
||||
npm-production:
|
||||
dependency-type: production
|
||||
update-types:
|
||||
- patch
|
||||
- package-ecosystem: github-actions
|
||||
directory: /
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
interval: monthly
|
||||
open-pull-requests-limit: 1000
|
||||
assignees:
|
||||
- "Lruihao"
|
||||
- Lruihao
|
||||
labels:
|
||||
- "dependencies"
|
||||
- package-ecosystem: "gitsubmodule"
|
||||
directory: "/"
|
||||
- dependencies
|
||||
- package-ecosystem: gitsubmodule
|
||||
directory: /
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
interval: weekly
|
||||
open-pull-requests-limit: 1000
|
||||
assignees:
|
||||
- "Lruihao"
|
||||
- Lruihao
|
||||
labels:
|
||||
- "dependencies"
|
||||
- dependencies
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
changelog:
|
||||
exclude:
|
||||
labels:
|
||||
- ignore-for-release
|
||||
authors:
|
||||
- dependabot
|
||||
categories:
|
||||
- title: New features
|
||||
labels:
|
||||
- feature
|
||||
- title: Enhancement
|
||||
labels:
|
||||
- enhancement
|
||||
- title: Fixes
|
||||
labels:
|
||||
- bug
|
||||
- title: Other Changes
|
||||
labels:
|
||||
- '*'
|
||||
@@ -1,48 +0,0 @@
|
||||
name: Update Algolia Search Index
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- "docs"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
algolia-atomic:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive # Fetch Hugo themes (true OR recursive)
|
||||
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
|
||||
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
with:
|
||||
hugo-version: "latest"
|
||||
extended: true
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
npm install
|
||||
npm run build
|
||||
|
||||
- name: Update Algolia Index (en)
|
||||
env:
|
||||
ALGOLIA_APP_ID: YKOM6PKLUY
|
||||
ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }}
|
||||
ALGOLIA_INDEX_NAME: "index.en"
|
||||
ALGOLIA_INDEX_FILE: "./docs/public/index.json"
|
||||
run: |
|
||||
npm run algolia
|
||||
|
||||
- name: Update Algolia Index (zh-cn)
|
||||
env:
|
||||
ALGOLIA_APP_ID: YKOM6PKLUY
|
||||
ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }}
|
||||
ALGOLIA_INDEX_NAME: "index.zh-cn"
|
||||
ALGOLIA_INDEX_FILE: "./docs/public/zh-cn/index.json"
|
||||
run: |
|
||||
npm run algolia
|
||||
@@ -1,14 +0,0 @@
|
||||
name: Auto Assign
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
jobs:
|
||||
run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: wow-actions/auto-assign@v3
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CONFIG_FILE: .github/configs/auto-assign.yml
|
||||
@@ -1,21 +0,0 @@
|
||||
name: Hugo build check
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
Actions-Hugo-Check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive # Fetch Hugo themes (true OR recursive)
|
||||
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
with:
|
||||
hugo-version: latest
|
||||
extended: true
|
||||
- name: Build Hugo static files
|
||||
run: hugo -v --source=docs --gc --minify
|
||||
@@ -9,17 +9,17 @@
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
name: CodeQL
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
schedule:
|
||||
- cron: "30 18 * * 5"
|
||||
- cron: '30 18 * * 5'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
@@ -29,44 +29,44 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ "javascript" ]
|
||||
language: [javascript]
|
||||
# CodeQL supports [ "cpp", "csharp", "go", "java", "javascript", "python" ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true # Fetch Hugo themes (true OR recursive)
|
||||
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: true # Fetch Hugo themes (true OR recursive)
|
||||
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
config-file: ./.github/configs/codeql.yml
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v4
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
config-file: ./.github/configs/codeql.yml
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v4
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
# - run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v4
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
name: Generate Contribute List
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
contrib-readme-job:
|
||||
runs-on: ubuntu-latest
|
||||
name: A job to automate contribute list in contributors.md file
|
||||
steps:
|
||||
- name: First Contribution Check
|
||||
id: first-check
|
||||
uses: sukki37/first-contribution-check-action@v1.0.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.CONTRIBUTORS_TOKEN }}
|
||||
- name: Contribute List
|
||||
uses: akhilmhdh/contributors-readme-action@master
|
||||
if: ${{ steps.first-check.outputs.isNewContributor == 'true' }}
|
||||
with:
|
||||
readme_path: "contributors.md"
|
||||
image_size: 100
|
||||
commit_message: ":busts_in_silhouette: Chore(contributor): contrib-readme-action has updated contributors.md"
|
||||
committer_username: "github-actions[bot]"
|
||||
committer_email: "github-actions[bot]@users.noreply.github.com"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.CONTRIBUTORS_TOKEN }}
|
||||
@@ -0,0 +1,40 @@
|
||||
name: Generate hugo-fixit component list
|
||||
on:
|
||||
schedule: # Run workflow automatically
|
||||
- cron: '0 0 * * *' # Runs every day at 00:00 UTC
|
||||
workflow_dispatch: # Run workflow manually (without waiting for the cron to be called), through the GitHub Actions Workflow page directly
|
||||
permissions:
|
||||
contents: write # To write the generated contents to the readme
|
||||
pull-requests: write # To create a pull request
|
||||
|
||||
jobs:
|
||||
generate-component-list:
|
||||
if: github.repository == 'hugo-fixit/FixIt'
|
||||
name: Update this repo's README with the list of hugo-fixit theme components
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
- name: Generate hugo-fixit component list
|
||||
uses: hugo-fixit/action-component-list@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
comment_tag_name: HUGO_FIXIT_COMPONENTS
|
||||
readme_path: 'README.md,README.zh-cn.md'
|
||||
template: "- [{$repo.name}]({$repo.html_url})\\\n {$repo.description}"
|
||||
# - name: Commit changes
|
||||
# uses: stefanzweifel/git-auto-commit-action@v5
|
||||
# with:
|
||||
# commit_message: 'docs(readme): update hugo-fixit component list'
|
||||
# commit_author: 'github-actions[bot] <github-actions[bot]@users.noreply.github.com>'
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v8
|
||||
with:
|
||||
title: Update hugo-fixit component list
|
||||
commit-message: 'docs(readme): update hugo-fixit component list'
|
||||
body: This PR updates the hugo-fixit component list in the README.
|
||||
base: main
|
||||
branch: update-component-list
|
||||
labels: documentation
|
||||
reviewers: Lruihao
|
||||
@@ -0,0 +1,49 @@
|
||||
name: Release for new tag
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for generating release notes
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: .nvmrc
|
||||
cache: pnpm
|
||||
|
||||
- name: Install fixit-cli
|
||||
run: pnpm install -g fixit-cli
|
||||
- name: Split theme configuration
|
||||
run: |
|
||||
fixit split
|
||||
tar -zcvf config_toml.tar.gz config
|
||||
rm -rf config
|
||||
fixit split -y
|
||||
tar -zcvf config_yaml.tar.gz config
|
||||
rm -rf config
|
||||
|
||||
- name: Generate release notes
|
||||
run: |
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm changelog --starting-version ${{ github.ref_name }}
|
||||
sed -i '1,4d' CHANGELOG.md
|
||||
|
||||
- name: GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
draft: true
|
||||
body_path: CHANGELOG.md
|
||||
files: |
|
||||
config_toml.tar.gz
|
||||
config_yaml.tar.gz
|
||||
+6
-2
@@ -8,9 +8,12 @@ jsconfig.json
|
||||
|
||||
# NPM
|
||||
node_modules/
|
||||
.eslintcache
|
||||
|
||||
# VSCode
|
||||
.vscode
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
!.vscode/settings.json
|
||||
|
||||
# OS Files
|
||||
## Windows
|
||||
@@ -25,4 +28,5 @@ $RECYCLE.BIN/
|
||||
## Linux
|
||||
.directory
|
||||
|
||||
|
||||
CHANGELOG.md
|
||||
.stash/
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
[submodule "docs"]
|
||||
path = docs
|
||||
url = https://github.com/hugo-fixit/docs.git
|
||||
@@ -1,2 +1,3 @@
|
||||
tag-version-prefix="v"
|
||||
message=":bookmark: Chore(release): %s"
|
||||
ignore-workspace-root-check=true
|
||||
message="chore(release): %s"
|
||||
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"budparr.language-hugo-vscode",
|
||||
"kaellarkin.hugo-shortcode-syntax",
|
||||
"lruihao.hugo-partials-refs",
|
||||
"tamasfe.even-better-toml"
|
||||
]
|
||||
}
|
||||
Vendored
+85
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"todo-tree.tree.scanMode": "workspace only",
|
||||
"explorer.fileNesting.enabled": true,
|
||||
"explorer.fileNesting.patterns": {
|
||||
"tsconfig.json": "tsconfig.*.json, env.d.ts",
|
||||
"package.json": "package-lock.json, pnpm*, .yarnrc*, yarn*, .eslint*, eslint*, .oxlint*, oxlint*, .prettier*, prettier*, .editorconfig"
|
||||
},
|
||||
// Disable the default formatter, use eslint instead
|
||||
"prettier.enable": false,
|
||||
"editor.formatOnSave": false,
|
||||
// Auto fix
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit",
|
||||
"source.organizeImports": "never"
|
||||
},
|
||||
// Silent the stylistic rules in you IDE, but still auto fix them
|
||||
"eslint.rules.customizations": [
|
||||
{
|
||||
"rule": "style/*",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "format/*",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*-indent",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*-spacing",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*-spaces",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*-order",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*-dangle",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*-newline",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*quotes",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
},
|
||||
{
|
||||
"rule": "*semi",
|
||||
"severity": "off",
|
||||
"fixable": true
|
||||
}
|
||||
],
|
||||
// Enable eslint for all supported languages
|
||||
"eslint.validate": [
|
||||
"go-html-template",
|
||||
"javascript",
|
||||
"typescript",
|
||||
"html",
|
||||
"markdown",
|
||||
"json",
|
||||
"json5",
|
||||
"jsonc",
|
||||
"yaml",
|
||||
"toml",
|
||||
"xml",
|
||||
"css",
|
||||
"scss"
|
||||
]
|
||||
}
|
||||
-326
@@ -1,326 +0,0 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
<!-- Releases see https://github.com/hugo-fixit/FixIt/releases -->
|
||||
|
||||
## v0.2.18 [2023.3.31]
|
||||
|
||||
> **Note**
|
||||
> This will be the last relatively stable 0.x release, after which the first major release will be incompatible with all previous 0.x releases
|
||||
> Snapshot: <>
|
||||
|
||||
## :boom: Breaking Updates
|
||||
|
||||
- Refactor author data config [#288](https://github.com/hugo-fixit/FixIt/pull/288)
|
||||
|
||||
## :new: What's New
|
||||
|
||||
- :tada: Feat: add natively support mermaid with code fences ([#230](https://github.com/hugo-fixit/FixIt/issues/230))
|
||||
- :tada: Feat: add breadcrumb navigation ([#309](https://github.com/hugo-fixit/FixIt/pull/309))
|
||||
- :sparkles: Feat: add instant page (@Mejituu [#279](https://github.com/hugo-fixit/FixIt/pull/279))
|
||||
- :sparkles: Feat: add `force` option value to `params.page.lightgallery`
|
||||
- :sparkles: Feat: add loop parameter for typeit ([#303](https://github.com/hugo-fixit/FixIt/pull/303))
|
||||
- :sparkles: Feat: add paramater strict for giscus comment
|
||||
- :bug: Fix: donate images without lazy loading (@Mejituu [#279](https://github.com/hugo-fixit/FixIt/pull/279))
|
||||
- :bug: Fix: discordinvite typo (@mathieu-gilloots [#282](https://github.com/hugo-fixit/FixIt/pull/282))
|
||||
- :bug: Fix: missing parameter `requiredFields` for Valine
|
||||
- :bug: Fix: js.build is executed after fingerprint, resulting in the destruction of js integrity
|
||||
- :bug: Fix: toc fails when the toc aside is on the left
|
||||
- :bug: Fix: APlayer invades the click event of the anchor links, resulting in invalid Chinese anchor links scrolling ([#292](https://github.com/hugo-fixit/FixIt/issues/292))
|
||||
- :bug: Fix: resolve style conflicts between valine and animate.css ([#304](https://github.com/hugo-fixit/FixIt/issues/304))
|
||||
- :bug: Fix: version `v0.2.17` is not compatible with previous versions
|
||||
- :bug: Fix: `crypto-js/md5.js` and `crypto-js/sha256.js` cdn path error
|
||||
- :bug: Fix: HackTheBox social link not in the right format ([#308](https://github.com/hugo-fixit/FixIt/issues/308))
|
||||
- :recycle: Refactor: image lazy loading ([#283](https://github.com/hugo-fixit/FixIt/pull/283))
|
||||
- :recycle: Refactor: author's avatar of post or profile ([#288](https://github.com/hugo-fixit/FixIt/pull/288))
|
||||
- :recycle: Refactor: language switch in desktop header ([#306](https://github.com/hugo-fixit/FixIt/pull/306))
|
||||
- :recycle: Refactor(reward): add parameter `mode` for post reward and refactor shortcode `reward`
|
||||
- :wheelchair: Feat: add post update date to post meta ([#285](https://github.com/hugo-fixit/FixIt/issues/285))
|
||||
- :art: Style: fix `#comments` css style conflict ([#269](https://github.com/hugo-fixit/FixIt/issues/269))
|
||||
- :art: Style: adjust the mobile header style and fix the bug that scrolling is invalid when there are too many menus on mobile ([#289](https://github.com/hugo-fixit/FixIt/issues/289))
|
||||
- :art: Perf: optimize the scroll bar style of body and toc-auto elements
|
||||
- :memo: Docs: refactor the theme documentation
|
||||
- :wrench: Chore: change the theme minimum supported Hugo versions above **0.109.0**
|
||||
- :arrow_up: Chore(libs):
|
||||
- Update Update @waline/client from 2.10.0 to 2.14.7 (@Mejituu [#279](https://github.com/hugo-fixit/FixIt/pull/279))
|
||||
- Update typeit from 8.7.0 to 8.7.1
|
||||
- Update mermaid from 9.1.7 to 9.4.3
|
||||
- Update Artalk from 2.3.4 to 2.5.2
|
||||
- **Full Changelog:** @Lruihao [`v0.2.17...v0.2.18`](https://github.com/hugo-fixit/FixIt/compare/v0.2.17...v0.2.18)
|
||||
|
||||
## v0.2.17 [2023.1.29]
|
||||
|
||||
> Snapshot: <https://fixit-pcwilecsu-x-cell.vercel.app>
|
||||
|
||||
- :tada: Feat: add support for [Fusejs search](https://fusejs.io/) ([#203](https://github.com/hugo-fixit/FixIt/issues/203))
|
||||
- :sparkles: Feat: add feature post reward support ([#216](https://github.com/hugo-fixit/FixIt/issues/216), @Lruihao[#234](https://github.com/hugo-fixit/FixIt/pull/234))
|
||||
- :sparkles: Feat: add reward shortcode support ([#216](https://github.com/hugo-fixit/FixIt/issues/216))
|
||||
- :sparkles: Feat: add TagCloud config support for tags page, see parameter `params.tagcloud` ([#235](https://github.com/hugo-fixit/FixIt/issues/235))
|
||||
- :sparkles: Feat: add [pace](https://github.com/CodeByZach/pace) support ([#190](https://github.com/hugo-fixit/FixIt/issues/190))
|
||||
- :sparkles: Feat: add custom templates and parameter `params.customFilePath` support
|
||||
- :sparkles: Feat: add feature end of post flag support ([#236](https://github.com/hugo-fixit/FixIt/issues/236))
|
||||
- :sparkles: Feat: refactor parameter `params.footer.siteTime`
|
||||
- :sparkles: Feat: add params to close wordcount and readingTime in post ([#209](https://github.com/hugo-fixit/FixIt/issues/209))
|
||||
- :sparkles: Feat: add parameter `params.footer.order` to order footer lines
|
||||
- :sparkles: Feat: add parameter `params.home.profile.avatarMenu`
|
||||
- :truck: Feat: migrate parameter `params.autoBookmark` to `params.page.autoBookmark` ([#55](https://github.com/hugo-fixit/FixIt/issues/55))
|
||||
- :truck: Feat: move `assets/data/emoji` to `assets/lib/valine/emoji/`
|
||||
- :zap: Perf: optimize close comment feature when the post has expired ([#204](https://github.com/hugo-fixit/FixIt/issues/204))
|
||||
- :zap: Perf: optimize sub menu position calculation in desktop header with css replace of javascript
|
||||
- :zap: Perf: enhance pangu spelling correction
|
||||
- :bug: Fix: remove the leading and trailing whitespace of the code string ([#205](https://github.com/hugo-fixit/FixIt/issues/205))
|
||||
- :bento: Fix: update webfonts for fontawesome 6.2.0 (@NicoDreamzZ [#228](https://github.com/hugo-fixit/FixIt/pull/228))
|
||||
- :bug: Fix: image shortcode/plugin lose the support for svg type files ([#210](https://github.com/hugo-fixit/FixIt/issues/210))
|
||||
- :bug: Fix: can't keep the static table of the contents in front of the post
|
||||
- :bug: Fix: escape hashtag character `#` in tag and category ([#245](https://github.com/hugo-fixit/FixIt/issues/245))
|
||||
- :bug: Fix: pangu.js cdn error
|
||||
- :bug: Fix: sitemap.xml link in robots.txt doesn't point to main sitemap (@Mejituu [#276](https://github.com/hugo-fixit/FixIt/pull/276))
|
||||
- :recycle: Refactor(i18n): hierarchize translation fields for supported languages
|
||||
- :globe_with_meridians: Docs(i18n): add missing translations for French + enhancements (@Kapusch [#247](https://github.com/hugo-fixit/FixIt/pull/247))
|
||||
- :lipstick: Style: refactor css style
|
||||
- :lipstick: Style: update home page stylesheet
|
||||
- :arrow_up: Chore(libs):
|
||||
- Update Twikoo from 1.4.10 to 1.6.8 and add Katex support for it ([#215](https://github.com/hugo-fixit/FixIt/issues/215) [#243](https://github.com/hugo-fixit/FixIt/issues/243))
|
||||
- :wrench: Chore(deps-dev):
|
||||
- Bump @babel/cli from 7.18.10 to 7.20.7
|
||||
- Bump @babel/core from 7.19.1 to 7.20.12
|
||||
- Bump @babel/preset-env from 7.18.10 to 7.20.2
|
||||
- Bump core-js from 3.25.2 to 3.27.2
|
||||
- :wrench: Chore(deps-dev):
|
||||
- Bump @babel/cli from 7.20.7 to 7.17.10
|
||||
- Bump @babel/core from 7.20.12 to 7.21.4
|
||||
- Bump @babel/preset-env from 7.20.2 to 7.21.4
|
||||
- Bump core-js from 3.27.2 to 3.29.1
|
||||
- **Full Changelog:** @Lruihao [`v0.2.16...v0.2.17`](https://github.com/hugo-fixit/FixIt/compare/v0.2.16...v0.2.17)
|
||||
|
||||
## v0.2.16 [2022.9.24]
|
||||
|
||||
> This version fixes several bugs, adds a few new features and SEO optimizations, and refactors part of the project structure and code.
|
||||
> Snapshot: <https://fixit-jir7e7kzt-x-cell.vercel.app>
|
||||
|
||||
- :tada: Feat: add reading progress bar support ([#191](https://github.com/hugo-fixit/FixIt/issues/191))
|
||||
- :tada: Feat: add b2t scroll percent support ([#192](https://github.com/hugo-fixit/FixIt/issues/192))
|
||||
- :sparkles: Feat: add auto bookmark support ([#55](https://github.com/hugo-fixit/FixIt/issues/55))
|
||||
- :sparkles: Feat: add `raw` shortcode
|
||||
- :sparkles: Feat(menu): add params: `icon`, `type` for menu items
|
||||
- :sparkles: Feat: add custom aside template in post page ([#172](https://github.com/hugo-fixit/FixIt/issues/172))
|
||||
- :sparkles: Feat(math): add more block delimiter support for math
|
||||
- :sparkles: Feat(highlight): add full support for Chroma highlighting languages in the [list](https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages)
|
||||
- :sparkles: Feat: add optional parameter `noreferrer` for the shortcode `link`
|
||||
- :sparkles: Feat: update echarts theme config
|
||||
- :sparkles: Feat: add noscript warning banner ([#194](https://github.com/hugo-fixit/FixIt/issues/194))
|
||||
- :sparkles: Feat: add 12 newly supported social links ([#175](https://github.com/hugo-fixit/FixIt/issues/175) [#197](https://github.com/hugo-fixit/FixIt/issues/197))
|
||||
- :zap: Perf: remove extra spaces in plugin link
|
||||
- :wheelchair: Feat(accessibility): use `aria-hidden=true` on icons that AT should ignore
|
||||
- :recycle: Refactor: image rendering
|
||||
- :recycle: Refactor: back to top and scroll to comments
|
||||
- :recycle: Refactor: custom.js rendering and remove `params.customJS` ([#189](https://github.com/hugo-fixit/FixIt/pull/189))
|
||||
- :recycle: Refactor: scss directory ([#185](https://github.com/hugo-fixit/FixIt/issues/185))
|
||||
- :recycle: Refactor: plugin script
|
||||
- :recycle: Refactor: version.template.svg
|
||||
- :recycle: Refactor: config ([#187](https://github.com/hugo-fixit/FixIt/issues/187))
|
||||
- :bug: Fix: add function `dos2unix` to unify new lines symbol between Windows and Unix/Mac OS
|
||||
- :bug: Fix: author display error in post and markdown file
|
||||
- :bug: Fix: use data attributes or class replace for custom attributes
|
||||
- :bug: Fix: attribute `media` not allowed on element meta in `[name=theme-color]`
|
||||
- :bug: Fix: support smooth migration from LoveIt to FixIt ([#174](https://github.com/hugo-fixit/FixIt/discussions/174) [#182](https://github.com/hugo-fixit/FixIt/issues/182))
|
||||
- :bug: Fix: `center-quote` shortcode rendering error when config `unsafe = false` (@yureiita [#160](https://github.com/hugo-fixit/FixIt/pull/160))
|
||||
- :bug: Fix: menu item invalid params `draft` in submenu
|
||||
- :bug: Fix: missing height and weight of img element and lazyload object-fit style
|
||||
- :bug: Fix: image shortcode invalid params `height` and `weight` ([#200](https://github.com/hugo-fixit/FixIt/issues/200))
|
||||
- :bug: Fix: typeit shortcode invalid config `duration = -1` and fix style
|
||||
- :bug: Fix: typeit shortcode prints consecutive spaces and newline errors
|
||||
- :art: Style: change the default icons of some social links
|
||||
- :bug: Fix: component `paginator` style error ([#188](https://github.com/hugo-fixit/FixIt/issues/188))
|
||||
- :lipstick: Style: fix language and theme switch cursor style ([#193](https://github.com/hugo-fixit/FixIt/issues/193))
|
||||
- :lipstick: Style: change line-break style of code element from `anywhere` to `auto`
|
||||
- :globe_with_meridians: Docs(i18n): update pt-br, de in i18n
|
||||
- :mag: Perf(SEO): enhance SEO performance
|
||||
- :wrench: Chore: modify babel config and optimize theme.js compilation and loading (revert [`65371a1`](https://github.com/hugo-fixit/FixIt/commit/65371a19a40591c3f403f7fde2b7001c3390354d))
|
||||
- :wrench: Chore: creating new go.mod: module github.com/hugo-fixit/FixIt
|
||||
- :arrow_up: Chore(libs):
|
||||
- Update simple-icons from 6.3.0 to 7.12.0
|
||||
- Update emoji-data from 5.0.1 to 14.0.0
|
||||
- Update mermaid from 9.1.3 to 9.1.7
|
||||
- Update typeit from 7.0.4 to 8.7.0
|
||||
- Update lightgallery from 1.4.0 to 2.6.1
|
||||
- Update Valine from 1.5.0 to 1.5.1
|
||||
- Update @waline/client from 2.6.1 to 2.10.0
|
||||
- Update mapbox-gl from 2.8.2 to 2.10.0
|
||||
- Update fontawesome-free from 6.1.1 to 6.2.0
|
||||
- Update katex from 0.15.3 to 0.16.2
|
||||
- Update echarts from 5.2.2 to 5.3.3
|
||||
- Update algoliasearch from 4.13.0 to 4.14.2
|
||||
- :wrench: Chore(deps-dev):
|
||||
- Remove dependencies: minimist, babel-preset-minify
|
||||
- Bump core-js from 3.24.1 to 3.25.2 (@dependabot [#201](https://github.com/hugo-fixit/FixIt/pull/201))
|
||||
- Bump @babel/core from 7.18.10 to 7.19.1 (@dependabot [#202](https://github.com/hugo-fixit/FixIt/pull/202))
|
||||
- **Full Changelog:** @Lruihao [`v0.2.15...v0.2.16`](https://github.com/hugo-fixit/FixIt/compare/v0.2.15...v0.2.16)
|
||||
|
||||
## v0.2.15 [2022.8.4]
|
||||
|
||||
> Add content encryption feature(pages, partial), total word count, enhance auto toc, developer options and more.
|
||||
> Snapshot: <https://fixit-hvd1rg4ba-x-cell.vercel.app>
|
||||
|
||||
- :truck: Feat: ransfer repository from Lruihao to hugo-fixit
|
||||
- :tada: Feat: add content encryption of pages ([#123](https://github.com/hugo-fixit/FixIt/issues/123))
|
||||
- :tada: Feat: add `fixit-encryptor` shortcode ([#123](https://github.com/hugo-fixit/FixIt/issues/123))
|
||||
- :sparkles: Feat: add total word count feature in section and remove from footer ([#124](https://github.com/hugo-fixit/FixIt/issues/124))
|
||||
- :sparkles: Feat: enhance auto toc feature ([#104](https://github.com/hugo-fixit/FixIt/issues/104) [#136](https://github.com/hugo-fixit/FixIt/issues/136))
|
||||
- :sparkles: Feat: add repost feature ([#156](https://github.com/hugo-fixit/FixIt/issues/156))
|
||||
- :sparkles: Feat: add developer options
|
||||
- Check for updates option
|
||||
- Mobile Devtools config ([#163](https://github.com/hugo-fixit/FixIt/pull/163))
|
||||
- :bug: Fix: unable to show search bar of header at mobile mode ([#143](https://github.com/hugo-fixit/FixIt/issues/143))
|
||||
- :bug: Fix: Giscus comment invalid config `inputPosition`
|
||||
- :bug: Fix: Waline comment invalid config `imageUploader = false` & `highlighter = false` (@yureiita [#161](https://github.com/hugo-fixit/FixIt/pull/161))
|
||||
- :bug: Fix: busuanzi logic error
|
||||
- :bug: Fix: close comment system logic error when the article was expired
|
||||
- :bug: Style: fix typos for rel attribute value noreferrer (@yureiita [#157](https://github.com/hugo-fixit/FixIt/pull/157))
|
||||
- :recycle: Refactor: migrate theme js from src to assets by js.build
|
||||
- :recycle: Refactor: change the post edit url splicing rules
|
||||
- :mag: Feat(SEO): add options to make output `baidu_urls.txt` file ([#138](https://github.com/hugo-fixit/FixIt/issues/138))
|
||||
- :truck: Feat: migrate exampleSite to docs submodule
|
||||
- :art: Style: add theme colors variables and add common color styles
|
||||
- :art: Style: add scroll bar for auto toc ([#136](https://github.com/hugo-fixit/FixIt/issues/136))
|
||||
- :art: Style: change the version badge style form flat-square to flat
|
||||
- :memo: Docs: revise theme documentations
|
||||
- :heavy_plus_sign: Feat: add theme core configuration settings file
|
||||
- :wrench: Feat(cdn): add unpkg cdn support
|
||||
- :wrench: Chore: change the theme minimum supported Hugo versions above **0.84.0**
|
||||
- :arrow_up: Chore(libs): update some third-party libraries
|
||||
- Update Artalk from 2.2.12 to 2.3.4 ([#150](https://github.com/hugo-fixit/FixIt/issues/150))
|
||||
- Update Waline from 1.5.2 to 2.6.1
|
||||
- Update Valine from 1.4.18 to 1.5.0
|
||||
- Update mermaid from 8.13.3 to 9.1.3
|
||||
- :arrow_up: Chore(deps-dev):
|
||||
- Bump babel-preset-minify from 0.5.1 to 0.5.2 ([#145](https://github.com/hugo-fixit/FixIt/pull/145))
|
||||
- Bump core-js from 3.22.0 to 3.24.1 ([#168](https://github.com/hugo-fixit/FixIt/pull/168))
|
||||
- Bump @babel/preset-env from 7.16.11 to 7.18.10 ([#169](https://github.com/hugo-fixit/FixIt/pull/169))
|
||||
- Bump @babel/cli from 7.17.6 to 7.18.10 ([#170](https://github.com/hugo-fixit/FixIt/pull/170))
|
||||
- Bump @babel/core from 7.17.9 to 7.18.10 ([#171](https://github.com/hugo-fixit/FixIt/pull/171))
|
||||
- **Full Changelog:** @Lruihao [`v0.2.14...v0.2.15`](https://github.com/hugo-fixit/FixIt/compare/v0.2.14...v0.2.15)
|
||||
|
||||
## v0.2.14 [2022.5.15]
|
||||
|
||||
> Add hugo new features support.
|
||||
> Snapshot: <https://fixit-p1tg6tsml-lruihao.vercel.app>
|
||||
|
||||
- :recycle: Refactor: header layout
|
||||
- :tada: Feat: add sub menu (nested menu) support ([#31](https://github.com/hugo-fixit/FixIt/issues/31))
|
||||
- :sparkles: Feat: add user-defined content to menu items via the `params` field ([#99](https://github.com/hugo-fixit/FixIt/issues/99))
|
||||
- :sparkles: Feat: modified language selector to submenu (@pandaoh [`eced169`](https://github.com/hugo-fixit/FixIt/commit/eced169713ce4a0208ce70ab556824e47eb671d5), @Lruihao [#31](https://github.com/hugo-fixit/FixIt/issues/31))
|
||||
- :bug: Fix: add "no more translations" judgment logic ([#100](https://github.com/hugo-fixit/FixIt/issues/100))
|
||||
- :bug: Fix: fix some header css bug ([#31](https://github.com/hugo-fixit/FixIt/issues/31))
|
||||
- :sparkles: Feat: enhance link render ([#96](https://github.com/hugo-fixit/FixIt/issues/96))
|
||||
- Add external icon for external links automatically
|
||||
- Add download icon for downloadable links
|
||||
- :sparkles: Feat: add giscus comment system ([#130](https://github.com/hugo-fixit/FixIt/issues/130))
|
||||
- :sparkles: Feat: link shortcode add `external-icon` option ([#96](https://github.com/hugo-fixit/FixIt/issues/96))
|
||||
- :sparkles: Feat: add GitHub Corners support ([#106](https://github.com/hugo-fixit/FixIt/issues/106))
|
||||
- :sparkles: Feat: add local avatar and gravatar support for post author ([#125](https://github.com/hugo-fixit/FixIt/issues/125))
|
||||
- :sparkles: Feat: add ~~total word count support in footer~~ ([#124](https://github.com/hugo-fixit/FixIt/issues/124))
|
||||
- :sparkles: Feat: add "Edit this page" button support ([#103](https://github.com/hugo-fixit/FixIt/issues/103))
|
||||
- :sparkles: Feat: add count badge for taxonomy ([#122](https://github.com/hugo-fixit/FixIt/issues/122))
|
||||
- :zap: Perf: add Gravatar config support
|
||||
- :bug: Fix: invalid front matter `comment: true` ([#108](https://github.com/hugo-fixit/FixIt/issues/108))
|
||||
- :bug: Fix: ibruce and watermark option negative value error ([#114](https://github.com/hugo-fixit/FixIt/issues/114))
|
||||
- :truck: Feat: *migrate ~~`home.profile.gravatarSite`~~ to `gravatar.host`*
|
||||
- :truck: Feat: *migrate ~~`ibruce.siteTime`~~ to `footer.siteTime`*
|
||||
- :lipstick: Style: add some common CSS styles Class ([#101](https://github.com/hugo-fixit/FixIt/issues/101))
|
||||
- :lipstick: Style: add the gap between and icon and text at blending typesetting (@ctj12461 @Lruihao [#118](https://github.com/hugo-fixit/FixIt/pull/118))
|
||||
- :lipstick: Style: modify blockquote CSS
|
||||
- :memo: Docs: revise theme documentations
|
||||
- :zap: Perf: remove third-party library clipboard.js ([#84](https://github.com/hugo-fixit/FixIt/issues/84))
|
||||
- :pencil2: Docs: fix highlight url typo in `theme-documentation-built-in-shortcodes` (@d-baer [#85](https://github.com/hugo-fixit/FixIt/pull/85))
|
||||
- :wrench: Chore(i18n): improve translations for the supported languages ([#119](https://github.com/hugo-fixit/FixIt/issues/119))
|
||||
- :wrench: Chore(i18n): add i18n support for console messages
|
||||
- :wrench: Chore: add deprecated parameter detection in cli
|
||||
- :arrow_up: Chore: update some third-party libraries
|
||||
- :wrench: Chore(deps-dev):
|
||||
- Bump minimist from 1.2.5 to 1.2.6 ([#92](https://github.com/hugo-fixit/FixIt/pull/92))
|
||||
- Bump @babel/core from 7.17.5 to 7.17.10 ([#126](https://github.com/hugo-fixit/FixIt/pull/126))
|
||||
- Bump core-js from 3.21.1 to 3.22.5 ([#129](https://github.com/hugo-fixit/FixIt/pull/129))
|
||||
- Bump @babel/cli from 7.17.6 to 7.17.10 ([#127](https://github.com/hugo-fixit/FixIt/pull/127))
|
||||
- Bump @babel/preset-env from 7.16.11 to 7.17.10 ([`bc74d14`](https://github.com/hugo-fixit/FixIt/commit/bc74d149c16b36644fecdd5bef325bf8087f8593))
|
||||
- **Full Changelog:** @Lruihao [`v0.2.13...v0.2.14`](https://github.com/hugo-fixit/FixIt/compare/v0.2.13...v0.2.14)
|
||||
|
||||
## v0.2.13 [2022.3.14]
|
||||
|
||||
> Improve and add some new features.
|
||||
> Snapshot: <https://fixit-bbh5g5x90-lruihao.vercel.app>
|
||||
|
||||
- :recycle: Refactor: page layout ([#65](https://github.com/hugo-fixit/FixIt/issues/65))
|
||||
- :tada: Feat: add Artalk comment support ([#54](https://github.com/hugo-fixit/FixIt/issues/54), @hiifong [#57](https://github.com/hugo-fixit/FixIt/pull/57))
|
||||
- :tada: Feat: add Waline comment support ([#36](https://github.com/hugo-fixit/FixIt/issues/36))
|
||||
- :tada: Feat: add Twikoo comment support ([#64](https://github.com/hugo-fixit/FixIt/issues/64))
|
||||
- :sparkles: Feat: add recently updated section ([#50](https://github.com/hugo-fixit/FixIt/issues/50))
|
||||
- :sparkles: Feat: add article expiration reminder support ([#51](https://github.com/hugo-fixit/FixIt/issues/51))
|
||||
- :sparkles: Feat: add pageStyle option ([#62](https://github.com/hugo-fixit/FixIt/issues/62))
|
||||
- :sparkles: Style: add media style for print view ([#61](https://github.com/hugo-fixit/FixIt/issues/61))
|
||||
- :sparkles: Feat: add Gravatar mirror site support (@ctj12461 [#66](https://github.com/hugo-fixit/FixIt/pull/66))
|
||||
- :sparkles: Feat: add archive count display ([#33](https://github.com/hugo-fixit/FixIt/issues/33))
|
||||
- :sparkles: Feat: add `details` shortcode ([#68](https://github.com/hugo-fixit/FixIt/issues/68))
|
||||
- :sparkles: Feat: add `center-quote` shortcode ([#69](https://github.com/hugo-fixit/FixIt/issues/69))
|
||||
- :sparkles: Feat: add markdown support for **title** parameter of the admonition shortcode
|
||||
- :sparkles: Feat: add 9 newly supported social links ([#17](https://github.com/hugo-fixit/FixIt/issues/17))
|
||||
- :zap: Perf: enhance highlight feature (GitHub syntax supported) and fix some css bugs ([#43](https://github.com/hugo-fixit/FixIt/issues/43))
|
||||
- Inline Code
|
||||
- Indented Code
|
||||
- Block Fenced Code
|
||||
- gist shortcode
|
||||
- :sparkles: Feat: add `params.page.code.edit` option support ([#76](https://github.com/hugo-fixit/FixIt/issues/76))
|
||||
- :mag: Feat: add 360 and sougou seo support
|
||||
- :bug: Fix: remove source map of local libraries to avoid 404 error ([#67](https://github.com/hugo-fixit/FixIt/issues/67))
|
||||
- :fire: Feat: remove shortcode cardlink ([#42](https://github.com/hugo-fixit/FixIt/issues/42))
|
||||
- :lipstick: Style: more refined theme style ([#40](https://github.com/hugo-fixit/FixIt/issues/40))
|
||||
- :pencil2: Style: fix typo *discription* should be **description** ([#60](https://github.com/hugo-fixit/FixIt/issues/60))
|
||||
- :wrench: Chore(update-libs):
|
||||
- Update cell-watermark 1.0.3 and CDN support (fontFamily supported)
|
||||
- Update animate.css 3.7.2 -> 4.1.1 ([#74](https://github.com/hugo-fixit/FixIt/issues/74))
|
||||
- :wrench: Chore: add atomic-algolia for exampleSite ([#70](https://github.com/hugo-fixit/FixIt/issues/70))
|
||||
- **Full Changelog:** @Lruihao [`v0.2.12...v0.2.13`](https://github.com/hugo-fixit/FixIt/compare/v0.2.12...v0.2.13)
|
||||
|
||||
## v0.2.12 [2022-1-27]
|
||||
|
||||
> Fix most known bugs and add some new features.
|
||||
> Snapshot: <https://fixit-e9lpwfkbp-lruihao.vercel.app>
|
||||
|
||||
- :tada: Feat: add PWA support
|
||||
- :tada: Feat: add Watermark support ([#16](https://github.com/hugo-fixit/FixIt/issues/16))
|
||||
- :tada: Feat: add "不蒜子" count and site run time ([#18](https://github.com/hugo-fixit/FixIt/issues/18))
|
||||
- :sparkles: Feat: add pangu.js support ([#20](https://github.com/hugo-fixit/FixIt/issues/20))
|
||||
- :sparkles: Feat: add public network security config (only in China) ([#15](https://github.com/hugo-fixit/FixIt/issues/15))
|
||||
- :sparkles: Feat: add CustomJS option ([#24](https://github.com/hugo-fixit/FixIt/issues/24))
|
||||
- :sparkles: Feat: add theme embedded archeTypes
|
||||
- :mag: Feat(SEO): optimize SEO meta ([#30](https://github.com/hugo-fixit/FixIt/issues/30))
|
||||
- :zap: Feat: remove lib smooth-scroll ([#1](https://github.com/hugo-fixit/FixIt/issues/1)) replaced by CSS native properties scroll-margin, scroll-behavior ([#39](https://github.com/hugo-fixit/FixIt/issues/39))
|
||||
- :zap: Perf: merge shortcode cardlink (deprecated v0.2.13) into shortcode link and add 'download' param ([#42](https://github.com/hugo-fixit/FixIt/issues/42))
|
||||
- :zap: Perf: optimize JS loading ([#25](https://github.com/hugo-fixit/FixIt/issues/25))
|
||||
- :recycle: Refactor: header title DOM and add subtitle option ([#26](https://github.com/hugo-fixit/FixIt/issues/26))
|
||||
- :bug: Fix: set mermaid theme as 'default' when initialization ([#38](https://github.com/hugo-fixit/FixIt/issues/38))
|
||||
- :bug: Fix: typeit print code error ([#19](https://github.com/hugo-fixit/FixIt/issues/19))
|
||||
- :bug: Fix: pre element overflow error ([#29](https://github.com/hugo-fixit/FixIt/issues/29))
|
||||
- :bug: Fix: toc display error without content header ([#21](https://github.com/hugo-fixit/FixIt/issues/21))
|
||||
- :lipstick: Style: style detail adjustments, change scroll-behavior to smooth, taxonomy, header, footer, shortcode style etc.
|
||||
- :pencil: Docs: improve demo site documentation ([#37](https://github.com/hugo-fixit/FixIt/issues/37))
|
||||
- :wrench: Chore: add commands `fixit_checker.sh`
|
||||
- :wrench: Chore(i18n): change some translations
|
||||
- :arrow_up: Chore: update all third-party libraries
|
||||
- **Full Changelog:** @Lruihao [`v0.2.11...v0.2.12`](https://github.com/hugo-fixit/FixIt/compare/v0.2.11...v0.2.12)
|
||||
|
||||
## v0.2.11 [2021-12-19]
|
||||
|
||||
> :tada: The beginning of FixIt to fix the theme LoveIt.
|
||||
|
||||
- :sparkles: Feat: add cardlink shortcode ([Lruihao/hugo-blog@`df9eca2`](https://github.com/Lruihao/hugo-blog/commit/df9eca26af43287748fd8d4654014357a8269b0b))
|
||||
- :tada: Feat: add friends layout template
|
||||
- :wrench: Chore(i18n): add translations for Traditional Chinese ([Lruihao/hugo-blog@`df9eca2`](https://github.com/Lruihao/hugo-blog/commit/b86157d8b84830bda415ab2488580afd843acac2))
|
||||
- :bug: Fix: mobile style ([Lruihao/hugo-blog#19](https://github.com/Lruihao/hugo-blog/issues/19))
|
||||
- :bug: Style: fix content h1 style ([Lruihao/hugo-blog#8](https://github.com/Lruihao/hugo-blog/issues/8))
|
||||
- :bug: Fix: `.params.author` should be `$params.author` ([Lruihao/hugo-blog#1](https://github.com/Lruihao/hugo-blog/issues/1))
|
||||
- **Full Changelog:** @Lruihao [`v0.2.10...v0.2.11`](https://github.com/hugo-fixit/FixIt/compare/v0.2.10...v0.2.11)
|
||||
|
||||
## v0.2.10 :arrow_down: [2020-5-29 before]
|
||||
|
||||
Thanks [dillonzq/LoveIt](https://github.com/dillonzq/LoveIt/releases)
|
||||
+10
-10
@@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
- The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
+95
-64
@@ -1,5 +1,23 @@
|
||||
# CONTRIBUTING
|
||||
|
||||
Make sure that you follow [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) while contributing and engaging in the discussions.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before you start contributing, make sure you have the following tools installed:
|
||||
|
||||
- **Node.js** (>= 20.0.0) - Required for package management and build tools
|
||||
- **Hugo Extended** (>= 0.156.0) - The static site generator
|
||||
- **pnpm** - Package manager (recommended)
|
||||
|
||||
You can check your installed versions:
|
||||
|
||||
```bash
|
||||
node --version
|
||||
hugo version
|
||||
pnpm --version
|
||||
```
|
||||
|
||||
## How to contribute to this project
|
||||
|
||||
First, fork this repository by clicking the fork button.
|
||||
@@ -7,84 +25,97 @@ First, fork this repository by clicking the fork button.
|
||||
Next, clone your forked repo.
|
||||
|
||||
```bash
|
||||
git clone --recursive https://github.com/hugo-fixit/FixIt.git && cd FixIt
|
||||
git clone https://github.com/hugo-fixit/FixIt.git && cd FixIt
|
||||
```
|
||||
|
||||
Then, install the dev dependencies.
|
||||
|
||||
```bash
|
||||
npm install
|
||||
pnpm install
|
||||
```
|
||||
|
||||
And now you are ready to go!
|
||||
|
||||
Here are some useful commands.
|
||||
Here are some useful commands for development:
|
||||
|
||||
### Development
|
||||
|
||||
```bash
|
||||
# build theme.js with babel
|
||||
npm run babel
|
||||
# build theme.js and then build the static site
|
||||
npm run build
|
||||
# run a local debugging server with watch
|
||||
npm run server
|
||||
# run a local debugging server with watch in production environment
|
||||
npm run server:production
|
||||
# build theme.js and then run a local debugging server
|
||||
npm run start
|
||||
# build theme.js and then run a local debugging server in production environment
|
||||
npm run start:production
|
||||
# Start demo site development server
|
||||
pnpm dev:demo
|
||||
# Start test site development server
|
||||
pnpm dev:test
|
||||
# Start documentation development server (requires fixit-docs as sibling directory)
|
||||
pnpm dev:docs
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - Add `-e production` to the development command to check the production environment, e.g. `pnpm dev:test -e production`.
|
||||
> - For documentation-related theme changes, it is recommended to clone both `FixIt` and `fixit-docs` as sibling directories.
|
||||
|
||||
### Building
|
||||
|
||||
```bash
|
||||
# Build demo site
|
||||
pnpm build:demo
|
||||
# Build test site
|
||||
pnpm build:test
|
||||
# Build all sites
|
||||
pnpm build
|
||||
```
|
||||
|
||||
### Preview
|
||||
|
||||
```bash
|
||||
# Preview the built site locally (requires build first)
|
||||
pnpm preview
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
Understanding the project structure will help you contribute more effectively:
|
||||
|
||||
```
|
||||
FixIt/
|
||||
├── apps/ # Minimal sites
|
||||
│ ├── demo/ # Demo site
|
||||
│ └── test/ # Test site
|
||||
├── archetypes/ # Content templates
|
||||
├── assets/ # Theme assets
|
||||
│ ├── css/ # SCSS stylesheets
|
||||
│ ├── js/ # JavaScript files
|
||||
│ ├── images/ # Image assets
|
||||
│ └── lib/ # Third-party libraries
|
||||
├── i18n/ # Internationalization files
|
||||
├── layouts/ # Hugo template files
|
||||
│ ├── _markup/ # Hugo render hooks
|
||||
│ ├── _partials/ # Reusable template components
|
||||
│ └── _shortcodes/ # Custom shortcodes
|
||||
├── packages/ # Theme-related packages
|
||||
├── static/ # Static files
|
||||
├── hugo.toml # Default theme configuration
|
||||
└── package.json # npm scripts and dependencies
|
||||
```
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. **Make your changes** in the appropriate directories
|
||||
2. **Test locally** using `pnpm dev` or `pnpm test`
|
||||
3. **Check different environments** with production builds
|
||||
4. **Verify documentation** changes with `pnpm dev:docs` (if applicable)
|
||||
5. **Commit your changes** following the commit message format below
|
||||
|
||||
## Pull Request Guidelines
|
||||
|
||||
- Create a feature branch from `main`
|
||||
- Make your changes with clear, focused commits
|
||||
- Test your changes thoroughly
|
||||
- Update documentation if needed
|
||||
- Submit a pull request with a clear description
|
||||
|
||||
Finally, create a new pull request at <https://github.com/hugo-fixit/FixIt/pulls> to submit your contribution 🎉
|
||||
|
||||
## Git standard for developers
|
||||
## Git Commit Guidelines
|
||||
|
||||
### Branches
|
||||
|
||||
| Branch | Description |
|
||||
| :-- | :-- |
|
||||
| master | _The branch open to the public and release versions_ |
|
||||
| dev | _The development branch of the next version_ |
|
||||
| RC branch | _The release candidate branch of the next version, e.g. v0.2.12-RC_ |
|
||||
| single feature | _The branch to enhancements or fixes_ |
|
||||
|
||||
### Merge events
|
||||
|
||||
| event | merge |
|
||||
| :-- | :-- |
|
||||
| release | **RC branch => master:** `--rebase` |
|
||||
| PR | **others:master => master:** `--rebase` |
|
||||
| single feature| **feature branch => RC branch:** `--merge` |
|
||||
|
||||
### Commit message
|
||||
|
||||
#### Format
|
||||
|
||||
`[{emoji} ]{type}[({module})]: {subject within 50 words}[ (#{issue/pull request})]`
|
||||
|
||||
example:
|
||||
|
||||
- :tada: Feat: add shortcode fixit-encryptor shortcode (#123)
|
||||
- :arrow_up: Chore(libs): update Artalk from 2.2.12 to 2.3.4 (#150)
|
||||
|
||||
#### Emoji
|
||||
|
||||
- <https://gitmoji.dev>
|
||||
- [vscode plugin](https://github.com/maixiaojie/git-emoji-zh.git)
|
||||
- utools plugin `GitEmoji`
|
||||
|
||||
#### Message
|
||||
|
||||
| Emoji | Type | Example | Description (No Ambiguous) |
|
||||
| :-------------------------------------------- | :------- | :----------------------------------------------------------- | :----------------------------------------------------------- |
|
||||
| :tada: <br>:sparkles: | Feat | Feat: add {feature} | new feature |
|
||||
| :truck: | | Feat: adjust/migrate {feature name}, {change details} | For the adjustment feature, it is necessary to describe the current situation (before) and after adjustment (after) |
|
||||
| :fire: | | Feat: delete {feature name}, {deletion reason} | If the feature is deleted, the reason for deletion must be explained |
|
||||
| :bug: <br>:construction: <br>:rotating_light: | Fix | Fix: fix {bug description} | Fix known bugs |
|
||||
| :art: <br>:lipstick: <br>:pencil2: | Style | Style: Typesetting/CSS style {optimizing content} | Changes that do not affect code operation, such as code layout and style change |
|
||||
| :recycle: | Refactor | Refactor: override {feature name} | It is neither a new function nor a code change to fix a bug. Simply rewriting the code of a function does not affect the function result |
|
||||
| :zap: | Perf | Perf: improve performance {function name}, {improve content} | Optimize code performance |
|
||||
| :rewind: | Revert | Revert: restore version {commit message of restore version} | Restore the version of one commit |
|
||||
| :pencil: <br>:pencil2: | Docs | Docs: revise comments/update documents | Adjustment of documents and notes |
|
||||
| :wrench: | Chore | Chore: update plugin version | Changes in the construction process or auxiliary tools |
|
||||
We follow the [Conventional Commits](https://www.conventionalcommits.org/) specification for commit messages. This enables automatic changelog generation using our custom template: [conventional.hbs](https://github.com/Lruihao/auto-changelog-plus/blob/main/settings/conventional.hbs).
|
||||
|
||||
@@ -2,7 +2,7 @@ The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 LIUZHICHAO.COM
|
||||
Copyright (c) 2019-2020 DILLONZQ.COM
|
||||
Copyright (c) 2021-2023 LRUIHAO.CN
|
||||
Copyright (c) 2021-present Lruihao (https://lruihao.cn)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
||||
@@ -1,248 +1,326 @@
|
||||
# FixIt Theme | Hugo
|
||||
<!-- markdownlint-disable-file MD033 MD041 -->
|
||||

|
||||
|
||||
[](https://github.com/hugo-fixit/FixIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](/LICENSE)
|
||||
<div align="center" class="ignore">
|
||||
<p>
|
||||
FixIt is a clean, elegant but advanced blog theme for <a href="https://gohugo.io/">Hugo</a>.<br>
|
||||
<em><sub>Don't forget to leave a ⭐️ if you like this theme, thanks!</sub></em>
|
||||
</p>
|
||||
English |
|
||||
<a href="/README.zh-cn.md">简体中文</a> |
|
||||
<a href="https://fixit.lruihao.cn/zh-cn/ecosystem/hugo-fixit/fixit/?lang=chinese_traditional">繁體中文</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=french">Français</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=russian">Русский язык</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=spanish">Español</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=hindi">हिन्दी</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=deutsch">deutsch</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=korean">한국어</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=japanese">しろうと</a>
|
||||
</div>
|
||||
|
||||
👉 English README | [简体中文说明](README.zh-cn.md)
|
||||
<a title="FixIt website" href="https://fixit.lruihao.cn"><img align="right" alt="FixIt logo" width="70" height="70" src="https://avatars.githubusercontent.com/u/110414864?s=200&v=4"></a>
|
||||
|
||||
> [FixIt](https://github.com/hugo-fixit/FixIt) is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/).
|
||||
# FixIt
|
||||
|
||||
It is based on the original [LoveIt Theme](https://github.com/dillonzq/LoveIt), [KeepIt Theme](https://github.com/Fastbyte01/KeepIt) and [LeaveIt Theme](https://github.com/liuzc/LeaveIt).
|
||||
> It is based on the original [LoveIt](https://github.com/dillonzq/LoveIt) Theme, [KeepIt](https://github.com/Fastbyte01/KeepIt) Theme and [LeaveIt](https://github.com/liuzc/LeaveIt) Theme.
|
||||
|
||||
The FixIt theme inherits the excellent features of these themes, and adds new features and optimizations on those basis. Please read [Why Choose FixIt](#why-choose-fixit) to learn more.
|
||||
[](https://demo.fixit.lruihao.cn/)
|
||||
[](https://github.com/hugo-fixit/FixIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](/LICENSE)
|
||||
[](https://github.com/hugo-fixit/FixIt)
|
||||
[](https://gitee.com/lruihao/FixIt/stargazers)
|
||||
|
||||

|
||||
## Live Preview
|
||||
|
||||
## Getting started
|
||||
<p align="center">
|
||||
💟 <a href="https://fixit.lruihao.cn">Docs</a> | ❇️ <a href="https://demo.fixit.lruihao.cn/test/">Test</a> | 🚼 <a href="https://demo.fixit.lruihao.cn">Demo</a> | 🆕 <a href="https://hugo-fixit.github.io/hugo-fixit-starter/">Starter</a>
|
||||
<br>
|
||||
<br>
|
||||
More FixIt examples <a href="https://fixit.lruihao.cn/showcase/">here</a>.
|
||||
</p>
|
||||
|
||||
Head to the [getting started page](http://fixit.lruihao.cn/documentation/getting-started/) or start with a template:
|
||||
## Usage
|
||||
|
||||
* [hugo-fixit/hugo-fixit-blog-git](https://github.com/hugo-fixit/hugo-fixit-blog-git)
|
||||
* [hugo-fixit/hugo-fixit-blog-go](https://github.com/hugo-fixit/hugo-fixit-blog-go)
|
||||
### Documentation
|
||||
|
||||
## [Documentation](https://fixit.lruihao.cn/categories/documentation/)
|
||||
Head to the [Quick Start](https://fixit.lruihao.cn/documentation/getting-started/quick-start/) page for a step-by-step guide on how to create a new website with FixIt.
|
||||
|
||||
Head to this [documentation page](https://fixit.lruihao.cn/documentation/basics/) for a complete guidence to get started with the FixIt theme.
|
||||
Outline: [Installation](https://fixit.lruihao.cn/documentation/installation/) ➜ [Getting Started](https://fixit.lruihao.cn/documentation/getting-started/) ➜ [Content Management](https://fixit.lruihao.cn/documentation/content-management/) ➜ [Advanced Usage](https://fixit.lruihao.cn/documentation/advanced/)
|
||||
|
||||
Or run [Documentation Site](https://fixit.lruihao.cn) locally, see more details from [Contributing](#contributing).
|
||||
### Starter Wizard
|
||||
|
||||
In addition, there is the [FixIt wiki](https://github.com/hugo-fixit/FixIt/wiki).
|
||||
|
||||
## Migrate from LoveIt
|
||||
|
||||
If you are currently using the LoveIt theme (or some other themes), it is very easy to migrate to FixIt.
|
||||
|
||||
You can add this repo as a submodule of your site directory. Alternatively, you can install the theme in [other ways](https://fixit.lruihao.cn/documentation/basics/#install-theme).
|
||||
We provided a CLI tool to help you create a new project with FixIt by a single command.
|
||||
|
||||
```bash
|
||||
git submodule add https://github.com/hugo-fixit/FixIt.git themes/FixIt
|
||||
pnpx fixit-cli create my-blog
|
||||
```
|
||||
|
||||
And later you can update the submodule in your site directory to the latest commit using this command:
|
||||
[](https://asciinema.org/a/697494)
|
||||
|
||||
```bash
|
||||
git submodule update --remote --merge
|
||||
```
|
||||
### Templates
|
||||
|
||||
Next, go to the `config.toml` and change the default theme to `FixIt`.
|
||||
Click the following links to generate a new repository with template:
|
||||
|
||||
```diff
|
||||
- theme = "LoveIt"
|
||||
+ theme = "FixIt"
|
||||
```
|
||||
| Template | repository | Generate link |
|
||||
| :-------------------------------------------- | :-------------------------------- | :----------------------------: |
|
||||
| A quick-start template base on Hugo Modules. | [hugo-fixit-starter][starter] | [Click][starter:generate] |
|
||||
| A quick-start template base on Git submodule. | [hugo-fixit-starter1][starter1] | [Click][starter1:generate] |
|
||||
| Build multilingual sites using Fixit theme. | [docs][docs] | [Click][docs:generate] |
|
||||
| Customize with FixIt theme. | [Lruihao/hugo-blog][lruihao-blog] | [Click][lruihao-blog:generate] |
|
||||
|
||||
Now the migration is finished and everything is ready 🎉
|
||||
|
||||
## Why choose FixIt
|
||||
|
||||
The FixIt theme inherits the excellent features of themes such as LoveIt, and adds new features and optimizations on those basis, as detailed in [Features](#features). In addition, the FixIt theme has the following advantages:
|
||||
|
||||
* Complete Chinese and English official documentations
|
||||
* Community support: Theme official website, Discussions and official QQ group
|
||||
* Continuously and actively update
|
||||
* Constantly incorporate suggestions and ideas from all sides
|
||||
* Highly open theme customizable section
|
||||
|
||||
In short, if you prefer the design language and freedom of the FixIt theme, and if you like to personalize your own themes as I do, the FixIt theme may be more suitable for you.
|
||||
|
||||
## Who used FixIt
|
||||
|
||||
To see this theme in action, here are some [live demo sites](https://fixit.lruihao.cn/friends/) which are rendered with **FixIt** theme.
|
||||
[starter]: https://github.com/hugo-fixit/hugo-fixit-starter
|
||||
[starter:generate]: https://github.com/hugo-fixit/hugo-fixit-starter/generate
|
||||
[starter1]: https://github.com/hugo-fixit/hugo-fixit-starter1
|
||||
[starter1:generate]: https://github.com/hugo-fixit/hugo-fixit-starter1/generate
|
||||
[docs]: https://github.com/hugo-fixit/docs
|
||||
[docs:generate]: https://github.com/hugo-fixit/docs/generate
|
||||
[lruihao-blog]: https://github.com/Lruihao/hugo-blog
|
||||
[lruihao-blog:generate]: https://github.com/Lruihao/hugo-blog/generate
|
||||
|
||||
## Features
|
||||
|
||||
<details>
|
||||
<summary>Click to view.</summary>
|
||||
|
||||
### Performance and SEO
|
||||
|
||||
* Optimized for **performance**: 99/100 on mobile and 100/100 on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights)
|
||||
* Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD
|
||||
* **[Google Analytics](https://analytics.google.com/analytics)** supported
|
||||
* **[Fathom Analytics](https://usefathom.com/)** supported
|
||||
* Search engine **verification** supported (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
|
||||
* **CDN** for third-party libraries supported
|
||||
- Optimized for **performance**: 99/100 on mobile and 100/100 on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights)
|
||||
- Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD
|
||||
- **[Google Analytics](https://analytics.google.com/analytics)** supported
|
||||
- **[Fathom Analytics](https://usefathom.com/)** supported
|
||||
- **[Baidu Analytics](https://tongji.baidu.com/)** supported
|
||||
- **[Umami Analytics](https://umami.is/)** supported
|
||||
- **[Plausible Analytics](https://plausible.io/)** supported
|
||||
- **[Cloudflare Web Analytics](https://www.cloudflare.com/web-analytics)** supported
|
||||
- **[Splitbee Analytics](https://splitbee.io)** supported
|
||||
- Search engine **verification** supported (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
|
||||
- **CDN** for third-party libraries supported
|
||||
|
||||
### Appearance and Layout
|
||||
|
||||
* **Responsive** layout
|
||||
* **Light/Dark** mode
|
||||
* Globally consistent **design language**
|
||||
* **Pagination** supported
|
||||
* Easy-to-use and self-expanding **table of contents**
|
||||
* **Multilanguage** supported and i18n ready
|
||||
* Beautiful **CSS animation**
|
||||
- **Responsive** layout
|
||||
- **Light/Dark** mode
|
||||
- Globally consistent **design language**
|
||||
- **Pagination** supported
|
||||
- Easy-to-use and self-expanding **table of contents**
|
||||
- **Multilanguage** supported and i18n ready
|
||||
- Beautiful **CSS animation**
|
||||
|
||||
### Social and Comment Systems
|
||||
|
||||
* **Gravatar** supported by [Gravatar](https://gravatar.com)
|
||||
* Local **Avatar** supported
|
||||
* Up to **87** social links supported
|
||||
* Up to **28** share sites supported
|
||||
* **Disqus** comment system supported by [Disqus](https://disqus.com)
|
||||
* **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk)
|
||||
* **Valine** comment system supported by [Valine](https://valine.js.org/)
|
||||
* **Waline** comment system supported by [Waline](https://waline.js.org/)
|
||||
* **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/)
|
||||
* **Telegram comments** system supported by [Telegram Comments](https://comments.app/)
|
||||
* **Commento** comment system supported by [Commento](https://commento.io/)
|
||||
* **Utterances** comment system supported by [Utterances](https://utteranc.es/)
|
||||
* **Artalk** comment system supported by [Artalk](https://artalk.js.org/)
|
||||
* **Twikoo** comment system supported by [Twikoo](https://twikoo.js.org/)
|
||||
* **giscus** comment system supported by [giscus](https://giscus.app/)
|
||||
- **Gravatar** supported by [Gravatar](https://gravatar.com)
|
||||
- Local **Avatar** supported
|
||||
- Up to **87** social links supported
|
||||
- Up to **28** share sites supported
|
||||
- **Disqus** comment system supported by [Disqus](https://disqus.com)
|
||||
- **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk)
|
||||
- **Valine** comment system supported by [Valine](https://valine.js.org/)
|
||||
- **Waline** comment system supported by [Waline](https://waline.js.org/)
|
||||
- **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/)
|
||||
- **Telegram comments** system supported by [Telegram Comments](https://comments.app/)
|
||||
- **Commento** comment system supported by [Commento](https://commento.io/)
|
||||
- **Utterances** comment system supported by [Utterances](https://utteranc.es/)
|
||||
- **Artalk** comment system supported by [Artalk](https://artalk.js.org/)
|
||||
- **Twikoo** comment system supported by [Twikoo](https://twikoo.js.org/)
|
||||
- **giscus** comment system supported by [giscus](https://giscus.app/)
|
||||
|
||||
### Extended Features
|
||||
|
||||
* **PWA (Progressive Web App)** supported
|
||||
* **Sub Menu** supported
|
||||
* **Content Encryption** supported (Pages, Partial)
|
||||
* **Friends** page embedded template
|
||||
* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/) or [Fuse.js](https://fusejs.io/)
|
||||
* **Twemoji** supported
|
||||
* Automatically **highlighting** code
|
||||
* **Copy code** to clipboard with one click
|
||||
* **Images gallery** supported by [lightgallery](https://github.com/sachinchoolur/lightgallery)
|
||||
* Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
|
||||
* Extended Markdown syntax for **ruby annotation**
|
||||
* Extended Markdown syntax for **fraction**
|
||||
* **Mathematical formula** supported by [KaTeX](https://katex.org/)
|
||||
* **Diagrams** shortcode supported by [mermaid](https://github.com/knsv/mermaid)
|
||||
* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
|
||||
* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
* **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
* **Bilibili player** shortcode
|
||||
* Kinds of **admonitions** shortcode
|
||||
* **Custom style** shortcode
|
||||
* **Custom script** shortcode
|
||||
* **Animated typing** supported by [TypeIt](https://typeitjs.com/)
|
||||
* **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
* **Web Watermark** supported by [cell-watermark](https://github.com/Lruihao/watermark)
|
||||
* **Chinese typesetting** supported by [pangu.js](https://github.com/vinta/pangu.js)
|
||||
* ...
|
||||
|
||||
## Multilingual and i18n
|
||||
|
||||
FixIt supports the following languages:
|
||||
|
||||
* English
|
||||
* Simplified Chinese
|
||||
* Traditional Chinese
|
||||
* French
|
||||
* Polish
|
||||
* Brazilian Portuguese
|
||||
* Italian
|
||||
* Spanish
|
||||
* German
|
||||
* Serbian
|
||||
* Russian
|
||||
* Romanian
|
||||
* Vietnamese
|
||||
* [Contribute with a new language](https://github.com/hugo-fixit/FixIt/pulls)
|
||||
|
||||
[Languages Compatibility](https://fixit.lruihao.cn/documentation/basics/#language-compatibility)
|
||||
|
||||
## [Roadmap](https://github.com/hugo-fixit/FixIt/projects/1)
|
||||
|
||||
## [Changelog](/CHANGELOG.md)
|
||||
|
||||
## Questions, ideas, bugs, pull requests
|
||||
|
||||
All feedback is welcome! Head over to the [issues](https://github.com/hugo-fixit/FixIt/issues) or [discussions](https://github.com/hugo-fixit/FixIt/discussions) tracker.
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see [CONTRIBUTING.md](CONTRIBUTING.md) for getting started with the contribution.
|
||||
|
||||
Make sure that you follow [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) while contributing and engaging in the discussions.
|
||||
|
||||
**When contributing, please first discuss the change you wish to make via an issue on this repository before making the actual change**.
|
||||
|
||||
## [Contributors](contributors.md)
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
<details open>
|
||||
<summary>Thanks to the authors of following resources included in the theme:</summary>
|
||||
|
||||
* [normalize.css](https://github.com/necolas/normalize.css)
|
||||
* [Font Awesome](https://fontawesome.com/)
|
||||
* [Simple Icons](https://github.com/simple-icons/simple-icons)
|
||||
* [Animate.css](https://daneden.github.io/animate.css/)
|
||||
* [autocomplete-js](https://github.com/algolia/autocomplete)
|
||||
* [Lunr.js](https://lunrjs.com/)
|
||||
* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
|
||||
* [Fuse.js](https://fusejs.io/)
|
||||
* [object-fit-images](https://github.com/fregante/object-fit-images)
|
||||
* [Twemoji](https://github.com/twitter/twemoji)
|
||||
* [emoji-data](https://github.com/iamcal/emoji-data)
|
||||
* [lightgallery](https://github.com/sachinchoolur/lightgallery)
|
||||
* [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
* [TypeIt](https://typeitjs.com/)
|
||||
* [KaTeX](https://katex.org/)
|
||||
* [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
* [ECharts](https://echarts.apache.org/)
|
||||
* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
* [APlayer](https://github.com/MoePlayer/APlayer)
|
||||
* [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
* [Gitalk](https://github.com/gitalk/gitalk)
|
||||
* [Valine](https://valine.js.org/)
|
||||
* [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
* [cell-watermark](https://github.com/Lruihao/watermark)
|
||||
* [不蒜子](http://busuanzi.ibruce.info/)
|
||||
* [pangu.js](https://github.com/vinta/pangu.js)
|
||||
* [Artalk](https://artalk.js.org/)
|
||||
* [Waline](https://waline.js.org/)
|
||||
* [Twikoo](https://twikoo.js.org/)
|
||||
* [github-corners](https://github.com/tholman/github-corners)
|
||||
* [giscus](https://giscus.app/)
|
||||
* [crypto-js](https://github.com/brix/crypto-js)
|
||||
* [vConsole](https://github.com/Tencent/vConsole)
|
||||
* [eruda](https://github.com/liriliri/eruda)
|
||||
* [pace](https://github.com/CodeByZach/pace)
|
||||
- **AI Summary**, **AI Search** and **AI Chatbot** supported by [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330)
|
||||
- **PWA (Progressive Web App)** supported
|
||||
- **Sub Menu** supported
|
||||
- **Content Encryption** supported (Pages, Partial)
|
||||
- **Friends** page embedded template
|
||||
- **Search** supported by [algolia](https://www.algolia.com/), [Fuse.js](https://fusejs.io/), CSE or [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330)
|
||||
- **Custom Search Engine (CSE)** supported by [Google](https://programmablesearchengine.google.com/)
|
||||
- **Twemoji** supported
|
||||
- Automatically **highlighting** code
|
||||
- **Copy code** to clipboard with one click
|
||||
- **Images gallery** supported by [lightgallery](https://github.com/sachinchoolur/lightgallery)
|
||||
- Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
|
||||
- Extended Markdown syntax for **ruby annotation**
|
||||
- Extended Markdown syntax for **fraction**
|
||||
- Multiple **admonitions** shortcode or **alerts** extended Markdown syntax
|
||||
- **Tabs** and **Tab** shortcode with multiple design styles
|
||||
- **Mathematical formula** supported by [KaTeX](https://katex.org/) or [MathJax](https://www.mathjax.org)
|
||||
- **Diagrams** code fences extended and shortcode supported by [mermaid](https://github.com/knsv/mermaid)
|
||||
- **Interactive data visualization** shortcode and code fences extended supported by [ECharts](https://echarts.apache.org/)
|
||||
- **Timeline** code fences extended and shortcode supported
|
||||
- **File tree** code fences extended and shortcode supported
|
||||
- **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
- **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
- **Bilibili player** and **Douyin player** shortcode
|
||||
- **Custom style** shortcode
|
||||
- **Custom script** shortcode
|
||||
- Open more **custom blocks**
|
||||
- **Animated typing** supported by [TypeIt](https://typeitjs.com/)
|
||||
- **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
- **Web Watermark** supported by [cell-watermark](https://github.com/Lruihao/watermark)
|
||||
- **Chinese typesetting** supported by [pangu.js](https://github.com/vinta/pangu.js)
|
||||
- Options to **cache remote image** locally
|
||||
- ...
|
||||
|
||||
</details>
|
||||
|
||||
<details open>
|
||||
<summary>The FixIt also draws on some features of the following projects, and thanks to their authors as well:</summary>
|
||||
## Multilingual and i18n
|
||||
|
||||
* [DoIt](https://github.com/HEIGE-PCloud/DoIt)
|
||||
* [NexT](https://github.com/next-theme/hexo-theme-next)
|
||||
FixIt supports multilingual and i18n. For more information, see the [Content Management](https://fixit.lruihao.cn/documentation/content-management/introduction#multilingual) documentation. You are welcome to [contribute with a new language](https://github.com/hugo-fixit/FixIt/pulls).
|
||||
|
||||
<details>
|
||||
<summary>FixIt supports the following languages.</summary>
|
||||
|
||||
- English
|
||||
- Simplified Chinese
|
||||
- Traditional Chinese
|
||||
- French
|
||||
- Polish
|
||||
- Brazilian Portuguese
|
||||
- Italian
|
||||
- Spanish
|
||||
- German
|
||||
- Serbian
|
||||
- Russian
|
||||
- Romanian
|
||||
- Vietnamese
|
||||
- Hindi
|
||||
- Japanese
|
||||
- Korean
|
||||
|
||||
</details>
|
||||
|
||||
## Theme Components
|
||||
|
||||
The FixIt theme balances **simplicity** and **extensibility** with extra [Hugo theme components](https://fixit.lruihao.cn/ecosystem/#-components) for customization.
|
||||
|
||||
<details>
|
||||
<summary>Click to view.</summary>
|
||||
|
||||
<!-- HUGO_FIXIT_COMPONENTS:START -->
|
||||
- [fixit-bundle](https://github.com/hugo-fixit/fixit-bundle)\
|
||||
🌲 Bundles the FixIt core theme and all hugo-fixit components into a single component.
|
||||
- [cmpt-flyfish](https://github.com/hugo-fixit/cmpt-flyfish)\
|
||||
🐟 A canvas implemented animation effect of small fish swimming.
|
||||
- [cmpt-mdevtools](https://github.com/hugo-fixit/cmpt-mdevtools)\
|
||||
Mobile devtools component powered by vConsole and eruda.
|
||||
- [cmpt-santa-hat](https://github.com/hugo-fixit/cmpt-santa-hat)\
|
||||
A Christmas Easter Egg by JavaScript.
|
||||
- [cmpt-translate](https://github.com/hugo-fixit/cmpt-translate)\
|
||||
🌐 A component for site automatic translation.
|
||||
- [component-projects](https://github.com/hugo-fixit/component-projects)\
|
||||
🐙 Display your GitHub projects in the FixIt theme and generate blog posts from readme.
|
||||
- [hugo-atom-feed](https://github.com/hugo-fixit/hugo-atom-feed)\
|
||||
Hugo theme component for ATOM feed custom Output Format.
|
||||
- [hugo-json-feed](https://github.com/hugo-fixit/hugo-json-feed)\
|
||||
Hugo theme component for JSON feed custom Output Format.
|
||||
- [shortcode-asciinema](https://github.com/hugo-fixit/shortcode-asciinema)\
|
||||
A Hugo theme component with asciinema-embed shortcode.
|
||||
- [shortcode-caniuse](https://github.com/hugo-fixit/shortcode-caniuse)\
|
||||
A Hugo theme component with caniuse shortcode.
|
||||
- [shortcode-docs-bookmark](https://github.com/hugo-fixit/shortcode-docs-bookmark)\
|
||||
🔖 Embed bookmark of FixIt Docs.
|
||||
- [shortcode-missing-translation](https://github.com/hugo-fixit/shortcode-missing-translation)\
|
||||
A Hugo theme component with missing-translation shortcode.
|
||||
- [shortcode-mmt-netease](https://github.com/hugo-fixit/shortcode-mmt-netease)\
|
||||
🎶 A Hugo theme component with a NetEase Cloud random comment shortcode.
|
||||
- [shortcode-rewards](https://github.com/hugo-fixit/shortcode-rewards)\
|
||||
A Hugo theme component with reward-log or sponsor-log shortcode.
|
||||
<!-- HUGO_FIXIT_COMPONENTS:END -->
|
||||
|
||||
</details>
|
||||
|
||||
## Community
|
||||
|
||||
All feedback is welcome! Head over to the [discussions][discussions], [Pull requests][pulls] and [issues][issues] tracker.
|
||||
|
||||
| Official Community | Description |
|
||||
| :-------------------------- | :------------------------------ |
|
||||
| [Discussions][discussions] | GitHub discussion forum |
|
||||
| [FixIt WeChat group][wx-mp] | Follow and reply "FixIt" to get |
|
||||
| [FixIt QQ group][qq-group] | QQ group: `814031017` |
|
||||
| [Hugo FixIt Planet][zsxq] | Paid knowledge Planet |
|
||||
|
||||
[discussions]: https://github.com/hugo-fixit/FixIt/discussions
|
||||
[pulls]: https://github.com/hugo-fixit/FixIt/pulls
|
||||
[issues]: https://github.com/hugo-fixit/FixIt/issues
|
||||
[qq-group]: https://qm.qq.com/cgi-bin/qm/qr?k=awbwdTtSQ_-H5QGzeJxdWgv6JMbNehNM&jump_from=webapi
|
||||
[zsxq]: https://t.zsxq.com/GgKEW
|
||||
[wx-mp]: https://lruihao.cn/images/qr-wx-mp.webp
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome you to join the development of FixIt. Please see [contributing document](/CONTRIBUTING.md). 🤗
|
||||
|
||||
Also, we welcome Issue or PR to our [official-components](https://github.com/hugo-fixit).
|
||||
|
||||
> [!note]
|
||||
> When contributing, please first discuss the change you wish to make via a discussion on this repository before making the actual change.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
Thanks to the support of [all contributors](https://github.com/hugo-fixit/FixIt/graphs/contributors)!
|
||||
|
||||
Thanks to the [Hugo DoIt](https://github.com/HEIGE-PCloud/DoIt) theme and [Hexo NexT](https://github.com/next-theme/hexo-theme-next) theme for inspiration and reference.
|
||||
|
||||
<details>
|
||||
<summary>Thanks to all the open source projects used in the FixIt theme.</summary>
|
||||
|
||||
- [normalize.css](https://github.com/necolas/normalize.css)
|
||||
- [Font Awesome](https://fontawesome.com/)
|
||||
- [Simple Icons](https://github.com/simple-icons/simple-icons)
|
||||
- [Animate.css](https://daneden.github.io/animate.css/)
|
||||
- [autocomplete-js](https://github.com/algolia/autocomplete)
|
||||
- [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
|
||||
- [Fuse.js](https://fusejs.io/)
|
||||
- [object-fit-images](https://github.com/fregante/object-fit-images)
|
||||
- [Twemoji](https://github.com/twitter/twemoji)
|
||||
- [emoji-data](https://github.com/iamcal/emoji-data)
|
||||
- [lightgallery](https://github.com/sachinchoolur/lightgallery)
|
||||
- [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
- [TypeIt](https://typeitjs.com/)
|
||||
- [KaTeX](https://katex.org/)
|
||||
- [MathJax](https://www.mathjax.org)
|
||||
- [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
- [ECharts](https://echarts.apache.org/)
|
||||
- [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
- [APlayer](https://github.com/MoePlayer/APlayer)
|
||||
- [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
- [Gitalk](https://github.com/gitalk/gitalk)
|
||||
- [Valine](https://valine.js.org/)
|
||||
- [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
- [cell-watermark](https://github.com/Lruihao/watermark)
|
||||
- [不蒜子](http://busuanzi.ibruce.info/)
|
||||
- [Vercount](https://github.com/EvanNotFound/vercount)
|
||||
- [pangu.js](https://github.com/vinta/pangu.js)
|
||||
- [Artalk](https://artalk.js.org/)
|
||||
- [Waline](https://waline.js.org/)
|
||||
- [Twikoo](https://twikoo.js.org/)
|
||||
- [github-corners](https://github.com/tholman/github-corners)
|
||||
- [giscus](https://giscus.app/zh-CN)
|
||||
- [crypto-js](https://github.com/brix/crypto-js)
|
||||
- [pace](https://github.com/CodeByZach/pace)
|
||||
- [xxhash-wasm](https://github.com/jungomi/xxhash-wasm)
|
||||
- [`<tab-container>` element](https://github.com/github/tab-container-element)
|
||||
- [`<json-viewer>` element](https://github.com/Lruihao/json-viewer-element)
|
||||
|
||||
</details>
|
||||
|
||||
## License
|
||||
|
||||
FixIt is licensed under the **MIT** license. Check the [LICENSE file](LICENSE) for details.
|
||||
FixIt is licensed under the **MIT** license. Check the [LICENSE file](/LICENSE) for details.
|
||||
|
||||
## Sponsor Support
|
||||
|
||||
If you enjoy the theme, please consider buying me a cup of coffee ☕️. Thanks!
|
||||
|
||||
- [WeChat Pay](/images/wechatpay.jpg)
|
||||
- [Alipay](/images/alipay.jpg)
|
||||
- [PayPal](https://paypal.me/Lruihao)
|
||||
|
||||
Thanks to the following sponsors for their great support:
|
||||
|
||||
- [translate.js](https://github.com/xnx3/translate) sponsored [Enterprise Translation Channel](https://translate.zvo.cn/4087.html).
|
||||
|
||||
## Author
|
||||
|
||||
[Lruihao](https://github.com/Lruihao "Follow me on GitHub")
|
||||
|
||||
## Sponsor
|
||||
|
||||
Giving me a Star 🌟 is already the greatest encouragement and support for me.\
|
||||
If you enjoy the theme, please consider buying me a coffee ☕️.
|
||||
|
||||
* [PayPal](https://paypal.me/Lruihao)
|
||||
* [Alipay](images/alipay.jpg)
|
||||
* [Wechat](images/wechatpay.jpg)
|
||||
|
||||
Thanks! ❤️
|
||||
|
||||
+278
-204
@@ -1,252 +1,326 @@
|
||||
# FixIt 主题 | Hugo
|
||||
<!-- markdownlint-disable-file MD033 MD041 -->
|
||||

|
||||
|
||||
[](https://github.com/hugo-fixit/FixIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](/LICENSE)
|
||||
<div align="center" class="ignore">
|
||||
<p>
|
||||
FixIt 是一个简洁、优雅且高效的 <a href="https://gohugo.io/">Hugo</a> 博客主题。<br>
|
||||
<em><sub>如果你喜欢这个主题,别忘了留下一颗 ⭐️ 哦,谢谢!</sub></em>
|
||||
</p>
|
||||
<a href="/README.md">English</a> |
|
||||
简体中文 |
|
||||
<a href="https://fixit.lruihao.cn/zh-cn/ecosystem/hugo-fixit/fixit/?lang=chinese_traditional">繁體中文</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=french">Français</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=russian">Русский язык</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=spanish">Español</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=hindi">हिन्दी</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=deutsch">deutsch</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=korean">한국어</a> |
|
||||
<a href="https://fixit.lruihao.cn/ecosystem/hugo-fixit/fixit/?lang=japanese">しろうと</a>
|
||||
</div>
|
||||
|
||||
👉 [English README](README.md) | 简体中文说明
|
||||
<a title="FixIt 官网" href="https://fixit.lruihao.cn/zh-cn/"><img align="right" alt="FixIt logo" width="70" height="70" src="https://avatars.githubusercontent.com/u/110414864?s=200&v=4"></a>
|
||||
|
||||
> [FixIt](https://github.com/hugo-fixit/FixIt) 是一个**简洁**、**优雅**且**高效**的 [Hugo](https://gohugo.io/) 博客主题。
|
||||
# FixIt
|
||||
|
||||
它的原型基于 [LoveIt 主题](https://github.com/dillonzq/LoveIt),[KeepIt 主题](https://github.com/Fastbyte01/KeepIt) 和 [LeaveIt 主题](https://github.com/liuzc/LeaveIt)。
|
||||
> 它的原型基于 [LoveIt](https://github.com/dillonzq/LoveIt) 主题,[KeepIt](https://github.com/Fastbyte01/KeepIt) 主题和 [LeaveIt](https://github.com/liuzc/LeaveIt) 主题。
|
||||
|
||||
FixIt 主题继承了这些主题的优秀功能,并在此基础上添加了新的功能与优化,请阅读 [为什么选择 FixIt](#为什么选择-FixIt) 来了解更多。
|
||||
[](https://demo.fixit.lruihao.cn/)
|
||||
[](https://github.com/hugo-fixit/FixIt/releases)
|
||||
[](https://gohugo.io/)
|
||||
[](/LICENSE)
|
||||
[](https://github.com/hugo-fixit/FixIt)
|
||||
[](https://gitee.com/lruihao/FixIt/stargazers)
|
||||
|
||||

|
||||
## 即时预览
|
||||
|
||||
## 快速上手
|
||||
<p align="center">
|
||||
💟 <a href="https://fixit.lruihao.cn">Docs</a> | ❇️ <a href="https://demo.fixit.lruihao.cn/test/">Test</a> | 🚼 <a href="https://demo.fixit.lruihao.cn">Demo</a> | 🆕 <a href="https://hugo-fixit.github.io/hugo-fixit-starter/">Starter</a>
|
||||
<br>
|
||||
<br>
|
||||
更多 FixIt 的例子参见 <a href="https://fixit.lruihao.cn/zh-cn/showcase/">这里</a>。
|
||||
</p>
|
||||
|
||||
前往 [快速上手页面](https://fixit.lruihao.cn/zh-cn/documentation/getting-started/) 或从一个模板直接开始:
|
||||
## 使用指南
|
||||
|
||||
* [hugo-fixit/hugo-fixit-blog-git](https://github.com/hugo-fixit/hugo-fixit-blog-git)
|
||||
* [hugo-fixit/hugo-fixit-blog-go](https://github.com/hugo-fixit/hugo-fixit-blog-go)
|
||||
### 主题文档
|
||||
|
||||
## [完整文档](https://fixit.lruihao.cn/zh-cn/categories/documentation/)
|
||||
前往 [快速上手](https://fixit.lruihao.cn/zh-cn/documentation/getting-started/quick-start/) 页面,了解如何使用 FixIt 主题创建一个新网站的详细步骤。
|
||||
|
||||
前往这篇 [文档](https://fixit.lruihao.cn/zh-cn/documentation/basics/),阅读关于安装与使用的详细指南。
|
||||
大纲:[安装篇](https://fixit.lruihao.cn/zh-cn/documentation/installation/) ➜ [入门篇](https://fixit.lruihao.cn/zh-cn/documentation/getting-started/) ➜ [内容管理](https://fixit.lruihao.cn/zh-cn/documentation/content-management/) ➜ [进阶篇](https://fixit.lruihao.cn/zh-cn/documentation/advanced/)
|
||||
|
||||
或者在本地运行 [文档站点](https://fixit.lruihao.cn/zh-cn/),更多细节详见 [参与贡献](#参与贡献)。
|
||||
### 快速开始
|
||||
|
||||
除此之外,还有 [FixIt 主题维基](https://github.com/hugo-fixit/FixIt/wiki)。
|
||||
|
||||
## 从 LoveIt 迁移
|
||||
|
||||
如果你现在正在使用 LoveIt 主题(或者一些其他的主题),你可以很容易地迁移至 FixIt。
|
||||
|
||||
你可以将这个主题仓库添加为你的网站目录的子模块。或者,您可以通过 [其他方式](https://fixit.lruihao.cn/zh-cn/documentation/basics/#install-theme) 安装主题。
|
||||
我们提供了一个 CLI 工具,可以通过一个命令来创建一个新的 FixIt 项目。
|
||||
|
||||
```bash
|
||||
git submodule add https://github.com/hugo-fixit/FixIt.git themes/FixIt
|
||||
pnpx fixit-cli create my-blog
|
||||
```
|
||||
|
||||
之后,你可以在站点目录通过这条命令来将主题更新至最新版本:
|
||||
[](https://asciinema.org/a/697494)
|
||||
|
||||
```bash
|
||||
git submodule update --remote --merge
|
||||
```
|
||||
### 模板
|
||||
|
||||
接着,前往 `config.toml` 并将默认主题更改为 `FixIt`。
|
||||
点击以下链接使用模板生成一个新的仓库:
|
||||
|
||||
```diff
|
||||
- theme = "LoveIt"
|
||||
+ theme = "FixIt"
|
||||
```
|
||||
| 模板 | 仓库 | 生成链接 |
|
||||
| :---------------------------------- | :-------------------------------- | :-------------------------------: |
|
||||
| 基于 Hugo Modules 的快速入门模板。 | [hugo-fixit-starter][starter] | [点击生成][starter:generate] |
|
||||
| 基于 Git submodule 的快速入门模板。 | [hugo-fixit-starter1][starter1] | [点击生成][starter1:generate] |
|
||||
| 使用 Fixit 主题构建多语言网站。 | [docs][docs] | [点击生成][docs:generate] |
|
||||
| 基于 FixIt 主题进行自定义设置。 | [Lruihao/hugo-blog][lruihao-blog] | [点击生成][lruihao-blog:generate] |
|
||||
|
||||
这样就完成了迁移工作,现在一切准备就绪 🎉
|
||||
[starter]: https://github.com/hugo-fixit/hugo-fixit-starter
|
||||
[starter:generate]: https://github.com/hugo-fixit/hugo-fixit-starter/generate
|
||||
[starter1]: https://github.com/hugo-fixit/hugo-fixit-starter1
|
||||
[starter1:generate]: https://github.com/hugo-fixit/hugo-fixit-starter1/generate
|
||||
[docs]: https://github.com/hugo-fixit/docs
|
||||
[docs:generate]: https://github.com/hugo-fixit/docs/generate
|
||||
[lruihao-blog]: https://github.com/Lruihao/hugo-blog
|
||||
[lruihao-blog:generate]: https://github.com/Lruihao/hugo-blog/generate
|
||||
|
||||
## 为什么选择 FixIt
|
||||
## 特色
|
||||
|
||||
FixIt 主题继承了 LoveIt 等主题的优秀功能,并在它们的基础上添加了新的功能与优化,详见 [特性](#特性)。除此之外,FixIt 主题还有以下优点:
|
||||
|
||||
* 完善的中英文官方文档
|
||||
* 社区支持:主题官网、Discussions 和官方 QQ 群
|
||||
* 持续积极地更新
|
||||
* 不断收纳各方的建议和想法
|
||||
* 高度开放主题可自定义部分
|
||||
|
||||
总之,如果你更偏好 FixIt 主题的设计语言和自由度,如果你和我一样喜欢个性化自定义主题,那么,FixIt 主题可能是更适合你。
|
||||
|
||||
## 谁在用 FixIt
|
||||
|
||||
为了直观地浏览主题特性,这里有一些基于 **FixIt** 主题渲染的 [预览网站](https://fixit.lruihao.cn/zh-cn/friends/)。
|
||||
|
||||
## 特性
|
||||
<details>
|
||||
<summary>点击展开</summary>
|
||||
|
||||
### 性能和 SEO
|
||||
|
||||
* **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, 99/100 的移动设备得分和 100/100 的桌面设备得分
|
||||
* 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化
|
||||
* 支持 **[Google Analytics](https://analytics.google.com/analytics)**
|
||||
* 支持 **[Fathom Analytics](https://usefathom.com/)**
|
||||
* 支持搜索引擎的**网站验证** (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
|
||||
* 支持所有第三方库的 **CDN**
|
||||
- **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中,99/100 的移动设备得分和 100/100 的桌面设备得分
|
||||
- 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化
|
||||
- 支持 **[Google Analytics](https://analytics.google.com/analytics)**
|
||||
- 支持 **[Fathom Analytics](https://usefathom.com/)**
|
||||
- 支持 **[百度统计](https://tongji.baidu.com/)**
|
||||
- 支持 **[Umami Analytics](https://umami.is/)**
|
||||
- 支持 **[Plausible Analytics](https://plausible.io/)**
|
||||
- 支持 **[Cloudflare Web Analytics](https://www.cloudflare.com/web-analytics)**
|
||||
- 支持 **[Splitbee Analytics](https://splitbee.io)**
|
||||
- 支持搜索引擎的**网站验证** (Google, Bing, Yandex, Pinterest, Baidu, 360 and Sogou)
|
||||
- 支持所有第三方库的 **CDN**
|
||||
|
||||
### 外观和布局
|
||||
|
||||
* **响应式**布局
|
||||
* **浅色/深色** 主题模式
|
||||
* 全局一致的**设计语言**
|
||||
* 支持**分页**
|
||||
* 易用和自动展开的**文章目录**
|
||||
* 支持**多语言**和国际化
|
||||
* 美观的 **CSS 动画**
|
||||
- **响应式**布局
|
||||
- **浅色/深色** 主题模式
|
||||
- 全局一致的**设计语言**
|
||||
- 支持**分页**
|
||||
- 易用和自动展开的**文章目录**
|
||||
- 支持**多语言**和国际化
|
||||
- 美观的 **CSS 动画**
|
||||
|
||||
### 社交和评论系统
|
||||
|
||||
* 支持 **[Gravatar](https://gravatar.com)** 头像
|
||||
* 支持本地**头像**
|
||||
* 支持多达 **87** 种社交链接
|
||||
* 支持多达 **28** 种网站分享
|
||||
* 支持 **[Disqus](https://disqus.com)** 评论系统
|
||||
* 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统
|
||||
* 支持 **[Valine](https://valine.js.org/)** 评论系统
|
||||
* 支持 **[Waline](https://waline.js.org/)** 评论系统
|
||||
* 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统
|
||||
* 支持 **[Telegram comments](https://comments.app/) 评论**系统
|
||||
* 支持 **[Commento](https://commento.io/)** 评论系统
|
||||
* 支持 **[Utterances](https://utteranc.es/)** 评论系统
|
||||
* 支持 **[Artalk](https://artalk.js.org/)** 评论系统
|
||||
* 支持 **[Twikoo](https://twikoo.js.org/)** 评论系统
|
||||
* 支持 **[giscus](https://giscus.app/zh-CN/)** 评论系统
|
||||
- 支持 **[Gravatar](https://gravatar.com)** 头像
|
||||
- 支持本地**头像**
|
||||
- 支持多达 **87** 种社交链接
|
||||
- 支持多达 **28** 种网站分享
|
||||
- 支持 **[Disqus](https://disqus.com)** 评论系统
|
||||
- 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统
|
||||
- 支持 **[Valine](https://valine.js.org/)** 评论系统
|
||||
- 支持 **[Waline](https://waline.js.org/)** 评论系统
|
||||
- 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统
|
||||
- 支持 **[Telegram comments](https://comments.app/) 评论**系统
|
||||
- 支持 **[Commento](https://commento.io/)** 评论系统
|
||||
- 支持 **[Utterances](https://utteranc.es/)** 评论系统
|
||||
- 支持 **[Artalk](https://artalk.js.org/)** 评论系统
|
||||
- 支持 **[Twikoo](https://twikoo.js.org/)** 评论系统
|
||||
- 支持 **[giscus](https://giscus.app/zh-CN/)** 评论系统
|
||||
|
||||
### 扩展功能
|
||||
|
||||
* 支持**渐进式网页应用**
|
||||
* 支持**二级菜单**
|
||||
* 支持**内容加密**(页面、局部)
|
||||
* 支持**友情链接**的页面模板
|
||||
* 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 或 [Fuse.js](https://fusejs.io/) 的**搜索**
|
||||
* 支持 **Twemoji**
|
||||
* 支持**代码高亮**
|
||||
* 一键**复制代码**到剪贴板
|
||||
* 支持基于 [lightgallery](https://github.com/sachinchoolur/lightgallery) 的**图片画廊**
|
||||
* 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法
|
||||
* 支持**上标注释**的扩展 Markdown 语法
|
||||
* 支持**分数**的扩展 Markdown 语法
|
||||
* 支持基于 [KaTeX](https://katex.org/) 的**数学公式**
|
||||
* 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** shortcode
|
||||
* 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode
|
||||
* 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode
|
||||
* 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode
|
||||
* 支持 **Bilibili 视频** shortcode
|
||||
* 支持多种**注释**的 shortcode
|
||||
* 支持**自定义样式**的 shortcode
|
||||
* 支持**自定义脚本**的 shortcode
|
||||
* 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode
|
||||
* 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅**
|
||||
* 支持基于 [cell-watermark](https://github.com/Lruihao/watermark) 的**网页水印**
|
||||
* 支持基于 [pangu.js](https://github.com/vinta/pangu.js) 的**中文排版**
|
||||
* ……
|
||||
|
||||
## 多语言和国际化
|
||||
|
||||
FixIt 支持下列语言:
|
||||
|
||||
* 英语
|
||||
* 简体中文
|
||||
* 繁体中文
|
||||
* 法语
|
||||
* 波兰语
|
||||
* 巴西葡萄牙语
|
||||
* 意大利语
|
||||
* 西班牙语
|
||||
* 德语
|
||||
* 塞尔维亚语
|
||||
* 俄语
|
||||
* 罗马尼亚语
|
||||
* 越南语
|
||||
* [贡献一种新的语言](https://github.com/hugo-fixit/FixIt/pulls)
|
||||
|
||||
[语言兼容性](https://fixit.lruihao.cn/zh-cn/theme-documentation-basics/#language-compatibility)
|
||||
|
||||
## [路线图](https://github.com/hugo-fixit/FixIt/projects/1)
|
||||
|
||||
## [更新日志](/CHANGELOG.md)
|
||||
|
||||
## 问题、想法、bugs 和 PRs
|
||||
|
||||
所有的反馈都是欢迎的!详见 [议题](https://github.com/hugo-fixit/FixIt/issues) 或者 [讨论](https://github.com/hugo-fixit/FixIt/discussions)。
|
||||
|
||||
## 参与贡献
|
||||
|
||||
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 以了解贡献该项目的基本信息。
|
||||
|
||||
确保在贡献和参与讨论时遵守 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。
|
||||
|
||||
**贡献时,请先通过此存储库上的问题讨论您希望进行的更改,然后再进行实际更改**。
|
||||
|
||||
## [所有贡献者](contributors.md)
|
||||
|
||||
## 镜像
|
||||
|
||||
* Gitee 镜像仓库:<https://gitee.com/lruihao/FixIt>
|
||||
|
||||
## 致谢
|
||||
|
||||
<details open>
|
||||
<summary>FixIt 主题中用到了以下项目,感谢它们的作者:</summary>
|
||||
|
||||
* [normalize.css](https://github.com/necolas/normalize.css)
|
||||
* [Font Awesome](https://fontawesome.com/)
|
||||
* [Simple Icons](https://github.com/simple-icons/simple-icons)
|
||||
* [Animate.css](https://daneden.github.io/animate.css/)
|
||||
* [autocomplete-js](https://github.com/algolia/autocomplete)
|
||||
* [Lunr.js](https://lunrjs.com/)
|
||||
* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
|
||||
* [Fuse.js](https://fusejs.io/)
|
||||
* [object-fit-images](https://github.com/fregante/object-fit-images)
|
||||
* [Twemoji](https://github.com/twitter/twemoji)
|
||||
* [emoji-data](https://github.com/iamcal/emoji-data)
|
||||
* [lightgallery](https://github.com/sachinchoolur/lightgallery)
|
||||
* [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
* [TypeIt](https://typeitjs.com/)
|
||||
* [KaTeX](https://katex.org/)
|
||||
* [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
* [ECharts](https://echarts.apache.org/)
|
||||
* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
* [APlayer](https://github.com/MoePlayer/APlayer)
|
||||
* [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
* [Gitalk](https://github.com/gitalk/gitalk)
|
||||
* [Valine](https://valine.js.org/)
|
||||
* [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
* [cell-watermark](https://github.com/Lruihao/watermark)
|
||||
* [不蒜子](http://busuanzi.ibruce.info/)
|
||||
* [pangu.js](https://github.com/vinta/pangu.js)
|
||||
* [Artalk](https://artalk.js.org/)
|
||||
* [Waline](https://waline.js.org/)
|
||||
* [Twikoo](https://twikoo.js.org/)
|
||||
* [github-corners](https://github.com/tholman/github-corners)
|
||||
* [giscus](https://giscus.app/zh-CN)
|
||||
* [crypto-js](https://github.com/brix/crypto-js)
|
||||
* [vConsole](https://github.com/Tencent/vConsole)
|
||||
* [eruda](https://github.com/liriliri/eruda)
|
||||
* [pace](https://github.com/CodeByZach/pace)
|
||||
- 支持基于 [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330) 的 **AI 摘要**、**AI 搜索** 和 **AI 智能客服**
|
||||
- 支持**渐进式网页应用**
|
||||
- 支持**二级菜单**
|
||||
- 支持**内容加密**(页面、局部)
|
||||
- 支持**友情链接**的页面模板
|
||||
- 支持基于 [algolia](https://www.algolia.com/)、[Fuse.js](https://fusejs.io/)、 **CSE** 或 [PostChat](https://ai.zhheo.com/console/login?InviteID=85041330) 的**搜索**
|
||||
- 支持基于 [Google](https://programmablesearchengine.google.com/) 的**自定义搜索引擎 (CSE)**
|
||||
- 支持 **Twemoji**
|
||||
- 支持**代码高亮**
|
||||
- 一键**复制代码**到剪贴板
|
||||
- 支持基于 [lightgallery](https://github.com/sachinchoolur/lightgallery) 的**图片画廊**
|
||||
- 支持 **[Font Awesome](https://fontawesome.com/) 图标**的 Markdown 扩展语法
|
||||
- 支持**上标注释**的 Markdown 扩展语法
|
||||
- 支持**分数**的 Markdown 扩展语法
|
||||
- 支持多种 **admonitions** shortcode 或 **alerts** 的 Markdown 扩展语法
|
||||
- 支持**标签页**的 shortcode,提供多种设计样式
|
||||
- 支持基于 [KaTeX](https://katex.org/) 或 [MathJax](https://www.mathjax.org) 的**数学公式**
|
||||
- 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** 代码块扩展语法和 shortcode
|
||||
- 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** 代码块扩展语法和 shortcode
|
||||
- 支持 **Timeline** 的代码块扩展语法和 shortcode
|
||||
- 支持 **文件树** 的代码块扩展语法和 shortcode
|
||||
- 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode
|
||||
- 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode
|
||||
- 支持 **Bilibili 视频** 和 **抖音视频** shortcode
|
||||
- 支持**自定义样式**的 shortcode
|
||||
- 支持**自定义脚本**的 shortcode
|
||||
- 支持**自定义模板块**
|
||||
- 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode
|
||||
- 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅**
|
||||
- 支持基于 [cell-watermark](https://github.com/Lruihao/watermark) 的**网页水印**
|
||||
- 支持基于 [pangu.js](https://github.com/vinta/pangu.js) 的**中文排版**
|
||||
- 支持本地**缓存远程图床图片**
|
||||
- ……
|
||||
|
||||
</details>
|
||||
|
||||
<details open>
|
||||
<summary>FixIt 主题还借鉴了以下项目的部分功能,同样感谢它们的作者:</summary>
|
||||
## 多语言和国际化
|
||||
|
||||
* [DoIt](https://github.com/HEIGE-PCloud/DoIt)
|
||||
* [NexT](https://github.com/next-theme/hexo-theme-next)
|
||||
FixIt 主题多语言基本配置及自动翻译等详见 [内容管理](https://fixit.lruihao.cn/zh-cn/documentation/content-management/introduction#multilingual) 文档,欢迎 [贡献一种新的语言](https://github.com/hugo-fixit/FixIt/pulls)。
|
||||
|
||||
<details>
|
||||
<summary>FixIt 支持下列语言。</summary>
|
||||
|
||||
- 英语
|
||||
- 简体中文
|
||||
- 繁体中文
|
||||
- 法语
|
||||
- 波兰语
|
||||
- 巴西葡萄牙语
|
||||
- 意大利语
|
||||
- 西班牙语
|
||||
- 德语
|
||||
- 塞尔维亚语
|
||||
- 俄语
|
||||
- 罗马尼亚语
|
||||
- 越南语
|
||||
- 印地语
|
||||
- 日语
|
||||
- 韩语
|
||||
|
||||
</details>
|
||||
|
||||
## 主题组件
|
||||
|
||||
FixIt 主题旨在在**简洁性**和**可扩展性**之间取得平衡。为此,我们开发了一系列额外的 [Hugo 主题组件](https://fixit.lruihao.cn/zh-cn/ecosystem/#-组件) 供用户选择。
|
||||
|
||||
<details>
|
||||
<summary>点击展开</summary>
|
||||
|
||||
<!-- HUGO_FIXIT_COMPONENTS:START -->
|
||||
- [fixit-bundle](https://github.com/hugo-fixit/fixit-bundle)\
|
||||
🌲 Bundles the FixIt core theme and all hugo-fixit components into a single component.
|
||||
- [cmpt-flyfish](https://github.com/hugo-fixit/cmpt-flyfish)\
|
||||
🐟 A canvas implemented animation effect of small fish swimming.
|
||||
- [cmpt-mdevtools](https://github.com/hugo-fixit/cmpt-mdevtools)\
|
||||
Mobile devtools component powered by vConsole and eruda.
|
||||
- [cmpt-santa-hat](https://github.com/hugo-fixit/cmpt-santa-hat)\
|
||||
A Christmas Easter Egg by JavaScript.
|
||||
- [cmpt-translate](https://github.com/hugo-fixit/cmpt-translate)\
|
||||
🌐 A component for site automatic translation.
|
||||
- [component-projects](https://github.com/hugo-fixit/component-projects)\
|
||||
🐙 Display your GitHub projects in the FixIt theme and generate blog posts from readme.
|
||||
- [hugo-atom-feed](https://github.com/hugo-fixit/hugo-atom-feed)\
|
||||
Hugo theme component for ATOM feed custom Output Format.
|
||||
- [hugo-json-feed](https://github.com/hugo-fixit/hugo-json-feed)\
|
||||
Hugo theme component for JSON feed custom Output Format.
|
||||
- [shortcode-asciinema](https://github.com/hugo-fixit/shortcode-asciinema)\
|
||||
A Hugo theme component with asciinema-embed shortcode.
|
||||
- [shortcode-caniuse](https://github.com/hugo-fixit/shortcode-caniuse)\
|
||||
A Hugo theme component with caniuse shortcode.
|
||||
- [shortcode-docs-bookmark](https://github.com/hugo-fixit/shortcode-docs-bookmark)\
|
||||
🔖 Embed bookmark of FixIt Docs.
|
||||
- [shortcode-missing-translation](https://github.com/hugo-fixit/shortcode-missing-translation)\
|
||||
A Hugo theme component with missing-translation shortcode.
|
||||
- [shortcode-mmt-netease](https://github.com/hugo-fixit/shortcode-mmt-netease)\
|
||||
🎶 A Hugo theme component with a NetEase Cloud random comment shortcode.
|
||||
- [shortcode-rewards](https://github.com/hugo-fixit/shortcode-rewards)\
|
||||
A Hugo theme component with reward-log or sponsor-log shortcode.
|
||||
<!-- HUGO_FIXIT_COMPONENTS:END -->
|
||||
|
||||
</details>
|
||||
|
||||
## 社区支持
|
||||
|
||||
所有的反馈都是欢迎的!详见 [Discussions][discussions]、[Pull requests][pulls] 和 [Issues][issues]。
|
||||
|
||||
| 官方社区 | 说明 |
|
||||
| :--------------------------------- | :------------------------------ |
|
||||
| [Discussions][discussions] | GitHub 讨论区 |
|
||||
| [FixIt 主题交流群(微信)][wx-mp] | 关注「菠菜眾長」回复“FixIt”获取 |
|
||||
| [FixIt 主题交流群(QQ)][qq-group] | QQ 群:`814031017` |
|
||||
| [Hugo FixIt 星球][zsxq] | 付费知识星球 |
|
||||
|
||||
[discussions]: https://github.com/hugo-fixit/FixIt/discussions
|
||||
[pulls]: https://github.com/hugo-fixit/FixIt/pulls
|
||||
[issues]: https://github.com/hugo-fixit/FixIt/issues
|
||||
[qq-group]: https://qm.qq.com/cgi-bin/qm/qr?k=awbwdTtSQ_-H5QGzeJxdWgv6JMbNehNM&jump_from=webapi
|
||||
[zsxq]: https://t.zsxq.com/GgKEW
|
||||
[wx-mp]: https://lruihao.cn/images/qr-wx-mp.webp
|
||||
|
||||
## 参与贡献
|
||||
|
||||
我们欢迎你加入 FixIt 的开发,贡献出你的一份力量。请看开源 [贡献指南](/CONTRIBUTING.md)。 🤗
|
||||
|
||||
你也可以随时向我们的 [官方插件](https://github.com/hugo-fixit) 提交 Issue 或 Pull Request。
|
||||
|
||||
> [!note]
|
||||
> 在贡献时,请先通过此存储库上的讨论来讨论你希望进行的更改,然后再进行实际更改。
|
||||
|
||||
## 致谢
|
||||
|
||||
感谢 [所有贡献者](https://github.com/hugo-fixit/FixIt/graphs/contributors) 的支持!
|
||||
|
||||
感谢 [Hugo DoIt](https://github.com/HEIGE-PCloud/DoIt) 主题和 [Hexo NexT](https://github.com/next-theme/hexo-theme-next) 主题给予的灵感和借鉴。
|
||||
|
||||
<details>
|
||||
<summary>感谢 FixIt 主题中使用的所有开源项目。</summary>
|
||||
|
||||
- [normalize.css](https://github.com/necolas/normalize.css)
|
||||
- [Font Awesome](https://fontawesome.com/)
|
||||
- [Simple Icons](https://github.com/simple-icons/simple-icons)
|
||||
- [Animate.css](https://daneden.github.io/animate.css/)
|
||||
- [autocomplete-js](https://github.com/algolia/autocomplete)
|
||||
- [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
|
||||
- [Fuse.js](https://fusejs.io/)
|
||||
- [object-fit-images](https://github.com/fregante/object-fit-images)
|
||||
- [Twemoji](https://github.com/twitter/twemoji)
|
||||
- [emoji-data](https://github.com/iamcal/emoji-data)
|
||||
- [lightgallery](https://github.com/sachinchoolur/lightgallery)
|
||||
- [Sharer.js](https://github.com/ellisonleao/sharer.js)
|
||||
- [TypeIt](https://typeitjs.com/)
|
||||
- [KaTeX](https://katex.org/)
|
||||
- [MathJax](https://www.mathjax.org)
|
||||
- [mermaid](https://github.com/mermaid-js/mermaid)
|
||||
- [ECharts](https://echarts.apache.org/)
|
||||
- [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
|
||||
- [APlayer](https://github.com/MoePlayer/APlayer)
|
||||
- [MetingJS](https://github.com/metowolf/MetingJS)
|
||||
- [Gitalk](https://github.com/gitalk/gitalk)
|
||||
- [Valine](https://valine.js.org/)
|
||||
- [cookieconsent](https://github.com/osano/cookieconsent)
|
||||
- [cell-watermark](https://github.com/Lruihao/watermark)
|
||||
- [不蒜子](http://busuanzi.ibruce.info/)
|
||||
- [Vercount](https://github.com/EvanNotFound/vercount)
|
||||
- [pangu.js](https://github.com/vinta/pangu.js)
|
||||
- [Artalk](https://artalk.js.org/)
|
||||
- [Waline](https://waline.js.org/)
|
||||
- [Twikoo](https://twikoo.js.org/)
|
||||
- [github-corners](https://github.com/tholman/github-corners)
|
||||
- [giscus](https://giscus.app/zh-CN)
|
||||
- [crypto-js](https://github.com/brix/crypto-js)
|
||||
- [pace](https://github.com/CodeByZach/pace)
|
||||
- [xxhash-wasm](https://github.com/jungomi/xxhash-wasm)
|
||||
- [`<tab-container>` element](https://github.com/github/tab-container-element)
|
||||
- [`<json-viewer>` element](https://github.com/Lruihao/json-viewer-element)
|
||||
|
||||
</details>
|
||||
|
||||
## 许可协议
|
||||
|
||||
FixIt 根据 **MIT** 许可协议授权。 更多信息请查看 [LICENSE 文件](LICENSE)。
|
||||
FixIt 根据 **MIT** 许可协议授权。更多信息请查看 [LICENSE 文件](/LICENSE)。
|
||||
|
||||
## 赞助支持
|
||||
|
||||
如果你喜爱这个主题,请考虑给我买杯咖啡 ☕️,谢谢!
|
||||
|
||||
- [微信支付](/images/wechatpay.jpg)
|
||||
- [支付宝](/images/alipay.jpg)
|
||||
- [PayPal](https://paypal.me/Lruihao)
|
||||
|
||||
感谢以下赞助商提供大力支持:
|
||||
|
||||
- [translate.js](https://github.com/xnx3/translate) 赞助[企业级翻译通道](https://translate.zvo.cn/4087.html)。
|
||||
|
||||
## 作者
|
||||
|
||||
[Lruihao](https://github.com/Lruihao "在 GitHub 上关注我")
|
||||
|
||||
## 赞助支持
|
||||
|
||||
给我一个 Star 🌟 已经是对我最大的鼓励和支持了。\
|
||||
如果你喜爱这个主题,请考虑给我买杯咖啡 ☕️。
|
||||
|
||||
* [PayPal](https://paypal.me/Lruihao)
|
||||
* [支付宝](images/alipay.jpg)
|
||||
* [微信支付](images/wechatpay.jpg)
|
||||
|
||||
谢谢!❤️
|
||||
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Only the latest version receives active maintenance and security updates:
|
||||
|
||||
| Version | Hugo Version | LoveIt Compat | Supported |
|
||||
| :-----: | :---------------: | :----------------: | :----------------: |
|
||||
| 0.4.x | 0.147.7 ~ latest | N/A | :white_check_mark: |
|
||||
| 0.3.x | 0.112.0 ~ 0.146.0 | N/A | :x: |
|
||||
| 0.2.x | 0.62.0 ~ 0.110.0 | :white_check_mark: | :x: |
|
||||
| 0.1.x | Unknown | :white_check_mark: | :x: |
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### Theme Security Features
|
||||
|
||||
- **Content Security Policy (CSP)** support
|
||||
- **Subresource Integrity (SRI)** for external resources
|
||||
- **XSS protection** through Hugo's built-in escaping
|
||||
- **Safe HTML rendering** with configurable markup
|
||||
- **Secure defaults** for all theme configurations
|
||||
|
||||
### Best Practices
|
||||
|
||||
1. **Keep Hugo Updated**: Always use the latest stable Hugo version
|
||||
2. **Regular Updates**: Update the theme regularly to get security patches
|
||||
3. **Content Validation**: Validate user-generated content before publishing
|
||||
4. **HTTPS Only**: Always deploy sites with HTTPS enabled
|
||||
|
||||
### Known Security Considerations
|
||||
|
||||
- External CDN resources should be reviewed before enabling
|
||||
- User-generated content requires proper sanitization
|
||||
- Third-party integrations (comments, analytics) should be configured securely
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
We take security seriously and appreciate your help in keeping FixIt secure.
|
||||
|
||||
### How to Report
|
||||
|
||||
1. **Create an Issue**: Report vulnerabilities at https://github.com/hugo-fixit/FixIt/issues
|
||||
2. **Private Disclosure**: For sensitive security issues, email the maintainers directly
|
||||
3. **Include Details**: Provide clear steps to reproduce the vulnerability
|
||||
|
||||
### What to Include
|
||||
|
||||
- **Description**: Clear description of the vulnerability
|
||||
- **Impact**: Potential impact and severity
|
||||
- **Reproduction**: Step-by-step instructions to reproduce
|
||||
- **Environment**: Hugo version, theme version, and platform details
|
||||
- **Solution**: Suggested fix if you have one
|
||||
|
||||
### Response Timeline
|
||||
|
||||
- **Acknowledgment**: Within 48 hours
|
||||
- **Initial Assessment**: Within 1 week
|
||||
- **Status Updates**: Weekly updates on progress
|
||||
- **Resolution**: Security fixes are prioritized and released as soon as possible
|
||||
|
||||
### Disclosure Policy
|
||||
|
||||
- We follow responsible disclosure practices
|
||||
- We will coordinate with you on the disclosure timeline
|
||||
|
||||
## Security Resources
|
||||
|
||||
- [Hugo Security Model](https://gohugo.io/about/security/)
|
||||
- [OWASP Web Security Testing Guide](https://owasp.org/www-project-web-security-testing-guide/)
|
||||
- [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP)
|
||||
|
||||
<!-- This security policy was enhanced and generated with assistance from GitHub Copilot AI -->
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: My First Post
|
||||
date: 2023-02-20T20:14:22+08:00
|
||||
draft: false
|
||||
categories:
|
||||
- blog
|
||||
collections:
|
||||
- blog
|
||||
tags:
|
||||
- blog
|
||||
---
|
||||
|
||||
A blog (a truncation of "weblog") is an informational website published on the World Wide Web consisting of discrete, often informal diary-style text entries (posts). Posts are typically displayed in reverse chronological order so that the most recent post appears first, at the top of the web page. Until 2009, blogs were usually the work of a single individual,[citation needed] occasionally of a small group, and often covered a single subject or topic. In the 2010s, "multi-author blogs" (MABs) emerged, featuring the writing of multiple authors and sometimes professionally edited. MABs from newspapers, other media outlets, universities, think tanks, advocacy groups, and similar institutions account for an increasing quantity of blog traffic. The rise of Twitter and other "microblogging" systems helps integrate MABs and single-author blogs into the news media. Blog can also be used as a verb, meaning to maintain or add content to a blog.
|
||||
@@ -0,0 +1,36 @@
|
||||
# =====================================================================================
|
||||
# The following is a necessary configuration for the FixIt theme.
|
||||
# =====================================================================================
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Hugo Configuration
|
||||
# See: https://gohugo.io/getting-started/configuration/
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
title = "Hugo FixIt Demo"
|
||||
baseURL = "https://demo.fixit.lruihao.cn/"
|
||||
# theme = "FixIt"
|
||||
|
||||
[markup]
|
||||
_merge = "shallow"
|
||||
|
||||
[outputs]
|
||||
_merge = "shallow"
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Taxonomies Configuration
|
||||
# See: https://gohugo.io/content-management/taxonomies/#configure-taxonomies
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
[taxonomies]
|
||||
_merge = "shallow"
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Theme Core Configuration
|
||||
# See: https://fixit.lruihao.cn/documentation/basics/#theme-configuration
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
[params]
|
||||
# FixIt theme version
|
||||
version = "0.3.X" # e.g. "0.2.X", "0.2.15", "v0.2.15" etc.
|
||||
# ...
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "@hugo-fixit/demo",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "hugo --themesDir ../../.. --theme $PWD/../.. --gc --minify --logLevel info",
|
||||
"dev": "hugo server --themesDir ../../.. --theme $PWD/../.. -D --disableFastRender --navigateToChanged --ignoreCache -O"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
[
|
||||
{
|
||||
"name": "src-json",
|
||||
"type": "dir",
|
||||
"children": [
|
||||
{
|
||||
"name": "index.ts",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": "components",
|
||||
"type": "dir",
|
||||
"children": [
|
||||
{
|
||||
"name": "Header.tsx",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": "Footer.tsx",
|
||||
"type": "file"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "utils",
|
||||
"type": "dir",
|
||||
"children": [
|
||||
{
|
||||
"name": "helper.ts",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": "validator.ts",
|
||||
"type": "file"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "public",
|
||||
"type": "dir",
|
||||
"children": [
|
||||
{
|
||||
"name": "favicon.ico",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": "images",
|
||||
"type": "dir",
|
||||
"children": [
|
||||
{
|
||||
"name": "logo.png",
|
||||
"type": "file"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "package.json",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": "README.md",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": "tsconfig.json",
|
||||
"type": "file"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: All Tests
|
||||
titleIcon: fa-solid fa-flask
|
||||
---
|
||||
@@ -0,0 +1,165 @@
|
||||
---
|
||||
title: Alerts and Admonition Syntax Test
|
||||
date: 2025-09-05T16:57:58+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
- Shortcodes
|
||||
tags:
|
||||
- Alerts
|
||||
- Admonition
|
||||
---
|
||||
|
||||
This article comprehensively tests the **Alerts** Markdown syntax extension and **Admonition** shortcode functionality in the FixIt theme.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Basic Alerts Syntax
|
||||
|
||||
> [!NOTE]
|
||||
> Highlights information that users should take into account, even when skimming.
|
||||
|
||||
> [!TIP]
|
||||
> Optional information to help a user be more successful.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Crucial information necessary for users to succeed.
|
||||
|
||||
> [!WARNING]
|
||||
> Critical content demanding immediate user attention due to potential risks.
|
||||
|
||||
> [!CAUTION]
|
||||
> Negative potential consequences of an action.
|
||||
|
||||
## Extended Alerts Syntax
|
||||
|
||||
### Custom Titles
|
||||
|
||||
> [!NOTE] FixIt
|
||||
> A clean, elegant but advanced Hugo theme.
|
||||
|
||||
> [!TIP] This is a title-only alert.
|
||||
|
||||
### Foldable Alerts
|
||||
|
||||
Create foldable alerts by adding a plus (+) or minus (-) directly after the type identifier:
|
||||
|
||||
> [!WARNING]+ Radiation Hazard
|
||||
> Do not approach or handle without protective gear.
|
||||
|
||||
> [!QUESTION]- Are alerts foldable?
|
||||
> Yes! In a foldable alert, the contents are hidden when collapsed.
|
||||
|
||||
### Nested Alerts
|
||||
|
||||
Alerts can be nested in multiple levels:
|
||||
|
||||
> [!question] Can alerts be nested?
|
||||
> > [!todo] Yes! They can be nested.
|
||||
> > > [!example] You can even use multiple layers of nesting.
|
||||
|
||||
### Content-only Alerts
|
||||
|
||||
> [!TIP]~
|
||||
> This is a content-only alert without a title.
|
||||
|
||||
### Supported types
|
||||
|
||||
> [!note]+
|
||||
> This is a note type alert example.
|
||||
|
||||
> [!abstract]-
|
||||
> This is an abstract type alert example. Aliases: `summary`, `tldr`
|
||||
|
||||
> [!info]-
|
||||
> This is an info type alert example.
|
||||
|
||||
> [!todo]-
|
||||
> This is a todo type alert example.
|
||||
|
||||
> [!tip]-
|
||||
> This is a tip type alert example. Aliases: `hint`, `important`
|
||||
|
||||
> [!success]-
|
||||
> This is a success type alert example. Aliases: `check`, `done`
|
||||
|
||||
> [!question]-
|
||||
> This is a question type alert example. Aliases: `help`, `faq`
|
||||
|
||||
> [!warning]-
|
||||
> This is a warning type alert example. Aliases: `caution`, `attention`
|
||||
|
||||
> [!failure]-
|
||||
> This is a failure type alert example. Aliases: `fail`, `missing`
|
||||
|
||||
> [!danger]-
|
||||
> This is a danger type alert example. Aliases: `error`
|
||||
|
||||
> [!bug]-
|
||||
> This is a bug type alert example.
|
||||
|
||||
> [!example]-
|
||||
> This is an example type alert example.
|
||||
|
||||
> [!quote]-
|
||||
> This is a quote type alert example. Aliases: `cite`
|
||||
|
||||
## Admonition Shortcode
|
||||
|
||||
{{< admonition >}}
|
||||
This is the default note type admonition.
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition abstract "" false >}}
|
||||
This is the default abstract type admonition. Aliases: `summary`, `tldr`
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition info "" false >}}
|
||||
This is the default info type admonition.
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition todo "" false >}}
|
||||
This is the default todo type admonition.
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition tip "" false >}}
|
||||
This is the default tip type admonition. Aliases: `hint`, `important`
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition success "" false >}}
|
||||
This is the default success type admonition. Aliases: `check`, `done`
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition question "" false >}}
|
||||
This is the default question type admonition. Aliases: `help`, `faq`
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition warning "" false >}}
|
||||
This is the default warning type admonition. Aliases: `caution`, `attention`
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition failure "" false >}}
|
||||
This is the default failure type admonition. Aliases: `fail`, `missing`
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition danger "" false >}}
|
||||
This is the default danger type admonition. Aliases: `error`
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition bug "" false >}}
|
||||
This is the default bug type admonition.
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition example "" false >}}
|
||||
This is the default example type admonition.
|
||||
{{< /admonition >}}
|
||||
|
||||
{{< admonition quote "" false >}}
|
||||
This is the default quote type admonition. Aliases: `cite`
|
||||
{{< /admonition >}}
|
||||
|
||||
## Special Types
|
||||
|
||||
> [!center]
|
||||
> This paragraph is **center-aligned**.
|
||||
@@ -0,0 +1,3 @@
|
||||
[00:00.00]APlayer audio1
|
||||
[00:04.01]is
|
||||
[00:08.02]amazing
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 90 KiB |
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: APlayer Test
|
||||
date: 2025-10-21T11:00:04+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Shortcodes
|
||||
tags:
|
||||
- APlayer
|
||||
---
|
||||
|
||||
Testing APlayer shortcode in FixIt theme.
|
||||
|
||||
<!--more-->
|
||||
|
||||
{{< aplayer fixed=false mini=false autoplay=false theme="#b7daff" loop="all" order="list" preload="auto" volume=0.7 mutex=true lrcType=3 listFolded=false listMaxHeight="" storageName="aplayer-setting" >}}
|
||||
{{< audio name="Wavelength1" artist="oldmanyoung1" url="Wavelength.mp3" cover="Wavelength.webp" lrc="Wavelength.lrc" />}}
|
||||
{{< audio name="Wavelength2" artist="oldmanyoung2" url="Wavelength.mp3" cover="Wavelength.webp" />}}
|
||||
{{< /aplayer >}}
|
||||
|
||||
{{< aplayer fixed=false mini=false autoplay=false theme="#b7daff" loop="all" order="list" preload="auto" volume=0.7 mutex=true lrcType=1 listFolded=false listMaxHeight="" storageName="aplayer-setting" >}}
|
||||
{{< audio name="Wavelength1" artist="oldmanyoung1" url="Wavelength.mp3" cover="Wavelength.webp" />}}
|
||||
{{< audio name="Wavelength2" artist="oldmanyoung2" url="Wavelength.mp3" cover="Wavelength.webp" >}}
|
||||
[00:00.00]APlayer audio2
|
||||
[00:04.01]is
|
||||
[00:08.02]amazing
|
||||
{{< /audio >}}
|
||||
{{< /aplayer >}}
|
||||
@@ -0,0 +1,227 @@
|
||||
---
|
||||
title: Code Block Test
|
||||
date: 2025-11-28T15:16:35+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
tags:
|
||||
- Code Block
|
||||
---
|
||||
|
||||
Testing code block in FixIt theme.
|
||||
|
||||
<!--more-->
|
||||
<!-- markdownlint-disable-file blanks-around-lists ul-style ul-indent code-block-style -->
|
||||
|
||||
```fixit
|
||||
🎉🥚 in development mode!
|
||||
```
|
||||
|
||||
## Multiple modes
|
||||
|
||||
```js {mode="classic"}
|
||||
// Classic mode
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
```js {mode="mac"}
|
||||
// Mac mode
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
```js {mode="simple"}
|
||||
// Simple mode
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
## Code title
|
||||
|
||||
```{title="Quine Clock"}
|
||||
(r=()=>setInterval(t=>{for(j=o="\n",y=5;y--;document.body["inn"
|
||||
+"erHTML"]="<pre><"+(S="script>\n")+o+"\n\n</"+S)for(x=-01;
|
||||
63-!y>x++;o+=`(r=${r})()`[j++].fontcolor(c?'#FF0':"#444"))c=x/2
|
||||
%4<3&&parseInt("odRFacb67o2vi5gmOZmwFNteohbOh3sw".slice(i="9"<(
|
||||
D=Date()[16+(x/8|0)])?30:D*3,i+3),36)&1<<(x/2|0)%4+3*y},100))()
|
||||
```
|
||||
|
||||
## Code File Name
|
||||
|
||||
```js {name="hello.js"}
|
||||
function hello(x = 'world') {
|
||||
console.log(`Hello, ${x}!`)
|
||||
}
|
||||
|
||||
hello()
|
||||
// Hello, world!
|
||||
hello('FixIt')
|
||||
// Hello, FixIt!
|
||||
```
|
||||
|
||||
## Collapsed/Expanded
|
||||
|
||||
```
|
||||
eval(z = 'p="<"+"pre>"/* ,.oq#+ ,._, */;for(y in n="zw24l6k\
|
||||
4e3t4jnt4qj24xh2 x/* =<,m#F^ A W###q. */42kty24wrt413n243n\
|
||||
9h243pdxt41csb yz/* #K q##H######Am */43iyb6k43pk7243nm\
|
||||
r24".split(4)){/* dP cpq#q##########b, */for(a in t=pars\
|
||||
eInt(n[y],36)+/* p##@###YG=[#######y */(e=x=r=[]))for\
|
||||
(r=!r,i=0;t[a/* d#qg `*PWo##q#######D */]>i;i+=.05)wi\
|
||||
th(Math)x-= /* aem1k.com Q###KWR#### W[ */.05,0>cos(o=\
|
||||
new Date/1e3/* .Q#########Md#.###OP A@ , */+x/PI)&&(e[~\
|
||||
~(32*sin(o)*/* , (W#####Xx######.P^ T % */sin(.5+y/7))\
|
||||
+60] =-~ r);/* #y `^TqW####P###BP */for(x=0;122>\
|
||||
x;)p+=" *#"/* b. OQ####x#K */[e[x++]+e[x++\
|
||||
]]||(S=("eval"/* l `X#####D , */+"(z=\'"+z.spl\
|
||||
it(B = "\\\\")./* G####B" # */join(B+B).split\
|
||||
(Q="\'").join(B+Q/* VQBP` */)+Q+")//m1k")[x/2\
|
||||
+61*y-1]).fontcolor/* TP */(/\\w/.test(S)&&"#\
|
||||
03B");document.body.innerHTML=p+=B+"\\n"}setTimeout(z)')//
|
||||
```
|
||||
|
||||
````md
|
||||
```lang {.is-collapsed}
|
||||
// This code block will be collapsed by default.
|
||||
```
|
||||
````
|
||||
|
||||
````md
|
||||
```lang {.is-expanded}
|
||||
// This code block will be expanded regardless of its length.
|
||||
```
|
||||
````
|
||||
|
||||
## No wrapper
|
||||
|
||||
Set `wrapper=false` to disable code wrapper.
|
||||
|
||||
```js {wrapper=false}
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
```js {wrapper=false, lineNos=false}
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
## lineNos=false
|
||||
|
||||
```js {lineNos=false}
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
## lineNumbersInTable=false
|
||||
|
||||
> [!WARNING]
|
||||
> Not recommended!
|
||||
|
||||
```js {lineNumbersInTable=false}
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
## Diff Code
|
||||
|
||||
```diff
|
||||
- theme = "LoveIt"
|
||||
+ theme = "FixIt"
|
||||
! enhancements and fixes
|
||||
```
|
||||
|
||||
## Long Code
|
||||
|
||||
```html
|
||||
<p>Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.</p>
|
||||
```
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.</p>
|
||||
|
||||
## Code block inside other blocks
|
||||
|
||||
> [!NOTE]+
|
||||
>
|
||||
> ```js {mode="classic"}
|
||||
> function add(a, b) {
|
||||
> return a + b
|
||||
> }
|
||||
> ```
|
||||
|
||||
{{< typeit code=java >}}
|
||||
public class HelloWorld {
|
||||
public static void main(String []args) {
|
||||
System.out.println("Hello World");
|
||||
}
|
||||
}
|
||||
{{< /typeit >}}
|
||||
|
||||
{{< details "Code Block inside Details" >}}
|
||||
|
||||
```js {mode="classic"}
|
||||
function add(a, b) {
|
||||
return a + b
|
||||
}
|
||||
```
|
||||
|
||||
{{< /details >}}
|
||||
|
||||
## Highlighting
|
||||
|
||||
Highlighting in code fences is enabled by default.
|
||||
|
||||
```js {linenostart=287,hl_lines=[2,"8-10"]}
|
||||
/**
|
||||
* check if a string is a JS object string
|
||||
* @example isObjectLiteral("{a:1,b:2}") // true
|
||||
* @param {string} str string to check
|
||||
* @returns {boolean} whether the string is a JS object string
|
||||
*/
|
||||
function isObjectLiteral(str) {
|
||||
if (typeof str !== 'string') {
|
||||
return false
|
||||
}
|
||||
str = str.replace(/\s+/g, ' ').trim().replace(/;$/, '')
|
||||
if (str.startsWith('{') && str.endsWith('}')) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
```
|
||||
|
||||
Highlighting in shortcode highlight.
|
||||
|
||||
{{< highlight javascript "hl_lines=2 8-10,linenostart=287" >}}
|
||||
/**
|
||||
* check if a string is a JS object string
|
||||
* @example isObjectLiteral("{a:1,b:2}") // true
|
||||
* @param {string} str string to check
|
||||
* @returns {boolean} whether the string is a JS object string
|
||||
*/
|
||||
function isObjectLiteral(str) {
|
||||
if (typeof str !== 'string') {
|
||||
return false
|
||||
}
|
||||
str = str.replace(/\s+/g, ' ').trim().replace(/;$/, '')
|
||||
if (str.startsWith('{') && str.endsWith('}')) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
{{< /highlight >}}
|
||||
|
||||
## Gist Embed
|
||||
|
||||
{{< env "production" >}}
|
||||
{{< gist Lruihao fb8b2d0353465c4d40bf74818db80710 >}}
|
||||
{{< /env >}}
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: Color Preview Test
|
||||
date: 2025-08-17T17:20:00+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
tags:
|
||||
- Color Preview
|
||||
---
|
||||
|
||||
This post is a test post to preview the color syntax in Markdown.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## 📝 Syntax
|
||||
|
||||
| Color | Syntax | Example | Output |
|
||||
| ----- | ------------------ | -------------------------- | -------------------- |
|
||||
| HEX | `` `#RRGGBB` `` | `` `#0969DA` `` | `#0969DA` |
|
||||
| RGB | `` `rgb(R,G,B)` `` | `` `rgb(9, 105, 218)` `` | `rgb(9, 105, 218)` |
|
||||
| HSL | `` `hsl(H,S,L)` `` | `` `hsl(212, 92%, 45%)` `` | `hsl(212, 92%, 45%)` |
|
||||
|
||||
e.g. The background color is `#ffffff` for light mode and `#000000` for dark mode.
|
||||
|
||||
## ✅ Color Preview
|
||||
|
||||
Pure color values (no leading/trailing characters):
|
||||
|
||||
- `#0969DA`
|
||||
- `#096`
|
||||
- `#FF0000`
|
||||
- `#00FF00`
|
||||
- `rgb(255, 0, 0)`
|
||||
- `rgb(0, 255, 0)`
|
||||
- `hsl(240, 100%, 50%)`
|
||||
- `hsl(120, 100%, 50%)`
|
||||
|
||||
Theme colors:
|
||||
|
||||
| Type | Light | Dark |
|
||||
| :-------: | :-------: | :-------: |
|
||||
| Primary | `#1677ff` | `#0069fc` |
|
||||
| Secondary | `#8b949e` | `#7d8792` |
|
||||
| Success | `#52c41a` | `#49ad17` |
|
||||
| Info | `#13c2c2` | `#11abab` |
|
||||
| Warning | `#faad14` | `#efa105` |
|
||||
| Danger | `#ff4d4f` | `#ff3436` |
|
||||
|
||||
## ❌ Regular Code
|
||||
|
||||
With leading or trailing characters:
|
||||
|
||||
- `test #0969DA`
|
||||
- `#0969DA test`
|
||||
- `color: #0969DA`
|
||||
- ` #0969DA` (leading space)
|
||||
- `#0969DA ` (trailing space)
|
||||
- `background-color: rgb(255, 0, 0)`
|
||||
- `using hsl(240, 100%, 50%) color`
|
||||
@@ -0,0 +1,179 @@
|
||||
---
|
||||
title: Encryption Test
|
||||
date: 2022-05-21T22:31:22+08:00
|
||||
description: Test for encrypting content.
|
||||
password: 1212
|
||||
message: Password is 1212
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Features
|
||||
tags:
|
||||
- Encryption
|
||||
---
|
||||
|
||||
<!--more-->
|
||||
|
||||
I was shy, so I hid.
|
||||
|
||||
## Ruby
|
||||
|
||||
[Hugo]^(An open-source static site generator)
|
||||
|
||||
## Math
|
||||
|
||||
$$ \ce{CO2 + C -> 2 CO} $$
|
||||
|
||||
$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$
|
||||
|
||||
## style
|
||||
|
||||
{{< style "text-align:right; strong{color:#00b1ff;}" >}}
|
||||
This is a **right-aligned** paragraph.
|
||||
{{< /style >}}
|
||||
|
||||
## Script
|
||||
|
||||
{{< script >}}
|
||||
console.log('before decrypting');
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
fixit.decryptor.addEventListener('decrypted', function() {
|
||||
console.log('after decrypting')
|
||||
})
|
||||
});
|
||||
{{< /script >}}
|
||||
|
||||
## Mermaid
|
||||
|
||||
```mermaid
|
||||
graph LR;
|
||||
A[Hard edge] -->|Link text| B(Round edge)
|
||||
B --> C{Decision}
|
||||
C -->|One| D[Result one]
|
||||
C -->|Two| E[Result two]
|
||||
```
|
||||
|
||||
## Echarts
|
||||
|
||||
```echarts
|
||||
title:
|
||||
text: Summary Line Chart
|
||||
top: 2%
|
||||
left: center
|
||||
tooltip:
|
||||
trigger: axis
|
||||
legend:
|
||||
data:
|
||||
- Email Marketing
|
||||
- Affiliate Advertising
|
||||
- Video Advertising
|
||||
- Direct View
|
||||
- Search Engine
|
||||
top: 10%
|
||||
grid:
|
||||
left: 5%
|
||||
right: 5%
|
||||
bottom: 5%
|
||||
top: 20%
|
||||
containLabel: true
|
||||
toolbox:
|
||||
feature:
|
||||
saveAsImage:
|
||||
title: Save as Image
|
||||
xAxis:
|
||||
type: category
|
||||
boundaryGap: false
|
||||
data:
|
||||
- Monday
|
||||
- Tuesday
|
||||
- Wednesday
|
||||
- Thursday
|
||||
- Friday
|
||||
- Saturday
|
||||
- Sunday
|
||||
yAxis:
|
||||
type: value
|
||||
series:
|
||||
- name: Email Marketing
|
||||
type: line
|
||||
stack: Total
|
||||
data:
|
||||
- 120
|
||||
- 132
|
||||
- 101
|
||||
- 134
|
||||
- 90
|
||||
- 230
|
||||
- 210
|
||||
- name: Affiliate Advertising
|
||||
type: line
|
||||
stack: Total
|
||||
data:
|
||||
- 220
|
||||
- 182
|
||||
- 191
|
||||
- 234
|
||||
- 290
|
||||
- 330
|
||||
- 310
|
||||
- name: Video Advertising
|
||||
type: line
|
||||
stack: Total
|
||||
data:
|
||||
- 150
|
||||
- 232
|
||||
- 201
|
||||
- 154
|
||||
- 190
|
||||
- 330
|
||||
- 410
|
||||
- name: Direct View
|
||||
type: line
|
||||
stack: Total
|
||||
data:
|
||||
- 320
|
||||
- 332
|
||||
- 301
|
||||
- 334
|
||||
- 390
|
||||
- 330
|
||||
- 320
|
||||
- name: Search Engine
|
||||
type: line
|
||||
stack: Total
|
||||
data:
|
||||
- 820
|
||||
- 932
|
||||
- 901
|
||||
- 934
|
||||
- 1290
|
||||
- 1330
|
||||
- 1320
|
||||
```
|
||||
|
||||
## Typeit
|
||||
|
||||
{{< typeit code=javascript >}}
|
||||
console.log('before decrypting');
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
fixit.decryptor.addEventListener('decrypted', function() {
|
||||
console.log('after decrypting')
|
||||
})
|
||||
});
|
||||
{{< /typeit >}}
|
||||
|
||||
## fixit-encryptor
|
||||
|
||||
All the following shortcodes passwords are `1212`.
|
||||
|
||||
{{% fixit-encryptor "1212" %}}
|
||||
{{< typeit >}}如果你愿意一层一层一层地剥开我的心{{< /typeit >}}
|
||||
{{% fixit-encryptor "1212" %}}
|
||||
{{< typeit >}}你会发现 你会讶异{{< /typeit >}}
|
||||
{{% fixit-encryptor "1212" %}}
|
||||
{{< typeit >}}你是我最压抑最深处的秘密{{< /typeit >}}
|
||||
{{% /fixit-encryptor %}}
|
||||
{{% /fixit-encryptor %}}
|
||||
{{% /fixit-encryptor %}}
|
||||
@@ -0,0 +1,59 @@
|
||||
[[filetree]]
|
||||
name = "src-toml"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "index.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "components"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children.children]]
|
||||
name = "Header.tsx"
|
||||
type = "file"
|
||||
|
||||
[[filetree.children.children]]
|
||||
name = "Footer.tsx"
|
||||
type = "file"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "utils"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children.children]]
|
||||
name = "helper.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree.children.children]]
|
||||
name = "validator.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "public"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "favicon.ico"
|
||||
type = "file"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "images"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children.children]]
|
||||
name = "logo.png"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "package.json"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "README.md"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "tsconfig.json"
|
||||
type = "file"
|
||||
@@ -0,0 +1,273 @@
|
||||
---
|
||||
title: File Tree Test
|
||||
date: 2026-01-10T03:00:48+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Shortcodes
|
||||
tags:
|
||||
- file-tree
|
||||
---
|
||||
|
||||
This article tests the **File Tree** shortcode functionality in the FixIt theme.
|
||||
|
||||
<!--more-->
|
||||
<!-- markdownlint-disable-file MD007 MD024 MD032 -->
|
||||
|
||||
## Content Modes
|
||||
|
||||
### Shortcode body
|
||||
|
||||
#### JSON format
|
||||
|
||||
{{< file-tree >}}
|
||||
[
|
||||
{
|
||||
"name": "src",
|
||||
"type": "dir",
|
||||
"children": [
|
||||
{
|
||||
"name": "index.ts",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": "app.ts",
|
||||
"type": "file"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "README.md",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"name": ".gitignore",
|
||||
"type": "file"
|
||||
}
|
||||
]
|
||||
{{< /file-tree >}}
|
||||
|
||||
#### YAML format
|
||||
|
||||
{{< file-tree folderSlash=true >}}
|
||||
- name: project-root
|
||||
type: dir
|
||||
children:
|
||||
- name: src
|
||||
type: dir
|
||||
children:
|
||||
- name: index.ts
|
||||
type: file
|
||||
- name: config.ts
|
||||
type: file
|
||||
- name: tests
|
||||
type: dir
|
||||
children:
|
||||
- name: unit.test.ts
|
||||
type: file
|
||||
- name: package.json
|
||||
type: file
|
||||
- name: tsconfig.json
|
||||
type: file
|
||||
{{< /file-tree >}}
|
||||
|
||||
#### TOML format
|
||||
|
||||
{{< file-tree >}}
|
||||
[[filetree]]
|
||||
name = "src"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "index.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "app.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "README.md"
|
||||
type = "file"
|
||||
{{< /file-tree >}}
|
||||
|
||||
### File data
|
||||
|
||||
#### TOML format
|
||||
|
||||
{{< file-tree file="data/example.toml" />}}
|
||||
|
||||
TOML with folder slash and level 3:
|
||||
|
||||
{{< file-tree file="data/example.toml" level=3 folderSlash=true />}}
|
||||
|
||||
#### JSON format
|
||||
|
||||
{{< file-tree file="filetree/example.json" />}}
|
||||
|
||||
JSON with folder slash and level 2:
|
||||
|
||||
{{< file-tree file="filetree/example.json" level=2 folderSlash=true />}}
|
||||
|
||||
#### YAML format
|
||||
|
||||
Trying the file not found case (should fallback to next mode):
|
||||
|
||||
{{< file-tree file="data/nonexistent.yaml" data="example" />}}
|
||||
|
||||
### Hugo data
|
||||
|
||||
#### Basic usage
|
||||
|
||||
{{< file-tree data="example" />}}
|
||||
|
||||
#### Fully expanded
|
||||
|
||||
{{< file-tree data="example" level=-1 />}}
|
||||
|
||||
#### Limited expansion
|
||||
|
||||
{{< file-tree data="example" level=1 />}}
|
||||
|
||||
#### With folder slash
|
||||
|
||||
{{< file-tree data="example" folderSlash=true />}}
|
||||
|
||||
#### With level and folder slash
|
||||
|
||||
{{< file-tree data="example" level=2 folderSlash=true />}}
|
||||
|
||||
#### Collapsed with ignore
|
||||
|
||||
{{< file-tree data="example" level=0 ignoreList="README.md" />}}
|
||||
|
||||
## Filesystem Mode
|
||||
|
||||
### Basic paths
|
||||
|
||||
{{< file-tree />}}
|
||||
|
||||
{{< file-tree "." />}}
|
||||
|
||||
{{< file-tree "content" />}}
|
||||
|
||||
{{< file-tree name="{path}" />}}
|
||||
|
||||
{{< file-tree name="FixIt/apps/test" />}}
|
||||
|
||||
{{< file-tree path="posts" name="{path}" />}}
|
||||
|
||||
### Named parameters
|
||||
|
||||
{{< file-tree path="data" level=2 />}}
|
||||
|
||||
### Expansion levels
|
||||
|
||||
{{< file-tree "assets" 0 />}}
|
||||
|
||||
{{< file-tree path="assets" level=2 folderSlash=true />}}
|
||||
|
||||
{{< file-tree "assets" -1 />}}
|
||||
|
||||
### With ignore lists
|
||||
|
||||
{{< file-tree ignoreList=".hugo_build.lock, public, resources, node_modules" level=2 folderSlash=true />}}
|
||||
|
||||
### root not exist
|
||||
|
||||
path="nonexistent/path"
|
||||
|
||||
{{< file-tree "nonexistent/path" />}}
|
||||
|
||||
## Code Block Rendering
|
||||
|
||||
### Basic code block
|
||||
|
||||
YAML format:
|
||||
|
||||
```file-tree
|
||||
- name: my-project
|
||||
type: dir
|
||||
children:
|
||||
- name: src
|
||||
type: dir
|
||||
children:
|
||||
- name: main.js
|
||||
type: file
|
||||
- name: utils.js
|
||||
type: file
|
||||
- name: package.json
|
||||
type: file
|
||||
- name: README.md
|
||||
type: file
|
||||
```
|
||||
|
||||
### TOML format
|
||||
|
||||
```file-tree
|
||||
[[filetree]]
|
||||
name = "src"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "index.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "README.md"
|
||||
type = "file"
|
||||
```
|
||||
|
||||
### With parameters
|
||||
|
||||
```file-tree {level=2 folderSlash=true ignoreList="config.local.js"}
|
||||
- name: project
|
||||
type: dir
|
||||
children:
|
||||
- name: config
|
||||
type: dir
|
||||
children:
|
||||
- name: config.js
|
||||
type: file
|
||||
- name: config.local.js
|
||||
type: file
|
||||
- name: src
|
||||
type: dir
|
||||
children:
|
||||
- name: index.js
|
||||
type: file
|
||||
- name: .gitignore
|
||||
type: file
|
||||
```
|
||||
|
||||
### Fully expanded
|
||||
|
||||
```file-tree {level=-1 folderSlash=true}
|
||||
- name: backend
|
||||
type: dir
|
||||
children:
|
||||
- name: api
|
||||
type: dir
|
||||
children:
|
||||
- name: routes
|
||||
type: dir
|
||||
children:
|
||||
- name: users.js
|
||||
type: file
|
||||
- name: posts.js
|
||||
type: file
|
||||
- name: controllers
|
||||
type: dir
|
||||
children:
|
||||
- name: userController.js
|
||||
type: file
|
||||
- name: database
|
||||
type: dir
|
||||
children:
|
||||
- name: models
|
||||
type: dir
|
||||
- name: migrations
|
||||
type: dir
|
||||
- name: app.js
|
||||
type: file
|
||||
```
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: Font Awesome Test
|
||||
date: 2025-11-28T08:30:39+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
tags:
|
||||
- Font Awesome
|
||||
---
|
||||
|
||||
Test for rendering Font Awesome icons.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Size
|
||||
|
||||
:(fa-solid fa-camera fa-xs):
|
||||
:(fa-solid fa-camera fa-sm):
|
||||
:(fa-solid fa-camera fa-lg):
|
||||
:(fa-solid fa-camera fa-1x):
|
||||
:(fa-solid fa-camera fa-2x):
|
||||
:(fa-solid fa-camera fa-3x):
|
||||
:(fa-solid fa-camera fa-5x):
|
||||
:(fa-solid fa-camera fa-7x):
|
||||
:(fa-solid fa-camera fa-10x):
|
||||
|
||||
## Fixed width
|
||||
|
||||
:(fa-solid fa-skating fa-2x): Skating\
|
||||
:(fa-solid fa-skiing fa-2x): Skiing\
|
||||
:(fa-solid fa-skiing-nordic fa-2x): Nordic Skiing
|
||||
|
||||
## List icon
|
||||
|
||||
:(fa-regular fa-check-square): Eat a hamburger\
|
||||
:(fa-regular fa-square): Get a girlfriend
|
||||
|
||||
:(fa-regular fa-check-circle): Go to beach\
|
||||
:(fa-regular fa-circle): Go to Tibet
|
||||
|
||||
## Rotate
|
||||
|
||||
:(fa-solid fa-snowboarding):
|
||||
:(fa-solid fa-snowboarding fa-rotate-90):
|
||||
:(fa-solid fa-snowboarding fa-rotate-180):
|
||||
:(fa-solid fa-snowboarding fa-rotate-270):
|
||||
|
||||
## Flip
|
||||
|
||||
:(fa-solid fa-snowboarding):
|
||||
:(fa-solid fa-snowboarding fa-flip-horizontal):
|
||||
:(fa-solid fa-snowboarding fa-flip-vertical):
|
||||
:(fa-solid fa-snowboarding fa-flip-both):
|
||||
|
||||
## Animation
|
||||
|
||||
:(fa-solid fa-spinner):
|
||||
:(fa-solid fa-spinner fa-spin):
|
||||
:(fa-solid fa-spinner fa-pulse):
|
||||
:(fa-solid fa-circle-notch fa-spin):
|
||||
:(fa-solid fa-circle-notch fa-pulse):
|
||||
:(fa-solid fa-sync fa-spin):
|
||||
:(fa-solid fa-sync fa-pulse):
|
||||
:(fa-solid fa-cog fa-spin):
|
||||
:(fa-solid fa-cog fa-pulse):
|
||||
|
||||
## Float
|
||||
|
||||
:(fa-solid fa-quote-left fa-pull-left):
|
||||
|
||||
hey guys!
|
||||
{.text-center}
|
||||
|
||||
:(fa-solid fa-quote-right fa-pull-right):
|
||||
|
||||
## Border
|
||||
|
||||
:(fa-brands fa-apple fa-border fa-10x):
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: JSON Viewer Test
|
||||
date: 2025-10-14T12:29:06+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
tags:
|
||||
- json
|
||||
---
|
||||
|
||||
Testing JSON viewer in FixIt theme.
|
||||
|
||||
```json {boxed=false}
|
||||
{
|
||||
"foo": "bar"
|
||||
}
|
||||
```
|
||||
|
||||
<!--more-->
|
||||
|
||||
## JSON Viewer
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "John Doe",
|
||||
"age": 30,
|
||||
"isEmployed": true,
|
||||
"address": {
|
||||
"street": "123 Main St",
|
||||
"city": "Anytown",
|
||||
"state": "CA",
|
||||
"postalCode": "12345"
|
||||
},
|
||||
"phoneNumbers": [
|
||||
{
|
||||
"type": "home",
|
||||
"number": "555-1234"
|
||||
},
|
||||
{
|
||||
"type": "work",
|
||||
"number": "555-5678"
|
||||
}
|
||||
],
|
||||
"children": [],
|
||||
"spouse": null
|
||||
}
|
||||
```
|
||||
|
||||
disabled copy:
|
||||
|
||||
```json {copyable=false}
|
||||
{
|
||||
"foo": "bar"
|
||||
}
|
||||
```
|
||||
|
||||
## JSON Code
|
||||
|
||||
```json {enable=false}
|
||||
{
|
||||
"name": "John Doe",
|
||||
"age": 30,
|
||||
"isEmployed": true,
|
||||
"address": {
|
||||
"street": "123 Main St",
|
||||
"city": "Anytown",
|
||||
"state": "CA",
|
||||
"postalCode": "12345"
|
||||
},
|
||||
"phoneNumbers": [
|
||||
{
|
||||
"type": "home",
|
||||
"number": "555-1234"
|
||||
},
|
||||
{
|
||||
"type": "work",
|
||||
"number": "555-5678"
|
||||
}
|
||||
],
|
||||
"children": [],
|
||||
"spouse": null
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: KaTeX Test
|
||||
date: 2025-09-15T21:05:17+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
tags:
|
||||
- Math
|
||||
---
|
||||
|
||||
Testing $\KaTeX$ rendering in FixIt theme.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Inline Formulas
|
||||
|
||||
$c = \pm\sqrt{a^2 + b^2}$ and \(f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi\)
|
||||
|
||||
## Formula Blocks
|
||||
|
||||
$$ c = \pm\sqrt{a^2 + b^2} $$
|
||||
|
||||
\[f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi\]
|
||||
|
||||
$$
|
||||
\begin{equation*}
|
||||
\rho \frac{\mathrm{D} \mathbf{v}}{\mathrm{D} t}=\nabla \cdot \mathbb{P}+\rho \mathbf{f}
|
||||
\end{equation*}
|
||||
$$
|
||||
|
||||
$$
|
||||
\begin{equation}
|
||||
\mathbf{E}=\sum_{i} \mathbf{E}\_{i}=\mathbf{E}\_{1}+\mathbf{E}\_{2}+\mathbf{E}_{3}+\cdots
|
||||
\end{equation}
|
||||
$$
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
a&=b+c \\
|
||||
d+e&=f
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
$$
|
||||
\begin{alignat}{2}
|
||||
10&x+&3&y = 2 \\
|
||||
3&x+&13&y = 4
|
||||
\end{alignat}
|
||||
$$
|
||||
|
||||
$$
|
||||
\begin{gather}
|
||||
a=b \\
|
||||
e=b+c
|
||||
\end{gather}
|
||||
$$
|
||||
|
||||
$$
|
||||
\begin{CD}
|
||||
A @>a>> B \\
|
||||
@VbVV @AAcA \\
|
||||
C @= D
|
||||
\end{CD}
|
||||
$$
|
||||
|
||||
## Chemical Equations
|
||||
|
||||
$$ \ce{CO2 + C -> 2 CO} $$
|
||||
|
||||
$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$
|
||||
|
||||
$$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
|
||||
@@ -0,0 +1,119 @@
|
||||
---
|
||||
title: MathJax Test
|
||||
date: 2025-09-15T21:05:17+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
tags:
|
||||
- Math
|
||||
math:
|
||||
type: mathjax
|
||||
mathjax:
|
||||
macros:
|
||||
bold: ["{\\bf #1}", 1] # usage: $\bold{math}$
|
||||
loader:
|
||||
load: ["ui/safe", "[tex]/physics", "[custom]/xypic.js"]
|
||||
paths:
|
||||
custom: "https://cdn.jsdelivr.net/gh/sonoisa/XyJax-v3@3.0.1/build/"
|
||||
packages:
|
||||
"[+]": ["physics", "xypic"]
|
||||
tex:
|
||||
physics:
|
||||
italicdiff: false
|
||||
arrowdel: false
|
||||
---
|
||||
|
||||
Testing $\text{MathJax}$ rendering in FixIt theme.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Inline Formulas
|
||||
|
||||
$c = \pm\sqrt{a^2 + b^2}$ and \(f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi\)
|
||||
|
||||
## Formula Blocks
|
||||
|
||||
$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$
|
||||
|
||||
\[ f(a) = \frac{1}{2\pi i} \oint\frac{f(z)}{z-a}dz \]
|
||||
|
||||
$$
|
||||
\cos(\theta+\phi)=\cos(\theta)\cos(\phi)−\sin(\theta)\sin(\phi)
|
||||
$$
|
||||
|
||||
\[
|
||||
\int_D ({\nabla\cdot} F)dV=\int_{\partial D} F\cdot ndS
|
||||
\]
|
||||
|
||||
$$
|
||||
\vec{\nabla} \times \vec{F} =
|
||||
\left( \frac{\partial F_z}{\partial y} - \frac{\partial F_y}{\partial z} \right) \mathbf{i}
|
||||
+ \left( \frac{\partial F_x}{\partial z} - \frac{\partial F_z}{\partial x} \right) \mathbf{j}
|
||||
+ \left( \frac{\partial F_y}{\partial x} - \frac{\partial F_x}{\partial y} \right) \mathbf{k}
|
||||
$$
|
||||
|
||||
$$
|
||||
\sigma = \sqrt{ \frac{1}{N} \sum_{i=1}^N (x_i -\mu)^2}
|
||||
$$
|
||||
|
||||
$$
|
||||
(\nabla_X Y)^k = X^i (\nabla_i Y)^k =
|
||||
X^i \left( \frac{\partial Y^k}{\partial x^i} + \Gamma_{im}^k Y^m \right)
|
||||
$$
|
||||
|
||||
## Chemical Equations
|
||||
|
||||
$$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
|
||||
|
||||
$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$
|
||||
|
||||
$$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
|
||||
|
||||
## Custom Macros
|
||||
|
||||
$\bold{Custom}$ macro $\KaTeX$ in $\text{MathJax}$
|
||||
|
||||
$$
|
||||
\def\RR{{\bf R}}
|
||||
\def\bolda#1{{\bf #1}}
|
||||
\RR = \bolda{R}
|
||||
$$
|
||||
|
||||
$$
|
||||
\newcommand{\water}{{\rm H_{2}O}}
|
||||
\water = \text{H}_2\text{O}
|
||||
$$
|
||||
|
||||
$$
|
||||
\newcommand{\hello}[1][World]{Hello, #1!}
|
||||
\hello \quad \hello[FixIt]
|
||||
$$
|
||||
|
||||
$$
|
||||
\let\oldphi=\phi
|
||||
\let\oldtheta=\theta
|
||||
\renewcommand{\phi}{\varphi}
|
||||
\renewcommand{\theta}{\vartheta}
|
||||
\phi, \oldphi, \theta, \oldtheta
|
||||
$$
|
||||
|
||||
## Custom Extensions
|
||||
|
||||
A `physics` package example:
|
||||
|
||||
$$
|
||||
\mqty(a & b \\ c & d) = \begin{pmatrix} a & b \\ c & d \end{pmatrix}
|
||||
$$
|
||||
|
||||
An `xypic` package example:
|
||||
|
||||
$$
|
||||
\begin{xy}
|
||||
\xymatrix {
|
||||
U \ar@/_/[ddr]_y \ar@{.>}[dr]|{\langle x,y \rangle} \ar@/^/[drr]^x \\
|
||||
& X \times_Z Y \ar[d]^q \ar[r]_p & X \ar[d]_f \\
|
||||
& Y \ar[r]^g & Z
|
||||
}
|
||||
\end{xy}
|
||||
$$
|
||||
@@ -0,0 +1,550 @@
|
||||
---
|
||||
title: Mermaid Diagrams Test
|
||||
date: 2025-08-20T10:00:00+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
- Shortcodes
|
||||
tags:
|
||||
- Mermaid
|
||||
- Diagrams
|
||||
---
|
||||
|
||||
The FixIt theme supports two ways to use Mermaid: code block syntax and shortcode syntax.
|
||||
|
||||
## Flowchart
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Start] --> B{Is it?}
|
||||
B -->|Yes| C[OK]
|
||||
C --> D[Rethink]
|
||||
D --> B
|
||||
B ---->|No| E[End]
|
||||
```
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Sequence Diagram
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Alice
|
||||
participant Bob
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts <br/>prevail!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
```
|
||||
|
||||
## Gantt Chart
|
||||
|
||||
{{< mermaid >}}
|
||||
gantt
|
||||
title A Gantt Diagram
|
||||
dateFormat YYYY-MM-DD
|
||||
section Section
|
||||
A task :a1, 2014-01-01, 30d
|
||||
Another task :after a1 , 20d
|
||||
section Another
|
||||
Task in sec :2014-01-12 , 12d
|
||||
another task : 24d
|
||||
{{< /mermaid >}}
|
||||
|
||||
## Class Diagram
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
Animal <|-- Duck
|
||||
Animal <|-- Fish
|
||||
Animal <|-- Zebra
|
||||
Animal : +int age
|
||||
Animal : +String gender
|
||||
Animal: +isMammal()
|
||||
Animal: +mate()
|
||||
class Duck{
|
||||
+String beakColor
|
||||
+swim()
|
||||
+quack()
|
||||
}
|
||||
class Fish{
|
||||
-int sizeInFeet
|
||||
-canEat()
|
||||
}
|
||||
class Zebra{
|
||||
+bool is_wild
|
||||
+run()
|
||||
}
|
||||
```
|
||||
|
||||
## State Diagram
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[_] --> Still
|
||||
Still --> [_]
|
||||
|
||||
Still --> Moving
|
||||
Moving --> Still
|
||||
Moving --> Crash
|
||||
Crash --> [*]
|
||||
```
|
||||
|
||||
## Entity Relationship Diagram
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
CUSTOMER ||--o{ ORDER : places
|
||||
ORDER ||--|{ LINE-ITEM : contains
|
||||
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
|
||||
|
||||
CUSTOMER {
|
||||
string name
|
||||
string custNumber
|
||||
string sector
|
||||
}
|
||||
ORDER {
|
||||
int orderNumber
|
||||
string deliveryAddress
|
||||
}
|
||||
LINE-ITEM {
|
||||
string productCode
|
||||
int quantity
|
||||
float pricePerUnit
|
||||
}
|
||||
```
|
||||
|
||||
## User Journey
|
||||
|
||||
{{< mermaid >}}
|
||||
journey
|
||||
title My working day
|
||||
section Go to work
|
||||
Make tea: 5: Me
|
||||
Go upstairs: 3: Me
|
||||
Do work: 1: Me, Cat
|
||||
section Go home
|
||||
Go downstairs: 5: Me
|
||||
Sit down: 5: Me
|
||||
{{< /mermaid >}}
|
||||
|
||||
## Git Graph
|
||||
|
||||
```mermaid
|
||||
gitGraph
|
||||
commit
|
||||
branch hotfix
|
||||
checkout hotfix
|
||||
commit
|
||||
branch develop
|
||||
checkout develop
|
||||
commit id:"ash" tag:"abc"
|
||||
branch featureB
|
||||
checkout featureB
|
||||
commit type:HIGHLIGHT
|
||||
checkout main
|
||||
checkout hotfix
|
||||
commit type:NORMAL
|
||||
checkout develop
|
||||
commit type:REVERSE
|
||||
checkout featureB
|
||||
commit
|
||||
checkout main
|
||||
merge hotfix
|
||||
checkout featureB
|
||||
commit
|
||||
checkout develop
|
||||
branch featureA
|
||||
commit
|
||||
checkout develop
|
||||
merge hotfix
|
||||
checkout featureA
|
||||
commit
|
||||
checkout featureB
|
||||
commit
|
||||
checkout develop
|
||||
merge featureA
|
||||
branch release
|
||||
checkout release
|
||||
commit
|
||||
checkout main
|
||||
commit
|
||||
checkout release
|
||||
merge main
|
||||
checkout develop
|
||||
merge release
|
||||
```
|
||||
|
||||
## Pie Chart
|
||||
|
||||
{{< mermaid >}}
|
||||
pie title What Voldemort doesn't have?
|
||||
"FRIENDS" : 2
|
||||
"FAMILY" : 3
|
||||
"NOSE" : 45
|
||||
{{< /mermaid >}}
|
||||
|
||||
## Quadrant Chart
|
||||
|
||||
```mermaid
|
||||
quadrantChart
|
||||
title Reach and influence
|
||||
x-axis Low Reach --> High Reach
|
||||
y-axis Low Influence --> High Influence
|
||||
quadrant-1 We should expand
|
||||
quadrant-2 Need to promote
|
||||
quadrant-3 Re-evaluate
|
||||
quadrant-4 May be improved
|
||||
Campaign A: [0.3, 0.6]
|
||||
Campaign B: [0.45, 0.23]
|
||||
Campaign C: [0.57, 0.69]
|
||||
Campaign D: [0.78, 0.34]
|
||||
Campaign E: [0.40, 0.34]
|
||||
```
|
||||
|
||||
## Timeline
|
||||
|
||||
```mermaid
|
||||
timeline
|
||||
title History of Social Media Platform
|
||||
|
||||
2002 : LinkedIn
|
||||
2003 : MySpace
|
||||
: Skype
|
||||
2004 : Facebook
|
||||
: Gmail
|
||||
2005 : Youtube
|
||||
2006 : Twitter
|
||||
2007 : FourSquare
|
||||
2008 : Github
|
||||
2010 : Instagram
|
||||
2011 : Snapchat
|
||||
2012 : Discord
|
||||
```
|
||||
|
||||
## Mindmap
|
||||
|
||||
```mermaid
|
||||
mindmap
|
||||
root((mindmap))
|
||||
Origins
|
||||
Long history
|
||||
::icon(fa fa-book)
|
||||
Popularisation
|
||||
British popular psychology author Tony Buzan
|
||||
Research
|
||||
On effectiveness<br/>and features
|
||||
On Automatic creation
|
||||
Uses
|
||||
Creative techniques
|
||||
Strategic planning
|
||||
Argument mapping
|
||||
Tools
|
||||
Pen and paper
|
||||
Mermaid
|
||||
```
|
||||
|
||||
## XY Chart
|
||||
|
||||
{{< mermaid >}}
|
||||
xychart-beta
|
||||
title "Sales Revenue"
|
||||
x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
|
||||
y-axis "Revenue (in $)" 4000 --> 11000
|
||||
bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
|
||||
line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
|
||||
{{< /mermaid >}}
|
||||
|
||||
## Requirement Diagram
|
||||
|
||||
```mermaid
|
||||
requirementDiagram
|
||||
|
||||
requirement test_req {
|
||||
id: 1
|
||||
text: the test text.
|
||||
risk: high
|
||||
verifymethod: test
|
||||
}
|
||||
|
||||
element test_entity {
|
||||
type: simulation
|
||||
}
|
||||
|
||||
test_entity - satisfies -> test_req
|
||||
```
|
||||
|
||||
## C4 Architecture
|
||||
|
||||
```mermaid
|
||||
C4Context
|
||||
title System Context diagram for Internet Banking System
|
||||
Enterprise_Boundary(b0, "BankBoundary0") {
|
||||
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
|
||||
Person(customerB, "Banking Customer B")
|
||||
Person_Ext(customerC, "Banking Customer C", "desc")
|
||||
|
||||
Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")
|
||||
|
||||
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")
|
||||
|
||||
Enterprise_Boundary(b1, "BankBoundary") {
|
||||
|
||||
SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
|
||||
|
||||
System_Boundary(b2, "BankBoundary2") {
|
||||
System(SystemA, "Banking System A")
|
||||
System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.")
|
||||
}
|
||||
|
||||
System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
|
||||
SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")
|
||||
|
||||
Boundary(b3, "BankBoundary3", "boundary") {
|
||||
SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.")
|
||||
SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BiRel(customerA, SystemAA, "Uses")
|
||||
BiRel(SystemAA, SystemE, "Uses")
|
||||
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
|
||||
Rel(SystemC, customerA, "Sends e-mails to")
|
||||
|
||||
UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red")
|
||||
UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5")
|
||||
UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10")
|
||||
UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50")
|
||||
UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20")
|
||||
|
||||
UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
|
||||
```
|
||||
|
||||
## ZenUML
|
||||
|
||||
{{< mermaid >}}
|
||||
zenuml
|
||||
title Demo
|
||||
Alice->John: Hello John, how are you?
|
||||
John->Alice: Great!
|
||||
Alice->John: See you later!
|
||||
{{< /mermaid >}}
|
||||
|
||||
## Sankey Diagram
|
||||
|
||||
```mermaid
|
||||
---
|
||||
config:
|
||||
sankey:
|
||||
showValues: false
|
||||
---
|
||||
sankey-beta
|
||||
|
||||
Agricultural 'waste',Bio-conversion,124.729
|
||||
Bio-conversion,Liquid,0.597
|
||||
Bio-conversion,Losses,26.862
|
||||
Bio-conversion,Solid,280.322
|
||||
Bio-conversion,Gas,81.144
|
||||
Biofuel imports,Liquid,35
|
||||
Biomass imports,Solid,35
|
||||
Coal imports,Coal,11.606
|
||||
Coal reserves,Coal,63.965
|
||||
Coal,Solid,75.571
|
||||
District heating,Industry,10.639
|
||||
District heating,Heating and cooling - commercial,22.505
|
||||
District heating,Heating and cooling - homes,46.184
|
||||
Electricity grid,Over generation / exports,104.453
|
||||
Electricity grid,Heating and cooling - homes,113.726
|
||||
Electricity grid,H2 conversion,27.14
|
||||
Electricity grid,Industry,342.165
|
||||
Electricity grid,Road transport,37.797
|
||||
Electricity grid,Agriculture,4.412
|
||||
Electricity grid,Heating and cooling - commercial,40.858
|
||||
Electricity grid,Losses,56.691
|
||||
Electricity grid,Rail transport,7.863
|
||||
Electricity grid,Lighting & appliances - commercial,90.008
|
||||
Electricity grid,Lighting & appliances - homes,93.494
|
||||
Gas imports,Ngas,40.719
|
||||
Gas reserves,Ngas,82.233
|
||||
Gas,Heating and cooling - commercial,0.129
|
||||
Gas,Losses,1.401
|
||||
Gas,Thermal generation,151.891
|
||||
Gas,Agriculture,2.096
|
||||
Gas,Industry,48.58
|
||||
Geothermal,Electricity grid,7.013
|
||||
H2 conversion,H2,20.897
|
||||
H2 conversion,Losses,6.242
|
||||
H2,Road transport,20.897
|
||||
Hydro,Electricity grid,6.995
|
||||
Liquid,Industry,121.066
|
||||
Liquid,International shipping,128.69
|
||||
Liquid,Road transport,135.835
|
||||
Liquid,Domestic aviation,14.458
|
||||
Liquid,International aviation,206.267
|
||||
Liquid,Agriculture,3.64
|
||||
Liquid,National navigation,33.218
|
||||
Liquid,Rail transport,4.413
|
||||
Marine algae,Bio-conversion,4.375
|
||||
Ngas,Gas,122.952
|
||||
Nuclear,Thermal generation,839.978
|
||||
Oil imports,Oil,504.287
|
||||
Oil reserves,Oil,107.703
|
||||
Oil,Liquid,611.99
|
||||
Other waste,Solid,56.587
|
||||
Other waste,Bio-conversion,77.81
|
||||
Pumped heat,Heating and cooling - homes,193.026
|
||||
Pumped heat,Heating and cooling - commercial,70.672
|
||||
Solar PV,Electricity grid,59.901
|
||||
Solar Thermal,Heating and cooling - homes,19.263
|
||||
Solar,Solar Thermal,19.263
|
||||
Solar,Solar PV,59.901
|
||||
Solid,Agriculture,0.882
|
||||
Solid,Thermal generation,400.12
|
||||
Solid,Industry,46.477
|
||||
Thermal generation,Electricity grid,525.531
|
||||
Thermal generation,Losses,787.129
|
||||
Thermal generation,District heating,79.329
|
||||
Tidal,Electricity grid,9.452
|
||||
UK land based bioenergy,Bio-conversion,182.01
|
||||
Wave,Electricity grid,19.013
|
||||
Wind,Electricity grid,289.366
|
||||
```
|
||||
|
||||
## Block Diagram
|
||||
|
||||
{{< mermaid >}}
|
||||
block-beta
|
||||
columns 1
|
||||
db(("DB"))
|
||||
blockArrowId6<[" "]>(down)
|
||||
block:ID
|
||||
A
|
||||
B["A wide one in the middle"]
|
||||
C
|
||||
end
|
||||
space
|
||||
D
|
||||
ID --> D
|
||||
C --> D
|
||||
style B fill:#969,stroke:#333,stroke-width:4px
|
||||
{{< /mermaid >}}
|
||||
|
||||
## Packet Diagram
|
||||
|
||||
```mermaid
|
||||
packet-beta
|
||||
title Sample packet
|
||||
0-15: "Source Port"
|
||||
16-31: "Destination Port"
|
||||
32-63: "Sequence Number"
|
||||
64-95: "Acknowledgment Number"
|
||||
96-99: "Data Offset"
|
||||
100-105: "Reserved"
|
||||
106: "URG"
|
||||
107: "ACK"
|
||||
108: "PSH"
|
||||
109: "RST"
|
||||
110: "SYN"
|
||||
111: "FIN"
|
||||
112-127: "Window"
|
||||
128-143: "Checksum"
|
||||
144-159: "Urgent Pointer"
|
||||
160-191: "Options and Padding"
|
||||
192-223: "Data (variable length)"
|
||||
```
|
||||
|
||||
## Kanban
|
||||
|
||||
```mermaid
|
||||
kanban
|
||||
Todo
|
||||
[Create a git repository]
|
||||
[Write some code]
|
||||
[Commit the code]
|
||||
|
||||
In Progress
|
||||
[Push to main]
|
||||
|
||||
Done
|
||||
[Merge PR]
|
||||
```
|
||||
|
||||
## Architecture Diagram
|
||||
|
||||
```mermaid
|
||||
architecture-beta
|
||||
group api(cloud)[API]
|
||||
|
||||
service db(database)[Database] in api
|
||||
service disk1(disk)[Storage] in api
|
||||
service disk2(disk)[Storage] in api
|
||||
service server(server)[Server] in api
|
||||
|
||||
db:L -- R:server
|
||||
disk1:T -- B:server
|
||||
disk2:T -- B:db
|
||||
```
|
||||
|
||||
## Radar Chart
|
||||
|
||||
```mermaid
|
||||
---
|
||||
title: "Grades"
|
||||
---
|
||||
radar-beta
|
||||
axis m["Math"], s["Science"], e["English"]
|
||||
axis h["History"], g["Geography"], a["Art"]
|
||||
curve a["Alice"]{85, 90, 80, 70, 75, 90}
|
||||
curve b["Bob"]{70, 75, 85, 80, 90, 85}
|
||||
|
||||
max 100
|
||||
min 0
|
||||
```
|
||||
|
||||
## Treemap
|
||||
|
||||
```mermaid
|
||||
---
|
||||
config:
|
||||
treemap:
|
||||
valueFormat: '$0,0'
|
||||
---
|
||||
treemap-beta
|
||||
"Budget"
|
||||
"Operations"
|
||||
"Salaries": 700000
|
||||
"Equipment": 200000
|
||||
"Supplies": 100000
|
||||
"Marketing"
|
||||
"Advertising": 400000
|
||||
"Events": 100000
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
The above test cases cover the main Mermaid diagram types, including:
|
||||
|
||||
**Core Diagrams:**
|
||||
|
||||
- Flowcharts, Sequence Diagrams, Gantt Charts
|
||||
- Class Diagrams, State Diagrams, Entity Relationship Diagrams
|
||||
- User Journey, Git Graph, Pie Charts
|
||||
|
||||
**Advanced Diagrams:**
|
||||
|
||||
- Quadrant Charts, Timeline, Mindmaps
|
||||
- XY Charts, Requirement Diagrams, C4 Architecture
|
||||
- ZenUML, Sankey, Block Diagrams
|
||||
|
||||
**Experimental Diagrams (🔥):**
|
||||
|
||||
- Packet, Kanban, Architecture
|
||||
- Radar Charts, Treemap
|
||||
|
||||
Each diagram type provides examples using both code block and shortcode syntax.
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Custom Script & Style Test
|
||||
date: 2025-09-16T09:57:28+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Shortcodes
|
||||
tags:
|
||||
- Script
|
||||
- Style
|
||||
---
|
||||
|
||||
Testing custom script and style by shortcode in FixIt theme.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Script
|
||||
|
||||
{{< script >}}
|
||||
console.log('Hello FixIt!');
|
||||
{{< /script >}}
|
||||
|
||||
See the output in the console of the developer tool.
|
||||
|
||||
## Style
|
||||
|
||||
{{< style "text-align:right; strong{color:#00b1ff;}" >}}
|
||||
This is a **right-aligned** paragraph.
|
||||
{{< /style >}}
|
||||
@@ -0,0 +1,218 @@
|
||||
---
|
||||
title: Tabs Comprehensive Test Cases
|
||||
date: 2025-09-09T10:00:00+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Shortcodes
|
||||
tags:
|
||||
- Tabs
|
||||
- UI Components
|
||||
---
|
||||
|
||||
Testing various configurations and nested scenarios for the Tabs shortcode.
|
||||
|
||||
{{< tabs >}}
|
||||
{{% tab title="Test Cases" %}}See Types section for various test cases.{{% /tab %}}
|
||||
{{% tab title="Nested Tabs" %}}See Nested Tabs section for examples.{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Types
|
||||
|
||||
### Underline (Default)
|
||||
|
||||
<!-- placement: top, bottom, left, right -->
|
||||
|
||||
{{< tabs placement="top" >}}
|
||||
{{% tab title="Tab 1" %}}Content for underline style tab 1{{% /tab %}}
|
||||
{{% tab title="Tab 2" %}}Content for underline style tab 2{{% /tab %}}
|
||||
{{% tab title="Tab 3" %}}Content for underline style tab 3{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
### Pill
|
||||
|
||||
<!-- placement: top, bottom, left, right -->
|
||||
|
||||
{{< tabs type="pill" placement="top" >}}
|
||||
{{% tab title="Tab 1" %}}Content for pill style tab 1{{% /tab %}}
|
||||
{{% tab title="Tab 2" %}}Content for pill style tab 2{{% /tab %}}
|
||||
{{% tab title="Tab 3" %}}Content for pill style tab 3{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
### Card
|
||||
|
||||
<!-- placement: top, bottom, left, right -->
|
||||
|
||||
{{< tabs type="card" placement="top" >}}
|
||||
{{% tab title="Tab 1" %}}Content for card style tab 1{{% /tab %}}
|
||||
{{% tab title="Tab 2" %}}Content for card style tab 2{{% /tab %}}
|
||||
{{% tab title="Tab 3" %}}Content for card style tab 3{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
### Segment
|
||||
|
||||
{{< tabs type="segment" >}}
|
||||
{{% tab title="Tab 1" %}}Content for segment style tab 1{{% /tab %}}
|
||||
{{% tab title="Tab 2" %}}Content for segment style tab 2{{% /tab %}}
|
||||
{{% tab title="Tab 3" %}}Content for segment style tab 3{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
## Nested Tabs
|
||||
|
||||
{{< tabs defaultTab=0 >}}
|
||||
|
||||
{{% tab title="Outer Tab 1" %}}
|
||||
This is the first outer tab with simple content.
|
||||
|
||||
**Features:**
|
||||
|
||||
- Basic text content
|
||||
- No nested components
|
||||
- Simple layout
|
||||
{{% /tab %}}
|
||||
|
||||
{{% tab title="Outer Tab 2" %}}
|
||||
This outer tab contains nested tabs inside:
|
||||
|
||||
{{< tabs type="pill" defaultTab=1 >}}
|
||||
|
||||
{{% tab title="Inner A" %}}
|
||||
Nested tab A content with **bold text** and _italic text_.
|
||||
|
||||
```javascript
|
||||
console.log('Hello from nested tab A!')
|
||||
```
|
||||
|
||||
{{% /tab %}}
|
||||
|
||||
{{% tab title="Inner B" %}}
|
||||
Nested tab B content with a list:
|
||||
|
||||
1. First item
|
||||
2. Second item
|
||||
3. Third item
|
||||
|
||||
> This is a blockquote inside a nested tab.
|
||||
{{% /tab %}}
|
||||
|
||||
{{% tab title="Inner C" %}}
|
||||
Nested tab C with a table:
|
||||
|
||||
| Feature | Status | Notes |
|
||||
| :--------- | :----- | :--------------------- |
|
||||
| Responsive | ✅ | Works on all devices |
|
||||
| Accessible | ✅ | Screen reader friendly |
|
||||
| Fast | ✅ | Optimized performance |
|
||||
|
||||
{{% /tab %}}
|
||||
|
||||
{{< /tabs >}}
|
||||
|
||||
{{% /tab %}}
|
||||
|
||||
{{% tab title="Outer Tab 3" %}}
|
||||
This tab contains vertical nested tabs:
|
||||
|
||||
{{< tabs type="card" vertical=true >}}
|
||||
|
||||
{{% tab title="Vertical A" %}}
|
||||
Content for vertical nested tab A.
|
||||
|
||||
- Feature 1
|
||||
- Feature 2
|
||||
- Feature 3
|
||||
{{% /tab %}}
|
||||
|
||||
{{% tab title="Vertical B" %}}
|
||||
Content for vertical nested tab B.
|
||||
|
||||
```css
|
||||
.example {
|
||||
color: #333;
|
||||
background: #f5f5f5;
|
||||
padding: 1rem;
|
||||
}
|
||||
```
|
||||
|
||||
{{% /tab %}}
|
||||
|
||||
{{< /tabs >}}
|
||||
|
||||
{{% /tab %}}
|
||||
|
||||
{{< /tabs >}}
|
||||
|
||||
## Others
|
||||
|
||||
### Mermaid Diagram inside Tabs
|
||||
|
||||
{{< tabs >}}
|
||||
{{% tab title="Flowchart" %}}
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Start] --> B{Is it?}
|
||||
B -->|Yes| C[OK]
|
||||
C --> D[Rethink]
|
||||
D --> B
|
||||
B ---->|No| E[End]
|
||||
```
|
||||
|
||||
{{% /tab %}}
|
||||
{{% tab title="Gantt Chart" %}}
|
||||
|
||||
```mermaid
|
||||
gantt
|
||||
title A Gantt Diagram
|
||||
dateFormat YYYY-MM-DD
|
||||
section Section
|
||||
A task :a1, 2014-01-01, 30d
|
||||
Another task :after a1 , 20d
|
||||
section Another
|
||||
Task in sec :2014-01-12 , 12d
|
||||
another task : 24d
|
||||
```
|
||||
|
||||
{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
### File Tree inside Tabs
|
||||
|
||||
{{< tabs >}}
|
||||
{{% tab title="File Tree Shortcode" %}}
|
||||
|
||||
{{< file-tree >}}
|
||||
[[filetree]]
|
||||
name = "src"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "index.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "README.md"
|
||||
type = "file"
|
||||
{{< /file-tree >}}
|
||||
|
||||
{{% /tab %}}
|
||||
{{% tab title="File Tree Code Block" %}}
|
||||
|
||||
```file-tree
|
||||
[[filetree]]
|
||||
name = "src"
|
||||
type = "dir"
|
||||
|
||||
[[filetree.children]]
|
||||
name = "index.ts"
|
||||
type = "file"
|
||||
|
||||
[[filetree]]
|
||||
name = "README.md"
|
||||
type = "file"
|
||||
```
|
||||
|
||||
{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: Task List Rendering Test
|
||||
date: 2026-02-28T08:54:02+08:00
|
||||
collections:
|
||||
- Tests
|
||||
categories:
|
||||
- Markdown
|
||||
tags:
|
||||
- Task List
|
||||
---
|
||||
|
||||
This post tests the rendering of task lists in Markdown.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Basic Task Lists
|
||||
|
||||
- [ ] Unchecked Task
|
||||
- [x] Checked Task
|
||||
- Regular list item
|
||||
|
||||
## Nested Task Lists (Bug Fix Verification)
|
||||
|
||||
- [ ] Parent Task 1
|
||||
- [ ] Child Task 1.1
|
||||
- [x] Child Task 1.2
|
||||
- Regular list item
|
||||
- [x] Parent Task 2
|
||||
- [ ] Child Task 2.1
|
||||
- [ ] Grandchild Task 2.1.1
|
||||
- [x] Grandchild Task 2.1.2
|
||||
|
||||
## Extended Task Lists (Custom Icons)
|
||||
|
||||
- [-] Cancelled Task
|
||||
- [/] In Progress Task
|
||||
- [<] Scheduled Task
|
||||
- [>] Rescheduled Task
|
||||
- [!] Important Task
|
||||
- [?] Question Task
|
||||
- Regular list item
|
||||
|
||||
## Mixed Content in List Items
|
||||
|
||||
- [ ] Task with **bold** and _italic_ text
|
||||
- [x] Task with `inline code`
|
||||
- [ ] Task with [some link](https://github.com/hugo-fixit/FixIt)
|
||||
- [ ] Multi-line task
|
||||
that spans across multiple lines
|
||||
and still renders correctly as a single list item.
|
||||
@@ -0,0 +1,38 @@
|
||||
- name: my-project
|
||||
type: dir
|
||||
children:
|
||||
- name: src
|
||||
type: dir
|
||||
children:
|
||||
- name: index.ts
|
||||
type: file
|
||||
- name: components
|
||||
type: dir
|
||||
children:
|
||||
- name: Header.tsx
|
||||
type: file
|
||||
- name: Footer.tsx
|
||||
type: file
|
||||
- name: utils
|
||||
type: dir
|
||||
children:
|
||||
- name: helper.ts
|
||||
type: file
|
||||
- name: validator.ts
|
||||
type: file
|
||||
- name: public
|
||||
type: dir
|
||||
children:
|
||||
- name: favicon.ico
|
||||
type: file
|
||||
- name: images
|
||||
type: dir
|
||||
children:
|
||||
- name: logo.png
|
||||
type: file
|
||||
- name: package.json
|
||||
type: file
|
||||
- name: README.md
|
||||
type: file
|
||||
- name: tsconfig.json
|
||||
type: file
|
||||
@@ -0,0 +1,51 @@
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Hugo Configuration
|
||||
# See: https://gohugo.io/configuration/all/
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
title = "Hugo FixIt TEST"
|
||||
baseURL = "https://demo.fixit.lruihao.cn/test/"
|
||||
ignoreLogs = [ "warning-file-tree" ]
|
||||
|
||||
[permalinks]
|
||||
|
||||
[permalinks.page]
|
||||
posts = "/units/:slugorcontentbasename"
|
||||
|
||||
[permalinks.section]
|
||||
posts = "/units/"
|
||||
|
||||
[markup]
|
||||
_merge = "shallow"
|
||||
|
||||
[outputs]
|
||||
_merge = "shallow"
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Taxonomies Configuration
|
||||
# See: https://gohugo.io/content-management/taxonomies/#configure-taxonomies
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
[taxonomies]
|
||||
_merge = "shallow"
|
||||
|
||||
# -------------------------------------------------------------------------------------
|
||||
# Theme Core Configuration
|
||||
# See: https://fixit.lruihao.cn/documentation/basics/#theme-configuration
|
||||
# -------------------------------------------------------------------------------------
|
||||
|
||||
[params]
|
||||
version = "0.3.X"
|
||||
|
||||
[params.page]
|
||||
collectionList = true
|
||||
collectionNavigation = true
|
||||
|
||||
[params.author]
|
||||
name = "Lruihao"
|
||||
email = ""
|
||||
link = "https://lruihao.cn"
|
||||
avatar = "https://lruihao.cn/images/avatar.jpg"
|
||||
|
||||
[params.mermaid]
|
||||
zenuml = "https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml/dist/mermaid-zenuml.esm.min.mjs"
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "@hugo-fixit/test",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "hugo --themesDir ../../.. --theme $PWD/../.. --gc --minify --logLevel info",
|
||||
"dev": "hugo server --themesDir ../../.. --theme $PWD/../.. -D --disableFastRender --navigateToChanged --ignoreCache -O"
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
title: {{ replace .TranslationBaseName "-" " " | title }}
|
||||
subtitle:
|
||||
date: {{ .Date }}
|
||||
slug: {{ substr .File.UniqueID 0 7 }}
|
||||
description:
|
||||
keywords:
|
||||
draft: true
|
||||
|
||||
+20
-13
@@ -1,9 +1,9 @@
|
||||
---
|
||||
title: {{ replace .TranslationBaseName "-" " " | title }}
|
||||
subtitle:
|
||||
type: friends
|
||||
layout: friends
|
||||
date: {{ .Date }}
|
||||
description: "{{ .Site.Author.name }}'s friends"
|
||||
description: "{{ .Site.Params.author.name }}'s friends"
|
||||
keywords:
|
||||
- 'Hugo FixIt'
|
||||
- 'friends template'
|
||||
@@ -11,7 +11,7 @@ keywords:
|
||||
comment: false
|
||||
---
|
||||
|
||||
<!-- When you set data `friends.yml` in `yourProject/data/` directory, it will be automatically loaded here. -->
|
||||
<!-- The `friends.yml` file placed in the `yourProject/data/` directory will be loaded automatically here. -->
|
||||
|
||||
---
|
||||
|
||||
@@ -19,19 +19,26 @@ comment: false
|
||||
|
||||
## Base info
|
||||
|
||||
```yaml
|
||||
- nickname: Lruihao
|
||||
avatar: https://lruihao.cn/images/avatar.jpg
|
||||
url: https://lruihao.cn
|
||||
description: Lruihao's Note
|
||||
```
|
||||
- avatar: https://lruihao.cn/images/avatar.jpg
|
||||
- url: https://lruihao.cn
|
||||
- description: Lruihao's Note
|
||||
|
||||
## Friendly Reminder
|
||||
|
||||
{{< admonition info "Notice" true >}}
|
||||
Comment like this:
|
||||
|
||||
1. If you want to exchange link, please leave a comment in the above format. (personal non-commercial blogs / websites only)
|
||||
2. :(fa-solid fa-exclamation-triangle): Website failure, stop maintenance and improper content may be unlinked!
|
||||
3. Those websites that do not respect other people's labor achievements, reprint without source, or malicious acts, please do not come to exchange.
|
||||
````markdown {mode=mac}
|
||||
```yaml
|
||||
- nickname: <your nickname>
|
||||
avatar: <your avatar>
|
||||
url: <your site link>
|
||||
description: <description of your site>
|
||||
```
|
||||
````
|
||||
|
||||
{{< /admonition >}}
|
||||
> [!NOTE]
|
||||
>
|
||||
> 1. If you want to exchange link, please leave a comment as the above format. (personal non-commercial blogs / websites only)
|
||||
> 2. :(fa-solid fa-exclamation-triangle): Website failure, stop maintenance and improper content may be unlinked!
|
||||
> 3. Those websites that do not respect other people's labor achievements, reprint without source, or malicious acts, please do not come to exchange.
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
type: offline
|
||||
description: '{{ T "offlineTitle" }} - {{ .Site.Title }}'
|
||||
keywords:
|
||||
- PWA
|
||||
- {{ T "offlineTitle" }}
|
||||
---
|
||||
|
||||
<!-- You need do nothing for this page. -->
|
||||
@@ -2,6 +2,7 @@
|
||||
title: {{ replace .TranslationBaseName "-" " " | title }}
|
||||
subtitle:
|
||||
date: {{ .Date }}
|
||||
slug: {{ substr .File.UniqueID 0 7 }}
|
||||
draft: true
|
||||
author:
|
||||
name:
|
||||
@@ -10,7 +11,6 @@ author:
|
||||
avatar:
|
||||
description:
|
||||
keywords:
|
||||
license:
|
||||
comment: false
|
||||
weight: 0
|
||||
tags:
|
||||
@@ -19,22 +19,23 @@ categories:
|
||||
- draft
|
||||
hiddenFromHomePage: false
|
||||
hiddenFromSearch: false
|
||||
hiddenFromRelated: false
|
||||
hiddenFromFeed: false
|
||||
summary:
|
||||
resources:
|
||||
- name: featured-image
|
||||
src: featured-image.jpg
|
||||
- name: featured-image-preview
|
||||
src: featured-image-preview.jpg
|
||||
toc: true
|
||||
math: false
|
||||
lightgallery: false
|
||||
password:
|
||||
message:
|
||||
repost:
|
||||
enable: true
|
||||
enable: false
|
||||
url:
|
||||
|
||||
# See details front matter: https://fixit.lruihao.cn/documentation/content-management/introduction/#front-matter
|
||||
---
|
||||
|
||||
<!--more-->
|
||||
<!--more-->
|
||||
|
||||
<!-- Place resource files in the current article directory and reference them using relative paths, like this: ``. -->
|
||||
|
||||
+6
-10
@@ -2,6 +2,7 @@
|
||||
title: {{ replace .TranslationBaseName "-" " " | title }}
|
||||
subtitle:
|
||||
date: {{ .Date }}
|
||||
slug: {{ substr .File.UniqueID 0 7 }}
|
||||
draft: true
|
||||
author:
|
||||
name:
|
||||
@@ -10,7 +11,6 @@ author:
|
||||
avatar:
|
||||
description:
|
||||
keywords:
|
||||
license:
|
||||
comment: false
|
||||
weight: 0
|
||||
tags:
|
||||
@@ -19,19 +19,15 @@ categories:
|
||||
- draft
|
||||
hiddenFromHomePage: false
|
||||
hiddenFromSearch: false
|
||||
hiddenFromRelated: false
|
||||
hiddenFromFeed: false
|
||||
summary:
|
||||
resources:
|
||||
- name: featured-image
|
||||
src: featured-image.jpg
|
||||
- name: featured-image-preview
|
||||
src: featured-image-preview.jpg
|
||||
toc: true
|
||||
math: false
|
||||
lightgallery: false
|
||||
featuredImagePreview:
|
||||
featuredImage:
|
||||
password:
|
||||
message:
|
||||
repost:
|
||||
enable: true
|
||||
enable: false
|
||||
url:
|
||||
|
||||
# See details front matter: https://fixit.lruihao.cn/documentation/content-management/introduction/#front-matter
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: {{ T "assets.search" }}
|
||||
layout: search
|
||||
date: {{ .Date }}
|
||||
description:
|
||||
keywords:
|
||||
---
|
||||
+45
-57
@@ -1,14 +1,14 @@
|
||||
@import "../../lib/normalize/normalize";
|
||||
|
||||
html {
|
||||
font-family: $global-font-family;
|
||||
font-weight: $global-font-weight;
|
||||
font-family: fixit-var(global-font-family);
|
||||
font-weight: fixit-var(global-font-weight);
|
||||
font-display: swap;
|
||||
font-size: $global-font-size;
|
||||
line-height: $global-line-height;
|
||||
font-size: fixit-var(global-font-size);
|
||||
line-height: fixit-var(global-line-height);
|
||||
width: 100%;
|
||||
scroll-behavior: smooth;
|
||||
overflow: overlay;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
@media screen and (prefers-reduced-motion: reduce) {
|
||||
@@ -17,61 +17,19 @@ html {
|
||||
}
|
||||
}
|
||||
|
||||
/* scrollbar, only support webkit */
|
||||
::-webkit-scrollbar {
|
||||
width: 0.5rem;
|
||||
height: 0.5rem;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: $scrollbar-color;
|
||||
@include border-radius($global-border-radius);
|
||||
|
||||
&:hover {
|
||||
background-color: $scrollbar-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
::selection {
|
||||
background-color: $selection-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $selection-color-dark;
|
||||
}
|
||||
background-color: fixit-var(selection-color);
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: $global-background-color;
|
||||
color: $global-font-color;
|
||||
scrollbar-color: auto;
|
||||
background-color: fixit-var(global-background-color);
|
||||
color: fixit-var(global-font-color);
|
||||
@include overflow-wrap(break-word);
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 0.75rem;
|
||||
height: 0.75rem;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: transparent;
|
||||
background-clip: content-box;
|
||||
border: 2px solid transparent;
|
||||
@include border-radius(0.5rem);
|
||||
}
|
||||
|
||||
&[data-scroll]::-webkit-scrollbar-thumb {
|
||||
background-color: $scrollbar-color;
|
||||
}
|
||||
|
||||
&[data-theme='dark'] {
|
||||
color: $global-font-color-dark;
|
||||
background-color: $global-background-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
@include border-radius($global-border-radius);
|
||||
@include border-radius;
|
||||
}
|
||||
|
||||
[role='button'] {
|
||||
@@ -87,10 +45,40 @@ abbr[title] {
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
@include link(true, true);
|
||||
img {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
@import '../_partials/mask';
|
||||
@import '../_partials/img';
|
||||
@import '../_partials/icon';
|
||||
@import '../_partials/details';
|
||||
@import '../_partials/widgets';
|
||||
img,
|
||||
video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
@include border-radius;
|
||||
}
|
||||
|
||||
dialog {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
details {
|
||||
&.center {
|
||||
summary {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%code {
|
||||
padding: 0.2em 0.4em;
|
||||
margin: 0;
|
||||
font-size: fixit-var(code-font-size);
|
||||
line-height: fixit-var(code-font-size);
|
||||
font-family: fixit-var(code-font-family);
|
||||
color: fixit-var(code-color);
|
||||
background-color: fixit-var(code-inline-background-color);
|
||||
text-decoration: inherit;
|
||||
@include border-radius;
|
||||
@include overflow-wrap(break-word);
|
||||
}
|
||||
|
||||
@include link(true, true);
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
.breadcrumb-container {
|
||||
padding-inline: 1rem;
|
||||
font-size: 0.75rem;
|
||||
@include z-index(1);
|
||||
@extend .print-d-none;
|
||||
|
||||
&.sticky {
|
||||
position: sticky;
|
||||
top: $header-height;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 0.5rem 0;
|
||||
margin: 0 auto;
|
||||
list-style: none;
|
||||
border-bottom: 1px inset $global-border-color;
|
||||
background-color: $global-background-color;
|
||||
@extend %page-style;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
border-bottom-color: $global-border-color-dark;
|
||||
background-color: $global-background-color-dark;
|
||||
}
|
||||
|
||||
.breadcrumb-item {
|
||||
display: flex;
|
||||
|
||||
+.breadcrumb-item::before {
|
||||
content: "/";
|
||||
display: inline-block;
|
||||
padding-inline: 0.5rem;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
@extend .text-secondary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,37 +21,27 @@
|
||||
.d-none {
|
||||
display: none !important;
|
||||
}
|
||||
.d-none-desktop {
|
||||
display: none;
|
||||
}
|
||||
.d-none-mobile {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.ms-1,
|
||||
.mx-1 {
|
||||
margin-left: 0.25rem !important;
|
||||
margin-left: 0.25em !important;
|
||||
}
|
||||
.me-1,
|
||||
.mx-1 {
|
||||
margin-right: 0.25rem !important;
|
||||
margin-right: 0.25em !important;
|
||||
}
|
||||
.ps-1,
|
||||
.px-1 {
|
||||
padding-left: 0.25rem !important;
|
||||
padding-left: 0.25em !important;
|
||||
}
|
||||
.pe-1,
|
||||
.px-1 {
|
||||
padding-right: 0.25rem !important;
|
||||
padding-right: 0.25em !important;
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
.text-#{$color} {
|
||||
color: #{$value} !important;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: #{darken($value, 5%)} !important;
|
||||
}
|
||||
color: fixit-var(#{$color}) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,3 +54,7 @@
|
||||
.variant-numeric {
|
||||
font-variant-numeric: tabular-nums lining-nums;
|
||||
}
|
||||
|
||||
.rounded-full {
|
||||
@include border-radius(full);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
@import "_mixin";
|
||||
@import "_base";
|
||||
@import "_common";
|
||||
@import "_root";
|
||||
@import "_layout";
|
||||
@import '_widgets';
|
||||
@@ -0,0 +1,50 @@
|
||||
.breadcrumb-container {
|
||||
padding-inline: 1rem;
|
||||
font-size: 0.75rem;
|
||||
background-color: fixit-var(global-background-color);
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
@include z-index(sticky);
|
||||
@extend .print-d-none;
|
||||
|
||||
&:has(~ main[data-reverse]) {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
content: '';
|
||||
flex: 1;
|
||||
padding-inline: 0.5rem;
|
||||
}
|
||||
|
||||
&.sticky {
|
||||
position: sticky;
|
||||
top: fixit-var(header-height);
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 0.5rem 0;
|
||||
margin: 0 auto;
|
||||
list-style: none;
|
||||
border-bottom: 1px inset fixit-var(global-border-color);
|
||||
@extend %page-style;
|
||||
|
||||
.breadcrumb-item {
|
||||
display: flex;
|
||||
|
||||
+ .breadcrumb-item::before {
|
||||
content: attr(data-separator);
|
||||
display: inline-block;
|
||||
padding-inline: 0.5rem;
|
||||
color: fixit-var(global-placeholder-color);
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: fixit-var(secondary);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,18 +20,10 @@ footer {
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
|
||||
.fixit-icon {
|
||||
top: 0.25em;
|
||||
}
|
||||
|
||||
.animate-icon {
|
||||
color: #dc143c;
|
||||
animation: icon-animate 1.33s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.run-times {
|
||||
font-variant-numeric: tabular-nums lining-nums;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,23 +33,23 @@ footer {
|
||||
@keyframes icon-animate {
|
||||
0%,
|
||||
100% {
|
||||
@include transform(scale(1));
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
10%,
|
||||
30% {
|
||||
@include transform(scale(0.9));
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
20%,
|
||||
40%,
|
||||
60%,
|
||||
80% {
|
||||
@include transform(scale(1.1));
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
50%,
|
||||
70% {
|
||||
@include transform(scale(1.1));
|
||||
transform: scale(1.1);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,15 @@
|
||||
header {
|
||||
width: 100%;
|
||||
background-color: $header-background-color;
|
||||
@include z-index(2);
|
||||
@include transition(box-shadow 0.3s ease);
|
||||
background-color: fixit-var(header-background-color);
|
||||
@include z-index(fixed);
|
||||
transition: box-shadow 0.3s ease;
|
||||
@extend .print-d-none;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $header-background-color-dark;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, 0.1));
|
||||
box-shadow: 0 0 1.5rem 0 rgba(0, 0, 0, 0.1);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
@include box-shadow(0 0 1.5rem 0 rgba(255, 255, 255, 0.1));
|
||||
[data-theme=dark] & {
|
||||
box-shadow: 0 0 1.5rem 0 rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,20 +23,22 @@ header {
|
||||
}
|
||||
|
||||
.header-title {
|
||||
font-family: $header-title-font-family;
|
||||
font-size: fixit-var(header-title-font-size);
|
||||
font-family: fixit-var(header-title-font-family);
|
||||
font-weight: bold;
|
||||
margin-right: 0.5rem;
|
||||
min-width: 10%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
@include flex(10);
|
||||
flex: 10;
|
||||
|
||||
.logo {
|
||||
min-height: 1.5em;
|
||||
height: 1.5em;
|
||||
vertical-align: middle;
|
||||
width: auto;
|
||||
vertical-align: top;
|
||||
transform: translateY(calc(#{fixit-var(header-height)} / 2 - 50%));
|
||||
}
|
||||
|
||||
.header-title-text {
|
||||
@@ -58,17 +56,20 @@ header {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
.menu-item-divider {
|
||||
list-style: none;
|
||||
margin: 0.25rem 0.5rem;
|
||||
height: 1px;
|
||||
background-color: fixit-var(menu-border-color);
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
list-style: none;
|
||||
|
||||
& .dropdown-icon {
|
||||
.dropdown-icon {
|
||||
margin-left: 0.25rem;
|
||||
font-size: .875em;
|
||||
color: $global-font-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-color-dark;
|
||||
}
|
||||
color: fixit-var(global-font-color);
|
||||
|
||||
&.open::before {
|
||||
content: "\f078";
|
||||
@@ -79,22 +80,26 @@ header {
|
||||
>.menu-link,
|
||||
>.nested-item>.menu-link {
|
||||
font-weight: bold;
|
||||
color: $menu-active-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $menu-active-color-dark;
|
||||
}
|
||||
color: fixit-var(menu-active-color);
|
||||
}
|
||||
}
|
||||
|
||||
&.language-switch,
|
||||
&.theme-switch {
|
||||
cursor: pointer;
|
||||
.menu-link[href="javascript:void(0);"] {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.menu-link i {
|
||||
transform: perspective(1rem);
|
||||
transition: transform 0.4s ease;
|
||||
}
|
||||
|
||||
.menu-link:hover i {
|
||||
transform: perspective(1rem) translateZ(0.2rem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search {
|
||||
.menu .search {
|
||||
position: relative;
|
||||
|
||||
input {
|
||||
@@ -102,12 +107,12 @@ header {
|
||||
box-sizing: border-box;
|
||||
height: 2.5rem;
|
||||
width: 1.25rem;
|
||||
@include border-radius(0.5rem);
|
||||
border: none;
|
||||
outline: none;
|
||||
background-color: transparent;
|
||||
vertical-align: baseline !important;
|
||||
@include transition(width 0.3s ease);
|
||||
transition: width 0.3s ease;
|
||||
@include border-radius(0.5rem);
|
||||
}
|
||||
|
||||
@include placeholder(transparent);
|
||||
@@ -139,28 +144,15 @@ header {
|
||||
.open &,
|
||||
&.mobile {
|
||||
input {
|
||||
color: $global-font-color;
|
||||
background-color: $search-background-color;
|
||||
color: fixit-var(global-font-color);
|
||||
background-color: fixit-var(search-background-color);
|
||||
padding: 0 2rem 0 2rem;
|
||||
}
|
||||
|
||||
[data-theme='dark'] & {
|
||||
input {
|
||||
color: $global-font-color-dark;
|
||||
background-color: $search-background-color-dark;
|
||||
}
|
||||
|
||||
@include placeholder($global-font-secondary-color-dark);
|
||||
}
|
||||
|
||||
@include placeholder($global-font-secondary-color);
|
||||
@include placeholder;
|
||||
|
||||
.search-button {
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
color: fixit-var(global-placeholder-color);
|
||||
}
|
||||
|
||||
.search-clear:hover {
|
||||
@@ -175,12 +167,8 @@ header {
|
||||
|
||||
.theme-switch {
|
||||
i {
|
||||
@include transform(rotate(225deg));
|
||||
@include transition(transform 0.4s ease);
|
||||
}
|
||||
|
||||
&:hover i {
|
||||
@include transform(rotate(45deg));
|
||||
transform: rotate(225deg);
|
||||
transition: all 0.4s ease;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,8 +176,8 @@ header {
|
||||
display: block;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: $header-height;
|
||||
line-height: $header-height;
|
||||
height: fixit-var(header-height);
|
||||
line-height: fixit-var(header-height);
|
||||
box-sizing: border-box;
|
||||
|
||||
[data-header-desktop='normal'] & {
|
||||
@@ -203,15 +191,14 @@ header {
|
||||
|
||||
.header-wrapper {
|
||||
// use css native function to calculate max value
|
||||
padding: 0 2rem 0 MAX(10vh, $header-height);
|
||||
padding: 0 2rem 0 MAX(10vh, fixit-var(header-height));
|
||||
height: 100%;
|
||||
|
||||
&[data-github-corner='right'] {
|
||||
padding-right: $header-height;
|
||||
padding-right: fixit-var(header-height);
|
||||
}
|
||||
|
||||
.header-title {
|
||||
font-size: $header-title-font-size;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@@ -221,13 +208,18 @@ header {
|
||||
flex-wrap: nowrap;
|
||||
float: right;
|
||||
|
||||
>.menu-item {
|
||||
> .menu-item {
|
||||
&:hover .sub-menu {
|
||||
display: block;
|
||||
@include transform(translateX(-0.5rem));
|
||||
transform: translateX(-0.5rem);
|
||||
}
|
||||
&.theme-switch {
|
||||
&:hover i {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
}
|
||||
&.language-switch:hover .sub-menu {
|
||||
@include transform(translateX(calc(1.75rem - 100%)));
|
||||
transform: translateX(calc(1.75rem - 100%));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,11 +230,7 @@ header {
|
||||
width: 0;
|
||||
margin: 0.125rem 0.25rem;
|
||||
padding: 0;
|
||||
border-left: 1px dashed lighten($global-font-secondary-color, 15%);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
border-left-color: darken($global-font-secondary-color-dark, 15%);
|
||||
}
|
||||
border-left: 1px dashed fixit-var(global-border-color-weight);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,22 +239,22 @@ header {
|
||||
margin: 0;
|
||||
padding: 0.25rem 0;
|
||||
display: none;
|
||||
top: calc(#{$header-height} - 0.75rem);
|
||||
border-radius: $global-border-radius;
|
||||
border: 1px solid $global-border-color;
|
||||
background-color: $header-background-color;
|
||||
@include transition(box-shadow 0.3s ease);
|
||||
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, 0.1));
|
||||
top: calc(#{fixit-var(header-height)} - 0.75rem);
|
||||
border: 1px solid fixit-var(menu-border-color);
|
||||
background-color: fixit-var(header-background-color);
|
||||
max-height: 60vh;
|
||||
overflow-y: auto;
|
||||
@include border-radius;
|
||||
transition: box-shadow 0.3s ease;
|
||||
box-shadow: 0 0 1.5rem 0 rgba(0, 0, 0, 0.1);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $header-background-color-dark;
|
||||
border-color: $global-border-color-dark;
|
||||
@include box-shadow(0 0 1.5rem 0 rgba(255, 255, 255, 0.1));
|
||||
[data-theme=dark] & {
|
||||
box-shadow: 0 0 1.5rem 0 rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
height: $header-height*0.5;
|
||||
line-height: $header-height*0.5;
|
||||
height: fixit-var(submenu-height);
|
||||
line-height: fixit-var(submenu-height);
|
||||
max-width: 15rem;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
@@ -287,8 +275,8 @@ header {
|
||||
display: none;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
min-height: $header-height;
|
||||
line-height: $header-height;
|
||||
min-height: fixit-var(header-height);
|
||||
line-height: fixit-var(header-height);
|
||||
|
||||
[data-header-mobile='normal'] & {
|
||||
position: static;
|
||||
@@ -301,42 +289,33 @@ header {
|
||||
.header-wrapper {
|
||||
padding: 0 1rem;
|
||||
font-size: 1.125rem;
|
||||
@include transition(margin-top 0.3s ease);
|
||||
transition: margin-top 0.3s ease;
|
||||
|
||||
.header-title {
|
||||
font-size: $header-title-font-size;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
.menu-toggle {
|
||||
line-height: 4rem;
|
||||
cursor: pointer;
|
||||
@include transition(width 0.3s ease);
|
||||
.theme-switch {
|
||||
line-height: 1.25em;
|
||||
}
|
||||
|
||||
.menu-toggle {
|
||||
span {
|
||||
display: block;
|
||||
background: $global-font-color;
|
||||
width: 1.5rem;
|
||||
background-color: fixit-var(global-font-color);
|
||||
width: 20px;
|
||||
height: 2px;
|
||||
@include border-radius(3px);
|
||||
@include transition(all 0.3s ease-in-out);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background: $global-font-color-dark;
|
||||
}
|
||||
@include border-radius(full);
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
span:nth-child(1) {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
span:nth-child(3) {
|
||||
margin-top: 0.5rem;
|
||||
span:not(:last-child) {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
&.active {
|
||||
span:nth-child(1) {
|
||||
@include transform(rotate(45deg) translate(0.4rem, 0.5rem));
|
||||
transform: translateY(8px) rotate(45deg);
|
||||
}
|
||||
|
||||
span:nth-child(2) {
|
||||
@@ -344,26 +323,23 @@ header {
|
||||
}
|
||||
|
||||
span:nth-child(3) {
|
||||
@include transform(rotate(-45deg) translate(0.4rem, -0.5rem));
|
||||
transform: translateY(-8px) rotate(-45deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.menu {
|
||||
background: $header-background-color;
|
||||
border-top: 2px solid $global-border-color;
|
||||
background-color: fixit-var(header-background-color);
|
||||
border-top: 2px solid fixit-var(global-border-color-light);
|
||||
display: none;
|
||||
overflow-y: overlay;
|
||||
overflow-y: auto;
|
||||
max-height: 70vh;
|
||||
@include box-shadow(0 0.125rem 0.25rem rgba(0, 0, 0, 0.1));
|
||||
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.1);
|
||||
@include scrollbar-width(none, 0);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
@include box-shadow(0 0.125rem 0.25rem rgba(255, 255, 255, 0.1));
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 0;
|
||||
[data-theme=dark] & {
|
||||
box-shadow: 0 0.125rem 0.25rem rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.search-wrapper {
|
||||
@@ -371,16 +347,12 @@ header {
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: ($header-height - 2.5rem) / 2 1rem;
|
||||
padding: 0.5rem 1rem;
|
||||
line-height: 2.5rem;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background-color: $header-background-color;
|
||||
@include z-index(0, 50);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $header-background-color-dark;
|
||||
}
|
||||
background-color: fixit-var(header-background-color);
|
||||
@include z-index(sticky);
|
||||
}
|
||||
|
||||
.search {
|
||||
@@ -413,10 +385,10 @@ header {
|
||||
padding: 0 1rem;
|
||||
|
||||
&:not(.menu-system):hover {
|
||||
background-color: lighten($global-font-secondary-color, 24%);
|
||||
background-color: #f2f2f3;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: darken($global-font-secondary-color-dark, 24%);
|
||||
[data-theme=dark] & {
|
||||
background-color: #535355;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,7 +397,7 @@ header {
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow-x: hidden;
|
||||
@include flex(4);
|
||||
flex: 4;
|
||||
}
|
||||
|
||||
& .nested-item {
|
||||
@@ -447,11 +419,7 @@ header {
|
||||
bottom: 0;
|
||||
line-height: 2.5rem;
|
||||
padding: 0 1rem;
|
||||
background-color: $header-background-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $header-background-color-dark;
|
||||
}
|
||||
background-color: fixit-var(header-background-color);
|
||||
|
||||
.menu-system-item {
|
||||
padding-inline: 0.5rem;
|
||||
@@ -480,10 +448,10 @@ header {
|
||||
}
|
||||
|
||||
.menu-item:hover {
|
||||
background-color: lighten($global-font-secondary-color, 20%);
|
||||
background-color: #e7e7ea;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: darken($global-font-secondary-color-dark, 20%);
|
||||
[data-theme=dark] & {
|
||||
background-color: #5d5d5f;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -491,17 +459,12 @@ header {
|
||||
&.active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background: $header-background-color-dark;
|
||||
border-top-color: $global-border-color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.open {
|
||||
.header-wrapper {
|
||||
margin-top: -$header-height;
|
||||
margin-top: calc(#{fixit-var(header-height)} * -1);
|
||||
}
|
||||
|
||||
.menu {
|
||||
@@ -521,12 +484,12 @@ header {
|
||||
|
||||
.search-dropdown {
|
||||
position: fixed;
|
||||
top: $header-height;
|
||||
@include z-index(2);
|
||||
@include box-shadow(0 0.125rem 0.25rem rgba(0, 0, 0, 0.1));
|
||||
top: fixit-var(header-height);
|
||||
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.1);
|
||||
@include z-index(fixed);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
@include box-shadow(0 0.125rem 0.25rem rgba(255, 255, 255, 0.1));
|
||||
[data-theme=dark] & {
|
||||
box-shadow: 0 0.125rem 0.25rem rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
&.desktop {
|
||||
@@ -541,15 +504,12 @@ header {
|
||||
|
||||
.dropdown-menu {
|
||||
right: 0 !important;
|
||||
background-color: $global-background-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $global-background-color-dark;
|
||||
}
|
||||
background-color: fixit-var(global-background-color);
|
||||
|
||||
.suggestions {
|
||||
overflow-y: auto;
|
||||
max-height: calc(100vh - #{$header-height});
|
||||
// 41px is the height of the search-footer
|
||||
max-height: calc(100dvh - #{fixit-var(header-height)} - 41px);
|
||||
|
||||
.suggestion {
|
||||
padding: 0.75rem 1rem;
|
||||
@@ -568,40 +528,30 @@ header {
|
||||
font-size: 0.875rem;
|
||||
float: right;
|
||||
text-align: right;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
color: fixit-var(secondary);
|
||||
}
|
||||
|
||||
.suggestion-context {
|
||||
display: -webkit-box;
|
||||
line-height: 1.25rem;
|
||||
@include box(vertical);
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
line-clamp: 2;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: fixit-var(global-placeholder-color);
|
||||
@include overflow-wrap(break-word);
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: normal;
|
||||
background-color: $selection-color;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: $selection-color-dark;
|
||||
}
|
||||
background-color: fixit-var(selection-color);
|
||||
}
|
||||
|
||||
&.cursor {
|
||||
background: darken($code-background-color, 5%);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
[data-theme=dark] & {
|
||||
background: lighten($code-background-color-dark, 5%);
|
||||
}
|
||||
}
|
||||
@@ -619,7 +569,7 @@ header {
|
||||
.search-query {
|
||||
font-weight: bold;
|
||||
|
||||
[data-theme='dark'] & {
|
||||
[data-theme=dark] & {
|
||||
color: #ddd;
|
||||
}
|
||||
}
|
||||
@@ -629,12 +579,7 @@ header {
|
||||
padding: 0.5rem 1rem;
|
||||
float: right;
|
||||
font-size: 0.8rem;
|
||||
color: $global-font-secondary-color;
|
||||
|
||||
[data-theme='dark'] {
|
||||
color: $global-font-secondary-color-dark;
|
||||
}
|
||||
|
||||
color: fixit-var(secondary);
|
||||
@include link(false, false);
|
||||
|
||||
a {
|
||||
@@ -10,21 +10,22 @@
|
||||
|
||||
aside {
|
||||
flex: 1;
|
||||
padding-inline: 0.5rem;
|
||||
padding: 0.5rem;
|
||||
max-width: 500px;
|
||||
|
||||
&:first-child {
|
||||
order: 2;
|
||||
&:not(:has(~ aside)) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
&.container {
|
||||
&.fi-container {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
padding: 0 1rem;
|
||||
padding-inline: 1rem;
|
||||
gap: 0.5rem;
|
||||
|
||||
&.container-reverse {
|
||||
&[data-reverse] {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
@@ -35,7 +36,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@import "_core/header";
|
||||
@import "_core/breadcrumb";
|
||||
@import "_core/footer";
|
||||
@import "_core/pagination";
|
||||
@import "header";
|
||||
@import "breadcrumb";
|
||||
@import "footer";
|
||||
@import "pagination";
|
||||
@@ -10,16 +10,12 @@
|
||||
|
||||
a {
|
||||
font-size: 0.8rem;
|
||||
color: $pagination-link-color;
|
||||
color: fixit-var(pagination-link-color);
|
||||
letter-spacing: 0.1rem;
|
||||
font-weight: 700;
|
||||
padding: 5px 5px;
|
||||
text-decoration: none;
|
||||
@include transition(0.3s);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
color: $pagination-link-color-dark;
|
||||
}
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
li {
|
||||
@@ -34,11 +30,7 @@
|
||||
}
|
||||
|
||||
&:hover a {
|
||||
color: $pagination-link-hover-color;
|
||||
}
|
||||
|
||||
[data-theme='dark'] &:hover a {
|
||||
color: $pagination-link-hover-color-dark;
|
||||
color: fixit-var(pagination-link-hover-color);
|
||||
}
|
||||
|
||||
&::before,
|
||||
@@ -47,14 +39,9 @@
|
||||
content: '';
|
||||
width: 0;
|
||||
height: 3px;
|
||||
background: $pagination-link-hover-color;
|
||||
@include transition(0.3s);
|
||||
background: fixit-var(pagination-link-hover-color);
|
||||
bottom: 0px;
|
||||
}
|
||||
|
||||
[data-theme='dark'] &::before,
|
||||
[data-theme='dark'] &::after {
|
||||
background: $pagination-link-hover-color-dark;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
&::before {
|
||||
@@ -74,11 +61,7 @@
|
||||
|
||||
&.active {
|
||||
a {
|
||||
color: $pagination-link-hover-color;
|
||||
}
|
||||
|
||||
[data-theme='dark'] & a {
|
||||
color: $pagination-link-hover-color-dark;
|
||||
color: fixit-var(pagination-link-hover-color);
|
||||
}
|
||||
|
||||
&::before,
|
||||
@@ -1,160 +0,0 @@
|
||||
@media only screen and (min-width: 1441px) {
|
||||
%page-style {
|
||||
width: 60%;
|
||||
|
||||
[data-page-style='wide'] & {
|
||||
width: 64%;
|
||||
}
|
||||
|
||||
[data-page-style='narrow'] & {
|
||||
max-width: 800px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1440px) {
|
||||
%page-style {
|
||||
width: 56%;
|
||||
|
||||
[data-page-style='wide'] & {
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1200px) {
|
||||
%page-style {
|
||||
width: 52%;
|
||||
|
||||
[data-page-style='wide'] & {
|
||||
width: 56%;
|
||||
}
|
||||
}
|
||||
|
||||
#header-desktop .header-wrapper {
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.search-dropdown.desktop {
|
||||
right: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
%page-style {
|
||||
width: 80% !important;
|
||||
}
|
||||
|
||||
aside {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#toc-static {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#header-desktop .header-wrapper {
|
||||
padding-left: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (min-width: 681px) {
|
||||
.breadcrumb-container.sticky {
|
||||
body:not([data-header-desktop='sticky']) & {
|
||||
top: 0;
|
||||
}
|
||||
// adjust the scroll margin top of the content anchors on the page
|
||||
body:not([data-header-desktop='auto']) &+.container .content [id] {
|
||||
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-offset));
|
||||
}
|
||||
}
|
||||
|
||||
[data-header-desktop='normal'] .page .content [id] {
|
||||
--#{$prefix}scroll-mt: #{$global-scroll-margin-top};
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 680px) {
|
||||
#header-desktop {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#header-mobile,
|
||||
.d-none-desktop {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.d-none-mobile {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.breadcrumb-container.sticky {
|
||||
body:not([data-header-mobile='sticky']) & {
|
||||
top: 0;
|
||||
}
|
||||
// adjust the scroll margin top of the content anchors on the page
|
||||
body:not([data-header-mobile='auto']) &+.container .content [id] {
|
||||
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-offset));
|
||||
}
|
||||
}
|
||||
|
||||
[data-header-mobile='normal'] .page .content [id] {
|
||||
--#{$prefix}scroll-mt: #{$global-scroll-margin-top};
|
||||
}
|
||||
|
||||
%page-style {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.page {
|
||||
.categories-card {
|
||||
.card-item {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
.footer-container {
|
||||
font-size: 0.618rem;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination .page-item {
|
||||
margin: 0 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only print {
|
||||
@page {
|
||||
size: A4 portrait;
|
||||
margin: 1.27cm;
|
||||
}
|
||||
|
||||
.page {
|
||||
width: 100% !important;
|
||||
padding-top: 0 !important;
|
||||
|
||||
&.single {
|
||||
.single-title,
|
||||
.single-subtitle,
|
||||
.post-meta {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
h1:not(.single-title),
|
||||
.page-break-before {
|
||||
page-break-before: always;
|
||||
}
|
||||
|
||||
.page-break-after {
|
||||
page-break-after: always;
|
||||
}
|
||||
}
|
||||
|
||||
.print-d-none {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
@mixin blur {
|
||||
// TODO refactor blur with backdrop-filter
|
||||
.blur & {
|
||||
filter: blur(1.5px);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/// Mixin to set border-radius
|
||||
/// @param {String|Number|List} $value - The value of the border-radius, position (top, bottom, left, right) or keyword (full)
|
||||
/// @param {Number} $radius - The radius of the border (only for position)
|
||||
/// @example
|
||||
/// @include border-radius;
|
||||
/// @include border-radius(full);
|
||||
/// @include border-radius(top);
|
||||
/// @include border-radius(top, 10px);
|
||||
/// @include border-radius(10px 20px 10px 20px);
|
||||
@mixin border-radius($value: fixit-var(global-border-radius), $radius: null) {
|
||||
$r: if($radius, $radius, fixit-var(global-border-radius));
|
||||
|
||||
@if $value == full {
|
||||
border-radius: calc(infinity * 1px);
|
||||
} @else if $value == top {
|
||||
border-radius: $r $r 0 0;
|
||||
} @else if $value == bottom {
|
||||
border-radius: 0 0 $r $r;
|
||||
} @else if $value == left {
|
||||
border-radius: $r 0 0 $r;
|
||||
} @else if $value == right {
|
||||
border-radius: 0 $r $r 0;
|
||||
} @else {
|
||||
border-radius: $value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
@mixin placeholder($color: fixit-var(global-placeholder-color)) {
|
||||
input::-webkit-input-placeholder {
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input:-moz-placeholder {
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input::-moz-placeholder {
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input:-ms-input-placeholder {
|
||||
color: $color;
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO Superseded by text-wrap: wrap; in modern browsers
|
||||
@mixin overflow-wrap($value) {
|
||||
word-wrap: $value;
|
||||
overflow-wrap: $value;
|
||||
}
|
||||
|
||||
@mixin user-select($value) {
|
||||
-webkit-user-select: $value !important;
|
||||
-moz-user-select: $value !important;
|
||||
user-select: $value !important;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
@import 'theme-vars';
|
||||
@import 'blur';
|
||||
@import 'border-radius';
|
||||
@import 'compatibility';
|
||||
@import 'link';
|
||||
@import 'loading';
|
||||
@import 'scrollbar-width';
|
||||
@import 'z-index';
|
||||
@@ -1,8 +1,12 @@
|
||||
@mixin link($light, $dark) {
|
||||
/// Link mixin
|
||||
/// @param {Boolean} $light use global link color
|
||||
/// @param {Boolean} $dark use global link color dark
|
||||
/// @param {String} $decoration text-decoration, default none
|
||||
@mixin link($light, $dark, $decoration: none) {
|
||||
a,
|
||||
a::before,
|
||||
a::after {
|
||||
text-decoration: none;
|
||||
text-decoration: $decoration;
|
||||
|
||||
@if $light {
|
||||
color: $global-link-color;
|
||||
@@ -12,7 +16,7 @@
|
||||
color: $single-link-color;
|
||||
}
|
||||
|
||||
[data-theme='dark'] & {
|
||||
[data-theme=dark] & {
|
||||
@if $dark {
|
||||
color: $global-link-color-dark;
|
||||
}
|
||||
@@ -33,7 +37,7 @@
|
||||
color: $single-link-hover-color;
|
||||
}
|
||||
|
||||
[data-theme='dark'] & {
|
||||
[data-theme=dark] & {
|
||||
@if $dark {
|
||||
color: $global-link-hover-color-dark;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
// Loading Mixin for before/after pseudo element
|
||||
@mixin loading {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
backdrop-filter: blur(1rem);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-image: fixit-var(loading-img);
|
||||
background-size: 60px;
|
||||
@include z-index(loading);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
@mixin scrollbar-width($width: thin, $widthLegacy: 12px) {
|
||||
@include set-fixit-vars((
|
||||
scrollbar-width: $width,
|
||||
scrollbar-width-legacy: $widthLegacy,
|
||||
));
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
// ========================================
|
||||
// Theme Variable Mixins and Functions
|
||||
// ========================================
|
||||
|
||||
/// Get CSS variable with prefix
|
||||
/// @param {String} $name - CSS variable name (without prefix)
|
||||
/// @param {*} $fallback - Optional fallback value
|
||||
/// @return {String} - Complete CSS variable reference
|
||||
/// @example
|
||||
/// color: fixit-var(global-font-color);
|
||||
/// background: fixit-var(custom-bg, #fff);
|
||||
@function fixit-var($name, $fallback: null) {
|
||||
@if $fallback {
|
||||
@return var(#{$rootPrefix}#{$name}, #{$fallback});
|
||||
} @else {
|
||||
@return var(#{$rootPrefix}#{$name});
|
||||
}
|
||||
}
|
||||
|
||||
/// Set a single CSS variable
|
||||
/// @param {String} $name - CSS variable name (without prefix)
|
||||
/// @param {*} $value - Variable value
|
||||
/// @example
|
||||
/// @include set-fixit-var(custom-color, #ff0000);
|
||||
@mixin set-fixit-var($name, $value) {
|
||||
#{$rootPrefix}#{$name}: #{$value};
|
||||
}
|
||||
|
||||
/// Batch set CSS variables
|
||||
/// @param {Map} $vars - Variable map, key is CSS variable name (without prefix), value is variable value
|
||||
/// @example
|
||||
/// @include set-fixit-vars((
|
||||
/// custom-color: #ff0000,
|
||||
/// custom-bg: #00ff00,
|
||||
/// ));
|
||||
@mixin set-fixit-vars($vars) {
|
||||
@each $name, $value in $vars {
|
||||
#{$rootPrefix}#{$name}: #{$value};
|
||||
}
|
||||
}
|
||||
|
||||
/// Batch set theme color variables using global $theme-colors
|
||||
/// Generates light theme (in :root) and dark theme ([data-theme=dark]) variables
|
||||
@mixin set-theme-colors() {
|
||||
// Light theme (in :root)
|
||||
@at-root :root {
|
||||
@each $name, $value in $theme-colors {
|
||||
#{$rootPrefix}#{$name}: #{$value};
|
||||
}
|
||||
}
|
||||
|
||||
// Dark theme
|
||||
@at-root [data-theme=dark] {
|
||||
@each $name, $value in $theme-colors {
|
||||
#{$rootPrefix}#{$name}: #{darken($value, 5%)};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Define dual-theme variables (generate definitions for both light and dark simultaneously)
|
||||
/// @param {Map} $vars - Variable map, key is CSS variable name, value is Map(light: $light-val, dark: $dark-val)
|
||||
/// @example
|
||||
/// @include define-theme-vars((
|
||||
/// global-background-color: (light: $global-background-color, dark: $global-background-color-dark)
|
||||
/// ));
|
||||
@mixin define-theme-vars($vars) {
|
||||
// Light theme (in :root)
|
||||
@at-root :root {
|
||||
@each $name, $values in $vars {
|
||||
#{$rootPrefix}#{$name}: #{map-get($values, light)};
|
||||
}
|
||||
}
|
||||
|
||||
// Dark theme
|
||||
@at-root [data-theme=dark] {
|
||||
@each $name, $values in $vars {
|
||||
#{$rootPrefix}#{$name}: #{map-get($values, dark)};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
$z-indexes: (
|
||||
"hide": -1,
|
||||
"auto": auto,
|
||||
"base": 1,
|
||||
"loading": 10,
|
||||
"sticky": 100,
|
||||
"fixed": 200
|
||||
) !default;
|
||||
|
||||
/// Mixin to set z-index
|
||||
/// @param {String|Number} $key - The key of the z-index map or a raw number
|
||||
/// @param {Number} $diff - The difference to add to the z-index
|
||||
/// @example
|
||||
/// @include z-index(base);
|
||||
/// @include z-index(base, 1);
|
||||
@mixin z-index($key, $diff: 0) {
|
||||
$z-index: map-get($z-indexes, $key);
|
||||
|
||||
@if $z-index {
|
||||
z-index: $z-index + $diff;
|
||||
} @else {
|
||||
@warn "Unknown z-index key: `#{$key}`.";
|
||||
z-index: $key + $diff;
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
/* Resolve style conflicts between third-party plugins */
|
||||
|
||||
@keyframes #{$prefix}pulse {
|
||||
from {
|
||||
@include transform(scale3d(1, 1, 1));
|
||||
}
|
||||
|
||||
50% {
|
||||
@include transform(scale3d(1.05, 1.05, 1.05));
|
||||
}
|
||||
|
||||
to {
|
||||
@include transform(scale3d(1, 1, 1));
|
||||
}
|
||||
}
|
||||
|
||||
.animate__pulse {
|
||||
-webkit-animation-name: #{$prefix}pulse !important;
|
||||
animation-name: #{$prefix}pulse !important;
|
||||
}
|
||||
+132
-11
@@ -1,15 +1,136 @@
|
||||
// ================================================================================
|
||||
// CSS Custom Properties (CSS Variables)
|
||||
// ================================================================================
|
||||
// This file defines all CSS custom properties for the FixIt theme.
|
||||
// Variables are organized into two main categories:
|
||||
// 1. Theme-independent variables: fixed values (fonts, sizes, etc.)
|
||||
// 2. Theme-dependent variables: color values that support light/dark themes
|
||||
//
|
||||
// Theme-dependent variables are further categorized into:
|
||||
// - Core: Global layout and navigation colors
|
||||
// - Page Content: Article and post content colors
|
||||
// - Third-party: Extension and plugin colors
|
||||
//
|
||||
// These CSS variables enable runtime theme switching and customization.
|
||||
// ================================================================================
|
||||
|
||||
:root {
|
||||
// Note: Custom variable values only support SassScript inside `#{}`.
|
||||
interpolate-size: allow-keywords;
|
||||
|
||||
// Theme colors varibles
|
||||
@each $color, $value in $theme-colors {
|
||||
--#{$prefix}#{$color}: #{$value};
|
||||
}
|
||||
@each $color, $value in $theme-colors {
|
||||
--#{$prefix}#{$color}-dark: #{darken($value, 5%)};
|
||||
}
|
||||
// ----------------------------------------
|
||||
// Theme-Independent Variables
|
||||
// ----------------------------------------
|
||||
@include set-fixit-vars((
|
||||
// Global Typography
|
||||
global-font-family: $global-font-family,
|
||||
global-font-size: $global-font-size,
|
||||
global-font-weight: $global-font-weight,
|
||||
global-line-height: $global-line-height,
|
||||
global-scroll-margin-top: $global-scroll-margin-top,
|
||||
global-border-radius: $global-border-radius,
|
||||
|
||||
// Scroll margin top and Stack sticky top related
|
||||
--#{$prefix}scroll-mt: calc(#{$header-height} + #{$global-scroll-margin-top});
|
||||
--#{$prefix}breadcrumb-offset: 2.5rem;
|
||||
// Header
|
||||
header-height: $header-height,
|
||||
header-title-font-family: $header-title-font-family,
|
||||
header-title-font-size: $header-title-font-size,
|
||||
submenu-height: $submenu-height,
|
||||
|
||||
// Single Content
|
||||
toc-title-font-size: $toc-title-font-size,
|
||||
toc-content-font-size: $toc-content-font-size,
|
||||
collection-title-font-size: $collection-title-font-size,
|
||||
collection-list-font-size: $collection-list-font-size,
|
||||
related-title-font-size: $related-title-font-size,
|
||||
related-list-font-size: $related-list-font-size,
|
||||
reward-img-width: $reward-img-width,
|
||||
|
||||
// Code
|
||||
code-font-size: $code-font-size,
|
||||
code-block-font-size: $code-block-font-size,
|
||||
code-font-family: $code-font-family,
|
||||
code-error-color: $code-error-color,
|
||||
|
||||
// Scrollbar
|
||||
scrollbar-track-color: transparent,
|
||||
scrollbar-width: thin,
|
||||
scrollbar-width-legacy: 12px,
|
||||
|
||||
// Other utilities
|
||||
breadcrumb-height: 0px,
|
||||
divider-edge-weak: linear-gradient(to right, transparent, fixit-var(divider-bg, #d0d0d5), transparent),
|
||||
scroll-mt: calc(#{fixit-var(header-height)} + #{fixit-var(global-scroll-margin-top)}),
|
||||
));
|
||||
}
|
||||
|
||||
// ----------------------------------------
|
||||
// Theme-Dependent Color Variables
|
||||
// ----------------------------------------
|
||||
|
||||
// Theme colors variables
|
||||
@include set-theme-colors;
|
||||
|
||||
// Core theme colors (global layout)
|
||||
@include define-theme-vars((
|
||||
// Global
|
||||
global-background-color: (light: $global-background-color, dark: $global-background-color-dark),
|
||||
global-font-color: (light: $global-font-color, dark: $global-font-color-dark),
|
||||
global-placeholder-color: (light: $global-placeholder-color, dark: $global-placeholder-color-dark),
|
||||
global-link-color: (light: $global-link-color, dark: $global-link-color-dark),
|
||||
global-link-hover-color: (light: $global-link-hover-color, dark: $global-link-hover-color-dark),
|
||||
global-border-color: (light: $global-border-color, dark: $global-border-color-dark),
|
||||
global-border-color-light: (light: lighten($global-border-color, 5%), dark: darken($global-border-color-dark, 5%)),
|
||||
global-border-color-weight: (light: darken($global-border-color, 5%), dark: lighten($global-border-color-dark, 5%)),
|
||||
|
||||
// Header
|
||||
header-background-color: (light: $header-background-color, dark: $header-background-color-dark),
|
||||
menu-active-color: (light: $menu-active-color, dark: $menu-active-color-dark),
|
||||
menu-border-color: (light: $menu-border-color, dark: $menu-border-color-dark),
|
||||
search-background-color: (light: $search-background-color, dark: $search-background-color-dark),
|
||||
|
||||
// Selection
|
||||
selection-color: (light: $selection-color, dark: $selection-color-dark),
|
||||
|
||||
// Scrollbar
|
||||
scrollbar-color: (light: $scrollbar-color, dark: $scrollbar-color),
|
||||
scrollbar-hover-color: (light: $scrollbar-hover-color, dark: $scrollbar-hover-color),
|
||||
scrollbar-thumb-color: (light: $scrollbar-color, dark: $scrollbar-color),
|
||||
scrollbar-thumb-hover-color: (light: $scrollbar-hover-color, dark: $scrollbar-hover-color),
|
||||
|
||||
// Tag Cloud
|
||||
tag-cloud-start: (light: $tag-cloud-start, dark: $tag-cloud-start-dark),
|
||||
tag-cloud-end: (light: $tag-cloud-end, dark: $tag-cloud-end-dark),
|
||||
|
||||
// Pagination
|
||||
pagination-link-color: (light: $pagination-link-color, dark: $pagination-link-color-dark),
|
||||
pagination-link-hover-color: (light: $pagination-link-hover-color, dark: $pagination-link-hover-color-dark),
|
||||
));
|
||||
|
||||
// Page content theme colors
|
||||
@include define-theme-vars((
|
||||
// Single Content
|
||||
single-link-color: (light: $single-link-color, dark: $single-link-color-dark),
|
||||
single-link-hover-color: (light: $single-link-hover-color, dark: $single-link-hover-color-dark),
|
||||
table-background-color: (light: $table-background-color, dark: $table-background-color-dark),
|
||||
table-thead-color: (light: $table-thead-color, dark: $table-thead-color-dark),
|
||||
blockquote-color: (light: $blockquote-color, dark: $blockquote-color-dark),
|
||||
reward-color: (light: $reward-color, dark: $reward-color-dark),
|
||||
|
||||
// Divider
|
||||
hr-active-color: (light: lighten($single-link-hover-color, 4%), dark: darken($global-link-hover-color-dark, 4%)),
|
||||
|
||||
// Code
|
||||
code-color: (light: $code-color, dark: $code-color-dark),
|
||||
code-inline-background-color: (light: rgba(175, 184, 193, 0.2), dark: rgba(99, 110, 123, 0.4)),
|
||||
code-block-background-color: (light: $code-background-color, dark: $code-background-color-dark),
|
||||
code-header-color: (light: $code-header-color, dark: $code-header-color-dark),
|
||||
code-header-background-color: (light: darken($code-background-color, 5%), dark: darken($code-background-color-dark, 5%)),
|
||||
code-highlight-color: (light: $code-highlight-color, dark: $code-highlight-color-dark),
|
||||
gist-meta-background-color: (light: darken($code-background-color, 5%), dark: darken($code-background-color-dark, 5%)),
|
||||
));
|
||||
|
||||
// Third-party component theme colors (extensions and plugins)
|
||||
@include define-theme-vars((
|
||||
// GitHub Corners
|
||||
github-corner-color: (light: $github-corner-color, dark: $github-corner-color-dark),
|
||||
github-corner-fill: (light: $github-corner-fill, dark: $github-corner-fill-dark),
|
||||
));
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
.cc-window.cc-banner {
|
||||
.cc-btn {
|
||||
color: fixit-var(global-font-color);
|
||||
background-color: fixit-var(global-background-color);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: #ccc;
|
||||
|
||||
[data-theme=dark] & {
|
||||
background-color: #444;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
.details {
|
||||
> .details-summary {
|
||||
transition: border-radius 0.2s ease 0.2s;
|
||||
@include border-radius;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
i.details-icon {
|
||||
color: fixit-var(secondary);
|
||||
transition: all 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
color: fixit-var(global-font-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> .details-content {
|
||||
height: 0;
|
||||
overflow-y: hidden;
|
||||
transition: height 0.5s ease-out;
|
||||
}
|
||||
|
||||
&.open {
|
||||
> .details-summary {
|
||||
transition: border-radius 0s;
|
||||
@include border-radius(top);
|
||||
|
||||
i.details-icon {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
> .details-content {
|
||||
height: auto;
|
||||
@include border-radius(bottom);
|
||||
}
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
> .details-summary {
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
.fixed-buttons {
|
||||
position: fixed;
|
||||
right: 1.5rem;
|
||||
bottom: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
@include z-index(fixed, -10);
|
||||
}
|
||||
|
||||
.fixed-button {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5rem;
|
||||
padding: 0.5rem 0.625rem;
|
||||
color: fixit-var(secondary);
|
||||
background-color: darken($header-background-color, 3%);
|
||||
transition: color 0.4s ease;
|
||||
@include border-radius(full);
|
||||
@include blur;
|
||||
@extend .print-d-none;
|
||||
|
||||
[data-theme=dark] & {
|
||||
background-color: darken($header-background-color-dark, 3%);
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
color: fixit-var(global-font-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&:active,
|
||||
&:focus,
|
||||
&:hover {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
.back-to-top {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
@include set-fixit-vars((
|
||||
// Ring stroke width
|
||||
b2t-stroke: 0.5rem,
|
||||
// Progress color
|
||||
b2t-prog: fixit-var(success),
|
||||
// dasharray = circumference = 2πr
|
||||
// dashoffset = circumference * (1 - scrollPercent / 100)
|
||||
b2t-dasharray: 314.15
|
||||
));
|
||||
|
||||
[data-theme=dark] & {
|
||||
@include set-fixit-var(b2t-prog, fixit-var(global-font-color));
|
||||
}
|
||||
|
||||
// SVG circular progress ring
|
||||
svg {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
// Rotate to start from top
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
|
||||
.bg {
|
||||
fill: none;
|
||||
stroke: fixit-var(global-border-color-light);
|
||||
stroke-width: fixit-var(b2t-stroke);
|
||||
}
|
||||
|
||||
// Progress ring
|
||||
.progress {
|
||||
fill: none;
|
||||
stroke: fixit-var(b2t-prog);
|
||||
stroke-width: fixit-var(b2t-stroke);
|
||||
stroke-linecap: round;
|
||||
stroke-dasharray: fixit-var(b2t-dasharray);
|
||||
stroke-dashoffset: calc(#{fixit-var(b2t-dasharray)} * (1 - #{fixit-var(b2t-progress, 0)} / 100));
|
||||
transition: stroke-dashoffset .1s linear;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
@keyframes octocat-wave {
|
||||
0%,
|
||||
100% {
|
||||
transform: rotate(0);
|
||||
}
|
||||
20%,
|
||||
60% {
|
||||
transform: rotate(-25deg);
|
||||
}
|
||||
40%,
|
||||
80% {
|
||||
transform: rotate(10deg);
|
||||
}
|
||||
}
|
||||
|
||||
.github-corner {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
@include z-index(fixed);
|
||||
@extend .print-d-none;
|
||||
|
||||
:hover .octo-arm {
|
||||
animation: octocat-wave 560ms ease-in-out;
|
||||
}
|
||||
svg {
|
||||
width: fixit-var(header-height);
|
||||
height: fixit-var(header-height);
|
||||
border: 0;
|
||||
color: fixit-var(github-corner-color);
|
||||
fill: fixit-var(github-corner-fill);
|
||||
}
|
||||
&.left {
|
||||
left: 0;
|
||||
|
||||
svg {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
}
|
||||
&.right {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
@@ -17,11 +17,12 @@ img.emoji {
|
||||
vertical-align: -0.1em;
|
||||
}
|
||||
|
||||
.hugo-icon,
|
||||
.fixit-icon {
|
||||
display: inline-block;
|
||||
height: 1.5em;
|
||||
width: 1.5em;
|
||||
line-height: 1.5em;
|
||||
height: 1.2em;
|
||||
width: 1.2em;
|
||||
line-height: 1.2em;
|
||||
position: relative;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
@import 'cookieconsent';
|
||||
@import 'details';
|
||||
@import 'fixed-button';
|
||||
@import 'github-corner';
|
||||
@import 'icon';
|
||||
@import 'mask';
|
||||
@import 'noscript-warning';
|
||||
@import 'post-chat';
|
||||
@import 'reading-progress';
|
||||
@import 'scrollbar';
|
||||
@import 'typeit';
|
||||
@@ -7,10 +7,10 @@
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
@include z-index(0, -1);
|
||||
@include z-index(hide);
|
||||
|
||||
.blur & {
|
||||
@include z-index(1);
|
||||
@include z-index(fixed, -1);
|
||||
background-color: rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
}
|
||||
+2
-6
@@ -1,5 +1,5 @@
|
||||
.noscript-warning {
|
||||
background-color: var(--#{$prefix}danger);
|
||||
background-color: fixit-var(danger);
|
||||
color: white;
|
||||
font-size: 1rem;
|
||||
font-weight: bold;
|
||||
@@ -8,9 +8,5 @@
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
@include z-index(2);
|
||||
|
||||
[data-theme='dark'] & {
|
||||
background-color: var(--#{$prefix}danger-dark);
|
||||
}
|
||||
@include z-index(fixed);
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
#postChat_button,
|
||||
.post-TianliGPT {
|
||||
@extend .print-d-none;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
.reading-progress-bar {
|
||||
height: fixit-var(progress-h, 2px);
|
||||
width: fixit-var(progress, 0);
|
||||
background-color: fixit-var(bg-progress, fixit-var(success));
|
||||
position: fixed;
|
||||
@include z-index(fixed);
|
||||
@extend .print-d-none;
|
||||
|
||||
[data-theme=dark] & {
|
||||
background-color: fixit-var(bg-progress-dark, fixit-var(global-font-color));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/* Modern browsers with `scrollbar-*` support (high priority) */
|
||||
@supports (scrollbar-width: auto) {
|
||||
* {
|
||||
scrollbar-color: fixit-var(scrollbar-thumb-color) fixit-var(scrollbar-track-color);;
|
||||
scrollbar-width: fixit-var(scrollbar-width);
|
||||
}
|
||||
}
|
||||
|
||||
/* Legacy browsers with `::-webkit-scrollbar-*` support */
|
||||
::-webkit-scrollbar {
|
||||
height: fixit-var(scrollbar-width-legacy);
|
||||
width: fixit-var(scrollbar-width-legacy);
|
||||
overflow: visible;
|
||||
}
|
||||
::-webkit-scrollbar-button {
|
||||
height: 0;
|
||||
width: 0;
|
||||
}
|
||||
::-webkit-scrollbar-corner {
|
||||
background-color: fixit-var(scrollbar-track-color);
|
||||
}
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: fixit-var(scrollbar-thumb-color);
|
||||
&:hover {
|
||||
background-color: fixit-var(scrollbar-thumb-hover-color);
|
||||
}
|
||||
}
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: fixit-var(scrollbar-track-color);
|
||||
}
|
||||
::-webkit-scrollbar-thumb,
|
||||
::-webkit-scrollbar-track {
|
||||
background-clip: padding-box;
|
||||
border: 3px solid transparent;
|
||||
@include border-radius(full);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
.typeit {
|
||||
.highlight {
|
||||
padding: 0.375rem;
|
||||
font-size: 0.875rem;
|
||||
font-family: fixit-var(code-font-family);
|
||||
font-weight: bold;
|
||||
word-break: break-all;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
--ti-cursor-font-family: fixit-var(global-font-family);
|
||||
--ti-cursor-transform: translateX(0);
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
// Color map of admonitions
|
||||
$admonition-color-map: (
|
||||
note: (
|
||||
color: #448aff,
|
||||
bg-color: rgba(68, 138, 255, 0.1),
|
||||
),
|
||||
abstract: (
|
||||
color: #00b0ff,
|
||||
bg-color: rgba(0, 176, 255, 0.1),
|
||||
),
|
||||
info: (
|
||||
color: #00b8d4,
|
||||
bg-color: rgba(0, 184, 212, 0.1),
|
||||
),
|
||||
todo: (
|
||||
color: #5e9aff,
|
||||
bg-color: rgba(94, 154, 255, 0.1),
|
||||
),
|
||||
tip: (
|
||||
color: #00bfa5,
|
||||
bg-color: rgba(0, 191, 165, 0.1),
|
||||
),
|
||||
success: (
|
||||
color: #00c853,
|
||||
bg-color: rgba(0, 200, 83, 0.1),
|
||||
),
|
||||
question: (
|
||||
color: #ffbd67,
|
||||
bg-color: rgba(255, 190, 0, 0.1),
|
||||
),
|
||||
warning: (
|
||||
color: #ff9100,
|
||||
bg-color: rgba(255, 145, 0, 0.1),
|
||||
),
|
||||
failure: (
|
||||
color: #ff5252,
|
||||
bg-color: rgba(255, 82, 82, 0.1),
|
||||
),
|
||||
danger: (
|
||||
color: #ff1744,
|
||||
bg-color: rgba(255, 23, 68, 0.1),
|
||||
),
|
||||
bug: (
|
||||
color: #f50057,
|
||||
bg-color: rgba(245, 0, 87, 0.1),
|
||||
),
|
||||
example: (
|
||||
color: #651fff,
|
||||
bg-color: rgba(101, 31, 255, 0.1),
|
||||
),
|
||||
quote: (
|
||||
color: #9e9e9e,
|
||||
bg-color: rgba(159, 159, 159, 0.1),
|
||||
),
|
||||
) !default;
|
||||
@@ -0,0 +1,46 @@
|
||||
// Color map of basic alerts
|
||||
$alert-color-map: (
|
||||
note: (
|
||||
border-color: #0969da,
|
||||
color: #0969da,
|
||||
),
|
||||
tip: (
|
||||
border-color: #1a7f37,
|
||||
color: #1a7f37,
|
||||
),
|
||||
important: (
|
||||
border-color: #8250df,
|
||||
color: #8250df,
|
||||
),
|
||||
warning: (
|
||||
border-color: #bf8700,
|
||||
color: #9a6700,
|
||||
),
|
||||
caution: (
|
||||
border-color: #cf222e,
|
||||
color: #d1242f,
|
||||
),
|
||||
) !default;
|
||||
|
||||
$alert-color-map-dark: (
|
||||
note: (
|
||||
border-color: #316dca,
|
||||
color: #478be6,
|
||||
),
|
||||
tip: (
|
||||
border-color: #347d39,
|
||||
color: #57ab5a,
|
||||
),
|
||||
important: (
|
||||
border-color: #8256d0,
|
||||
color: #986ee2,
|
||||
),
|
||||
warning: (
|
||||
border-color: #966600,
|
||||
color: #c69026,
|
||||
),
|
||||
caution: (
|
||||
border-color: #c93c37,
|
||||
color: #e5534b,
|
||||
),
|
||||
) !default;
|
||||
@@ -1,235 +1,285 @@
|
||||
// Code type map
|
||||
/**
|
||||
* Map of code identifiers/languages to Chroma supported languages.
|
||||
*
|
||||
* @generator https://github.com/hugo-fixit/.tools/blob/main/tampermonkey/code-type-map-fetcher.user.js
|
||||
*/
|
||||
$code-type-map: (
|
||||
// Chroma supported languages
|
||||
// @generator https://github.com/hugo-fixit/.tools/blob/main/tampermonkey/code-type-map-fetcher.user.js
|
||||
"1s": "OnesEnterprise",
|
||||
"1s\\:enterprise": "OnesEnterprise",
|
||||
"abap": "ABAP",
|
||||
"abl": "OpenEdge ABL",
|
||||
"abnf": "ABNF",
|
||||
"as": "ActionScript",
|
||||
"aconf": "ApacheConf",
|
||||
"actionscript": "ActionScript",
|
||||
"as3": "ActionScript 3",
|
||||
"actionscript3": "ActionScript 3",
|
||||
"ada": "Ada",
|
||||
"ada95": "Ada",
|
||||
"ada2005": "Ada",
|
||||
"ada95": "Ada",
|
||||
"agda": "Agda",
|
||||
"ahk": "AutoHotkey",
|
||||
"al": "AL",
|
||||
"ng2": "Angular2",
|
||||
"alloy": "Alloy",
|
||||
"antlr": "ANTLR",
|
||||
"apacheconf": "ApacheConf",
|
||||
"aconf": "ApacheConf",
|
||||
"apache": "ApacheConf",
|
||||
"apacheconf": "ApacheConf",
|
||||
"apl": "APL",
|
||||
"applescript": "AppleScript",
|
||||
"aql": "ArangoDB AQL",
|
||||
"arduino": "Arduino",
|
||||
"arexx": "Rexx",
|
||||
"armasm": "ArmAsm",
|
||||
"as": "ActionScript",
|
||||
"as3": "ActionScript 3",
|
||||
"asm": "GAS",
|
||||
"atl": "ATL",
|
||||
"autohotkey": "AutoHotkey",
|
||||
"autoit": "AutoIt",
|
||||
"awk": "Awk",
|
||||
"gawk": "Awk",
|
||||
"mawk": "Awk",
|
||||
"nawk": "Awk",
|
||||
"b3d": "BlitzBasic",
|
||||
"ballerina": "Ballerina",
|
||||
"make": "Base Makefile",
|
||||
"makefile": "Base Makefile",
|
||||
"mf": "Base Makefile",
|
||||
"bsdmake": "Base Makefile",
|
||||
"bash": "Bash",
|
||||
"sh": "Bash",
|
||||
"ksh": "Bash",
|
||||
"zsh": "Bash",
|
||||
"shell": "Bash",
|
||||
"bash-session": "BashSession",
|
||||
"console": "BashSession",
|
||||
"shell-session": "BashSession",
|
||||
"bash-session": "Bash Session",
|
||||
"basic": "QBasic",
|
||||
"bat": "Batchfile",
|
||||
"batch": "Batchfile",
|
||||
"dosbatch": "Batchfile",
|
||||
"winbatch": "Batchfile",
|
||||
"beef": "Beef",
|
||||
"bf": "Brainfuck",
|
||||
"bib": "BibTeX",
|
||||
"bibtex": "BibTeX",
|
||||
"bicep": "Bicep",
|
||||
"bind": "Dns",
|
||||
"blitzbasic": "BlitzBasic",
|
||||
"b3d": "BlitzBasic",
|
||||
"bplus": "BlitzBasic",
|
||||
"bnf": "BNF",
|
||||
"bplus": "BlitzBasic",
|
||||
"bqn": "BQN",
|
||||
"brainfuck": "Brainfuck",
|
||||
"bf": "Brainfuck",
|
||||
"bsdmake": "Makefile",
|
||||
"c": "C",
|
||||
"csharp": "C#",
|
||||
"c\\#": "C#",
|
||||
"cpp": "C++",
|
||||
"c\\+\\+": "C++",
|
||||
"caddyfile": "Caddyfile",
|
||||
"caddy": "Caddyfile",
|
||||
"caddyfile-directives": "Caddyfile Directives",
|
||||
"caddyfile-d": "Caddyfile Directives",
|
||||
"caddy-d": "Caddyfile Directives",
|
||||
"caddyfile": "Caddyfile",
|
||||
"caddyfile-d": "Caddyfile Directives",
|
||||
"caddyfile-directives": "Caddyfile Directives",
|
||||
"capnp": "Cap'n Proto",
|
||||
"cassandra": "Cassandra CQL",
|
||||
"cql": "Cassandra CQL",
|
||||
"cassette": "VHS",
|
||||
"ceylon": "Ceylon",
|
||||
"cfengine3": "CFEngine3",
|
||||
"cf3": "CFEngine3",
|
||||
"cfs": "cfstatement",
|
||||
"cfengine3": "CFEngine3",
|
||||
"cfg": "INI",
|
||||
"cfs": "Cfstatement",
|
||||
"chai": "ChaiScript",
|
||||
"chaiscript": "ChaiScript",
|
||||
"chapel": "Chapel",
|
||||
"cheetah": "Cheetah",
|
||||
"spitfire": "Cheetah",
|
||||
"clojure": "Clojure",
|
||||
"chpl": "Chapel",
|
||||
"cl": "Common Lisp",
|
||||
"clj": "Clojure",
|
||||
"clojure": "Clojure",
|
||||
"cmake": "CMake",
|
||||
"cobol": "COBOL",
|
||||
"coffee": "CoffeeScript",
|
||||
"coffee-script": "CoffeeScript",
|
||||
"coffeescript": "CoffeeScript",
|
||||
"coffee": "CoffeeScript",
|
||||
"common-lisp": "Common Lisp",
|
||||
"cl": "Common Lisp",
|
||||
"lisp": "Common Lisp",
|
||||
"console": "Bash Session",
|
||||
"containerfile": "Docker",
|
||||
"coq": "Coq",
|
||||
"core": "Core",
|
||||
"cpp": "C++",
|
||||
"cql": "Cassandra CQL",
|
||||
"cr": "Crystal",
|
||||
"crystal": "Crystal",
|
||||
"csh": "Tcsh",
|
||||
"csharp": "C#",
|
||||
"css": "CSS",
|
||||
"csv": "CSV",
|
||||
"cucumber": "Gherkin",
|
||||
"cue": "CUE",
|
||||
"cython": "Cython",
|
||||
"pyx": "Cython",
|
||||
"pyrex": "Cython",
|
||||
"d": "D",
|
||||
"dart": "Dart",
|
||||
"dax": "Dax",
|
||||
"desktop": "Desktop file",
|
||||
"desktop_entry": "Desktop file",
|
||||
"diff": "Diff",
|
||||
"udiff": "Diff",
|
||||
"django": "Django/Jinja",
|
||||
"jinja": "Django/Jinja",
|
||||
"docker": "Docker",
|
||||
"dockerfile": "Docker",
|
||||
"dosbatch": "Batchfile",
|
||||
"dosini": "INI",
|
||||
"dtd": "DTD",
|
||||
"duby": "Ruby",
|
||||
"dylan": "Dylan",
|
||||
"ebnf": "EBNF",
|
||||
"edn": "Clojure",
|
||||
"elisp": "EmacsLisp",
|
||||
"elixir": "Elixir",
|
||||
"ex": "Elixir",
|
||||
"exs": "Elixir",
|
||||
"elm": "Elm",
|
||||
"emacs": "EmacsLisp",
|
||||
"elisp": "EmacsLisp",
|
||||
"emacs-lisp": "EmacsLisp",
|
||||
"erlang": "Erlang",
|
||||
"ex": "Elixir",
|
||||
"exs": "Elixir",
|
||||
"f90": "Fortran",
|
||||
"factor": "Factor",
|
||||
"fennel": "Fennel",
|
||||
"fnl": "Fennel",
|
||||
"fish": "Fish",
|
||||
"fishshell": "Fish",
|
||||
"fnl": "Fennel",
|
||||
"forth": "Forth",
|
||||
"fortran": "Fortran",
|
||||
"fortranfixed": "FortranFixed",
|
||||
"fsharp": "FSharp",
|
||||
"gas": "GAS",
|
||||
"asm": "GAS",
|
||||
"gdscript": "GDScript",
|
||||
"gawk": "Awk",
|
||||
"gd": "GDScript",
|
||||
"gd3": "GDScript3",
|
||||
"gdscript": "GDScript",
|
||||
"gdscript3": "GDScript3",
|
||||
"gemini": "Gemtext",
|
||||
"gemtext": "Gemtext",
|
||||
"genshi": "Genshi",
|
||||
"kid": "Genshi",
|
||||
"xml\\+genshi": "Genshi",
|
||||
"xml\\+kid": "Genshi",
|
||||
"html\\+genshi": "Genshi HTML",
|
||||
"html\\+kid": "Genshi HTML",
|
||||
"genshitext": "Genshi Text",
|
||||
"cucumber": "Gherkin",
|
||||
"Cucumber": "Gherkin",
|
||||
"gherkin": "Gherkin",
|
||||
"Gherkin": "Gherkin",
|
||||
"gleam": "Gleam",
|
||||
"glsl": "GLSL",
|
||||
"gmi": "Gemtext",
|
||||
"gmni": "Gemtext",
|
||||
"gnuplot": "Gnuplot",
|
||||
"go": "Go",
|
||||
"golang": "Go",
|
||||
"go-html-template": "Go HTML Template",
|
||||
"go-template": "Go Template",
|
||||
"go-text-template": "Go Text Template",
|
||||
"golang": "Go",
|
||||
"gql": "GraphQL",
|
||||
"graphql": "GraphQL",
|
||||
"graphqls": "GraphQL",
|
||||
"gql": "GraphQL",
|
||||
"groff": "Groff",
|
||||
"nroff": "Groff",
|
||||
"man": "Groff",
|
||||
"groovy": "Groovy",
|
||||
"gsed": "Sed",
|
||||
"handlebars": "Handlebars",
|
||||
"hbs": "Handlebars",
|
||||
"hare": "Hare",
|
||||
"haskell": "Haskell",
|
||||
"hs": "Haskell",
|
||||
"hx": "Haxe",
|
||||
"haxe": "Haxe",
|
||||
"hxsl": "Haxe",
|
||||
"hcl": "HCL",
|
||||
"hbs": "Handlebars",
|
||||
"hcl": "Terraform",
|
||||
"hexdump": "Hexdump",
|
||||
"hlb": "HLB",
|
||||
"hlsl": "HLSL",
|
||||
"holyc": "HolyC",
|
||||
"hs": "Haskell",
|
||||
"html": "HTML",
|
||||
"html\\+genshi": "Genshi HTML",
|
||||
"html\\+kid": "Genshi HTML",
|
||||
"http": "HTTP",
|
||||
"hx": "Haxe",
|
||||
"hxsl": "Haxe",
|
||||
"hylang": "Hy",
|
||||
"idris": "Idris",
|
||||
"idr": "Idris",
|
||||
"idris": "Idris",
|
||||
"igor": "Igor",
|
||||
"igorpro": "Igor",
|
||||
"ini": "INI",
|
||||
"cfg": "INI",
|
||||
"dosini": "INI",
|
||||
"io": "Io",
|
||||
"iscdhcpd": "ISCdhcpd",
|
||||
"j": "J",
|
||||
"janet": "Janet",
|
||||
"java": "Java",
|
||||
"js": "JavaScript",
|
||||
"java-properties": "Properties",
|
||||
"javascript": "JavaScript",
|
||||
"json": "JSON",
|
||||
"julia": "Julia",
|
||||
"jinja": "Django/Jinja",
|
||||
"jl": "Julia",
|
||||
"js": "JavaScript",
|
||||
"json": "JSON",
|
||||
"jsonata": "JSONata",
|
||||
"jsonnet": "Jsonnet",
|
||||
"jsx": "React",
|
||||
"julia": "Julia",
|
||||
"jungle": "Jungle",
|
||||
"kid": "Genshi",
|
||||
"kotlin": "Kotlin",
|
||||
"lighty": "Lighttpd configuration file",
|
||||
"ksh": "Bash",
|
||||
"latex": "TeX",
|
||||
"lean": "Lean4",
|
||||
"lean4": "Lean4",
|
||||
"lighttpd": "Lighttpd configuration file",
|
||||
"lighty": "Lighttpd configuration file",
|
||||
"lisp": "Common Lisp",
|
||||
"llvm": "LLVM",
|
||||
"lua": "Lua",
|
||||
"luau": "Lua",
|
||||
"m2": "Modula-2",
|
||||
"make": "Makefile",
|
||||
"makefile": "Makefile",
|
||||
"mako": "Mako",
|
||||
"md": "markdown",
|
||||
"mkd": "markdown",
|
||||
"man": "Groff",
|
||||
"mariadb": "MySQL",
|
||||
"mason": "Mason",
|
||||
"materialize": "Materialize SQL dialect",
|
||||
"mathematica": "Mathematica",
|
||||
"mma": "Mathematica",
|
||||
"nb": "Mathematica",
|
||||
"matlab": "Matlab",
|
||||
"mcfunction": "mcfunction",
|
||||
"mawk": "Awk",
|
||||
"mcf": "MCFunction",
|
||||
"mcfunction": "MCFunction",
|
||||
"md": "Markdown",
|
||||
"meson": "Meson",
|
||||
"meson\\.build": "Meson",
|
||||
"metal": "Metal",
|
||||
"mf": "Makefile",
|
||||
"minizinc": "MiniZinc",
|
||||
"MZN": "MiniZinc",
|
||||
"mzn": "MiniZinc",
|
||||
"mkd": "Markdown",
|
||||
"mlir": "MLIR",
|
||||
"mma": "Mathematica",
|
||||
"modula2": "Modula-2",
|
||||
"m2": "Modula-2",
|
||||
"mojo": "Mojo",
|
||||
"monkeyc": "MonkeyC",
|
||||
"moon": "MoonScript",
|
||||
"moonscript": "MoonScript",
|
||||
"morrowind": "MorrowindScript",
|
||||
"mwscript": "MorrowindScript",
|
||||
"myghty": "Myghty",
|
||||
"mysql": "MySQL",
|
||||
"mariadb": "MySQL",
|
||||
"mzn": "MiniZinc",
|
||||
"mzsql": "Materialize SQL dialect",
|
||||
"nasm": "NASM",
|
||||
"natural": "Natural",
|
||||
"nawk": "Awk",
|
||||
"nb": "Mathematica",
|
||||
"ndisasm": "NDISASM",
|
||||
"newspeak": "Newspeak",
|
||||
"ng2": "Angular2",
|
||||
"nginx": "Nginx configuration file",
|
||||
"nim": "Nim",
|
||||
"nimrod": "Nim",
|
||||
"nixos": "Nix",
|
||||
"nix": "Nix",
|
||||
"objective-c": "Objective-C",
|
||||
"objectivec": "Objective-C",
|
||||
"nixos": "Nix",
|
||||
"no-highlight": "Plaintext",
|
||||
"nroff": "Groff",
|
||||
"nsh": "NSIS",
|
||||
"nsi": "NSIS",
|
||||
"nsis": "NSIS",
|
||||
"nu": "Nu",
|
||||
"obj-c": "Objective-C",
|
||||
"objc": "Objective-C",
|
||||
"objective-c": "Objective-C",
|
||||
"objectivec": "Objective-C",
|
||||
"objectpascal": "ObjectPascal",
|
||||
"ocaml": "OCaml",
|
||||
"octave": "Octave",
|
||||
"odin": "Odin",
|
||||
"ones": "OnesEnterprise",
|
||||
"onesenterprise": "OnesEnterprise",
|
||||
"1S": "OnesEnterprise",
|
||||
"1S:Enterprise": "OnesEnterprise",
|
||||
"openedge": "OpenEdge ABL",
|
||||
"abl": "OpenEdge ABL",
|
||||
"progress": "OpenEdge ABL",
|
||||
"openedgeabl": "OpenEdge ABL",
|
||||
"openscad": "OpenSCAD",
|
||||
"org": "Org Mode",
|
||||
"orgmode": "Org Mode",
|
||||
"pacmanconf": "PacmanConf",
|
||||
"perl": "Perl",
|
||||
"pl": "Perl",
|
||||
"perl6": "Raku",
|
||||
"php": "PHP",
|
||||
"php3": "PHP",
|
||||
"php4": "PHP",
|
||||
@@ -237,137 +287,166 @@ $code-type-map: (
|
||||
"phtml": "PHTML",
|
||||
"pig": "Pig",
|
||||
"pkgconfig": "PkgConfig",
|
||||
"plpgsql": "PL/pgSQL",
|
||||
"text": "plaintext",
|
||||
"plain": "plaintext",
|
||||
"no-highlight": "plaintext",
|
||||
"plutus-core": "Plutus Core",
|
||||
"pl": "Perl",
|
||||
"pl6": "Raku",
|
||||
"plain": "Plaintext",
|
||||
"plc": "Plutus Core",
|
||||
"plpgsql": "PL/pgSQL",
|
||||
"plutus-core": "Plutus Core",
|
||||
"pony": "Pony",
|
||||
"postgresql": "PostgreSQL SQL dialect",
|
||||
"posh": "PowerShell",
|
||||
"postgres": "PostgreSQL SQL dialect",
|
||||
"postscript": "PostScript",
|
||||
"postgresql": "PostgreSQL SQL dialect",
|
||||
"postscr": "PostScript",
|
||||
"postscript": "PostScript",
|
||||
"pov": "POVRay",
|
||||
"powerquery": "PowerQuery",
|
||||
"pq": "PowerQuery",
|
||||
"powershell": "PowerShell",
|
||||
"posh": "PowerShell",
|
||||
"ps1": "PowerShell",
|
||||
"psm1": "PowerShell",
|
||||
"psd1": "PowerShell",
|
||||
"pq": "PowerQuery",
|
||||
"progress": "OpenEdge ABL",
|
||||
"prolog": "Prolog",
|
||||
"promela": "Promela",
|
||||
"promql": "PromQL",
|
||||
"protobuf": "Protocol Buffer",
|
||||
"proto": "Protocol Buffer",
|
||||
"protobuf": "Protocol Buffer",
|
||||
"prql": "PRQL",
|
||||
"ps1": "PowerShell",
|
||||
"psd1": "PowerShell",
|
||||
"psl": "PSL",
|
||||
"psm1": "PowerShell",
|
||||
"puppet": "Puppet",
|
||||
"python": "Python",
|
||||
"pwsh": "PowerShell",
|
||||
"py": "Python",
|
||||
"sage": "Python",
|
||||
"python3": "Python",
|
||||
"py3": "Python",
|
||||
"python2": "Python 2",
|
||||
"py2": "Python 2",
|
||||
"py3": "Python",
|
||||
"pyrex": "Cython",
|
||||
"python": "Python",
|
||||
"python2": "Python 2",
|
||||
"python3": "Python",
|
||||
"pyx": "Cython",
|
||||
"qbasic": "QBasic",
|
||||
"basic": "QBasic",
|
||||
"qml": "QML",
|
||||
"qbs": "QML",
|
||||
"splus": "R",
|
||||
"s": "R",
|
||||
"qml": "QML",
|
||||
"r": "R",
|
||||
"racket": "Racket",
|
||||
"rkt": "Racket",
|
||||
"ragel": "Ragel",
|
||||
"perl6": "Raku",
|
||||
"pl6": "Raku",
|
||||
"raku": "Raku",
|
||||
"jsx": "react",
|
||||
"react": "react",
|
||||
"rb": "Ruby",
|
||||
"react": "React",
|
||||
"reason": "ReasonML",
|
||||
"reasonml": "ReasonML",
|
||||
"registry": "reg",
|
||||
"rst": "reStructuredText",
|
||||
"rest": "reStructuredText",
|
||||
"restructuredtext": "reStructuredText",
|
||||
"registry": "Reg",
|
||||
"rego": "Rego",
|
||||
"rest": "ReStructuredText",
|
||||
"restructuredtext": "ReStructuredText",
|
||||
"rexx": "Rexx",
|
||||
"arexx": "Rexx",
|
||||
"rb": "Ruby",
|
||||
"ruby": "Ruby",
|
||||
"duby": "Ruby",
|
||||
"rust": "Rust",
|
||||
"rkt": "Racket",
|
||||
"rs": "Rust",
|
||||
"rst": "ReStructuredText",
|
||||
"ruby": "Ruby",
|
||||
"rust": "Rust",
|
||||
"s": "R",
|
||||
"sage": "Python",
|
||||
"sas": "SAS",
|
||||
"sass": "Sass",
|
||||
"scala": "Scala",
|
||||
"scheme": "Scheme",
|
||||
"scm": "Scheme",
|
||||
"scilab": "Scilab",
|
||||
"scm": "Scheme",
|
||||
"scss": "SCSS",
|
||||
"sed": "Sed",
|
||||
"sh": "Bash",
|
||||
"shell": "Bash",
|
||||
"shell-session": "Bash Session",
|
||||
"sieve": "Sieve",
|
||||
"smali": "Smali",
|
||||
"smalltalk": "Smalltalk",
|
||||
"squeak": "Smalltalk",
|
||||
"st": "Smalltalk",
|
||||
"smarty": "Smarty",
|
||||
"sml": "Standard ML",
|
||||
"snbt": "SNBT",
|
||||
"snobol": "Snobol",
|
||||
"sol": "Solidity",
|
||||
"solidity": "Solidity",
|
||||
"sp": "SourcePawn",
|
||||
"sparql": "SPARQL",
|
||||
"spec": "RPMSpec",
|
||||
"spitfire": "Cheetah",
|
||||
"splus": "R",
|
||||
"sql": "SQL",
|
||||
"squidconf": "SquidConf",
|
||||
"squid\\.conf": "SquidConf",
|
||||
"sqlrpgle": "RPGLE",
|
||||
"squeak": "Smalltalk",
|
||||
"squid": "SquidConf",
|
||||
"sml": "Standard ML",
|
||||
"squid\\.conf": "SquidConf",
|
||||
"squidconf": "SquidConf",
|
||||
"ssed": "Sed",
|
||||
"st": "Smalltalk",
|
||||
"stylus": "Stylus",
|
||||
"sv": "Systemverilog",
|
||||
"svelte": "Svelte",
|
||||
"swift": "Swift",
|
||||
"systemd": "SYSTEMD",
|
||||
"systemverilog": "systemverilog",
|
||||
"sv": "systemverilog",
|
||||
"systemverilog": "Systemverilog",
|
||||
"t-sql": "Transact-SQL",
|
||||
"tablegen": "TableGen",
|
||||
"tal": "Tal",
|
||||
"tape": "VHS",
|
||||
"tasm": "TASM",
|
||||
"tcl": "Tcl",
|
||||
"tcsh": "Tcsh",
|
||||
"csh": "Tcsh",
|
||||
"termcap": "Termcap",
|
||||
"terminfo": "Terminfo",
|
||||
"terraform": "Terraform",
|
||||
"tf": "Terraform",
|
||||
"tex": "TeX",
|
||||
"latex": "TeX",
|
||||
"text": "Plaintext",
|
||||
"tf": "Terraform",
|
||||
"thrift": "Thrift",
|
||||
"toml": "TOML",
|
||||
"tradingview": "TradingView",
|
||||
"tv": "TradingView",
|
||||
"ts": "TypeScript",
|
||||
"tsql": "Transact-SQL",
|
||||
"t-sql": "Transact-SQL",
|
||||
"tsx": "TypeScript",
|
||||
"turing": "Turing",
|
||||
"turtle": "Turtle",
|
||||
"tv": "TradingView",
|
||||
"twig": "Twig",
|
||||
"ts": "TypeScript",
|
||||
"tsx": "TypeScript",
|
||||
"typescript": "TypeScript",
|
||||
"typoscript": "TypoScript",
|
||||
"typoscriptcssdata": "TypoScriptCssData",
|
||||
"typoscripthtmldata": "TypoScriptHtmlData",
|
||||
"v": "verilog",
|
||||
"typst": "Typst",
|
||||
"udiff": "Diff",
|
||||
"uxntal": "Tal",
|
||||
"v": "Verilog",
|
||||
"vala": "Vala",
|
||||
"vapi": "Vala",
|
||||
"vb\\.net": "VB.net",
|
||||
"vbnet": "VB.net",
|
||||
"verilog": "Verilog",
|
||||
"vhdl": "VHDL",
|
||||
"vhs": "VHS",
|
||||
"vim": "VimL",
|
||||
"vlang": "V",
|
||||
"vsh": "V shell",
|
||||
"vshell": "V shell",
|
||||
"vb\\.net": "VB.net",
|
||||
"vbnet": "VB.net",
|
||||
"verilog": "verilog",
|
||||
"vhdl": "VHDL",
|
||||
"vim": "VimL",
|
||||
"vue": "vue",
|
||||
"vuejs": "vue",
|
||||
"vtt": "WebVTT",
|
||||
"vue": "Vue",
|
||||
"vuejs": "Vue",
|
||||
"wgsl": "WebGPU Shading Language",
|
||||
"whiley": "Whiley",
|
||||
"winbatch": "Batchfile",
|
||||
"xml": "XML",
|
||||
"xml\\+genshi": "Genshi",
|
||||
"xml\\+kid": "Genshi",
|
||||
"xorg\\.conf": "Xorg",
|
||||
"yaml": "YAML",
|
||||
"yang": "YANG",
|
||||
"z80": "Z80 Assembly",
|
||||
"zed": "Zed",
|
||||
"zig": "Zig",
|
||||
"zone": "Dns",
|
||||
"zsh": "Bash",
|
||||
"🔥": "Mojo",
|
||||
// Custom code type
|
||||
"markdown": "markdown",
|
||||
"markdown": "Markdown",
|
||||
"yml": "YAML"
|
||||
) !default;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user