Compare commits
1852 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b620a760d | ||
|
|
530174ff79 | ||
|
|
b6bb3691f0 | ||
|
|
6fd5e30fdc | ||
|
|
ba09afb744 | ||
|
|
d04aea6067 | ||
|
|
4ff9be458c | ||
|
|
6f5dbe5808 | ||
|
|
b772e2d9ef | ||
|
|
b75c93231e | ||
|
|
ca20931ed6 | ||
|
|
893df36c9d | ||
|
|
2a6abded08 | ||
|
|
675cdd5bba | ||
|
|
b0150f25f6 | ||
|
|
87cda220ad | ||
|
|
ce90ed84f6 | ||
|
|
2ae843fb3e | ||
|
|
48513efbe0 | ||
|
|
83cb69b794 | ||
|
|
7879a75ba8 | ||
|
|
4682cdb1a8 | ||
|
|
b228246508 | ||
|
|
021e0b34f0 | ||
|
|
2182b3f325 | ||
|
|
b5fbf7ccd8 | ||
|
|
17b8f9bddd | ||
|
|
09229ad5ef | ||
|
|
3dbfa750c9 | ||
|
|
c14dfe0bee | ||
|
|
fa6ba8b1fc | ||
|
|
8854affc4c | ||
|
|
995e07c351 | ||
|
|
40711fa640 | ||
|
|
99212c1186 | ||
|
|
434543ce41 | ||
|
|
b6b19f628c | ||
|
|
bc841a630f | ||
|
|
6f78e8196b | ||
|
|
f3af10e93e | ||
|
|
149403e5c0 | ||
|
|
b24c29b217 | ||
|
|
43460d4198 | ||
|
|
6be4694327 | ||
|
|
308a8ab30d | ||
|
|
51f7694788 | ||
|
|
dca5885ef1 | ||
|
|
8cf4b612d5 | ||
|
|
6b49464059 | ||
|
|
034238716a | ||
|
|
7575c5acfa | ||
|
|
af7aa7d47b | ||
|
|
daf70b6da4 | ||
|
|
819dd01d60 | ||
|
|
947590ac91 | ||
|
|
71787ece64 | ||
|
|
7a3d566875 | ||
|
|
082f666839 | ||
|
|
a641e90031 | ||
|
|
0396f180ae | ||
|
|
f809c8e538 | ||
|
|
733d74ac36 | ||
|
|
c46d556684 | ||
|
|
d0b3bc8137 | ||
|
|
80ae853582 | ||
|
|
8c405d941b | ||
|
|
79f45b8499 | ||
|
|
6ecf6bfb34 | ||
|
|
2a5a93bdb5 | ||
|
|
dee6503e33 | ||
|
|
3b0123f2be | ||
|
|
74d7b2b280 | ||
|
|
712623806a | ||
|
|
ecb4fda5fc | ||
|
|
1ee577677a | ||
|
|
f091cfd7be | ||
|
|
45eee811c1 | ||
|
|
3af1013c34 | ||
|
|
c2bca6fc3f | ||
|
|
226a12df40 | ||
|
|
ab7286a87a | ||
|
|
c43fd88c7c | ||
|
|
21871626f3 | ||
|
|
8ce09ecf79 | ||
|
|
ef2df85faf | ||
|
|
77ec8c7a81 | ||
|
|
06f6ab355e | ||
|
|
5e1761c47a | ||
|
|
ed63297814 | ||
|
|
3db7d6ce63 | ||
|
|
aa5f31ee70 | ||
|
|
c3379e9737 | ||
|
|
ef32172359 | ||
|
|
c2381deb9f | ||
|
|
5753d4ff07 | ||
|
|
71437a2122 | ||
|
|
93005518d2 | ||
|
|
da04cfc683 | ||
|
|
c60eea73fc | ||
|
|
bdb092bda9 | ||
|
|
84317a4217 | ||
|
|
6dd9d94e86 | ||
|
|
1ffcfe643c | ||
|
|
87c11eda46 | ||
|
|
9613141527 | ||
|
|
a820d9129b | ||
|
|
fd7279b528 | ||
|
|
8e5ffa81a1 | ||
|
|
95f6635591 | ||
|
|
7a1208a04f | ||
|
|
06668d9415 | ||
|
|
708928ab26 | ||
|
|
78f04c4b4b | ||
|
|
af20a6c821 | ||
|
|
3c4ee302e7 | ||
|
|
0987ba3575 | ||
|
|
2b0564211d | ||
|
|
174b2b9fa3 | ||
|
|
dc9c08ed30 | ||
|
|
2abbace470 | ||
|
|
c3511fe27e | ||
|
|
913e1728e0 | ||
|
|
d0ea7f3fd9 | ||
|
|
c1201fbd96 | ||
|
|
f862a3d8a1 | ||
|
|
120a12edde | ||
|
|
a484fc2d39 | ||
|
|
229264f2d0 | ||
|
|
06f4898ce8 | ||
|
|
476d2f7e81 | ||
|
|
01c8304c8b | ||
|
|
e002588949 | ||
|
|
017656f592 | ||
|
|
526d2c7085 | ||
|
|
86e90cfe7e | ||
|
|
e97d815dc3 | ||
|
|
65ebdb61d0 | ||
|
|
cb5bccc945 | ||
|
|
8b53cd0a09 | ||
|
|
3d7a0d9b0d | ||
|
|
114844ad48 | ||
|
|
f83f709080 | ||
|
|
999a6e7c6e | ||
|
|
2fd4c0b2ea | ||
|
|
16d62642f6 | ||
|
|
96a0ce8c5f | ||
|
|
7703d8157c | ||
|
|
87aa4e902c | ||
|
|
c86f32fab5 | ||
|
|
f85ac34753 | ||
|
|
f58d4fcb7e | ||
|
|
675c32cee3 | ||
|
|
de011b35db | ||
|
|
288a7ebc20 | ||
|
|
d7c3167ecd | ||
|
|
3205ae3ebe | ||
|
|
2ba609fb78 | ||
|
|
7e70b1b7ab | ||
|
|
561bdf4137 | ||
|
|
22a2bb65c8 | ||
|
|
c4f6db9f9f | ||
|
|
e5d2140ea3 | ||
|
|
83e57deec3 | ||
|
|
fc357a03e5 | ||
|
|
f031077fbd | ||
|
|
02de63210d | ||
|
|
98610e3e0d | ||
|
|
bb6cfd9d0e | ||
|
|
57c6d7e8f3 | ||
|
|
6d8b850b15 | ||
|
|
db6c3ea36c | ||
|
|
0ddf7ab070 | ||
|
|
93686bd354 | ||
|
|
89e4a68a03 | ||
|
|
204719caf8 | ||
|
|
267f53942b | ||
|
|
7ae9bbc4f0 | ||
|
|
717b460246 | ||
|
|
d52a814d77 | ||
|
|
6e1503334e | ||
|
|
34a33f87b2 | ||
|
|
03d885d391 | ||
|
|
c50b25997d | ||
|
|
3adcc894b7 | ||
|
|
8a73ad63ee | ||
|
|
69b5b2b900 | ||
|
|
97075fc167 | ||
|
|
bde70a2e26 | ||
|
|
2e05c8079b | ||
|
|
357191afcf | ||
|
|
8352ba335b | ||
|
|
7ae3e402cf | ||
|
|
c5e62cc8e4 | ||
|
|
ddb0befa4d | ||
|
|
82c19f3512 | ||
|
|
e95552b47a | ||
|
|
50ffcc6e92 | ||
|
|
43beb1df95 | ||
|
|
3cef928b75 | ||
|
|
6f5d62f1f9 | ||
|
|
e3a385c989 | ||
|
|
12356abf00 | ||
|
|
50e76496a2 | ||
|
|
a98bf08b2d | ||
|
|
697fd57bc7 | ||
|
|
7a691fe4e7 | ||
|
|
3822ab20d5 | ||
|
|
88f261584f | ||
|
|
62db4508da | ||
|
|
122acc7ad3 | ||
|
|
c15927cca0 | ||
|
|
b5b2de30a2 | ||
|
|
aebce53450 | ||
|
|
3c261a2c29 | ||
|
|
6a6a3bd463 | ||
|
|
ae62847ded | ||
|
|
c873787a89 | ||
|
|
410ff78ef5 | ||
|
|
ed53fbae93 | ||
|
|
a3d8aa6a33 | ||
|
|
24d03431c4 | ||
|
|
1d40d4a329 | ||
|
|
564896d99d | ||
|
|
2b2e25202d | ||
|
|
9055b95d00 | ||
|
|
5a8eb5b10e | ||
|
|
3e36cb6e31 | ||
|
|
6b4b44aec6 | ||
|
|
91a10c9d28 | ||
|
|
d7fbbd2d28 | ||
|
|
7b171e2c6f | ||
|
|
90ecaa1891 | ||
|
|
842f7401a0 | ||
|
|
77a6c591ff | ||
|
|
9bd3aebd73 | ||
|
|
b70d03e86b | ||
|
|
7d1ff9876f | ||
|
|
2cd8303191 | ||
|
|
21dbaf6db5 | ||
|
|
f9f45d9e32 | ||
|
|
ef5db9ee4b | ||
|
|
a909cdc21c | ||
|
|
b8e546a584 | ||
|
|
c4f54dcddc | ||
|
|
59b5e4a330 | ||
|
|
f8f7275438 | ||
|
|
6eec2e97f9 | ||
|
|
9020494f65 | ||
|
|
43fbc7abd7 | ||
|
|
d65a4b747d | ||
|
|
849fad8a8a | ||
|
|
f0b2d14502 | ||
|
|
fa169fb785 | ||
|
|
49acf7fba3 | ||
|
|
80d55dae8d | ||
|
|
76aa5407a2 | ||
|
|
d70789934f | ||
|
|
398e8b6afc | ||
|
|
593fede47c | ||
|
|
40c7e9c126 | ||
|
|
54e2f70ee0 | ||
|
|
81f85b9e46 | ||
|
|
60a5476e59 | ||
|
|
4271b63530 | ||
|
|
8aca17f0c6 | ||
|
|
4f238dc1a3 | ||
|
|
d4777fde70 | ||
|
|
b6c823c386 | ||
|
|
b7488214fc | ||
|
|
06b6c3f3cb | ||
|
|
abfaf926c4 | ||
|
|
6eabeb09c9 | ||
|
|
a15afabfa7 | ||
|
|
30276d5022 | ||
|
|
683ddc3fce | ||
|
|
f00f79279b | ||
|
|
7989965b1a | ||
|
|
5b84ce307b | ||
|
|
d13264b10e | ||
|
|
29a1c4ae35 | ||
|
|
9ac15e530a | ||
|
|
d4b446280a | ||
|
|
4593898549 | ||
|
|
c030d1a309 | ||
|
|
fd71e471b2 | ||
|
|
bc245e0a7a | ||
|
|
8236461c37 | ||
|
|
e1e8344764 | ||
|
|
14398e083e | ||
|
|
f36fe075ce | ||
|
|
25cf9d7fce | ||
|
|
9355788221 | ||
|
|
64042b51e9 | ||
|
|
7145af48ad | ||
|
|
ddb5468656 | ||
|
|
793cdd8f4c | ||
|
|
faafbb59c6 | ||
|
|
cd0ea07c2f | ||
|
|
f6e3807a3d | ||
|
|
fc36496aee | ||
|
|
1c8881d7a4 | ||
|
|
f6e8aacd0f | ||
|
|
79ddc39492 | ||
|
|
e63c5fb8e5 | ||
|
|
695f4827fd | ||
|
|
5a8b183c0f | ||
|
|
2845a889ed | ||
|
|
6333103050 | ||
|
|
cb6be91538 | ||
|
|
8cdd4b4af5 | ||
|
|
f4ec2029d9 | ||
|
|
b84b0f229f | ||
|
|
ef6a01a32f | ||
|
|
b451b8066a | ||
|
|
57efd516c5 | ||
|
|
d5979e6bf3 | ||
|
|
d75970cb2a | ||
|
|
ad4bb07cd7 | ||
|
|
9c558c3625 | ||
|
|
b467bb6c56 | ||
|
|
5cd021ea85 | ||
|
|
3d64382c9b | ||
|
|
6d5d4354d9 | ||
|
|
1b43446b5c | ||
|
|
7a9984f392 | ||
|
|
3c6fbfb106 | ||
|
|
bab46964ff | ||
|
|
661919f27a | ||
|
|
f3a03349b4 | ||
|
|
29791bf986 | ||
|
|
a06f0f29c6 | ||
|
|
b426d94180 | ||
|
|
5618d87e58 | ||
|
|
721d4f7685 | ||
|
|
7a025bcd38 | ||
|
|
24a8125621 | ||
|
|
468584a906 | ||
|
|
c056ec9377 | ||
|
|
87239994ae | ||
|
|
da09860a53 | ||
|
|
195ee5b2a6 | ||
|
|
32621ee299 | ||
|
|
40645180a0 | ||
|
|
59d4b1e544 | ||
|
|
8962a2c4ac | ||
|
|
6955f35ad1 | ||
|
|
1f722e7d7f | ||
|
|
5e587dfd88 | ||
|
|
2c687e5648 | ||
|
|
fdb0f63283 | ||
|
|
002e675b47 | ||
|
|
114f2a2dd0 | ||
|
|
c314d49e11 | ||
|
|
f5d0556808 | ||
|
|
27bc2a488f | ||
|
|
3a5999c341 | ||
|
|
a80a099ee7 | ||
|
|
68f458738a | ||
|
|
0f08f69738 | ||
|
|
a664066465 | ||
|
|
e6c11665a5 | ||
|
|
c119384c22 | ||
|
|
787cccb89f | ||
|
|
3df5d75c46 | ||
|
|
de6ad2479e | ||
|
|
632dfbaf10 | ||
|
|
68c14c24b8 | ||
|
|
d343d6d54d | ||
|
|
391a160f97 | ||
|
|
2d95110f75 | ||
|
|
e2ced8d36d | ||
|
|
a2b4511602 | ||
|
|
bdccc71b64 | ||
|
|
d7038a7d18 | ||
|
|
3998e1f685 | ||
|
|
5def9d5f81 | ||
|
|
c62937371e | ||
|
|
52843dcf97 | ||
|
|
ef5680d5ad | ||
|
|
bd3f24c84b | ||
|
|
399f85c52e | ||
|
|
14430e5c89 | ||
|
|
b703757d28 | ||
|
|
b642eabbb3 | ||
|
|
673596d8f9 | ||
|
|
b14e927e6c | ||
|
|
b03ae41ac7 | ||
|
|
92a0a9fe2f | ||
|
|
2511acfea1 | ||
|
|
361a4e0414 | ||
|
|
7e310236fe | ||
|
|
8705606c70 | ||
|
|
1f812a5258 | ||
|
|
e9264fa472 | ||
|
|
9164a1aefc | ||
|
|
30351a02ee | ||
|
|
7f918408a6 | ||
|
|
82f69bcad0 | ||
|
|
83b25eabbb | ||
|
|
47da6db51a | ||
|
|
eee092a7fd | ||
|
|
4c0f65fcbc | ||
|
|
acbd979569 | ||
|
|
52b68c18bf | ||
|
|
c6a74a75da | ||
|
|
e39eb62f52 | ||
|
|
4ecec4865d | ||
|
|
589007a22a | ||
|
|
4d4c9516c6 | ||
|
|
8491f26617 | ||
|
|
fcb3768a76 | ||
|
|
966bb769df | ||
|
|
dc8f7caab0 | ||
|
|
683346d652 | ||
|
|
f5fe39b2d2 | ||
|
|
51beb53f51 | ||
|
|
9d3f03c83a | ||
|
|
3eda1e4ef7 | ||
|
|
7181f83d66 | ||
|
|
fffad6e1b8 | ||
|
|
7f3906e5cb | ||
|
|
f836d175f0 | ||
|
|
f49cafc0cc | ||
|
|
a3ecad3436 | ||
|
|
a019dbd44e | ||
|
|
b316f960a1 | ||
|
|
d049b26825 | ||
|
|
852579c6ee | ||
|
|
5adcfa1877 | ||
|
|
f74458629e | ||
|
|
798f9249f8 | ||
|
|
6b4383643f | ||
|
|
256e8d0452 | ||
|
|
4112214c1f | ||
|
|
c183158ffe | ||
|
|
d523790c0f | ||
|
|
615ce34a72 | ||
|
|
1d59b3566c | ||
|
|
8071b90a2b | ||
|
|
8966584ca0 | ||
|
|
822711a530 | ||
|
|
1fe8aeb9e1 | ||
|
|
f021ba8a98 | ||
|
|
e4af05cd56 | ||
|
|
43d1cdb91c | ||
|
|
ed3f66681f | ||
|
|
c718d57e77 | ||
|
|
ce2e88a532 | ||
|
|
e60015a477 | ||
|
|
761e3ac76d | ||
|
|
2cf5535376 | ||
|
|
1a3d76d7b9 | ||
|
|
942a536289 | ||
|
|
fb1f6abf2e | ||
|
|
61ecb421e6 | ||
|
|
0098f9db2f | ||
|
|
2a348a7f18 | ||
|
|
838dff4758 | ||
|
|
7fb78a86ba | ||
|
|
07c815e943 | ||
|
|
9a4392eceb | ||
|
|
dc25e457eb | ||
|
|
d65ed9725c | ||
|
|
41ce095505 | ||
|
|
0e2290ce8a | ||
|
|
1b8db5b7f1 | ||
|
|
0cb42c1117 | ||
|
|
a289fe3da5 | ||
|
|
f53192cfa2 | ||
|
|
235e014542 | ||
|
|
211b05c643 | ||
|
|
3e1bd687f1 | ||
|
|
072fb01a04 | ||
|
|
81fbf4f5ba | ||
|
|
88c86f49bf | ||
|
|
3023214072 | ||
|
|
6ea6f89ab2 | ||
|
|
43c6672ab1 | ||
|
|
5cb56127d5 | ||
|
|
afa333243f | ||
|
|
047e99e27c | ||
|
|
eef6f37ace | ||
|
|
e8ede6e606 | ||
|
|
bfb4ea4123 | ||
|
|
51b0403f64 | ||
|
|
a5cd396de6 | ||
|
|
754bc3d3c9 | ||
|
|
07a2bcfb97 | ||
|
|
20222201ae | ||
|
|
a2a5ddd66c | ||
|
|
7bfc7602a7 | ||
|
|
b52b2cedad | ||
|
|
e93df6ba2c | ||
|
|
f9f29ccc3c | ||
|
|
3bd63ab7c8 | ||
|
|
301ea445bb | ||
|
|
475bee28c6 | ||
|
|
cd69920b41 | ||
|
|
83aab4e47d | ||
|
|
e12093c966 | ||
|
|
f21d546d18 | ||
|
|
26c8a6ba43 | ||
|
|
827bb8ba69 | ||
|
|
d1d2ef37d2 | ||
|
|
659594898b | ||
|
|
7569401fe0 | ||
|
|
dc9c86273d | ||
|
|
0e816e678a | ||
|
|
ff1c2a890c | ||
|
|
b802ad8a75 | ||
|
|
c11fb54b0b | ||
|
|
856dec3991 | ||
|
|
1d8c71da3f | ||
|
|
4152d0f715 | ||
|
|
0ead8cc052 | ||
|
|
2b5ecf3f8a | ||
|
|
de7aeeaeb3 | ||
|
|
994c52f6aa | ||
|
|
c6eb744257 | ||
|
|
4f462c5cfd | ||
|
|
60850970a8 | ||
|
|
3b2d5e45bb | ||
|
|
a604d3223a | ||
|
|
00bd1c45a1 | ||
|
|
4bc6dc7af7 | ||
|
|
3a8effd01f | ||
|
|
da67088e9c | ||
|
|
bacd4d23a3 | ||
|
|
020f667749 | ||
|
|
84652e8c82 | ||
|
|
565ebd936e | ||
|
|
3af127c66f | ||
|
|
849bb04249 | ||
|
|
09d647877f | ||
|
|
c868afbcbf | ||
|
|
3f033bfdec | ||
|
|
eca2f43e0e | ||
|
|
eeb17040f7 | ||
|
|
11dee1ed62 | ||
|
|
11a6232f83 | ||
|
|
9eded24e0e | ||
|
|
7548882148 | ||
|
|
4ad89955d4 | ||
|
|
a53553d658 | ||
|
|
2602cb0998 | ||
|
|
e402de29d5 | ||
|
|
a4cc1cc615 | ||
|
|
2d900baad1 | ||
|
|
17d6f6db05 | ||
|
|
7f3ba543b7 | ||
|
|
b33cb8a12c | ||
|
|
cfa8b78c2e | ||
|
|
4024daf189 | ||
|
|
77d7c3bb61 | ||
|
|
868ad57e12 | ||
|
|
eaf9724295 | ||
|
|
30e98de38a | ||
|
|
79c606370c | ||
|
|
b70597b5f5 | ||
|
|
a469282730 | ||
|
|
c3708360fa | ||
|
|
80f0560e0f | ||
|
|
84951cdc44 | ||
|
|
a72cb797ab | ||
|
|
6898e6b816 | ||
|
|
adb0b966ff | ||
|
|
81284b8d21 | ||
|
|
1a2b112e64 | ||
|
|
442c484dc9 | ||
|
|
2368c2f25f | ||
|
|
2320c58254 | ||
|
|
c9a4f36414 | ||
|
|
1df9a981b2 | ||
|
|
cbc917b834 | ||
|
|
240a568d16 | ||
|
|
eb1a847faa | ||
|
|
e09e57879b | ||
|
|
ddd2982971 | ||
|
|
621da7e4ef | ||
|
|
420827c389 | ||
|
|
ce9399b894 | ||
|
|
1bdd08c59a | ||
|
|
52d62dda81 | ||
|
|
d69e3cedae | ||
|
|
648bfcdd0d | ||
|
|
e4b8ff0a64 | ||
|
|
4576ef854d | ||
|
|
7323668db5 | ||
|
|
b11d709070 | ||
|
|
e25ac006c2 | ||
|
|
9e85e7edce | ||
|
|
804bcd440c | ||
|
|
6e4c896cb7 | ||
|
|
0cae89f8e3 | ||
|
|
59a7607c07 | ||
|
|
6dca0c157f | ||
|
|
d2aa5a64aa | ||
|
|
2620a55c5a | ||
|
|
14e33215f8 | ||
|
|
6862c2a744 | ||
|
|
fb215e8d87 | ||
|
|
f52ad2151b | ||
|
|
1a47b7d09d | ||
|
|
f292071a34 | ||
|
|
dd616d29e8 | ||
|
|
0509f18d66 | ||
|
|
f59fb119e4 | ||
|
|
46127cac1f | ||
|
|
c1abf76211 | ||
|
|
fe5b45d48d | ||
|
|
10ac1ebf7b | ||
|
|
e5d8144510 | ||
|
|
f9a65fba7a | ||
|
|
9b4138349b | ||
|
|
db9c9db5a9 | ||
|
|
24e992339f | ||
|
|
f26d1babf7 | ||
|
|
de3347cea1 | ||
|
|
e900fac4bd | ||
|
|
396218a467 | ||
|
|
d3a66ffa8c | ||
|
|
1e7ffb4c2e | ||
|
|
3df5d4c690 | ||
|
|
02a8331996 | ||
|
|
a29ad6a091 | ||
|
|
3ef1e65412 | ||
|
|
2deaec1fc6 | ||
|
|
c9b0b23d36 | ||
|
|
f06cca4ead | ||
|
|
a1990ce3e4 | ||
|
|
cbbf023030 | ||
|
|
307aa724eb | ||
|
|
cd6f37d80f | ||
|
|
b903134770 | ||
|
|
11effdd297 | ||
|
|
8873d8372d | ||
|
|
964aa29d12 | ||
|
|
b45a3c6539 | ||
|
|
b72b7ad0fb | ||
|
|
0e3106d8c1 | ||
|
|
71a6626fa9 | ||
|
|
68006bac88 | ||
|
|
34cbcc38a6 | ||
|
|
f4daee85c7 | ||
|
|
dd347039b5 | ||
|
|
0c9367d58a | ||
|
|
af10c4f1c3 | ||
|
|
52fbeda941 | ||
|
|
ace23af363 | ||
|
|
a097d89d68 | ||
|
|
77cb817523 | ||
|
|
c956e271a2 | ||
|
|
6413f30d18 | ||
|
|
789e748df0 | ||
|
|
c89edae375 | ||
|
|
f4dca4922b | ||
|
|
73b9ef5ee7 | ||
|
|
462742961a | ||
|
|
5a647fabfa | ||
|
|
2580ceac20 | ||
|
|
6905391785 | ||
|
|
7406226e68 | ||
|
|
af9ee00ad3 | ||
|
|
01f63a4b6b | ||
|
|
45e48755d3 | ||
|
|
f6c740738f | ||
|
|
29780cd4b7 | ||
|
|
a050b7c7d5 | ||
|
|
1f25387f81 | ||
|
|
36fb7b53ba | ||
|
|
354295ffda | ||
|
|
4f28018f4f | ||
|
|
5d37666bea | ||
|
|
705e81db7f | ||
|
|
57d5859727 | ||
|
|
06387ab33e | ||
|
|
5f0c3b3639 | ||
|
|
414fb8afd1 | ||
|
|
58fbaaa8f4 | ||
|
|
040790a672 | ||
|
|
bf36e39f3b | ||
|
|
a780946915 | ||
|
|
1d537c2799 | ||
|
|
6a3e383f30 | ||
|
|
cb72c6b586 | ||
|
|
384e1a63b3 | ||
|
|
e6357d0a54 | ||
|
|
a0ebb42e1e | ||
|
|
324fec8f94 | ||
|
|
226efc3d85 | ||
|
|
e785997d99 | ||
|
|
7998b51e6b | ||
|
|
e54384fcd7 | ||
|
|
39946cad1b | ||
|
|
6041ae9344 | ||
|
|
dc9fda8d86 | ||
|
|
7dd3877955 | ||
|
|
5386fc54ff | ||
|
|
c3839f092f | ||
|
|
4c8207ef9a | ||
|
|
539a7de1ad | ||
|
|
935b2c4edb | ||
|
|
e1a03166b0 | ||
|
|
c7be304085 | ||
|
|
2f8c815053 | ||
|
|
249e1c6ebd | ||
|
|
22c97d1c01 | ||
|
|
ff3d45ec91 | ||
|
|
4caf671e1c | ||
|
|
741876dcaa | ||
|
|
5c6f32a7db | ||
|
|
80b24cbfbc | ||
|
|
8afed9768d | ||
|
|
1f4dacff02 | ||
|
|
a046c0ec45 | ||
|
|
82d0fd2b11 | ||
|
|
e2fb55d910 | ||
|
|
7754c41d34 | ||
|
|
eea30c3a0d | ||
|
|
bfe41a0642 | ||
|
|
4ba0151c42 | ||
|
|
98bdfb160e | ||
|
|
6327649501 | ||
|
|
6937f5e1b1 | ||
|
|
e3ce4196fe | ||
|
|
bb67a051c2 | ||
|
|
812dd1f184 | ||
|
|
37d6612434 | ||
|
|
9cbafdfab8 | ||
|
|
1c4d806e58 | ||
|
|
aba2ee29dd | ||
|
|
51deb29145 | ||
|
|
1f7a677db3 | ||
|
|
0fb0652919 | ||
|
|
39c7e723ba | ||
|
|
a9ddf159cc | ||
|
|
22b93e1ae3 | ||
|
|
93b83048cf | ||
|
|
1c18f3a4f2 | ||
|
|
b5a01a7a42 | ||
|
|
caf211c34e | ||
|
|
8b79c70be7 | ||
|
|
6a4a218152 | ||
|
|
6bc420d57f | ||
|
|
db0325a59c | ||
|
|
eab2f0df20 | ||
|
|
2d1fbff2c5 | ||
|
|
75c3ac71ae | ||
|
|
61ffd222cc | ||
|
|
3499327984 | ||
|
|
c90ed003f7 | ||
|
|
bd9169bcd1 | ||
|
|
0c46ab7d5a | ||
|
|
3bc464011a | ||
|
|
74fe67fe4d | ||
|
|
48fcce54dc | ||
|
|
b91be6bb2f | ||
|
|
181ad39e18 | ||
|
|
4af6e5e91f | ||
|
|
d67c6acfa2 | ||
|
|
f4633a5832 | ||
|
|
36841f6f8f | ||
|
|
86b4df871a | ||
|
|
03ad8cc9e8 | ||
|
|
de39ffa260 | ||
|
|
becccb8368 | ||
|
|
1b75bb2cec | ||
|
|
2a9f9b725e | ||
|
|
5f15e84065 | ||
|
|
deeb5f9d62 | ||
|
|
b715198a02 | ||
|
|
005b1a9715 | ||
|
|
d120bb794c | ||
|
|
e625d56c65 | ||
|
|
2d1d19e457 | ||
|
|
c5d0a7fd74 | ||
|
|
c72fcbd10d | ||
|
|
5f388c8b09 | ||
|
|
b02c3c8e5c | ||
|
|
1d9e0eb3a3 | ||
|
|
0a5b553bb8 | ||
|
|
865d57b4d3 | ||
|
|
8e40c38730 | ||
|
|
ddee496c73 | ||
|
|
9c4d12d18b | ||
|
|
6efa0e307e | ||
|
|
f0ac2d739d | ||
|
|
1cb78b4ccd | ||
|
|
fc6f41a549 | ||
|
|
db86d075f0 | ||
|
|
3db4e12bb2 | ||
|
|
f4a7372b4f | ||
|
|
877d2f77bd | ||
|
|
02334489ed | ||
|
|
cd714d954f | ||
|
|
9e4655070c | ||
|
|
f84d69feb7 | ||
|
|
3c91ad2f59 | ||
|
|
873848b9a7 | ||
|
|
f906a172dd | ||
|
|
6b9c74dcea | ||
|
|
539cf9ada4 | ||
|
|
a69d2dfd71 | ||
|
|
3f9b9a6903 | ||
|
|
9949a16f34 | ||
|
|
7e30cf40a9 | ||
|
|
fba0df8cb9 | ||
|
|
7a97005524 | ||
|
|
ee8b57da91 | ||
|
|
e63f19a00d | ||
|
|
deabf23475 | ||
|
|
0b3fc938ae | ||
|
|
bdd0cdbe55 | ||
|
|
ae261cb684 | ||
|
|
0036a895e9 | ||
|
|
f317d15580 | ||
|
|
76a487854b | ||
|
|
b3f616ddc6 | ||
|
|
9b19cbefc8 | ||
|
|
a4ba6b947b | ||
|
|
fb510ff180 | ||
|
|
2710cbc85a | ||
|
|
b82f17bcf1 | ||
|
|
f9c33394a9 | ||
|
|
0a15a6eb64 | ||
|
|
45777c01ee | ||
|
|
b331cc55ce | ||
|
|
74ef5a8083 | ||
|
|
8dd82aacf2 | ||
|
|
35d130a01b | ||
|
|
15319bf586 | ||
|
|
832cae635e | ||
|
|
1c83752f56 | ||
|
|
7973457417 | ||
|
|
8083e94ecd | ||
|
|
b3485af14c | ||
|
|
01eaef2bf9 | ||
|
|
3e241cf8bc | ||
|
|
2df4dc0535 | ||
|
|
135a1e3d52 | ||
|
|
4366fdd4a6 | ||
|
|
a47d3f10f9 | ||
|
|
004c9eadd5 | ||
|
|
b483a5f4e8 | ||
|
|
06e0f4234f | ||
|
|
e9a5c0ae69 | ||
|
|
0c17702f65 | ||
|
|
ddf682d66a | ||
|
|
018c5f857b | ||
|
|
b5d89ff082 | ||
|
|
54046a4717 | ||
|
|
505773043b | ||
|
|
e9bb811244 | ||
|
|
6ef6ea1479 | ||
|
|
93bd4002db | ||
|
|
b9ec829747 | ||
|
|
f307327af3 | ||
|
|
936be9928d | ||
|
|
b639369846 | ||
|
|
5577e4cf62 | ||
|
|
63206fea2e | ||
|
|
40727dac2d | ||
|
|
d703909177 | ||
|
|
fc61060b7f | ||
|
|
73e21e77ec | ||
|
|
6be05819b0 | ||
|
|
0e116ad1b9 | ||
|
|
016c232ef2 | ||
|
|
9856419292 | ||
|
|
cf3a204eac | ||
|
|
dc3e364b90 | ||
|
|
d22ef17b95 | ||
|
|
4126692c5a | ||
|
|
d22f1c97ae | ||
|
|
735023330a | ||
|
|
6301cb287e | ||
|
|
85ebb0242a | ||
|
|
81a670d608 | ||
|
|
a547e5c34b | ||
|
|
cf6b6dd4dd | ||
|
|
574464c1ea | ||
|
|
816dfa4e3b | ||
|
|
9d7e52c25e | ||
|
|
d41b6ca459 | ||
|
|
4d1b5209e7 | ||
|
|
7da21f23aa | ||
|
|
40a9caceb8 | ||
|
|
7e4f21ff33 | ||
|
|
cd6f5090d7 | ||
|
|
1efd0a3d5b | ||
|
|
4434d7b8c9 | ||
|
|
24e184eace | ||
|
|
8ccd9cfd85 | ||
|
|
cb2c23dc96 | ||
|
|
29912cac8d | ||
|
|
6376a81c4a | ||
|
|
aff4b2f9b7 | ||
|
|
153fe8fcd0 | ||
|
|
95d8b3d1a6 | ||
|
|
19ce869763 | ||
|
|
e6b6d3ca27 | ||
|
|
8e7be239ee | ||
|
|
4bd97f9d81 | ||
|
|
49d182eabc | ||
|
|
9411a29adf | ||
|
|
61bb96e1fe | ||
|
|
6a6100a814 | ||
|
|
40fcf9d0cc | ||
|
|
65946c55d1 | ||
|
|
e2b4df3dcf | ||
|
|
04fee167b9 | ||
|
|
243c273084 | ||
|
|
b43cf4dd5d | ||
|
|
cf9c38fdd5 | ||
|
|
6e4e6df08f | ||
|
|
7b5630223d | ||
|
|
3d985decbc | ||
|
|
dbe23eaac7 | ||
|
|
e38df0f319 | ||
|
|
c2ac66fdbf | ||
|
|
5ad25ff14d | ||
|
|
04e1b527b5 | ||
|
|
09210f98e9 | ||
|
|
bfe228a367 | ||
|
|
a01978196d | ||
|
|
f795481895 | ||
|
|
83e199c1ea | ||
|
|
8734e7fc1b | ||
|
|
b48e4adacd | ||
|
|
a45e2b120e | ||
|
|
52b6f103a5 | ||
|
|
927f4a366c | ||
|
|
b28347d191 | ||
|
|
df057ebe4d | ||
|
|
aa7b4a0e94 | ||
|
|
ca9d44f55f | ||
|
|
247631fd68 | ||
|
|
3357928e80 | ||
|
|
fc263d79a8 | ||
|
|
ee10616acf | ||
|
|
30c3ad6c90 | ||
|
|
5ad6d6d904 | ||
|
|
e2c7fc0af0 | ||
|
|
172fb06d8e | ||
|
|
634522d27b | ||
|
|
03b14a0fb5 | ||
|
|
ec54ec2607 | ||
|
|
340bb08f2a | ||
|
|
022487a877 | ||
|
|
6ec1bbe1ae | ||
|
|
9d55f8ab24 | ||
|
|
fc61f3fca1 | ||
|
|
cca3368d8f | ||
|
|
57f6547b91 | ||
|
|
200b22cf0c | ||
|
|
e9b8f3138c | ||
|
|
dd9663451e | ||
|
|
78e0e7dba1 | ||
|
|
b94fb70e02 | ||
|
|
e94c149cd1 | ||
|
|
94ba3c4514 | ||
|
|
c129a37ccf | ||
|
|
6608a4266b | ||
|
|
809bfbb42a | ||
|
|
676ff8789b | ||
|
|
3b1a9bd0c4 | ||
|
|
202b9dc3bc | ||
|
|
ce96deb224 | ||
|
|
14afe59eeb | ||
|
|
790a8bdb9a | ||
|
|
8bd0f7a589 | ||
|
|
235eb82c45 | ||
|
|
f043447e4f | ||
|
|
e92a74a088 | ||
|
|
799a385ff9 | ||
|
|
2c74dc0ccd | ||
|
|
c191b12514 | ||
|
|
2c9e593af0 | ||
|
|
f1dbab7d55 | ||
|
|
ea77d7e76d | ||
|
|
64d8e3b1e1 | ||
|
|
bd4975d180 | ||
|
|
2a916a099c | ||
|
|
bc084922f7 | ||
|
|
42f755b755 | ||
|
|
7f2c629305 | ||
|
|
6136095e0f | ||
|
|
0a34e07cc5 | ||
|
|
71c6f4483f | ||
|
|
731a74905c | ||
|
|
8b0e47103c | ||
|
|
4da24e27a4 | ||
|
|
169f1b327b | ||
|
|
360f9afb54 | ||
|
|
0e45a59860 | ||
|
|
cfc2e407a4 | ||
|
|
a467fdb43f | ||
|
|
474db2be0d | ||
|
|
e946037c57 | ||
|
|
b2e1fe314f | ||
|
|
81fb44da80 | ||
|
|
0e8da35b0a | ||
|
|
4d2cf73330 | ||
|
|
de2ce12163 | ||
|
|
5df89f2ce4 | ||
|
|
045c0b4c0c | ||
|
|
8b4ffa0795 | ||
|
|
14359a37ae | ||
|
|
f4b2ed4f7d | ||
|
|
a8e4a1c2e0 | ||
|
|
9048d181af | ||
|
|
1cb02994bf | ||
|
|
6fad85e957 | ||
|
|
db9b2ee6b3 | ||
|
|
8efeb77102 | ||
|
|
0215a800e2 | ||
|
|
87d282f98b | ||
|
|
60c392d3d0 | ||
|
|
34c3aa25da | ||
|
|
80690d4cc8 | ||
|
|
18f3dc2d44 | ||
|
|
e8256b4e1a | ||
|
|
4f67bb0250 | ||
|
|
5dd071adf4 | ||
|
|
aaf5e7f49d | ||
|
|
6a5958409a | ||
|
|
e0ff98b1d7 | ||
|
|
a815e07cdd | ||
|
|
aa2fe9740c | ||
|
|
75a358a4d2 | ||
|
|
d5646be6f8 | ||
|
|
cb04ebcd95 | ||
|
|
9889ccfc74 | ||
|
|
f528bd861a | ||
|
|
f793654bd8 | ||
|
|
8d064a2165 | ||
|
|
1240899b08 | ||
|
|
558752b890 | ||
|
|
997548b7d6 | ||
|
|
865d597fe8 | ||
|
|
b0a043b464 | ||
|
|
e003b6f9a7 | ||
|
|
9e9e940dfd | ||
|
|
d6dac704eb | ||
|
|
9aa8dff650 | ||
|
|
14c2503b0d | ||
|
|
cb282c6f9a | ||
|
|
66a5a40482 | ||
|
|
8d211ed20b | ||
|
|
bbf2814285 | ||
|
|
a15e479a3e | ||
|
|
505d6ec010 | ||
|
|
314ac65e23 | ||
|
|
118a9a2c5d | ||
|
|
347f47bbef | ||
|
|
a73c35468d | ||
|
|
f9a1446ed5 | ||
|
|
874ba45034 | ||
|
|
febe08eb9d | ||
|
|
9123b34c82 | ||
|
|
c66d7cafa6 | ||
|
|
73c54992e2 | ||
|
|
be1a44ad61 | ||
|
|
28b307fb98 | ||
|
|
a1dc723445 | ||
|
|
23f4a70693 | ||
|
|
be5b4b39e5 | ||
|
|
cf706e0e30 | ||
|
|
8bc80d2088 | ||
|
|
b94f8c92f0 | ||
|
|
c3be75bed1 | ||
|
|
91c8d8077f | ||
|
|
f598eed149 | ||
|
|
971bae3be0 | ||
|
|
9a6abf4d5a | ||
|
|
d756077a48 | ||
|
|
a1fc87bb1e | ||
|
|
07186d2ae1 | ||
|
|
d2164d9ada | ||
|
|
7eacaf8fc5 | ||
|
|
9aa2de526e | ||
|
|
12dfc5b407 | ||
|
|
1fc964ec16 | ||
|
|
7f2f7b100b | ||
|
|
8292140f1f | ||
|
|
c26e610a23 | ||
|
|
c96cfe81ab | ||
|
|
bb1cc0b60e | ||
|
|
1e74073344 | ||
|
|
d83d1dd888 | ||
|
|
e34573e72f | ||
|
|
9d3f4879ef | ||
|
|
6317277a70 | ||
|
|
a1130ec60b | ||
|
|
a1a3ccf6fb | ||
|
|
aedb8bee9c | ||
|
|
6620d1c8fe | ||
|
|
0ecc7dfead | ||
|
|
9f5859ee93 | ||
|
|
d559e1717c | ||
|
|
e649be58a2 | ||
|
|
157c37c862 | ||
|
|
da910ac670 | ||
|
|
3831363815 | ||
|
|
94a6ea13bd | ||
|
|
06c1ad0f69 | ||
|
|
d6873781e8 | ||
|
|
ab6c9647a7 | ||
|
|
59b0350993 | ||
|
|
df0be4c070 | ||
|
|
87f3ef4353 | ||
|
|
2611bbaea4 | ||
|
|
7c0d8cf792 | ||
|
|
2d17baccd2 | ||
|
|
fe31723726 | ||
|
|
bb10b22421 | ||
|
|
6445f3a634 | ||
|
|
d1f28d9c94 | ||
|
|
1e5366123c | ||
|
|
7feff7c90b | ||
|
|
429b3bc045 | ||
|
|
e76f1b89da | ||
|
|
f25e8595c3 | ||
|
|
6977ce55a3 | ||
|
|
222e0e5ff2 | ||
|
|
6996d9bbe2 | ||
|
|
f70e08adac | ||
|
|
223ecc0e6b | ||
|
|
43f36f556c | ||
|
|
4579e00283 | ||
|
|
b5e9b14048 | ||
|
|
2288e72c5f | ||
|
|
4882cc0417 | ||
|
|
499d3d0424 | ||
|
|
d6b17debb4 | ||
|
|
8f970e0008 | ||
|
|
18d778a1cc | ||
|
|
d667c4e45d | ||
|
|
b7f8ffd56f | ||
|
|
c20f9d527f | ||
|
|
b859d00cb9 | ||
|
|
a2d28ad360 | ||
|
|
c6702fbc18 | ||
|
|
5018f96786 | ||
|
|
f29f408b67 | ||
|
|
a475a3b851 | ||
|
|
9335f79c30 | ||
|
|
9dab691649 | ||
|
|
16abc65f49 | ||
|
|
23ac80886d | ||
|
|
b242e757e0 | ||
|
|
a69965a605 | ||
|
|
3321427eb4 | ||
|
|
3ffe354770 | ||
|
|
52e0d3a4bc | ||
|
|
e865a5ca62 | ||
|
|
528a4ddb03 | ||
|
|
36f3b649c6 | ||
|
|
ce91c0cc30 | ||
|
|
e31e9e3520 | ||
|
|
df313ebe7f | ||
|
|
e1cf36e952 | ||
|
|
493194652c | ||
|
|
5030e75c2c | ||
|
|
3c70eac7ca | ||
|
|
f9b22962a4 | ||
|
|
7ce0c21b0c | ||
|
|
7a7a8c923f | ||
|
|
d5d5e28f7e | ||
|
|
b22ac27075 | ||
|
|
3cb5f4bdfe | ||
|
|
d355e4575d | ||
|
|
bdbb118e55 | ||
|
|
9a174d99db | ||
|
|
9c8725066c | ||
|
|
9f0f3de864 | ||
|
|
ac84ed2d6a | ||
|
|
9d7e15f4df | ||
|
|
c3563f4501 | ||
|
|
a543202edc | ||
|
|
52cf517a91 | ||
|
|
11b649dc8c | ||
|
|
19663bacb1 | ||
|
|
41c276d0e0 | ||
|
|
6bb73add28 | ||
|
|
2c16b6c078 | ||
|
|
5ddc955805 | ||
|
|
6a3afa4240 | ||
|
|
deabd7b83c | ||
|
|
422e5858ef | ||
|
|
3c019d1376 | ||
|
|
f676e8423e | ||
|
|
f687d1de01 | ||
|
|
6fe28bc2ef | ||
|
|
86b5af3423 | ||
|
|
8f3dce058c | ||
|
|
825b8bb4a5 | ||
|
|
05320d1070 | ||
|
|
33d2a396ce | ||
|
|
ae4cce8abf | ||
|
|
b85950e4ca | ||
|
|
aecf52551b | ||
|
|
fc877ed836 | ||
|
|
5580921b7d | ||
|
|
6b7d0a0fe2 | ||
|
|
f55efbe1e2 | ||
|
|
8e6fc3c417 | ||
|
|
7943ab6017 | ||
|
|
81725a58cf | ||
|
|
5cbcf46aaa | ||
|
|
49dd3f726a | ||
|
|
73f9ebc709 | ||
|
|
f6884ba4f9 | ||
|
|
5d39d0e139 | ||
|
|
6a1463ef17 | ||
|
|
5d00f23cb3 | ||
|
|
6ea106b25d | ||
|
|
d501bf7506 | ||
|
|
1408060053 | ||
|
|
0c37c01496 | ||
|
|
d2049f7839 | ||
|
|
33cdf672b3 | ||
|
|
145c89acc3 | ||
|
|
706d7d6dc1 | ||
|
|
2c35d0f897 | ||
|
|
f227ae89ec | ||
|
|
ac43d53884 | ||
|
|
4b70549bcb | ||
|
|
ea601ae404 | ||
|
|
201411841c | ||
|
|
d857acc58e | ||
|
|
d005252f13 | ||
|
|
2065992b17 | ||
|
|
74e96980e6 | ||
|
|
09110d1ef7 | ||
|
|
bcf55e63f1 | ||
|
|
dd22b2580e | ||
|
|
62a0e46698 | ||
|
|
14b68135fb | ||
|
|
d44b62e489 | ||
|
|
b0f5c2a493 | ||
|
|
d6cfbc60a8 | ||
|
|
fe51f5ced4 | ||
|
|
b257b0453e | ||
|
|
a88105a086 | ||
|
|
2dc792690e | ||
|
|
aa146b1cdf | ||
|
|
c44b20bae3 | ||
|
|
cad8964841 | ||
|
|
ec9a989214 | ||
|
|
7f05932fb9 | ||
|
|
d51694e1cb | ||
|
|
3079483e6b | ||
|
|
bee4264a39 | ||
|
|
c949ea2667 | ||
|
|
2bcb28d0c0 | ||
|
|
bd257554cd | ||
|
|
68a27e0b61 | ||
|
|
8b589bdb9c | ||
|
|
1a25710aac | ||
|
|
271d59ca51 | ||
|
|
37e5e57d5b | ||
|
|
f817b20545 | ||
|
|
5f8619805e | ||
|
|
c9d4629bfa | ||
|
|
c9c27c83d4 | ||
|
|
7a6a985c47 | ||
|
|
225df7b1e6 | ||
|
|
97ede69609 | ||
|
|
c5ded86d8a | ||
|
|
b4f049ecda | ||
|
|
56692eb6cb | ||
|
|
7c22c60190 | ||
|
|
2f2c4d4a44 | ||
|
|
c1c71916db | ||
|
|
4b15a7454c | ||
|
|
22e723587d | ||
|
|
969adaf5bb | ||
|
|
c2214e8300 | ||
|
|
10af659227 | ||
|
|
5cd3757f4f | ||
|
|
81f674ea01 | ||
|
|
1846ee0ffe | ||
|
|
14a825093a | ||
|
|
d70f477bc1 | ||
|
|
c9c897ffb5 | ||
|
|
462dea3e05 | ||
|
|
4e7a0084dd | ||
|
|
0268df0e24 | ||
|
|
f926ca66c0 | ||
|
|
16b5898928 | ||
|
|
c1bb66cc9d | ||
|
|
f7502d0d18 | ||
|
|
b4975f649c | ||
|
|
89353c1f7e | ||
|
|
fce10b6dca | ||
|
|
2cf95c6706 | ||
|
|
58ab1599db | ||
|
|
9745c2ea1a | ||
|
|
9db46e2949 | ||
|
|
7949505104 | ||
|
|
db0d5133e8 | ||
|
|
54415377ee | ||
|
|
d7f55477da | ||
|
|
faca586fa7 | ||
|
|
5f3ba7b9c7 | ||
|
|
abace4a58d | ||
|
|
5895cea587 | ||
|
|
cdbcef5232 | ||
|
|
d5d6bfdc56 | ||
|
|
75ae7f0c15 | ||
|
|
6931451f18 | ||
|
|
f5625e1354 | ||
|
|
d1be4a30b6 | ||
|
|
5c13362db2 | ||
|
|
6c71dce80c | ||
|
|
790c397951 | ||
|
|
e28e74b874 | ||
|
|
b99ea22d89 | ||
|
|
8938195c5d | ||
|
|
887b4a7862 | ||
|
|
7c9c39fa0e | ||
|
|
3b800753ec | ||
|
|
647119052c | ||
|
|
e9ce6bbd4e | ||
|
|
1fee27f78e | ||
|
|
e7a334861d | ||
|
|
267ae3436d | ||
|
|
60ff9f1891 | ||
|
|
f83efd23df | ||
|
|
db60f02745 | ||
|
|
3e109bd27c | ||
|
|
c4ccf6e3fa | ||
|
|
fb1a246e4a | ||
|
|
a418b03c06 | ||
|
|
e9fee000ca | ||
|
|
71c13e0653 | ||
|
|
32d7f933f8 | ||
|
|
f28dd810ce | ||
|
|
aaedd88ca7 | ||
|
|
00dee40917 | ||
|
|
019248b605 | ||
|
|
826f37bcc4 | ||
|
|
fa02a23e4c | ||
|
|
7143fb6f67 | ||
|
|
e1524c26cd | ||
|
|
72088dff2e | ||
|
|
8e6d3cf30e | ||
|
|
144992ccec | ||
|
|
673e883ae6 | ||
|
|
f197ed7972 | ||
|
|
ce642aceed | ||
|
|
d5411489c0 | ||
|
|
26c66627f8 | ||
|
|
c654986042 | ||
|
|
c5b5c15f99 | ||
|
|
7727b0f1c3 | ||
|
|
3d551ac45b | ||
|
|
555a00b731 | ||
|
|
9f9091b23e | ||
|
|
14c343142f | ||
|
|
890920775a | ||
|
|
7b38d2d74f | ||
|
|
e85c2870e2 | ||
|
|
cfbc5802e4 | ||
|
|
40cdb820fb | ||
|
|
f63beb776e | ||
|
|
20f031b2e2 | ||
|
|
b0f28b7e7c | ||
|
|
62bb6de80d | ||
|
|
3db4d883af | ||
|
|
8cb514d70e | ||
|
|
2d7880351b | ||
|
|
e1ee3ef2db | ||
|
|
aff30c48a0 | ||
|
|
55eea50a6e | ||
|
|
9ff212c94d | ||
|
|
6350c7e9e6 | ||
|
|
d097c1c17c | ||
|
|
b9ee6b4039 | ||
|
|
f1238a03b3 | ||
|
|
e90cf3ee77 | ||
|
|
468607c8e8 | ||
|
|
5bd9283177 | ||
|
|
117b12348c | ||
|
|
0d325b6eb8 | ||
|
|
86d5903f32 | ||
|
|
3b518d6f33 | ||
|
|
78f57e7d4b | ||
|
|
f710f1bfc0 | ||
|
|
c5d4fc62e6 | ||
|
|
60606d5eb9 | ||
|
|
8751236380 | ||
|
|
2291ce3680 | ||
|
|
16ed589857 | ||
|
|
b59254ca42 | ||
|
|
6e3f9b285d | ||
|
|
8bcff774fa | ||
|
|
9b04b12dec | ||
|
|
b22d81a9e9 | ||
|
|
6c80a3a8cd | ||
|
|
059d836653 | ||
|
|
2c3ecfeb6f | ||
|
|
b07e5eecc3 | ||
|
|
1847bc90cf | ||
|
|
899aaae47c | ||
|
|
bcc05086a4 | ||
|
|
d2cc547875 | ||
|
|
c6127f440e | ||
|
|
c2849ad49f | ||
|
|
9c6ba294f9 | ||
|
|
b2a8707e91 | ||
|
|
193e3085a9 | ||
|
|
2401f38e9f | ||
|
|
4ea65727a1 | ||
|
|
3d6cfe260c | ||
|
|
4c33a09c3c | ||
|
|
8d25743680 | ||
|
|
4bc5b763a2 | ||
|
|
00ea179c90 | ||
|
|
a17d40d2d0 | ||
|
|
62ddd703f1 | ||
|
|
77ab0ccae2 | ||
|
|
f377ac3fcc | ||
|
|
a81becd77b | ||
|
|
a004f1c758 | ||
|
|
b19b015986 | ||
|
|
3f0c1213ad | ||
|
|
f3a781d857 | ||
|
|
a07a32f648 | ||
|
|
1e1117b187 | ||
|
|
0e161b1735 | ||
|
|
98cbb8dc29 | ||
|
|
9c17d2d335 | ||
|
|
d4ea7f48c0 | ||
|
|
3ecfe3ba94 | ||
|
|
a959594348 | ||
|
|
faa1027c04 | ||
|
|
6f68732ef9 | ||
|
|
3a4e936938 | ||
|
|
8b4b79fa10 | ||
|
|
ce0dda0455 | ||
|
|
fd1ee398c4 | ||
|
|
1488017bf2 | ||
|
|
367f4236ad | ||
|
|
ec202f22e8 | ||
|
|
08081da29e | ||
|
|
5511424bd6 | ||
|
|
9f2c848413 | ||
|
|
d5efe2b499 | ||
|
|
9b989fc40f | ||
|
|
567e85d1f8 | ||
|
|
af00036e7f | ||
|
|
e58e6e2a3e | ||
|
|
370039664f | ||
|
|
d244363321 | ||
|
|
984d502259 | ||
|
|
34b418af96 | ||
|
|
eee0c0c878 | ||
|
|
952ef368ab | ||
|
|
dfaa789f7c | ||
|
|
74dd549ffb | ||
|
|
4d8f369ba0 | ||
|
|
824e2d72c7 | ||
|
|
143aa79797 | ||
|
|
0e1120f407 | ||
|
|
c8dbb9672a | ||
|
|
372b74776f | ||
|
|
abcc3c6411 | ||
|
|
ec4ab8762c | ||
|
|
bc93de8ff2 | ||
|
|
b426f3c6f2 | ||
|
|
99d9bb29ce | ||
|
|
5e109c666b | ||
|
|
0bed216735 | ||
|
|
d55bb8d336 | ||
|
|
7c32b3edf0 | ||
|
|
121cb7e442 | ||
|
|
dec3e1ea92 | ||
|
|
664b6610f3 | ||
|
|
44163f0fb2 | ||
|
|
d43865fcad | ||
|
|
fed92f3853 | ||
|
|
823d2a816e | ||
|
|
046c21edf6 | ||
|
|
8236d80b42 | ||
|
|
90e7eb1c79 | ||
|
|
ef09868af1 | ||
|
|
028981e3ae | ||
|
|
e8a6274cf6 | ||
|
|
ffd0265526 | ||
|
|
13d7344bc0 | ||
|
|
2ad36f92c5 | ||
|
|
36b02f4423 | ||
|
|
01df990aa8 | ||
|
|
49b71fcf5d | ||
|
|
9e43d77ac4 | ||
|
|
3ab9af720b | ||
|
|
abae304f87 | ||
|
|
659d8bff66 | ||
|
|
1786e10101 | ||
|
|
bda7f929e7 | ||
|
|
c309f80a94 | ||
|
|
97c987c561 | ||
|
|
48949104e0 | ||
|
|
a38cc4fe34 | ||
|
|
495dfbcb28 | ||
|
|
6e4dbd912b | ||
|
|
82904d956d | ||
|
|
ec7118b376 | ||
|
|
058b32a263 | ||
|
|
e7b960838e | ||
|
|
14e776a287 | ||
|
|
73f11b920f | ||
|
|
5c93040a8e | ||
|
|
a517769e8a | ||
|
|
4bb59a9f05 | ||
|
|
b37879d2d4 | ||
|
|
05defc39d7 | ||
|
|
18bfad07d2 | ||
|
|
b83591255d | ||
|
|
804350bc81 | ||
|
|
46e1cae0bb | ||
|
|
81062d4580 | ||
|
|
55481db2ee | ||
|
|
ecdd12f5a9 | ||
|
|
ef92cdc183 | ||
|
|
08f4a6cf2c | ||
|
|
38889acb4e | ||
|
|
c0517cd29a | ||
|
|
084449ccf3 | ||
|
|
0e8203ae03 | ||
|
|
236440be52 | ||
|
|
6f7e4bb272 | ||
|
|
38dcd3635a | ||
|
|
a3f3330dad | ||
|
|
bbc6c57c08 | ||
|
|
2f36a8edef | ||
|
|
df637fb887 | ||
|
|
be74c92a35 | ||
|
|
a219a64e20 | ||
|
|
25c22a276a | ||
|
|
6e6be057ca | ||
|
|
af69efa48b | ||
|
|
c551083fa4 | ||
|
|
9767feed29 | ||
|
|
4392818e92 | ||
|
|
8d22bafeb6 | ||
|
|
89ddd1fb78 | ||
|
|
24513fa22b | ||
|
|
cddde0c2a0 | ||
|
|
9c674e0018 | ||
|
|
0c6476d283 | ||
|
|
bf0c529a59 | ||
|
|
877bb4d4a2 | ||
|
|
dc4db0b2b3 | ||
|
|
a738d4a3b9 | ||
|
|
e9866a04df | ||
|
|
4f5193d602 | ||
|
|
37b92c55ba | ||
|
|
9299f1bcb6 | ||
|
|
7fe12192df | ||
|
|
1169644ab3 | ||
|
|
6f7770ed43 | ||
|
|
8059fd6f90 | ||
|
|
556dbd8d78 | ||
|
|
6695fd8c14 | ||
|
|
3ab0229275 | ||
|
|
99467127a0 | ||
|
|
90d73b7bd5 | ||
|
|
2e326e1798 | ||
|
|
251eac93c7 | ||
|
|
c74d70808c | ||
|
|
e63b2d7152 | ||
|
|
16b29b56a5 | ||
|
|
6d79c4fe2f | ||
|
|
4b1fb60ee3 | ||
|
|
1d2be54f9e | ||
|
|
83547e32db | ||
|
|
70ddb929f2 | ||
|
|
8b22961394 | ||
|
|
c15d42c179 | ||
|
|
098e473cab | ||
|
|
f6f3d9368a | ||
|
|
9558a420e9 | ||
|
|
4d3b69ca34 | ||
|
|
fdcc4a44c8 | ||
|
|
5de0494538 | ||
|
|
2045f833e4 | ||
|
|
cc4f89aac1 | ||
|
|
1c2f2c17d4 | ||
|
|
ace7a6621f | ||
|
|
d02fe55a1e | ||
|
|
9b753a8f5b | ||
|
|
11e82582b8 | ||
|
|
419358863e | ||
|
|
1d0d7f9975 | ||
|
|
c5f564372b | ||
|
|
a50f0cd727 | ||
|
|
96f6f55138 | ||
|
|
6a45c8b358 | ||
|
|
165937596e | ||
|
|
fb976f043b | ||
|
|
ecb9c4e51a | ||
|
|
9e8c3b495c | ||
|
|
24a37fc33c | ||
|
|
d09a21114d | ||
|
|
6e2b12501f | ||
|
|
2a56e116cf | ||
|
|
6de4f238d8 | ||
|
|
1b426c5957 | ||
|
|
82454a650c | ||
|
|
227b6bd7ef | ||
|
|
9554025daf | ||
|
|
0eb5d607bf | ||
|
|
750f4bc276 | ||
|
|
d0aada1d3d | ||
|
|
8a4848387c | ||
|
|
6904fc7da3 | ||
|
|
28c55a05e6 | ||
|
|
562c829267 | ||
|
|
b200ed242d | ||
|
|
815cfe55df | ||
|
|
40a1094d74 | ||
|
|
346650c091 | ||
|
|
7f74715f51 | ||
|
|
b6fcee517d | ||
|
|
4f62551f6b | ||
|
|
3980249271 | ||
|
|
e3b11b1130 | ||
|
|
f866f23af1 | ||
|
|
c793bc24f0 | ||
|
|
591a46d559 | ||
|
|
2852f26702 | ||
|
|
fc818fdfd6 | ||
|
|
5566ef87f8 | ||
|
|
366fe34d6f | ||
|
|
37a0e83124 | ||
|
|
061a3f393a | ||
|
|
1dff22aeab | ||
|
|
78e6fd4809 | ||
|
|
96bbf3d0f2 | ||
|
|
a842eaba4e | ||
|
|
37565bf8e4 | ||
|
|
beb158b387 | ||
|
|
408eb06f8d | ||
|
|
abe0e44635 | ||
|
|
cfaf414f1c | ||
|
|
f9c4dc616b | ||
|
|
bf845bab6b | ||
|
|
bae9c85990 | ||
|
|
56bbb8d0ff | ||
|
|
60d3565231 | ||
|
|
81340fd287 | ||
|
|
c10c348c73 | ||
|
|
65cb7d9674 | ||
|
|
24f1a10ff7 | ||
|
|
767d11182a | ||
|
|
cf363f667e | ||
|
|
0d1046b8c7 | ||
|
|
2c05f5779e | ||
|
|
9af200f89e | ||
|
|
7e221cfd46 | ||
|
|
640882d178 | ||
|
|
3a1436abef | ||
|
|
d431f0490d | ||
|
|
4c2a6c92a6 | ||
|
|
086c230e9e | ||
|
|
27e2ff50f2 | ||
|
|
3134e5596b | ||
|
|
315274abf9 | ||
|
|
52bbf65fa8 | ||
|
|
9c018ec63b | ||
|
|
bd7e457cdb | ||
|
|
36a0f8515b | ||
|
|
cac10a337d | ||
|
|
edb53cc58f | ||
|
|
1dceeecdad | ||
|
|
f8071ada0b | ||
|
|
21bc8edbd8 | ||
|
|
2a8aeb5041 | ||
|
|
1a7760cf6d | ||
|
|
aee4eed5ac | ||
|
|
87215fb590 | ||
|
|
5409126187 | ||
|
|
9840782ce5 | ||
|
|
d18f42cd6f | ||
|
|
9372e98459 | ||
|
|
9400f4660d | ||
|
|
f0d66b8fba | ||
|
|
78abe72815 | ||
|
|
1ce75916ef | ||
|
|
46959d4baa | ||
|
|
b24cc44493 | ||
|
|
46f6c29e1d | ||
|
|
5ad75b8420 | ||
|
|
2030459f20 | ||
|
|
2855bf812b | ||
|
|
69989893d9 | ||
|
|
ffc61f4a31 | ||
|
|
dd051f28d2 | ||
|
|
a3d2def72b | ||
|
|
e8552b4385 | ||
|
|
d73e4853a8 | ||
|
|
7f991da183 | ||
|
|
046d96a012 | ||
|
|
9ee6ca43e3 | ||
|
|
43b1f7e620 | ||
|
|
ba76f79d85 | ||
|
|
ce47afa698 | ||
|
|
6da110948c | ||
|
|
533c564db5 | ||
|
|
4a65056909 | ||
|
|
c52ad73101 | ||
|
|
5a3673efc6 | ||
|
|
c03ec1d741 | ||
|
|
e62d0809b3 | ||
|
|
7f13597517 | ||
|
|
c822f1fffd | ||
|
|
14ca74a29d | ||
|
|
3ee897a350 | ||
|
|
789aac60c9 | ||
|
|
2c73a8f3e1 | ||
|
|
539bc656f8 | ||
|
|
feda0cad2d | ||
|
|
c723d89739 | ||
|
|
0a0e7a059a | ||
|
|
0263fbbee6 | ||
|
|
e205296e22 | ||
|
|
261f5a9c68 | ||
|
|
fa097651f4 | ||
|
|
c94d5f7e7d | ||
|
|
e34f18799f | ||
|
|
1681a311f7 | ||
|
|
da08d8ec19 | ||
|
|
730178c838 | ||
|
|
a04450ae98 | ||
|
|
2b2fd66a29 | ||
|
|
58fe08ad3d | ||
|
|
240d6bede0 | ||
|
|
23d808f8b1 | ||
|
|
2f293706cb | ||
|
|
9aaaf0c520 | ||
|
|
6694e7e929 | ||
|
|
d3768cb994 | ||
|
|
c59d3e28b9 | ||
|
|
914239f434 | ||
|
|
7a5d04dc53 | ||
|
|
110fe39e72 | ||
|
|
9689a86151 | ||
|
|
6462ae5956 | ||
|
|
053963d050 | ||
|
|
8a95549118 | ||
|
|
46e8fa551c | ||
|
|
be2034d75b | ||
|
|
634fa58048 | ||
|
|
cd5c093557 | ||
|
|
76cf86385e | ||
|
|
5c5ed5d7ee | ||
|
|
47e7a37667 | ||
|
|
d642ab42be | ||
|
|
b4de1c99d5 | ||
|
|
53e35eb9ff | ||
|
|
b222098ec5 | ||
|
|
bb8cf7ed78 | ||
|
|
0219ce3a9c | ||
|
|
b82e5d7cba | ||
|
|
ccee71e638 | ||
|
|
cba0e739eb | ||
|
|
c569cb9cde | ||
|
|
fc585a3900 | ||
|
|
973f8529c2 | ||
|
|
1ff9dc50fd | ||
|
|
065c9053da | ||
|
|
6905be1bcd | ||
|
|
a550f9616c | ||
|
|
bcee3e5373 | ||
|
|
d377ced6b6 | ||
|
|
6e0ceb093c | ||
|
|
745f99e52e | ||
|
|
7197034eda | ||
|
|
264748652f | ||
|
|
48e214564a | ||
|
|
5424e7e02a | ||
|
|
0c9c70b067 | ||
|
|
0ff24f4b09 | ||
|
|
cfa75b7643 | ||
|
|
b72ad1d78d | ||
|
|
5d1f293606 | ||
|
|
2dc0eca4aa | ||
|
|
f5808c1c81 | ||
|
|
321037477f | ||
|
|
43589c66e9 | ||
|
|
435f299a8b | ||
|
|
083db80251 | ||
|
|
92bf520cf4 | ||
|
|
ab354f21c4 | ||
|
|
c7a2c045c7 | ||
|
|
d33c8942e4 | ||
|
|
5e630097b9 | ||
|
|
3b5d03c1c8 | ||
|
|
298ae2c354 | ||
|
|
d936b68597 | ||
|
|
41471b9fd6 | ||
|
|
cc071c0911 | ||
|
|
628164d2bd | ||
|
|
999af85262 | ||
|
|
07e075ad8b | ||
|
|
18098f8aef | ||
|
|
f335b4e436 | ||
|
|
ab293edf4c | ||
|
|
88917070bf | ||
|
|
5bba5cb2bc | ||
|
|
098916bfa5 | ||
|
|
bb79aaed8b | ||
|
|
bc5c5a2835 | ||
|
|
4c11199de2 | ||
|
|
2e987701a8 | ||
|
|
4f625291a5 | ||
|
|
048f2abd87 | ||
|
|
31dea532c5 | ||
|
|
3d54e5d965 | ||
|
|
aee2a5a161 | ||
|
|
198ea0104d | ||
|
|
1abdf6d15c | ||
|
|
e5b836462f | ||
|
|
552b20b5d9 | ||
|
|
7d500aedb5 | ||
|
|
751e823b8c | ||
|
|
59d47b2b15 | ||
|
|
b1635b0715 | ||
|
|
4d778e9ca9 | ||
|
|
af433286d0 | ||
|
|
2a41e8a726 | ||
|
|
6b41f3bb64 | ||
|
|
78c178b1f6 | ||
|
|
20a6dd1aeb | ||
|
|
3773dfb4a1 | ||
|
|
e156b662a3 | ||
|
|
38193a870b | ||
|
|
e3a636772a | ||
|
|
46b043fdc7 | ||
|
|
a774ae87c2 | ||
|
|
a332a7b402 | ||
|
|
2ee4d874da | ||
|
|
4f051e5251 | ||
|
|
e4a0b29162 | ||
|
|
09234296f4 | ||
|
|
679228c8a7 | ||
|
|
a752e19878 | ||
|
|
0880c0e3b3 | ||
|
|
948e65d383 |
@@ -1 +1,2 @@
|
|||||||
VITE_API_BASE_URL=http://localhost:3001/api/v1/
|
VITE_API_BASE_URL=/api/v1/
|
||||||
|
VITE_PUBLIC_VAPID_KEY=BH3w49sZA6jXUnE-yt4jO6VKh73lsdsvwoJ6Hx7fmPIDKoqGiUl2GEoZzy-iJfn4SfQQcx7yQdHf9RknwrL_lSM
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
VITE_API_BASE_URL=/api/v1/
|
VITE_API_BASE_URL=api/v1/
|
||||||
|
VITE_PUBLIC_VAPID_KEY=BH3w49sZA6jXUnE-yt4jO6VKh73lsdsvwoJ6Hx7fmPIDKoqGiUl2GEoZzy-iJfn4SfQQcx7yQdHf9RknwrL_lSM
|
||||||
|
|||||||
45
.github/ISSUE_TEMPLATE/rfc.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
name: 功能提案
|
||||||
|
description: Request for Comments
|
||||||
|
title: '[RFC]'
|
||||||
|
labels: ['RFC']
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
一份提案(RFC)定位为 **「在某功能/重构的具体开发前,用于开发者间 review 技术设计/方案的文档」**,
|
||||||
|
目的是让协作的开发者间清晰的知道「要做什么」和「具体会怎么做」,以及所有的开发者都能公开透明的参与讨论;
|
||||||
|
以便评估和讨论产生的影响 (遗漏的考虑、向后兼容性、与现有功能的冲突),
|
||||||
|
因此提案侧重在对解决问题的 **方案、设计、步骤** 的描述上。
|
||||||
|
|
||||||
|
如果仅希望讨论是否添加或改进某功能本身,请使用 -> [Issue: 功能改进](https://github.com/jxxghp/MoviePilot/issues/new?assignees=&labels=feature+request&projects=&template=feature_request.yml&title=%5BFeature+Request%5D%3A+)
|
||||||
|
- type: textarea
|
||||||
|
id: background
|
||||||
|
attributes:
|
||||||
|
label: 背景 or 问题
|
||||||
|
description: 简单描述遇到的什么问题或需要改动什么。可以引用其他 issue、讨论、文档等。
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: goal
|
||||||
|
attributes:
|
||||||
|
label: '目标 & 方案简述'
|
||||||
|
description: 简单描述提案此提案实现后,**预期的目标效果**,以及简单大致描述会采取的方案/步骤,可能会/不会产生什么影响。
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: design
|
||||||
|
attributes:
|
||||||
|
label: '方案设计 & 实现步骤'
|
||||||
|
description: |
|
||||||
|
详细描述你设计的具体方案,可以考虑拆分列表或要点,一步步描述具体打算如何实现的步骤和相关细节。
|
||||||
|
这部份不需要一次性写完整,即使在创建完此提案 issue 后,依旧可以再次编辑修改。
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
id: alternative
|
||||||
|
attributes:
|
||||||
|
label: '替代方案 & 对比'
|
||||||
|
description: |
|
||||||
|
[可选] 为来实现目标效果,还考虑过什么其他方案,有什么对比?
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
26
.github/workflows/build.yml
vendored
@@ -1,12 +1,12 @@
|
|||||||
name: Build moviepilot frontend
|
name: Build Moviepilot-Frontend v2
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- package.json
|
- 'package.json'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -24,23 +24,39 @@ jobs:
|
|||||||
- name: Setup node
|
- name: Setup node
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '20'
|
||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
|
|
||||||
|
- name: Download Icons
|
||||||
|
run: |
|
||||||
|
pwd
|
||||||
|
curl -sL "https://github.com/jxxghp/MoviePilot-Plugins/archive/refs/heads/main.zip" | busybox unzip -d /tmp -
|
||||||
|
mv /tmp/MoviePilot-Plugins-main/icons public/plugin_icon
|
||||||
|
rm -rf /tmp/MoviePilot-Plugins-main
|
||||||
|
|
||||||
- name: Build frontend
|
- name: Build frontend
|
||||||
id: build_frontend
|
id: build_frontend
|
||||||
run: |
|
run: |
|
||||||
yarn
|
yarn
|
||||||
yarn build
|
yarn build
|
||||||
|
echo "$frontend_version" > dist/version.txt
|
||||||
zip -r dist.zip dist
|
zip -r dist.zip dist
|
||||||
|
|
||||||
|
- name: Delete Release
|
||||||
|
uses: dev-drprasad/delete-tag-and-release@v1.1
|
||||||
|
with:
|
||||||
|
tag_name: ${{ env.frontend_version }}
|
||||||
|
delete_release: true
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Generate Release
|
- name: Generate Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ env.frontend_version }}
|
tag_name: ${{ env.frontend_version }}
|
||||||
name: ${{ env.frontend_version }}
|
name: ${{ env.frontend_version }}
|
||||||
draft: false
|
draft: false
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
make_latest: false
|
||||||
files: |
|
files: |
|
||||||
dist.zip
|
dist.zip
|
||||||
env:
|
env:
|
||||||
|
|||||||
2
.gitignore
vendored
@@ -11,6 +11,7 @@ node_modules
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
dist
|
dist
|
||||||
dist-ssr
|
dist-ssr
|
||||||
|
dev-dist
|
||||||
*.local
|
*.local
|
||||||
|
|
||||||
/cypress/videos/
|
/cypress/videos/
|
||||||
@@ -32,3 +33,4 @@ dist-ssr
|
|||||||
|
|
||||||
# iconify dist files
|
# iconify dist files
|
||||||
src/@iconify/*.js
|
src/@iconify/*.js
|
||||||
|
public/plugin_icon/**
|
||||||
|
|||||||
@@ -21,14 +21,9 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"max-line-length": [
|
|
||||||
120,
|
|
||||||
{
|
|
||||||
"ignore": "comments"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"liberty/use-logical-spec": true,
|
"liberty/use-logical-spec": true,
|
||||||
"selector-class-pattern": null,
|
"selector-class-pattern": null,
|
||||||
"color-function-notation": null
|
"color-function-notation": null
|
||||||
}
|
},
|
||||||
}
|
"fix": true
|
||||||
|
}
|
||||||
17
.vscode/settings.json
vendored
@@ -6,15 +6,13 @@
|
|||||||
"[javascript]": {
|
"[javascript]": {
|
||||||
"editor.formatOnSave": false
|
"editor.formatOnSave": false
|
||||||
},
|
},
|
||||||
"[typescript]": {
|
|
||||||
"editor.formatOnSave": false
|
|
||||||
},
|
|
||||||
"[markdown]": {
|
"[markdown]": {
|
||||||
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
|
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
|
||||||
},
|
},
|
||||||
// SCSS
|
// SCSS
|
||||||
"[scss]": {
|
"[scss]": {
|
||||||
"editor.defaultFormatter": "stylelint.vscode-stylelint"
|
"editor.defaultFormatter": "stylelint.vscode-stylelint",
|
||||||
|
"editor.formatOnSave": false
|
||||||
},
|
},
|
||||||
// JSON
|
// JSON
|
||||||
"[json]": {
|
"[json]": {
|
||||||
@@ -25,14 +23,18 @@
|
|||||||
},
|
},
|
||||||
// Vue
|
// Vue
|
||||||
"[vue]": {
|
"[vue]": {
|
||||||
"editor.formatOnSave": false
|
"editor.formatOnSave": true
|
||||||
},
|
},
|
||||||
// Extension: Volar
|
// Extension: Volar
|
||||||
"volar.preview.port": 3000,
|
"volar.preview.port": 3000,
|
||||||
"volar.completion.preferredTagNameCase": "pascal",
|
"volar.completion.preferredTagNameCase": "pascal",
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll.eslint": true,
|
"source.fixAll.eslint": "explicit",
|
||||||
"source.fixAll.stylelint": true
|
"source.fixAll.stylelint": "explicit"
|
||||||
|
},
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
"editor.formatOnSave": true
|
||||||
},
|
},
|
||||||
"eslint.alwaysShowStatus": true,
|
"eslint.alwaysShowStatus": true,
|
||||||
"eslint.format.enable": true,
|
"eslint.format.enable": true,
|
||||||
@@ -53,6 +55,7 @@
|
|||||||
"stylelint",
|
"stylelint",
|
||||||
"touchless",
|
"touchless",
|
||||||
"triggerer",
|
"triggerer",
|
||||||
|
"unref",
|
||||||
"vuetify"
|
"vuetify"
|
||||||
],
|
],
|
||||||
// Extension: Comment Anchors
|
// Extension: Comment Anchors
|
||||||
|
|||||||
32
README.md
@@ -1,35 +1,41 @@
|
|||||||
# MoviePilot-Frontend
|
# MoviePilot-Frontend
|
||||||
|
|
||||||
This template should help get you started developing with Vue 3 in Vite.
|
*中文 | [English](README_EN.md)*
|
||||||
|
|
||||||
## Recommended IDE Setup
|
[MoviePilot](https://github.com/jxxghp/MoviePilot) 的前端项目,NodeJS版本:>= `v20.12.1`。
|
||||||
|
|
||||||
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur).
|
## 推荐的IDE设置
|
||||||
|
|
||||||
## Type Support for `.vue` Imports in TS
|
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (并禁用 Vetur).
|
||||||
|
|
||||||
Since TypeScript cannot handle type information for `.vue` imports, they are shimmed to be a generic Vue component type by default. In most cases this is fine if you don't really care about component prop types outside of templates.
|
## 配置Vite
|
||||||
|
|
||||||
However, if you wish to get actual prop types in `.vue` imports (for example to get props validation when using manual `h(...)` calls), you can run `Volar: Switch TS Plugin on/off` from VSCode command palette.
|
请参阅 [Vite 配置参考](https://vitejs.dev/config/).
|
||||||
|
|
||||||
## Customize configuration
|
## 依赖安装
|
||||||
|
|
||||||
See [Vite Configuration Reference](https://vitejs.dev/config/).
|
|
||||||
|
|
||||||
## Project Setup
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yarn
|
yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
### Compile and Hot-Reload for Development
|
### 开发运行
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yarn dev
|
yarn dev
|
||||||
```
|
```
|
||||||
|
|
||||||
### Type-Check, Compile and Minify for Production
|
### 编译打包
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
yarn build
|
yarn build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 静态运行
|
||||||
|
|
||||||
|
1. 使用 `nginx` 等Web服务器托管 `dist` 静态文件,nginx配置参考 `public/nginx.conf`。
|
||||||
|
|
||||||
|
2. 使用 `node` 命令直接运行`service.js`,默认监听 `3000` 端口,设置环境变量 `NGINX_PORT` 来调整运行端口。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
node dist/service.js
|
||||||
|
```
|
||||||
|
|||||||
41
README_EN.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# MoviePilot-Frontend
|
||||||
|
|
||||||
|
*[中文](README.md) | English*
|
||||||
|
|
||||||
|
Frontend project for [MoviePilot](https://github.com/jxxghp/MoviePilot), NodeJS version: >= `v20.12.1`.
|
||||||
|
|
||||||
|
## Recommended IDE Setup
|
||||||
|
|
||||||
|
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (disable Vetur).
|
||||||
|
|
||||||
|
## Vite Configuration
|
||||||
|
|
||||||
|
Please refer to [Vite Configuration Reference](https://vitejs.dev/config/).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn
|
||||||
|
```
|
||||||
|
|
||||||
|
### Development
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Production Deployment
|
||||||
|
|
||||||
|
1. Use `nginx` or other web servers to host the `dist` static files. See `public/nginx.conf` for nginx configuration reference.
|
||||||
|
|
||||||
|
2. Use `node` command to run `service.js` directly. It listens on port `3000` by default. Set the environment variable `NGINX_PORT` to adjust the port.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
node dist/service.js
|
||||||
|
```
|
||||||
77
auto-imports.d.ts
vendored
@@ -1,10 +1,13 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
|
// noinspection JSUnusedGlobalSymbols
|
||||||
// Generated by unplugin-auto-import
|
// Generated by unplugin-auto-import
|
||||||
|
// biome-ignore lint: disable
|
||||||
export {}
|
export {}
|
||||||
declare global {
|
declare global {
|
||||||
const EffectScope: typeof import('vue')['EffectScope']
|
const EffectScope: typeof import('vue')['EffectScope']
|
||||||
|
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
|
||||||
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
||||||
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
||||||
const computed: typeof import('vue')['computed']
|
const computed: typeof import('vue')['computed']
|
||||||
@@ -19,13 +22,12 @@ declare global {
|
|||||||
const createGenericProjection: typeof import('@vueuse/math')['createGenericProjection']
|
const createGenericProjection: typeof import('@vueuse/math')['createGenericProjection']
|
||||||
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
|
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
|
||||||
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
|
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
|
||||||
const createLogger: typeof import('vuex')['createLogger']
|
const createPinia: typeof import('pinia')['createPinia']
|
||||||
const createNamespacedHelpers: typeof import('vuex')['createNamespacedHelpers']
|
|
||||||
const createProjection: typeof import('@vueuse/math')['createProjection']
|
const createProjection: typeof import('@vueuse/math')['createProjection']
|
||||||
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
|
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
|
||||||
|
const createRef: typeof import('@vueuse/core')['createRef']
|
||||||
const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
|
const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
|
||||||
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
|
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
|
||||||
const createStore: typeof import('vuex')['createStore']
|
|
||||||
const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
|
const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
|
||||||
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
|
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
|
||||||
const customRef: typeof import('vue')['customRef']
|
const customRef: typeof import('vue')['customRef']
|
||||||
@@ -33,14 +35,17 @@ declare global {
|
|||||||
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
|
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
|
||||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
||||||
const defineComponent: typeof import('vue')['defineComponent']
|
const defineComponent: typeof import('vue')['defineComponent']
|
||||||
|
const defineStore: typeof import('pinia')['defineStore']
|
||||||
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
|
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
|
||||||
const effectScope: typeof import('vue')['effectScope']
|
const effectScope: typeof import('vue')['effectScope']
|
||||||
const extendRef: typeof import('@vueuse/core')['extendRef']
|
const extendRef: typeof import('@vueuse/core')['extendRef']
|
||||||
|
const getActivePinia: typeof import('pinia')['getActivePinia']
|
||||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
||||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
||||||
const h: typeof import('vue')['h']
|
const h: typeof import('vue')['h']
|
||||||
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
|
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
|
||||||
const inject: typeof import('vue')['inject']
|
const inject: typeof import('vue')['inject']
|
||||||
|
const injectLocal: typeof import('@vueuse/core')['injectLocal']
|
||||||
const isDefined: typeof import('@vueuse/core')['isDefined']
|
const isDefined: typeof import('@vueuse/core')['isDefined']
|
||||||
const isProxy: typeof import('vue')['isProxy']
|
const isProxy: typeof import('vue')['isProxy']
|
||||||
const isReactive: typeof import('vue')['isReactive']
|
const isReactive: typeof import('vue')['isReactive']
|
||||||
@@ -50,10 +55,11 @@ declare global {
|
|||||||
const logicNot: typeof import('@vueuse/math')['logicNot']
|
const logicNot: typeof import('@vueuse/math')['logicNot']
|
||||||
const logicOr: typeof import('@vueuse/math')['logicOr']
|
const logicOr: typeof import('@vueuse/math')['logicOr']
|
||||||
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
|
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
|
||||||
const mapActions: typeof import('vuex')['mapActions']
|
const mapActions: typeof import('pinia')['mapActions']
|
||||||
const mapGetters: typeof import('vuex')['mapGetters']
|
const mapGetters: typeof import('pinia')['mapGetters']
|
||||||
const mapMutations: typeof import('vuex')['mapMutations']
|
const mapState: typeof import('pinia')['mapState']
|
||||||
const mapState: typeof import('vuex')['mapState']
|
const mapStores: typeof import('pinia')['mapStores']
|
||||||
|
const mapWritableState: typeof import('pinia')['mapWritableState']
|
||||||
const markRaw: typeof import('vue')['markRaw']
|
const markRaw: typeof import('vue')['markRaw']
|
||||||
const nextTick: typeof import('vue')['nextTick']
|
const nextTick: typeof import('vue')['nextTick']
|
||||||
const onActivated: typeof import('vue')['onActivated']
|
const onActivated: typeof import('vue')['onActivated']
|
||||||
@@ -64,6 +70,7 @@ declare global {
|
|||||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
||||||
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
|
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
|
||||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
const onDeactivated: typeof import('vue')['onDeactivated']
|
||||||
|
const onElementRemoval: typeof import('@vueuse/core')['onElementRemoval']
|
||||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
||||||
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
|
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
|
||||||
const onLongPress: typeof import('@vueuse/core')['onLongPress']
|
const onLongPress: typeof import('@vueuse/core')['onLongPress']
|
||||||
@@ -75,8 +82,10 @@ declare global {
|
|||||||
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
|
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
|
||||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
const onUnmounted: typeof import('vue')['onUnmounted']
|
||||||
const onUpdated: typeof import('vue')['onUpdated']
|
const onUpdated: typeof import('vue')['onUpdated']
|
||||||
|
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
|
||||||
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
|
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
|
||||||
const provide: typeof import('vue')['provide']
|
const provide: typeof import('vue')['provide']
|
||||||
|
const provideLocal: typeof import('@vueuse/core')['provideLocal']
|
||||||
const reactify: typeof import('@vueuse/core')['reactify']
|
const reactify: typeof import('@vueuse/core')['reactify']
|
||||||
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
|
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
|
||||||
const reactive: typeof import('vue')['reactive']
|
const reactive: typeof import('vue')['reactive']
|
||||||
@@ -93,9 +102,12 @@ declare global {
|
|||||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
const resolveComponent: typeof import('vue')['resolveComponent']
|
||||||
const resolveRef: typeof import('@vueuse/core')['resolveRef']
|
const resolveRef: typeof import('@vueuse/core')['resolveRef']
|
||||||
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
|
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
|
||||||
|
const setActivePinia: typeof import('pinia')['setActivePinia']
|
||||||
|
const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
|
||||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||||
const shallowRef: typeof import('vue')['shallowRef']
|
const shallowRef: typeof import('vue')['shallowRef']
|
||||||
|
const storeToRefs: typeof import('pinia')['storeToRefs']
|
||||||
const syncRef: typeof import('@vueuse/core')['syncRef']
|
const syncRef: typeof import('@vueuse/core')['syncRef']
|
||||||
const syncRefs: typeof import('@vueuse/core')['syncRefs']
|
const syncRefs: typeof import('@vueuse/core')['syncRefs']
|
||||||
const templateRef: typeof import('@vueuse/core')['templateRef']
|
const templateRef: typeof import('@vueuse/core')['templateRef']
|
||||||
@@ -105,6 +117,7 @@ declare global {
|
|||||||
const toReactive: typeof import('@vueuse/core')['toReactive']
|
const toReactive: typeof import('@vueuse/core')['toReactive']
|
||||||
const toRef: typeof import('vue')['toRef']
|
const toRef: typeof import('vue')['toRef']
|
||||||
const toRefs: typeof import('vue')['toRefs']
|
const toRefs: typeof import('vue')['toRefs']
|
||||||
|
const toValue: typeof import('vue')['toValue']
|
||||||
const triggerRef: typeof import('vue')['triggerRef']
|
const triggerRef: typeof import('vue')['triggerRef']
|
||||||
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
|
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
|
||||||
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
|
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
|
||||||
@@ -143,9 +156,11 @@ declare global {
|
|||||||
const useCeil: typeof import('@vueuse/math')['useCeil']
|
const useCeil: typeof import('@vueuse/math')['useCeil']
|
||||||
const useClamp: typeof import('@vueuse/math')['useClamp']
|
const useClamp: typeof import('@vueuse/math')['useClamp']
|
||||||
const useClipboard: typeof import('@vueuse/core')['useClipboard']
|
const useClipboard: typeof import('@vueuse/core')['useClipboard']
|
||||||
|
const useClipboardItems: typeof import('@vueuse/core')['useClipboardItems']
|
||||||
const useCloned: typeof import('@vueuse/core')['useCloned']
|
const useCloned: typeof import('@vueuse/core')['useCloned']
|
||||||
const useColorMode: typeof import('@vueuse/core')['useColorMode']
|
const useColorMode: typeof import('@vueuse/core')['useColorMode']
|
||||||
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
|
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
|
||||||
|
const useCountdown: typeof import('@vueuse/core')['useCountdown']
|
||||||
const useCounter: typeof import('@vueuse/core')['useCounter']
|
const useCounter: typeof import('@vueuse/core')['useCounter']
|
||||||
const useCssModule: typeof import('vue')['useCssModule']
|
const useCssModule: typeof import('vue')['useCssModule']
|
||||||
const useCssVar: typeof import('@vueuse/core')['useCssVar']
|
const useCssVar: typeof import('@vueuse/core')['useCssVar']
|
||||||
@@ -185,6 +200,8 @@ declare global {
|
|||||||
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
|
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
|
||||||
const useGamepad: typeof import('@vueuse/core')['useGamepad']
|
const useGamepad: typeof import('@vueuse/core')['useGamepad']
|
||||||
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
|
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
|
||||||
|
const useI18n: typeof import('vue-i18n')['useI18n']
|
||||||
|
const useId: typeof import('vue')['useId']
|
||||||
const useIdle: typeof import('@vueuse/core')['useIdle']
|
const useIdle: typeof import('@vueuse/core')['useIdle']
|
||||||
const useImage: typeof import('@vueuse/core')['useImage']
|
const useImage: typeof import('@vueuse/core')['useImage']
|
||||||
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
|
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
|
||||||
@@ -204,6 +221,7 @@ declare global {
|
|||||||
const useMemoize: typeof import('@vueuse/core')['useMemoize']
|
const useMemoize: typeof import('@vueuse/core')['useMemoize']
|
||||||
const useMemory: typeof import('@vueuse/core')['useMemory']
|
const useMemory: typeof import('@vueuse/core')['useMemory']
|
||||||
const useMin: typeof import('@vueuse/math')['useMin']
|
const useMin: typeof import('@vueuse/math')['useMin']
|
||||||
|
const useModel: typeof import('vue')['useModel']
|
||||||
const useMounted: typeof import('@vueuse/core')['useMounted']
|
const useMounted: typeof import('@vueuse/core')['useMounted']
|
||||||
const useMouse: typeof import('@vueuse/core')['useMouse']
|
const useMouse: typeof import('@vueuse/core')['useMouse']
|
||||||
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
|
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
|
||||||
@@ -229,6 +247,7 @@ declare global {
|
|||||||
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
|
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
|
||||||
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
|
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
|
||||||
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
|
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
|
||||||
|
const usePreferredReducedTransparency: typeof import('@vueuse/core')['usePreferredReducedTransparency']
|
||||||
const usePrevious: typeof import('@vueuse/core')['usePrevious']
|
const usePrevious: typeof import('@vueuse/core')['usePrevious']
|
||||||
const useProjection: typeof import('@vueuse/math')['useProjection']
|
const useProjection: typeof import('@vueuse/math')['useProjection']
|
||||||
const useRafFn: typeof import('@vueuse/core')['useRafFn']
|
const useRafFn: typeof import('@vueuse/core')['useRafFn']
|
||||||
@@ -237,6 +256,7 @@ declare global {
|
|||||||
const useRound: typeof import('@vueuse/math')['useRound']
|
const useRound: typeof import('@vueuse/math')['useRound']
|
||||||
const useRoute: typeof import('vue-router')['useRoute']
|
const useRoute: typeof import('vue-router')['useRoute']
|
||||||
const useRouter: typeof import('vue-router')['useRouter']
|
const useRouter: typeof import('vue-router')['useRouter']
|
||||||
|
const useSSRWidth: typeof import('@vueuse/core')['useSSRWidth']
|
||||||
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
|
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
|
||||||
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
|
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
|
||||||
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
|
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
|
||||||
@@ -251,11 +271,11 @@ declare global {
|
|||||||
const useStepper: typeof import('@vueuse/core')['useStepper']
|
const useStepper: typeof import('@vueuse/core')['useStepper']
|
||||||
const useStorage: typeof import('@vueuse/core')['useStorage']
|
const useStorage: typeof import('@vueuse/core')['useStorage']
|
||||||
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
|
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
|
||||||
const useStore: typeof import('vuex')['useStore']
|
|
||||||
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
|
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
|
||||||
const useSum: typeof import('@vueuse/math')['useSum']
|
const useSum: typeof import('@vueuse/math')['useSum']
|
||||||
const useSupported: typeof import('@vueuse/core')['useSupported']
|
const useSupported: typeof import('@vueuse/core')['useSupported']
|
||||||
const useSwipe: typeof import('@vueuse/core')['useSwipe']
|
const useSwipe: typeof import('@vueuse/core')['useSwipe']
|
||||||
|
const useTemplateRef: typeof import('vue')['useTemplateRef']
|
||||||
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
|
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
|
||||||
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
|
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
|
||||||
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
|
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
|
||||||
@@ -308,13 +328,17 @@ declare global {
|
|||||||
// for type re-export
|
// for type re-export
|
||||||
declare global {
|
declare global {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
|
export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
|
||||||
|
import('vue')
|
||||||
}
|
}
|
||||||
|
|
||||||
// for vue template auto import
|
// for vue template auto import
|
||||||
import { UnwrapRef } from 'vue'
|
import { UnwrapRef } from 'vue'
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
|
interface GlobalComponents {}
|
||||||
interface ComponentCustomProperties {
|
interface ComponentCustomProperties {
|
||||||
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
||||||
|
readonly acceptHMRUpdate: UnwrapRef<typeof import('pinia')['acceptHMRUpdate']>
|
||||||
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
||||||
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
||||||
readonly computed: UnwrapRef<typeof import('vue')['computed']>
|
readonly computed: UnwrapRef<typeof import('vue')['computed']>
|
||||||
@@ -329,13 +353,12 @@ declare module 'vue' {
|
|||||||
readonly createGenericProjection: UnwrapRef<typeof import('@vueuse/math')['createGenericProjection']>
|
readonly createGenericProjection: UnwrapRef<typeof import('@vueuse/math')['createGenericProjection']>
|
||||||
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
||||||
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
||||||
readonly createLogger: UnwrapRef<typeof import('vuex')['createLogger']>
|
readonly createPinia: UnwrapRef<typeof import('pinia')['createPinia']>
|
||||||
readonly createNamespacedHelpers: UnwrapRef<typeof import('vuex')['createNamespacedHelpers']>
|
|
||||||
readonly createProjection: UnwrapRef<typeof import('@vueuse/math')['createProjection']>
|
readonly createProjection: UnwrapRef<typeof import('@vueuse/math')['createProjection']>
|
||||||
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
||||||
|
readonly createRef: UnwrapRef<typeof import('@vueuse/core')['createRef']>
|
||||||
readonly createReusableTemplate: UnwrapRef<typeof import('@vueuse/core')['createReusableTemplate']>
|
readonly createReusableTemplate: UnwrapRef<typeof import('@vueuse/core')['createReusableTemplate']>
|
||||||
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
||||||
readonly createStore: UnwrapRef<typeof import('vuex')['createStore']>
|
|
||||||
readonly createTemplatePromise: UnwrapRef<typeof import('@vueuse/core')['createTemplatePromise']>
|
readonly createTemplatePromise: UnwrapRef<typeof import('@vueuse/core')['createTemplatePromise']>
|
||||||
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
||||||
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
||||||
@@ -343,14 +366,17 @@ declare module 'vue' {
|
|||||||
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
||||||
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
||||||
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
||||||
|
readonly defineStore: UnwrapRef<typeof import('pinia')['defineStore']>
|
||||||
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
||||||
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
||||||
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
||||||
|
readonly getActivePinia: UnwrapRef<typeof import('pinia')['getActivePinia']>
|
||||||
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
||||||
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
||||||
readonly h: UnwrapRef<typeof import('vue')['h']>
|
readonly h: UnwrapRef<typeof import('vue')['h']>
|
||||||
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
||||||
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
||||||
|
readonly injectLocal: UnwrapRef<typeof import('@vueuse/core')['injectLocal']>
|
||||||
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
||||||
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
||||||
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
||||||
@@ -360,10 +386,11 @@ declare module 'vue' {
|
|||||||
readonly logicNot: UnwrapRef<typeof import('@vueuse/math')['logicNot']>
|
readonly logicNot: UnwrapRef<typeof import('@vueuse/math')['logicNot']>
|
||||||
readonly logicOr: UnwrapRef<typeof import('@vueuse/math')['logicOr']>
|
readonly logicOr: UnwrapRef<typeof import('@vueuse/math')['logicOr']>
|
||||||
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
||||||
readonly mapActions: UnwrapRef<typeof import('vuex')['mapActions']>
|
readonly mapActions: UnwrapRef<typeof import('pinia')['mapActions']>
|
||||||
readonly mapGetters: UnwrapRef<typeof import('vuex')['mapGetters']>
|
readonly mapGetters: UnwrapRef<typeof import('pinia')['mapGetters']>
|
||||||
readonly mapMutations: UnwrapRef<typeof import('vuex')['mapMutations']>
|
readonly mapState: UnwrapRef<typeof import('pinia')['mapState']>
|
||||||
readonly mapState: UnwrapRef<typeof import('vuex')['mapState']>
|
readonly mapStores: UnwrapRef<typeof import('pinia')['mapStores']>
|
||||||
|
readonly mapWritableState: UnwrapRef<typeof import('pinia')['mapWritableState']>
|
||||||
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
||||||
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
||||||
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
|
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
|
||||||
@@ -374,6 +401,7 @@ declare module 'vue' {
|
|||||||
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
||||||
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
||||||
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
||||||
|
readonly onElementRemoval: UnwrapRef<typeof import('@vueuse/core')['onElementRemoval']>
|
||||||
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
||||||
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
||||||
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
||||||
@@ -385,8 +413,10 @@ declare module 'vue' {
|
|||||||
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
||||||
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
||||||
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
||||||
|
readonly onWatcherCleanup: UnwrapRef<typeof import('vue')['onWatcherCleanup']>
|
||||||
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
||||||
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
||||||
|
readonly provideLocal: UnwrapRef<typeof import('@vueuse/core')['provideLocal']>
|
||||||
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
||||||
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
||||||
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
||||||
@@ -403,9 +433,12 @@ declare module 'vue' {
|
|||||||
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
||||||
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
||||||
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
|
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
|
||||||
|
readonly setActivePinia: UnwrapRef<typeof import('pinia')['setActivePinia']>
|
||||||
|
readonly setMapStoreSuffix: UnwrapRef<typeof import('pinia')['setMapStoreSuffix']>
|
||||||
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
||||||
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
||||||
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
||||||
|
readonly storeToRefs: UnwrapRef<typeof import('pinia')['storeToRefs']>
|
||||||
readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']>
|
readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']>
|
||||||
readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']>
|
readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']>
|
||||||
readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']>
|
readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']>
|
||||||
@@ -415,6 +448,7 @@ declare module 'vue' {
|
|||||||
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
||||||
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
||||||
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
||||||
|
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
|
||||||
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
||||||
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
||||||
readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']>
|
readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']>
|
||||||
@@ -453,9 +487,11 @@ declare module 'vue' {
|
|||||||
readonly useCeil: UnwrapRef<typeof import('@vueuse/math')['useCeil']>
|
readonly useCeil: UnwrapRef<typeof import('@vueuse/math')['useCeil']>
|
||||||
readonly useClamp: UnwrapRef<typeof import('@vueuse/math')['useClamp']>
|
readonly useClamp: UnwrapRef<typeof import('@vueuse/math')['useClamp']>
|
||||||
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
||||||
|
readonly useClipboardItems: UnwrapRef<typeof import('@vueuse/core')['useClipboardItems']>
|
||||||
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
||||||
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
||||||
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
||||||
|
readonly useCountdown: UnwrapRef<typeof import('@vueuse/core')['useCountdown']>
|
||||||
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
||||||
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||||
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
||||||
@@ -495,6 +531,8 @@ declare module 'vue' {
|
|||||||
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
||||||
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
||||||
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
||||||
|
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
|
||||||
|
readonly useId: UnwrapRef<typeof import('vue')['useId']>
|
||||||
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
||||||
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
||||||
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
||||||
@@ -514,6 +552,7 @@ declare module 'vue' {
|
|||||||
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
||||||
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
||||||
readonly useMin: UnwrapRef<typeof import('@vueuse/math')['useMin']>
|
readonly useMin: UnwrapRef<typeof import('@vueuse/math')['useMin']>
|
||||||
|
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
|
||||||
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
||||||
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
||||||
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
||||||
@@ -539,6 +578,7 @@ declare module 'vue' {
|
|||||||
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
||||||
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
||||||
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
||||||
|
readonly usePreferredReducedTransparency: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedTransparency']>
|
||||||
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
||||||
readonly useProjection: UnwrapRef<typeof import('@vueuse/math')['useProjection']>
|
readonly useProjection: UnwrapRef<typeof import('@vueuse/math')['useProjection']>
|
||||||
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
||||||
@@ -547,6 +587,7 @@ declare module 'vue' {
|
|||||||
readonly useRound: UnwrapRef<typeof import('@vueuse/math')['useRound']>
|
readonly useRound: UnwrapRef<typeof import('@vueuse/math')['useRound']>
|
||||||
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
||||||
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
||||||
|
readonly useSSRWidth: UnwrapRef<typeof import('@vueuse/core')['useSSRWidth']>
|
||||||
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
||||||
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
||||||
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
||||||
@@ -561,11 +602,11 @@ declare module 'vue' {
|
|||||||
readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']>
|
readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']>
|
||||||
readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']>
|
readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']>
|
||||||
readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']>
|
readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']>
|
||||||
readonly useStore: UnwrapRef<typeof import('vuex')['useStore']>
|
|
||||||
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
||||||
readonly useSum: UnwrapRef<typeof import('@vueuse/math')['useSum']>
|
readonly useSum: UnwrapRef<typeof import('@vueuse/math')['useSum']>
|
||||||
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
||||||
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
||||||
|
readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
|
||||||
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
||||||
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
||||||
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
||||||
@@ -615,4 +656,4 @@ declare module 'vue' {
|
|||||||
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
||||||
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
12
components.d.ts
vendored
@@ -1,20 +1,24 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
/* prettier-ignore */
|
|
||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
// Generated by unplugin-vue-components
|
// Generated by unplugin-vue-components
|
||||||
// Read more: https://github.com/vuejs/core/pull/3399
|
// Read more: https://github.com/vuejs/core/pull/3399
|
||||||
import '@vue/runtime-core'
|
// biome-ignore lint: disable
|
||||||
|
|
||||||
export {}
|
export {}
|
||||||
|
|
||||||
declare module '@vue/runtime-core' {
|
/* prettier-ignore */
|
||||||
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
DialogCloseBtn: typeof import('./src/@core/components/DialogCloseBtn.vue')['default']
|
DialogCloseBtn: typeof import('./src/@core/components/DialogCloseBtn.vue')['default']
|
||||||
ErrorHeader: typeof import('./src/@core/components/ErrorHeader.vue')['default']
|
ErrorHeader: typeof import('./src/@core/components/ErrorHeader.vue')['default']
|
||||||
ExistIcon: typeof import('./src/@core/components/ExistIcon.vue')['default']
|
ExistIcon: typeof import('./src/@core/components/ExistIcon.vue')['default']
|
||||||
|
LoadingBanner: typeof import('./src/@core/components/LoadingBanner.vue')['default']
|
||||||
|
LocaleSwitcher: typeof import('./src/@core/components/LocaleSwitcher.vue')['default']
|
||||||
MoreBtn: typeof import('./src/@core/components/MoreBtn.vue')['default']
|
MoreBtn: typeof import('./src/@core/components/MoreBtn.vue')['default']
|
||||||
|
PageContentTitle: typeof import('./src/@core/components/PageContentTitle.vue')['default']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
RouterView: typeof import('vue-router')['RouterView']
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
|
ScrollToTopBtn: typeof import('./src/@core/components/ScrollToTopBtn.vue')['default']
|
||||||
|
StatIcon: typeof import('./src/@core/components/StatIcon.vue')['default']
|
||||||
ThemeSwitcher: typeof import('./src/@core/components/ThemeSwitcher.vue')['default']
|
ThemeSwitcher: typeof import('./src/@core/components/ThemeSwitcher.vue')['default']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
322
index.html
@@ -1,162 +1,214 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en" style="
|
||||||
|
overflow: hidden auto;
|
||||||
|
min-block-size: calc(100% + env(safe-area-inset-top) + env(safe-area-inset-bottom));
|
||||||
|
background: var(--initial-loader-bg, #fff);
|
||||||
|
">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
<meta http-equiv="pragma" content="no-cache" />
|
||||||
|
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" />
|
||||||
|
<meta http-equiv="expires" content="0" />
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="initial-scale=1, viewport-fit=cover, width=device-width, user-scalable=no" />
|
<meta name="viewport" content="initial-scale=1, viewport-fit=cover, width=device-width, user-scalable=no" />
|
||||||
<title>MoviePilot</title>
|
<title>MoviePilot</title>
|
||||||
<meta name="Robots" content="noindex,nofollow,noarchive">
|
<meta name="Robots" content="noindex,nofollow,noarchive" />
|
||||||
<meta name="referrer" content="origin">
|
<meta name="referrer" content="origin" />
|
||||||
<link rel="icon" type="image/png" href="/logo.png">
|
<link rel="icon" type="image/png" href="/logo.png" />
|
||||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||||
<link rel="apple-touch-startup-image" href="/splash/apple-splash.jpg">
|
<link rel="apple-touch-startup-image" href="/splash/apple-splash.jpg" />
|
||||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="manifest" href="manifest.json" crossorigin="use-credentials">
|
|
||||||
<meta name="mobile-web-app-capable" content="yes" />
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
<meta name="apple-mobile-web-app-title" content="MoviePilot">
|
<meta name="apple-mobile-web-app-title" content="MoviePilot" />
|
||||||
<meta name="description" content="MoviePilot">
|
<meta name="description" content="MoviePilot" />
|
||||||
<meta name="format-detection" content="telephone=no">
|
<meta name="format-detection" content="telephone=no" />
|
||||||
<meta name="referrer" content="never">
|
<meta name="referrer" content="never" />
|
||||||
<meta name="msapplication-TileColor" content="#7D34FD" />
|
<meta name="msapplication-TileColor" content="#7D34FD" />
|
||||||
<meta name="color-scheme" content="light dark">
|
<meta name="color-scheme" content="light dark" />
|
||||||
<meta name="theme-color" content="#28243D" media="(prefers-color-scheme: dark)">
|
<meta name="theme-color" content="#0E1116" media="(prefers-color-scheme: dark)" />
|
||||||
<meta name="theme-color" content="#F4F5FA" media="(prefers-color-scheme: light)">
|
<meta name="theme-color" content="#F4F5FA" media="(prefers-color-scheme: light)" />
|
||||||
<meta name="HandheldFriendly" content="True" />
|
<meta name="HandheldFriendly" content="True" />
|
||||||
<meta name="MobileOptimized" content="320" />
|
<meta name="MobileOptimized" content="320" />
|
||||||
<link rel="stylesheet" type="text/css" href="/loader.css" />
|
<link rel="stylesheet" type="text/css" href="/loader.css" />
|
||||||
|
<script>
|
||||||
|
const loaderColor = localStorage.getItem('materio-initial-loader-bg') || '#FFFFFF'
|
||||||
|
if (loaderColor) document.documentElement.style.setProperty('--initial-loader-bg', loaderColor)
|
||||||
|
const primaryColor = localStorage.getItem('materio-initial-loader-color') || '#9155FD'
|
||||||
|
if (primaryColor) document.documentElement.style.setProperty('--initial-loader-color', primaryColor)
|
||||||
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body style="margin: 0">
|
||||||
<div id="app">
|
<div id="loading-bg">
|
||||||
<div id="loading-bg">
|
<div class="loading-logo">
|
||||||
<div class="loading-logo">
|
<!-- Logo -->
|
||||||
<!-- Logo -->
|
<svg width="160px" height="160px" viewBox="0 0 192 192" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||||
<svg width="100px" height="100px" viewBox="0 0 192 192" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
style="fill-rule: evenodd; clip-rule: evenodd; stroke-linejoin: round; stroke-miterlimit: 2">
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/"
|
<style>
|
||||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
/* 添加SVG内部的动画样式 */
|
||||||
<g transform="matrix(1,0,0,1,-2606,-236)">
|
@keyframes pulse {
|
||||||
<g id="a2-c" transform="matrix(1,0,0,1,2606,236)">
|
|
||||||
<rect x="0" y="0" width="192" height="192" style="fill:none;" />
|
0%,
|
||||||
<g transform="matrix(-0.800798,0.462341,-0.769972,-1.33363,1869.11,-896.718)">
|
100% {
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes glow {
|
||||||
|
|
||||||
|
0%,
|
||||||
|
100% {
|
||||||
|
filter: drop-shadow(0 0 3px rgba(141, 81, 249, 0.3));
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
filter: drop-shadow(0 0 6px rgba(141, 81, 249, 0.6));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 为各个元素添加动画 */
|
||||||
|
#a2-c {
|
||||||
|
filter: drop-shadow(0 0 5px rgba(141, 81, 249, 0.3));
|
||||||
|
animation: glow 3s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
path {
|
||||||
|
animation: pulse 2s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 错开不同元素的动画开始时间 */
|
||||||
|
g:nth-child(2) path {
|
||||||
|
animation-delay: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
g:nth-child(3) path {
|
||||||
|
animation-delay: 0.6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
g:nth-child(4) path {
|
||||||
|
animation-delay: 0.9s;
|
||||||
|
}
|
||||||
|
|
||||||
|
g:nth-child(5) path {
|
||||||
|
animation-delay: 1.2s;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<g transform="matrix(1,0,0,1,-2606,-236)">
|
||||||
|
<g id="a2-c" transform="matrix(1,0,0,1,2606,236)">
|
||||||
|
<rect x="0" y="0" width="192" height="192" style="fill: none" />
|
||||||
|
<g transform="matrix(-0.800798,0.462341,-0.769972,-1.33363,1869.11,-896.718)">
|
||||||
|
<path
|
||||||
|
d="M2241.27,-28.175C2238.86,-28.931 2236.64,-29.181 2234.48,-29.254L2159.78,-29.286L2165.01,-11.207C2167.16,-13.121 2169.64,-13.722 2172.26,-13.808L2222.12,-13.822C2223.52,-13.824 2225,-13.701 2226.78,-13.108L2241.27,-28.175Z"
|
||||||
|
style="fill: url(#_Linear1)" />
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
||||||
|
<path
|
||||||
|
d="M2205.67,331.428L2205.67,332.25L2205.67,352.835C2205.67,354.263 2204.91,355.583 2203.67,356.298C2202.43,357.012 2200.91,357.013 2199.67,356.3L2190.78,351.174C2189.73,350.595 2188.83,350.083 2188.03,349.59L2187.45,349.257C2186.66,348.725 2185.91,348.142 2185.21,347.461C2185.08,347.331 2184.95,347.198 2184.82,347.061C2184.26,346.457 2183.75,345.778 2183.3,344.995C2182.16,343.05 2181.69,341.024 2181.68,338.948L2181.67,268.923L2209.77,274.425C2207.5,275.639 2205.68,278.3 2205.67,281.429L2205.67,331.428Z"
|
||||||
|
style="fill: url(#_Linear2)" />
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
||||||
|
<path
|
||||||
|
d="M2295.93,363.064C2299.48,360.882 2301.46,357.55 2301.67,352.926L2301.67,277.879L2301.67,276.775L2301.67,252.515C2301.67,251.801 2302.05,251.14 2302.67,250.783C2303.29,250.426 2304.05,250.426 2304.67,250.784L2319.81,259.54C2321.59,260.617 2322.95,262.115 2324.04,263.875C2325.03,265.551 2325.56,267.37 2325.67,269.835L2325.67,339.91C2325.18,343.645 2323.51,346.705 2320.3,348.887L2295.93,363.064ZM2295.93,363.064C2295.73,363.184 2295.53,363.301 2295.32,363.414L2295.93,363.064Z"
|
||||||
|
style="fill: rgb(141, 81, 249)" />
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
||||||
|
<path
|
||||||
|
d="M2295.93,363.064C2299.48,360.882 2301.46,357.55 2301.67,352.926L2301.67,277.879L2301.67,276.775L2301.67,252.515C2301.67,251.801 2302.05,251.14 2302.67,250.783C2303.29,250.426 2304.05,250.426 2304.67,250.784L2319.81,259.54C2321.59,260.617 2322.95,262.115 2324.04,263.875C2325.03,265.551 2325.56,267.37 2325.67,269.835L2325.67,339.91C2325.18,343.645 2323.51,346.705 2320.3,348.887L2295.93,363.064ZM2299.79,360.238C2299.79,360.238 2320.03,348.464 2320.04,348.461C2323.1,346.372 2324.69,343.444 2325.17,339.877C2325.17,339.877 2325.17,269.846 2325.17,269.839C2325.06,267.482 2324.56,265.739 2323.61,264.133C2322.56,262.445 2321.26,261.005 2319.55,259.97L2304.42,251.217C2303.96,250.949 2303.39,250.948 2302.92,251.216C2302.46,251.484 2302.17,251.979 2302.17,252.515L2302.17,276.775L2302.17,277.879L2302.17,352.926C2302.17,352.933 2302.17,352.941 2302.17,352.948C2302.04,355.861 2301.23,358.279 2299.79,360.238Z"
|
||||||
|
style="fill: url(#_Linear3)" />
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
||||||
|
<path
|
||||||
|
d="M2253.67,223.256C2255.26,223.245 2257.02,223.56 2259.11,224.557L2275.67,234.102C2276.91,234.816 2277.67,236.138 2277.67,237.568L2277.67,259.508C2277.67,260.222 2277.29,260.882 2276.67,261.239C2276.05,261.597 2275.29,261.597 2274.67,261.24L2257.52,251.353C2256.38,250.731 2255.12,250.341 2253.67,250.347C2252.26,250.339 2250.99,250.721 2249.82,251.353L2187.87,287.04C2184.23,289.147 2181.96,292.478 2181.67,297.57L2181.68,269.865C2181.85,265.167 2183.93,261.653 2187.92,259.322L2248.23,224.557C2249.69,223.796 2251.5,223.29 2253.67,223.256Z"
|
||||||
|
style="fill: rgb(165, 118, 255)" />
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
||||||
|
<path
|
||||||
|
d="M2253.67,223.256C2255.26,223.245 2257.02,223.56 2259.11,224.557L2275.67,234.102C2276.91,234.816 2277.67,236.138 2277.67,237.568L2277.67,259.508C2277.67,260.222 2277.29,260.882 2276.67,261.239C2276.05,261.597 2275.29,261.597 2274.67,261.24L2257.52,251.353C2256.38,250.731 2255.12,250.341 2253.67,250.347C2252.26,250.339 2250.99,250.721 2249.82,251.353L2187.87,287.04C2184.23,289.147 2181.96,292.478 2181.67,297.57L2181.68,269.865C2181.85,265.167 2183.93,261.653 2187.92,259.322L2248.23,224.557C2249.69,223.796 2251.5,223.29 2253.67,223.256ZM2253.68,223.756C2251.6,223.789 2249.87,224.269 2248.47,224.996L2188.17,259.754C2184.35,261.992 2182.35,265.367 2182.18,269.874C2182.18,269.874 2182.17,292.759 2182.17,292.757C2183.25,290.047 2185.13,288.051 2187.62,286.607L2249.57,250.919C2249.58,250.917 2249.58,250.915 2249.59,250.913C2250.83,250.243 2252.17,249.839 2253.67,249.847C2255.21,249.841 2256.54,250.253 2257.76,250.914C2257.76,250.916 2257.76,250.917 2257.76,250.919L2274.92,260.807C2275.38,261.075 2275.95,261.074 2276.42,260.806C2276.88,260.538 2277.17,260.043 2277.17,259.508L2277.17,237.568C2277.17,236.317 2276.5,235.16 2275.42,234.535C2275.42,234.535 2258.88,225 2258.87,224.996C2256.87,224.049 2255.2,223.746 2253.68,223.756Z"
|
||||||
|
style="fill: url(#_Linear4)" />
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.800798,0.462341,0.769972,-1.33363,-1677.22,-896.858)">
|
||||||
|
<path
|
||||||
|
d="M2241.55,-28.184C2239.1,-28.989 2236.83,-29.204 2234.68,-29.295C2234.68,-29.295 2220.82,-29.3 2215.03,-29.303C2213.48,-29.303 2212.05,-28.808 2211.28,-28.004C2208.65,-25.275 2202.56,-18.936 2199.45,-15.709C2199.07,-15.306 2199.07,-14.809 2199.46,-14.406C2199.85,-14.004 2200.57,-13.758 2201.34,-13.761C2208.36,-13.788 2222.72,-13.845 2222.72,-13.845C2223.98,-13.851 2225.44,-13.657 2227.06,-13.117L2241.55,-28.184Z"
|
||||||
|
style="fill: rgb(141, 81, 249)" />
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(-4.32309,0,0,12.4454,9610.35,-1450.35)">
|
||||||
|
<path
|
||||||
|
d="M2205.31,121.966C2205.31,121.88 2205.18,121.8 2204.96,121.757C2204.74,121.714 2204.48,121.714 2204.27,121.757C2201.75,122.263 2195.36,123.547 2192.85,124.052C2192.63,124.095 2192.5,124.174 2192.5,124.261C2192.5,124.347 2192.63,124.426 2192.85,124.469C2195.36,124.974 2201.75,126.255 2204.27,126.759C2204.48,126.802 2204.74,126.802 2204.96,126.759C2205.18,126.716 2205.31,126.636 2205.31,126.55C2205.31,125.541 2205.31,122.976 2205.31,121.966Z"
|
||||||
|
style="fill: rgb(104, 0, 197)" />
|
||||||
|
<clipPath id="_clip5">
|
||||||
<path
|
<path
|
||||||
d="M2241.27,-28.175C2238.86,-28.931 2236.64,-29.181 2234.48,-29.254L2159.78,-29.286L2165.01,-11.207C2167.16,-13.121 2169.64,-13.722 2172.26,-13.808L2222.12,-13.822C2223.52,-13.824 2225,-13.701 2226.78,-13.108L2241.27,-28.175Z"
|
d="M2205.31,121.966C2205.31,121.88 2205.18,121.8 2204.96,121.757C2204.74,121.714 2204.48,121.714 2204.27,121.757C2201.75,122.263 2195.36,123.547 2192.85,124.052C2192.63,124.095 2192.5,124.174 2192.5,124.261C2192.5,124.347 2192.63,124.426 2192.85,124.469C2195.36,124.974 2201.75,126.255 2204.27,126.759C2204.48,126.802 2204.74,126.802 2204.96,126.759C2205.18,126.716 2205.31,126.636 2205.31,126.55C2205.31,125.541 2205.31,122.976 2205.31,121.966Z" />
|
||||||
style="fill:url(#_Linear1);" />
|
</clipPath>
|
||||||
</g>
|
<g clip-path="url(#_clip5)">
|
||||||
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
<g transform="matrix(0.124502,0.074907,0.206623,-0.0414384,1997.62,-7.40235)">
|
||||||
<path
|
|
||||||
d="M2205.67,331.428L2205.67,332.25L2205.67,352.835C2205.67,354.263 2204.91,355.583 2203.67,356.298C2202.43,357.012 2200.91,357.013 2199.67,356.3L2190.78,351.174C2189.73,350.595 2188.83,350.083 2188.03,349.59L2187.45,349.257C2186.66,348.725 2185.91,348.142 2185.21,347.461C2185.08,347.331 2184.95,347.198 2184.82,347.061C2184.26,346.457 2183.75,345.778 2183.3,344.995C2182.16,343.05 2181.69,341.024 2181.68,338.948L2181.67,268.923L2209.77,274.425C2207.5,275.639 2205.68,278.3 2205.67,281.429L2205.67,331.428Z"
|
|
||||||
style="fill:url(#_Linear2);" />
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
|
||||||
<path
|
|
||||||
d="M2295.93,363.064C2299.48,360.882 2301.46,357.55 2301.67,352.926L2301.67,277.879L2301.67,276.775L2301.67,252.515C2301.67,251.801 2302.05,251.14 2302.67,250.783C2303.29,250.426 2304.05,250.426 2304.67,250.784L2319.81,259.54C2321.59,260.617 2322.95,262.115 2324.04,263.875C2325.03,265.551 2325.56,267.37 2325.67,269.835L2325.67,339.91C2325.18,343.645 2323.51,346.705 2320.3,348.887L2295.93,363.064ZM2295.93,363.064C2295.73,363.184 2295.53,363.301 2295.32,363.414L2295.93,363.064Z"
|
|
||||||
style="fill:rgb(141,81,249);" />
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
|
||||||
<path
|
|
||||||
d="M2295.93,363.064C2299.48,360.882 2301.46,357.55 2301.67,352.926L2301.67,277.879L2301.67,276.775L2301.67,252.515C2301.67,251.801 2302.05,251.14 2302.67,250.783C2303.29,250.426 2304.05,250.426 2304.67,250.784L2319.81,259.54C2321.59,260.617 2322.95,262.115 2324.04,263.875C2325.03,265.551 2325.56,267.37 2325.67,269.835L2325.67,339.91C2325.18,343.645 2323.51,346.705 2320.3,348.887L2295.93,363.064ZM2299.79,360.238C2299.79,360.238 2320.03,348.464 2320.04,348.461C2323.1,346.372 2324.69,343.444 2325.17,339.877C2325.17,339.877 2325.17,269.846 2325.17,269.839C2325.06,267.482 2324.56,265.739 2323.61,264.133C2322.56,262.445 2321.26,261.005 2319.55,259.97L2304.42,251.217C2303.96,250.949 2303.39,250.948 2302.92,251.216C2302.46,251.484 2302.17,251.979 2302.17,252.515L2302.17,276.775L2302.17,277.879L2302.17,352.926C2302.17,352.933 2302.17,352.941 2302.17,352.948C2302.04,355.861 2301.23,358.279 2299.79,360.238Z"
|
|
||||||
style="fill:url(#_Linear3);" />
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
|
||||||
<path
|
|
||||||
d="M2253.67,223.256C2255.26,223.245 2257.02,223.56 2259.11,224.557L2275.67,234.102C2276.91,234.816 2277.67,236.138 2277.67,237.568L2277.67,259.508C2277.67,260.222 2277.29,260.882 2276.67,261.239C2276.05,261.597 2275.29,261.597 2274.67,261.24L2257.52,251.353C2256.38,250.731 2255.12,250.341 2253.67,250.347C2252.26,250.339 2250.99,250.721 2249.82,251.353L2187.87,287.04C2184.23,289.147 2181.96,292.478 2181.67,297.57L2181.68,269.865C2181.85,265.167 2183.93,261.653 2187.92,259.322L2248.23,224.557C2249.69,223.796 2251.5,223.29 2253.67,223.256Z"
|
|
||||||
style="fill:rgb(165,118,255);" />
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(1,0,0,1,-2157.67,-208.423)">
|
|
||||||
<path
|
|
||||||
d="M2253.67,223.256C2255.26,223.245 2257.02,223.56 2259.11,224.557L2275.67,234.102C2276.91,234.816 2277.67,236.138 2277.67,237.568L2277.67,259.508C2277.67,260.222 2277.29,260.882 2276.67,261.239C2276.05,261.597 2275.29,261.597 2274.67,261.24L2257.52,251.353C2256.38,250.731 2255.12,250.341 2253.67,250.347C2252.26,250.339 2250.99,250.721 2249.82,251.353L2187.87,287.04C2184.23,289.147 2181.96,292.478 2181.67,297.57L2181.68,269.865C2181.85,265.167 2183.93,261.653 2187.92,259.322L2248.23,224.557C2249.69,223.796 2251.5,223.29 2253.67,223.256ZM2253.68,223.756C2251.6,223.789 2249.87,224.269 2248.47,224.996L2188.17,259.754C2184.35,261.992 2182.35,265.367 2182.18,269.874C2182.18,269.874 2182.17,292.759 2182.17,292.757C2183.25,290.047 2185.13,288.051 2187.62,286.607L2249.57,250.919C2249.58,250.917 2249.58,250.915 2249.59,250.913C2250.83,250.243 2252.17,249.839 2253.67,249.847C2255.21,249.841 2256.54,250.253 2257.76,250.914C2257.76,250.916 2257.76,250.917 2257.76,250.919L2274.92,260.807C2275.38,261.075 2275.95,261.074 2276.42,260.806C2276.88,260.538 2277.17,260.043 2277.17,259.508L2277.17,237.568C2277.17,236.317 2276.5,235.16 2275.42,234.535C2275.42,234.535 2258.88,225 2258.87,224.996C2256.87,224.049 2255.2,223.746 2253.68,223.756Z"
|
|
||||||
style="fill:url(#_Linear4);" />
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(0.800798,0.462341,0.769972,-1.33363,-1677.22,-896.858)">
|
|
||||||
<path
|
|
||||||
d="M2241.55,-28.184C2239.1,-28.989 2236.83,-29.204 2234.68,-29.295C2234.68,-29.295 2220.82,-29.3 2215.03,-29.303C2213.48,-29.303 2212.05,-28.808 2211.28,-28.004C2208.65,-25.275 2202.56,-18.936 2199.45,-15.709C2199.07,-15.306 2199.07,-14.809 2199.46,-14.406C2199.85,-14.004 2200.57,-13.758 2201.34,-13.761C2208.36,-13.788 2222.72,-13.845 2222.72,-13.845C2223.98,-13.851 2225.44,-13.657 2227.06,-13.117L2241.55,-28.184Z"
|
|
||||||
style="fill:rgb(141,81,249);" />
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(-4.32309,0,0,12.4454,9610.35,-1450.35)">
|
|
||||||
<path
|
|
||||||
d="M2205.31,121.966C2205.31,121.88 2205.18,121.8 2204.96,121.757C2204.74,121.714 2204.48,121.714 2204.27,121.757C2201.75,122.263 2195.36,123.547 2192.85,124.052C2192.63,124.095 2192.5,124.174 2192.5,124.261C2192.5,124.347 2192.63,124.426 2192.85,124.469C2195.36,124.974 2201.75,126.255 2204.27,126.759C2204.48,126.802 2204.74,126.802 2204.96,126.759C2205.18,126.716 2205.31,126.636 2205.31,126.55C2205.31,125.541 2205.31,122.976 2205.31,121.966Z"
|
|
||||||
style="fill:rgb(104,0,197);" />
|
|
||||||
<clipPath id="_clip5">
|
|
||||||
<path
|
<path
|
||||||
d="M2205.31,121.966C2205.31,121.88 2205.18,121.8 2204.96,121.757C2204.74,121.714 2204.48,121.714 2204.27,121.757C2201.75,122.263 2195.36,123.547 2192.85,124.052C2192.63,124.095 2192.5,124.174 2192.5,124.261C2192.5,124.347 2192.63,124.426 2192.85,124.469C2195.36,124.974 2201.75,126.255 2204.27,126.759C2204.48,126.802 2204.74,126.802 2204.96,126.759C2205.18,126.716 2205.31,126.636 2205.31,126.55C2205.31,125.541 2205.31,122.976 2205.31,121.966Z" />
|
d="M1726.17,-64.249L1708.16,-72.303L1708.05,-23.514L1721.88,-32.386C1722.96,-33.241 1723.09,-33.944 1723.15,-34.636L1723.15,-54.373C1723.19,-56.238 1724.96,-57.594 1726.87,-56.686L1726.17,-64.249Z"
|
||||||
</clipPath>
|
style="fill: url(#_Linear6)" />
|
||||||
<g clip-path="url(#_clip5)">
|
</g>
|
||||||
<g transform="matrix(0.124502,0.074907,0.206623,-0.0414384,1997.62,-7.40235)">
|
<g transform="matrix(-0.126036,0.0767377,0.569859,0.112933,2435.01,-3.09225)">
|
||||||
<path
|
<path
|
||||||
d="M1726.17,-64.249L1708.16,-72.303L1708.05,-23.514L1721.88,-32.386C1722.96,-33.241 1723.09,-33.944 1723.15,-34.636L1723.15,-54.373C1723.19,-56.238 1724.96,-57.594 1726.87,-56.686L1726.17,-64.249Z"
|
d="M1726.17,-45.661L1704.47,-40.254C1706.28,-40.527 1708.14,-40.212 1708.16,-39.416L1708.16,-18.976L1726.17,-18.976L1726.17,-45.661Z"
|
||||||
style="fill:url(#_Linear6);" />
|
style="fill: rgb(141, 81, 249)" />
|
||||||
</g>
|
</g>
|
||||||
<g transform="matrix(-0.126036,0.0767377,0.569859,0.112933,2435.01,-3.09225)">
|
<g transform="matrix(-0.126036,0.0767377,0.569859,0.112933,2435.01,-3.09225)">
|
||||||
<path
|
<path
|
||||||
d="M1726.17,-45.661L1704.47,-40.254C1706.28,-40.527 1708.14,-40.212 1708.16,-39.416L1708.16,-18.976L1726.17,-18.976L1726.17,-45.661Z"
|
d="M1726.17,-45.661L1726.17,-18.976L1708.16,-18.976L1708.16,-39.416C1707.79,-40.732 1704.5,-40.298 1702.68,-40.025L1726.17,-45.661ZM1705.49,-40.491C1706.2,-40.507 1706.87,-40.464 1707.4,-40.327C1708.01,-40.173 1708.48,-39.899 1708.62,-39.436C1708.62,-39.429 1708.62,-39.423 1708.62,-39.416L1708.62,-19.152C1708.62,-19.152 1725.72,-19.152 1725.72,-19.152L1725.72,-45.345L1705.49,-40.491Z"
|
||||||
style="fill:rgb(141,81,249);" />
|
style="fill: url(#_Radial7)" />
|
||||||
</g>
|
|
||||||
<g transform="matrix(-0.126036,0.0767377,0.569859,0.112933,2435.01,-3.09225)">
|
|
||||||
<path
|
|
||||||
d="M1726.17,-45.661L1726.17,-18.976L1708.16,-18.976L1708.16,-39.416C1707.79,-40.732 1704.5,-40.298 1702.68,-40.025L1726.17,-45.661ZM1705.49,-40.491C1706.2,-40.507 1706.87,-40.464 1707.4,-40.327C1708.01,-40.173 1708.48,-39.899 1708.62,-39.436C1708.62,-39.429 1708.62,-39.423 1708.62,-39.416L1708.62,-19.152C1708.62,-19.152 1725.72,-19.152 1725.72,-19.152L1725.72,-45.345L1705.49,-40.491Z"
|
|
||||||
style="fill:url(#_Radial7);" />
|
|
||||||
</g>
|
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<defs>
|
</g>
|
||||||
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
<defs>
|
||||||
gradientTransform="matrix(-70.0711,-0.927611,1.54482,-42.0752,2233.59,-20.1891)">
|
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
||||||
<stop offset="0" style="stop-color:rgb(141,81,249);stop-opacity:1" />
|
gradientTransform="matrix(-70.0711,-0.927611,1.54482,-42.0752,2233.59,-20.1891)">
|
||||||
<stop offset="1" style="stop-color:rgb(116,50,223);stop-opacity:1" />
|
<stop offset="0" style="stop-color: rgb(141, 81, 249); stop-opacity: 1" />
|
||||||
</linearGradient>
|
<stop offset="1" style="stop-color: rgb(116, 50, 223); stop-opacity: 1" />
|
||||||
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
</linearGradient>
|
||||||
gradientTransform="matrix(4.78193e-15,-78.0949,78.0949,4.78193e-15,2195.72,354.021)">
|
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
||||||
<stop offset="0" style="stop-color:rgb(141,81,249);stop-opacity:1" />
|
gradientTransform="matrix(4.78193e-15,-78.0949,78.0949,4.78193e-15,2195.72,354.021)">
|
||||||
<stop offset="1" style="stop-color:rgb(116,50,223);stop-opacity:1" />
|
<stop offset="0" style="stop-color: rgb(141, 81, 249); stop-opacity: 1" />
|
||||||
</linearGradient>
|
<stop offset="1" style="stop-color: rgb(116, 50, 223); stop-opacity: 1" />
|
||||||
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
</linearGradient>
|
||||||
gradientTransform="matrix(41.6089,41.5866,-41.5866,41.6089,2282.31,262.837)">
|
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
||||||
<stop offset="0" style="stop-color:rgb(211,187,255);stop-opacity:1" />
|
gradientTransform="matrix(41.6089,41.5866,-41.5866,41.6089,2282.31,262.837)">
|
||||||
<stop offset="1" style="stop-color:rgb(211,187,255);stop-opacity:0" />
|
<stop offset="0" style="stop-color: rgb(211, 187, 255); stop-opacity: 1" />
|
||||||
</linearGradient>
|
<stop offset="1" style="stop-color: rgb(211, 187, 255); stop-opacity: 0" />
|
||||||
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
</linearGradient>
|
||||||
gradientTransform="matrix(9.25616,16.7005,-16.7005,9.25616,2215,243.712)">
|
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
||||||
<stop offset="0" style="stop-color:rgb(211,187,255);stop-opacity:1" />
|
gradientTransform="matrix(9.25616,16.7005,-16.7005,9.25616,2215,243.712)">
|
||||||
<stop offset="1" style="stop-color:rgb(211,187,255);stop-opacity:0" />
|
<stop offset="0" style="stop-color: rgb(211, 187, 255); stop-opacity: 1" />
|
||||||
</linearGradient>
|
<stop offset="1" style="stop-color: rgb(211, 187, 255); stop-opacity: 0" />
|
||||||
<linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
</linearGradient>
|
||||||
gradientTransform="matrix(-0.130164,-61.9937,59.4003,-0.135847,1711.63,-25.7957)">
|
<linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse"
|
||||||
<stop offset="0" style="stop-color:rgb(116,50,223);stop-opacity:1" />
|
gradientTransform="matrix(-0.130164,-61.9937,59.4003,-0.135847,1711.63,-25.7957)">
|
||||||
<stop offset="0.51" style="stop-color:rgb(110,38,217);stop-opacity:1" />
|
<stop offset="0" style="stop-color: rgb(116, 50, 223); stop-opacity: 1" />
|
||||||
<stop offset="1" style="stop-color:rgb(91,0,197);stop-opacity:1" />
|
<stop offset="0.51" style="stop-color: rgb(110, 38, 217); stop-opacity: 1" />
|
||||||
</linearGradient>
|
<stop offset="1" style="stop-color: rgb(91, 0, 197); stop-opacity: 1" />
|
||||||
<radialGradient id="_Radial7" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
|
</linearGradient>
|
||||||
gradientTransform="matrix(13.8659,4.71436,-12.1609,5.37534,1708.16,-32.287)">
|
<radialGradient id="_Radial7" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
|
||||||
<stop offset="0" style="stop-color:rgb(211,187,255);stop-opacity:1" />
|
gradientTransform="matrix(13.8659,4.71436,-12.1609,5.37534,1708.16,-32.287)">
|
||||||
<stop offset="1" style="stop-color:rgb(211,187,255);stop-opacity:0" />
|
<stop offset="0" style="stop-color: rgb(211, 187, 255); stop-opacity: 1" />
|
||||||
</radialGradient>
|
<stop offset="1" style="stop-color: rgb(211, 187, 255); stop-opacity: 0" />
|
||||||
</defs>
|
</radialGradient>
|
||||||
</svg>
|
</defs>
|
||||||
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<div class="loading">
|
<div class="loading">
|
||||||
<div class="effect-1 effects"></div>
|
<div class="effect-1 effects"></div>
|
||||||
<div class="effect-2 effects"></div>
|
<div class="effect-2 effects"></div>
|
||||||
<div class="effect-3 effects"></div>
|
<div class="effect-3 effects"></div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="app"></div>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
<script>
|
|
||||||
const loaderColor = localStorage.getItem('materio-initial-loader-bg') || '#FFFFFF'
|
|
||||||
const primaryColor = localStorage.getItem('materio-initial-loader-color') || '#9155FD'
|
|
||||||
|
|
||||||
if (loaderColor)
|
|
||||||
document.documentElement.style.setProperty('--initial-loader-bg', loaderColor)
|
|
||||||
|
|
||||||
if (primaryColor)
|
|
||||||
document.documentElement.style.setProperty('--initial-loader-color', primaryColor)
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
159
package.json
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "moviepilot",
|
"name": "moviepilot",
|
||||||
"version": "1.2.0-1",
|
"version": "2.4.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"bin": "dist/service.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --host",
|
"dev": "vite --host",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
@@ -9,92 +11,105 @@
|
|||||||
"typecheck": "vue-tsc --noEmit",
|
"typecheck": "vue-tsc --noEmit",
|
||||||
"lint": "eslint . -c .eslintrc.js --fix --ext .ts,.js,.vue,.tsx,.jsx",
|
"lint": "eslint . -c .eslintrc.js --fix --ext .ts,.js,.vue,.tsx,.jsx",
|
||||||
"build:icons": "tsc -b src/@iconify && node src/@iconify/build-icons.js",
|
"build:icons": "tsc -b src/@iconify && node src/@iconify/build-icons.js",
|
||||||
"postinstall": "npm run build:icons"
|
"postinstall": "npm run build:icons",
|
||||||
|
"pkg": "pkg . -t node18-win-x64 -o MoviePilot-Frontend.exe"
|
||||||
|
},
|
||||||
|
"pkg": {
|
||||||
|
"assets": [
|
||||||
|
"dist/**/*"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@casl/ability": "^6.2.0",
|
"@fullcalendar/core": "^6.1.15",
|
||||||
"@casl/vue": "^2.2.0",
|
"@fullcalendar/daygrid": "^6.1.15",
|
||||||
"@floating-ui/dom": "1.2.8",
|
"@fullcalendar/interaction": "^6.1.15",
|
||||||
"@vueuse/core": "^10.1.2",
|
"@fullcalendar/list": "^6.1.15",
|
||||||
"@vueuse/math": "^10.1.2",
|
"@fullcalendar/timegrid": "^6.1.15",
|
||||||
"apexcharts-clevision": "^3.28.5",
|
"@fullcalendar/vue3": "^6.1.15",
|
||||||
"axios": "1.4.0",
|
"@iconify/utils": "^2.2.1",
|
||||||
"axios-mock-adapter": "^1.21.4",
|
"@types/js-cookie": "^3.0.6",
|
||||||
"chart.js": "^4.1.2",
|
"@vue-flow/background": "^1.3.2",
|
||||||
"jwt-decode": "^3.1.2",
|
"@vue-flow/controls": "^1.1.2",
|
||||||
|
"@vue-flow/core": "^1.42.1",
|
||||||
|
"@vue-flow/minimap": "^1.5.2",
|
||||||
|
"@vue-flow/node-resizer": "^1.4.0",
|
||||||
|
"@vue-flow/node-toolbar": "^1.1.0",
|
||||||
|
"@vue-js-cron/vuetify": "^5.0.9",
|
||||||
|
"@vueuse/core": "^12.4.0",
|
||||||
|
"@vueuse/math": "^12.4.0",
|
||||||
|
"ace-builds": "^1.37.4",
|
||||||
|
"apexcharts": "^4.0.0",
|
||||||
|
"axios": "^1.7.9",
|
||||||
|
"colorthief": "^2.6.0",
|
||||||
|
"copy-to-clipboard": "^3.3.3",
|
||||||
|
"dayjs": "^1.11.13",
|
||||||
|
"express": "^4.21.2",
|
||||||
|
"express-http-proxy": "^2.1.1",
|
||||||
|
"js-cookie": "^3.0.5",
|
||||||
|
"lodash-es": "^4.17.21",
|
||||||
|
"mousetrap": "^1.6.5",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"postcss-purgecss": "^5.0.0",
|
"pinia": "^3.0.1",
|
||||||
"prismjs": "^1.29.0",
|
"pinia-plugin-persistedstate": "^4.2.0",
|
||||||
"pull-refresh-vue3": "^0.3.1",
|
"qrcode.vue": "^3.6.0",
|
||||||
"roboto-fontface": "^0.10.0",
|
"sass": "^1.83.4",
|
||||||
"sass": "^1.59.3",
|
"tailwindcss": "^ 3.4.17",
|
||||||
"tailwindcss": "^3.3.2",
|
"vue": "^3.5.13",
|
||||||
"unplugin-vue-define-options": "^1.3.5",
|
"vue-router": "^4.5.0",
|
||||||
"vite-plugin-pwa": "^0.16.4",
|
"vue-toast-notification": "^3.1.3",
|
||||||
"vue": "^3.3.2",
|
"vue3-ace-editor": "^2.2.4",
|
||||||
"vue-chartjs": "^5.2.0",
|
"vue3-apexcharts": "^1.8.0",
|
||||||
"vue-flatpickr-component": "11.0.3",
|
"vue3-perfect-scrollbar": "^2.0.0",
|
||||||
"vue-i18n": "^9.2.2",
|
"vuedraggable": "^4.1.0",
|
||||||
"vue-prism-component": "^2.0.0",
|
"vuetify": "3.7.3",
|
||||||
"vue-router": "^4.2.0",
|
"vuetify-use-dialog": "^0.6.11",
|
||||||
"vue-toast-notification": "^3",
|
|
||||||
"vue3-apexcharts": "^1.4.1",
|
|
||||||
"vue3-perfect-scrollbar": "^1.6.0",
|
|
||||||
"vuetify": "3.3.5",
|
|
||||||
"vuetify-use-dialog": "^0.6.0",
|
|
||||||
"vuex": "^4.1.0",
|
|
||||||
"vuex-persistedstate": "^4.1.0",
|
|
||||||
"webfontloader": "^1.6.28"
|
"webfontloader": "^1.6.28"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@antfu/eslint-config-vue": "^0.38.6",
|
|
||||||
"@fullcalendar/core": "^6.1.8",
|
|
||||||
"@fullcalendar/daygrid": "^6.1.8",
|
|
||||||
"@fullcalendar/interaction": "^6.1.7",
|
|
||||||
"@fullcalendar/list": "^6.1.7",
|
|
||||||
"@fullcalendar/timegrid": "^6.1.7",
|
|
||||||
"@fullcalendar/vue3": "^6.1.8",
|
|
||||||
"@iconify-json/mdi": "^1.1.52",
|
"@iconify-json/mdi": "^1.1.52",
|
||||||
"@iconify/tools": "^2.2.0",
|
"@iconify/tools": "^4.0.4",
|
||||||
"@iconify/vue": "4.1.1",
|
"@iconify/vue": "^4.3.0",
|
||||||
"@intlify/unplugin-vue-i18n": "^0.10.0",
|
"@intlify/unplugin-vue-i18n": "^6.0.3",
|
||||||
"@tailwindcss/aspect-ratio": "^0.4.2",
|
"@tailwindcss/aspect-ratio": "^0.4.2",
|
||||||
"@types/lodash": "^4.14.197",
|
"@types/lodash-es": "^4.17.12",
|
||||||
|
"@types/mousetrap": "^1.6.15",
|
||||||
"@types/node": "^20.1.4",
|
"@types/node": "^20.1.4",
|
||||||
|
"@types/nprogress": "^0.2.3",
|
||||||
"@types/webfontloader": "^1.6.34",
|
"@types/webfontloader": "^1.6.34",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.59.5",
|
"@typescript-eslint/eslint-plugin": "^8.20.0",
|
||||||
"@typescript-eslint/parser": "^5.59.5",
|
"@typescript-eslint/parser": "^8.20.0",
|
||||||
"@vitejs/plugin-vue": "^4.2.3",
|
"@vitejs/plugin-vue": "^5.0.4",
|
||||||
"@vitejs/plugin-vue-jsx": "^3.0.0",
|
"@vitejs/plugin-vue-jsx": "^4.1.1",
|
||||||
"autoprefixer": "^10.4.14",
|
"autoprefixer": "^10.4.14",
|
||||||
"eslint": "^8.40.0",
|
"eslint": "^9.18.0",
|
||||||
"eslint-config-airbnb-base": "^15.0.0",
|
|
||||||
"eslint-import-resolver-typescript": "^3.5.1",
|
"eslint-import-resolver-typescript": "^3.5.1",
|
||||||
"eslint-plugin-import": "^2.26.0",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"eslint-plugin-promise": "^6.0.1",
|
"eslint-plugin-promise": "^7.2.1",
|
||||||
"eslint-plugin-regex": "^1.10.0",
|
"eslint-plugin-regex": "^1.10.0",
|
||||||
"eslint-plugin-sonarjs": "^0.19.0",
|
"eslint-plugin-sonarjs": "^3.0.1",
|
||||||
"eslint-plugin-unicorn": "^47.0.0",
|
"eslint-plugin-unicorn": "^56.0.1",
|
||||||
"eslint-plugin-vue": "^9.12.0",
|
"eslint-plugin-vue": "^9.12.0",
|
||||||
"postcss": "^8.4.24",
|
"postcss": "^8.5.1",
|
||||||
"postcss-html": "^1.5.0",
|
"postcss-html": "^1.5.0",
|
||||||
"stylelint": "14.15.0",
|
"stylelint": "^16.13.2",
|
||||||
"stylelint-config-idiomatic-order": "9.0.0",
|
"stylelint-config-idiomatic-order": "^10.0.0",
|
||||||
"stylelint-config-standard-scss": "6.1.0",
|
"stylelint-config-standard-scss": "^14.0.0",
|
||||||
"stylelint-use-logical-spec": "4.1.0",
|
"stylelint-use-logical-spec": "5.0.1",
|
||||||
"type-fest": "^3.10.0",
|
"terser": "^5.36.0",
|
||||||
|
"type-fest": "^4.15.0",
|
||||||
"typescript": "^5.0.4",
|
"typescript": "^5.0.4",
|
||||||
"unplugin-auto-import": "^0.15.1",
|
"unplugin-auto-import": "^19.0.0",
|
||||||
"unplugin-vue-components": "^0.24.1",
|
"unplugin-vue-components": "^28.0.0",
|
||||||
"vite": "^4.3.5",
|
"unplugin-vue-define-options": "^1.5.3",
|
||||||
"vite-plugin-pages": "^0.29.0",
|
"vite": "^5.4.11",
|
||||||
"vite-plugin-vue-layouts": "^0.8.0",
|
"vite-plugin-pages": "^0.32.1",
|
||||||
"vite-plugin-vuetify": "1.0.2",
|
"vite-plugin-pwa": "^0.21.1",
|
||||||
"vue-shepherd": "^3.0.0",
|
"vite-plugin-vue-layouts": "^0.11.0",
|
||||||
"vue-tsc": "^1.6.5"
|
"vite-plugin-vuetify": "2.0.4",
|
||||||
|
"vue-shepherd": "^4.1.0",
|
||||||
|
"vue-tsc": "^2.0.10",
|
||||||
|
"workbox-build": "^7.3.0",
|
||||||
|
"workbox-window": "^7.3.0"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@1.22.18",
|
"packageManager": "yarn@1.22.18"
|
||||||
"resolutions": {
|
}
|
||||||
"postcss": "8"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
module.exports = {
|
export default {
|
||||||
plugins: {
|
plugins: {
|
||||||
tailwindcss: {},
|
tailwindcss: {},
|
||||||
autoprefixer: {},
|
autoprefixer: {},
|
||||||
|
|||||||
@@ -1,26 +1,32 @@
|
|||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
background: var(--initial-loader-bg, #fff);
|
|
||||||
min-block-size: calc(100% + env(safe-area-inset-top));
|
|
||||||
overflow-x: hidden;
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#loading-bg {
|
#loading-bg {
|
||||||
position: absolute;
|
position: fixed;
|
||||||
|
z-index: 9999;
|
||||||
display: block;
|
display: block;
|
||||||
background: var(--initial-loader-bg, #fff);
|
background: var(--initial-loader-bg, #fff);
|
||||||
block-size: 100%;
|
block-size: 100vh;
|
||||||
inline-size: 100%;
|
inline-size: 100vw;
|
||||||
|
transition: opacity 0.8s ease, transform 0.8s ease, filter 0.8s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading-logo {
|
.loading-logo {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset-block-start: 40%;
|
inset-block-start: 35%;
|
||||||
inset-inline-start: calc(50% - 50px);
|
inset-inline-start: calc(50% - 5rem);
|
||||||
|
transition: opacity 0.8s ease, transform 0.8s ease, filter 0.8s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 添加logo完成动画 - 放大虚化效果 */
|
||||||
|
.loading-complete .loading-logo {
|
||||||
|
filter: blur(10px);
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(1.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 添加加载背景消失动画 - 放大虚化效果 */
|
||||||
|
.loading-complete {
|
||||||
|
filter: blur(15px);
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(1.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading {
|
.loading {
|
||||||
@@ -32,6 +38,12 @@ html {
|
|||||||
inline-size: 55px;
|
inline-size: 55px;
|
||||||
inset-block-start: 80%;
|
inset-block-start: 80%;
|
||||||
inset-inline-start: calc(50% - 27.5px);
|
inset-inline-start: calc(50% - 27.5px);
|
||||||
|
transition: opacity 0.6s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 完成时隐藏加载动画 */
|
||||||
|
.loading-complete .loading {
|
||||||
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading .effect-1,
|
.loading .effect-1,
|
||||||
@@ -82,4 +94,4 @@ html {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: rotate(1turn);
|
transform: rotate(1turn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "MoviePilot",
|
|
||||||
"short_name": "MoviePilot",
|
|
||||||
"start_url": "./",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "./android-chrome-192x192.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png",
|
|
||||||
"purpose": "any"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./android-chrome-192x192_maskable.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png",
|
|
||||||
"purpose": "maskable"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./android-chrome-512x512.png",
|
|
||||||
"sizes": "512x512",
|
|
||||||
"type": "image/png",
|
|
||||||
"purpose": "any"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./android-chrome-512x512_maskable.png",
|
|
||||||
"sizes": "512x512",
|
|
||||||
"type": "image/png",
|
|
||||||
"purpose": "maskable"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"theme_color": "#28243D",
|
|
||||||
"background_color": "#28243D",
|
|
||||||
"display": "standalone",
|
|
||||||
"shortcuts": [
|
|
||||||
{
|
|
||||||
"name": "推荐",
|
|
||||||
"url": "./ranking",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "./sparkles-icon-192x192.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "电影订阅",
|
|
||||||
"url": "./subscribe-movie",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "./clock-icon-192x192.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "电视剧订阅",
|
|
||||||
"url": "./subscribe-tv",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "./clock-icon-192x192.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "设置",
|
|
||||||
"url": "./setting",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "./cog-icon-192x192.png",
|
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
120
public/nginx.conf
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
|
||||||
|
keepalive_timeout 3600;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_min_length 256;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
|
||||||
|
server {
|
||||||
|
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
listen 3000;
|
||||||
|
listen [::]:3000;
|
||||||
|
server_name moviepilot;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
# 主目录
|
||||||
|
expires off;
|
||||||
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||||||
|
root html;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
|
||||||
|
# 静态资源
|
||||||
|
expires 1y;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
root html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /assets {
|
||||||
|
# 静态资源
|
||||||
|
expires 1y;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
root html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/api/v1/system/(message|progress/) {
|
||||||
|
# SSE MIME类型设置
|
||||||
|
default_type text/event-stream;
|
||||||
|
|
||||||
|
# 禁用缓存
|
||||||
|
add_header Cache-Control no-cache;
|
||||||
|
add_header X-Accel-Buffering no;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_cache off;
|
||||||
|
|
||||||
|
# 代理设置
|
||||||
|
proxy_pass http://backend_api;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Connection "";
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
# 超时设置
|
||||||
|
proxy_read_timeout 3600s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api {
|
||||||
|
# 后端API
|
||||||
|
proxy_pass http://backend_api;
|
||||||
|
rewrite ^.+mock-server/?(.*)$ /$1 break;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_cache off;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_set_header Connection "";
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Nginx-Proxy true;
|
||||||
|
|
||||||
|
# 超时设置
|
||||||
|
proxy_read_timeout 600s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /cookiecloud {
|
||||||
|
# 后端cookiecloud地址
|
||||||
|
proxy_pass http://backend_api;
|
||||||
|
rewrite ^.+mock-server/?(.*)$ /$1 break;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_cache off;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_set_header Connection "";
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Nginx-Proxy true;
|
||||||
|
|
||||||
|
# 超时设置
|
||||||
|
proxy_read_timeout 600s;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
upstream backend_api {
|
||||||
|
# 后端API的地址和端口
|
||||||
|
server 127.0.0.1:3001;
|
||||||
|
# 可以添加更多后端服务器作为负载均衡
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 16 KiB |
2
public/robots.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
User-agent: *
|
||||||
|
Disallow: /
|
||||||
51
public/service.js
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
const path = require('node:path')
|
||||||
|
const express = require('express')
|
||||||
|
const proxy = require('express-http-proxy')
|
||||||
|
|
||||||
|
const app = express()
|
||||||
|
const port = process.env.NGINX_PORT || 3000
|
||||||
|
|
||||||
|
// 后端 API 地址
|
||||||
|
const proxyConfig = {
|
||||||
|
URL: '127.0.0.1',
|
||||||
|
PORT: process.env.PORT || 3001
|
||||||
|
}
|
||||||
|
|
||||||
|
// 静态文件服务目录
|
||||||
|
app.use(express.static(__dirname))
|
||||||
|
|
||||||
|
// 配置代理中间件将请求转发给后端API
|
||||||
|
app.use(
|
||||||
|
'/api',
|
||||||
|
proxy(`${proxyConfig.URL}:${proxyConfig.PORT}`, {
|
||||||
|
// 路径加上 /api 前缀
|
||||||
|
proxyReqPathResolver: (req) => {
|
||||||
|
return `/api${req.url}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
// 配置代理中间件将CookieCloud请求转发给后端API
|
||||||
|
app.use(
|
||||||
|
'/cookiecloud',
|
||||||
|
proxy(`${proxyConfig.URL}:${proxyConfig.PORT}`, {
|
||||||
|
// 路径加上 /cookiecloud 前缀
|
||||||
|
proxyReqPathResolver: (req) => {
|
||||||
|
return `/cookiecloud${req.url}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
// 处理根路径的请求
|
||||||
|
app.get('/', (req, res) => {
|
||||||
|
res.sendFile(path.join(__dirname, 'index.html'))
|
||||||
|
})
|
||||||
|
|
||||||
|
// 处理所有其他请求,重定向到前端入口文件
|
||||||
|
app.get('*', (req, res) => {
|
||||||
|
res.sendFile(path.join(__dirname, 'index.html'))
|
||||||
|
})
|
||||||
|
|
||||||
|
app.listen(port, () => {
|
||||||
|
console.log(`Server is running on port ${port}`)
|
||||||
|
})
|
||||||
@@ -1,16 +1,21 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
// 定义输入参数
|
||||||
|
const props = defineProps({
|
||||||
|
// 是否显示
|
||||||
|
innerClass: String,
|
||||||
|
})
|
||||||
// 定义触发的自定义事件
|
// 定义触发的自定义事件
|
||||||
const emit = defineEmits(['click'])
|
const emit = defineEmits(['click', 'update:modelValue'])
|
||||||
|
|
||||||
// 按钮点击
|
// 按钮点击
|
||||||
function onClick() {
|
function onClick() {
|
||||||
|
emit('update:modelValue', false)
|
||||||
emit('click')
|
emit('click')
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<IconBtn
|
<IconBtn
|
||||||
class="absolute right-3 top-3"
|
:class="props.innerClass ? props.innerClass : 'absolute right-3 top-3'"
|
||||||
@click.stop="onClick"
|
@click.stop="onClick"
|
||||||
>
|
>
|
||||||
<VIcon icon="mdi-close" />
|
<VIcon icon="mdi-close" />
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="absolute top-0 right-0 flex items-center justify-between p-2">
|
<div class="absolute top-0 right-0 flex items-center justify-between p-2">
|
||||||
<div class="pointer-events-none z-40 flex items-center">
|
<div class="pointer-events-none z-40 flex items-center">
|
||||||
<div class="relative inline-flex whitespace-nowrap rounded-full border-gray-700 font-semibold leading-5 ring-gray-700">
|
<div
|
||||||
<div class="rounded-full bg-opacity-80 shadow-md w-5 border p-0 bg-green-500 border-green-400 ring-green-400 text-green-100">
|
class="relative inline-flex whitespace-nowrap rounded-full border-gray-700 font-semibold leading-5 ring-gray-700"
|
||||||
<svg
|
>
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
<div
|
||||||
viewBox="0 0 20 20"
|
class="rounded-full bg-opacity-80 w-5 border p-0 bg-green-500 border-green-400 ring-green-400 text-green-100"
|
||||||
fill="currentColor"
|
>
|
||||||
aria-hidden="true"
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
fill-rule="evenodd"
|
fill-rule="evenodd"
|
||||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
||||||
|
|||||||
15
src/@core/components/LoadingBanner.vue
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
// 定义输入参数
|
||||||
|
const props = defineProps({
|
||||||
|
progress: Number,
|
||||||
|
text: String,
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="w-full text-center text-gray-500 text-sm flex flex-col items-center">
|
||||||
|
<VProgressCircular v-if="!props.text || !props.progress" class="mb-3" size="64" indeterminate color="primary" />
|
||||||
|
<VProgressCircular v-if="props.progress" class="mb-3" color="primary" :model-value="props.progress" size="64" />
|
||||||
|
<span>{{ props.text }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
18
src/@core/components/PageContentTitle.vue
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
defineProps({
|
||||||
|
// 标题
|
||||||
|
title: String,
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div v-if="title" class="my-3 md:flex md:items-center md:justify-between">
|
||||||
|
<div class="min-w-0 flex-1 mx-0">
|
||||||
|
<h2
|
||||||
|
class="ms-1 truncate text-2xl font-bold leading-7 text-gray-100 sm:overflow-visible sm:text-3xl sm:leading-9 md:mb-0"
|
||||||
|
data-testid="page-header"
|
||||||
|
>
|
||||||
|
<span class="text-moviepilot">{{ title }}</span>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
85
src/@core/components/ScrollToTopBtn.vue
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
// 控制回到顶部按钮的可见性
|
||||||
|
const showScrollToTop = ref(false)
|
||||||
|
const scrollThreshold = 200 // 滚动多少像素后显示按钮
|
||||||
|
|
||||||
|
// 滚动事件处理函数
|
||||||
|
const handleScroll = () => {
|
||||||
|
showScrollToTop.value = window.scrollY > scrollThreshold
|
||||||
|
}
|
||||||
|
|
||||||
|
const scrollToTop = () => {
|
||||||
|
window.scrollTo({ top: 0, behavior: 'smooth' })
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
// Add scroll event listener
|
||||||
|
window.addEventListener('scroll', handleScroll)
|
||||||
|
// Initial check for scroll-to-top
|
||||||
|
handleScroll()
|
||||||
|
})
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
// Remove scroll event listener
|
||||||
|
window.removeEventListener('scroll', handleScroll)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="global-action-buttons d-none d-sm-block">
|
||||||
|
<Transition name="scroll-fade">
|
||||||
|
<button v-show="showScrollToTop" class="global-action-button" @click="scrollToTop">
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M7 14L12 9L17 14"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</Transition>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
/* Global Action Button Styles (FAB) */
|
||||||
|
.global-action-buttons {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 100;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
inset-block-end: 30px;
|
||||||
|
inset-inline-end: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.global-action-button {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: 1px solid rgba(var(--v-theme-on-surface), 0.05);
|
||||||
|
border-radius: 50%;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
background-color: rgba(var(--v-theme-background), 0.8);
|
||||||
|
block-size: 44px;
|
||||||
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 8%);
|
||||||
|
color: rgb(var(--v-theme-on-surface));
|
||||||
|
cursor: pointer;
|
||||||
|
inline-size: 44px;
|
||||||
|
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba(var(--v-theme-background), 0.95);
|
||||||
|
color: rgb(var(--v-theme-primary));
|
||||||
|
transform: translateY(-4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
block-size: 20px;
|
||||||
|
inline-size: 20px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
18
src/@core/components/StatIcon.vue
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
interface Props {
|
||||||
|
color?: string
|
||||||
|
message?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = defineProps<Props>()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="absolute top-2 right-2 flex items-center justify-between p-2">
|
||||||
|
<VBadge :color="props.color" bordered>
|
||||||
|
<template #badge>
|
||||||
|
<VIcon icon="mdi-pulse"></VIcon>
|
||||||
|
</template>
|
||||||
|
</VBadge>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
<script setup lang="ts">
|
|
||||||
import { ref, watch } from 'vue'
|
|
||||||
import { useTheme } from 'vuetify'
|
|
||||||
import type { ThemeSwitcherTheme } from '@layouts/types'
|
|
||||||
|
|
||||||
const props = defineProps<{
|
|
||||||
themes: ThemeSwitcherTheme[]
|
|
||||||
}>()
|
|
||||||
|
|
||||||
const { name: themeName, global: globalTheme } = useTheme()
|
|
||||||
|
|
||||||
const savedTheme = ref(localStorage.getItem('theme') ?? themeName)
|
|
||||||
|
|
||||||
const {
|
|
||||||
state: currentThemeName,
|
|
||||||
next: getNextThemeName,
|
|
||||||
index: currentThemeIndex,
|
|
||||||
} = useCycleList(
|
|
||||||
props.themes.map(t => t.name),
|
|
||||||
{ initialValue: savedTheme.value },
|
|
||||||
)
|
|
||||||
|
|
||||||
function changeTheme() {
|
|
||||||
const nextTheme = getNextThemeName()
|
|
||||||
|
|
||||||
globalTheme.name.value = nextTheme
|
|
||||||
savedTheme.value = nextTheme
|
|
||||||
localStorage.setItem('theme', nextTheme)
|
|
||||||
// 修改载入时背景色
|
|
||||||
localStorage.setItem('materio-initial-loader-bg', globalTheme.current.value.colors.background)
|
|
||||||
|
|
||||||
themeTransition()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update icon if theme is changed from other sources
|
|
||||||
watch(
|
|
||||||
() => globalTheme.name.value,
|
|
||||||
(val) => {
|
|
||||||
currentThemeName.value = val
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
// Apply saved theme on page load
|
|
||||||
// onMounted(() => {
|
|
||||||
// globalTheme.name.value = savedTheme.value
|
|
||||||
// })
|
|
||||||
|
|
||||||
function hasScrollbar(el?: Element | null) {
|
|
||||||
if (!el || el.nodeType !== Node.ELEMENT_NODE)
|
|
||||||
return false
|
|
||||||
|
|
||||||
const style = window.getComputedStyle(el)
|
|
||||||
return style.overflowY === 'scroll' || (style.overflowY === 'auto' && el.scrollHeight > el.clientHeight)
|
|
||||||
}
|
|
||||||
|
|
||||||
function themeTransition() {
|
|
||||||
const x = performance.now()
|
|
||||||
for (let i = 0; i++ < 1e7; (i << 9) & ((9 % 9) * 9 + 9));
|
|
||||||
const cost = performance.now() - x
|
|
||||||
if (cost > 10)
|
|
||||||
return
|
|
||||||
|
|
||||||
const el: HTMLElement = document.querySelector('[data-v-app]')!
|
|
||||||
const children = el.querySelectorAll('*') as NodeListOf<HTMLElement>
|
|
||||||
|
|
||||||
children.forEach((el) => {
|
|
||||||
if (hasScrollbar(el)) {
|
|
||||||
el.dataset.scrollX = String(el.scrollLeft)
|
|
||||||
el.dataset.scrollY = String(el.scrollTop)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const copy = el.cloneNode(true) as HTMLElement
|
|
||||||
copy.classList.add('app-copy')
|
|
||||||
const rect = el.getBoundingClientRect()
|
|
||||||
copy.style.top = `${rect.top}px`
|
|
||||||
copy.style.left = `${rect.left}px`
|
|
||||||
copy.style.width = `${rect.width}px`
|
|
||||||
copy.style.height = `${rect.height}px`
|
|
||||||
|
|
||||||
const targetEl = document.activeElement as HTMLElement
|
|
||||||
const targetRect = targetEl.getBoundingClientRect()
|
|
||||||
const left = targetRect.left + targetRect.width / 2 + window.scrollX
|
|
||||||
const top = targetRect.top + targetRect.height / 2 + window.scrollY
|
|
||||||
el.style.setProperty('--clip-pos', `${left}px ${top}px`)
|
|
||||||
el.style.removeProperty('--clip-size')
|
|
||||||
|
|
||||||
nextTick(() => {
|
|
||||||
el.classList.add('app-transition')
|
|
||||||
requestAnimationFrame(() => {
|
|
||||||
requestAnimationFrame(() => {
|
|
||||||
el.style.setProperty('--clip-size', `${Math.hypot(window.innerWidth, window.innerHeight)}px`)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
document.body.append(copy)
|
|
||||||
; (copy.querySelectorAll('[data-scroll-x], [data-scroll-y]') as NodeListOf<HTMLElement>).forEach((el) => {
|
|
||||||
el.scrollLeft = +el.dataset.scrollX!
|
|
||||||
el.scrollTop = +el.dataset.scrollY!
|
|
||||||
})
|
|
||||||
|
|
||||||
function onTransitionend(e: TransitionEvent) {
|
|
||||||
if (e.target === e.currentTarget) {
|
|
||||||
copy.remove()
|
|
||||||
el.removeEventListener('transitionend', onTransitionend)
|
|
||||||
el.removeEventListener('transitioncancel', onTransitionend)
|
|
||||||
el.classList.remove('app-transition')
|
|
||||||
el.style.removeProperty('--clip-size')
|
|
||||||
el.style.removeProperty('--clip-pos')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
el.addEventListener('transitionend', onTransitionend)
|
|
||||||
el.addEventListener('transitioncancel', onTransitionend)
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<IconBtn @click="changeTheme">
|
|
||||||
<VIcon :icon="props.themes[currentThemeIndex].icon" />
|
|
||||||
</IconBtn>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style lang="sass">
|
|
||||||
// Theme transition
|
|
||||||
.app-copy
|
|
||||||
position: fixed !important
|
|
||||||
z-index: -1 !important
|
|
||||||
pointer-events: none !important
|
|
||||||
contain: size style !important
|
|
||||||
overflow: clip !important
|
|
||||||
|
|
||||||
.app-transition
|
|
||||||
--clip-size: 0
|
|
||||||
--clip-pos: 0 0
|
|
||||||
clip-path: circle(var(--clip-size) at var(--clip-pos))
|
|
||||||
transition: clip-path .35s ease-out
|
|
||||||
</style>
|
|
||||||
58
src/@core/scss/README.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
# SCSS结构说明
|
||||||
|
|
||||||
|
## 目录整合
|
||||||
|
|
||||||
|
本项目SCSS文件已完成整合:
|
||||||
|
- 主入口文件:`src/@core/scss/index.scss`
|
||||||
|
- 实际功能文件位于:`src/@core/scss/template/index.scss`
|
||||||
|
|
||||||
|
## 整合内容
|
||||||
|
|
||||||
|
- 整合了原`src/@core/scss/base`和`src/@core/scss/template`目录的功能
|
||||||
|
- 统一使用`template`目录作为SCSS样式的主要引用点
|
||||||
|
- 保留原有引用结构以保证向后兼容性
|
||||||
|
|
||||||
|
## 整合进度
|
||||||
|
|
||||||
|
已完成:
|
||||||
|
- ✅ 主入口文件引用更新
|
||||||
|
- ✅ mixins文件合并
|
||||||
|
- ✅ placeholders目录下文件转移
|
||||||
|
- ✅ perfect-scrollbar文件整合
|
||||||
|
- ✅ vuetify相关文件整合
|
||||||
|
- ✅ default-layout-w-vertical-nav文件整合
|
||||||
|
- ✅ 移除了template/index.scss中对base目录组件的依赖
|
||||||
|
- ✅ 修复了components.scss中对base/mixins的引用
|
||||||
|
- ✅ 修复了variables.scss中对base/variables的引用
|
||||||
|
- ✅ 修复了apex-chart.scss和full-calendar.scss的linter错误
|
||||||
|
- ✅ 整合并移除了对vuetify/variables的依赖
|
||||||
|
- ✅ 修复了SCSS变量名冲突问题
|
||||||
|
- ✅ 修复了SASS模块重复加载配置问题
|
||||||
|
- ✅ 修复了导入路径问题(misc、utils等模块的引用路径)
|
||||||
|
|
||||||
|
待完成:
|
||||||
|
- ⬜ 最终测试确保无样式问题
|
||||||
|
- ⬜ 清理冗余文件
|
||||||
|
|
||||||
|
## 使用方式
|
||||||
|
|
||||||
|
在项目中引用SCSS时,应使用:
|
||||||
|
```scss
|
||||||
|
@use "@core/scss";
|
||||||
|
```
|
||||||
|
|
||||||
|
这将自动加载所有必要的样式文件。
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
此次整合已将所有功能文件整合到template目录,不再依赖base目录的代码。现在可以安全地从外部引用template目录下的文件,但需要进行最终测试以确保样式正常工作。
|
||||||
|
|
||||||
|
测试无误后,可以考虑完全删除base目录,以简化项目结构。
|
||||||
|
|
||||||
|
## 最近修复
|
||||||
|
|
||||||
|
在最近的更新中,我们修复了以下问题:
|
||||||
|
1. 解决了变量名冲突问题,通过使用命名空间(如`layouts-vars`)来引用外部模块变量
|
||||||
|
2. 修复了SASS模块重复配置问题,将多处的`@forward...with`配置合并到了template/_variables.scss文件中
|
||||||
|
3. 统一使用命名空间引用模块,避免后续出现冲突
|
||||||
|
4. 修复了`_default-layout-w-vertical-nav.scss`中导入路径错误,将`@use "misc"`修改为`@use "../misc"`
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
@use "@configured-variables" as variables;
|
@use "@configured-variables" as variables;
|
||||||
|
|
||||||
// ————————————————————————————————————
|
// ————————————————————————————————————
|
||||||
//* ——— Perfect Scrollbar
|
// Perfect Scrollbar
|
||||||
// ————————————————————————————————————
|
// ————————————————————————————————————
|
||||||
|
|
||||||
.v-application.v-theme--dark {
|
.v-application.v-theme--dark {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
@use "@core/scss/placeholders";
|
@use "@core/scss/placeholders";
|
||||||
@use "@core/scss/variables";
|
@use "@core/scss/variables" as core-vars;
|
||||||
|
|
||||||
.layout-navbar {
|
.layout-navbar {
|
||||||
@if variables.$navbar-high-emphasis-text {
|
@if core-vars.$navbar-high-emphasis-text {
|
||||||
@extend %layout-navbar;
|
@extend %layout-navbar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,18 +17,16 @@
|
|||||||
// ℹ️ This mixin is inspired from vuetify for adding hover styles via before pseudo element
|
// ℹ️ This mixin is inspired from vuetify for adding hover styles via before pseudo element
|
||||||
@mixin before-pseudo() {
|
@mixin before-pseudo() {
|
||||||
position: relative;
|
position: relative;
|
||||||
@media (hover) {
|
&::before {
|
||||||
&::before {
|
position: absolute;
|
||||||
position: absolute;
|
background: currentcolor;
|
||||||
background: currentcolor;
|
block-size: 100%;
|
||||||
block-size: 100%;
|
border-radius: inherit;
|
||||||
border-radius: inherit;
|
content: "";
|
||||||
content: "";
|
inline-size: 100%;
|
||||||
inline-size: 100%;
|
inset: 0;
|
||||||
inset: 0;
|
opacity: 0;
|
||||||
opacity: 0;
|
pointer-events: none;
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,17 +10,19 @@
|
|||||||
*/
|
*/
|
||||||
@use "sass:map";
|
@use "sass:map";
|
||||||
|
|
||||||
// @forward "@layouts/styles/variables";
|
// 使用模板中的变量,不再进行配置
|
||||||
|
@use "@layouts/styles/variables" as layouts-vars;
|
||||||
@use "utils";
|
@use "utils";
|
||||||
|
|
||||||
// 👉 Default layout
|
// 👉 Default layout
|
||||||
|
|
||||||
$navbar-high-emphasis-text: true !default;
|
$navbar-high-emphasis-text: true !default;
|
||||||
|
|
||||||
@forward "@layouts/styles/variables" with (
|
// 移除@forward配置,已合并到template/_variables.scss
|
||||||
$layout-vertical-nav-collapsed-width: 68px !default,
|
// @forward "@layouts/styles/variables" with (
|
||||||
);
|
// $layout-vertical-nav-collapsed-width: 68px !default,
|
||||||
@use "@layouts/styles/variables" as *;
|
// );
|
||||||
|
// @use "@layouts/styles/variables" as *;
|
||||||
|
|
||||||
$theme-colors-name: (
|
$theme-colors-name: (
|
||||||
"primary",
|
"primary",
|
||||||
@@ -55,7 +57,7 @@ $vertical-nav-horizontal-padding: 1.375rem 1rem !default;
|
|||||||
$vertical-nav-horizontal-padding-start: utils.get-first-value($vertical-nav-horizontal-padding);
|
$vertical-nav-horizontal-padding-start: utils.get-first-value($vertical-nav-horizontal-padding);
|
||||||
|
|
||||||
// Vertical nav header height. Mostly we will align it with navbar height;
|
// Vertical nav header height. Mostly we will align it with navbar height;
|
||||||
$vertical-nav-header-height: $layout-vertical-nav-navbar-height !default;
|
$vertical-nav-header-height: layouts-vars.$layout-vertical-nav-navbar-height !default;
|
||||||
$vertical-nav-navbar-shadow: 0 4px 8px -4px rgb(94 86 105 / 42%);
|
$vertical-nav-navbar-shadow: 0 4px 8px -4px rgb(94 86 105 / 42%);
|
||||||
|
|
||||||
// Vertical nav header padding
|
// Vertical nav header padding
|
||||||
|
|||||||
@@ -1,157 +0,0 @@
|
|||||||
@use "mixins";
|
|
||||||
@use "vuetify/lib/styles/tools/_elevation" as mixins_elevation;
|
|
||||||
@use "@layouts/styles/placeholders";
|
|
||||||
@use "@configured-variables" as variables;
|
|
||||||
|
|
||||||
// 👉 Avatar group
|
|
||||||
.v-avatar-group {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
> * {
|
|
||||||
&:not(:first-child) {
|
|
||||||
margin-inline-start: -0.8rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
transition: transform 0.25s ease, box-shadow 0.15s ease;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
z-index: 2;
|
|
||||||
transform: translateY(-5px) scale(1.05);
|
|
||||||
|
|
||||||
@include mixins.elevation(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
> .v-avatar {
|
|
||||||
border: 2px solid rgb(var(--v-theme-surface));
|
|
||||||
transition: transform 0.15s ease;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Button outline with default color border color
|
|
||||||
.v-alert--variant-outlined,
|
|
||||||
.v-avatar--variant-outlined,
|
|
||||||
.v-btn.v-btn--variant-outlined,
|
|
||||||
.v-card--variant-outlined,
|
|
||||||
.v-chip--variant-outlined,
|
|
||||||
.v-list-item--variant-outlined {
|
|
||||||
&:not([class*="text-"]) {
|
|
||||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
||||||
}
|
|
||||||
|
|
||||||
&.text-default {
|
|
||||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Custom Input
|
|
||||||
.v-label.custom-input {
|
|
||||||
padding: 1rem;
|
|
||||||
border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
|
|
||||||
opacity: 1;
|
|
||||||
white-space: normal;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
border-color: rgba(var(--v-border-color), 0.25);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
border-color: rgb(var(--v-theme-primary));
|
|
||||||
|
|
||||||
.v-icon {
|
|
||||||
color: rgb(var(--v-theme-primary)) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dialog responsive width
|
|
||||||
.v-dialog {
|
|
||||||
// dialog custom close btn
|
|
||||||
.v-dialog-close-btn {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity)) !important;
|
|
||||||
inset-block-start: 0.9375rem;
|
|
||||||
inset-inline-end: 0.9375rem;
|
|
||||||
|
|
||||||
.v-btn__overlay {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-card {
|
|
||||||
@extend %style-scroll-bar;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 600px) {
|
|
||||||
.v-dialog {
|
|
||||||
&.v-dialog-sm,
|
|
||||||
&.v-dialog-lg,
|
|
||||||
&.v-dialog-xl {
|
|
||||||
.v-overlay__content {
|
|
||||||
inline-size: 565px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 960px) {
|
|
||||||
.v-dialog {
|
|
||||||
&.v-dialog-lg,
|
|
||||||
&.v-dialog-xl {
|
|
||||||
.v-overlay__content {
|
|
||||||
inline-size: 865px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1264px) {
|
|
||||||
.v-dialog.v-dialog-xl {
|
|
||||||
.v-overlay__content {
|
|
||||||
inline-size: 1165px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// v-tab with pill support
|
|
||||||
|
|
||||||
.v-tabs.v-tabs-pill {
|
|
||||||
.v-tab.v-btn {
|
|
||||||
border-radius: 0.25rem !important;
|
|
||||||
transition: none;
|
|
||||||
|
|
||||||
.v-tab__slider {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// loop for all colors bg
|
|
||||||
@each $color-name in variables.$theme-colors-name {
|
|
||||||
.v-tabs.v-tabs-pill {
|
|
||||||
.v-slide-group-item--active.v-tab--selected.text-#{$color-name} {
|
|
||||||
background-color: rgb(var(--v-theme-#{$color-name}));
|
|
||||||
color: rgb(var(--v-theme-on-#{$color-name})) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ We are make even width of all v-timeline body
|
|
||||||
.v-timeline--vertical.v-timeline {
|
|
||||||
.v-timeline-item {
|
|
||||||
.v-timeline-item__body {
|
|
||||||
justify-self: stretch !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Textarea
|
|
||||||
|
|
||||||
.v-textarea .v-field__input {
|
|
||||||
/* stylelint-disable-next-line property-no-vendor-prefix */
|
|
||||||
-webkit-mask-image: none !important;
|
|
||||||
mask-image: none !important;
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
@use "@configured-variables" as variables;
|
|
||||||
|
|
||||||
// ————————————————————————————————————
|
|
||||||
// * ——— Perfect Scrollbar
|
|
||||||
// ————————————————————————————————————
|
|
||||||
|
|
||||||
.v-application.v-theme--dark {
|
|
||||||
.ps__rail-y,
|
|
||||||
.ps__rail-x {
|
|
||||||
background-color: transparent !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ps__thumb-y {
|
|
||||||
background-color: variables.$plugin-ps-thumb-y-dark;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
@use "@core/scss/base/placeholders";
|
|
||||||
@use "@core/scss/base/variables";
|
|
||||||
|
|
||||||
.layout-vertical-nav,
|
|
||||||
.layout-horizontal-nav {
|
|
||||||
ol,
|
|
||||||
ul {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-navbar {
|
|
||||||
@if variables.$navbar-high-emphasis-text {
|
|
||||||
@extend %layout-navbar;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
@use "sass:map";
|
|
||||||
|
|
||||||
// Layout
|
|
||||||
@use "vertical-nav";
|
|
||||||
@use "default-layout";
|
|
||||||
@use "default-layout-w-vertical-nav";
|
|
||||||
|
|
||||||
// Layouts package
|
|
||||||
@use "layouts";
|
|
||||||
|
|
||||||
// Components
|
|
||||||
@use "components";
|
|
||||||
|
|
||||||
// Utilities
|
|
||||||
@use "utilities";
|
|
||||||
|
|
||||||
// Misc
|
|
||||||
@use "misc";
|
|
||||||
|
|
||||||
// Dark
|
|
||||||
@use "dark";
|
|
||||||
|
|
||||||
// libs
|
|
||||||
@use "libs/perfect-scrollbar";
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: rgb(var(--v-theme-primary));
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vuetify 3 don't provide margin bottom style like vuetify 2
|
|
||||||
p {
|
|
||||||
margin-block-end: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Iconify icon size
|
|
||||||
svg.iconify {
|
|
||||||
block-size: 1em;
|
|
||||||
inline-size: 1em;
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
@use "@configured-variables" as variables;
|
|
||||||
|
|
||||||
/* ℹ️ This styles extends the existing layout package's styles for handling cases that aren't related to layouts package */
|
|
||||||
|
|
||||||
/*
|
|
||||||
ℹ️ When we use v-layout as immediate first child of `.page-content-container`, it adds display:flex and page doesn't get contained height
|
|
||||||
*/
|
|
||||||
// .layout-wrapper.layout-nav-type-vertical {
|
|
||||||
// &.layout-content-height-fixed {
|
|
||||||
// .page-content-container {
|
|
||||||
// > .v-layout:first-child > :not(.v-navigation-drawer):first-child {
|
|
||||||
// flex-grow: 1;
|
|
||||||
// block-size: 100%;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
.layout-wrapper.layout-nav-type-vertical {
|
|
||||||
&.layout-content-height-fixed {
|
|
||||||
.page-content-container {
|
|
||||||
> .v-layout:first-child {
|
|
||||||
overflow: hidden;
|
|
||||||
min-block-size: 100%;
|
|
||||||
|
|
||||||
> .v-main {
|
|
||||||
// overflow-y: auto;
|
|
||||||
|
|
||||||
.v-main__wrap > :first-child {
|
|
||||||
block-size: 100%;
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ Let div/v-layout take full height. E.g. Email App
|
|
||||||
.layout-wrapper.layout-nav-type-horizontal {
|
|
||||||
&.layout-content-height-fixed {
|
|
||||||
> .layout-page-content {
|
|
||||||
// display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Floating navbar styles
|
|
||||||
@if variables.$vertical-nav-navbar-style == "floating" {
|
|
||||||
// ℹ️ Add spacing above navbar if navbar is floating (was in %layout-navbar-fixed placeholder)
|
|
||||||
.layout-wrapper.layout-nav-type-vertical.layout-navbar-fixed {
|
|
||||||
.layout-navbar {
|
|
||||||
inset-block-start: variables.$vertical-nav-floating-navbar-top;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
ℹ️ If it's floating navbar
|
|
||||||
Add `vertical-nav-floating-navbar-top` as margin top to .layout-page-content
|
|
||||||
*/
|
|
||||||
.layout-page-content {
|
|
||||||
margin-block-start: variables.$vertical-nav-floating-navbar-top;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
// ℹ️ scrollable-content allows creating fixed header and scrollable content for VNavigationDrawer (Used when perfect scrollbar is used)
|
|
||||||
.scrollable-content {
|
|
||||||
&.v-navigation-drawer {
|
|
||||||
.v-navigation-drawer__content {
|
|
||||||
display: flex;
|
|
||||||
overflow: hidden;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ adding styling for code tag
|
|
||||||
code {
|
|
||||||
border-radius: 3px;
|
|
||||||
color: rgb(var(--v-code-color));
|
|
||||||
font-size: 90%;
|
|
||||||
font-weight: 400;
|
|
||||||
padding-block: 0.2em;
|
|
||||||
padding-inline: 0.4em;
|
|
||||||
}
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
@use "sass:map";
|
|
||||||
@use "@styles/variables/_vuetify.scss";
|
|
||||||
|
|
||||||
@mixin elevation($z, $important: false) {
|
|
||||||
box-shadow: map.get(vuetify.$shadow-key-umbra, $z), map.get(vuetify.$shadow-key-penumbra, $z), map.get(vuetify.$shadow-key-ambient, $z) if($important, !important, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ This mixin is inspired from vuetify for adding hover styles via before pseudo element
|
|
||||||
@mixin before-pseudo() {
|
|
||||||
position: relative;
|
|
||||||
@media (hover) {
|
|
||||||
&::before {
|
|
||||||
position: absolute;
|
|
||||||
border-radius: inherit;
|
|
||||||
background: currentcolor;
|
|
||||||
block-size: 100%;
|
|
||||||
content: "";
|
|
||||||
inline-size: 100%;
|
|
||||||
inset: 0;
|
|
||||||
opacity: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin bordered-skin($component, $border-property: "border", $important: false) {
|
|
||||||
#{$component} {
|
|
||||||
// background-color: rgb(var(--v-theme-background));
|
|
||||||
box-shadow: none !important;
|
|
||||||
#{$border-property}: 1px solid rgba(var(--v-border-color), var(--v-border-opacity)) if($important, !important, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ Inspired from vuetify's active-states mixin
|
|
||||||
// focus => 0.12 & selected => 0.08
|
|
||||||
@mixin selected-states($selector) {
|
|
||||||
// #{$selector} {
|
|
||||||
// opacity: calc(#{map.get(vuetify.$states, "selected")} * var(--v-theme-overlay-multiplier));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// &:hover
|
|
||||||
// #{$selector} {
|
|
||||||
// opacity: calc(#{map.get(vuetify.$states, "selected") + map.get(vuetify.$states, "hover")} * var(--v-theme-overlay-multiplier));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// &:focus-visible
|
|
||||||
// #{$selector} {
|
|
||||||
// opacity: calc(#{map.get(vuetify.$states, "selected") + map.get(vuetify.$states, "focus")} * var(--v-theme-overlay-multiplier));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @supports not selector(:focus-visible) {
|
|
||||||
// &:focus {
|
|
||||||
// #{$selector} {
|
|
||||||
// opacity: calc(#{map.get(vuetify.$states, "selected") + map.get(vuetify.$states, "focus")} * var(--v-theme-overlay-multiplier));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
#{$selector} {
|
|
||||||
opacity: calc(var(--v-selected-opacity) * var(--v-theme-overlay-multiplier));
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
#{$selector} {
|
|
||||||
opacity: calc(var(--v-selected-opacity) + var(--v-hover-opacity) * var(--v-theme-overlay-multiplier));
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus-visible
|
|
||||||
#{$selector} {
|
|
||||||
opacity: calc(var(--v-selected-opacity) + var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
|
|
||||||
}
|
|
||||||
|
|
||||||
@supports not selector(:focus-visible) {
|
|
||||||
&:focus {
|
|
||||||
#{$selector} {
|
|
||||||
opacity: calc(var(--v-selected-opacity) + var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
@use "@configured-variables" as variables;
|
|
||||||
@use "@layouts/styles/mixins" as layoutsMixins;
|
|
||||||
|
|
||||||
// 👉 Demo spacers
|
|
||||||
// TODO: Use vuetify SCSS variable here
|
|
||||||
$card-spacer-content: 16px;
|
|
||||||
|
|
||||||
.demo-space-x {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
align-items: center;
|
|
||||||
margin-block-start: -$card-spacer-content;
|
|
||||||
|
|
||||||
& > * {
|
|
||||||
margin-block-start: $card-spacer-content;
|
|
||||||
margin-inline-end: $card-spacer-content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-space-y {
|
|
||||||
& > * {
|
|
||||||
margin-block-end: $card-spacer-content;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-block-end: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Card match height
|
|
||||||
.match-height.v-row {
|
|
||||||
.v-card {
|
|
||||||
block-size: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Whitespace
|
|
||||||
.whitespace-no-wrap {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Colors
|
|
||||||
|
|
||||||
/*
|
|
||||||
ℹ️ Vuetify is applying `.text-white` class to badge icon but don't provide its styles
|
|
||||||
Moreover, we also use this class in some places
|
|
||||||
|
|
||||||
ℹ️ In vuetify 2 with `$color-pack: false` SCSS var config this class was getting generated but this is not the case in v3
|
|
||||||
|
|
||||||
ℹ️ We also need !important to get correct color in badge icon
|
|
||||||
*/
|
|
||||||
.text-white {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-var-theme-background {
|
|
||||||
background-color: rgba(var(--v-theme-background), var(--v-hover-opacity)) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// [/^bg-light-(\w+)$/, ([, w]) => ({ backgroundColor: `rgba(var(--v-theme-${w}), var(--v-activated-opacity))` })],
|
|
||||||
@each $color-name in variables.$theme-colors-name {
|
|
||||||
.bg-light-#{$color-name} {
|
|
||||||
background-color: rgba(var(--v-theme-#{$color-name}), var(--v-activated-opacity)) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 clamp text
|
|
||||||
.clamp-text {
|
|
||||||
display: -webkit-box;
|
|
||||||
overflow: hidden;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
-webkit-line-clamp: 2;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leading-normal {
|
|
||||||
line-height: normal !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 for rtl only
|
|
||||||
.flip-in-rtl {
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
transform: scaleX(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Carousel
|
|
||||||
.carousel-delimiter-top-end {
|
|
||||||
.v-carousel__controls {
|
|
||||||
justify-content: end;
|
|
||||||
block-size: 40px;
|
|
||||||
inset-block-start: 0;
|
|
||||||
padding-inline: 1rem;
|
|
||||||
|
|
||||||
.v-btn--icon.v-btn--density-default {
|
|
||||||
block-size: calc(var(--v-btn-height) + -10px);
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
|
|
||||||
inline-size: calc(var(--v-btn-height) + -10px);
|
|
||||||
|
|
||||||
&.v-btn--active {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-btn__overlay {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $color-name in variables.$theme-colors-name {
|
|
||||||
|
|
||||||
&.dots-active-#{$color-name} {
|
|
||||||
.v-carousel__controls {
|
|
||||||
.v-btn--active {
|
|
||||||
color: rgb(var(--v-theme-#{$color-name})) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-timeline-item {
|
|
||||||
.app-timeline-title {
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 500;
|
|
||||||
line-height: 1.3125rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-timeline-meta {
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity));
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 0.875rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-timeline-text {
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1.25rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
@use "sass:map";
|
|
||||||
@use "sass:list";
|
|
||||||
@use "@configured-variables" as variables;
|
|
||||||
|
|
||||||
// Thanks: https://css-tricks.com/snippets/sass/deep-getset-maps/
|
|
||||||
@function map-deep-get($map, $keys...) {
|
|
||||||
@each $key in $keys {
|
|
||||||
$map: map.get($map, $key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $map;
|
|
||||||
}
|
|
||||||
|
|
||||||
@function map-deep-set($map, $keys, $value) {
|
|
||||||
$maps: ($map,);
|
|
||||||
$result: null;
|
|
||||||
|
|
||||||
// If the last key is a map already
|
|
||||||
// Warn the user we will be overriding it with $value
|
|
||||||
@if type-of(nth($keys, -1)) == "map" {
|
|
||||||
@warn "The last key you specified is a map; it will be overrided with `#{$value}`.";
|
|
||||||
}
|
|
||||||
|
|
||||||
// If $keys is a single key
|
|
||||||
// Just merge and return
|
|
||||||
@if length($keys) == 1 {
|
|
||||||
@return map-merge($map, ($keys: $value));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loop from the first to the second to last key from $keys
|
|
||||||
// Store the associated map to this key in the $maps list
|
|
||||||
// If the key doesn't exist, throw an error
|
|
||||||
@for $i from 1 through length($keys) - 1 {
|
|
||||||
$current-key: list.nth($keys, $i);
|
|
||||||
$current-map: list.nth($maps, -1);
|
|
||||||
$current-get: map.get($current-map, $current-key);
|
|
||||||
|
|
||||||
@if not $current-get {
|
|
||||||
@error "Key `#{$key}` doesn't exist at current level in map.";
|
|
||||||
}
|
|
||||||
|
|
||||||
$maps: list.append($maps, $current-get);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loop from the last map to the first one
|
|
||||||
// Merge it with the previous one
|
|
||||||
@for $i from length($maps) through 1 {
|
|
||||||
$current-map: list.nth($maps, $i);
|
|
||||||
$current-key: list.nth($keys, $i);
|
|
||||||
$current-val: if($i == list.length($maps), $value, $result);
|
|
||||||
$result: map.map-merge($current-map, ($current-key: $current-val));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return result
|
|
||||||
@return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// font size utility classes
|
|
||||||
@each $name, $size in variables.$font-sizes {
|
|
||||||
.text-#{$name} {
|
|
||||||
font-size: $size;
|
|
||||||
line-height: map.get(variables.$font-line-height, $name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// truncate utility class
|
|
||||||
.truncate {
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
// gap utility class
|
|
||||||
@each $name, $size in variables.$gap {
|
|
||||||
.gap-#{$name} {
|
|
||||||
gap: $size;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gap-x-#{$name} {
|
|
||||||
column-gap: $size;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gap-y-#{$name} {
|
|
||||||
row-gap: $size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-none {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
@@ -1,197 +0,0 @@
|
|||||||
@use "vuetify/lib/styles/tools/functions" as *;
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: Add docs on when to use placeholder vs when to use SASS variable
|
|
||||||
|
|
||||||
Placeholder
|
|
||||||
- When we want to keep customization to our self between templates use it
|
|
||||||
|
|
||||||
Variables
|
|
||||||
- When we want to allow customization from both user and our side
|
|
||||||
- You can also use variable for consistency (e.g. mx 1 rem should be applied to both vertical nav items and vertical nav header)
|
|
||||||
*/
|
|
||||||
|
|
||||||
@forward "@layouts/styles/variables" with (
|
|
||||||
// Adjust z-index so vertical nav & overlay stays on top of v-layout in v-main. E.g. Email app
|
|
||||||
$layout-vertical-nav-z-index: 1004,
|
|
||||||
$layout-overlay-z-index: 1003,
|
|
||||||
);
|
|
||||||
@use "@layouts/styles/variables" as *;
|
|
||||||
|
|
||||||
// 👉 Default layout
|
|
||||||
|
|
||||||
$navbar-high-emphasis-text: true !default;
|
|
||||||
|
|
||||||
// @forward "@layouts/styles/variables" with (
|
|
||||||
// $layout-vertical-nav-width: 350px !default,
|
|
||||||
// );
|
|
||||||
|
|
||||||
$theme-colors-name: (
|
|
||||||
"primary",
|
|
||||||
"secondary",
|
|
||||||
"error",
|
|
||||||
"info",
|
|
||||||
"success",
|
|
||||||
"warning"
|
|
||||||
) !default;
|
|
||||||
|
|
||||||
// 👉 Default layout with vertical nav
|
|
||||||
|
|
||||||
$default-layout-with-vertical-nav-navbar-footer-roundness: 10px !default;
|
|
||||||
|
|
||||||
// 👉 Vertical nav
|
|
||||||
$vertical-nav-background-color-rgb: var(--v-theme-background) !default;
|
|
||||||
$vertical-nav-background-color: rgb(#{$vertical-nav-background-color-rgb}) !default;
|
|
||||||
|
|
||||||
// ℹ️ This is used to keep consistency between nav items and nav header left & right margin
|
|
||||||
// This is used by nav items & nav header
|
|
||||||
$vertical-nav-horizontal-spacing: 1rem !default;
|
|
||||||
$vertical-nav-horizontal-padding: 0.75rem !default;
|
|
||||||
|
|
||||||
// Vertical nav header height. Mostly we will align it with navbar height;
|
|
||||||
$vertical-nav-header-height: $layout-vertical-nav-navbar-height !default;
|
|
||||||
$vertical-nav-navbar-elevation: 3 !default;
|
|
||||||
$vertical-nav-navbar-style: "elevated" !default; // options: elevated, floating
|
|
||||||
$vertical-nav-floating-navbar-top: 1rem !default;
|
|
||||||
|
|
||||||
// Vertical nav header padding
|
|
||||||
$vertical-nav-header-padding: 1rem $vertical-nav-horizontal-padding !default;
|
|
||||||
$vertical-nav-header-inline-spacing: $vertical-nav-horizontal-spacing !default;
|
|
||||||
|
|
||||||
// Move logo when vertical nav is mini (collapsed but not hovered)
|
|
||||||
$vertical-nav-header-logo-translate-x-when-vertical-nav-mini: -4px !default;
|
|
||||||
|
|
||||||
// Space between logo and title
|
|
||||||
$vertical-nav-header-logo-title-spacing: 0.9rem !default;
|
|
||||||
|
|
||||||
// Section title margin top (when its not first child)
|
|
||||||
$vertical-nav-section-title-mt: 1.5rem !default;
|
|
||||||
|
|
||||||
// Section title margin bottom
|
|
||||||
$vertical-nav-section-title-mb: 0.5rem !default;
|
|
||||||
|
|
||||||
// Vertical nav icons
|
|
||||||
$vertical-nav-items-icon-size: 1.5rem !default;
|
|
||||||
$vertical-nav-items-nested-icon-size: 0.9rem !default;
|
|
||||||
$vertical-nav-items-icon-margin-inline-end: 0.5rem !default;
|
|
||||||
|
|
||||||
// Transition duration for nav group arrow
|
|
||||||
$vertical-nav-nav-group-arrow-transition-duration: 0.15s !default;
|
|
||||||
|
|
||||||
// Timing function for nav group arrow
|
|
||||||
$vertical-nav-nav-group-arrow-transition-timing-function: ease-in-out !default;
|
|
||||||
|
|
||||||
// 👉 Horizontal nav
|
|
||||||
|
|
||||||
/*
|
|
||||||
❗ Heads up
|
|
||||||
==================
|
|
||||||
Here we assume we will always use shorthand property which will apply same padding on four side
|
|
||||||
This is because this have been used as value of top property by `.popper-content`
|
|
||||||
*/
|
|
||||||
$horizontal-nav-padding: 0.6875rem !default;
|
|
||||||
|
|
||||||
// Gap between top level horizontal nav items
|
|
||||||
$horizontal-nav-top-level-items-gap: 4px !default;
|
|
||||||
|
|
||||||
// Horizontal nav icons
|
|
||||||
$horizontal-nav-items-icon-size: 1.5rem !default;
|
|
||||||
$horizontal-nav-third-level-icon-size: 0.9rem !default;
|
|
||||||
$horizontal-nav-items-icon-margin-inline-end: 0.625rem !default;
|
|
||||||
|
|
||||||
// ℹ️ We used SCSS variable because we want to allow users to update max height of popper content
|
|
||||||
// 120px is combined height of navbar & horizontal nav
|
|
||||||
$horizontal-nav-popper-content-max-height: calc((var(--vh, 1vh) * 100) - 120px - 4rem) !default;
|
|
||||||
|
|
||||||
// ℹ️ This variable is used for horizontal nav popper content's `margin-top` and "The bridge"'s height. We need to sync both values.
|
|
||||||
$horizontal-nav-popper-content-top: calc($horizontal-nav-padding + 0.375rem) !default;
|
|
||||||
|
|
||||||
// 👉 Plugins
|
|
||||||
|
|
||||||
$plugin-ps-thumb-y-dark: rgba(var(--v-theme-surface-variant), 0.35) !default;
|
|
||||||
|
|
||||||
// 👉 Vuetify
|
|
||||||
|
|
||||||
// Used in src/@core/scss/base/libs/vuetify/_overrides.scss
|
|
||||||
$vuetify-reduce-default-compact-button-icon-size: true !default;
|
|
||||||
|
|
||||||
// 👉 Custom variables
|
|
||||||
// for utility classes
|
|
||||||
$font-sizes: () !default;
|
|
||||||
$font-sizes: map-deep-merge(
|
|
||||||
(
|
|
||||||
"xs": 0.75rem,
|
|
||||||
"sm": 0.875rem,
|
|
||||||
"base": 1rem,
|
|
||||||
"lg": 1.125rem,
|
|
||||||
"xl": 1.25rem,
|
|
||||||
"2xl": 1.5rem,
|
|
||||||
"3xl": 1.875rem,
|
|
||||||
"4xl": 2.25rem,
|
|
||||||
"5xl": 3rem,
|
|
||||||
"6xl": 3.75rem,
|
|
||||||
"7xl": 4.5rem,
|
|
||||||
"8xl": 6rem,
|
|
||||||
"9xl": 8rem
|
|
||||||
),
|
|
||||||
$font-sizes
|
|
||||||
);
|
|
||||||
|
|
||||||
// line height
|
|
||||||
$font-line-height: () !default;
|
|
||||||
$font-line-height: map-deep-merge(
|
|
||||||
(
|
|
||||||
"xs": 1rem,
|
|
||||||
"sm": 1.25rem,
|
|
||||||
"base": 1.5rem,
|
|
||||||
"lg": 1.75rem,
|
|
||||||
"xl": 1.75rem,
|
|
||||||
"2xl": 2rem,
|
|
||||||
"3xl": 2.25rem,
|
|
||||||
"4xl": 2.5rem,
|
|
||||||
"5xl": 1,
|
|
||||||
"6xl": 1,
|
|
||||||
"7xl": 1,
|
|
||||||
"8xl": 1,
|
|
||||||
"9xl": 1
|
|
||||||
),
|
|
||||||
$font-line-height
|
|
||||||
);
|
|
||||||
|
|
||||||
// gap utility class
|
|
||||||
$gap: () !default;
|
|
||||||
$gap: map-deep-merge(
|
|
||||||
(
|
|
||||||
"0": 0,
|
|
||||||
"1": 0.25rem,
|
|
||||||
"2": 0.5rem,
|
|
||||||
"3": 0.75rem,
|
|
||||||
"4": 1rem,
|
|
||||||
"5": 1.25rem,
|
|
||||||
"6":1.5rem,
|
|
||||||
"7": 1.75rem,
|
|
||||||
"8": 2rem,
|
|
||||||
"9": 2.25rem,
|
|
||||||
"10": 2.5rem,
|
|
||||||
"11": 2.75rem,
|
|
||||||
"12": 3rem,
|
|
||||||
"14": 3.5rem,
|
|
||||||
"16": 4rem,
|
|
||||||
"20": 5rem,
|
|
||||||
"24": 6rem,
|
|
||||||
"28": 7rem,
|
|
||||||
"32": 8rem,
|
|
||||||
"36": 9rem,
|
|
||||||
"40": 10rem,
|
|
||||||
"44": 11rem,
|
|
||||||
"48": 12rem,
|
|
||||||
"52": 13rem,
|
|
||||||
"56": 14rem,
|
|
||||||
"60": 15rem,
|
|
||||||
"64": 16rem,
|
|
||||||
"72": 18rem,
|
|
||||||
"80": 20rem,
|
|
||||||
"96": 24rem
|
|
||||||
),
|
|
||||||
$gap
|
|
||||||
);
|
|
||||||
@@ -1,250 +0,0 @@
|
|||||||
@use "@core/scss/base/placeholders" as *;
|
|
||||||
@use "@core/scss/template/placeholders" as *;
|
|
||||||
@use "@layouts/styles/mixins" as layoutsMixins;
|
|
||||||
@use "@configured-variables" as variables;
|
|
||||||
@use "@core/scss/base/mixins" as mixins;
|
|
||||||
@use "vuetify/lib/styles/tools/states" as vuetifyStates;
|
|
||||||
|
|
||||||
.layout-nav-type-vertical {
|
|
||||||
// 👉 Layout Vertical nav
|
|
||||||
.layout-vertical-nav {
|
|
||||||
$sl-layout-nav-type-vertical: &;
|
|
||||||
|
|
||||||
@extend %nav;
|
|
||||||
|
|
||||||
@at-root {
|
|
||||||
// ℹ️ Add styles for collapsed vertical nav
|
|
||||||
.layout-vertical-nav-collapsed#{$sl-layout-nav-type-vertical}.hovered {
|
|
||||||
@include mixins.elevation(6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
background-color: variables.$vertical-nav-background-color;
|
|
||||||
|
|
||||||
// 👉 Nav header
|
|
||||||
.nav-header {
|
|
||||||
overflow: hidden;
|
|
||||||
padding: variables.$vertical-nav-header-padding;
|
|
||||||
margin-inline: variables.$vertical-nav-header-inline-spacing;
|
|
||||||
min-block-size: variables.$vertical-nav-header-height;
|
|
||||||
|
|
||||||
// TEMPLATE: Check if we need to move this to master
|
|
||||||
.app-logo {
|
|
||||||
flex-shrink: 0;
|
|
||||||
transition: transform 0.25s ease-in-out;
|
|
||||||
|
|
||||||
@at-root {
|
|
||||||
// Move logo a bit to align center with the icons in vertical nav mini variant
|
|
||||||
.layout-vertical-nav-collapsed#{$sl-layout-nav-type-vertical}:not(.hovered) .nav-header .app-logo {
|
|
||||||
transform: translateX(variables.$vertical-nav-header-logo-translate-x-when-vertical-nav-mini);
|
|
||||||
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
transform: translateX(-(variables.$vertical-nav-header-logo-translate-x-when-vertical-nav-mini));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-title {
|
|
||||||
margin-inline-start: variables.$vertical-nav-header-logo-title-spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-action {
|
|
||||||
@extend %nav-header-action;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Nav items shadow
|
|
||||||
.vertical-nav-items-shadow {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
background:
|
|
||||||
linear-gradient(
|
|
||||||
rgb(#{variables.$vertical-nav-background-color-rgb}) 5%,
|
|
||||||
rgba(#{variables.$vertical-nav-background-color-rgb}, 75%) 45%,
|
|
||||||
rgba(#{variables.$vertical-nav-background-color-rgb}, 20%) 80%,
|
|
||||||
transparent
|
|
||||||
);
|
|
||||||
block-size: 55px;
|
|
||||||
inline-size: 100%;
|
|
||||||
inset-block-start: calc(#{variables.$vertical-nav-header-height} - 2px);
|
|
||||||
opacity: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
transition: opacity 0.15s ease-in-out;
|
|
||||||
will-change: opacity;
|
|
||||||
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
transform: translateX(8px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.scrolled {
|
|
||||||
.vertical-nav-items-shadow {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ps__rail-y {
|
|
||||||
// ℹ️ Setting z-index: 1 will make perfect scrollbar thumb appear on top of vertical nav items shadow
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Nav section title
|
|
||||||
.nav-section-title {
|
|
||||||
@extend %vertical-nav-item;
|
|
||||||
@extend %vertical-nav-section-title;
|
|
||||||
|
|
||||||
margin-block-end: variables.$vertical-nav-section-title-mb;
|
|
||||||
|
|
||||||
&:not(:first-child) {
|
|
||||||
margin-block-start: variables.$vertical-nav-section-title-mt;
|
|
||||||
}
|
|
||||||
|
|
||||||
.placeholder-icon {
|
|
||||||
margin-inline: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nav item badge
|
|
||||||
.nav-item-badge {
|
|
||||||
@extend %vertical-nav-item-badge;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Nav group & Link
|
|
||||||
.nav-link,
|
|
||||||
.nav-group {
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
> :first-child {
|
|
||||||
@extend %vertical-nav-item;
|
|
||||||
@extend %vertical-nav-item-interactive;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item-icon {
|
|
||||||
@extend %vertical-nav-items-icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled {
|
|
||||||
opacity: var(--v-disabled-opacity);
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Vertical nav link
|
|
||||||
.nav-link {
|
|
||||||
@extend %nav-link;
|
|
||||||
|
|
||||||
> .router-link-exact-active {
|
|
||||||
@extend %nav-link-active;
|
|
||||||
}
|
|
||||||
|
|
||||||
> a {
|
|
||||||
// Adds before psudo element to style hover state
|
|
||||||
@include mixins.before-pseudo;
|
|
||||||
|
|
||||||
// Adds vuetify states
|
|
||||||
@include vuetifyStates.states($active: false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 Vertical nav group
|
|
||||||
.nav-group {
|
|
||||||
// Reduce the size of icon if link/group is inside group
|
|
||||||
.nav-group,
|
|
||||||
.nav-link {
|
|
||||||
.nav-item-icon {
|
|
||||||
@extend %vertical-nav-items-nested-icon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hide icons after 2nd level
|
|
||||||
& .nav-group {
|
|
||||||
.nav-link,
|
|
||||||
.nav-group {
|
|
||||||
.nav-item-icon {
|
|
||||||
@extend %vertical-nav-items-icon-after-2nd-level;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-group-arrow {
|
|
||||||
flex-shrink: 0;
|
|
||||||
transform-origin: center;
|
|
||||||
transition: transform variables.$vertical-nav-nav-group-arrow-transition-duration variables.$vertical-nav-nav-group-arrow-transition-timing-function;
|
|
||||||
will-change: transform;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rotate arrow icon if group is opened
|
|
||||||
&.open {
|
|
||||||
> .nav-group-label .nav-group-arrow {
|
|
||||||
transform: rotateZ(90deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nav group label
|
|
||||||
> :first-child {
|
|
||||||
// Adds before psudo element to style hover state
|
|
||||||
@include mixins.before-pseudo;
|
|
||||||
|
|
||||||
// Adds vuetify states
|
|
||||||
@include vuetifyStates.states($active: false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Active & open states for nav group label
|
|
||||||
&.active,
|
|
||||||
&.open {
|
|
||||||
> :first-child {
|
|
||||||
@extend %vertical-nav-group-open-active;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// SECTION: Transitions
|
|
||||||
.vertical-nav-section-title-enter-active,
|
|
||||||
.vertical-nav-section-title-leave-active {
|
|
||||||
transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vertical-nav-section-title-enter-from,
|
|
||||||
.vertical-nav-section-title-leave-to {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(15px);
|
|
||||||
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
transform: translateX(-15px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-slide-x-enter-active,
|
|
||||||
.transition-slide-x-leave-active {
|
|
||||||
transition: opacity 0.1s ease-in-out, transform 0.12s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-slide-x-enter-from,
|
|
||||||
.transition-slide-x-leave-to {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(-15px);
|
|
||||||
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
transform: translateX(15px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vertical-nav-app-title-enter-active,
|
|
||||||
.vertical-nav-app-title-leave-active {
|
|
||||||
transition: opacity 0.1s ease-in-out, transform 0.12s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vertical-nav-app-title-enter-from,
|
|
||||||
.vertical-nav-app-title-leave-to {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(-15px);
|
|
||||||
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
transform: translateX(15px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// !SECTION
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
@use "overrides";
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
// 👉 Shadow opacities
|
|
||||||
$shadow-key-umbra-opacity-custom: var(--v-shadow-key-umbra-opacity);
|
|
||||||
$shadow-key-penumbra-opacity-custom: var(--v-shadow-key-penumbra-opacity);
|
|
||||||
$shadow-key-ambient-opacity-custom: var(--v-shadow-key-ambient-opacity);
|
|
||||||
|
|
||||||
// 👉 Card transition properties
|
|
||||||
$card-transition-property-custom: box-shadow, opacity;
|
|
||||||
|
|
||||||
@forward "vuetify/settings" with (
|
|
||||||
// 👉 General settings
|
|
||||||
$color-pack: false !default,
|
|
||||||
|
|
||||||
// 👉 Shadow opacity
|
|
||||||
$shadow-key-umbra-opacity: $shadow-key-umbra-opacity-custom !default,
|
|
||||||
$shadow-key-penumbra-opacity: $shadow-key-penumbra-opacity-custom !default,
|
|
||||||
$shadow-key-ambient-opacity: $shadow-key-ambient-opacity-custom !default,
|
|
||||||
|
|
||||||
// 👉 Card
|
|
||||||
$card-color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)) !default,
|
|
||||||
$card-elevation: 6 !default,
|
|
||||||
$card-title-line-height: 1.6 !default,
|
|
||||||
$card-actions-min-height: unset !default,
|
|
||||||
$card-text-padding: 1.25rem !default,
|
|
||||||
$card-item-padding: 1.25rem !default,
|
|
||||||
$card-actions-padding: 0 12px 12px !default,
|
|
||||||
$card-transition-property: $card-transition-property-custom !default,
|
|
||||||
$card-subtitle-opacity: 1 !default,
|
|
||||||
|
|
||||||
// 👉 Expansion Panel
|
|
||||||
$expansion-panel-active-title-min-height: 48px !default,
|
|
||||||
|
|
||||||
// 👉 List
|
|
||||||
$list-item-icon-margin-end: 16px !default,
|
|
||||||
$list-item-icon-margin-start: 16px !default,
|
|
||||||
$list-item-subtitle-opacity: 1 !default,
|
|
||||||
|
|
||||||
// 👉 Tooltip
|
|
||||||
$tooltip-background-color: rgba(59, 55, 68, 0.9) !default,
|
|
||||||
$tooltip-text-color: rgb(var(--v-theme-on-primary)) !default,
|
|
||||||
$tooltip-font-size: 0.75rem !default,
|
|
||||||
|
|
||||||
$button-icon-density: ("default": 2, "comfortable": 0, "compact": -1 ) !default,
|
|
||||||
|
|
||||||
// 👉 VTimeline
|
|
||||||
$timeline-dot-size: 34px !default,
|
|
||||||
|
|
||||||
// 👉 VOverlay
|
|
||||||
$overlay-opacity: 1 !default,
|
|
||||||
);
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
@forward "vertical-nav";
|
|
||||||
@forward "nav";
|
|
||||||
@forward "default-layout";
|
|
||||||
@forward "default-layout-vertical-nav";
|
|
||||||
@forward "misc";
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
%blurry-bg {
|
|
||||||
/* stylelint-disable property-no-vendor-prefix */
|
|
||||||
-webkit-backdrop-filter: blur(6px);
|
|
||||||
backdrop-filter: blur(6px);
|
|
||||||
/* stylelint-enable */
|
|
||||||
background-color: rgb(var(--v-theme-surface), 0.9);
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
@use "vuetify/lib/styles/tools/_elevation" as mixins_elevation;
|
|
||||||
@use "@core/scss/base/mixins";
|
|
||||||
|
|
||||||
// ℹ️ This is common style that needs to be applied to both navs
|
|
||||||
%nav {
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
|
||||||
|
|
||||||
.nav-item-title {
|
|
||||||
letter-spacing: 0.15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-section-title {
|
|
||||||
letter-spacing: 0.4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Active nav link styles for horizontal & vertical nav
|
|
||||||
|
|
||||||
For horizontal nav it will be only applied to top level nav items
|
|
||||||
For vertical nav it will be only applied to nav links (not nav groups)
|
|
||||||
*/
|
|
||||||
%nav-link-active {
|
|
||||||
background-color: rgb(var(--v-theme-primary));
|
|
||||||
color: rgb(var(--v-theme-on-primary));
|
|
||||||
|
|
||||||
@include mixins.elevation(3);
|
|
||||||
}
|
|
||||||
|
|
||||||
%nav-link {
|
|
||||||
a {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
@use "@core/scss/base/mixins";
|
|
||||||
@use "@configured-variables" as variables;
|
|
||||||
@use "vuetify/lib/styles/tools/states" as vuetifyStates;
|
|
||||||
|
|
||||||
%nav-header-action {
|
|
||||||
font-size: 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nav items styles (including section title)
|
|
||||||
%vertical-nav-item {
|
|
||||||
margin-block: 0;
|
|
||||||
margin-inline: variables.$vertical-nav-horizontal-spacing;
|
|
||||||
padding-block: 0;
|
|
||||||
padding-inline: variables.$vertical-nav-horizontal-padding;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is same as `%vertical-nav-item` except section title is excluded
|
|
||||||
%vertical-nav-item-interactive {
|
|
||||||
border-radius: 0.4rem;
|
|
||||||
block-size: 2.75rem;
|
|
||||||
|
|
||||||
/*
|
|
||||||
ℹ️ We will use `margin-block-end` instead of `margin-block` to give more space for shadow to appear.
|
|
||||||
With `margin-block`, due to small space (space gets divided between top & bottom) shadow cuts
|
|
||||||
*/
|
|
||||||
margin-block-end: 0.375rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Common styles for nav item icon styles
|
|
||||||
// ℹ️ Nav group's children icon styles are not here (Adjusts height, width & margin)
|
|
||||||
%vertical-nav-items-icon {
|
|
||||||
flex-shrink: 0;
|
|
||||||
font-size: variables.$vertical-nav-items-icon-size;
|
|
||||||
margin-inline-end: variables.$vertical-nav-items-icon-margin-inline-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ Icon styling for icon nested inside another nav item (2nd level)
|
|
||||||
%vertical-nav-items-nested-icon {
|
|
||||||
/*
|
|
||||||
ℹ️ `margin-inline` will be (normal icon font-size - small icon font-size) / 2
|
|
||||||
(1.5rem - 0.9rem) / 2 => 0.6rem / 2 => 0.3rem
|
|
||||||
*/
|
|
||||||
$vertical-nav-items-nested-icon-margin-inline: calc((variables.$vertical-nav-items-icon-size - variables.$vertical-nav-items-nested-icon-size) / 2);
|
|
||||||
|
|
||||||
font-size: variables.$vertical-nav-items-nested-icon-size;
|
|
||||||
margin-inline-end: $vertical-nav-items-nested-icon-margin-inline + variables.$vertical-nav-items-icon-margin-inline-end;
|
|
||||||
margin-inline-start: $vertical-nav-items-nested-icon-margin-inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
%vertical-nav-items-icon-after-2nd-level {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open & Active nav group styles
|
|
||||||
%vertical-nav-group-open-active {
|
|
||||||
@include mixins.selected-states("&::before");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Section title
|
|
||||||
%vertical-nav-section-title {
|
|
||||||
// ℹ️ Setting height will prevent jerking when text & icon is toggled
|
|
||||||
block-size: 1.5rem;
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity));
|
|
||||||
font-size: 0.75rem;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vertical nav item badge styles
|
|
||||||
%vertical-nav-item-badge {
|
|
||||||
display: inline-block;
|
|
||||||
border-radius: 1.5rem;
|
|
||||||
font-size: 0.8em;
|
|
||||||
font-weight: 500;
|
|
||||||
line-height: 1;
|
|
||||||
padding-block: 0.25em;
|
|
||||||
padding-inline: 0.55em;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: baseline;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
@@ -1,33 +1,5 @@
|
|||||||
@use "sass:map";
|
@use "sass:map";
|
||||||
|
@use "template/index";
|
||||||
|
|
||||||
// Layout
|
// 保留这个引用以向后兼容,但实际功能已经移至template/index.scss
|
||||||
@use "vertical-nav";
|
@use "variables";
|
||||||
@use "default-layout";
|
|
||||||
|
|
||||||
// Components
|
|
||||||
@use "components";
|
|
||||||
|
|
||||||
// Utilities
|
|
||||||
@use "utilities";
|
|
||||||
|
|
||||||
// Misc
|
|
||||||
@use "misc";
|
|
||||||
|
|
||||||
// Dark
|
|
||||||
@use "dark";
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: rgb(var(--v-theme-primary));
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vuetify 3 don't provide margin bottom style like vuetify 2
|
|
||||||
p {
|
|
||||||
margin-block-end: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Iconify icon size
|
|
||||||
svg.iconify {
|
|
||||||
block-size: 1em;
|
|
||||||
inline-size: 1em;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
$shadow-key-umbra-opacity-custom: var(--v-shadow-key-umbra-opacity);
|
$shadow-key-umbra-opacity-custom: var(--v-shadow-key-umbra-opacity);
|
||||||
$shadow-key-penumbra-opacity-custom: var(--v-shadow-key-penumbra-opacity);
|
$shadow-key-penumbra-opacity-custom: var(--v-shadow-key-penumbra-opacity);
|
||||||
$shadow-key-ambient-opacity-custom: var(--v-shadow-key-ambient-opacity);
|
$shadow-key-ambient-opacity-custom: var(--v-shadow-key-ambient-opacity);
|
||||||
$font-family-custom: inter, sans-serif, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
$font-family-custom: 'Inter', 'Noto Sans SC', sans-serif, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||||
|
|
||||||
// 👉 Card transition properties
|
// 👉 Card transition properties
|
||||||
$card-transition-property-custom: box-shadow, opacity;
|
$card-transition-property-custom: box-shadow, opacity;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.auth-wrapper {
|
.auth-wrapper {
|
||||||
min-block-size: calc(var(--vh, 1vh) * 100 + env(safe-area-inset-top));
|
min-block-size: calc(var(--vh, 1vh) * 100 + env(safe-area-inset-top) + env(safe-area-inset-bottom));
|
||||||
}
|
}
|
||||||
|
|
||||||
.auth-footer-mask {
|
.auth-footer-mask {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
@use "vuetify/lib/styles/tools/_elevation" as mixins_elevation;
|
@use "vuetify/lib/styles/tools/_elevation" as mixins_elevation;
|
||||||
@use "@configured-variables" as variables;
|
@use "@configured-variables" as variables;
|
||||||
@use "mixins";
|
@use "mixins";
|
||||||
@use "@core/scss/base/mixins" as mixins_base;
|
|
||||||
|
|
||||||
// 👉 Alert
|
// 👉 Alert
|
||||||
.v-alert {
|
.v-alert {
|
||||||
@@ -176,10 +175,6 @@
|
|||||||
th {
|
th {
|
||||||
background: rgb(var(--v-table-header-background)) !important;
|
background: rgb(var(--v-table-header-background)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-data-table-footer {
|
|
||||||
margin-block-start: 1rem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 👉 Pagination
|
// 👉 Pagination
|
||||||
@@ -194,5 +189,5 @@
|
|||||||
|
|
||||||
// 👉 SnackBar
|
// 👉 SnackBar
|
||||||
.v-snackbar--variant-elevated {
|
.v-snackbar--variant-elevated {
|
||||||
@include mixins_base.elevation(6);
|
@include mixins.elevation(6);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
@use "@configured-variables" as variables;
|
@use "@configured-variables" as variables;
|
||||||
@use "@core/scss/base/placeholders" as *;
|
@use "placeholders" as *;
|
||||||
@use "@core/scss/template/placeholders" as *;
|
|
||||||
@use "vuetify/lib/styles/tools/_elevation" as mixins_elevation;
|
@use "vuetify/lib/styles/tools/_elevation" as mixins_elevation;
|
||||||
@use "misc";
|
@use "../misc";
|
||||||
@use "@core/scss/base/mixins";
|
@use "mixins";
|
||||||
|
|
||||||
$header: ".layout-navbar";
|
$header: ".layout-navbar";
|
||||||
|
|
||||||
@@ -23,7 +22,7 @@ $header: ".layout-navbar";
|
|||||||
// If navbar is contained => Add border radius to header
|
// If navbar is contained => Add border radius to header
|
||||||
@if variables.$layout-vertical-nav-navbar-is-contained {
|
@if variables.$layout-vertical-nav-navbar-is-contained {
|
||||||
#{$header} {
|
#{$header} {
|
||||||
border-radius: 0 0 variables.$default-layout-with-vertical-nav-navbar-footer-roundness variables.$default-layout-with-vertical-nav-navbar-footer-roundness;
|
// border-radius: 0 0 variables.$default-layout-with-vertical-nav-navbar-footer-roundness variables.$default-layout-with-vertical-nav-navbar-footer-roundness;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +63,7 @@ $header: ".layout-navbar";
|
|||||||
|
|
||||||
#{$header} {
|
#{$header} {
|
||||||
@if variables.$layout-vertical-nav-navbar-is-contained {
|
@if variables.$layout-vertical-nav-navbar-is-contained {
|
||||||
border-radius: variables.$default-layout-with-vertical-nav-navbar-footer-roundness;
|
// border-radius: variables.$default-layout-with-vertical-nav-navbar-footer-roundness;
|
||||||
}
|
}
|
||||||
|
|
||||||
background-color: rgb(var(--v-theme-surface));
|
background-color: rgb(var(--v-theme-surface));
|
||||||
@@ -101,4 +100,4 @@ $header: ".layout-navbar";
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,101 @@
|
|||||||
|
@use "sass:map";
|
||||||
@use "vuetify/lib/styles/settings" as vuetify_settings;
|
@use "vuetify/lib/styles/settings" as vuetify_settings;
|
||||||
|
@use "@styles/variables/_vuetify.scss" as vuetify;
|
||||||
|
|
||||||
@mixin avatar-font-sizes($map: $avatar-sizes) {
|
@mixin avatar-font-sizes($map: $avatar-sizes) {
|
||||||
@each $sizeName, $multiplier in vuetify_settings.$size-scales {
|
@each $sizeName, $multiplier in vuetify_settings.$size-scales {
|
||||||
/* stylelint-disable-next-line scss/no-global-function-names */
|
/* stylelint-disable-next-line scss/no-global-function-names */
|
||||||
$size: map-get($map, $sizeName);
|
$size: map.get($map, $sizeName);
|
||||||
|
|
||||||
&.v-avatar--size-#{$sizeName} {
|
&.v-avatar--size-#{$sizeName} {
|
||||||
font-size: #{$size}px;
|
font-size: #{$size}px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@mixin elevation($z, $important: false) {
|
||||||
|
box-shadow: map.get(vuetify.$shadow-key-umbra, $z), map.get(vuetify.$shadow-key-penumbra, $z), map.get(vuetify.$shadow-key-ambient, $z) if($important, !important, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin before-pseudo() {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: inherit;
|
||||||
|
background: currentcolor;
|
||||||
|
block-size: 100%;
|
||||||
|
content: "";
|
||||||
|
inline-size: 100%;
|
||||||
|
inset: 0;
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin bordered-skin($component, $border-property: "border", $important: false) {
|
||||||
|
#{$component} {
|
||||||
|
box-shadow: none !important;
|
||||||
|
#{$border-property}: 1px solid rgba(var(--v-border-color), var(--v-border-opacity)) if($important, !important, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin selected-states($selector) {
|
||||||
|
#{$selector} {
|
||||||
|
opacity: calc(var(--v-selected-opacity) * var(--v-theme-overlay-multiplier));
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
#{$selector} {
|
||||||
|
opacity: calc(var(--v-selected-opacity) + var(--v-hover-opacity) * var(--v-theme-overlay-multiplier));
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus-visible
|
||||||
|
#{$selector} {
|
||||||
|
opacity: calc(var(--v-selected-opacity) + var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports not selector(:focus-visible) {
|
||||||
|
&:focus {
|
||||||
|
#{$selector} {
|
||||||
|
opacity: calc(var(--v-selected-opacity) + var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin push-anchors() {
|
||||||
|
:target {
|
||||||
|
scroll-margin-block-start: 90px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin xs {
|
||||||
|
@media (width >= 0) and (width <= 599.98px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin sm {
|
||||||
|
@media (width >= 600px) and (width <= 959.98px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin md {
|
||||||
|
@media (width >= 960px) and (width <= 1279.98px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin lg {
|
||||||
|
@media (width >= 1280px) and (width <= 1919.98px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin xl {
|
||||||
|
@media (width >= 1920px) {
|
||||||
|
@content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
@use "sass:map";
|
@use "sass:map";
|
||||||
@use "utils";
|
@use "utils";
|
||||||
|
@use "vuetify/lib/styles/tools/functions" as *;
|
||||||
|
|
||||||
$vertical-nav-horizontal-padding-custom: 1.375rem 1rem;
|
$vertical-nav-horizontal-padding-custom: 1.375rem 1rem;
|
||||||
|
|
||||||
@@ -13,15 +14,16 @@ $vertical-nav-horizontal-padding-custom: 1.375rem 1rem;
|
|||||||
$vertical-nav-horizontal-padding-start: utils.get-first-value($vertical-nav-horizontal-padding-custom) !default;
|
$vertical-nav-horizontal-padding-start: utils.get-first-value($vertical-nav-horizontal-padding-custom) !default;
|
||||||
$vertical-nav-items-icon-margin-inline-end: 0.625rem !default;
|
$vertical-nav-items-icon-margin-inline-end: 0.625rem !default;
|
||||||
|
|
||||||
@forward "@core/scss/base/variables" with (
|
// Vertical Nav Configuration
|
||||||
$layout-vertical-nav-collapsed-width: 68px !default,
|
$vertical-nav-collapsed-width: 68px !default;
|
||||||
// ℹ️ This is used to keep consistency between nav items and nav header left & right margin
|
|
||||||
// This is used by nav items & nav header
|
// ℹ️ This is used to keep consistency between nav items and nav header left & right margin
|
||||||
$vertical-nav-horizontal-spacing: 0 1.125rem !default,
|
// This is used by nav items & nav header
|
||||||
$vertical-nav-horizontal-padding: $vertical-nav-horizontal-padding-custom !default,
|
$vertical-nav-horizontal-spacing: 0 1.125rem !default;
|
||||||
// Vertical nav header padding
|
$vertical-nav-horizontal-padding: $vertical-nav-horizontal-padding-custom !default;
|
||||||
$vertical-nav-header-padding: 1rem 0.25rem 1rem $vertical-nav-horizontal-padding-start !default,
|
|
||||||
);
|
// Vertical nav header padding
|
||||||
|
$vertical-nav-header-padding: 1rem 0.25rem 1rem $vertical-nav-horizontal-padding-start !default;
|
||||||
|
|
||||||
// 👉 Custom Variables
|
// 👉 Custom Variables
|
||||||
$avatar-font-sizes: (
|
$avatar-font-sizes: (
|
||||||
@@ -31,3 +33,195 @@ $avatar-font-sizes: (
|
|||||||
"large":20,
|
"large":20,
|
||||||
"x-large":24
|
"x-large":24
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
|
// 合并两个文件中的@forward配置
|
||||||
|
@forward "@layouts/styles/variables" with (
|
||||||
|
// 来自_variables.scss的配置
|
||||||
|
$layout-vertical-nav-collapsed-width: 68px !default,
|
||||||
|
|
||||||
|
// 来自template/_variables.scss的配置
|
||||||
|
$layout-vertical-nav-z-index: 1004,
|
||||||
|
$layout-overlay-z-index: 1003
|
||||||
|
);
|
||||||
|
|
||||||
|
// 使用命名空间来避免变量冲突
|
||||||
|
@use "@layouts/styles/variables" as layouts-vars;
|
||||||
|
|
||||||
|
$theme-colors-name: (
|
||||||
|
"primary",
|
||||||
|
"secondary",
|
||||||
|
"error",
|
||||||
|
"info",
|
||||||
|
"success",
|
||||||
|
"warning"
|
||||||
|
) !default;
|
||||||
|
|
||||||
|
// 👉 Default layout with vertical nav
|
||||||
|
|
||||||
|
$default-layout-with-vertical-nav-navbar-footer-roundness: 10px !default;
|
||||||
|
|
||||||
|
// 👉 Vertical nav
|
||||||
|
$vertical-nav-background-color-rgb: var(--v-theme-background) !default;
|
||||||
|
$vertical-nav-background-color: rgb(#{$vertical-nav-background-color-rgb}) !default;
|
||||||
|
|
||||||
|
// ℹ️ This is used to keep consistency between nav items and nav header left & right margin
|
||||||
|
// This is used by nav items & nav header
|
||||||
|
$vertical-nav-horizontal-spacing: 1rem !default;
|
||||||
|
$vertical-nav-horizontal-padding: 0.75rem !default;
|
||||||
|
|
||||||
|
// Vertical nav header height. Mostly we will align it with navbar height;
|
||||||
|
$vertical-nav-header-height: layouts-vars.$layout-vertical-nav-navbar-height !default;
|
||||||
|
$vertical-nav-navbar-elevation: 3 !default;
|
||||||
|
$vertical-nav-navbar-style: "elevated" !default; // options: elevated, floating
|
||||||
|
$vertical-nav-floating-navbar-top: 1rem !default;
|
||||||
|
|
||||||
|
// Vertical nav header padding
|
||||||
|
$vertical-nav-header-padding: 1rem $vertical-nav-horizontal-padding !default;
|
||||||
|
$vertical-nav-header-inline-spacing: $vertical-nav-horizontal-spacing !default;
|
||||||
|
|
||||||
|
// Move logo when vertical nav is mini (collapsed but not hovered)
|
||||||
|
$vertical-nav-header-logo-translate-x-when-vertical-nav-mini: -4px !default;
|
||||||
|
|
||||||
|
// Space between logo and title
|
||||||
|
$vertical-nav-header-logo-title-spacing: 0.9rem !default;
|
||||||
|
|
||||||
|
// Section title margin top (when its not first child)
|
||||||
|
$vertical-nav-section-title-mt: 1.5rem !default;
|
||||||
|
|
||||||
|
// Section title margin bottom
|
||||||
|
$vertical-nav-section-title-mb: 0.5rem !default;
|
||||||
|
|
||||||
|
// Vertical nav icons
|
||||||
|
$vertical-nav-items-icon-size: 1.5rem !default;
|
||||||
|
$vertical-nav-items-nested-icon-size: 0.9rem !default;
|
||||||
|
$vertical-nav-items-icon-margin-inline-end: 0.5rem !default;
|
||||||
|
|
||||||
|
// Transition duration for nav group arrow
|
||||||
|
$vertical-nav-nav-group-arrow-transition-duration: 0.15s !default;
|
||||||
|
|
||||||
|
// Timing function for nav group arrow
|
||||||
|
$vertical-nav-nav-group-arrow-transition-timing-function: ease-in-out !default;
|
||||||
|
|
||||||
|
// 👉 Horizontal nav
|
||||||
|
|
||||||
|
/*
|
||||||
|
❗ Heads up
|
||||||
|
==================
|
||||||
|
Here we assume we will always use shorthand property which will apply same padding on four side
|
||||||
|
This is because this have been used as value of top property by `.popper-content`
|
||||||
|
*/
|
||||||
|
$horizontal-nav-padding: 0.6875rem !default;
|
||||||
|
|
||||||
|
// Gap between top level horizontal nav items
|
||||||
|
$horizontal-nav-top-level-items-gap: 4px !default;
|
||||||
|
|
||||||
|
// Horizontal nav icons
|
||||||
|
$horizontal-nav-items-icon-size: 1.5rem !default;
|
||||||
|
$horizontal-nav-third-level-icon-size: 0.9rem !default;
|
||||||
|
$horizontal-nav-items-icon-margin-inline-end: 0.625rem !default;
|
||||||
|
|
||||||
|
// ℹ️ We used SCSS variable because we want to allow users to update max height of popper content
|
||||||
|
// 120px is combined height of navbar & horizontal nav
|
||||||
|
$horizontal-nav-popper-content-max-height: calc((var(--vh, 1vh) * 100) - 120px - 4rem) !default;
|
||||||
|
|
||||||
|
// ℹ️ This variable is used for horizontal nav popper content's `margin-top` and "The bridge"'s height. We need to sync both values.
|
||||||
|
$horizontal-nav-popper-content-top: calc($horizontal-nav-padding + 0.375rem) !default;
|
||||||
|
|
||||||
|
// 👉 Plugins
|
||||||
|
|
||||||
|
$plugin-ps-thumb-y-dark: rgba(var(--v-theme-surface-variant), 0.35) !default;
|
||||||
|
|
||||||
|
// 👉 Vuetify
|
||||||
|
|
||||||
|
// Used in src/@core/scss/base/libs/vuetify/_overrides.scss
|
||||||
|
$vuetify-reduce-default-compact-button-icon-size: true !default;
|
||||||
|
|
||||||
|
// 👉 Custom variables
|
||||||
|
// for utility classes
|
||||||
|
$font-sizes: () !default;
|
||||||
|
$font-sizes: map-deep-merge(
|
||||||
|
(
|
||||||
|
"xs": 0.75rem,
|
||||||
|
"sm": 0.875rem,
|
||||||
|
"base": 1rem,
|
||||||
|
"lg": 1.125rem,
|
||||||
|
"xl": 1.25rem,
|
||||||
|
"2xl": 1.5rem,
|
||||||
|
"3xl": 1.875rem,
|
||||||
|
"4xl": 2.25rem,
|
||||||
|
"5xl": 3rem,
|
||||||
|
"6xl": 3.75rem,
|
||||||
|
"7xl": 4.5rem,
|
||||||
|
"8xl": 6rem,
|
||||||
|
"9xl": 8rem
|
||||||
|
),
|
||||||
|
$font-sizes
|
||||||
|
);
|
||||||
|
|
||||||
|
// line height
|
||||||
|
$font-line-height: () !default;
|
||||||
|
$font-line-height: map-deep-merge(
|
||||||
|
(
|
||||||
|
"xs": 1rem,
|
||||||
|
"sm": 1.25rem,
|
||||||
|
"base": 1.5rem,
|
||||||
|
"lg": 1.75rem,
|
||||||
|
"xl": 1.75rem,
|
||||||
|
"2xl": 2rem,
|
||||||
|
"3xl": 2.25rem,
|
||||||
|
"4xl": 2.5rem,
|
||||||
|
"5xl": 1,
|
||||||
|
"6xl": 1,
|
||||||
|
"7xl": 1,
|
||||||
|
"8xl": 1,
|
||||||
|
"9xl": 1
|
||||||
|
),
|
||||||
|
$font-line-height
|
||||||
|
);
|
||||||
|
|
||||||
|
// gap utility class
|
||||||
|
$gap: () !default;
|
||||||
|
$gap: map-deep-merge(
|
||||||
|
(
|
||||||
|
"0": 0,
|
||||||
|
"1": 0.25rem,
|
||||||
|
"2": 0.5rem,
|
||||||
|
"3": 0.75rem,
|
||||||
|
"4": 1rem,
|
||||||
|
"5": 1.25rem,
|
||||||
|
"6":1.5rem,
|
||||||
|
"7": 1.75rem,
|
||||||
|
"8": 2rem,
|
||||||
|
"9": 2.25rem,
|
||||||
|
"10": 2.5rem,
|
||||||
|
"11": 2.75rem,
|
||||||
|
"12": 3rem,
|
||||||
|
"14": 3.5rem,
|
||||||
|
"16": 4rem,
|
||||||
|
"20": 5rem,
|
||||||
|
"24": 6rem,
|
||||||
|
"28": 7rem,
|
||||||
|
"32": 8rem,
|
||||||
|
"36": 9rem,
|
||||||
|
"40": 10rem,
|
||||||
|
"44": 11rem,
|
||||||
|
"48": 12rem,
|
||||||
|
"52": 13rem,
|
||||||
|
"56": 14rem,
|
||||||
|
"60": 15rem,
|
||||||
|
"64": 16rem,
|
||||||
|
"72": 18rem,
|
||||||
|
"80": 20rem,
|
||||||
|
"96": 24rem
|
||||||
|
),
|
||||||
|
$gap
|
||||||
|
);
|
||||||
|
|
||||||
|
// Avatar sizes map
|
||||||
|
$avatar-font-sizes: (
|
||||||
|
"x-small": 0.625rem,
|
||||||
|
"small": 0.75rem,
|
||||||
|
"default": 0.875rem,
|
||||||
|
"large": 1rem,
|
||||||
|
"x-large": 1.125rem,
|
||||||
|
) !default;
|
||||||
|
|||||||
@@ -1,8 +1,42 @@
|
|||||||
@use "sass:map";
|
@use "sass:map";
|
||||||
@use "@core/scss/base";
|
|
||||||
|
// Layout
|
||||||
|
@use "../vertical-nav";
|
||||||
|
@use "../default-layout";
|
||||||
|
@use "default-layout-w-vertical-nav";
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
@use "components";
|
@use "components";
|
||||||
|
|
||||||
// Utilities
|
// Utilities
|
||||||
@use "utilities";
|
@use "utilities";
|
||||||
|
@use "../utils";
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
@use "../misc";
|
||||||
|
|
||||||
|
// Dark
|
||||||
|
@use "../dark";
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
@use "variables";
|
||||||
|
|
||||||
|
// libs
|
||||||
|
@use "libs/perfect-scrollbar";
|
||||||
|
@use "libs/vuetify";
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: rgb(var(--v-theme-primary));
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vuetify 3 don't provide margin bottom style like vuetify 2
|
||||||
|
p {
|
||||||
|
margin-block-end: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iconify icon size
|
||||||
|
svg.iconify {
|
||||||
|
block-size: 1em;
|
||||||
|
inline-size: 1em;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,76 +1,89 @@
|
|||||||
@use "@styles/variables/_vuetify.scss" as vuetify;
|
@use "@configureTheme" as theme;
|
||||||
@use "vuetify/lib/styles/tools/_elevation" as mixins_elevation;
|
@use "@configured-variables" as variables;
|
||||||
@use "@layouts/styles/mixins" as layoutsMixins;
|
@use "../mixins";
|
||||||
@use "@core/scss/base/mixins";
|
|
||||||
|
|
||||||
.v-application .apexcharts-canvas {
|
// 👉 Apex chart
|
||||||
&line[stroke="transparent"] {
|
.apexcharts-canvas {
|
||||||
display: "none";
|
// For RTL alignment
|
||||||
|
.apexcharts-yaxis-texts-g {
|
||||||
|
text-align: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tooltip
|
||||||
.apexcharts-tooltip {
|
.apexcharts-tooltip {
|
||||||
@include mixins.elevation(3);
|
line-height: 1.5;
|
||||||
|
|
||||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
||||||
background: rgb(var(--v-theme-surface));
|
|
||||||
|
|
||||||
.apexcharts-tooltip-title {
|
.apexcharts-tooltip-title {
|
||||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
||||||
background: rgb(var(--v-theme-surface));
|
background: rgb(var(--v-theme-surface));
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
margin-block-end: 0.25rem;
|
||||||
|
padding-inline: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.apexcharts-tooltip-text {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
||||||
|
font-size: inherit;
|
||||||
|
gap: 0.5rem;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.apexcharts-tooltip-text-label,
|
||||||
|
.apexcharts-tooltip-text-value {
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.apexcharts-tooltip-series-group {
|
||||||
|
padding-block: 0 0.5rem;
|
||||||
|
padding-inline: 1rem;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
padding-block-end: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
padding-block-start: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.apexcharts-theme-light {
|
&.apexcharts-theme-light {
|
||||||
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
border-color: rgb(var(--v-border-color));
|
||||||
}
|
background: rgb(var(--v-theme-surface));
|
||||||
|
box-shadow: none;
|
||||||
&.apexcharts-theme-dark {
|
|
||||||
color: white;
|
.apexcharts-tooltip-text-label,
|
||||||
}
|
.apexcharts-tooltip-text-value {
|
||||||
|
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
||||||
.apexcharts-tooltip-series-group:first-of-type {
|
}
|
||||||
padding-block-end: 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.apexcharts-xaxistooltip {
|
.apexcharts-marker {
|
||||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
transition: none;
|
||||||
background: rgb(var(--v-theme-grey-50));
|
|
||||||
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
border-block-end-color: rgb(var(--v-theme-grey-50));
|
|
||||||
}
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
border-block-end-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 👉 stroke-dasharray
|
||||||
|
.apexcharts-radialbar,
|
||||||
|
.apexcharts-radialbar-slice-current {
|
||||||
|
stroke-linecap: round;
|
||||||
|
}
|
||||||
|
|
||||||
|
.apexcharts-xaxistooltip,
|
||||||
.apexcharts-yaxistooltip {
|
.apexcharts-yaxistooltip {
|
||||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
border-color: rgb(var(--v-border-color));
|
||||||
background: rgb(var(--v-theme-grey-50));
|
background: rgb(var(--v-theme-surface));
|
||||||
|
color: rgba(var(--v-theme-on-background), var(--v-medium-emphasis-opacity));
|
||||||
&::after {
|
|
||||||
border-inline-start-color: rgb(var(--v-theme-grey-50));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
&::after,
|
||||||
&::before {
|
&::before {
|
||||||
border-inline-start-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
border-block-end-color: rgb(var(--v-border-color));
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.apexcharts-xaxistooltip-text,
|
|
||||||
.apexcharts-yaxistooltip-text {
|
|
||||||
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
||||||
}
|
|
||||||
|
|
||||||
.apexcharts-yaxis .apexcharts-yaxis-texts-g .apexcharts-yaxis-label {
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
text-anchor: start;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 👉 Text color
|
||||||
.apexcharts-text,
|
.apexcharts-text,
|
||||||
.apexcharts-tooltip-text,
|
.apexcharts-tooltip-text,
|
||||||
.apexcharts-datalabel-label,
|
.apexcharts-datalabel-label,
|
||||||
@@ -78,23 +91,16 @@
|
|||||||
.apexcharts-xaxistooltip-text,
|
.apexcharts-xaxistooltip-text,
|
||||||
.apexcharts-yaxistooltip-text,
|
.apexcharts-yaxistooltip-text,
|
||||||
.apexcharts-legend-text {
|
.apexcharts-legend-text {
|
||||||
font-family: vuetify.$body-font-family !important;
|
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity)) !important;
|
||||||
|
font-family: inherit !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.apexcharts-pie-label {
|
// 👉 Annotation Label
|
||||||
fill: white;
|
.apexcharts-annotation-rect {
|
||||||
filter: none;
|
&.apexcharts-xaxis-annotation-rect,
|
||||||
}
|
&.apexcharts-yaxis-annotation-rect {
|
||||||
|
fill-opacity: 0.05;
|
||||||
.apexcharts-marker {
|
stroke-opacity: 0;
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.apexcharts-legend-marker {
|
|
||||||
margin-inline-end: 0.3875rem !important;
|
|
||||||
|
|
||||||
@include layoutsMixins.rtl {
|
|
||||||
margin-inline-end: 0.75rem !important;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@use "@core/scss/base/mixins";
|
@use "../mixins";
|
||||||
|
@use "@configured-variables" as variables;
|
||||||
|
|
||||||
.v-application .fc {
|
.v-application .fc {
|
||||||
--fc-today-bg-color: rgba(var(--v-theme-on-surface), 0.04);
|
--fc-today-bg-color: rgba(var(--v-theme-on-surface), 0.04);
|
||||||
@@ -16,16 +17,20 @@
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fc-toolbar-title {
|
||||||
|
display: inline-block;
|
||||||
|
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-inline-start: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
.fc-col-header-cell-cushion {
|
.fc-col-header-cell-cushion {
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fc-toolbar .fc-toolbar-title {
|
|
||||||
margin-inline-start: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-time {
|
.fc-event-time {
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
}
|
}
|
||||||
@@ -92,10 +97,10 @@
|
|||||||
.fc-header-toolbar {
|
.fc-header-toolbar {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin: 1.25rem;
|
margin: 1.25rem;
|
||||||
column-gap: 0.5rem;
|
gap: 1rem 0.5rem;
|
||||||
row-gap: 1rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 👉 Toolbar Chunk and Button Group
|
||||||
.fc-toolbar-chunk {
|
.fc-toolbar-chunk {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -103,19 +108,38 @@
|
|||||||
.fc-button-group {
|
.fc-button-group {
|
||||||
.fc-button-primary {
|
.fc-button-primary {
|
||||||
&,
|
&,
|
||||||
|
&:focus,
|
||||||
&:hover,
|
&:hover,
|
||||||
&:not(.disabled):active {
|
&:not(.disabled):active {
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
|
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 👉 sidebar toggler
|
||||||
|
.fc-drawerToggler-button {
|
||||||
|
display: none;
|
||||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke='rgba(94,86,105,0.68)' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpath d='M3 12h18M3 6h18M3 18h18'/%3E%3C/svg%3E");
|
||||||
|
background-position: 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
block-size: 1.5625rem;
|
||||||
|
font-size: 0;
|
||||||
|
inline-size: 1.5625rem;
|
||||||
|
margin-inline-end: 0.25rem;
|
||||||
|
|
||||||
|
@media (width <= 1264px) {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-theme--dark & {
|
||||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke='rgba(232,232,241,0.68)' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpath d='M3 12h18M3 6h18M3 18h18'/%3E%3C/svg%3E");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special styling for the last toolbar chunk
|
||||||
&:last-child {
|
&:last-child {
|
||||||
.fc-button-group {
|
.fc-button-group {
|
||||||
border: 0.0625rem solid rgba(var(--v-border-color), var(--v-border-opacity));
|
border: 0.0625rem solid rgba(var(--v-border-color), var(--v-border-opacity));
|
||||||
@@ -140,13 +164,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.fc-toolbar-title {
|
|
||||||
display: inline-block;
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
|
||||||
font-size: 1.25rem;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-scrollgrid-section {
|
.fc-scrollgrid-section {
|
||||||
th {
|
th {
|
||||||
border-inline: 0;
|
border-inline: 0;
|
||||||
@@ -218,37 +235,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 👉 sidebar toggler
|
|
||||||
.fc-toolbar-chunk {
|
|
||||||
.fc-button-group {
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.fc-button .fc-icon {
|
|
||||||
vertical-align: bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ Below two `background-image` styles contains static color due to browser limitation of not parsing the css var inside CSS url()
|
|
||||||
.fc-drawerToggler-button {
|
|
||||||
display: none;
|
|
||||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke='rgba(94,86,105,0.68)' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpath d='M3 12h18M3 6h18M3 18h18'/%3E%3C/svg%3E");
|
|
||||||
background-position: 50%;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
block-size: 1.5625rem;
|
|
||||||
font-size: 0;
|
|
||||||
inline-size: 1.5625rem;
|
|
||||||
margin-inline-end: 0.25rem;
|
|
||||||
|
|
||||||
@media (max-width: 1264px) {
|
|
||||||
display: block !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-theme--dark & {
|
|
||||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke='rgba(232,232,241,0.68)' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpath d='M3 12h18M3 6h18M3 18h18'/%3E%3C/svg%3E");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ℹ️ Workaround of https://github.com/fullcalendar/fullcalendar/issues/6407
|
// ℹ️ Workaround of https://github.com/fullcalendar/fullcalendar/issues/6407
|
||||||
.fc-col-header,
|
.fc-col-header,
|
||||||
.fc-daygrid-body,
|
.fc-daygrid-body,
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ $ps-size: 0.25rem;
|
|||||||
$ps-hover-size: 0.375rem;
|
$ps-hover-size: 0.375rem;
|
||||||
$ps-track-size: 0.5rem;
|
$ps-track-size: 0.5rem;
|
||||||
|
|
||||||
|
.ps__thumb-x,
|
||||||
|
.ps__thumb-y {
|
||||||
|
background-color: rgb(var(--v-theme-perfect-scrollbar-thumb)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
.ps__thumb-y {
|
.ps__thumb-y {
|
||||||
inline-size: $ps-size;
|
inline-size: $ps-size;
|
||||||
inset-inline-end: 0.0625rem;
|
inset-inline-end: 0.0625rem;
|
||||||
@@ -29,7 +34,10 @@ $ps-track-size: 0.5rem;
|
|||||||
inline-size: $ps-hover-size;
|
inline-size: $ps-hover-size;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ps__thumb-x,
|
// fix bug
|
||||||
.ps__thumb-y {
|
@media(hover: none) {
|
||||||
background-color: rgb(var(--v-theme-perfect-scrollbar-thumb)) !important;
|
.ps > .ps__rail-x,
|
||||||
}
|
.ps > .ps__rail-y {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
@use "@core/scss/base/utils";
|
|
||||||
@use "@configured-variables" as variables;
|
@use "@configured-variables" as variables;
|
||||||
|
@use "../../../utils";
|
||||||
|
|
||||||
// 👉 Application
|
// 👉 Application
|
||||||
// ℹ️ We need accurate vh in mobile devices as well
|
// ℹ️ We need accurate vh in mobile devices as well
|
||||||
@@ -195,7 +195,6 @@ h6,
|
|||||||
color: rgb(var(--v-border-color));
|
color: rgb(var(--v-border-color));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 👉 DataTable
|
|
||||||
// 👉 DataTable
|
// 👉 DataTable
|
||||||
.v-data-table {
|
.v-data-table {
|
||||||
/* stylelint-disable-next-line no-descending-specificity */
|
/* stylelint-disable-next-line no-descending-specificity */
|
||||||
@@ -212,10 +211,6 @@ h6,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-data-table-footer {
|
|
||||||
margin-block-start: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 👉 v-field
|
// 👉 v-field
|
||||||
.v-field:hover .v-field__outline {
|
.v-field:hover .v-field__outline {
|
||||||
--v-field-border-opacity: var(--v-medium-emphasis-opacity);
|
--v-field-border-opacity: var(--v-medium-emphasis-opacity);
|
||||||
@@ -254,34 +249,53 @@ h6,
|
|||||||
.v-badge__badge {
|
.v-badge__badge {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 👉 Btn focus outline style removed
|
// 👉 Dialog
|
||||||
.v-btn:focus-visible::after {
|
.v-dialog--fullscreen {
|
||||||
opacity: 0 !important;
|
background-color: rgb(var(--v-theme-surface));
|
||||||
}
|
}
|
||||||
|
|
||||||
// .v-select chip spacing for slot
|
// For dialog card title
|
||||||
.v-input:not(.v-select--chips) .v-select__selection {
|
.v-card-item + .v-card-text {
|
||||||
.v-chip {
|
padding-block-start: 0 !important;
|
||||||
margin-block: 2px var(--select-chips-margin-bottom);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 👉 VCard and VList subtitle color
|
// 👉 v-slide-group (List of chips)
|
||||||
.v-card-subtitle,
|
.v-slide-group {
|
||||||
.v-list-item-subtitle {
|
.v-slide-group__container {
|
||||||
color: rgba(var(--v-theme-on-background), var(--v-medium-emphasis-opacity));
|
display: flex;
|
||||||
}
|
flex-wrap: wrap;
|
||||||
|
|
||||||
// 👉 placeholders
|
// Spacing between buttons in v-slide-group
|
||||||
.v-field__input {
|
.v-slide-group-item:not(:last-child) {
|
||||||
@at-root {
|
margin-inline-end: 0.5rem;
|
||||||
& input::placeholder,
|
|
||||||
input#{&}::placeholder,
|
|
||||||
textarea#{&}::placeholder {
|
|
||||||
color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity)) !important;
|
|
||||||
opacity: 1 !important;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 👉 Expansion Panel
|
||||||
|
.v-expansion-panels {
|
||||||
|
.v-expansion-panel-title {
|
||||||
|
min-block-size: unset !important;
|
||||||
|
padding-block: 1rem !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 👉 v-textarea
|
||||||
|
.v-textarea {
|
||||||
|
textarea {
|
||||||
|
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 👉 Cursor
|
||||||
|
.cursor-pointer {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
@@ -2,9 +2,20 @@ $shadow-key-umbra-opacity-custom: var(--v-shadow-key-umbra-opacity);
|
|||||||
$shadow-key-penumbra-opacity-custom: var(--v-shadow-key-penumbra-opacity);
|
$shadow-key-penumbra-opacity-custom: var(--v-shadow-key-penumbra-opacity);
|
||||||
$shadow-key-ambient-opacity-custom: var(--v-shadow-key-ambient-opacity);
|
$shadow-key-ambient-opacity-custom: var(--v-shadow-key-ambient-opacity);
|
||||||
/* stylelint-disable-next-line max-line-length */
|
/* stylelint-disable-next-line max-line-length */
|
||||||
$font-family-custom: inter, sans-serif, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
$font-family-custom: 'Inter', 'Noto Sans SC', sans-serif, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||||
|
|
||||||
|
// 👉 Card transition properties
|
||||||
|
$card-transition-property-custom: box-shadow, opacity;
|
||||||
|
|
||||||
|
@forward "vuetify/settings" with (
|
||||||
|
// 👉 General settings
|
||||||
|
$color-pack: false !default,
|
||||||
|
|
||||||
|
// 👉 Shadow opacity
|
||||||
|
$shadow-key-umbra-opacity: $shadow-key-umbra-opacity-custom !default,
|
||||||
|
$shadow-key-penumbra-opacity: $shadow-key-penumbra-opacity-custom !default,
|
||||||
|
$shadow-key-ambient-opacity: $shadow-key-ambient-opacity-custom !default,
|
||||||
|
|
||||||
@forward "../../../base/libs/vuetify/variables" with (
|
|
||||||
$body-font-family: $font-family-custom !default,
|
$body-font-family: $font-family-custom !default,
|
||||||
$border-radius-root: 6px !default,
|
$border-radius-root: 6px !default,
|
||||||
|
|
||||||
@@ -110,6 +121,18 @@ $font-family-custom: inter, sans-serif, -apple-system, blinkmacsystemfont, "Sego
|
|||||||
24: (0 9px 46px 8px $shadow-key-ambient-opacity-custom)
|
24: (0 9px 46px 8px $shadow-key-ambient-opacity-custom)
|
||||||
) !default,
|
) !default,
|
||||||
|
|
||||||
|
// 👉 Card
|
||||||
|
$card-color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)) !default,
|
||||||
|
$card-elevation: 6 !default,
|
||||||
|
$card-title-line-height: 2rem !default,
|
||||||
|
$card-actions-min-height: unset !default,
|
||||||
|
$card-text-padding: 1.25rem !default,
|
||||||
|
$card-item-padding: 1.25rem !default,
|
||||||
|
$card-actions-padding: 0 12px 12px !default,
|
||||||
|
$card-transition-property: $card-transition-property-custom !default,
|
||||||
|
$card-subtitle-opacity: 1 !default,
|
||||||
|
$card-title-letter-spacing: 0.0094rem !default,
|
||||||
|
|
||||||
// 👉 Typography
|
// 👉 Typography
|
||||||
$typography: (
|
$typography: (
|
||||||
"h1": (
|
"h1": (
|
||||||
@@ -161,13 +184,16 @@ $font-family-custom: inter, sans-serif, -apple-system, blinkmacsystemfont, "Sego
|
|||||||
)
|
)
|
||||||
) !default,
|
) !default,
|
||||||
|
|
||||||
// 👉 Card
|
// 👉 List
|
||||||
$card-title-letter-spacing: 0.0094rem !default,
|
$list-item-icon-margin-end: 16px !default,
|
||||||
$card-title-line-height: 2rem !default,
|
$list-item-icon-margin-start: 16px !default,
|
||||||
$card-subtitle-opacity: 1 !default,
|
$list-item-subtitle-opacity: 1 !default,
|
||||||
|
$list-subheader-text-opacity: 1 !default,
|
||||||
|
|
||||||
// 👉 Tooltip
|
// 👉 Tooltip
|
||||||
$tooltip-background-color:#212121 !default,
|
$tooltip-background-color: #212121 !default,
|
||||||
|
$tooltip-text-color: rgb(var(--v-theme-on-primary)) !default,
|
||||||
|
$tooltip-font-size: 0.75rem !default,
|
||||||
$tooltip-border-radius: 4px !default,
|
$tooltip-border-radius: 4px !default,
|
||||||
$tooltip-padding: 4px 8px !default,
|
$tooltip-padding: 4px 8px !default,
|
||||||
|
|
||||||
@@ -209,9 +235,6 @@ $font-family-custom: inter, sans-serif, -apple-system, blinkmacsystemfont, "Sego
|
|||||||
// 👉 Menu
|
// 👉 Menu
|
||||||
$menu-content-border-radius: 5px !default,
|
$menu-content-border-radius: 5px !default,
|
||||||
|
|
||||||
// 👉 List
|
|
||||||
$list-subheader-text-opacity: 1 !default,
|
|
||||||
|
|
||||||
// 👉 Snackbar
|
// 👉 Snackbar
|
||||||
$snackbar-background:#212121 !default,
|
$snackbar-background:#212121 !default,
|
||||||
$snackbar-border-radius: 4px !default,
|
$snackbar-border-radius: 4px !default,
|
||||||
|
|||||||