mirror of
https://github.com/tabler/tabler.git
synced 2025-12-22 18:04:26 +04:00
Compare commits
508 Commits
dev-change
...
changeset-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3532976b5e | ||
|
|
63a35a849c | ||
|
|
94e1a95ffb | ||
|
|
83ec6f8bcc | ||
|
|
e3d86c519b | ||
|
|
f9d6076014 | ||
|
|
f264470d8f | ||
|
|
ec9469332e | ||
|
|
deb887b4aa | ||
|
|
f9551c3b8e | ||
|
|
3aba62e652 | ||
|
|
059bae1cf6 | ||
|
|
41ed22a128 | ||
|
|
e206d7a908 | ||
|
|
2dc7edae36 | ||
|
|
8bc6fa7fd1 | ||
|
|
a198b0c7c5 | ||
|
|
b1f711635b | ||
|
|
d0fe913453 | ||
|
|
0106d6b7d2 | ||
|
|
14ed4693a5 | ||
|
|
3bcd82ae9f | ||
|
|
40a9b5ac27 | ||
|
|
99b9ea45f6 | ||
|
|
4ce08cad53 | ||
|
|
b0fa6559da | ||
|
|
c7070180dc | ||
|
|
9a17b72a60 | ||
|
|
0c7996321b | ||
|
|
ba7bb880c4 | ||
|
|
5018aa9113 | ||
|
|
8d8727f587 | ||
|
|
6e656ad1de | ||
|
|
0042472f9a | ||
|
|
21eb18f918 | ||
|
|
cf04a00f8e | ||
|
|
41bcebc0a7 | ||
|
|
7475114ef1 | ||
|
|
8ce84e0f2f | ||
|
|
496704b163 | ||
|
|
e098fdfaa6 | ||
|
|
58417be796 | ||
|
|
a7fccda74c | ||
|
|
dbb5e7d2ed | ||
|
|
5da9078f55 | ||
|
|
1cd1fcaf28 | ||
|
|
b4ab1100ef | ||
|
|
af41699e84 | ||
|
|
6e2e4e3317 | ||
|
|
d8077f438c | ||
|
|
0c07677606 | ||
|
|
14418a1c08 | ||
|
|
7b74fee012 | ||
|
|
9893b11ed2 | ||
|
|
fcb38a4059 | ||
|
|
9c5d729e6d | ||
|
|
f8dee0a4bb | ||
|
|
9a3361f8ba | ||
|
|
f763e3b1dd | ||
|
|
9997893b40 | ||
|
|
58ad1008c9 | ||
|
|
c0e757e252 | ||
|
|
5e119d4c06 | ||
|
|
c860288558 | ||
|
|
596237e8cc | ||
|
|
736e60408b | ||
|
|
212d560a87 | ||
|
|
0ee3c0a3b4 | ||
|
|
bddacee9ad | ||
|
|
2c3efda2bd | ||
|
|
4834022361 | ||
|
|
e16457fd2e | ||
|
|
8b12ba0b01 | ||
|
|
d2c812e023 | ||
|
|
8947d7c7b7 | ||
|
|
399a5c59f9 | ||
|
|
ad22d046c3 | ||
|
|
b8b63d7e94 | ||
|
|
ab8009b771 | ||
|
|
bd35fd39cf | ||
|
|
4b65380293 | ||
|
|
2c73788cd1 | ||
|
|
a967970419 | ||
|
|
64baa141e7 | ||
|
|
49ab9ea931 | ||
|
|
a8c41914c4 | ||
|
|
9951fe9b1d | ||
|
|
cfd4cb6624 | ||
|
|
6fec73a3c4 | ||
|
|
29cc0cd378 | ||
|
|
6c47b5f868 | ||
|
|
6c38a48af1 | ||
|
|
6c4dd3670d | ||
|
|
2a12f72b28 | ||
|
|
f91b0f7cfa | ||
|
|
af816227bc | ||
|
|
59b6f73a06 | ||
|
|
266d5ad773 | ||
|
|
db6200a998 | ||
|
|
70a41e4fc2 | ||
|
|
e96f055238 | ||
|
|
a200d30f04 | ||
|
|
666a296a62 | ||
|
|
545defc852 | ||
|
|
1b0f8206ee | ||
|
|
c2cb3d3255 | ||
|
|
a0377f9752 | ||
|
|
c914ecfb05 | ||
|
|
57afd0bb11 | ||
|
|
8db1c08744 | ||
|
|
08e4919ae1 | ||
|
|
ef9d75f32f | ||
|
|
3e35545edc | ||
|
|
446c34eceb | ||
|
|
90285704e4 | ||
|
|
a7f73d7f7e | ||
|
|
d66c6a70eb | ||
|
|
ad54f61429 | ||
|
|
9007e73cb6 | ||
|
|
0d106a89b7 | ||
|
|
0d59e2f13a | ||
|
|
8850f6128f | ||
|
|
a1af8014e8 | ||
|
|
c8fee60023 | ||
|
|
d8c70a8b94 | ||
|
|
b70cb48e0b | ||
|
|
5b8746c702 | ||
|
|
f2c0c65f98 | ||
|
|
06021fad99 | ||
|
|
bd67b3f82e | ||
|
|
8e2acc82e0 | ||
|
|
85f212293d | ||
|
|
72a1d67709 | ||
|
|
638f36c0c5 | ||
|
|
f769abd70b | ||
|
|
3a02ef9c55 | ||
|
|
38ea9aa4e7 | ||
|
|
acbe4ff35f | ||
|
|
b5e2f54bf8 | ||
|
|
e2411b3518 | ||
|
|
44a1979b78 | ||
|
|
bccdeee779 | ||
|
|
5cb041275d | ||
|
|
27c866b3c3 | ||
|
|
c127d65605 | ||
|
|
f15d2b97f8 | ||
|
|
1f4906cc40 | ||
|
|
f8075f69c0 | ||
|
|
fd0fd47bb2 | ||
|
|
a41c9565f1 | ||
|
|
7fc1d5c11c | ||
|
|
222ddd4b2f | ||
|
|
ddd3753cde | ||
|
|
b9d434dcd4 | ||
|
|
6a3513f8e9 | ||
|
|
21bf92608d | ||
|
|
bb617b8dd2 | ||
|
|
5fa662bfae | ||
|
|
467c529fdc | ||
|
|
7773ff22b9 | ||
|
|
1867e0e482 | ||
|
|
67c9400918 | ||
|
|
7917f868e9 | ||
|
|
5619b2d8be | ||
|
|
9b15b942cb | ||
|
|
5b3e201d06 | ||
|
|
8470c9b315 | ||
|
|
dce63db1e6 | ||
|
|
278967b028 | ||
|
|
7082ea1c56 | ||
|
|
c42b104fe5 | ||
|
|
e546706f4c | ||
|
|
6d5e950235 | ||
|
|
665472cf69 | ||
|
|
468b055005 | ||
|
|
895f943270 | ||
|
|
3eaa90203b | ||
|
|
79bd867db5 | ||
|
|
e265681a48 | ||
|
|
cac5d92c7d | ||
|
|
b6e9b18ce9 | ||
|
|
849e286df0 | ||
|
|
b6ce7b8feb | ||
|
|
7b7265347c | ||
|
|
e675389871 | ||
|
|
b548430688 | ||
|
|
b45d85089e | ||
|
|
8f701859ad | ||
|
|
78c9c71365 | ||
|
|
5d8752eea0 | ||
|
|
6452669803 | ||
|
|
bf750451f1 | ||
|
|
83b11a8b35 | ||
|
|
42da37e737 | ||
|
|
0f335cda27 | ||
|
|
a6c24bb44f | ||
|
|
e975ea7e74 | ||
|
|
92ec44cf4a | ||
|
|
8da9fa869f | ||
|
|
67f3571a4f | ||
|
|
8710940952 | ||
|
|
7295678c34 | ||
|
|
a037e8e429 | ||
|
|
3da4395d10 | ||
|
|
f9f9663b2a | ||
|
|
a922c1f226 | ||
|
|
9069dcba54 | ||
|
|
7fbe4b5bc9 | ||
|
|
9ebd9f1d24 | ||
|
|
88b9e87c6e | ||
|
|
d4886607f0 | ||
|
|
1546e9ccc4 | ||
|
|
f25da87043 | ||
|
|
2ac915cd93 | ||
|
|
fa89c6fa73 | ||
|
|
c4d21a4666 | ||
|
|
baa6056c4c | ||
|
|
dc24132a7d | ||
|
|
8abd2a8d20 | ||
|
|
226f9bd202 | ||
|
|
255bea88b1 | ||
|
|
8525276984 | ||
|
|
f3182c6538 | ||
|
|
6d6d1bde4c | ||
|
|
2b6d6b184b | ||
|
|
5b2ee97aa7 | ||
|
|
681f7a5fed | ||
|
|
9910dd0dde | ||
|
|
8d4f8d07c3 | ||
|
|
199f39a52e | ||
|
|
94bea005a4 | ||
|
|
0d501e9017 | ||
|
|
00e9c06f11 | ||
|
|
52710a339a | ||
|
|
6c566cf7b1 | ||
|
|
523f288c8f | ||
|
|
864619201e | ||
|
|
f9e4da2fb0 | ||
|
|
c70806a9db | ||
|
|
44250db908 | ||
|
|
137e5be8f2 | ||
|
|
ffdf712f8a | ||
|
|
4846828f39 | ||
|
|
e8e3857b00 | ||
|
|
91b026507b | ||
|
|
f9013873b9 | ||
|
|
ddcd3a79e1 | ||
|
|
c20d076b74 | ||
|
|
042e50f979 | ||
|
|
e14e4921b5 | ||
|
|
d61cddb3d6 | ||
|
|
0accf60a63 | ||
|
|
d3daf7a5db | ||
|
|
8ac0742cc7 | ||
|
|
f94b153f7f | ||
|
|
74e5d26c20 | ||
|
|
9a9dedf1b4 | ||
|
|
e704a5a946 | ||
|
|
dd26b62607 | ||
|
|
9fceadd422 | ||
|
|
9c368702b4 | ||
|
|
3fc7b84fc4 | ||
|
|
b17b488c96 | ||
|
|
9bbcb99b90 | ||
|
|
215eaa4acb | ||
|
|
92a3afe492 | ||
|
|
19a3d20fad | ||
|
|
8cd7b186b7 | ||
|
|
be1f3d1c1f | ||
|
|
2f8a37252d | ||
|
|
d73d78e76f | ||
|
|
f84e88116c | ||
|
|
473fa3850b | ||
|
|
f336275476 | ||
|
|
982bc5a09b | ||
|
|
5fe99e0510 | ||
|
|
1527157bfe | ||
|
|
922bb0346a | ||
|
|
e3d68d6aab | ||
|
|
aea3b0a614 | ||
|
|
cd592b4743 | ||
|
|
c59bc9d977 | ||
|
|
bc443ff4aa | ||
|
|
afd024f0b1 | ||
|
|
d29b6f5675 | ||
|
|
6b6617aae6 | ||
|
|
636fed5fe9 | ||
|
|
d7f4f50986 | ||
|
|
6d0271ad57 | ||
|
|
f29c911032 | ||
|
|
01ee740535 | ||
|
|
7d5d9bc847 | ||
|
|
776a85cf1a | ||
|
|
ac10f55405 | ||
|
|
d0f45a41f8 | ||
|
|
16a42ba330 | ||
|
|
f7d5b6a05e | ||
|
|
4376968bca | ||
|
|
dee2b8ad64 | ||
|
|
2c9a4dfb37 | ||
|
|
e46fec5050 | ||
|
|
f3c409ffc2 | ||
|
|
309ff40a48 | ||
|
|
eea2d38f39 | ||
|
|
876bec9db3 | ||
|
|
f06cce0300 | ||
|
|
e1931f8c37 | ||
|
|
c240b5ad21 | ||
|
|
baafe08d6e | ||
|
|
cba487f5b7 | ||
|
|
edbaa1eddd | ||
|
|
378fba89f5 | ||
|
|
b0a62b7cf5 | ||
|
|
1415820cb1 | ||
|
|
81a8738823 | ||
|
|
417d0bc444 | ||
|
|
22e10d4dba | ||
|
|
57f6219f7c | ||
|
|
fbe3680142 | ||
|
|
c2b446c209 | ||
|
|
09844ab64b | ||
|
|
cea1c87c21 | ||
|
|
a2640e2147 | ||
|
|
9cd532745a | ||
|
|
063bdc28ab | ||
|
|
5d8392366c | ||
|
|
2d05b5d5d3 | ||
|
|
ca4ba14718 | ||
|
|
9755e1e9e9 | ||
|
|
954e42f9c0 | ||
|
|
b47815d530 | ||
|
|
1edaff454b | ||
|
|
b47725dcc2 | ||
|
|
b85ef1a95e | ||
|
|
eff95dc033 | ||
|
|
846c48d140 | ||
|
|
ee3862fcf4 | ||
|
|
2fe9e70b54 | ||
|
|
002528fadd | ||
|
|
ee5e25a52b | ||
|
|
bd3d959cea | ||
|
|
afd070012d | ||
|
|
d6a10938e3 | ||
|
|
f95f2509c7 | ||
|
|
3dea9de29c | ||
|
|
3b0623fc42 | ||
|
|
f38fac3508 | ||
|
|
b4b4d1a816 | ||
|
|
821a1c5405 | ||
|
|
1b0266e612 | ||
|
|
3320246d0f | ||
|
|
55f467c945 | ||
|
|
958ad128ad | ||
|
|
06c3b5dd65 | ||
|
|
cac2606016 | ||
|
|
bc3a8360a7 | ||
|
|
6b3bf15c4c | ||
|
|
76f5de44e7 | ||
|
|
24b944cbdc | ||
|
|
687267de38 | ||
|
|
ea144622a1 | ||
|
|
52fa8658ea | ||
|
|
ffa095f981 | ||
|
|
6b7a761fd4 | ||
|
|
3b85669999 | ||
|
|
ffaf92b67b | ||
|
|
78383ef568 | ||
|
|
cb278c762d | ||
|
|
117fbbb2d5 | ||
|
|
60699ed9c3 | ||
|
|
54f0802f72 | ||
|
|
c2afa77258 | ||
|
|
c079e646ef | ||
|
|
1394c3420c | ||
|
|
92275670f5 | ||
|
|
37af5425ff | ||
|
|
d40dc60cd8 | ||
|
|
11f4487286 | ||
|
|
0689fa2abf | ||
|
|
4268994034 | ||
|
|
8dffb4e345 | ||
|
|
bc5951b50d | ||
|
|
f8a7a13f6b | ||
|
|
b28ce9f2e8 | ||
|
|
a370919ebe | ||
|
|
09a7e10ef1 | ||
|
|
0afaaf2348 | ||
|
|
f04cf51047 | ||
|
|
eaa7f81604 | ||
|
|
ce98145fb2 | ||
|
|
d3ae77cf8b | ||
|
|
28131f42df | ||
|
|
06b1dec645 | ||
|
|
9a46a8fbf9 | ||
|
|
9237d12cac | ||
|
|
fd8b11822a | ||
|
|
1d73dc92b0 | ||
|
|
e563985c3d | ||
|
|
c0092e5124 | ||
|
|
40750e1cb7 | ||
|
|
e74d9dc326 | ||
|
|
71c68ce40a | ||
|
|
5ddda4bf5b | ||
|
|
ba65fc3694 | ||
|
|
e798eb623d | ||
|
|
38504e578a | ||
|
|
a30ac7d194 | ||
|
|
90cc74487b | ||
|
|
a5bf5d3e2d | ||
|
|
2c7c448108 | ||
|
|
2b42568ce7 | ||
|
|
063ef58515 | ||
|
|
5e2c975c99 | ||
|
|
782f0f5726 | ||
|
|
be69fd6c08 | ||
|
|
c8b263bc2b | ||
|
|
26e2fb08f7 | ||
|
|
12d5b05bcd | ||
|
|
9d5f7cacd3 | ||
|
|
875cafa474 | ||
|
|
0e4bf5fc73 | ||
|
|
c75cf55672 | ||
|
|
1c1d0c9d25 | ||
|
|
7aa216f666 | ||
|
|
1801e4161a | ||
|
|
78392b6b4b | ||
|
|
736410c616 | ||
|
|
e53942f4a6 | ||
|
|
d82f94e677 | ||
|
|
0e5b44af11 | ||
|
|
a685abe2b8 | ||
|
|
728816a52e | ||
|
|
233508195a | ||
|
|
9bf0824376 | ||
|
|
b9c3223e98 | ||
|
|
7c99f3aad4 | ||
|
|
06036f91cf | ||
|
|
093aff1b08 | ||
|
|
b0b07b94da | ||
|
|
5cca710ac6 | ||
|
|
86cab40faa | ||
|
|
f433d98fbe | ||
|
|
844d66f597 | ||
|
|
ef3b0b5742 | ||
|
|
6877a18a3a | ||
|
|
c510fdfb9d | ||
|
|
35da0ff9b8 | ||
|
|
ebca62fc2d | ||
|
|
df46ee7664 | ||
|
|
bc1d1a3066 | ||
|
|
041f4e453f | ||
|
|
2f622c986a | ||
|
|
5625adc659 | ||
|
|
e91884e38c | ||
|
|
5dc45aae1f | ||
|
|
17327dc8db | ||
|
|
3a4f10f936 | ||
|
|
4ae0358cf5 | ||
|
|
54c5ad09cd | ||
|
|
95c1130c5c | ||
|
|
3f651203a7 | ||
|
|
aef54b8b3f | ||
|
|
d4a317b646 | ||
|
|
c02b6d13ff | ||
|
|
96cc4cebb4 | ||
|
|
630552d171 | ||
|
|
a99f2b420a | ||
|
|
17ebdf4b64 | ||
|
|
4a9e40daf1 | ||
|
|
87bf2f5745 | ||
|
|
82cf257a5c | ||
|
|
9015472597 | ||
|
|
3a04567fba | ||
|
|
3d186004b2 | ||
|
|
bded6a46e6 | ||
|
|
9be6ea257c | ||
|
|
7ebb863fbd | ||
|
|
e6f2f2364f | ||
|
|
ce3e0168ee | ||
|
|
76708e090d | ||
|
|
7b056f9feb | ||
|
|
1ef711a3ff | ||
|
|
7d45f50335 | ||
|
|
3e25c49827 | ||
|
|
0377c80c58 | ||
|
|
74759f4d04 | ||
|
|
c293a66e0a | ||
|
|
0ac8e337e7 | ||
|
|
555f4c14f1 | ||
|
|
b910d3533f | ||
|
|
b7993ff043 | ||
|
|
507df7b6fc | ||
|
|
867c8dd520 | ||
|
|
34d124d016 | ||
|
|
f45b6979cd | ||
|
|
7ba7717d3f | ||
|
|
5488c50c47 | ||
|
|
faee63c847 | ||
|
|
c51ff28475 | ||
|
|
f6e885b07e | ||
|
|
b251629a65 | ||
|
|
1b2f2ecd10 | ||
|
|
88eb4137d9 | ||
|
|
b23a9aee58 | ||
|
|
f88b1ec901 | ||
|
|
a951af8c4d | ||
|
|
20cad01ad6 | ||
|
|
f83e36c735 |
@@ -1,89 +0,0 @@
|
|||||||
{
|
|
||||||
"projectName": "tabler",
|
|
||||||
"projectOwner": "tabler",
|
|
||||||
"repoType": "github",
|
|
||||||
"repoHost": "https://github.com",
|
|
||||||
"files": [
|
|
||||||
"CONTRIBUTORS.md"
|
|
||||||
],
|
|
||||||
"imageSize": 100,
|
|
||||||
"commit": true,
|
|
||||||
"commitConvention": "angular",
|
|
||||||
"contributors": [
|
|
||||||
{
|
|
||||||
"login": "codecalm",
|
|
||||||
"name": "Paweł Kuna",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/1282324?v=4",
|
|
||||||
"profile": "https://tabler.io/",
|
|
||||||
"contributions": [
|
|
||||||
"code",
|
|
||||||
"doc"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "martynaaj",
|
|
||||||
"name": "Martyna",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/60158888?v=4",
|
|
||||||
"profile": "https://github.com/martynaaj",
|
|
||||||
"contributions": [
|
|
||||||
"doc"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "deralaxo",
|
|
||||||
"name": "Dawid Harat",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/40028795?v=4",
|
|
||||||
"profile": "https://github.com/deralaxo",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "rjd22",
|
|
||||||
"name": "Robert-Jan de Dreu",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/160743?v=4",
|
|
||||||
"profile": "https://codersopinion.com/",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "FreexD",
|
|
||||||
"name": "Michał Wolny",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/7117869?v=4",
|
|
||||||
"profile": "https://github.com/FreexD",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "wangkanai",
|
|
||||||
"name": "Sarin Na Wangkanai",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/10666633?v=4",
|
|
||||||
"profile": "https://www.wangkanai.com/",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "WinterSilence",
|
|
||||||
"name": "Anton",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/3521094?v=4",
|
|
||||||
"profile": "https://ensostudio.ru/",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "dheineman",
|
|
||||||
"name": "Dave Heineman",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/516028?v=4",
|
|
||||||
"profile": "https://github.com/dheineman",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"contributorsPerLine": 7,
|
|
||||||
"linkToUsage": false
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,6 @@
|
|||||||
>= 1%
|
>= 1%
|
||||||
last 1 major version
|
last 2 versions
|
||||||
|
Firefox ESR
|
||||||
not dead
|
not dead
|
||||||
Chrome >= 60
|
safari >= 15.4
|
||||||
Firefox >= 60
|
iOS >= 15.4
|
||||||
Edge >= 15.15063
|
|
||||||
Explorer 11
|
|
||||||
iOS >= 10
|
|
||||||
Safari >= 10
|
|
||||||
Android >= 6
|
|
||||||
not ExplorerMobile <= 11
|
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const fs = require('fs'),
|
|
||||||
path = require('path'),
|
|
||||||
YAML = require('yaml');
|
|
||||||
|
|
||||||
const content = YAML.parse(fs.readFileSync(path.join(__dirname, '../src/pages/_data/changelog.yml'), 'utf8')).reverse()
|
|
||||||
let readme = `# Changelog
|
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.\n`
|
|
||||||
|
|
||||||
content.forEach((change) => {
|
|
||||||
readme += `\n\n## \`${change.version}\` - ${change.date}\n\n`
|
|
||||||
|
|
||||||
if (change.description) {
|
|
||||||
readme += `**${change.description}**\n\n`
|
|
||||||
}
|
|
||||||
|
|
||||||
change.changes.forEach((line) => {
|
|
||||||
readme += `- ${line}\n`
|
|
||||||
})
|
|
||||||
|
|
||||||
console.log(change.version);
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(__dirname, '../CHANGELOG.md'), readme)
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const YAML = require('yaml')
|
|
||||||
const fs = require('node:fs')
|
|
||||||
const path = require('node:path')
|
|
||||||
const request = require('request')
|
|
||||||
const filePath = path.join(__dirname, '../src/pages/_data/photos.yml')
|
|
||||||
|
|
||||||
const photos = YAML.parse(fs.readFileSync(filePath, 'utf8'))
|
|
||||||
|
|
||||||
const urlTitle = (str) => {
|
|
||||||
str = str
|
|
||||||
.toLowerCase()
|
|
||||||
.replaceAll('&', 'and')
|
|
||||||
.replace(/[^[a-z0-9-]/g, '-')
|
|
||||||
.replace(/-+/g, '-')
|
|
||||||
|
|
||||||
return str
|
|
||||||
}
|
|
||||||
|
|
||||||
const download = function(uri, filename, callback, error) {
|
|
||||||
request.head(uri, function(err, res, body) {
|
|
||||||
request(uri).pipe(fs.createWriteStream(filename))
|
|
||||||
.on('close', callback)
|
|
||||||
.on('error', error)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async function downloadPhotos() {
|
|
||||||
for (const key in photos) {
|
|
||||||
const photo = photos[key]
|
|
||||||
|
|
||||||
let filename, i = 1;
|
|
||||||
|
|
||||||
do {
|
|
||||||
filename = `${urlTitle(photo['title'])}${i > 1 ? `-${i}` : ''}.jpg`
|
|
||||||
i++
|
|
||||||
} while (fs.existsSync(path.join(__dirname, `../src/static/photos/${filename}`)))
|
|
||||||
|
|
||||||
await new Promise((resolve, reject) => {
|
|
||||||
download(photo['path'], path.join(__dirname, `../src/static/photos/${filename}`), function(){
|
|
||||||
resolve()
|
|
||||||
}, function() {
|
|
||||||
reject()
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
photos[key]['file'] = filename
|
|
||||||
photos[key]['horizontal'] = photo['width'] > photo['height']
|
|
||||||
}
|
|
||||||
|
|
||||||
fs.writeFileSync(filePath, YAML.stringify(photos))
|
|
||||||
}
|
|
||||||
|
|
||||||
downloadPhotos();
|
|
||||||
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const fs = require('fs'),
|
|
||||||
path = require('path');
|
|
||||||
|
|
||||||
const iconsTags = require('../node_modules/@tabler/icons/icons.json'),
|
|
||||||
iconsPkg = require('../node_modules/@tabler/icons/package.json');
|
|
||||||
|
|
||||||
const prepareSvgFile = (svg) => {
|
|
||||||
return svg.replace(/\n/g, '').replace(/>\s+</g, '><').replace(/\s+/g, ' ')
|
|
||||||
}
|
|
||||||
|
|
||||||
let svgList = {}
|
|
||||||
for (let iconName in iconsTags) {
|
|
||||||
let iconData = iconsTags[iconName]
|
|
||||||
svgList[iconName] = {
|
|
||||||
name: iconName,
|
|
||||||
svg: {
|
|
||||||
outline: iconData.styles.outline ? prepareSvgFile(fs.readFileSync(path.join(__dirname, `../node_modules/@tabler/icons/icons/outline/${iconName}.svg`), 'utf8')) : null,
|
|
||||||
filled: iconData.styles.filled ? prepareSvgFile(fs.readFileSync(path.join(__dirname, `../node_modules/@tabler/icons/icons/filled/${iconName}.svg`), 'utf8')) : null,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fs.writeFileSync(
|
|
||||||
path.join(__dirname, `../src/pages/_data/icons-info.json`),
|
|
||||||
JSON.stringify({
|
|
||||||
version: iconsPkg.version,
|
|
||||||
count: Object.values(svgList).reduce((acc, icon) => {
|
|
||||||
return acc + (icon.svg.outline ? 1 : 0) + (icon.svg.filled ? 1 : 0)
|
|
||||||
}, 0)
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(__dirname, `../src/pages/_data/icons.json`), JSON.stringify(svgList))
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const fs = require('fs'),
|
|
||||||
path = require('path'),
|
|
||||||
glob = require('glob');
|
|
||||||
|
|
||||||
const illustrations = glob
|
|
||||||
.sync(path.join(__dirname, `../src/static/illustrations/light/*.png`))
|
|
||||||
.map((file) => {
|
|
||||||
return path.basename(file, '.png')
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
fs.writeFileSync(
|
|
||||||
path.join(__dirname, `../src/pages/_data/illustrations.json`),
|
|
||||||
JSON.stringify(illustrations)
|
|
||||||
)
|
|
||||||
63
.build/reformat-mdx.mjs
Normal file
63
.build/reformat-mdx.mjs
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
import { readFileSync, writeFileSync } from 'node:fs';
|
||||||
|
import { join, dirname } from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url'
|
||||||
|
import { sync } from 'glob';
|
||||||
|
import * as prettier from "prettier";
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const docs = sync(join(__dirname, '..', 'docs', '**', '*.md'))
|
||||||
|
|
||||||
|
async function formatHTML(htmlString) {
|
||||||
|
try {
|
||||||
|
const formattedHtml = await prettier.format(htmlString, {
|
||||||
|
parser: "html",
|
||||||
|
printWidth: 100,
|
||||||
|
});
|
||||||
|
return formattedHtml;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error formatting HTML:", error);
|
||||||
|
return htmlString; // Return original in case of an error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function replaceAsync(str, regex, asyncFn) {
|
||||||
|
const matches = [...str.matchAll(regex)];
|
||||||
|
|
||||||
|
const replacements = await Promise.all(
|
||||||
|
matches.map(async (match) => asyncFn(...match))
|
||||||
|
);
|
||||||
|
|
||||||
|
let result = str;
|
||||||
|
matches.forEach((match, i) => {
|
||||||
|
result = result.replace(match[0], replacements[i]);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const file of docs) {
|
||||||
|
const oldContent = readFileSync(file, 'utf8')
|
||||||
|
|
||||||
|
// get codeblocks from markdown
|
||||||
|
const content = await replaceAsync(oldContent, /(```([a-z0-9]+).*?\n)(.*?)(```)/gs, async (m, m1, m2, m3, m4) => {
|
||||||
|
if (m2 === 'html') {
|
||||||
|
m3 = await formatHTML(m3);
|
||||||
|
|
||||||
|
// remove empty lines
|
||||||
|
m3 = m3.replace(/^\s*[\r\n]/gm, '');
|
||||||
|
|
||||||
|
return m1 + m3.trim() + "\n" + m4;
|
||||||
|
}
|
||||||
|
return m.trim();
|
||||||
|
})
|
||||||
|
|
||||||
|
if (content !== oldContent) {
|
||||||
|
writeFileSync(file, content, 'utf8')
|
||||||
|
console.log(`Reformatted ${file}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
30
.build/zip-package.mjs
Normal file
30
.build/zip-package.mjs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
import AdmZip from 'adm-zip';
|
||||||
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import { readFileSync } from 'fs';
|
||||||
|
|
||||||
|
// Get __dirname in ESM
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const pkg = JSON.parse(
|
||||||
|
readFileSync(path.join(__dirname, '../core', 'package.json'), 'utf8')
|
||||||
|
)
|
||||||
|
|
||||||
|
// Create zip instance and add folder
|
||||||
|
const zip = new AdmZip();
|
||||||
|
zip.addLocalFolder(path.join(__dirname, '../preview/dist'), 'dashboard');
|
||||||
|
|
||||||
|
zip.addLocalFile(path.join(__dirname, '../preview/static', 'og.png'), '.', 'preview.png');
|
||||||
|
|
||||||
|
zip.addFile("documentation.url", Buffer.from("[InternetShortcut]\nURL = https://tabler.io/docs"));
|
||||||
|
|
||||||
|
|
||||||
|
// Folder to zip and output path
|
||||||
|
const outputZipPath = path.join(__dirname, '../packages-zip', `tabler-${pkg.version}.zip`);
|
||||||
|
|
||||||
|
// Write the zip file
|
||||||
|
zip.writeZip(outputZipPath);
|
||||||
|
|
||||||
|
console.log(`Zipped folder to ${outputZipPath}`);
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Change Twitter to X brand
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Updated link to icons documentation
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Dependencies update
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Initialize Visual Studio Code config
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add new `Tag` component
|
|
||||||
@@ -3,9 +3,18 @@
|
|||||||
"changelog": "@changesets/cli/changelog",
|
"changelog": "@changesets/cli/changelog",
|
||||||
"commit": false,
|
"commit": false,
|
||||||
"fixed": [],
|
"fixed": [],
|
||||||
"linked": [],
|
"linked": [
|
||||||
"access": "restricted",
|
[
|
||||||
"baseBranch": "main",
|
"@tabler/core",
|
||||||
"updateInternalDependencies": "patch",
|
"@tabler/preview",
|
||||||
"ignore": []
|
"@tabler/docs"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"access": "public",
|
||||||
|
"baseBranch": "dev",
|
||||||
|
"ignore": [],
|
||||||
|
"privatePackages": {
|
||||||
|
"version": true,
|
||||||
|
"tag": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add customizable Star Ratings component using `star-rating.js` library
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Dependencies update
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update TinyMCE to v7.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix text color in dark version of navbar
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to version 2.21 with 18 new icons added
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Init changelog script
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add `flags.html` page with list of all flags
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Adding Two-Step Verification Pages
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Bump pnpm/action-setup from 2 to 3
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
`Dockerfile` fix
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to version 2.20 with 37 new icons added
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add Tabler Illustrations
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Adding `alerts.html` page with example of alerts.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Unify size of avatar, flag and payment components
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update icons to v2.42.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Bootstrap to v5.3.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Dependencies update
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix `rgba` color values in `_variables.scss`
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Resolve map page issues
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Introduce Docker Compose Config to build and run Ttabler locally
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update `_navbar.scss` with disabled dropdown menu items color
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to v3.17.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update `@tabler/icons` to v3.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Adding punctuation to `SECURITY.md`
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix form controls bugs in dark mode
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Change primary color value to new Tabler branding
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Unified Box Shadows with Bootstrap Compatibility
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Unify dark mode with latest Bootstrap API and improve dark mode elements
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Bump `pnpm/action-setup` from 3 to 4
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update dependencies
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to version 2.22 with 18 new icons added
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add All Contributions package to project for easy contribution tracking
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Resolved light dropdown issue on dark theme
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
New Chat component
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to version 2.19 with 18 new icons added
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Adjusting form element sizes for enhanced mobile devices compatibility
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Switch from `npm` to `pnpm` for faster package installation
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add variable to configure `avatar-list` spacing
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add Tabler Illustrations
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update required Node.js version to 18 and add `.nvmrc` file
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix table default background color
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Avoid SCSS color dependency on `:focus`
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Updated Tabler Icons to v3.24.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to version 2.18 with 18 new icons added
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to v3.14.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add Prettier to project for consistent code formatting
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to version 2.25 with 48 new icons added
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add new color picker component using `coloris.js` library
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix responsiveness issue in Settings menu
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add new Filled section to Icons page
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update `bootstrap` to v5.3.1
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to version 2.23 with 18 new icons added
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add support for changeset tool for more efficient and organized code changes
|
|
||||||
100
.cursor/rules/changelog.mdc
Normal file
100
.cursor/rules/changelog.mdc
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
description: Cursor Rules for Tabler Changesets
|
||||||
|
globs:
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### File Structure
|
||||||
|
|
||||||
|
- Each change must be in a separate changeset file in `.changeset/` directory
|
||||||
|
- Use descriptive kebab-case filenames (e.g., `progress-sizes.md`, `button-ghost.md`)
|
||||||
|
- Follow the standard changeset format with frontmatter and description
|
||||||
|
|
||||||
|
### Change Description Format
|
||||||
|
|
||||||
|
- **One sentence per changeset** - keep descriptions concise and focused
|
||||||
|
- Use **backticks for code elements**: classes (`.btn-ghost`), properties (`stroke-width`), values (`1.5`), icons (`arrow-up`)
|
||||||
|
- Start with action verbs: "Added", "Updated", "Fixed", "Removed"
|
||||||
|
- Be specific about what was changed
|
||||||
|
|
||||||
|
### Version Bump Guidelines
|
||||||
|
|
||||||
|
- **Major**: Breaking changes, complete rewrites
|
||||||
|
- **Minor**: New features, new components, new pages, significant enhancements
|
||||||
|
- **Patch**: Bug fixes, small improvements, style updates, accessibility fixes
|
||||||
|
|
||||||
|
### Package Selection
|
||||||
|
|
||||||
|
- `"@tabler/core"`: Changes to SCSS, core functionality, CSS classes
|
||||||
|
- `"@tabler/preview"`: New pages, demo updates, preview-specific changes
|
||||||
|
- `"@tabler/docs"`: Documentation updates
|
||||||
|
- Use multiple packages when change affects multiple areas
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
|
#### New Feature (Minor)
|
||||||
|
|
||||||
|
```md
|
||||||
|
---
|
||||||
|
"@tabler/core": minor
|
||||||
|
"@tabler/preview": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Added Progress Steps component for step-by-step navigation indicators.
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Bug Fix (Patch)
|
||||||
|
|
||||||
|
```md
|
||||||
|
---
|
||||||
|
"@tabler/core": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Updated `stroke-width` for `.icon-sm` from `1` to `1.5` for better visibility.
|
||||||
|
```
|
||||||
|
|
||||||
|
#### New Page (Minor)
|
||||||
|
|
||||||
|
```md
|
||||||
|
---
|
||||||
|
"@tabler/preview": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Added new onboarding page with progress indicator and navigation layout.
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Style Enhancement (Patch)
|
||||||
|
|
||||||
|
```md
|
||||||
|
---
|
||||||
|
"@tabler/core": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Added smooth transitions for progress bar width and background color changes.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Code Formatting Rules
|
||||||
|
|
||||||
|
- Class names: `.btn-ghost`, `.progress-lg`, `.icon-sm`
|
||||||
|
- CSS properties: `stroke-width`, `background-color`, `width`
|
||||||
|
- Values: `1.5`, `transparent`, `100%`
|
||||||
|
- Icon names: `arrow-up`, `arrow-down`, `trending-up`
|
||||||
|
- HTML attributes: `aria-label`, `role`, `data-*`
|
||||||
|
- JavaScript functions: `addEventListener()`, `querySelector()`
|
||||||
|
|
||||||
|
### Common Patterns
|
||||||
|
|
||||||
|
- **Component additions**: "Added [ComponentName] component for [purpose]"
|
||||||
|
- **Size variants**: "Added [size] size variant for [component] (`.class-size`)"
|
||||||
|
- **Style fixes**: "Fixed [issue] in [component/element]"
|
||||||
|
- **Icon updates**: "Updated [component] to use `new-icon` instead of `old-icon`"
|
||||||
|
- **Accessibility**: "Improved accessibility by [specific change]"
|
||||||
|
|
||||||
|
### Commit Message Format
|
||||||
|
|
||||||
|
Use English for commit messages following conventional commit format when possible:
|
||||||
|
|
||||||
|
- `feat: add progress steps component`
|
||||||
|
- `fix: update icon stroke width for better visibility`
|
||||||
|
- `style: add smooth transitions to progress bars`
|
||||||
171
.cursor/rules/html-elements.mdc
Normal file
171
.cursor/rules/html-elements.mdc
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
---
|
||||||
|
description: Tabler Project HTML Elements Guidelines
|
||||||
|
globs: ["**/*.html", "**/*.liquid", "**/*.md"]
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## HTML Elements Guidelines
|
||||||
|
|
||||||
|
### 1. Icons
|
||||||
|
|
||||||
|
When you need to use an icon, always use the Tabler icon include syntax:
|
||||||
|
|
||||||
|
```html
|
||||||
|
{% include "ui/icon.html" icon="ICON_NAME" %}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
|
||||||
|
- `{% include "ui/icon.html" icon="home" %}`
|
||||||
|
- `{% include "ui/icon.html" icon="building-community" %}`
|
||||||
|
- `{% include "ui/icon.html" icon="map-pin" %}`
|
||||||
|
|
||||||
|
### 2. Page Links
|
||||||
|
|
||||||
|
When linking to other pages, always use the relative page syntax:
|
||||||
|
|
||||||
|
```html
|
||||||
|
href="{{ page | relative }}/url.html"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
|
||||||
|
- `href="{{ page | relative }}/job-post.html"`
|
||||||
|
- `href="{{ page | relative }}/job-listing.html"`
|
||||||
|
- `href="{{ page | relative }}/marketing/index.html"`
|
||||||
|
|
||||||
|
### 3. Static Generation
|
||||||
|
|
||||||
|
All pages are statically generated to HTML using Eleventy (11ty). Keep this in mind when:
|
||||||
|
|
||||||
|
- Writing frontmatter (must be static YAML, no Liquid templating)
|
||||||
|
- Creating dynamic content (use Liquid templating in the body, not frontmatter)
|
||||||
|
- Linking between pages (use relative paths)
|
||||||
|
|
||||||
|
### 4. Additional Guidelines
|
||||||
|
|
||||||
|
#### Frontmatter Rules
|
||||||
|
|
||||||
|
- Frontmatter must be static YAML
|
||||||
|
- Cannot use Liquid templating in frontmatter
|
||||||
|
- Use static values for title, permalink, etc.
|
||||||
|
|
||||||
|
#### Liquid Templating
|
||||||
|
|
||||||
|
- Use Liquid templating only in the HTML body
|
||||||
|
- Access data using `{{ variable }}` syntax
|
||||||
|
- Use `{% for %}` loops for dynamic content
|
||||||
|
- Use `{% if %}` conditions for conditional rendering
|
||||||
|
|
||||||
|
#### File Structure
|
||||||
|
|
||||||
|
- Pages go in `preview/pages/`
|
||||||
|
- Includes go in `shared/includes/`
|
||||||
|
- Data files go in `shared/data/`
|
||||||
|
- Documentation goes in `docs/content/`
|
||||||
|
|
||||||
|
#### CSS Classes
|
||||||
|
|
||||||
|
- Use Bootstrap 5 classes
|
||||||
|
- Use Tabler's custom CSS classes
|
||||||
|
- Follow the pattern: `--#{$prefix}component-property`
|
||||||
|
|
||||||
|
#### Accessibility
|
||||||
|
|
||||||
|
- Include proper ARIA labels
|
||||||
|
- Use semantic HTML elements
|
||||||
|
- Ensure proper heading hierarchy
|
||||||
|
- Add alt text for images
|
||||||
|
|
||||||
|
### 5. Component Usage
|
||||||
|
|
||||||
|
#### Cards
|
||||||
|
|
||||||
|
- Use `card` class for main containers
|
||||||
|
- Use `card-body` for content areas
|
||||||
|
- Use `card-header` for card headers
|
||||||
|
- Use `card-title` for card title
|
||||||
|
|
||||||
|
#### Buttons
|
||||||
|
|
||||||
|
- Use `btn` class for all buttons
|
||||||
|
- Use `btn-primary` for primary actions
|
||||||
|
- Use `btn` for secondary actions, don't use `btn-outline-secondary`
|
||||||
|
- Use `btn-sm` for smaller buttons
|
||||||
|
- Use `w-100` for full-width buttons
|
||||||
|
|
||||||
|
#### Forms
|
||||||
|
|
||||||
|
- Use `form-control` for input fields
|
||||||
|
- Use `form-label` for labels
|
||||||
|
- Use `form-check` for checkboxes/radio buttons
|
||||||
|
- Use `form-select` for dropdowns
|
||||||
|
|
||||||
|
#### Layout
|
||||||
|
|
||||||
|
- Use Bootstrap grid system (`row`, `col-*`)
|
||||||
|
- Use `container-xl` for main containers
|
||||||
|
- Use `page-wrapper` for page structure
|
||||||
|
- Use `page-body` for main content area
|
||||||
|
|
||||||
|
#### Badges
|
||||||
|
|
||||||
|
- Use `badge` class for badges
|
||||||
|
- Don't use `badge-outline` for badges, use `badge` class instead
|
||||||
|
- Don't use `badge-primary` for badges, use `badge` class instead
|
||||||
|
- Don't change the text color of badges
|
||||||
|
|
||||||
|
#### Markdown
|
||||||
|
|
||||||
|
- Use `markdown` class for markdown content
|
||||||
|
- Apply to containers that render markdown content
|
||||||
|
- Example: `<div class="markdown">...</div>`
|
||||||
|
|
||||||
|
#### Rest of the rules
|
||||||
|
|
||||||
|
- Read the rest of the rules in the `docs/content/ui/` folder
|
||||||
|
|
||||||
|
### 6. Data Integration
|
||||||
|
|
||||||
|
#### Using JSON Data
|
||||||
|
|
||||||
|
```liquid
|
||||||
|
{% for item in items %}
|
||||||
|
<div>{{ item.name }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Conditional Rendering
|
||||||
|
|
||||||
|
```liquid
|
||||||
|
{% if condition %}
|
||||||
|
<div>Content</div>
|
||||||
|
{% endif %}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Including Components
|
||||||
|
|
||||||
|
```liquid
|
||||||
|
{% include "ui/button.html" color="primary" text="Click me" %}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Best Practices
|
||||||
|
|
||||||
|
#### Performance
|
||||||
|
|
||||||
|
- Minimize nested loops
|
||||||
|
- Use `limit` filters when iterating large datasets
|
||||||
|
- Optimize images for web use
|
||||||
|
|
||||||
|
#### Code Organization
|
||||||
|
|
||||||
|
- Keep components modular and reusable
|
||||||
|
- Use consistent naming conventions
|
||||||
|
- Comment complex logic
|
||||||
|
- Group related functionality together
|
||||||
|
|
||||||
|
#### Error Handling
|
||||||
|
|
||||||
|
- Always check if data exists before using it
|
||||||
|
- Provide fallback content for missing data
|
||||||
|
- Use `{% if %}` guards for optional content
|
||||||
56
.cursor/rules/main.mdc
Normal file
56
.cursor/rules/main.mdc
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
---
|
||||||
|
description: Tabler Project Rules
|
||||||
|
globs:
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Documentation Standards
|
||||||
|
|
||||||
|
- Always write documentation in English (not Polish) for technical content
|
||||||
|
- Use clear, descriptive headings with proper hierarchy (##, ###)
|
||||||
|
- Include practical examples with code snippets
|
||||||
|
- Add explanations for each component's purpose and usage
|
||||||
|
- Use consistent formatting for code blocks and examples
|
||||||
|
|
||||||
|
## CSS/SCSS Guidelines
|
||||||
|
|
||||||
|
- Follow Tabler's CSS custom properties pattern: `--#{$prefix}component-property`
|
||||||
|
- Use semantic class names that describe purpose, not appearance
|
||||||
|
- Maintain consistent spacing and indentation in SCSS files
|
||||||
|
- Group related styles together with clear comments
|
||||||
|
- Use Bootstrap-compatible class naming conventions
|
||||||
|
|
||||||
|
## Component Documentation Structure
|
||||||
|
|
||||||
|
- Start with a brief description of the component's purpose
|
||||||
|
- Show basic usage examples first
|
||||||
|
- Include variations and modifiers
|
||||||
|
- Add accessibility considerations where relevant
|
||||||
|
- Provide code examples that are copy-paste ready
|
||||||
|
|
||||||
|
## File Organization
|
||||||
|
|
||||||
|
- Keep documentation files in `docs/content/ui/components/`
|
||||||
|
- Use consistent naming: lowercase with hyphens
|
||||||
|
- Include frontmatter with title, summary, and description
|
||||||
|
- Link to Bootstrap documentation when relevant
|
||||||
|
|
||||||
|
## Code Examples
|
||||||
|
|
||||||
|
- Use Liquid templating syntax for dynamic examples
|
||||||
|
- Include both HTML and rendered output
|
||||||
|
- Show responsive behavior where applicable
|
||||||
|
- Demonstrate proper accessibility attributes
|
||||||
|
|
||||||
|
## Git Commit Messages
|
||||||
|
|
||||||
|
- Use English for commit messages
|
||||||
|
- Follow conventional commit format when possible
|
||||||
|
- Be descriptive about what was changed and why
|
||||||
|
|
||||||
|
## Project-Specific Conventions
|
||||||
|
|
||||||
|
- Tabler uses Bootstrap 5 as a foundation
|
||||||
|
- Custom components extend Bootstrap functionality
|
||||||
|
- Documentation should be comprehensive but concise
|
||||||
|
- Examples should be practical and immediately usable
|
||||||
68
.github/workflows/argos.yml
vendored
Normal file
68
.github/workflows/argos.yml
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
name: Argos Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'preview/**/*.js'
|
||||||
|
- 'preview/**/*.html'
|
||||||
|
- 'preview/**/*.scss'
|
||||||
|
- 'core/**/*.js'
|
||||||
|
- 'core/**/*.scss'
|
||||||
|
|
||||||
|
env:
|
||||||
|
NODE: 20
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# if: github.event.pull_request.draft == false
|
||||||
|
if: false
|
||||||
|
steps:
|
||||||
|
- name: Clone repository
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Cache turbo build setup
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .turbo
|
||||||
|
key: ${{ runner.os }}-turbo-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-turbo-
|
||||||
|
|
||||||
|
- name: Install PNPM
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: "${{ env.NODE }}"
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Get installed Playwright version
|
||||||
|
id: playwright-version
|
||||||
|
run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package.json').devDependencies['@playwright/test'])")" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Cache playwright binaries
|
||||||
|
uses: actions/cache@v4
|
||||||
|
id: playwright-cache
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.cache/ms-playwright
|
||||||
|
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}
|
||||||
|
|
||||||
|
- name: Install pnpm dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Install Playwright Browsers
|
||||||
|
run: pnpm exec playwright install --with-deps
|
||||||
|
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: pnpm run playwright
|
||||||
22
.github/workflows/bundlewatch.yml
vendored
22
.github/workflows/bundlewatch.yml
vendored
@@ -9,7 +9,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
FORCE_COLOR: 2
|
FORCE_COLOR: 2
|
||||||
NODE: 18
|
NODE: 20
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bundlewatch:
|
bundlewatch:
|
||||||
@@ -17,17 +17,24 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone repository
|
- name: Clone repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Cache turbo build setup
|
||||||
uses: actions/setup-node@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
node-version: "${{ env.NODE }}"
|
path: .turbo
|
||||||
|
key: ${{ runner.os }}-turbo-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-turbo-
|
||||||
|
|
||||||
- name: Install PNPM
|
- name: Install PNPM
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
version: 8
|
node-version: "${{ env.NODE }}"
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Set up Bundler
|
- name: Set up Bundler
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
@@ -38,9 +45,6 @@ jobs:
|
|||||||
- name: Install pnpm dependencies
|
- name: Install pnpm dependencies
|
||||||
run: pnpm install --no-frozen-lockfile
|
run: pnpm install --no-frozen-lockfile
|
||||||
|
|
||||||
- name: Run build
|
|
||||||
run: pnpm run build
|
|
||||||
|
|
||||||
- name: Run bundlewatch
|
- name: Run bundlewatch
|
||||||
run: pnpm run bundlewatch
|
run: pnpm run bundlewatch
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repo
|
- name: Checkout Repo
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/close_inactive.yml
vendored
2
.github/workflows/close_inactive.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
issues: write
|
issues: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9
|
- uses: actions/stale@v10
|
||||||
with:
|
with:
|
||||||
days-before-issue-stale: 360
|
days-before-issue-stale: 360
|
||||||
days-before-issue-close: 14
|
days-before-issue-close: 14
|
||||||
|
|||||||
12
.github/workflows/lockfiles.yaml
vendored
12
.github/workflows/lockfiles.yaml
vendored
@@ -1,6 +1,7 @@
|
|||||||
name: Changed lock files
|
name: Changed lock files
|
||||||
on:
|
on:
|
||||||
pull_request: null
|
pull_request_target:
|
||||||
|
types: [opened, reopened]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: read
|
pull-requests: read
|
||||||
@@ -11,11 +12,10 @@ jobs:
|
|||||||
name: Verify lock file integrity
|
name: Verify lock file integrity
|
||||||
steps:
|
steps:
|
||||||
- name: Clone Tabler
|
- name: Clone Tabler
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Prevent lock file change
|
- name: Prevent lock file change
|
||||||
uses: xalvarez/prevent-file-change-action@v1
|
uses: xalvarez/prevent-file-change-action@v3
|
||||||
with:
|
with:
|
||||||
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
||||||
pattern: Gemfile.lock|pnpm-lock.json
|
pattern: Gemfile.lock|pnpm-lock.json|pnpm-lock.yaml
|
||||||
trustedAuthors: codecalm, dependabot
|
trustedAuthors: codecalm, BG-Software-BG, dependabot
|
||||||
|
|||||||
63
.github/workflows/release-beta.yml
vendored
63
.github/workflows/release-beta.yml
vendored
@@ -1,63 +0,0 @@
|
|||||||
name: Pre-release
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- beta
|
|
||||||
- dev-changesets
|
|
||||||
|
|
||||||
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
name: PR or Release
|
|
||||||
if: ${{ github.repository_owner == 'tabler' }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout Repo
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- uses: ruby/setup-ruby@v1
|
|
||||||
with:
|
|
||||||
bundler-cache: true
|
|
||||||
|
|
||||||
- name: Enable corepack
|
|
||||||
run: corepack enable pnpm
|
|
||||||
|
|
||||||
- name: Setup Node.js 18
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
cache: 'pnpm'
|
|
||||||
node-version: 18
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: pnpm install
|
|
||||||
|
|
||||||
- name: Build Package
|
|
||||||
run: pnpm run build
|
|
||||||
|
|
||||||
- name: Enable Pre-release
|
|
||||||
run: pnpm changeset pre enter beta
|
|
||||||
|
|
||||||
- name: Creating .npmrc
|
|
||||||
run: |
|
|
||||||
cat << EOF > "$HOME/.npmrc"
|
|
||||||
//registry.npmjs.org/:_authToken=$NPM_TOKEN
|
|
||||||
EOF
|
|
||||||
env:
|
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
||||||
|
|
||||||
- name: Create Release Pull Request
|
|
||||||
uses: changesets/action@v1
|
|
||||||
with:
|
|
||||||
# Note: pnpm install after versioning is necessary to refresh lockfile
|
|
||||||
version: pnpm run version
|
|
||||||
publish: pnpm release
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
||||||
NPM_CONFIG_PROVENANCE: true
|
|
||||||
39
.github/workflows/release.yml
vendored
39
.github/workflows/release.yml
vendored
@@ -3,7 +3,7 @@ name: Release
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- dev
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -15,42 +15,37 @@ jobs:
|
|||||||
release:
|
release:
|
||||||
name: Release
|
name: Release
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write # to create release
|
||||||
|
issues: write # to post issue comments
|
||||||
|
pull-requests: write # to create pull request
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repo
|
- name: Checkout Repo
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- uses: ruby/setup-ruby@v1
|
- name: Install PNPM
|
||||||
with:
|
uses: pnpm/action-setup@v4
|
||||||
bundler-cache: true
|
|
||||||
|
|
||||||
- name: Enable corepack
|
|
||||||
run: corepack enable pnpm
|
|
||||||
|
|
||||||
- name: Setup Node.js 18
|
- name: Setup Node.js 18
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
|
node-version: "${{ env.NODE }}"
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
node-version: 18
|
|
||||||
registry-url: 'https://registry.npmjs.org'
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
- name: Build Package
|
- name: Build
|
||||||
run: pnpm run build
|
run: pnpm run build
|
||||||
|
|
||||||
- name: Creating .npmrc
|
- name: Create release Pull Request or publish to NPM
|
||||||
run: |
|
|
||||||
cat << EOF > "$HOME/.npmrc"
|
|
||||||
//registry.npmjs.org/:_authToken=$NPM_TOKEN
|
|
||||||
EOF
|
|
||||||
env:
|
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
||||||
|
|
||||||
- name: Create Release Pull Request
|
|
||||||
uses: changesets/action@v1
|
uses: changesets/action@v1
|
||||||
with:
|
with:
|
||||||
publish: pnpm release
|
version: pnpm run version
|
||||||
|
publish: pnpm run publish
|
||||||
|
commit: "chore: update versions"
|
||||||
|
title: "chore: update versions"
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
27
.github/workflows/test.yml
vendored
27
.github/workflows/test.yml
vendored
@@ -1,11 +1,10 @@
|
|||||||
name: Test build
|
name: Test build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request: null
|
||||||
types: [ opened, reopened ]
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
NODE: 18
|
NODE: 20
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -15,25 +14,25 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Clone repository
|
- name: Clone repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Cache turbo build setup
|
||||||
uses: actions/setup-node@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
node-version: "${{ env.NODE }}"
|
path: .turbo
|
||||||
|
key: ${{ runner.os }}-turbo-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-turbo-
|
||||||
|
|
||||||
- name: Install PNPM
|
- name: Install PNPM
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
|
||||||
version: 8
|
|
||||||
|
|
||||||
- name: Set up Ruby
|
- name: Set up Node.js
|
||||||
uses: ruby/setup-ruby@v1
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
ruby-version: 3.2
|
node-version: "${{ env.NODE }}"
|
||||||
bundler-cache: true
|
cache: 'pnpm'
|
||||||
|
|
||||||
- run: ruby --version
|
|
||||||
- run: node --version
|
- run: node --version
|
||||||
|
|
||||||
- name: Install pnpm dependencies
|
- name: Install pnpm dependencies
|
||||||
|
|||||||
12
.gitignore
vendored
12
.gitignore
vendored
@@ -19,17 +19,21 @@ node_modules/
|
|||||||
/svg-tmp/
|
/svg-tmp/
|
||||||
/components/
|
/components/
|
||||||
/percy.sh
|
/percy.sh
|
||||||
/src/pages/playground.html
|
/preview/pages/playground.html
|
||||||
/src/pages/playground-*.html
|
/preview/pages/screenshot.html
|
||||||
/src/pages/features.html
|
/preview/pages/screenshot-*.html
|
||||||
vendor/
|
/preview/pages/playground-*.html
|
||||||
|
/preview/pages/features.html
|
||||||
|
|
||||||
.pnp.loader.mjs
|
.pnp.loader.mjs
|
||||||
.pnp.cjs
|
.pnp.cjs
|
||||||
.yarn
|
.yarn
|
||||||
.next
|
.next
|
||||||
.vercel
|
.vercel
|
||||||
|
.turbo
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
demo/
|
demo/
|
||||||
dist/
|
dist/
|
||||||
|
packages-zip/
|
||||||
|
.env
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
version: 1
|
|
||||||
snapshot:
|
|
||||||
widths: [1440]
|
|
||||||
16
.prettierrc
16
.prettierrc
@@ -1,10 +1,20 @@
|
|||||||
{
|
{
|
||||||
"bracketSpacing": true,
|
"bracketSpacing": true,
|
||||||
"jsxSingleQuote": false,
|
"jsxSingleQuote": false,
|
||||||
"printWidth": 240,
|
"printWidth": 320,
|
||||||
"proseWrap": "always",
|
"proseWrap": "always",
|
||||||
"semi": false,
|
"semi": false,
|
||||||
"singleQuote": false,
|
"singleQuote": true,
|
||||||
|
"quoteProps": "consistent",
|
||||||
"tabWidth": 2,
|
"tabWidth": 2,
|
||||||
"trailingComma": "all"
|
"useTabs": false,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": "*.scss",
|
||||||
|
"options": {
|
||||||
|
"parser": "scss"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
3.2.2
|
|
||||||
16
.vscode/settings.json
vendored
16
.vscode/settings.json
vendored
@@ -1,14 +1,12 @@
|
|||||||
{
|
{
|
||||||
"files.exclude": {
|
"files.exclude": {
|
||||||
"**/.git": false,
|
"**/.git": true,
|
||||||
"**/.svn": false,
|
"**/.svn": true,
|
||||||
"**/.hg": false,
|
"**/.hg": true,
|
||||||
"**/CVS": false,
|
"**/CVS": true,
|
||||||
"**/.DS_Store": false,
|
"**/.DS_Store": true,
|
||||||
"**/Thumbs.db": false,
|
"**/Thumbs.db": true,
|
||||||
"**/.idea/": false,
|
"**/.idea/": true
|
||||||
"dist": false,
|
|
||||||
"demo": false
|
|
||||||
},
|
},
|
||||||
"explorerExclude.backup": {}
|
"explorerExclude.backup": {}
|
||||||
}
|
}
|
||||||
317
CHANGELOG.md
317
CHANGELOG.md
@@ -1,317 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta20` - 2023-08-24
|
|
||||||
|
|
||||||
- Update `bootstrap` to v5.3.1
|
|
||||||
- Add new `Chat` component
|
|
||||||
- Add new `Tag` component
|
|
||||||
- Add customizable Star Ratings component using `star-rating.js` library
|
|
||||||
- Add new color picker component using `coloris.js` library
|
|
||||||
- Add `alerts.html` page with example of alerts.
|
|
||||||
- Add `flags.html` page with list of all flags
|
|
||||||
- Add Two-Step Verification Pages
|
|
||||||
- Add variable to configure `avatar-list` spacing
|
|
||||||
- Unify dark mode with latest Bootstrap API and improve dark mode elements
|
|
||||||
- Unify Box Shadows with Bootstrap Compatibility
|
|
||||||
- Avoid SCSS color dependency on `:focus`
|
|
||||||
- Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
|
|
||||||
- Fix text color in dark version of navbar
|
|
||||||
- Adjusting form element sizes for enhanced mobile devices compatibility
|
|
||||||
- Resolved light dropdown issue on dark theme
|
|
||||||
- Update Tabler Icons to version 2.32 with 48 new icons added
|
|
||||||
- Fix table default background color
|
|
||||||
- Fix responsiveness issue in Settings menu
|
|
||||||
- Update required Node.js version to 18 and add `.nvmrc` file
|
|
||||||
- Add support for changeset tool for more efficient and organized code changes
|
|
||||||
- `Dockerfile` fix
|
|
||||||
- Switch from `npm` to `pnpm` for faster package installation
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta19` - 2023-05-15
|
|
||||||
|
|
||||||
- Add customizable Star Ratings component using `star-rating.js` library (#1571)
|
|
||||||
- Add new "Filled" section to Icons page (#1574)
|
|
||||||
- Fix form controls bugs in dark mode (#1573)
|
|
||||||
- Fix text color in dark version of navbar (#1569)
|
|
||||||
- Changelog update
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta18` - 2023-05-14
|
|
||||||
|
|
||||||
- new page: Cookie banner
|
|
||||||
- Unify dark mode with latest Bootstrap API and improve dark mode elements (#1561)
|
|
||||||
- Update Tabler Icons to version 2.18 with 18 new icons added (#1560)
|
|
||||||
- Switch from `npm` to `pnpm` for faster package installation (#1559)
|
|
||||||
- Add Prettier to project for consistent code formatting (#1558)
|
|
||||||
- Update required Node.js version to 18 and add `.nvmrc` file (#1555)
|
|
||||||
- Add All Contributions package to project for easy contribution tracking (#1556)
|
|
||||||
- Add support for changeset tool for more efficient and organized code changes (#1553)
|
|
||||||
- Fix bug where `border-1`, `border-2`, etc don't work (#1526)
|
|
||||||
- Fix indeterminate input background color (#1536)
|
|
||||||
- Update Bootstrap to `5.3.0-alpha3` (#1543)
|
|
||||||
- `tom-select` dark mode styling fixes
|
|
||||||
- Advanced udage of `tom-select` (#1480)
|
|
||||||
- Fix Dropdown menu in rtl mode (#801)
|
|
||||||
- Fix `tom-select` dropdown will be shaded in table-responsive (#1409)
|
|
||||||
- Remove overflow scroll from body
|
|
||||||
- Fix avatars overlap transparently (#1464)
|
|
||||||
- Fix TinyMCE dropdown icon list transparent (#1426)
|
|
||||||
- Dark mode lite colors improvement
|
|
||||||
- Fix non full width selects (#1392)
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta17` - 2023-01-28
|
|
||||||
|
|
||||||
- update `bootstrap` to v5.3.0
|
|
||||||
- update icons to v2.1.2
|
|
||||||
- add 72 new brands, browsers logos update
|
|
||||||
- new `Trial ended` page
|
|
||||||
- new `Page loader` page
|
|
||||||
- new `Profile` page
|
|
||||||
- headings fix
|
|
||||||
- dropdown background color fix
|
|
||||||
- fix rgba conversion bug
|
|
||||||
- fix autofill text color, not matching in dark mode
|
|
||||||
- update license
|
|
||||||
- header html5 tags
|
|
||||||
- add input with appended `<kbd>`
|
|
||||||
- `bootstrap` import fix
|
|
||||||
- font improvements
|
|
||||||
- change `$body-color` to CSS variable
|
|
||||||
- scrollbars improvements
|
|
||||||
- move `@tabler/icons` to `dev-dependencies`
|
|
||||||
- fix #1370: avatar stacked list is not stacked anymore
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta16` - 2022-11-12
|
|
||||||
|
|
||||||
- new `Photogrid` page
|
|
||||||
- `Steps` component improvements
|
|
||||||
- fix #1348: Make job listing responsive for smaller devices
|
|
||||||
- fix #1357: buttons group not active
|
|
||||||
- fix #1352: fix deprecation warning
|
|
||||||
- fix #1180: number input with `form-control-sm` looks weird
|
|
||||||
- fix #1328: color input should show different color for inner check symbol on white ellipse
|
|
||||||
- fix #1355 - missing font sizes
|
|
||||||
- update icons to v1.111.0
|
|
||||||
- homepage navbar fix
|
|
||||||
- fix #1262 - `.bg-opacity-xx` class is not functioning properly
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta15` - 2022-11-01
|
|
||||||
|
|
||||||
- new `badges` page
|
|
||||||
- `<kbd>` styling
|
|
||||||
- update icons to v1.109.0
|
|
||||||
- `tom-select` border fix
|
|
||||||
- exclude `playgrounds` from build
|
|
||||||
- update jekyll to v4.3.1
|
|
||||||
- fix: facebook color update
|
|
||||||
- navbar aria atributes fixes
|
|
||||||
- fix #808 - `navbar-menu` and `sidebar-menu` has the same `id`
|
|
||||||
- fix #1335 - missing color variables usage in `alert` and `btn-ghost-*`
|
|
||||||
- move border style to CSS variables
|
|
||||||
- add missing forms
|
|
||||||
- `btn-actions` fixes
|
|
||||||
- replace `$text-muted` to css variable
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta14` - 2022-10-21
|
|
||||||
|
|
||||||
- fix active items in dark mode
|
|
||||||
- update Jekyll to newest version
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta13` - 2022-10-18
|
|
||||||
|
|
||||||
- update Bootstrap to 5.2.1, update dependencies
|
|
||||||
- new `tracking` component
|
|
||||||
- new radio button version of `form-imagecheck`
|
|
||||||
- update icons to v1.105.0
|
|
||||||
- dark mode improvements
|
|
||||||
- corrects the spelling of New Zealand (#1318)
|
|
||||||
- remove `$border-color-dark`
|
|
||||||
- fix #1301 - code snippets in docs look bad in dark mode
|
|
||||||
- fix #1305 - different default link color for dark mode
|
|
||||||
- fix popover background in dark mode
|
|
||||||
- fix button default border color
|
|
||||||
- fix `form-imagecheck` bg in dark mode
|
|
||||||
- navbar logo fix
|
|
||||||
- move card ribbons config to variables
|
|
||||||
- navbar border fix
|
|
||||||
- dark mode active fix
|
|
||||||
- using globalThis instead of window (#1315)
|
|
||||||
- fix #1210 - lastmod not generated for pages in `sitemap.xml`
|
|
||||||
- fix card border in dark mode
|
|
||||||
- fix #895 - background color overwrites background image
|
|
||||||
- fix #1302 - wrong card header in dark mode
|
|
||||||
- fix #1303 - wrong color when hovering over `selectgroup` in dark mode
|
|
||||||
- fix #1308 - bad coloring in table in dark mode
|
|
||||||
- fix #1273 - datepicker background color broken
|
|
||||||
- fix `$prefix` hard coded `layout/_dark.scss`
|
|
||||||
- fix #1275 - remove last border-right on progress bar
|
|
||||||
- fix #1261 - broken offcanvas bg
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta12` - 2022-09-19
|
|
||||||
|
|
||||||
- new "Job listing" page
|
|
||||||
- new "Sign in with cover" page
|
|
||||||
- new "Logs" page
|
|
||||||
- new `progressbg` component
|
|
||||||
- add a lot of CSS variables
|
|
||||||
- add Dockerfile with alpine base
|
|
||||||
- add icon pulse/tada/rotate animations
|
|
||||||
- use `:host` in selectors to support Web Components
|
|
||||||
- use dark table variant colors in dark mode (#1200)
|
|
||||||
- update Tabler Icons to v1.96
|
|
||||||
- change `space-y` component
|
|
||||||
- headings, shadows and borders unify
|
|
||||||
- toggle TinyMCE dark mode and skin based on the set Tabler theme
|
|
||||||
- fix `card-footer` background
|
|
||||||
- fix headers weight
|
|
||||||
- fix transparent hover background in pagination
|
|
||||||
- fix dark mode card text color
|
|
||||||
- fix `--#{$prefix}card-bg` is undefined
|
|
||||||
- fix global variable for `.card` and `.btn`
|
|
||||||
- fix code sample in the customize tabler docs
|
|
||||||
- fix form elements demo page radio buttons
|
|
||||||
- replace `gulp-minify` with `gulp-terser`
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta11` - 2022-07-05
|
|
||||||
|
|
||||||
- new `Dropzone` component
|
|
||||||
- new `Lightbox` component
|
|
||||||
- new `TinyMCS` component
|
|
||||||
- new `Inline Player` component
|
|
||||||
- new `Pricing table` component
|
|
||||||
- new `Datagrid` component
|
|
||||||
- new optgroup form examples
|
|
||||||
- new settings page
|
|
||||||
- update Tabler Icons to v1.78
|
|
||||||
- added popover docs page
|
|
||||||
- fix: #1125 incorrect chart display in the mobile version
|
|
||||||
- update Bootstrap to 5.2.0
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta10` - 2022-04-29
|
|
||||||
|
|
||||||
- new `datatable` component
|
|
||||||
- update Tabler Icons to v1.67
|
|
||||||
- fix: #1024 - fix Tom-select in dark mode
|
|
||||||
- new carousel indicators: dots, vertical, thumbs (#1101)
|
|
||||||
- replace !important modifier with more specific selectors (#1100)
|
|
||||||
- new `FAQ` page
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta9` - 2022-02-26
|
|
||||||
|
|
||||||
- fix: #1061 - list group item colors in light and dark modes
|
|
||||||
- new `tasks` dashboard
|
|
||||||
- fix: #1059 - upload button in form element in dark view has problem
|
|
||||||
- fix: #1052 - card background icon is practically invisible
|
|
||||||
- remove Inter font and use default font system stack
|
|
||||||
- fix: #1018 - vector map not working
|
|
||||||
- fix: #1035 - wrong background color of hovered list group items in dark mode
|
|
||||||
- dependencies update
|
|
||||||
- add `font-display: swap;` to improve font loading
|
|
||||||
- new `Boxed` layout
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta8` - 2022-02-05
|
|
||||||
|
|
||||||
- update dependencies
|
|
||||||
- new vector maps demos
|
|
||||||
- fixes update map on resize
|
|
||||||
- docs improvement
|
|
||||||
- replace `badge` with `status-dot` in `navbar-notifications.html`
|
|
||||||
- map tooltip fixes
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta7` - 2022-02-05
|
|
||||||
|
|
||||||
- fix: #1019 - project-overview.html link not working
|
|
||||||
- fix: #1010 - card with bottom tabs has incorrect border radius
|
|
||||||
- uptime monitor mobile fixes
|
|
||||||
- navbar dark button fix
|
|
||||||
- `tabler-icons` link
|
|
||||||
- autoloading webfonts
|
|
||||||
- cards fixes, new cards demos
|
|
||||||
- ruby dependencies update
|
|
||||||
- RTL stylesheet fixes
|
|
||||||
- new card action demos
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta6` - 2022-01-18
|
|
||||||
|
|
||||||
- pricing cards fix
|
|
||||||
- fix bug `fw-...`, `.fs-...` is missed (#987)
|
|
||||||
- avatar class fix
|
|
||||||
- fix bug #903 `litepicker` with date range not having correct border
|
|
||||||
- page wrapper fix
|
|
||||||
- fix #900 `is-invalid-lite` class is not working under `was-validated` form class
|
|
||||||
- update `@tabler/icons` to version 1.48
|
|
||||||
- fix #960 - Badges not honoring font sizes
|
|
||||||
- fix #959 - `node-sass` does not properly compile nested media queries
|
|
||||||
- update package dependencies to newest version
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta5` - 2021-12-07
|
|
||||||
|
|
||||||
**Tabler has finally lived to see dark mode! 🌝🌚**
|
|
||||||
|
|
||||||
- **Dark mode enabled!**
|
|
||||||
- add more cursors (#947)
|
|
||||||
- fix #892 - media queries need to be nested when negating
|
|
||||||
- update `@tabler/icons` to newest version
|
|
||||||
- move optional dependencies to peerDependencies (#924)
|
|
||||||
- move deployment to Github Actions (#934)
|
|
||||||
- table border fixes
|
|
||||||
- antialiased fix
|
|
||||||
- update `@tabler/icons` to version 1.42
|
|
||||||
- change default font to 'Inter'
|
|
||||||
- colors unify
|
|
||||||
- add `tom-select` and remove `choices.js`
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta4` - 2021-10-24
|
|
||||||
|
|
||||||
- upgrade required node.js version to 14
|
|
||||||
- upgrade Bootstrap to 5.1
|
|
||||||
- upgrade dependencies
|
|
||||||
- fix #775 - litepicker not initializing
|
|
||||||
- fix `nouislider` import in dev
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta3` - 2021-05-08
|
|
||||||
|
|
||||||
- upgrade Bootstrap to 5.0
|
|
||||||
- upgrade dependencies
|
|
||||||
- change `$border-radius-pill` variable
|
|
||||||
- badge vertical align fix
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta2` - 2021-03-29
|
|
||||||
|
|
||||||
- update dependencies
|
|
||||||
- `li` marker fix
|
|
||||||
- page wrapper, nav fixes
|
|
||||||
- scripts optimize, remove `capture_once`
|
|
||||||
- `page-body` fixes
|
|
||||||
- layout navbar fix
|
|
||||||
- typography fix
|
|
||||||
- ribbon fix
|
|
||||||
- charts label fixes
|
|
||||||
- charts docs
|
|
||||||
|
|
||||||
|
|
||||||
## `1.0.0-beta` - 2021-02-17
|
|
||||||
|
|
||||||
**Initial beta release of Tabler v1.0! Lots more coming soon though 😁**
|
|
||||||
|
|
||||||
- update Bootstrap to 5.0.0-beta2
|
|
||||||
- update other dependencies.
|
|
||||||
@@ -3,8 +3,6 @@ FROM ruby:3.2-alpine
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ADD _config.yml /app/
|
ADD _config.yml /app/
|
||||||
ADD _config_prod.yml /app/
|
ADD _config_prod.yml /app/
|
||||||
ADD Gemfile /app/
|
|
||||||
ADD Gemfile.lock /app/
|
|
||||||
ADD package.json /app/
|
ADD package.json /app/
|
||||||
ADD pnpm-lock.yaml /app/
|
ADD pnpm-lock.yaml /app/
|
||||||
ADD gulpfile.js /app/
|
ADD gulpfile.js /app/
|
||||||
@@ -13,11 +11,10 @@ RUN apk add --virtual build-dependencies build-base npm
|
|||||||
RUN apk upgrade
|
RUN apk upgrade
|
||||||
RUN npm i -g pnpm
|
RUN npm i -g pnpm
|
||||||
RUN pnpm install
|
RUN pnpm install
|
||||||
RUN bundle config --global silence_root_warning 1 && bundler install --verbose
|
|
||||||
|
|
||||||
# website
|
# website
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
# website management (browser auto reload)
|
# website management (browser auto reload)
|
||||||
EXPOSE 3001
|
EXPOSE 3001
|
||||||
# run tabler
|
# run tabler
|
||||||
ENTRYPOINT [ "pnpm", "run", "start-plugins" ]
|
ENTRYPOINT [ "pnpm", "run", "start" ]
|
||||||
|
|||||||
14
Gemfile
14
Gemfile
@@ -1,14 +0,0 @@
|
|||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gem "jekyll", "4.3.3"
|
|
||||||
|
|
||||||
group :jekyll_plugins do
|
|
||||||
gem "jekyll-random"
|
|
||||||
gem "jekyll-tidy"
|
|
||||||
gem "jekyll-timeago"
|
|
||||||
gem 'jekyll-redirect-from'
|
|
||||||
end
|
|
||||||
|
|
||||||
gem 'wdm', '>= 0.1.1' if Gem.win_platform?
|
|
||||||
|
|
||||||
|
|
||||||
92
Gemfile.lock
92
Gemfile.lock
@@ -1,92 +0,0 @@
|
|||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
addressable (2.8.6)
|
|
||||||
public_suffix (>= 2.0.2, < 6.0)
|
|
||||||
bigdecimal (3.1.8)
|
|
||||||
colorator (1.1.0)
|
|
||||||
concurrent-ruby (1.2.3)
|
|
||||||
em-websocket (0.5.3)
|
|
||||||
eventmachine (>= 0.12.9)
|
|
||||||
http_parser.rb (~> 0)
|
|
||||||
eventmachine (1.2.7)
|
|
||||||
ffi (1.16.3)
|
|
||||||
forwardable-extended (2.6.0)
|
|
||||||
google-protobuf (4.27.5)
|
|
||||||
bigdecimal
|
|
||||||
rake (>= 13)
|
|
||||||
htmlbeautifier (1.4.2)
|
|
||||||
htmlcompressor (0.4.0)
|
|
||||||
http_parser.rb (0.8.0)
|
|
||||||
i18n (1.14.4)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
jekyll (4.3.3)
|
|
||||||
addressable (~> 2.4)
|
|
||||||
colorator (~> 1.0)
|
|
||||||
em-websocket (~> 0.5)
|
|
||||||
i18n (~> 1.0)
|
|
||||||
jekyll-sass-converter (>= 2.0, < 4.0)
|
|
||||||
jekyll-watch (~> 2.0)
|
|
||||||
kramdown (~> 2.3, >= 2.3.1)
|
|
||||||
kramdown-parser-gfm (~> 1.0)
|
|
||||||
liquid (~> 4.0)
|
|
||||||
mercenary (>= 0.3.6, < 0.5)
|
|
||||||
pathutil (~> 0.9)
|
|
||||||
rouge (>= 3.0, < 5.0)
|
|
||||||
safe_yaml (~> 1.0)
|
|
||||||
terminal-table (>= 1.8, < 4.0)
|
|
||||||
webrick (~> 1.7)
|
|
||||||
jekyll-random (0.1)
|
|
||||||
jekyll (>= 3.3, < 5.0)
|
|
||||||
jekyll-redirect-from (0.16.0)
|
|
||||||
jekyll (>= 3.3, < 5.0)
|
|
||||||
jekyll-sass-converter (3.0.0)
|
|
||||||
sass-embedded (~> 1.54)
|
|
||||||
jekyll-tidy (0.2.2)
|
|
||||||
htmlbeautifier
|
|
||||||
htmlcompressor
|
|
||||||
jekyll
|
|
||||||
jekyll-timeago (0.15.0)
|
|
||||||
mini_i18n (>= 0.8.0)
|
|
||||||
jekyll-watch (2.2.1)
|
|
||||||
listen (~> 3.0)
|
|
||||||
kramdown (2.4.0)
|
|
||||||
rexml
|
|
||||||
kramdown-parser-gfm (1.1.0)
|
|
||||||
kramdown (~> 2.0)
|
|
||||||
liquid (4.0.4)
|
|
||||||
listen (3.9.0)
|
|
||||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
||||||
rb-inotify (~> 0.9, >= 0.9.10)
|
|
||||||
mercenary (0.4.0)
|
|
||||||
mini_i18n (0.9.0)
|
|
||||||
pathutil (0.16.2)
|
|
||||||
forwardable-extended (~> 2.6)
|
|
||||||
public_suffix (5.0.5)
|
|
||||||
rake (13.2.1)
|
|
||||||
rb-fsevent (0.11.2)
|
|
||||||
rb-inotify (0.10.1)
|
|
||||||
ffi (~> 1.0)
|
|
||||||
rexml (3.3.9)
|
|
||||||
rouge (4.2.1)
|
|
||||||
safe_yaml (1.0.5)
|
|
||||||
sass-embedded (1.75.0)
|
|
||||||
google-protobuf (>= 3.25, < 5.0)
|
|
||||||
rake (>= 13.0.0)
|
|
||||||
terminal-table (3.0.2)
|
|
||||||
unicode-display_width (>= 1.1.1, < 3)
|
|
||||||
unicode-display_width (2.5.0)
|
|
||||||
webrick (1.8.2)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
jekyll (= 4.3.3)
|
|
||||||
jekyll-random
|
|
||||||
jekyll-redirect-from
|
|
||||||
jekyll-tidy
|
|
||||||
jekyll-timeago
|
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
2.4.19
|
|
||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2018-2023 The Tabler Authors
|
Copyright (c) 2018-2025 The Tabler Authors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
230
README.md
230
README.md
@@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/tabler/tabler"><img src="https://raw.githubusercontent.com/tabler/tabler/dev/src/static/logo.svg" alt="A premium and open source dashboard template with a responsive and high-quality UI." width="300"></a><br><br>
|
<a href="https://github.com/tabler/tabler"><img src="https://raw.githubusercontent.com/tabler/tabler/refs/heads/dev/shared/static/logo.svg" alt="A premium and open source dashboard template with a responsive and high-quality UI." width="300"></a><br><br>
|
||||||
A premium and open source dashboard template with a responsive and high-quality UI.
|
A premium and open source dashboard template with a responsive and high-quality UI.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -13,19 +13,39 @@ A premium and open source dashboard template with a responsive and high-quality
|
|||||||
<a href="https://github.com/tabler/tabler" target="__blank"><img alt="GitHub stars" src="https://img.shields.io/github/stars/tabler/tabler?style=social"></a>
|
<a href="https://github.com/tabler/tabler" target="__blank"><img alt="GitHub stars" src="https://img.shields.io/github/stars/tabler/tabler?style=social"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
## Sponsors
|
||||||
|
|
||||||
|
**If you want to support our project and help us grow it, you can [become a sponsor on GitHub](https://github.com/sponsors/codecalm) or just [donate on PayPal](https://paypal.me/codecalm) :)**
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/sponsors/codecalm">
|
<a href="https://github.com/sponsors/codecalm">
|
||||||
<img src='https://raw.githubusercontent.com/tabler/static/main/sponsors.svg'>
|
<img src="https://cdn.jsdelivr.net/gh/tabler/sponsors@latest/sponsors.svg" alt="Tabler sponsors">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
<p align="center">Browser testing via:</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://www.lambdatest.com/" target="_blank">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/14dd2a0a-bafe-436e-a6cb-29636278c781">
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83">
|
||||||
|
<img src="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83" alt="labmdatest" width="296">
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
## 🔎 Preview
|
## 🔎 Preview
|
||||||
|
|
||||||
Tabler is fully responsive and compatible with all modern browsers. Thanks to its modern and user-friendly design you can create a fully functional interface that users will love! Choose the layouts and components you need and customize them to make your design consistent and eye-catching. Every component has been created with attention to detail to make your interface beautiful! <a href="https://preview.tabler.io">Show me a demo</a>
|
Tabler is fully responsive and compatible with all modern browsers. Thanks to its modern and user-friendly design you can create a fully functional interface that users will love! Choose the layouts and components you need and customize them to make your design consistent and eye-catching. Every component has been created with attention to detail to make your interface beautiful! <a href="https://preview.tabler.io">Show me a demo</a>
|
||||||
|
|
||||||
<a href="https://preview.tabler.io" target="_blank"><img src="https://raw.githubusercontent.com/tabler/tabler/dev/src/static/tabler-preview.png" alt="Tabler preview"></a>
|
<p align="center">
|
||||||
|
<a href="https://preview.tabler.io" target="_blank">
|
||||||
|
<img src="https://raw.githubusercontent.com/tabler/tabler/dev/shared/static/tabler-preview.png" alt="Tabler Preview">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
## 🚀 Features
|
## 🚀 Features
|
||||||
|
|
||||||
@@ -36,126 +56,30 @@ We've created this admin panel for everyone who wants to create templates based
|
|||||||
* **HTML5 & CSS3:** We use only modern web technologies, such as HTML5 and CSS3. Our theme includes some subtle CSS3 animations, which will help you attract attention.
|
* **HTML5 & CSS3:** We use only modern web technologies, such as HTML5 and CSS3. Our theme includes some subtle CSS3 animations, which will help you attract attention.
|
||||||
* **Clean Code:** We followed Bootstrap’s guidelines carefully to make your integration as easy as possible. All code is handwritten and W3C valid.
|
* **Clean Code:** We followed Bootstrap’s guidelines carefully to make your integration as easy as possible. All code is handwritten and W3C valid.
|
||||||
* **Demo pages**: Tabler features over 20 individual pages using various components, which gives you the freedom to choose and combine. All components can vary in color and styling that you can easily modify using Sass. Sky is the limit!
|
* **Demo pages**: Tabler features over 20 individual pages using various components, which gives you the freedom to choose and combine. All components can vary in color and styling that you can easily modify using Sass. Sky is the limit!
|
||||||
* **Single Page Application versions:** [Tabler React](https://github.com/tabler/tabler-react) has React components for Tabler.
|
|
||||||
|
|
||||||
## 📖 Documentation
|
## 📖 Documentation
|
||||||
|
|
||||||
Documentation is available as a part of Tabler preview: https://tabler.io/docs/
|
The documentation is available at https://docs.tabler.io/
|
||||||
|
|
||||||
To run the documentation site locally, follow instructions in the [Documentation README](https://github.com/tabler/tabler/blob/dev/site/README.md).
|
|
||||||
|
|
||||||
## 🪴 Project Activity
|
## 🪴 Project Activity
|
||||||
|
|
||||||

|
<p align="center">
|
||||||
|
<img src="https://repobeats.axiom.co/api/embed/61d1db34446967b0848af68198a392067e0f5870.svg" alt="Repobeats analytics image" />
|
||||||
## 💕 Sponsor Tabler
|
</p>
|
||||||
|
|
||||||
<a href="https://github.com/sponsors/codecalm" target="_blank"><img src="/src/static/sponsor-banner-readme.png?raw=true" alt="Sponsor Tabler" /></a>
|
|
||||||
|
|
||||||
|
|
||||||
### Sponsors
|
|
||||||
|
|
||||||
Support this project by becoming a sponsor. Your logo will show up in this README with a link to your website. [Become a sponsor!](https://opencollective.com/tabler#sponsor)
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/0/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/0/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/1/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/1/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/2/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/2/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/3/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/3/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/4/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/4/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/5/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/5/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/6/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/6/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/7/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/7/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/8/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/8/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/9/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/9/avatar.svg" /></a>
|
|
||||||
|
|
||||||
|
|
||||||
## 📦 Setup environment
|
|
||||||
|
|
||||||
To use our build system and run our documentation locally, you'll need a copy of Tabler's source files. Follow the steps below:
|
|
||||||
|
|
||||||
1. [Install Node.js](https://nodejs.org/download/), which we use to manage our dependencies.
|
|
||||||
2. Navigate to the root `/tabler` directory and run `pnpm install` to install our local dependencies listed in `package.json`.
|
|
||||||
3. [Install Ruby](https://www.ruby-lang.org/en/documentation/installation/) - the recommended version is [2.7.6](https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.6.tar.gz).
|
|
||||||
4. [Install Bundler](https://bundler.io) with `gem install bundler` and finally run `bundle install`. It will install all Ruby dependencies, such as [Jekyll and plugins](https://jekyllrb.com).
|
|
||||||
|
|
||||||
**OSX users**:
|
|
||||||
|
|
||||||
1. NPM ```pnpm install```
|
|
||||||
2. install Ruby (2.5.* recommended)
|
|
||||||
```brew install ruby @2.5```
|
|
||||||
3. install bundler
|
|
||||||
```gem install bundler```
|
|
||||||
4. install
|
|
||||||
```bundle install```
|
|
||||||
- if bundler get any errors try
|
|
||||||
```
|
|
||||||
sudo rm -rf /Library/Developer/CommandLineTools
|
|
||||||
sudo xcode-select --install
|
|
||||||
```
|
|
||||||
5. Run NPM
|
|
||||||
```npm run start```
|
|
||||||
|
|
||||||
|
|
||||||
**Windows users**:
|
|
||||||
|
|
||||||
1. [Install Git](https://git-scm.com/download/win) in `C:\Program Files\git\bin` directory and run `npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"` to change the default shell.
|
|
||||||
2. [Install Ruby+Devkit](https://rubyinstaller.org/downloads/) - the recommended version is [2.7.6](https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-devkit-2.7.6-1-x64.exe).
|
|
||||||
3. [Read guide](https://jekyllrb.com/docs/installation/windows/) to get Jekyll up and running without problems.
|
|
||||||
|
|
||||||
Once you complete the setup, you'll be able to run the various commands provided from the command line.
|
|
||||||
|
|
||||||
|
|
||||||
## Build locally
|
|
||||||
|
|
||||||
You need to have `pnpm` and `bundler` installed.
|
|
||||||
|
|
||||||
1. From the root `/tabler` directory, run installation in the command line:
|
|
||||||
- `pnpm install`
|
|
||||||
- `bundler install`
|
|
||||||
2. Then execute `pnpm run start-plugins` to start up the application stack.
|
|
||||||
3. Open [http://localhost:3000](http://localhost:3000) in your browser, and voilà.
|
|
||||||
4. Any change in the `/src` directory will build the application and refresh the page.
|
|
||||||
|
|
||||||
**Note**:
|
|
||||||
Run `pnpm run build` for reforms a one off build application without refresh.
|
|
||||||
Open [http://localhost:3001](http://localhost:3001) to configure the Web server.
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Tabler is distributed via npm.
|
### Package Managers
|
||||||
|
|
||||||
|
Tabler is distributed via npm. You can install it with this or your preferred JavaScript package manager:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
npm install --save @tabler/core
|
npm install --save @tabler/core
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running with Docker
|
|
||||||
|
|
||||||
**Plain Docker**
|
|
||||||
|
|
||||||
If you don't want to install node/npm/ruby and the dependencies on your local environment, you can use the provided Dockerfile to build a docker image.
|
|
||||||
This Dockerfile is provided as an example to spin-up a container running Tabler.
|
|
||||||
|
|
||||||
Example of how to use this image:
|
|
||||||
|
|
||||||
1. Build the tabler image : `docker build -t tabler .`
|
|
||||||
2. Run the tabler image while mounting the `src` directory as well as the `_config.yml` file into the container.
|
|
||||||
|
|
||||||
Don't forget to expose the port 3000 so you can browse the website locally.
|
|
||||||
You can also expose the port 3001 to have access to BrowserSync
|
|
||||||
|
|
||||||
```sh
|
|
||||||
docker run -p 3000:3000 -p 3001:3001 -v $(pwd)/src:/app/src -v $(pwd)/_config.yml:/app/_config.yml tabler
|
|
||||||
```
|
|
||||||
|
|
||||||
Now open your browser to [http://localhost:3000](http://localhost:3000). Edit anything in the `src/` folder and watch your browser refresh the page after it has been rebuilt.
|
|
||||||
|
|
||||||
**Docker Compose**
|
|
||||||
|
|
||||||
You can also use the docker compose config from this repo. Use `docker compose build && docker compose up` or `docker compose up --build` to build and start the container. Edit anything in the `src/` folder the same way as with plain docker and access the same URLs and ports in your browser.
|
|
||||||
|
|
||||||
### CDN support
|
### CDN support
|
||||||
|
|
||||||
All files included in `@tabler/core` npm package are available over a CDN.
|
All files included in `@tabler/core` npm package are also available over a CDN.
|
||||||
|
|
||||||
#### Javascript
|
#### Javascript
|
||||||
|
|
||||||
@@ -169,24 +93,84 @@ All files included in `@tabler/core` npm package are available over a CDN.
|
|||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/css/tabler.min.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/css/tabler.min.css">
|
||||||
```
|
```
|
||||||
|
|
||||||
## Feature requests
|
## Building locally
|
||||||
|
|
||||||
https://tabler.canny.io/feature-requests
|
To build a copy of Tabler locally, you have two options. You can either set up your device directly with the development tools required to build Tabler, or if you would prefer not to install all the development dependencies directly onto your device, you can use a Dockerfile that Tabler provides to build a docker image. Instructions follow below.
|
||||||
|
|
||||||
|
### First steps: Downloading the Tabler source files
|
||||||
|
|
||||||
|
With either method, the first thing you'll want to do is download a copy of the Tabler source files to your device.
|
||||||
|
|
||||||
|
#### From the Tabler GitHub releases page
|
||||||
|
|
||||||
|
If you don't want to edit the source code once you've downloaded it, and aren't interested in merging future project updates into your copy, you can just download the source files straight from the [Tabler releases on GitHub](https://github.com/tabler/tabler/releases) and extract the contents to a directory called `tabler`.
|
||||||
|
|
||||||
|
#### Cloning with Git
|
||||||
|
|
||||||
|
If you **do** wish to edit the source code after downloading it, for example to contribute changes back to the Tabler project, you'll want to do this by cloning it with Git:
|
||||||
|
1. If you don't have Git installed on your device, download and install it. You can find instructions at [https://git-scm.com/downloads](https://git-scm.com/downloads).
|
||||||
|
2. (Optional) **Windows users:** you could optionally install Git in the `C:\Program Files\git\bin` directory and run `npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"` to change the default shell.
|
||||||
|
3. Clone the Tabler project into a folder on your device. Instructions can be found at [cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository).
|
||||||
|
|
||||||
|
### Installing and running development tools directly
|
||||||
|
|
||||||
|
1. [Install Node.js](https://nodejs.org/download/), which we use to manage our dependencies.
|
||||||
|
2. [Install pnpm](https://pnpm.io/installation) (We recommend either by [Using Corepack](https://pnpm.io/installation#using-corepack) or by [Using npm](https://pnpm.io/installation#using-npm))
|
||||||
|
3. From the root `/tabler` directory where you downloaded the Tabler source files, run installation on the command line:
|
||||||
|
```sh
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
4. Then execute the following to start up the application stack:
|
||||||
|
```sh
|
||||||
|
pnpm run start
|
||||||
|
```
|
||||||
|
5. Open [http://localhost:3000](http://localhost:3000) to view the preview website in your browser, or [http://localhost:3010](http://localhost:3010) to view the documentation website - and voilà.
|
||||||
|
Changes to most of the source files of Tabler core, preview and docs will rebuild the application and refresh the page.
|
||||||
|
|
||||||
|
**Note**:
|
||||||
|
If you wish to perform a one-off build without auto-refresh on any changes, you can run:
|
||||||
|
```sh
|
||||||
|
pnpm run build
|
||||||
|
```
|
||||||
|
You can open [http://localhost:3001](http://localhost:3001) to configure the Web server.
|
||||||
|
|
||||||
|
|
||||||
|
### Installing and running development tools with Docker
|
||||||
|
|
||||||
|
**Plain Docker**
|
||||||
|
|
||||||
|
Here is an example of how to use this image:
|
||||||
|
|
||||||
|
1. From the root `/tabler` directory where you downloaded the Tabler source files, build the tabler image:
|
||||||
|
```sh
|
||||||
|
docker build -t tabler .
|
||||||
|
```
|
||||||
|
2. Run the tabler image. The following command mounts the `src` directory into the container, exposes port 3000 to browse the website locally, and exposes port 3001 to automatically sync changes:
|
||||||
|
```sh
|
||||||
|
docker run -p 3000:3000 -p 3001:3001 -v $(pwd)/src:/app/src tabler
|
||||||
|
```
|
||||||
|
3. Open your browser to [http://localhost:3000](http://localhost:3000). Edit anything in the `src/` folder and watch your browser refresh the page after it has been rebuilt.
|
||||||
|
|
||||||
|
**Docker Compose**
|
||||||
|
|
||||||
|
You can also use the docker compose config from this repo. From the root `/tabler` directory where you downloaded the Tabler source files, use `docker compose build && docker compose up` or `docker compose up --build` to build and start the container. Edit anything in the `src/` folder the same way as with plain docker and access the same URLs and ports in your browser.
|
||||||
|
|
||||||
## Bugs and feature requests
|
## Bugs and feature requests
|
||||||
|
|
||||||
Found a bug or have a feature request? [Please open a new issue](https://github.com/tabler/tabler/issues/new).
|
Found a bug or have a feature request? [Please open a new issue](https://github.com/tabler/tabler/issues/new).
|
||||||
|
|
||||||
|
|
||||||
## 🤓 Creators
|
## 🤓 Creators
|
||||||
|
|
||||||
**Paweł Kuna**
|
**Paweł Kuna**
|
||||||
|
|
||||||
- <https://twitter.com/codecalm>
|
- <https://x.com/codecalm>
|
||||||
- <https://github.com/codecalm>
|
- <https://github.com/codecalm>
|
||||||
- <https://codecalm.net>
|
- <https://codecalm.net>
|
||||||
|
|
||||||
|
**Bartłomiej Gawęda**
|
||||||
|
|
||||||
|
- <https://x.com/B_Gaweda>
|
||||||
|
- <https://github.com/BG-Software-BG>
|
||||||
|
|
||||||
## 👨🚀 Contributors
|
## 👨🚀 Contributors
|
||||||
|
|
||||||
@@ -194,25 +178,11 @@ This project exists thanks to all the people who contribute.
|
|||||||
|
|
||||||
<img src="https://opencollective.com/tabler/contributors.svg?width=890&button=false" />
|
<img src="https://opencollective.com/tabler/contributors.svg?width=890&button=false" />
|
||||||
|
|
||||||
## 🌸 Backers
|
## Social media
|
||||||
|
|
||||||
Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/tabler#backer)
|
Stay up to date by joining our community on <a href="https://x.com/tabler_io" >X</a> and <a href="https://www.facebook.com/tabler.io">Facebook</a>
|
||||||
|
|
||||||
<a href="https://opencollective.com/tabler#backers" target="_blank"><img src="https://opencollective.com/tabler/tiers/backer.svg?width=890&button=false" /></a>
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
See the [LICENSE](https://github.com/tabler/tabler/blob/master/LICENSE) file.
|
See the [LICENSE](https://github.com/tabler/tabler/blob/master/LICENSE) file.
|
||||||
|
|
||||||
## Contributors ✨
|
|
||||||
|
|
||||||
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
||||||
<!-- prettier-ignore-start -->
|
|
||||||
<!-- markdownlint-disable -->
|
|
||||||
<!-- markdownlint-restore -->
|
|
||||||
<!-- prettier-ignore-end -->
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
||||||
|
|
||||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
|
||||||
|
|||||||
279
_config.yml
279
_config.yml
@@ -1,279 +0,0 @@
|
|||||||
source: src/pages
|
|
||||||
destination: tmp
|
|
||||||
|
|
||||||
keep_files:
|
|
||||||
- css
|
|
||||||
- js
|
|
||||||
- img
|
|
||||||
- dist
|
|
||||||
- static
|
|
||||||
- playground.html
|
|
||||||
|
|
||||||
use-iconfont: false
|
|
||||||
rtl: false
|
|
||||||
|
|
||||||
title: Tabler
|
|
||||||
description: Premium and Open Source dashboard template with responsive and high quality UI.
|
|
||||||
theme-color: "#066fd1"
|
|
||||||
|
|
||||||
email: support@tabler.io
|
|
||||||
homepage: https://tabler.io
|
|
||||||
github-url: https://github.com/tabler/tabler
|
|
||||||
github-sponsors-url: https://github.com/sponsors/codecalm
|
|
||||||
changelog-url: https://github.com/tabler/tabler/releases
|
|
||||||
sponsor-url: https://github.com/sponsors/codecalm
|
|
||||||
preview-url: https://tabler.io/demo
|
|
||||||
docs-url: https://tabler.io/docs
|
|
||||||
|
|
||||||
mapbox-key: pk.eyJ1IjoidGFibGVyIiwiYSI6ImNscHh3dnhndjB2M3QycW85bGd0NXRmZ3YifQ.9LfHPsNoEXQH-xzz-81Ffw
|
|
||||||
google-maps-key: AIzaSyAr5mRB4U1KRkVznIrDWEvZjroYcD202DI
|
|
||||||
google-maps-dev-key: AIzaSyCL-BY8-sq12m0S9H-S_yMqDmcun3A9znw
|
|
||||||
npm-package: "@tabler/core"
|
|
||||||
|
|
||||||
random-date-from: "2018-01-01"
|
|
||||||
random-date-to: "2022-01-01"
|
|
||||||
|
|
||||||
debug: false
|
|
||||||
|
|
||||||
layout-dark: false
|
|
||||||
|
|
||||||
plugins:
|
|
||||||
- jekyll-random
|
|
||||||
- jekyll-tidy
|
|
||||||
- jekyll-timeago
|
|
||||||
- jekyll-redirect-from
|
|
||||||
|
|
||||||
tabler-css-plugins:
|
|
||||||
- tabler-flags
|
|
||||||
- tabler-payments
|
|
||||||
- tabler-vendors
|
|
||||||
|
|
||||||
exclude:
|
|
||||||
- .jekyll-cache
|
|
||||||
- redirects.json
|
|
||||||
|
|
||||||
markdown: kramdown
|
|
||||||
kramdown:
|
|
||||||
input: GFM
|
|
||||||
syntax_highlighter: rouge
|
|
||||||
|
|
||||||
jekyll_tidy:
|
|
||||||
compress_html: false
|
|
||||||
ignore_env: development
|
|
||||||
|
|
||||||
collections:
|
|
||||||
- free-illustrations
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
- scope:
|
|
||||||
type: "pages"
|
|
||||||
path: "*.md"
|
|
||||||
values:
|
|
||||||
layout: markdown
|
|
||||||
- scope:
|
|
||||||
type: "pages"
|
|
||||||
values:
|
|
||||||
layout: default
|
|
||||||
|
|
||||||
colors:
|
|
||||||
blue:
|
|
||||||
class: blue
|
|
||||||
hex: '#066fd1'
|
|
||||||
title: Blue
|
|
||||||
azure:
|
|
||||||
class: azure
|
|
||||||
hex: '#45aaf2'
|
|
||||||
title: Azure
|
|
||||||
indigo:
|
|
||||||
class: indigo
|
|
||||||
hex: '#6574cd'
|
|
||||||
title: Indigo
|
|
||||||
purple:
|
|
||||||
class: purple
|
|
||||||
hex: '#a55eea'
|
|
||||||
title: Purple
|
|
||||||
pink:
|
|
||||||
class: pink
|
|
||||||
hex: '#f66d9b'
|
|
||||||
title: Pink
|
|
||||||
red:
|
|
||||||
class: red
|
|
||||||
hex: '#fa4654'
|
|
||||||
title: Red
|
|
||||||
orange:
|
|
||||||
class: orange
|
|
||||||
hex: '#fd9644'
|
|
||||||
title: Orange
|
|
||||||
yellow:
|
|
||||||
class: yellow
|
|
||||||
hex: '#f1c40f'
|
|
||||||
title: Yellow
|
|
||||||
lime:
|
|
||||||
class: lime
|
|
||||||
hex: '#7bd235'
|
|
||||||
title: Lime
|
|
||||||
green:
|
|
||||||
class: green
|
|
||||||
hex: '#5eba00'
|
|
||||||
title: Green
|
|
||||||
teal:
|
|
||||||
class: teal
|
|
||||||
hex: '#2bcbba'
|
|
||||||
title: Teal
|
|
||||||
cyan:
|
|
||||||
class: cyan
|
|
||||||
hex: '#17a2b8'
|
|
||||||
title: Cyan
|
|
||||||
|
|
||||||
skin-colors:
|
|
||||||
rose:
|
|
||||||
hex: '#FFCB9D'
|
|
||||||
title: Rose
|
|
||||||
class: rose
|
|
||||||
yellow:
|
|
||||||
hex: '#F0BA60'
|
|
||||||
title: Yellow
|
|
||||||
class: yellow
|
|
||||||
skin-1:
|
|
||||||
hex: '#e2c6a7'
|
|
||||||
title: Skin 1
|
|
||||||
class: skin-1
|
|
||||||
skin-2:
|
|
||||||
hex: '#c7a786'
|
|
||||||
title: Skin 2
|
|
||||||
class: skin-2
|
|
||||||
skin-3:
|
|
||||||
hex: '#a68063'
|
|
||||||
title: Skin 3
|
|
||||||
class: skin-3
|
|
||||||
skin-4:
|
|
||||||
hex: '#926241'
|
|
||||||
title: Skin 4
|
|
||||||
class: skin-4
|
|
||||||
skin-5:
|
|
||||||
hex: '#654c45'
|
|
||||||
title: Skin 5
|
|
||||||
class: skin-5
|
|
||||||
gray:
|
|
||||||
hex: '#d5d7dd'
|
|
||||||
title: Gray
|
|
||||||
class: gray
|
|
||||||
|
|
||||||
colors-extra:
|
|
||||||
white:
|
|
||||||
hex: '#ffffff'
|
|
||||||
title: White
|
|
||||||
dark:
|
|
||||||
hex: '#303645'
|
|
||||||
title: Dark
|
|
||||||
gray:
|
|
||||||
hex: '#868e96'
|
|
||||||
title: Gray
|
|
||||||
|
|
||||||
variants:
|
|
||||||
- name: success
|
|
||||||
icon: check
|
|
||||||
- name: info
|
|
||||||
icon: info-circle
|
|
||||||
- name: warning
|
|
||||||
icon: alert-triangle
|
|
||||||
- name: danger
|
|
||||||
icon: alert-circle
|
|
||||||
|
|
||||||
theme-colors:
|
|
||||||
primary:
|
|
||||||
class: primary
|
|
||||||
title: Primary
|
|
||||||
secondary:
|
|
||||||
class: secondary
|
|
||||||
title: Secondary
|
|
||||||
success:
|
|
||||||
class: success
|
|
||||||
title: Success
|
|
||||||
warning:
|
|
||||||
class: warning
|
|
||||||
title: Warning
|
|
||||||
danger:
|
|
||||||
class: danger
|
|
||||||
title: Danger
|
|
||||||
info:
|
|
||||||
class: info
|
|
||||||
title: Info
|
|
||||||
dark:
|
|
||||||
class: dark
|
|
||||||
title: Dark
|
|
||||||
light:
|
|
||||||
class: light
|
|
||||||
title: Light
|
|
||||||
|
|
||||||
button-states:
|
|
||||||
- class:
|
|
||||||
title: Normal
|
|
||||||
- class: active
|
|
||||||
title: Active state
|
|
||||||
- class: disabled
|
|
||||||
title: Disabled
|
|
||||||
|
|
||||||
socials:
|
|
||||||
x:
|
|
||||||
icon: brand-x
|
|
||||||
title: X
|
|
||||||
facebook:
|
|
||||||
icon: brand-facebook
|
|
||||||
title: Facebook
|
|
||||||
twitter:
|
|
||||||
icon: brand-twitter
|
|
||||||
title: Twitter
|
|
||||||
google:
|
|
||||||
icon: brand-google
|
|
||||||
title: Google
|
|
||||||
youtube:
|
|
||||||
icon: brand-youtube
|
|
||||||
title: Youtube
|
|
||||||
vimeo:
|
|
||||||
icon: brand-vimeo
|
|
||||||
title: Vimeo
|
|
||||||
dribbble:
|
|
||||||
icon: brand-dribbble
|
|
||||||
title: Dribbble
|
|
||||||
github:
|
|
||||||
icon: brand-github
|
|
||||||
title: Github
|
|
||||||
instagram:
|
|
||||||
icon: brand-instagram
|
|
||||||
title: Instagram
|
|
||||||
pinterest:
|
|
||||||
icon: brand-pinterest
|
|
||||||
title: Pinterest
|
|
||||||
vk:
|
|
||||||
icon: brand-vk
|
|
||||||
title: VK
|
|
||||||
rss:
|
|
||||||
icon: rss
|
|
||||||
title: RSS
|
|
||||||
flickr:
|
|
||||||
icon: brand-flickr
|
|
||||||
title: Flickr
|
|
||||||
bitbucket:
|
|
||||||
icon: brand-bitbucket
|
|
||||||
title: Bitbucket
|
|
||||||
tabler:
|
|
||||||
icon: brand-tabler
|
|
||||||
title: Tabler
|
|
||||||
|
|
||||||
months-short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
|
||||||
months-long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
|
||||||
|
|
||||||
icons:
|
|
||||||
link: https://tabler-icons.io
|
|
||||||
|
|
||||||
emails:
|
|
||||||
price: "$29"
|
|
||||||
count: 54
|
|
||||||
buy_link: https://r.tabler.io/buy-emails
|
|
||||||
|
|
||||||
illustrations:
|
|
||||||
price: "$59"
|
|
||||||
count: 50
|
|
||||||
buy_link: https://r.tabler.io/buy-illustrations
|
|
||||||
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
exclude:
|
|
||||||
- redirects.json
|
|
||||||
- playground.html
|
|
||||||
- playground-*.html
|
|
||||||
46
core/.build/add-banner.mjs
Normal file
46
core/.build/add-banner.mjs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
import { readFileSync, writeFileSync } from 'node:fs';
|
||||||
|
import { join, dirname, basename } from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url'
|
||||||
|
import { sync } from 'glob';
|
||||||
|
import banner from '../../shared/banner/index.mjs';
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const styles = sync(join(__dirname, '..', 'dist', 'css', '*.css'))
|
||||||
|
|
||||||
|
const plugins = {
|
||||||
|
'tabler-flags': 'Flags',
|
||||||
|
'tabler-flags.rtl': 'Flags RTL',
|
||||||
|
'tabler-marketing': 'Marketing',
|
||||||
|
'tabler-marketing.rtl': 'Marketing RTL',
|
||||||
|
'tabler-payments': 'Payments',
|
||||||
|
'tabler-payments.rtl': 'Payments RTL',
|
||||||
|
'tabler-socials': 'Socials',
|
||||||
|
'tabler-socials.rtl': 'Socials RTL',
|
||||||
|
'tabler-vendors': 'Vendors',
|
||||||
|
'tabler-vendors.rtl': 'Vendors RTL',
|
||||||
|
}
|
||||||
|
|
||||||
|
styles.forEach((file, i) => {
|
||||||
|
const content = readFileSync(file, 'utf8')
|
||||||
|
const filename = basename(file)
|
||||||
|
const pluginKey = Object.keys(plugins).find(plugin => filename.includes(plugin))
|
||||||
|
const plugin = plugins[pluginKey]
|
||||||
|
const regex = /^(@charset ['"][a-zA-Z0-9-]+['"];?)\n?/i
|
||||||
|
|
||||||
|
let newContent = ''
|
||||||
|
|
||||||
|
if (content.match(regex)) {
|
||||||
|
newContent = content.replace(regex, (m, m1) => {
|
||||||
|
return `${m1}\n${banner(plugin)}\n`
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
newContent = `${banner(plugin)}\n${content}`
|
||||||
|
}
|
||||||
|
|
||||||
|
writeFileSync(file, newContent, 'utf8')
|
||||||
|
})
|
||||||
82
core/.build/compare-variables.mjs
Normal file
82
core/.build/compare-variables.mjs
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
|
// Get __dirname in ES modules
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
|
// File paths (relative to core/.build directory)
|
||||||
|
const bootstrapPath = path.join(__dirname, '../node_modules/bootstrap/scss/_variables.scss');
|
||||||
|
const tablerPath = path.join(__dirname, '../scss/_variables.scss');
|
||||||
|
|
||||||
|
// Function to extract variable names from SCSS file
|
||||||
|
function extractVariables(filePath) {
|
||||||
|
const content = fs.readFileSync(filePath, 'utf8');
|
||||||
|
const variables = new Set();
|
||||||
|
|
||||||
|
// Regex to find SCSS variables
|
||||||
|
// Looks for patterns like: $variable-name: value
|
||||||
|
// Includes variables in maps and lists
|
||||||
|
const variableRegex = /\$([a-zA-Z0-9_-]+)\s*[:=]/g;
|
||||||
|
|
||||||
|
let match;
|
||||||
|
while ((match = variableRegex.exec(content)) !== null) {
|
||||||
|
const varName = match[1];
|
||||||
|
variables.add(varName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return variables;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Main function
|
||||||
|
function compareVariables() {
|
||||||
|
console.log('Analyzing Bootstrap variables...');
|
||||||
|
const bootstrapVars = extractVariables(bootstrapPath);
|
||||||
|
console.log(`Found ${bootstrapVars.size} variables in Bootstrap\n`);
|
||||||
|
|
||||||
|
console.log('Analyzing Tabler variables...');
|
||||||
|
const tablerVars = extractVariables(tablerPath);
|
||||||
|
console.log(`Found ${tablerVars.size} variables in Tabler\n`);
|
||||||
|
|
||||||
|
// Find variables that are in Bootstrap but not in Tabler
|
||||||
|
const missingInTabler = [];
|
||||||
|
for (const varName of bootstrapVars) {
|
||||||
|
if (!tablerVars.has(varName)) {
|
||||||
|
missingInTabler.push(varName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort alphabetically
|
||||||
|
missingInTabler.sort();
|
||||||
|
|
||||||
|
console.log('='.repeat(60));
|
||||||
|
console.log(`Variables in Bootstrap that are missing in Tabler: ${missingInTabler.length}`);
|
||||||
|
console.log('='.repeat(60));
|
||||||
|
|
||||||
|
if (missingInTabler.length === 0) {
|
||||||
|
console.log('All Bootstrap variables are present in Tabler!');
|
||||||
|
} else {
|
||||||
|
console.log('\nList of missing variables:\n');
|
||||||
|
missingInTabler.forEach((varName, index) => {
|
||||||
|
console.log(`${(index + 1).toString().padStart(4)}. $${varName}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optionally: show statistics
|
||||||
|
console.log('\n' + '='.repeat(60));
|
||||||
|
console.log('Statistics:');
|
||||||
|
console.log(` Bootstrap: ${bootstrapVars.size} variables`);
|
||||||
|
console.log(` Tabler: ${tablerVars.size} variables`);
|
||||||
|
console.log(` Missing: ${missingInTabler.length} variables`);
|
||||||
|
console.log(` Coverage: ${((1 - missingInTabler.length / bootstrapVars.size) * 100).toFixed(1)}%`);
|
||||||
|
console.log('='.repeat(60));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run analysis
|
||||||
|
try {
|
||||||
|
compareVariables();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error during analysis:', error.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
33
core/.build/copy-libs.mjs
Normal file
33
core/.build/copy-libs.mjs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
import { existsSync, mkdirSync, lstatSync } from 'fs'
|
||||||
|
import { emptyDirSync, copySync } from 'fs-extra/esm'
|
||||||
|
import libs from '../libs.json' with { type: 'json' }
|
||||||
|
import { fileURLToPath } from 'url'
|
||||||
|
import { join, dirname } from 'node:path';
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
emptyDirSync(join(__dirname, '..', 'dist/libs'))
|
||||||
|
|
||||||
|
for(const name in libs) {
|
||||||
|
const { npm } = libs[name]
|
||||||
|
|
||||||
|
if (npm) {
|
||||||
|
const from = join(__dirname, '..', `node_modules/${npm}`)
|
||||||
|
const to = join(__dirname, '..', `dist/libs/${npm}`)
|
||||||
|
|
||||||
|
// create dir in dist/libs
|
||||||
|
if (!existsSync(to)) {
|
||||||
|
mkdirSync(to, { recursive: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
copySync(from, to, {
|
||||||
|
dereference: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(`Successfully copied ${npm}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
107
core/.build/generate-sri.js
Normal file
107
core/.build/generate-sri.js
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
const crypto = require('node:crypto');
|
||||||
|
const fs = require('node:fs');
|
||||||
|
const path = require('node:path');
|
||||||
|
const sh = require('shelljs');
|
||||||
|
|
||||||
|
sh.config.fatal = true
|
||||||
|
|
||||||
|
const configFile = path.join(__dirname, '../../shared/data/sri.json')
|
||||||
|
|
||||||
|
const files = [
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler.min.css',
|
||||||
|
configPropertyName: 'css'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler.rtl.min.css',
|
||||||
|
configPropertyName: 'css-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-flags.min.css',
|
||||||
|
configPropertyName: 'css-flags'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-flags.rtl.min.css',
|
||||||
|
configPropertyName: 'css-flags-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-marketing.min.css',
|
||||||
|
configPropertyName: 'css-marketing'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-marketing.rtl.min.css',
|
||||||
|
configPropertyName: 'css-marketing-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-payments.min.css',
|
||||||
|
configPropertyName: 'css-payments'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-payments.rtl.min.css',
|
||||||
|
configPropertyName: 'css-payments-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-props.min.css',
|
||||||
|
configPropertyName: 'css-props'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-props.rtl.min.css',
|
||||||
|
configPropertyName: 'css-props-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-themes.min.css',
|
||||||
|
configPropertyName: 'css-themes'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-themes.rtl.min.css',
|
||||||
|
configPropertyName: 'css-themes-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-socials.min.css',
|
||||||
|
configPropertyName: 'css-socials'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-socials.rtl.min.css',
|
||||||
|
configPropertyName: 'css-socials-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-vendors.min.css',
|
||||||
|
configPropertyName: 'css-vendors'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-vendors.rtl.min.css',
|
||||||
|
configPropertyName: 'css-vendors-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/js/tabler.min.js',
|
||||||
|
configPropertyName: 'js'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/js/tabler-theme.min.js',
|
||||||
|
configPropertyName: 'js-theme'
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// file: 'dist/preview/css/demo.min.css',
|
||||||
|
// configPropertyName: 'demo-css'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// file: 'dist/preview/js/demo.min.js',
|
||||||
|
// configPropertyName: 'demo-js'
|
||||||
|
// },
|
||||||
|
]
|
||||||
|
|
||||||
|
for (const { file, configPropertyName } of files) {
|
||||||
|
fs.readFile(path.join(__dirname, '..', file), 'utf8', (error, data) => {
|
||||||
|
if (error) {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
|
||||||
|
const algorithm = 'sha384'
|
||||||
|
const hash = crypto.createHash(algorithm).update(data, 'utf8').digest('base64')
|
||||||
|
const integrity = `${algorithm}-${hash}`
|
||||||
|
|
||||||
|
console.log(`${configPropertyName}: ${integrity}`)
|
||||||
|
|
||||||
|
sh.sed('-i', new RegExp(`^(\\s+"${configPropertyName}":\\s+["'])\\S*(["'])`), `$1${integrity}$2`, configFile)
|
||||||
|
})
|
||||||
|
}
|
||||||
55
core/.build/import-fonts.mjs
Normal file
55
core/.build/import-fonts.mjs
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
import { existsSync, mkdirSync } from 'fs'
|
||||||
|
import { copySync } from 'fs-extra/esm'
|
||||||
|
import { fileURLToPath } from 'url'
|
||||||
|
import { join, dirname } from 'node:path'
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const fromDir = join(__dirname, '..', 'node_modules/geist/dist/fonts')
|
||||||
|
const toDir = join(__dirname, '..', 'fonts')
|
||||||
|
|
||||||
|
// Create fonts directory if it doesn't exist
|
||||||
|
if (!existsSync(toDir)) {
|
||||||
|
mkdirSync(toDir, { recursive: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy geist-mono fonts
|
||||||
|
const monoFrom = join(fromDir, 'geist-mono')
|
||||||
|
const monoTo = join(toDir, 'geist-mono')
|
||||||
|
|
||||||
|
if (existsSync(monoFrom)) {
|
||||||
|
if (!existsSync(monoTo)) {
|
||||||
|
mkdirSync(monoTo, { recursive: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
copySync(monoFrom, monoTo, {
|
||||||
|
dereference: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(`Successfully copied geist-mono fonts`)
|
||||||
|
} else {
|
||||||
|
console.warn(`Warning: geist-mono fonts not found at ${monoFrom}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy geist-sans fonts
|
||||||
|
const sansFrom = join(fromDir, 'geist-sans')
|
||||||
|
const sansTo = join(toDir, 'geist-sans')
|
||||||
|
|
||||||
|
if (existsSync(sansFrom)) {
|
||||||
|
if (!existsSync(sansTo)) {
|
||||||
|
mkdirSync(sansTo, { recursive: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
copySync(sansFrom, sansTo, {
|
||||||
|
dereference: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(`Successfully copied geist-sans fonts`)
|
||||||
|
} else {
|
||||||
|
console.warn(`Warning: geist-sans fonts not found at ${sansFrom}`)
|
||||||
|
}
|
||||||
|
|
||||||
15
core/.build/postcss.config.mjs
Normal file
15
core/.build/postcss.config.mjs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
export default context => {
|
||||||
|
return {
|
||||||
|
map: {
|
||||||
|
inline: false,
|
||||||
|
annotation: true,
|
||||||
|
sourcesContent: true
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
autoprefixer: {
|
||||||
|
cascade: false
|
||||||
|
},
|
||||||
|
rtlcss: context.env === 'RTL'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user