Compare commits
724 Commits
v11.0.1
...
d0aff1dda1
| Author | SHA1 | Date | |
|---|---|---|---|
| d0aff1dda1 | |||
| b01a227a1d | |||
| 686152e24e | |||
| 9f88ed4106 | |||
| 690d16f878 | |||
| da7bb3067a | |||
| 6d710c603e | |||
| cfbe081329 | |||
| 0d6597b64a | |||
| 7072e8bc8a | |||
| 866bf46871 | |||
| 449ebe65bb | |||
| d892714026 | |||
| a9528116e1 | |||
| 910dad6c51 | |||
| 1235dd92b8 | |||
| ce68dc18fc | |||
| 74e6b95a31 | |||
| 8b0d40f13a | |||
| 755b38c8cf | |||
| 55aa23b785 | |||
| c136756962 | |||
| 4c38753830 | |||
| 040f0cf464 | |||
| ea0e3478cd | |||
| 245f91eb1f | |||
| 19ea4b40cd | |||
| a6a8a8cf2a | |||
| 391a522900 | |||
| 03b49fb8c5 | |||
| 8b7a71c883 | |||
| 6cc3aa2b30 | |||
| 16cabcf2b5 | |||
| 76574d605b | |||
| ad592e99d4 | |||
| 4607d85457 | |||
| 05a75624de | |||
| 5415a8a13e | |||
| c72377a71b | |||
| 01ca34a148 | |||
| 84e8cd7696 | |||
| 1907db914e | |||
| afa130a3a5 | |||
| 405b750585 | |||
| 3652b4ec5a | |||
| d17058fbdb | |||
| be4c3632e2 | |||
| 7a32eb324e | |||
| 05f580d078 | |||
| 468fd85f65 | |||
| 071a7effc2 | |||
| 7ad2182c01 | |||
| 3041b42934 | |||
| 205d730cd9 | |||
| 49ef33cffc | |||
| 03e5667240 | |||
| cd5751df63 | |||
| b8f7bb77dd | |||
| 10a72b01cf | |||
| c24cb0919b | |||
| 49a4642ff3 | |||
| 78de18847f | |||
| d4b0f328f7 | |||
| b263e232c3 | |||
| 40dee65d0d | |||
| 4549344c27 | |||
| b142262fae | |||
| d84c70ad94 | |||
| f718532c8f | |||
| 157c79a56b | |||
| 9013516782 | |||
| cb671d00a8 | |||
| 4f01ce1670 | |||
| b3924e47d0 | |||
| 31e6c81a91 | |||
| 06b90a75d0 | |||
| 1e8b173d31 | |||
| cab3908a70 | |||
| 615abaf470 | |||
| cee267ba24 | |||
| 1c613e5e3f | |||
| 8b0584a6b9 | |||
| bf9b4cdc7b | |||
| bae8ecb72b | |||
| 3a8f82cc42 | |||
| 7b295f6e91 | |||
| 2b425fd2ea | |||
| 5605b5f6c0 | |||
| b404580499 | |||
|
|
5699f4f559 | ||
|
|
be765102ef | ||
|
|
71622502b4 | ||
|
|
84fd9c4012 | ||
|
|
7df0d47c08 | ||
|
|
2eec978ea9 | ||
|
|
1bdf4b1aa0 | ||
|
|
4bcd4ba072 | ||
|
|
88e92210ab | ||
|
|
18c94f71d1 | ||
|
|
ac215a1299 | ||
|
|
a1a4b3a1ca | ||
|
|
6513d44ace | ||
|
|
f82aa1081b | ||
|
|
7a103185f7 | ||
|
|
e872587e77 | ||
|
|
741b8c879c | ||
|
|
598fb1a8ae | ||
|
|
ef302f7681 | ||
|
|
c34168d30c | ||
|
|
1b0baeef2a | ||
|
|
a3fffc9579 | ||
|
|
724771ceee | ||
|
|
02bbc2d8f4 | ||
|
|
51c7956ecc | ||
|
|
74acaca2a9 | ||
|
|
b343e9060a | ||
|
|
7b836981ac | ||
|
|
6958f1cc6b | ||
|
|
2343d60a83 | ||
|
|
424c91b856 | ||
|
|
d659ad01b8 | ||
|
|
d45db1436f | ||
|
|
564787f713 | ||
|
|
19784450cc | ||
|
|
326f354c0a | ||
|
|
2ae34b9f55 | ||
|
|
1e8124fdd0 | ||
|
|
82b818553e | ||
|
|
9c7c11fb54 | ||
|
|
d2a991045b | ||
|
|
16ecaf73a7 | ||
|
|
a3a3b704a8 | ||
|
|
462e4e413d | ||
|
|
7fa70e6d56 | ||
|
|
ef277f4344 | ||
|
|
4bdcdce08a | ||
|
|
3bafd31eb3 | ||
|
|
6811b5b37f | ||
|
|
db891ebf6c | ||
|
|
b97e10500c | ||
|
|
f4d1ac38e8 | ||
|
|
21a102fc95 | ||
|
|
ff3046ed32 | ||
|
|
60f71b7fe7 | ||
|
|
2e7b85db2c | ||
| c3e5edab8b | |||
|
|
0b406a284b | ||
|
|
922cf8ab17 | ||
| d67a9ea2ff | |||
| 3bf359177a | |||
| e0ad3b5d03 | |||
| c10dda79fc | |||
| eeea696c67 | |||
| 0cbe68b174 | |||
| d759aeef47 | |||
| af8045eb22 | |||
| 183e996c64 | |||
|
|
fe69893d42 | ||
|
|
029d7de745 | ||
|
|
d488df6ebd | ||
|
|
7886aee44c | ||
|
|
03335c6ffe | ||
|
|
a096302967 | ||
|
|
f40da3fa60 | ||
|
|
7e5e789e7b | ||
|
|
0af9e0f148 | ||
|
|
097fbc3de9 | ||
|
|
639b4578e4 | ||
|
|
1e3e3258ce | ||
|
|
a7f9962e05 | ||
|
|
195545c70f | ||
|
|
c5be350f4b | ||
|
|
d6c6858516 | ||
|
|
1b8267d12c | ||
|
|
c35cd42072 | ||
|
|
05099a1921 | ||
|
|
ba672ce51a | ||
|
|
dce151f9d2 | ||
|
|
884bfc770f | ||
|
|
27808abf0a | ||
|
|
eaae7ac7f9 | ||
|
|
7f5e5d47aa | ||
|
|
7ff538a029 | ||
|
|
456ade46c6 | ||
|
|
c9c2c67dca | ||
|
|
a42591cf47 | ||
|
|
157202898c | ||
|
|
47958c949c | ||
|
|
a8cb79d3ec | ||
|
|
9e90725931 | ||
|
|
af74fb3305 | ||
|
|
a8ed5732f2 | ||
|
|
1087778e4b | ||
|
|
f19e65e684 | ||
|
|
4d394dfec0 | ||
|
|
605f1a6285 | ||
|
|
2d88831b79 | ||
|
|
bc0455bd2c | ||
|
|
37a50679ab | ||
|
|
837da757a1 | ||
|
|
af2532ff24 | ||
|
|
1e6ce0002f | ||
|
|
0f519699fa | ||
|
|
2c10462bc2 | ||
|
|
f08c86f831 | ||
|
|
31c878b942 | ||
|
|
6bc2148c1f | ||
|
|
450e8434b2 | ||
|
|
e5c8814527 | ||
|
|
1a232426d5 | ||
|
|
0435ceb0cb | ||
|
|
3ba1c40b96 | ||
|
|
3474a0a238 | ||
|
|
218908dd50 | ||
|
|
7743db993b | ||
|
|
79904057c1 | ||
|
|
84111a6546 | ||
|
|
8afa7c11f0 | ||
|
|
5f1eb0b08d | ||
|
|
b2e888f871 | ||
|
|
9301ce8840 | ||
|
|
30b5523288 | ||
|
|
0567d6067d | ||
|
|
f1508c4de7 | ||
|
|
7c574d6d29 | ||
|
|
c6a19c1577 | ||
|
|
33ebcb0a60 | ||
|
|
39b871d811 | ||
|
|
df0c96e6d7 | ||
|
|
0334e1ed51 | ||
|
|
e69e23b408 | ||
|
|
a197b80577 | ||
|
|
a0a5541512 | ||
|
|
92be0c50db | ||
|
|
1fba34e6fd | ||
|
|
235465d2ce | ||
|
|
3c78802c0e | ||
|
|
281fc93fb7 | ||
|
|
5418a7da5d | ||
|
|
7f4a20cff0 | ||
|
|
9a915f9175 | ||
|
|
4b8c96cc56 | ||
|
|
b89bd3eed8 | ||
|
|
0fdea50bb2 | ||
|
|
910afb9c04 | ||
|
|
72c4c7a89d | ||
|
|
a684b60000 | ||
|
|
27f9c7bb5a | ||
|
|
b3ae4fae13 | ||
|
|
04e556e74b | ||
|
|
43fb1c4098 | ||
|
|
5c774695ca | ||
|
|
71d788152d | ||
|
|
c7c69a54aa | ||
|
|
94a64fc99b | ||
|
|
2ca4da4e0e | ||
|
|
922f7bb455 | ||
|
|
af93e04fdc | ||
|
|
2f3a29b4e8 | ||
|
|
29d87936d9 | ||
|
|
2e141c1acd | ||
|
|
ab78a974bc | ||
|
|
184212cdf9 | ||
|
|
c9dba27358 | ||
|
|
a17230d48b | ||
|
|
76628f0154 | ||
|
|
e6465e00bc | ||
|
|
0248661069 | ||
|
|
c0cb65f0a7 | ||
|
|
5e4804fdbf | ||
|
|
b9fe6735fe | ||
|
|
ebe4084cff | ||
|
|
8a8f6ea62b | ||
|
|
8c5e945452 | ||
|
|
d739a211b2 | ||
|
|
95f5dd2c14 | ||
|
|
511e715b5b | ||
|
|
8d286024fc | ||
|
|
166b13ca60 | ||
|
|
df75012132 | ||
|
|
fa7e29cd8e | ||
|
|
e0452c0867 | ||
|
|
d51cbf1ab9 | ||
|
|
ee6426bfb1 | ||
|
|
c31e42df2b | ||
|
|
fdbe4815f9 | ||
|
|
45a7fa1b5d | ||
|
|
fa54037da6 | ||
|
|
ab6223c1ab | ||
|
|
71e1f1d13a | ||
|
|
d0631488fd | ||
|
|
87c7768ec1 | ||
|
|
5e8202f9ae | ||
|
|
1beb7d56dc | ||
|
|
738b311f83 | ||
|
|
98dfc29524 | ||
|
|
a4e6aaf464 | ||
|
|
4aac87b712 | ||
|
|
e7e8210d10 | ||
|
|
50a542f212 | ||
|
|
7deab2b620 | ||
|
|
63be2f5e29 | ||
|
|
fc1776b640 | ||
|
|
2d81967a06 | ||
|
|
70914ec1ca | ||
|
|
7443653e05 | ||
|
|
984fc22c28 | ||
|
|
6e16a56b31 | ||
|
|
18f212b1b9 | ||
|
|
f61185fcd6 | ||
|
|
0b195b48fa | ||
|
|
3cbb44371a | ||
|
|
dd5616b283 | ||
|
|
4ed3130e58 | ||
|
|
0da11be35b | ||
|
|
b3ed9bb568 | ||
|
|
2e9ff8fc04 | ||
|
|
a59b85b51c | ||
|
|
ae18161548 | ||
|
|
80b5094f0c | ||
|
|
c87373b577 | ||
|
|
1fc4986a8b | ||
|
|
fd67da1909 | ||
|
|
39a49dfc5d | ||
|
|
bc63ea2a5a | ||
|
|
1056de9ba4 | ||
|
|
019a23280d | ||
|
|
7dc27400a4 | ||
|
|
2d1473191d | ||
|
|
d3b6f4edea | ||
|
|
e4680142a4 | ||
|
|
f31847299a | ||
|
|
a9077ece4a | ||
|
|
df7f99c6a7 | ||
|
|
6d5ccf4863 | ||
|
|
3406be04d4 | ||
|
|
be9d47dfdb | ||
|
|
e63a497b23 | ||
|
|
c0acadae15 | ||
|
|
024b10591f | ||
|
|
a2974793cf | ||
|
|
2b9b1cc2ed | ||
|
|
5fe9e510ee | ||
|
|
438b58b037 | ||
|
|
f7eb797a0e | ||
|
|
e3058e64be | ||
|
|
ebe5699d98 | ||
|
|
8e27580a9b | ||
|
|
11e9ec258c | ||
|
|
95b395f20b | ||
|
|
8dd551070e | ||
|
|
6bf1ee4e6b | ||
|
|
a89ca1231b | ||
|
|
187cb00b33 | ||
|
|
387c73befd | ||
|
|
eb784f2393 | ||
|
|
91c2961a05 | ||
|
|
ec4ee98222 | ||
|
|
680d9e6fdc | ||
|
|
d640a77a76 | ||
|
|
0ad2225beb | ||
|
|
191d2b351a | ||
|
|
1528ff905d | ||
|
|
2c97c8a49d | ||
|
|
71b2635e0c | ||
|
|
4bd577b4e7 | ||
|
|
468822868d | ||
|
|
14071e6ea3 | ||
|
|
97e7e226e7 | ||
|
|
2616f89b60 | ||
|
|
933cd9ae3a | ||
|
|
a0f94fede0 | ||
|
|
21b58e701d | ||
|
|
896da27251 | ||
|
|
a1edd1f868 | ||
|
|
0ff1d51506 | ||
|
|
60aa380e46 | ||
|
|
9ac0ce59e2 | ||
|
|
760fcb5537 | ||
|
|
a1b61d9cf8 | ||
|
|
0c9cb73623 | ||
|
|
331257148c | ||
|
|
45dc4a87df | ||
|
|
5d9a35f246 | ||
|
|
ec4205c425 | ||
|
|
86f41c639d | ||
|
|
7ed24fce29 | ||
|
|
8dd82a0c22 | ||
|
|
5d5fa4cd59 | ||
|
|
d058becf5d | ||
|
|
60235ec55b | ||
|
|
776a38edfe | ||
|
|
0b7e6a43b7 | ||
|
|
fc0b58602a | ||
|
|
612aeeeef8 | ||
|
|
343116e0b0 | ||
|
|
a1a2869f7e | ||
|
|
091e113c3e | ||
|
|
1bd30dd4f4 | ||
|
|
439710567c | ||
|
|
f66da33bfd | ||
|
|
9f14a6328c | ||
|
|
d4d67b4a16 | ||
|
|
1734fa7ea6 | ||
|
|
273fe4ec82 | ||
|
|
a61962c159 | ||
|
|
7e916ae11a | ||
|
|
9e7555fa4e | ||
|
|
c313702570 | ||
|
|
1cf1d87243 | ||
|
|
f6a932f8bc | ||
|
|
caa903e080 | ||
|
|
93c5fc33bd | ||
|
|
b3e2b20e88 | ||
|
|
13364de168 | ||
|
|
47f2ce06fa | ||
|
|
a44781cdd7 | ||
|
|
eff82977e6 | ||
|
|
3308513e8e | ||
|
|
3695cb8cb4 | ||
|
|
3e9404e7c4 | ||
|
|
9ee6cd506d | ||
|
|
646c7479b7 | ||
|
|
183100d6f6 | ||
|
|
dcffd542fb | ||
|
|
ea84f283cb | ||
|
|
f06a909b0d | ||
|
|
936b703ec1 | ||
|
|
a11be240ce | ||
|
|
3e1a5af91a | ||
|
|
0501338ef5 | ||
|
|
6b3cb65e78 | ||
|
|
ca369148b0 | ||
|
|
a398431382 | ||
|
|
17b21bd10e | ||
|
|
a9111debbd | ||
|
|
c5411fa994 | ||
|
|
b51fe628f2 | ||
|
|
92083596e6 | ||
|
|
3e4c044a8e | ||
|
|
e51cdb856e | ||
|
|
357f2072b9 | ||
|
|
5e7dd11e98 | ||
|
|
eca9229113 | ||
|
|
b9d1a5912c | ||
|
|
0ade897d8a | ||
|
|
e4e996044e | ||
|
|
c8132c7087 | ||
|
|
9a514defdd | ||
|
|
1ce516f962 | ||
|
|
947580bded | ||
|
|
b26f4d949b | ||
|
|
6c76ae10d5 | ||
|
|
fca7d333af | ||
|
|
9efe8f65db | ||
|
|
5a64af4306 | ||
|
|
4cd56fc1a6 | ||
|
|
57d0f0f9ec | ||
|
|
b88b70fffc | ||
|
|
0be720795c | ||
|
|
7005ccfa97 | ||
|
|
ce1dbae0bc | ||
|
|
1a390a542c | ||
|
|
922ec424d7 | ||
|
|
b9183e3c12 | ||
|
|
1e2b668408 | ||
|
|
8d47d0431b | ||
|
|
4c12158efc | ||
|
|
decc9ac9af | ||
|
|
3da4e89f5d | ||
|
|
f7fe7f1d55 | ||
|
|
4efaf40713 | ||
|
|
f514a58132 | ||
|
|
a2d5a5771f | ||
|
|
a1db502e58 | ||
|
|
c9a9e00cf3 | ||
|
|
757f5c7a19 | ||
|
|
b911b07efb | ||
|
|
be4c81fb7a | ||
|
|
9a82b82388 | ||
|
|
0ed9ab724f | ||
|
|
63af5bb9a1 | ||
|
|
ff9d53bf26 | ||
|
|
4e122d8dde | ||
|
|
cc4cd9c277 | ||
|
|
1dd9d6880e | ||
|
|
ba4e3964f4 | ||
|
|
690d25fcdb | ||
|
|
c3ba736e6c | ||
|
|
679fced7cd | ||
|
|
959e8932ea | ||
|
|
0bc6c1e9f9 | ||
|
|
37a64c0e98 | ||
|
|
4731a1ca9f | ||
|
|
f7c711971c | ||
|
|
925c1bbb67 | ||
|
|
4fac7164cf | ||
|
|
c135401671 | ||
|
|
1978035953 | ||
|
|
ad40b5b0c6 | ||
|
|
33fd5bb943 | ||
|
|
255e27d1e4 | ||
|
|
24feb1fed2 | ||
|
|
9ceb984167 | ||
|
|
b2aecae851 | ||
|
|
1492cfa0bb | ||
|
|
c8b3023fbe | ||
|
|
fa79947b8b | ||
|
|
e57ee3b9d6 | ||
|
|
2a9390e287 | ||
|
|
5fa9e683e1 | ||
|
|
e6159d8c76 | ||
|
|
f9b0404c57 | ||
|
|
1be3a07fdc | ||
|
|
e0a8834f58 | ||
|
|
2afa40f6c0 | ||
|
|
2f8fa48957 | ||
|
|
97dd535934 | ||
|
|
fe6773638b | ||
|
|
5d7d1fe8ee | ||
|
|
737f811bbe | ||
|
|
61f8841d7d | ||
|
|
00c68bb672 | ||
|
|
6df9d891cb | ||
|
|
ea4291bd39 | ||
|
|
936c887a5d | ||
|
|
c4a49d1bbc | ||
|
|
231f59aa4a | ||
|
|
8092831c01 | ||
|
|
474a2d848a | ||
|
|
cf1aa77582 | ||
|
|
588d48c21d | ||
|
|
6446217d97 | ||
|
|
de0da1f85e | ||
|
|
e8088a066b | ||
|
|
b6d41d13fb | ||
|
|
8bcee54008 | ||
|
|
1121ddb920 | ||
|
|
523d668b2d | ||
|
|
d88548cb4a | ||
|
|
592f78f24d | ||
|
|
d01d1a09e3 | ||
|
|
4e44cb3c17 | ||
|
|
821bf4bb61 | ||
|
|
07924269cd | ||
|
|
70647fb284 | ||
|
|
c488744119 | ||
|
|
7fd70d6fc8 | ||
|
|
918c9992d2 | ||
|
|
5b389077ea | ||
|
|
46766af486 | ||
|
|
e1d70b90ef | ||
|
|
a8838f486b | ||
|
|
de3b251fd1 | ||
|
|
194802e893 | ||
|
|
50f4e6c8dc | ||
|
|
62b5ba6faf | ||
|
|
86d7459f78 | ||
|
|
b7d60eb833 | ||
|
|
bc6fd7352d | ||
|
|
fbe0a90c16 | ||
|
|
0d134643b9 | ||
|
|
844d42335f | ||
|
|
62d8c6f2a5 | ||
|
|
a441f15204 | ||
|
|
a9d2541632 | ||
|
|
3585d02f43 | ||
|
|
99b2cde397 | ||
|
|
120005bcef | ||
|
|
d9652abf98 | ||
|
|
bae7a79b72 | ||
|
|
769a0ef744 | ||
|
|
f796f1cde7 | ||
|
|
20a6e59f65 | ||
|
|
4f2980a210 | ||
|
|
28b4dec791 | ||
|
|
4f7ff8a600 | ||
|
|
0278cf0155 | ||
|
|
6c702b0921 | ||
|
|
53abe14942 | ||
|
|
5c6bd4aa97 | ||
|
|
ab23669164 | ||
|
|
b3f046ddfa | ||
|
|
104e4c93f4 | ||
|
|
009aa93efb | ||
|
|
b22a371cd5 | ||
|
|
230f194855 | ||
|
|
28710faf2f | ||
|
|
b912090139 | ||
|
|
13b0875bdc | ||
|
|
f1cb3a1ef0 | ||
|
|
0984d82b36 | ||
|
|
0eb23162b3 | ||
|
|
cc349672ca | ||
|
|
9cce28990f | ||
|
|
fe6875f0ed | ||
|
|
e3541fb445 | ||
|
|
dbabd4387a | ||
|
|
ede8c3177b | ||
|
|
e8748173d9 | ||
|
|
fd54c09c8f | ||
|
|
04362989b6 | ||
|
|
33c81a9c72 | ||
|
|
f4d834214a | ||
|
|
a9331c54b3 | ||
|
|
175066e992 | ||
|
|
44a7ad3991 | ||
|
|
ecf1a237c1 | ||
|
|
107747f4a8 | ||
|
|
5c318f9494 | ||
|
|
85db2c777a | ||
|
|
a7a1224427 | ||
|
|
8891658a7a | ||
|
|
3d5932f4d6 | ||
|
|
2fa7546606 | ||
|
|
b04abbdf7d | ||
|
|
c93369b912 | ||
|
|
443057361c | ||
|
|
e6c7d53bbc | ||
|
|
634aec9641 | ||
|
|
d3d45d5901 | ||
|
|
157a6c90e0 | ||
|
|
cd32145f08 | ||
|
|
5ab95bdf3a | ||
|
|
dd36298877 | ||
|
|
1cb9268040 | ||
|
|
10eba0fc2d | ||
|
|
473729c4ea | ||
|
|
634c03d589 | ||
|
|
a474de5b88 | ||
|
|
ab8b4a7d0d | ||
|
|
57024f1b86 | ||
|
|
74df7c3410 | ||
|
|
d360a3bb02 | ||
|
|
3ffe1728e7 | ||
|
|
72d5c876ec | ||
|
|
668a5a1293 | ||
|
|
b1eedf3511 | ||
|
|
a2d696f245 | ||
|
|
9736e9ad7c | ||
|
|
388034bc1e | ||
|
|
0c1eaa06ef | ||
|
|
e4bf9ade1a | ||
|
|
56e574d507 | ||
|
|
081706adb8 | ||
|
|
a573f51ac3 | ||
|
|
50a132a16a | ||
|
|
a182a0d966 | ||
|
|
940ad3fd86 | ||
|
|
152e702abf | ||
|
|
6b2acff9f4 | ||
|
|
4b3d5d826a | ||
|
|
404e2fecd9 | ||
|
|
56b4f01d3d | ||
|
|
b6987b3fd9 | ||
|
|
fa730592c0 | ||
|
|
fe316adf6f | ||
|
|
63c720c483 | ||
|
|
4254a94afb | ||
|
|
b3dcb3448a | ||
|
|
2d4d1ad89e | ||
|
|
8c0d29fa55 | ||
|
|
8831c597ab | ||
|
|
cec22c69bf | ||
|
|
4fafb7044d | ||
|
|
6faecaf706 | ||
|
|
6cf227479b | ||
|
|
50528164e4 | ||
|
|
908f11010e | ||
|
|
df2791024e | ||
|
|
306b5be2b7 | ||
|
|
21d54dc256 | ||
|
|
3d347dd85a | ||
|
|
cb1dfe1605 | ||
|
|
be9e3ee762 | ||
|
|
640e865311 | ||
|
|
e80cf7bf90 | ||
|
|
74bdc798fe | ||
|
|
c796ea0b06 | ||
|
|
ea0a20a3d9 | ||
|
|
15b19d7c09 | ||
|
|
e026603be9 | ||
|
|
cb3cc33128 | ||
|
|
5346177700 | ||
|
|
09e4829f29 | ||
|
|
dd1eacdb81 | ||
|
|
ab6485eca2 | ||
|
|
507cc847ca | ||
|
|
8d2a3c5e11 | ||
|
|
44690d6a03 | ||
|
|
2a42854b59 | ||
|
|
e98c1e1f45 | ||
|
|
3b35e92690 | ||
|
|
049d8fe0a7 | ||
|
|
e4a9fe29d6 | ||
|
|
71b90146bb | ||
|
|
bb45b9fd23 | ||
|
|
b9015dec66 | ||
|
|
921d0cc1a8 | ||
|
|
fc3d89ab98 | ||
|
|
314ccb4c4c | ||
|
|
2cf78e2e62 | ||
|
|
c80b0072db | ||
|
|
9df26877b0 | ||
|
|
2b4b0024f7 | ||
|
|
b17e5b7f3c | ||
|
|
bf1304af1e | ||
|
|
8a454282c4 | ||
|
|
de753ad843 | ||
|
|
a5eed22027 | ||
|
|
e9417b86cd | ||
|
|
f7584d07b9 | ||
|
|
6c472480d0 | ||
|
|
a031f8d17a | ||
|
|
33776e9317 | ||
|
|
79fb1ee5de | ||
|
|
d208fa4b4e | ||
|
|
66c69063e2 | ||
|
|
ce754b88df | ||
|
|
05c853ea88 | ||
|
|
505fa357a7 | ||
|
|
1813c82cc0 | ||
|
|
0283131d00 | ||
|
|
d956e54c85 |
@@ -1,17 +1,25 @@
|
|||||||
# editorconfig.org
|
|
||||||
|
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
end_of_line = lf
|
|
||||||
charset = utf-8
|
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
insert_final_newline = true
|
quote_type = single
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
[*.php]
|
[*.php]
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.blade.php]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
[resources/views/**.php]
|
[resources/views/**.php]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[index.php]
|
||||||
|
indent_size = 2
|
||||||
|
|||||||
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -1,3 +1,2 @@
|
|||||||
/.github export-ignore
|
|
||||||
/.gitattributes export-ignore
|
/.gitattributes export-ignore
|
||||||
/.travis.yml export-ignore
|
/.github export-ignore
|
||||||
|
|||||||
1
.github/CONTRIBUTING.md
vendored
1
.github/CONTRIBUTING.md
vendored
@@ -1 +0,0 @@
|
|||||||
Please read [Contributing to Roots Projects](https://github.com/roots/guidelines/blob/master/CONTRIBUTING.md)
|
|
||||||
62
.github/ISSUE_TEMPLATE.md
vendored
62
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,62 +0,0 @@
|
|||||||
## Submit a feature request or bug report
|
|
||||||
|
|
||||||
- [ ] I've read the [guidelines for Contributing to Roots Projects](https://github.com/roots/guidelines/blob/master/CONTRIBUTING.md)
|
|
||||||
- [ ] This is a feature request
|
|
||||||
- [ ] This is a bug report
|
|
||||||
- [ ] This request isn't a duplicate of an [existing issue](https://github.com/roots/sage/issues)
|
|
||||||
- [ ] I've read the [docs](https://roots.io/sage/docs) and [NPM Debugging Guidelines post](https://discourse.roots.io/t/npm-debugging-guidelines-failed-npm-install-bower-install-or-gulp-build-read-this/3060) and followed them (if applicable)
|
|
||||||
- [ ] This is not a personal support request that should be posted on the [Roots Discourse](https://discourse.roots.io/c/sage) forums
|
|
||||||
|
|
||||||
<!-- Replace any `X` with your information. -->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**What is the current behavior?**
|
|
||||||
|
|
||||||
X
|
|
||||||
|
|
||||||
|
|
||||||
**What is the expected or desired behavior?**
|
|
||||||
|
|
||||||
X
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Bug report
|
|
||||||
|
|
||||||
<!-- (delete this section if not applicable) -->
|
|
||||||
|
|
||||||
**Please provide steps to reproduce, including full log output:**
|
|
||||||
|
|
||||||
X
|
|
||||||
|
|
||||||
**Please describe your local environment:**
|
|
||||||
|
|
||||||
WordPress version: X
|
|
||||||
|
|
||||||
OS: X
|
|
||||||
|
|
||||||
NPM/Node version: X
|
|
||||||
|
|
||||||
**Where did the bug happen? Development or remote servers?**
|
|
||||||
|
|
||||||
X
|
|
||||||
|
|
||||||
|
|
||||||
**Is there a related [Discourse](https://discourse.roots.io/) thread or were any utilized (please link them)?**
|
|
||||||
|
|
||||||
X
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Feature Request
|
|
||||||
|
|
||||||
<!-- (delete this section if not applicable) -->
|
|
||||||
|
|
||||||
**Please provide use cases for changing the current behavior:**
|
|
||||||
|
|
||||||
X
|
|
||||||
|
|
||||||
**Other relevant information:**
|
|
||||||
|
|
||||||
X
|
|
||||||
23
.github/labeler.yml
vendored
Normal file
23
.github/labeler.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
build:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- vite.config.js
|
||||||
|
dependencies:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- package-lock.json
|
||||||
|
javascript:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- resources/js/**/*.js
|
||||||
|
php:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- functions.php
|
||||||
|
- app/**/*.php
|
||||||
|
- resources/views/**/*.php
|
||||||
|
views:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- index.php
|
||||||
|
- resources/views/**/*.php
|
||||||
23
.github/renovate.json
vendored
Normal file
23
.github/renovate.json
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"baseBranches": [
|
||||||
|
"main"
|
||||||
|
],
|
||||||
|
"commitMessageAction": "⬆️ Bump",
|
||||||
|
"commitMessageTopic": "{{depName}}",
|
||||||
|
"extends": [
|
||||||
|
"config:recommended",
|
||||||
|
"schedule:weekly"
|
||||||
|
],
|
||||||
|
"rangeStrategy": "bump",
|
||||||
|
"packageRules": [
|
||||||
|
{
|
||||||
|
"matchUpdateTypes": [
|
||||||
|
"minor",
|
||||||
|
"patch",
|
||||||
|
"pin"
|
||||||
|
],
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timezone": "America/Detroit"
|
||||||
|
}
|
||||||
18
.github/workflows/discourse.yml
vendored
Normal file
18
.github/workflows/discourse.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: Post release topic on Discourse
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
post:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: roots/discourse-topic-github-release-action@main
|
||||||
|
with:
|
||||||
|
discourse-api-key: ${{ secrets.DISCOURSE_RELEASES_API_KEY }}
|
||||||
|
discourse-base-url: ${{ secrets.DISCOURSE_BASE_URL }}
|
||||||
|
discourse-author-username: ben
|
||||||
|
discourse-category: 11
|
||||||
|
discourse-tags:
|
||||||
|
releases
|
||||||
11
.github/workflows/labeler.yml
vendored
Normal file
11
.github/workflows/labeler.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
name: "Pull Request Labeler"
|
||||||
|
on:
|
||||||
|
- pull_request_target
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
triage:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/labeler@v5
|
||||||
|
with:
|
||||||
|
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
91
.github/workflows/main.yml
vendored
Normal file
91
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
name: Main
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
node:
|
||||||
|
name: Node ${{ matrix.node }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: "!contains(github.event.head_commit.message, '[ci skip]')"
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node: ['20']
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout the project
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup the Node ${{ matrix.node }} environment on ${{ runner.os }}
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node }}
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Install dependencies using npm
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Build and compile assets
|
||||||
|
run: |
|
||||||
|
npm run build
|
||||||
|
cat public/build/manifest.json
|
||||||
|
|
||||||
|
- name: Validate theme.json
|
||||||
|
run: |
|
||||||
|
THEME_JSON="public/build/assets/theme.json"
|
||||||
|
|
||||||
|
if [ ! -f "$THEME_JSON" ]; then
|
||||||
|
echo "❌ theme.json not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
jq -e '
|
||||||
|
(.settings.color.palette | length > 0) and
|
||||||
|
(.settings.typography.fontFamilies | length > 0) and
|
||||||
|
(.settings.typography.fontSizes | length > 0)
|
||||||
|
' "$THEME_JSON" 2>&1 || {
|
||||||
|
echo "❌ Invalid theme.json structure or missing required values"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
php:
|
||||||
|
name: PHP ${{ matrix.php }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: "!contains(github.event.head_commit.message, '[ci skip]')"
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
php: ['8.2']
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout the project
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup the PHP ${{ matrix.php }} environment on ${{ runner.os }}
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
coverage: xdebug
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Restore the Composer cache directory
|
||||||
|
id: composercache
|
||||||
|
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ${{ steps.composercache.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
|
restore-keys: ${{ runner.os }}-${{ matrix.php }}-composer-
|
||||||
|
|
||||||
|
- name: Install Composer dependencies
|
||||||
|
run: composer install --no-progress --prefer-dist --optimize-autoloader --no-suggest
|
||||||
|
|
||||||
|
- name: Run Pint
|
||||||
|
run: vendor/bin/pint --test
|
||||||
14
.gitignore
vendored
14
.gitignore
vendored
@@ -1,10 +1,6 @@
|
|||||||
# Include your project-specific ignores in this file
|
/node_modules
|
||||||
# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files
|
/vendor
|
||||||
.cache-loader
|
/public/*
|
||||||
dist
|
!/public/.gitkeep
|
||||||
bower_components
|
.env
|
||||||
node_modules
|
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
|
||||||
vendor
|
|
||||||
resources/assets/config-local.json
|
|
||||||
|
|||||||
40
.travis.yml
40
.travis.yml
@@ -1,40 +0,0 @@
|
|||||||
language: php
|
|
||||||
sudo: false
|
|
||||||
dist: trusty
|
|
||||||
php:
|
|
||||||
- 7.1
|
|
||||||
- 7.0
|
|
||||||
- nightly
|
|
||||||
|
|
||||||
env:
|
|
||||||
- TRAVIS_NODE_VERSION="6"
|
|
||||||
- TRAVIS_NODE_VERSION="7"
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
fast_finish: true
|
|
||||||
allow_failures:
|
|
||||||
- php: nightly
|
|
||||||
|
|
||||||
cache:
|
|
||||||
apt: true
|
|
||||||
directories:
|
|
||||||
- $HOME/.composer/cache
|
|
||||||
- $HOME/.yarn-cache
|
|
||||||
- vendor
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- composer self-update
|
|
||||||
- source ~/.nvm/nvm.sh && nvm install $TRAVIS_NODE_VERSION && nvm use $TRAVIS_NODE_VERSION
|
|
||||||
- export PATH=$HOME/.yarn/bin:$PATH && travis_retry curl -o- -L https://yarnpkg.com/install.sh | bash
|
|
||||||
|
|
||||||
install:
|
|
||||||
- node -v && yarn -V
|
|
||||||
- travis_retry yarn
|
|
||||||
- composer install -o --prefer-dist --no-interaction
|
|
||||||
|
|
||||||
script:
|
|
||||||
- yarn run test
|
|
||||||
- yarn run build
|
|
||||||
- yarn run rmdist
|
|
||||||
- yarn run "build:production"
|
|
||||||
- composer test
|
|
||||||
569
CHANGELOG.md
569
CHANGELOG.md
@@ -1,569 +0,0 @@
|
|||||||
### HEAD
|
|
||||||
* Update dependencies, support `config-local.json`, implement autoload system for styles/scripts, use `roots/sage-installer`, use `roots/sage-lib` ([#1919](https://github.com/roots/sage/pull/1919))
|
|
||||||
* Add soberwp/controller ([#1903](https://github.com/roots/sage/pull/1903))
|
|
||||||
* Change syntax of template call to match other files in views ([#1908](https://github.com/roots/sage/pull/1908))
|
|
||||||
* Add Tachyons as a CSS framework option ([#1867](https://github.com/roots/sage/pull/1867))
|
|
||||||
* Remove post format reference in template call ([#1904](https://github.com/roots/sage/pull/1904))
|
|
||||||
* Update inline documentation to reflect correct theme file locations ([#1890](https://github.com/roots/sage/pull/1890))
|
|
||||||
* Optimize CSS Assets safe = true ([#1901](https://github.com/roots/sage/pull/1901))
|
|
||||||
* Update Autoprefixer and standardize browserlist location ([#1899](https://github.com/roots/sage/pull/1899))
|
|
||||||
* Do not redirect for WP-CLI ([#1891](https://github.com/roots/sage/pull/1891))
|
|
||||||
* Illuminate: container make with parameters ([#1888](https://github.com/roots/sage/pull/1888))
|
|
||||||
* Add Stylelint for linting stylesheets ([#1885](https://github.com/roots/sage/pull/1885))
|
|
||||||
|
|
||||||
### 9.0.0-beta.3: April 21st, 2017
|
|
||||||
* Move required theme files to `sage/resources` ([#1877](https://github.com/roots/sage/pull/1877))
|
|
||||||
* Move `src/` to `app/` ([#1868](https://github.com/roots/sage/pull/1868))
|
|
||||||
* Move `templates/` to `resources/views/`, move `assets/` to `resources/assets/`, rename `base.blade.php` to `app.blade.php` ([#1864](https://github.com/roots/sage/pull/1864))
|
|
||||||
* Add option to configure build settings ([#1822](https://github.com/roots/sage/pull/1822))
|
|
||||||
* Add support for HTML injection ([#1817](https://github.com/roots/sage/pull/1817))
|
|
||||||
* Add Tachyons as a CSS framework option ([#1867](https://github.com/roots/sage/pull/1867))
|
|
||||||
|
|
||||||
### 9.0.0-beta.2: January 19th, 2017
|
|
||||||
* Fix Browersync ([#1815](https://github.com/roots/sage/pull/1815))
|
|
||||||
* Add option to select CSS framework, add Foundation as an option ([#1813](https://github.com/roots/sage/pull/1813))
|
|
||||||
* Add option to add Font Awesome ([#1812](https://github.com/roots/sage/pull/1812))
|
|
||||||
* Add option to change theme file headers ([#1811](https://github.com/roots/sage/pull/1811))
|
|
||||||
* Add option to remove Bootstrap ([#1810](https://github.com/roots/sage/pull/1810))
|
|
||||||
* Remove Font Awesome ([#1809](https://github.com/roots/sage/pull/1809))
|
|
||||||
* Remove grid defaults ([#1808](https://github.com/roots/sage/pull/1808))
|
|
||||||
* Fix for `publicPath` ([#1806](https://github.com/roots/sage/pull/1806))
|
|
||||||
* Update clean task name ([#1800](https://github.com/roots/sage/pull/1800))
|
|
||||||
* Allow browser versions to be configured in `config.json` ([#1798](https://github.com/roots/sage/pull/1798))
|
|
||||||
* Use stock ESLint ([#1796](https://github.com/roots/sage/pull/1796))
|
|
||||||
|
|
||||||
### 9.0.0-beta.1: January 10th, 2017
|
|
||||||
* Update to Bootstrap 4 Alpha 6 ([#1792](https://github.com/roots/sage/pull/1792))
|
|
||||||
* Add Blade ([#1765](https://github.com/roots/sage/pull/1765) and [#1777](https://github.com/roots/sage/pull/1777))
|
|
||||||
* Remove sidebar defaults ([#1760](https://github.com/roots/sage/pull/1760))
|
|
||||||
* Remove post formats ([#1759](https://github.com/roots/sage/pull/1759))
|
|
||||||
|
|
||||||
### 9.0.0-alpha.4: November 16th, 2016
|
|
||||||
* Use new webpack api schema ([8ac5f15](https://github.com/roots/sage/commit/e6e60aa))
|
|
||||||
* Update dependencies ([70ebba7](https://github.com/roots/sage/commit/70ebba7))
|
|
||||||
* Variables organization ([8ac5f15](https://github.com/roots/sage/commit/8ac5f15))
|
|
||||||
* Use `$.fn.ready()` (reverts [724d550](https://github.com/roots/sage/commit/724d550)) ([e7fccbe](https://github.com/roots/sage/commit/e7fccbe))
|
|
||||||
* Theme activation updates 'stylesheet' option instead of 'template' ([fb19145](https://github.com/roots/sage/commit/fb19145))
|
|
||||||
* Reorganize and refactor build routine ([8c9ba05](https://github.com/roots/sage/commit/8c9ba05))
|
|
||||||
* Switch assets manifest plugin ([c1bb2b3](https://github.com/roots/sage/commit/c1bb2b3))
|
|
||||||
* Add images to assets manifest ([c49793c](https://github.com/roots/sage/commit/c49793c))
|
|
||||||
* Switch from babel to buble ([0d38ab8](https://github.com/roots/sage/commit/0d38ab8))
|
|
||||||
* Update dependencies & webpack compatibility ([eae52fd](https://github.com/roots/sage/commit/eae52fd))
|
|
||||||
* Use http by default (not https) to be consistent with Trellis ([e6f2f49](https://github.com/roots/sage/commit/e6f2f49))
|
|
||||||
|
|
||||||
### 9.0.0-alpha.3: September 11th, 2016
|
|
||||||
* Fix webpack HMR ([#1713](https://github.com/roots/sage/issues/1713))
|
|
||||||
* Remove minor edits from CHANGELOG.md ([3516629](https://github.com/roots/sage/commit/3516629))
|
|
||||||
|
|
||||||
### 9.0.0-alpha.2: September 4th, 2016
|
|
||||||
* Refactor build routine ([#1703](https://github.com/roots/sage/pull/1703))
|
|
||||||
* Update `_grid.scss` to use `@include make-col-ready()` mixin ([#1706](https://github.com/roots/sage/pull/1706))
|
|
||||||
|
|
||||||
### 9.0.0-alpha.1: August 30th, 2016
|
|
||||||
* Move assets found in `node_modules/` to `dist/vendor`, simpler `assets/config.json` ([#1697](https://github.com/roots/sage/pull/1697))
|
|
||||||
* Set dynamically absolute public path ([#1696](https://github.com/roots/sage/pull/1696))
|
|
||||||
* Load Tether ([#1686](https://github.com/roots/sage/pull/1686))
|
|
||||||
* Squash asset pipeline bugs ([4d58f88](https://github.com/roots/sage/commit/4d58f88))
|
|
||||||
* Update dependencies, incl Bootstrap 4 alpha 3 ([447c24d](https://github.com/roots/sage/commit/447c24d))
|
|
||||||
* Fix path to stylesheet in `add_editor_style` ([#1684](https://github.com/roots/sage/pull/1684))
|
|
||||||
* Update required Node.js version ([72b2d89](https://github.com/roots/sage/commit/72b2d89))
|
|
||||||
* Router doesn't require jQuery, use default params ([339cc8e](https://github.com/roots/sage/commit/339cc8e))
|
|
||||||
* Fix display of theme name in Customizer ([3425386](https://github.com/roots/sage/commit/3425386))
|
|
||||||
* Convert scripts to ES6 ([f34af48](https://github.com/roots/sage/commit/f34af48))
|
|
||||||
* Refactor functions.php ([eae36be](https://github.com/roots/sage/commit/eae36be))
|
|
||||||
* Rework template wrapper, bring back template_part() ([#1678](https://github.com/roots/sage/pull/1678))
|
|
||||||
* Remove unused static variable in Wrapper ([9bfdd5a](https://github.com/roots/sage/commit/9bfdd5a))
|
|
||||||
* Remove `path.extname()` check ([#1673](https://github.com/roots/sage/pull/1673))
|
|
||||||
* Updated to align with the Bootstrap 4 docs ([#1667](https://github.com/roots/sage/pull/1667))
|
|
||||||
* Add `npm prune` to Travis CI ([#1663](https://github.com/roots/sage/pull/1663))
|
|
||||||
* Bootstrap NPM ^4.0.0-alpha.2 ([#1650](https://github.com/roots/sage/pull/1650))
|
|
||||||
* Fix Bootstrap 4 styles ([#1642](https://github.com/roots/sage/pull/1642))
|
|
||||||
* Fix autoloader load order issue when including Sage 9 via composer.json in Bedrock ([#1628](https://github.com/roots/sage/pull/1628))
|
|
||||||
* `is_page_template()` requires the name of the subfolder ([#1626](https://github.com/roots/sage/pull/1626))
|
|
||||||
* Webpack config improvements ([#1629](https://github.com/roots/sage/pull/1629))
|
|
||||||
* Webpack implementation improvements ([#1627](https://github.com/roots/sage/pull/1627))
|
|
||||||
* Webpack implementation ([#1625](https://github.com/roots/sage/pull/1625))
|
|
||||||
* Fix BS4 grid after their grid updates ([5551dde](https://github.com/roots/sage/commit/5551dde))
|
|
||||||
* Pass the correct template ([856a482](https://github.com/roots/sage/commit/856a482))
|
|
||||||
* Optimize travis a bit ([b42c425](https://github.com/roots/sage/commit/b42c425))
|
|
||||||
* Move single-post loop to single.php, closes #1582 ([6efa099](https://github.com/roots/sage/commit/6efa099))
|
|
||||||
* All function braces need to be on new line ([b491f76](https://github.com/roots/sage/commit/b491f76))
|
|
||||||
* Fix issue with WP loading wrong index.php ([9e2917e](https://github.com/roots/sage/commit/9e2917e))
|
|
||||||
* Use 4 spaces for `src/*.php` ([fe659f4](https://github.com/roots/sage/commit/fe659f4))
|
|
||||||
* Use phpcs.xml for all rules ([246955c](https://github.com/roots/sage/commit/246955c))
|
|
||||||
* Conform to new rules ([6a4d3bd](https://github.com/roots/sage/commit/6a4d3bd))
|
|
||||||
* Create new phpcs rules ([2d02544](https://github.com/roots/sage/commit/2d02544))
|
|
||||||
* Remove Template class ([1df3fee](https://github.com/roots/sage/commit/1df3fee))
|
|
||||||
* Remove closure from sidebar registration ([12d6ac3](https://github.com/roots/sage/commit/12d6ac3))
|
|
||||||
* Remove sage.pot ([d4461fa](https://github.com/roots/sage/commit/d4461fa))
|
|
||||||
* Remove template_part, template_sidebar, temp sidebar fix ([abeea0f](https://github.com/roots/sage/commit/abeea0f))
|
|
||||||
* Update asset handles ([fa0e51f](https://github.com/roots/sage/commit/fa0e51f))
|
|
||||||
* Remove comment-reply JS ([d217ba6](https://github.com/roots/sage/commit/d217ba6))
|
|
||||||
* Update node in travis, remove unsupported php ([8712dc8](https://github.com/roots/sage/commit/8712dc8))
|
|
||||||
* Update dependencies, switch to eslint ([e51e41e](https://github.com/roots/sage/commit/e51e41e))
|
|
||||||
* Bootstrap 4 ([c9ef232](https://github.com/roots/sage/commit/c9ef232))
|
|
||||||
* Fix: page title not displaying ([9283bbb](https://github.com/roots/sage/commit/9283bbb))
|
|
||||||
* Rename interfaces, unset after unwrapping ([97906e9](https://github.com/roots/sage/commit/97906e9))
|
|
||||||
* Restructure theme, use autoloader ([9eaffa3](https://github.com/roots/sage/commit/9eaffa3a2d4df462dd8020a10551334208bd32a3))
|
|
||||||
|
|
||||||
### 8.5.0: September 20th, 2016
|
|
||||||
* Update installation instructions
|
|
||||||
* Update dependencies
|
|
||||||
* Update to Bootstrap 4.0.0-alpha.4 ([5eb01fd](https://github.com/roots/sage/commit/5eb01fd0319a7b6576e31579dc50e16b023abb74))
|
|
||||||
|
|
||||||
### 8.4.2: February 19th, 2016
|
|
||||||
* Add Composer vendor directory to gitignore ([#1618](https://github.com/roots/sage/issues/1618))
|
|
||||||
* Fix build test by removing trailing space ([#1617](https://github.com/roots/sage/issues/1617))
|
|
||||||
* Replace deprecated gulp-minify-css with gulp-cssnano ([#1610](https://github.com/roots/sage/issues/1610))
|
|
||||||
|
|
||||||
### 8.4.1: January 27th, 2016
|
|
||||||
* Add `composer.json` and update installation instructions ([#1583](https://github.com/roots/sage/issues/1583))
|
|
||||||
|
|
||||||
### 8.4.0: December 1st, 2015
|
|
||||||
* Update to Bootstrap 3.3.6 ([#1578](https://github.com/roots/sage/pull/1578))
|
|
||||||
* Remove unnecessary underscore ([#1577](https://github.com/roots/sage/pull/1577))
|
|
||||||
* Drop support for older browsers ([#1571](https://github.com/roots/sage/pull/1571))
|
|
||||||
* Add support for theme customizer ([#1573](https://github.com/roots/sage/pull/1573))
|
|
||||||
* Remove extraneous no-js ([#1562](https://github.com/roots/sage/pull/1562))
|
|
||||||
* Simplify/speed up editor style process ([#1560](https://github.com/roots/sage/pull/1560))
|
|
||||||
|
|
||||||
### 8.3.0: October 13th, 2015
|
|
||||||
* Setup organization ([#1558](https://github.com/roots/sage/pull/1558))
|
|
||||||
* Remove redundancy with WAI-ARIA in HTML ([#1557](https://github.com/roots/sage/pull/1557))
|
|
||||||
* Rename config.php to setup.php ([#1556](https://github.com/roots/sage/pull/1556))
|
|
||||||
* Move init.php to config.php ([#1555](https://github.com/roots/sage/pull/1555))
|
|
||||||
* Use Sass to style search form, remove search template ([#1545](https://github.com/roots/sage/pull/1545))
|
|
||||||
* Remove Modernizr ([#1541](https://github.com/roots/sage/pull/1541))
|
|
||||||
* Remove references to WP_ENV ([#1554](https://github.com/roots/sage/pull/1554))
|
|
||||||
* Use WP core's HTML5 gallery markup ([#1546](https://github.com/roots/sage/pull/1546))
|
|
||||||
* Use slash in handle names for theme CSS and JS ([#1537](https://github.com/roots/sage/pull/1537))
|
|
||||||
* Add compatibility with WooCommerce Multilingual plugin ([#1530](https://github.com/roots/sage/pull/1530))
|
|
||||||
* Remove ConditionalTagCheck class ([#1494](https://github.com/roots/sage/pull/1494))
|
|
||||||
* Add search templates ([#1459](https://github.com/roots/sage/issues/1459))
|
|
||||||
* Allow `debugger` statements in development JavaScript ([#1487](https://github.com/roots/sage/issues/1487))
|
|
||||||
|
|
||||||
### 8.2.1: May 7th, 2015
|
|
||||||
* Update BrowserSync ([#1457](https://github.com/roots/sage/issues/1457))
|
|
||||||
* Bump dependencies ([#1448](https://github.com/roots/sage/issues/1448))
|
|
||||||
* Allow revved files to resolve in development if they exist ([#1456](https://github.com/roots/sage/issues/1456))
|
|
||||||
* Disable advanced minification features to fix incorrect file path in compiled CSS ([#1452](https://github.com/roots/sage/issues/1452))
|
|
||||||
* Fix Glyphicon font path ([#1455](https://github.com/roots/sage/issues/1455))
|
|
||||||
|
|
||||||
### 8.2.0: April 29th, 2015
|
|
||||||
* Use Sass Bootstrap by default ([#1437](https://github.com/roots/sage/issues/1437))
|
|
||||||
* Remove nav walker and Bootstrap navbar ([#1427](https://github.com/roots/sage/issues/1427))
|
|
||||||
* Remove Bootstrap gallery ([#1421](https://github.com/roots/sage/issues/1421))
|
|
||||||
* Remove hardcoded feed link ([#1426](https://github.com/roots/sage/issues/1426))
|
|
||||||
* Move jQuery CDN feature to Soil ([#1422](https://github.com/roots/sage/issues/1422))
|
|
||||||
* Bump `gulp-load-plugins` to 0.10.0 ([#1419](https://github.com/roots/sage/issues/1419))
|
|
||||||
* Switch from [yargs](https://github.com/bcoe/yargs) to [minimist](https://github.com/substack/minimist) ([#1418](https://github.com/roots/sage/issues/1418))
|
|
||||||
* Remove `$content_width` ([#1417](https://github.com/roots/sage/issues/1417))
|
|
||||||
* Lowercase `X-UA-Compatible` ([#1409](https://github.com/roots/sage/issues/1409))
|
|
||||||
* Remove mention of Google Analytics from the config ([#1384](https://github.com/roots/sage/issues/1384))
|
|
||||||
|
|
||||||
### 8.1.1: March 31st, 2015
|
|
||||||
* Remove pleeease dependency in favor of vanilla gulp-autoprefixer and gulp-minify-css ([#1402](https://github.com/roots/sage/issues/1402))
|
|
||||||
* Fix `gulp --production` race condition ([#1398](https://github.com/roots/sage/issues/1398))
|
|
||||||
* Update to Bootstrap 3.3.4 ([#1387](https://github.com/roots/sage/issues/1387))
|
|
||||||
|
|
||||||
### 8.1.0: March 13th, 2015
|
|
||||||
* Move HTML5 Boilerplate's Google Analytics snippet to Soil ([#1382](https://github.com/roots/sage/issues/1382))
|
|
||||||
* Run `gulp build` if `bower.json` is changed ([#1378](https://github.com/roots/sage/issues/1378))
|
|
||||||
* Remove namespace from base.php ([#1372](https://github.com/roots/sage/issues/1372))
|
|
||||||
* Allow build directory to be customized ([#1352](https://github.com/roots/sage/issues/1352), [#1366](https://github.com/roots/sage/issues/1366))
|
|
||||||
* Update ConditionalTagCheck and usage docs ([#1365](https://github.com/roots/sage/issues/1365))
|
|
||||||
* Change default gallery columns to 3 ([#1364](https://github.com/roots/sage/issues/1364))
|
|
||||||
* Apply `script_loader_src` filter to jQuery fallback ([#1363](https://github.com/roots/sage/issues/1363))
|
|
||||||
|
|
||||||
### 8.0.1: February 26th, 2015
|
|
||||||
* Update asset-builder version to fix Windows compatibility ([#1351](https://github.com/roots/sage/issues/1351))
|
|
||||||
* Fix broken wiredep imports with main.scss.example ([Discussion](https://discourse.roots.io/t/issue-with-sage-sass-version/2962))
|
|
||||||
|
|
||||||
### 8.0.0: February 25th, 2015
|
|
||||||
* Change theme name from Roots to Sage
|
|
||||||
* Bump required PHP version to >=5.4
|
|
||||||
* Add coding standards based on PSR-2
|
|
||||||
* Add Travis CI
|
|
||||||
* Add namespace
|
|
||||||
* Use short array syntax
|
|
||||||
* Use short echo syntax
|
|
||||||
* Switch from Grunt to gulp, new front-end development workflow
|
|
||||||
* Switch from Livereload to [BrowserSync](http://www.browsersync.io/)
|
|
||||||
* Use wiredep for Sass and Less injection
|
|
||||||
* Implement JSON file based asset pipeline with [asset-builder](https://github.com/austinpray/asset-builder)
|
|
||||||
* Re-organize asset file structure
|
|
||||||
* Re-organize stylesheet file structure
|
|
||||||
* Add main.scss.example and instructions for using Sass
|
|
||||||
* Use the primary theme stylesheet for the editor stylesheet
|
|
||||||
* Remove theme activation, move to [wp-cli-theme-activation](https://github.com/roots/wp-cli-theme-activation)
|
|
||||||
* Simplify 404 page
|
|
||||||
* Convert Sidebar to ConditionalTagCheck
|
|
||||||
* Update to jQuery 1.11.2
|
|
||||||
* Use new core navigation template tag
|
|
||||||
* Update sidebar to fix default template check
|
|
||||||
* Update nav walker to correctly assign `active` classes for custom post types
|
|
||||||
* Better support for CPT templates
|
|
||||||
|
|
||||||
### 7.0.3: December 18th, 2014
|
|
||||||
* Use `get_the_archive_title`
|
|
||||||
* Remove `wp_title`, add title-tag theme support
|
|
||||||
* Remove `Roots_Nav_Walker` as default for all menus
|
|
||||||
* Update to Bootstrap 3.3.1
|
|
||||||
* Add some base comment styling
|
|
||||||
* Make search term `required` in search form
|
|
||||||
|
|
||||||
### 7.0.2: October 24th, 2014
|
|
||||||
* Simplify comments, use core comment form and list
|
|
||||||
* Remove HTML5 shiv from Modernizr build
|
|
||||||
* Move JavaScript to footer
|
|
||||||
* Update hEntry schema to use `updated` instead of `published`
|
|
||||||
* Move variables into `main.less`
|
|
||||||
* Add `roots_body_class` function that checks for page slug in `body_class`
|
|
||||||
* Move `wp_footer` from footer template into `base.php`
|
|
||||||
|
|
||||||
### 7.0.1: August 15th, 2014
|
|
||||||
* Move `<main>` and `.sidebar` markup out of PHP and into LESS
|
|
||||||
* Define `WP_ENV` if it is not already defined
|
|
||||||
* Only load Google Analytics in production environment
|
|
||||||
|
|
||||||
### 7.0.0: July 3rd, 2014
|
|
||||||
* Updated Grunt workflow
|
|
||||||
* Use grunt-modernizr to make a lean Modernizr build
|
|
||||||
* Use Bower for front-end package management
|
|
||||||
* Update to Bootstrap 3.2.0
|
|
||||||
* Update to Modernizr 2.8.2
|
|
||||||
* Update to jQuery 1.11.1
|
|
||||||
* Move clean up, relative URLs, and nice search to [Soil](https://github.com/roots/soil)
|
|
||||||
* Update LESS organization
|
|
||||||
* Move [community translations](https://github.com/roots/roots-translations) to separate repository
|
|
||||||
|
|
||||||
### 6.5.2: February 4th, 2014
|
|
||||||
* Update to Bootstrap 3.1.0
|
|
||||||
* Move DOM routing into an anonymous function to support jQuery noConflict
|
|
||||||
* Update to jQuery 1.11.0
|
|
||||||
* Add notice to theme activation, tidy activation table markup
|
|
||||||
* Remove changing media folder from theme activation (use [Bedrock](https://github.com/roots/bedrock) for clean URLs out of the box)
|
|
||||||
* Switch `div.main` to `main` element now that Modernizr uses the latest HTML5 Shiv
|
|
||||||
* Update to Modernizr 2.7.0
|
|
||||||
* Don't run JSHint on plugins (`assets/js/plugins/`)
|
|
||||||
* Disable warnings about undefined variables (JSHint)
|
|
||||||
* Merge in updates from HTML5 Boilerplate
|
|
||||||
* Add JS source map (disabled by default)
|
|
||||||
* Replace `grunt-recess` with `grunt-contrib-less`, add LESS source map support
|
|
||||||
|
|
||||||
### 6.5.1: November 5th, 2013
|
|
||||||
* Move clean URLs to a [plugin](https://github.com/roots/roots-rewrites)
|
|
||||||
* Update to Bootstrap 3.0.1
|
|
||||||
|
|
||||||
### 6.5.0: August 23rd, 2013
|
|
||||||
* Reference new site, [http://roots.io/](http://roots.io/)
|
|
||||||
* Remove bundled docs, reference [http://roots.io/docs/](http://roots.io/docs/)
|
|
||||||
* Use Bootstrap variables for media queries
|
|
||||||
* Update to Bootstrap 3.0.0
|
|
||||||
* Update to jQuery 1.10.2
|
|
||||||
* Change media directory from `/assets/` to `/media/`
|
|
||||||
* Update to Google Universal Analytics
|
|
||||||
* Show author display name for author archives
|
|
||||||
* Add Serbian translation
|
|
||||||
* Remove post tags from templates
|
|
||||||
* Remove TinyMCE valid elements tweaks (no longer necessary)
|
|
||||||
* Remove additional widget classes
|
|
||||||
* Move `/assets/css/less/` to `/assets/less/`
|
|
||||||
* Add wrapper templates filter
|
|
||||||
* Fix relative external URLs issue
|
|
||||||
|
|
||||||
### 6.4.0: May 1st, 2013
|
|
||||||
* Fix Theme Activation page issues
|
|
||||||
* Fix issues with root relative URLs and rewrites on non-standard setups
|
|
||||||
* Make sure rewrites are added to `.htaccess` immediately after activation
|
|
||||||
* Move HTML5 Boilerplate's `.htaccess` to a [plugin](https://github.com/roots/wp-h5bp-htaccess)
|
|
||||||
* Rename `page-custom.php` to `template-custom.php`
|
|
||||||
* Don't warn about unwritable htaccess if that option is disabled
|
|
||||||
* Add missing collapse class for top navbar
|
|
||||||
* Add comment template
|
|
||||||
* Update is_dropdown evaluation in nav walker
|
|
||||||
* Re-organize archives template
|
|
||||||
* Add missing comment ID
|
|
||||||
* hNews consistency with entry-title class
|
|
||||||
* Add `wp_title()` filter
|
|
||||||
* Fix missing closing div in comments
|
|
||||||
* Fix for navbar dropdowns
|
|
||||||
* Add option for using jQuery on Google CDN
|
|
||||||
* Correct logic in `roots_enable_root_relative_urls`
|
|
||||||
* Add Greek translation, update Brazilian Portuguese translation
|
|
||||||
* Update to Bootstrap 2.3.1
|
|
||||||
* Simplify alerts
|
|
||||||
* Remove disabled post nav links
|
|
||||||
* Use Bootstrap media object for listing comments
|
|
||||||
* Move Google Analytics to `lib/scripts.php`
|
|
||||||
* Static top navbar instead of fixed
|
|
||||||
|
|
||||||
### 6.3.0: February 8th, 2013
|
|
||||||
* Update to Bootstrap 2.3.0
|
|
||||||
* Update to jQuery 1.9.1
|
|
||||||
* Output author title with `get_the_author()`
|
|
||||||
* Add EditorConfig
|
|
||||||
* Update 404 template based on H5BP
|
|
||||||
* Update H5BP's included .htaccess
|
|
||||||
* Don't show comments on passworded posts
|
|
||||||
* Add `do_action('get_header')` for WooSidebars compatibility
|
|
||||||
* Simplify entry meta
|
|
||||||
* Allow `get_search_form()` to be called more than once per request
|
|
||||||
* Move plugins.js and main.js to footer
|
|
||||||
* JavaScript clean up (everything is now enqueued)
|
|
||||||
* Remove conditional feed
|
|
||||||
* Introduce `add_theme_support('bootstrap-gallery')`
|
|
||||||
* Rewrites organization (introduce `lib/rewrites.php`)
|
|
||||||
* Fix `add_editor_style` path
|
|
||||||
* Updated translations: French, Bulgarian, Turkish, Korean
|
|
||||||
* Enable `add_theme_support` for Nice Search
|
|
||||||
* Replace ID's with classes
|
|
||||||
* Add support for dynamic sidebar templates
|
|
||||||
* Fix PHP notice on search with no results
|
|
||||||
* Update to jQuery 1.9.0
|
|
||||||
|
|
||||||
### 6.2.0: January 13th, 2013
|
|
||||||
* Implement latest Nice Search
|
|
||||||
* Update [gallery] shortcode
|
|
||||||
* Add Simplified Chinese, Indonesian, Korean translations
|
|
||||||
* Move template title to `lib/utils.php`
|
|
||||||
* Update to Bootstrap 2.2.2
|
|
||||||
* Update to jQuery 1.8.3
|
|
||||||
* Use `entry-summary` class for excerpts per Readability's Article Publishing Guidelines
|
|
||||||
* Cleanup/refactor `lib/activation.php`
|
|
||||||
* Remove `lib/post-types.php` and `lib/metaboxes.php`
|
|
||||||
* Make sure Primary Navigation menu always gets created and has the location set upon activation, update activation permalink method
|
|
||||||
* Update to Bootstrap 2.2.1
|
|
||||||
* Update conditional feed method
|
|
||||||
* Update to Bootstrap 2.2.0
|
|
||||||
* Return instead of echo class names in `roots_main_class` and `roots_sidebar_class`
|
|
||||||
* Move nav customizations into `lib/nav.php`
|
|
||||||
|
|
||||||
### 6.1.0: October 2nd, 2012
|
|
||||||
* Change roots_sidebar into a more explicit configuration array
|
|
||||||
* Re-organize configuration/setup files
|
|
||||||
* Update to jQuery 1.8.2
|
|
||||||
* Refactor/simplify Roots vCard Widget
|
|
||||||
* Move custom entry_meta code into template
|
|
||||||
* Move Google Analytics code into footer template
|
|
||||||
* Add CONTRIBUTING.md to assist with the new GitHub UI
|
|
||||||
* Add nav walker support for CSS dividers and nav-header
|
|
||||||
|
|
||||||
### 6.0.0: September 16th, 2012
|
|
||||||
* Simplify nav walker and support 3rd level dropdowns
|
|
||||||
* Update to Bootstrap 2.1.1, jQuery 1.8.1, Modernizr 2.6.2
|
|
||||||
* Add bundled docs
|
|
||||||
* Update all templates to use [PHP Alternative Syntax](http://php.net/manual/en/control-structures.alternative-syntax.php)
|
|
||||||
* Add MIT License
|
|
||||||
* Implement scribu's [Theme Wrapper](http://scribu.net/wordpress/theme-wrappers.html) (see `base.php`)
|
|
||||||
* Move `css/`, `img/`, and `js/` folders within a new `assets/` folder
|
|
||||||
* Move templates, `comments.php`, and `searchform.php` to `templates/` folder
|
|
||||||
* Rename `inc/` to `lib/`
|
|
||||||
* Add placeholder `lib/post-types.php` and `lib/metaboxes.php` files
|
|
||||||
* Rename `loop-` files to `content-`
|
|
||||||
* Remove all hooks
|
|
||||||
* Use `templates/page-header.php` for page titles
|
|
||||||
* Use `head.php` for everything in `<head>`
|
|
||||||
|
|
||||||
### 5.2.0: August 18th, 2012
|
|
||||||
* Update to jQuery 1.8.0 and Modernizr 2.6.1
|
|
||||||
* Fix duplicate active class in `wp_nav_menu` items
|
|
||||||
* Merge `Roots_Navbar_Nav_Walker` into `Roots_Nav_Walker`
|
|
||||||
* Add and update code documentation
|
|
||||||
* Use `wp_get_theme()` to get the theme name on activation
|
|
||||||
* Use `<figure>` & `<figcaption>` for captions
|
|
||||||
* Wrap embedded media as suggested by Readability
|
|
||||||
* Remove unnecessary `remove_action`'s on `wp_head` as of WordPress 3.2.1
|
|
||||||
* Add updates from HTML5 Boilerplate
|
|
||||||
* Remove well class from sidebar
|
|
||||||
* Flush permalinks on activation to avoid 404s with clean URLs
|
|
||||||
* Show proper classes on additional `wp_nav_menu()`'s
|
|
||||||
* Clean up `inc/cleanup.php`
|
|
||||||
* Remove old admin notice for tagline
|
|
||||||
* Remove default tagline admin notice, hide from feed
|
|
||||||
* Fix for duplicated classes in widget markup
|
|
||||||
* Show title on custom post type archive template
|
|
||||||
* Fix for theme preview in WordPress 3.3.2
|
|
||||||
* Introduce `inc/config.php` with options for clean URLs, H5BP's `.htaccess`, root relative URLs, and Bootstrap features
|
|
||||||
* Allow custom CSS classes in menus, walker cleanup
|
|
||||||
* Remove WordPress version numbers from stylesheets
|
|
||||||
* Don't include HTML5 Boilerplate's `style.css` by default
|
|
||||||
* Allow `inc/htaccess.php` to work with Litespeed
|
|
||||||
* Update to Bootstrap 2.0.4
|
|
||||||
* Update Bulgarian translation
|
|
||||||
* Don't use clean URLs with default permalink structure
|
|
||||||
* Add translations for Catalan, Polish, Hungarian, Norwegian, Russian
|
|
||||||
|
|
||||||
### 5.1.0: April 14th, 2012
|
|
||||||
* Various bugfixes for scripts, stylesheets, root relative URLs, clean URLs, and htaccess issues
|
|
||||||
* Add a conditional feed link
|
|
||||||
* Temporarily remove Gravity Forms customizations
|
|
||||||
* Update to Bootstrap 2.0.2
|
|
||||||
* Update `roots.pot` for translations
|
|
||||||
* Add/update languages: Vietnamese, Swedish, Bulgarian, Turkish, Norwegian, Brazilian Portugese
|
|
||||||
* Change widgets to use `<section>` instead of `<article>`
|
|
||||||
* Add comment-reply.js
|
|
||||||
* Remove optimized robots.txt
|
|
||||||
* HTML5 Boilerplate, Modernizr, and jQuery updates
|
|
||||||
|
|
||||||
### 5.0.0: February 5th, 2012
|
|
||||||
* Remove all frameworks except Bootstrap
|
|
||||||
* Update to Bootstrap 2.0
|
|
||||||
* Remove `roots-options.php` and replaced with a more simple `roots-config.php`
|
|
||||||
* Now using Bootstrap markup on forms, page titles, image galleries, alerts and errors, post and comment navigation
|
|
||||||
* Remove Roots styles from `style.css` and introduced `app.css` for site-specific CSS
|
|
||||||
* Remove almost all previous default Roots styling
|
|
||||||
* Latest updates from HTML5 Boilerplate
|
|
||||||
|
|
||||||
### 4.1.0: February 1st, 2012
|
|
||||||
* Update translations
|
|
||||||
* HTML5 Boilerplate updates
|
|
||||||
* Fix for Server 500 errors
|
|
||||||
* Add `roots-scripts.php`, now using `wp_enqueue_script`
|
|
||||||
* Re-organize `roots-actions.php`
|
|
||||||
* Allow `<script>` tags in TinyMCE
|
|
||||||
* Add full width class and search form to 404 template
|
|
||||||
* Remove Blueprint CSS specific markup
|
|
||||||
* Use Roots Nav Walker as default
|
|
||||||
* Add author name and taxonomy name to archive template title
|
|
||||||
* Add Full Width CSS class options
|
|
||||||
|
|
||||||
### 4.0.0: January 4th, 2012
|
|
||||||
* Add theme activation options
|
|
||||||
* HTML5 Boilerplate updates
|
|
||||||
* Add CSS frameworks: Bootstrap, Foundation
|
|
||||||
* Add translations: Dutch, Italian, Macedonian, German, Finnish, Danish, Spanish, and Turkish
|
|
||||||
* Update jQuery
|
|
||||||
* Remove included jQuery plugins
|
|
||||||
* Clean up whitespace, switched to two spaces for tabs
|
|
||||||
* Clean up `body_class()` some more with `roots_body_class()`
|
|
||||||
* Post meta information is now displayed using a function (similar to Twenty Eleven)
|
|
||||||
* Bugfixes for 1140 options
|
|
||||||
* Add first and last classes to widgets
|
|
||||||
* Fix bug with initial options save
|
|
||||||
* Remove sitemap and listing subpages templates
|
|
||||||
* Child themes can now unregister sidebars
|
|
||||||
* Add fix for empty search query
|
|
||||||
* Update README
|
|
||||||
* Blocking access to readme.html and license.txt to hide WordPress version information
|
|
||||||
|
|
||||||
### 3.6.0: August 12th, 2011
|
|
||||||
* HTML5 Boilerplate 2.0 updates
|
|
||||||
* Cleaner output of enqueued styles and scripts
|
|
||||||
* Adde option for root relative URLs
|
|
||||||
* Small fixes to root relative URLs and clean assets
|
|
||||||
* Update included jQuery plugins
|
|
||||||
* Add French translation (thanks @johnraz)
|
|
||||||
* Add Brazilian Portuguese translation (thanks @weslly)
|
|
||||||
* Switch the logo to use `add_custom_image_header`
|
|
||||||
* Add a function that strips unnecessary self-closing tags
|
|
||||||
* Code cleanup and re-organization
|
|
||||||
|
|
||||||
### 3.5.0: July 30th, 2011
|
|
||||||
* Complete rewrite of theme options based on Twenty Eleven
|
|
||||||
* CSS frameworks: refactor code and add default classes for each framework
|
|
||||||
* CSS frameworks: add support for Adapt.js and LESS
|
|
||||||
* CSS frameworks: add option for None
|
|
||||||
* Add support for WPML and theme translation
|
|
||||||
* Add option for cleaner nav menu output
|
|
||||||
* Add option for FOUT-B-Gone
|
|
||||||
* Add authorship rel attribute to post author link
|
|
||||||
* Activation bugfix for pages being added multiple times
|
|
||||||
* Bugfixes to the root relative URL function
|
|
||||||
* Child themes will now load their CSS automatically and properly
|
|
||||||
* HTML5 Boilerplate updates (including Normalize.css, Modernizr 2.0, and Respond.js)
|
|
||||||
* Introduce cleaner way of including HTML5 Boilerplate's `.htaccess`
|
|
||||||
* Add hooks & actions
|
|
||||||
* Rename `includes/` directory to `inc/`
|
|
||||||
* Add a blank `inc/roots-custom.php` file
|
|
||||||
|
|
||||||
### 3.2.4: May 19th, 2011
|
|
||||||
* Bugfixes
|
|
||||||
* Match latest changes to HTML5 Boilerplate and Blueprint CSS
|
|
||||||
* Update jQuery to 1.6.1
|
|
||||||
|
|
||||||
### 3.2.3: May 10th, 2011
|
|
||||||
* Bugfixes
|
|
||||||
* Add `language_attributes()` to `<html>`
|
|
||||||
* Match latest changes to HTML5 Boilerplate and Blueprint CSS
|
|
||||||
* Update jQuery to 1.6
|
|
||||||
|
|
||||||
### 3.2.2: April 24th, 2011
|
|
||||||
* Bugfixes
|
|
||||||
|
|
||||||
### 3.2.1: April 20th, 2011
|
|
||||||
* Add support for child themes
|
|
||||||
|
|
||||||
### 3.2.0: April 15th, 2011
|
|
||||||
* Add support for the 1140px Grid
|
|
||||||
* Update the conditional comment code to match latest changes to HTML5 Boilerplate
|
|
||||||
|
|
||||||
### 3.1.1: April 7th, 2011
|
|
||||||
* Fix relative path function to work correctly when WordPress is installed in a subdirectory
|
|
||||||
* Update jQuery to 1.5.2
|
|
||||||
* Fix comments to show avatars correctly
|
|
||||||
|
|
||||||
### 3.1.0: April 1st, 2011
|
|
||||||
* Add support for 960.gs thanks to John Liuti
|
|
||||||
* Add more onto the `.htaccess` from HTML5 Boilerplate
|
|
||||||
* Allow the theme directory and name to be renamable
|
|
||||||
|
|
||||||
### 3.0.0: March 28th, 2011
|
|
||||||
* Change name from BB to Roots and release to the public
|
|
||||||
* Update various areas to match the latest changes to HTML5 Boilerplate
|
|
||||||
* Change the theme markup based on hCard/Readability Guidelines and work by Jonathan Neal
|
|
||||||
* Create the navigation menus and automatically set their locations during theme activation
|
|
||||||
* Set permalink structure to `/%year%/%postname%/`
|
|
||||||
* Set uploads folder to `/assets/`
|
|
||||||
* Rewrite static folders in `/wp-content/themes/roots/` (`css/`, `js/`, `img/`) to the root (`/css/`, `/js/`, `/img/`)
|
|
||||||
* Rewrite `/wp-content/plugins/` to `/plugins/`
|
|
||||||
* Add more root relative URLs on WordPress functions
|
|
||||||
* Search results (`/?s=query`) rewrite to `/search/query/`
|
|
||||||
* `l10n.js` is deregistered
|
|
||||||
* Change [gallery] to output `<figure>` and `<figcaption>` and link to file by default
|
|
||||||
* Add more `loop.php` templates
|
|
||||||
* Made the HTML editor have a monospaced font
|
|
||||||
* Add `front-page.php`
|
|
||||||
* Update CSS for Gravity Forms 1.5
|
|
||||||
* Add `searchform.php template`
|
|
||||||
|
|
||||||
### 2.4.0: January 25th, 2011
|
|
||||||
* Add a notification when saving the theme settings
|
|
||||||
* Add support for navigation menus
|
|
||||||
* Create function that makes sure there is a Home page on theme activation
|
|
||||||
* Update various areas to match the latest changes to HTML5 Boilerplate
|
|
||||||
|
|
||||||
### 2.3.0: December 8th, 2010
|
|
||||||
* Logo is no longer an `<h1>`
|
|
||||||
* Add ARIA roles again
|
|
||||||
* Change `ul#nav` to `nav#nav-main`
|
|
||||||
* Add vCard to footer
|
|
||||||
* Made all URL's root relative
|
|
||||||
* Add Twitter and Facebook widgets to footer
|
|
||||||
* Add SEO optimized `robots.txt` from WordPress codex
|
|
||||||
|
|
||||||
### 2.2.0: September 20th, 2010
|
|
||||||
* Add asynchronous Google Analytics
|
|
||||||
* Update `.htaccess` with latest changes from HTML5 Boilerplate
|
|
||||||
|
|
||||||
### 2.1.0: August 19th, 2010
|
|
||||||
* Remove optimizeLegibility from headings
|
|
||||||
* Update jQuery to latest version
|
|
||||||
* Implement HTML5 Boilerplate `.htaccess`
|
|
||||||
|
|
||||||
### 2.0.1: August 2nd, 2010
|
|
||||||
* Add some presentational CSS classes
|
|
||||||
* Add footer widget
|
|
||||||
* Add more Gravity Forms default styling
|
|
||||||
|
|
||||||
### 2.0.0: July 19th, 2010
|
|
||||||
* Add HTML5 Boilerplate changes
|
|
||||||
* Implement `loop.php`
|
|
||||||
* wp_head cleanup
|
|
||||||
* Add `page-subpages.php` template
|
|
||||||
|
|
||||||
### 1.5.0: April 15th, 2010
|
|
||||||
* Integrate Paul Irish's frontend-pro-template (the original HTML5 Boilerplate)
|
|
||||||
|
|
||||||
### 1.0.0: December 18th, 2009
|
|
||||||
* Add Blueprint CSS to Starkers
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) Ben Word and Scott Walkinshaw
|
Copyright (c) Roots Software LLC
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|||||||
137
README.md
137
README.md
@@ -1,124 +1,31 @@
|
|||||||
# [Sage](https://roots.io/sage/)
|
<p align="center">
|
||||||
[](https://packagist.org/packages/roots/sage)
|
<a href="https://roots.io/sage/"><img alt="Sage" src="https://cdn.roots.io/app/uploads/logo-sage.svg" height="100"></a>
|
||||||
[](https://david-dm.org/roots/sage#info=devDependencies)
|
</p>
|
||||||
[](https://travis-ci.org/roots/sage)
|
|
||||||
|
|
||||||
Sage is a WordPress starter theme with a modern development workflow.
|
<p align="center">
|
||||||
|
<a href="https://packagist.org/packages/roots/sage"><img alt="Packagist Installs" src="https://img.shields.io/packagist/dt/roots/sage?label=projects%20created&colorB=2b3072&colorA=525ddc&style=flat-square"></a>
|
||||||
|
<a href="https://github.com/roots/sage/actions/workflows/main.yml"><img alt="Build Status" src="https://img.shields.io/github/actions/workflow/status/roots/sage/main.yml?branch=main&logo=github&label=CI&style=flat-square"></a>
|
||||||
|
<a href="https://bsky.app/profile/roots.dev"><img alt="Follow roots.dev on Bluesky" src="https://img.shields.io/badge/follow-@roots.dev-0085ff?logo=bluesky&style=flat-square"></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
**Sage 9 is in active development and is currently in beta. The `master` branch tracks Sage 9 development. If you want a stable version, use the [latest Sage 8 release](https://github.com/roots/sage/releases/latest).**
|
# Sage
|
||||||
|
|
||||||
## Features
|
**Advanced hybrid WordPress starter theme with Laravel Blade and Tailwind CSS**
|
||||||
|
|
||||||
* Sass for stylesheets
|
- 🔧 Clean, efficient theme templating with Laravel Blade
|
||||||
* ES6 for JavaScript
|
- ⚡️ Modern front-end development workflow powered by Vite
|
||||||
* [Webpack](https://webpack.github.io/) for compiling assets, optimizing images, and concatenating and minifying files
|
- 🎨 Out of the box support for Tailwind CSS
|
||||||
* [Browsersync](http://www.browsersync.io/) for synchronized browser testing
|
- 🚀 Harness the power of Laravel with [Acorn integration](https://github.com/roots/acorn)
|
||||||
* [Laravel Blade](https://laravel.com/docs/5.3/blade) as a templating engine
|
- 📦 Block editor support built-in
|
||||||
* [Controller](https://github.com/soberwp/controller) for passing data to Blade templates
|
|
||||||
* CSS framework options:
|
|
||||||
* [Bootstrap 4](http://getbootstrap.com/)
|
|
||||||
* [Foundation](http://foundation.zurb.com/)
|
|
||||||
* [Tachyons](http://tachyons.io/)
|
|
||||||
* None (blank slate)
|
|
||||||
* Font Awesome (optional)
|
|
||||||
|
|
||||||
See a working example at [roots-example-project.com](https://roots-example-project.com/).
|
Sage brings proper PHP templating and modern JavaScript tooling to WordPress themes. Write organized, component-based code using Laravel Blade, enjoy instant builds and CSS hot-reloading with Vite, and leverage Laravel's robust feature set through Acorn.
|
||||||
|
|
||||||
## Requirements
|
[Read the docs to get started](https://roots.io/sage/docs/installation/)
|
||||||
|
|
||||||
Make sure all dependencies have been installed before moving on:
|
## Sponsors
|
||||||
|
|
||||||
* [WordPress](https://wordpress.org/) >= 4.7
|
Sage is an open source project and completely free to use. If you've benefited from our projects and would like to support our future endeavors, [please consider sponsoring us](https://github.com/sponsors/roots).
|
||||||
* [PHP](http://php.net/manual/en/install.php) >= 7.0
|
|
||||||
* [Composer](https://getcomposer.org/download/)
|
|
||||||
* [Node.js](http://nodejs.org/) >= 6.9.x
|
|
||||||
* [Yarn](https://yarnpkg.com/en/docs/install)
|
|
||||||
|
|
||||||
## Theme installation
|
<div align="center">
|
||||||
|
<a href="https://carrot.com/"><img src="https://cdn.roots.io/app/uploads/carrot.svg" alt="Carrot" width="120" height="90"></a> <a href="https://wordpress.com/"><img src="https://cdn.roots.io/app/uploads/wordpress.svg" alt="WordPress.com" width="120" height="90"></a> <a href="https://worksitesafety.ca/careers/"><img src="https://cdn.roots.io/app/uploads/worksite-safety.svg" alt="Worksite Safety" width="120" height="90"></a> <a href="https://40q.agency/"><img src="https://cdn.roots.io/app/uploads/40q.svg" alt="40Q" width="120" height="90"></a> <a href="https://www.itineris.co.uk/"><img src="https://cdn.roots.io/app/uploads/itineris.svg" alt="Itineris" width="120" height="90"></a> <a href="https://bonsai.so/"><img src="https://cdn.roots.io/app/uploads/bonsai.svg" alt="Bonsai" width="120" height="90"></a>
|
||||||
Install Sage using Composer from your WordPress themes directory (replace `your-theme-name` below with the name of your theme):
|
</div>
|
||||||
|
|
||||||
```shell
|
|
||||||
# @ app/themes/ or wp-content/themes/
|
|
||||||
$ composer create-project roots/sage your-theme-name dev-master
|
|
||||||
```
|
|
||||||
|
|
||||||
During theme installation you will have the options to:
|
|
||||||
|
|
||||||
* Update theme headers (theme name, description, author, etc.)
|
|
||||||
* Select a CSS framework (Bootstrap, Foundation, Tachyons, none)
|
|
||||||
* Add Font Awesome
|
|
||||||
* Configure Browsersync (path to theme, local development URL)
|
|
||||||
|
|
||||||
## Theme structure
|
|
||||||
|
|
||||||
```shell
|
|
||||||
themes/your-theme-name/ # → Root of your Sage based theme
|
|
||||||
├── app/ # → Theme PHP
|
|
||||||
│ ├── lib/Sage/ # → Blade implementation, asset manifest
|
|
||||||
│ ├── admin.php # → Theme customizer setup
|
|
||||||
│ ├── filters.php # → Theme filters
|
|
||||||
│ ├── helpers.php # → Helper functions
|
|
||||||
│ └── setup.php # → Theme setup
|
|
||||||
├── composer.json # → Autoloading for `app/` files
|
|
||||||
├── composer.lock # → Composer lock file (never edit)
|
|
||||||
├── dist/ # → Built theme assets (never edit)
|
|
||||||
├── node_modules/ # → Node.js packages (never edit)
|
|
||||||
├── package.json # → Node.js dependencies and scripts
|
|
||||||
├── resources/ # → Theme assets and templates
|
|
||||||
│ ├── assets/ # → Front-end assets
|
|
||||||
│ │ ├── config.json # → Settings for compiled assets
|
|
||||||
│ │ ├── build/ # → Webpack and ESLint config
|
|
||||||
│ │ ├── fonts/ # → Theme fonts
|
|
||||||
│ │ ├── images/ # → Theme images
|
|
||||||
│ │ ├── scripts/ # → Theme JS
|
|
||||||
│ │ └── styles/ # → Theme stylesheets
|
|
||||||
│ ├── controllers/ # → Controller files
|
|
||||||
│ ├── functions.php # → Composer autoloader, theme includes
|
|
||||||
│ ├── index.php # → Never manually edit
|
|
||||||
│ ├── screenshot.png # → Theme screenshot for WP admin
|
|
||||||
│ ├── style.css # → Theme meta information
|
|
||||||
│ └── views/ # → Theme templates
|
|
||||||
│ ├── layouts/ # → Base templates
|
|
||||||
│ └── partials/ # → Partial templates
|
|
||||||
└── vendor/ # → Composer packages (never edit)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Theme setup
|
|
||||||
|
|
||||||
Edit `app/setup.php` to enable or disable theme features, setup navigation menus, post thumbnail sizes, and sidebars.
|
|
||||||
|
|
||||||
## Theme development
|
|
||||||
|
|
||||||
* Run `yarn` from the theme directory to install dependencies
|
|
||||||
* Update `resources/assets/config.json` settings:
|
|
||||||
* `devUrl` should reflect your local development hostname
|
|
||||||
* `publicPath` should reflect your WordPress folder structure (`/wp-content/themes/sage` for non-[Bedrock](https://roots.io/bedrock/) installs)
|
|
||||||
|
|
||||||
### Build commands
|
|
||||||
|
|
||||||
* `yarn run start` — Compile assets when file changes are made, start Browsersync session
|
|
||||||
* `yarn run build` — Compile and optimize the files in your assets directory
|
|
||||||
* `yarn run build:production` — Compile assets for production
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
Sage 8 documentation is available at [https://roots.io/sage/docs/](https://roots.io/sage/docs/).
|
|
||||||
|
|
||||||
Sage 9 documentation is currently in progress and can be viewed at [https://github.com/roots/docs/tree/sage-9/sage](https://github.com/roots/docs/tree/sage-9/sage).
|
|
||||||
|
|
||||||
Controller documentation is available at [https://github.com/soberwp/controller#usage](https://github.com/soberwp/controller#usage).
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Contributions are welcome from everyone. We have [contributing guidelines](https://github.com/roots/guidelines/blob/master/CONTRIBUTING.md) to help you get started.
|
|
||||||
|
|
||||||
## Community
|
|
||||||
|
|
||||||
Keep track of development and community news.
|
|
||||||
|
|
||||||
* Participate on the [Roots Discourse](https://discourse.roots.io/)
|
|
||||||
* Follow [@rootswp on Twitter](https://twitter.com/rootswp)
|
|
||||||
* Read and subscribe to the [Roots Blog](https://roots.io/blog/)
|
|
||||||
* Subscribe to the [Roots Newsletter](https://roots.io/subscribe/)
|
|
||||||
* Listen to the [Roots Radio podcast](https://roots.io/podcast/)
|
|
||||||
|
|||||||
158
app/ACF/Dynamic.php
Normal file
158
app/ACF/Dynamic.php
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\ACF;
|
||||||
|
use ourcodeworld\NameThatColor\ColorInterpreter as NameThatColor;
|
||||||
|
use App\Utilities;
|
||||||
|
|
||||||
|
class Dynamic
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_filter('acf/load_field/name=colour', [ $this, 'load_colours' ]);
|
||||||
|
add_filter('acf/load_field/name=bg_colour', [ $this, 'load_colours' ]);
|
||||||
|
add_filter('acf/load_field/name=tint', [ $this, 'load_tints' ]);
|
||||||
|
add_filter('acf/load_field/name=bg_tint', [ $this, 'load_tints' ]);
|
||||||
|
add_filter('acf/load_field/name=container_width', [ $this, 'container_width' ]);
|
||||||
|
add_filter('acf/load_field/name=fontawesome_regular', [ $this, 'load_fontawesome_regular_icons' ]);
|
||||||
|
add_filter('acf/load_field/name=fontawesome_solid', [ $this, 'load_fontawesome_solid_icons' ]);
|
||||||
|
add_filter('acf/load_field/name=fontawesome_brands', [ $this, 'load_fontawesome_brand_icons' ]);
|
||||||
|
add_action('acf/input/admin_footer', [ $this, 'colour_ui' ]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load_colours( $field )
|
||||||
|
{
|
||||||
|
$colour = new Utilities\Colour;
|
||||||
|
$NameThatColour = new NameThatColor;
|
||||||
|
|
||||||
|
$colours = $colour->values();
|
||||||
|
|
||||||
|
$field['choices'] = [
|
||||||
|
'0' => __('None', 'badegg'),
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach($colours as $slug => $hex):
|
||||||
|
$field['choices'][$slug] = '<i class="fas fa-circle" style="color: '. $hex .'"></i> ' . @$NameThatColour->name($hex)['name'];
|
||||||
|
endforeach;
|
||||||
|
|
||||||
|
return $field;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load_tints( $field )
|
||||||
|
{
|
||||||
|
$colour = new Utilities\Colour;
|
||||||
|
$tints = $colour->tints();
|
||||||
|
|
||||||
|
$field['choices'] = [];
|
||||||
|
|
||||||
|
foreach($tints as $slug => $hex):
|
||||||
|
if($slug):
|
||||||
|
$field['choices'][$slug] = ucfirst($slug);
|
||||||
|
|
||||||
|
else:
|
||||||
|
$field['choices'][0] = __('None', 'badegg');
|
||||||
|
endif;
|
||||||
|
endforeach;
|
||||||
|
|
||||||
|
return $field;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function container_width( $field )
|
||||||
|
{
|
||||||
|
$field['choices'] = [
|
||||||
|
0 => 'Auto',
|
||||||
|
'narrow' => __('Narrow', 'badegg'),
|
||||||
|
'small' => __('Small', 'badegg'),
|
||||||
|
'medium' => __('Medium', 'badegg'),
|
||||||
|
'large' => __('Large', 'badegg'),
|
||||||
|
'full' => __('Edge to edge', 'badegg'),
|
||||||
|
];
|
||||||
|
|
||||||
|
return $field;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load_fontawesome_regular_icons( $field )
|
||||||
|
{
|
||||||
|
$field['choices'] = [];
|
||||||
|
$field['choices'] = $this->fontawesome_choices('regular');
|
||||||
|
|
||||||
|
return $field;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load_fontawesome_solid_icons( $field )
|
||||||
|
{
|
||||||
|
$field['choices'] = [];
|
||||||
|
$field['choices'] = $this->fontawesome_choices('solid');
|
||||||
|
|
||||||
|
return $field;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load_fontawesome_brand_icons( $field )
|
||||||
|
{
|
||||||
|
$field['choices'] = [];
|
||||||
|
$field['choices'] = $this->fontawesome_choices('brands');
|
||||||
|
|
||||||
|
return $field;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fontawesome_choices($set = 'solid')
|
||||||
|
{
|
||||||
|
$path = get_stylesheet_directory() . '/resources/json/font-awesome-' . $set . '.json';
|
||||||
|
|
||||||
|
$json = @file_get_contents($path);
|
||||||
|
|
||||||
|
if(!$json) return false;
|
||||||
|
$icons = json_decode($json, true);
|
||||||
|
|
||||||
|
$choices = [
|
||||||
|
'0' => '<i class="fa-solid"></i> <span>Please select an icon</span>',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach($icons as $slug):
|
||||||
|
$choices[$slug] = '<i class="fa-'.$set.' fa-'.$slug.'" style="color: #2271b1;"></i> <span>' . (ucwords(str_replace('-', ' ', $slug))) . '</span>';
|
||||||
|
endforeach;
|
||||||
|
|
||||||
|
return $choices;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function colour_ui()
|
||||||
|
{ ?>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
console.log("Script loaded from sage/app/ACF/Dynamic.php");
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
|
||||||
|
function my_custom_escaping_method( original_value){
|
||||||
|
return original_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
acf.add_filter('select2_escape_markup', function( escaped_value, original_value, $select, settings, field, instance ){
|
||||||
|
console.log(field.data('name'));
|
||||||
|
|
||||||
|
const whitelist = [
|
||||||
|
'colour',
|
||||||
|
'bg_colour',
|
||||||
|
'angle_colour',
|
||||||
|
'fontawesome_brands',
|
||||||
|
'fontawesome_regular',
|
||||||
|
'fontawesome_solid',
|
||||||
|
];
|
||||||
|
|
||||||
|
// do something to the original_value to override the default escaping, then return it.
|
||||||
|
// this value should still have some kind of escaping for security, but you may wish to allow specific HTML.
|
||||||
|
if (whitelist.includes(field.data( 'name' ))) {
|
||||||
|
return my_custom_escaping_method( original_value );
|
||||||
|
}
|
||||||
|
|
||||||
|
// return
|
||||||
|
return escaped_value;
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<?php }
|
||||||
|
}
|
||||||
|
|
||||||
25
app/ACF/JSON.php
Normal file
25
app/ACF/JSON.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\ACF;
|
||||||
|
|
||||||
|
class JSON
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_filter('acf/settings/save_json', [$this, 'save']);
|
||||||
|
add_filter('acf/settings/load_json', [$this, 'load']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function save( $path )
|
||||||
|
{
|
||||||
|
$path = get_stylesheet_directory() . '/resources/acf';
|
||||||
|
return $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load( $paths )
|
||||||
|
{
|
||||||
|
unset($paths[0]);
|
||||||
|
$paths[] = get_stylesheet_directory() . '/resources/acf';
|
||||||
|
return $paths;
|
||||||
|
}
|
||||||
|
}
|
||||||
23
app/ACF/Options.php
Normal file
23
app/ACF/Options.php
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\ACF;
|
||||||
|
|
||||||
|
class Options
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_filter('acf/init', [$this, 'company']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function company()
|
||||||
|
{
|
||||||
|
acf_add_options_page([
|
||||||
|
'page_title' => __('Global Settings'),
|
||||||
|
'menu_title' => __('Global Settings'),
|
||||||
|
'menu_slug' => 'theme-global-settings',
|
||||||
|
'capability' => 'edit_others_posts',
|
||||||
|
'redirect' => false,
|
||||||
|
'icon_url' => 'dashicons-admin-site',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
67
app/Admin/Comments.php
Normal file
67
app/Admin/Comments.php
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin;
|
||||||
|
|
||||||
|
class Comments
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_action('admin_init', [$this, 'commentstatusdiv']); // Disable comment status div meta box
|
||||||
|
add_action('wp_dashboard_setup', [$this, 'dashboard_activity']); // Remove the Activity widget
|
||||||
|
add_action('wp_before_admin_bar_render', [$this, 'remove_menu_item']); // Remove from admin bar
|
||||||
|
add_action('admin_menu', [$this, 'admin_menu']); // Remove from backend menu
|
||||||
|
add_action('wp_dashboard_setup', [$this, 'dashboard_recent_comments']); // Remove Dashboard Meta Box
|
||||||
|
add_filter('comments_rewrite_rules', '__return_empty_array'); // Remove comment rewrite rule
|
||||||
|
add_action('after_theme_setup', [$this, 'theme_support']); // Remove comment theme support
|
||||||
|
add_filter('rewrite_rules_array', [$this, 'rewrite']); // Clean up rewrite rule
|
||||||
|
}
|
||||||
|
|
||||||
|
public function commentstatusdiv()
|
||||||
|
{
|
||||||
|
remove_meta_box( 'commentstatusdiv', 'post', 'normal' );
|
||||||
|
remove_post_type_support( 'post', 'comments' );
|
||||||
|
|
||||||
|
remove_meta_box( 'commentstatusdiv', 'page', 'normal' );
|
||||||
|
remove_post_type_support( 'page', 'comments' );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dashboard_activity()
|
||||||
|
{
|
||||||
|
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function remove_menu_item()
|
||||||
|
{
|
||||||
|
global $wp_admin_bar;
|
||||||
|
$wp_admin_bar->remove_menu('comments');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function admin_menu()
|
||||||
|
{
|
||||||
|
remove_menu_page( 'edit-comments.php' );
|
||||||
|
remove_submenu_page( 'options-general.php', 'options-discussion.php' );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dashboard_recent_comments()
|
||||||
|
{
|
||||||
|
remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function theme_support()
|
||||||
|
{
|
||||||
|
remove_theme_support('comments');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rewrite($rules)
|
||||||
|
{
|
||||||
|
foreach ($rules as $rule => $rewrite) {
|
||||||
|
if (preg_match('/.*(feed)/', $rule)) {
|
||||||
|
unset($rules[$rule]);
|
||||||
|
}
|
||||||
|
if (preg_match('/.*(comment-page)/', $rule)) {
|
||||||
|
unset($rules[$rule]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
}
|
||||||
27
app/Admin/DisablePost.php
Normal file
27
app/Admin/DisablePost.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin;
|
||||||
|
|
||||||
|
class DisablePost
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
// add_filter('register_post_type_args', [$this, 'args'], 0, 2);
|
||||||
|
// add_filter('register_taxonomy_args', [$this, 'args'], 0, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function args($args, $type)
|
||||||
|
{
|
||||||
|
$types = [
|
||||||
|
'post',
|
||||||
|
'post_tag',
|
||||||
|
'category',
|
||||||
|
];
|
||||||
|
|
||||||
|
if(in_array($type, $types)) {
|
||||||
|
$args['public'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $args;
|
||||||
|
}
|
||||||
|
}
|
||||||
22
app/Admin/Enqueue.php
Normal file
22
app/Admin/Enqueue.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin;
|
||||||
|
|
||||||
|
class Enqueue
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_action( 'admin_enqueue_scripts', [$this, 'fontawesome']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fontawesome()
|
||||||
|
{
|
||||||
|
wp_enqueue_style(
|
||||||
|
'fontawesome',
|
||||||
|
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css',
|
||||||
|
false,
|
||||||
|
'7.0.1',
|
||||||
|
'all'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
38
app/Admin/Integrations.php
Normal file
38
app/Admin/Integrations.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin;
|
||||||
|
|
||||||
|
class Integrations
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_action( 'wp_head', [$this, 'FathomAnalytics']);
|
||||||
|
add_action( 'wp_footer', [$this, 'FontAwesomeKit'], 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function FathomAnalytics()
|
||||||
|
{
|
||||||
|
$fathomID = get_field('badegg_integrations_fathom_id', 'option');
|
||||||
|
|
||||||
|
if($fathomID && WP_ENV == 'production'): ?>
|
||||||
|
|
||||||
|
<!-- Fathom - beautiful, simple website analytics -->
|
||||||
|
<script src="https://cdn.usefathom.com/script.js" data-site="<?= $fathomID ?>" defer></script>
|
||||||
|
<!-- / Fathom -->
|
||||||
|
|
||||||
|
<?php endif;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function FontAwesomeKit()
|
||||||
|
{
|
||||||
|
$kit = get_field('badegg_integrations_fontawesome_kit', 'option');
|
||||||
|
|
||||||
|
if($kit): ?>
|
||||||
|
|
||||||
|
<!-- FontAwesome Kit -->
|
||||||
|
<script src="https://kit.fontawesome.com/<?= $kit ?>.js" crossorigin="anonymous"></script>
|
||||||
|
<!-- / FontAwesome Kit -->
|
||||||
|
|
||||||
|
<?php endif;
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/Admin/Theme.php
Normal file
35
app/Admin/Theme.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin;
|
||||||
|
use ourcodeworld\NameThatColor\ColorInterpreter as NameThatColor;
|
||||||
|
use App\Utilities;
|
||||||
|
|
||||||
|
class Theme
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_action( 'after_setup_theme', [$this, 'DynamicPalette'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function DynamicPalette()
|
||||||
|
{
|
||||||
|
$colour = new Utilities\Colour;
|
||||||
|
$NameThatColour = new NameThatColor;
|
||||||
|
|
||||||
|
$palette = [];
|
||||||
|
|
||||||
|
$colours = $colour->values();
|
||||||
|
|
||||||
|
foreach($colours as $slug => $hex) {
|
||||||
|
$palette[] = [
|
||||||
|
'name' => esc_html__(@$NameThatColour->name($hex)['name'], 'badegg'),
|
||||||
|
'slug' => $slug,
|
||||||
|
'color' => $hex,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($colours)) {
|
||||||
|
add_theme_support('editor-color-palette', $palette);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
57
app/PostTypes/Social.php
Normal file
57
app/PostTypes/Social.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\PostTypes;
|
||||||
|
|
||||||
|
class Social
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_action('init', [$this, 'register']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function register()
|
||||||
|
{
|
||||||
|
$td = 'sage';
|
||||||
|
$postType = 'social';
|
||||||
|
|
||||||
|
register_extended_post_type(
|
||||||
|
$postType,
|
||||||
|
[
|
||||||
|
'menu_position' => 28,
|
||||||
|
'supports' => [
|
||||||
|
'title',
|
||||||
|
'page-attributes',
|
||||||
|
],
|
||||||
|
'menu_icon' => 'dashicons-share',
|
||||||
|
'rewrite' => false,
|
||||||
|
'has_archive' => false,
|
||||||
|
'publicly_queryable' => false,
|
||||||
|
'exclude_from_search' => true,
|
||||||
|
'capability_type' => 'page',
|
||||||
|
'show_in_nav_menus' => false,
|
||||||
|
'admin_cols' => [
|
||||||
|
'social_link' => [
|
||||||
|
'title' => __('Social Link', $td),
|
||||||
|
'meta_key' => 'fontawesome_brands',
|
||||||
|
'function' => function(){
|
||||||
|
$icon = get_field('fontawesome_brands');
|
||||||
|
$url = get_field('url');
|
||||||
|
|
||||||
|
if($icon): ?>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="<?= $url ?: '#' ?>"
|
||||||
|
class="fa-brands fa-<?= $icon ?>"
|
||||||
|
rel="nofollow noindex"
|
||||||
|
style="font-size: 2em;"
|
||||||
|
></a>
|
||||||
|
|
||||||
|
<?php endif;
|
||||||
|
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
28
app/Providers/ThemeServiceProvider.php
Normal file
28
app/Providers/ThemeServiceProvider.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use Roots\Acorn\Sage\SageServiceProvider;
|
||||||
|
|
||||||
|
class ThemeServiceProvider extends SageServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Register any application services.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function register()
|
||||||
|
{
|
||||||
|
parent::register();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bootstrap any application services.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function boot()
|
||||||
|
{
|
||||||
|
parent::boot();
|
||||||
|
}
|
||||||
|
}
|
||||||
173
app/Utilities/Colour.php
Normal file
173
app/Utilities/Colour.php
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Utilities;
|
||||||
|
|
||||||
|
class Colour
|
||||||
|
{
|
||||||
|
public function name2hex($colour = null, $tint = null)
|
||||||
|
{
|
||||||
|
if(!$colour) return false;
|
||||||
|
|
||||||
|
if($colour == 'black'):
|
||||||
|
$hex = '#000000';
|
||||||
|
elseif($colour == 'grey'):
|
||||||
|
$hex = '#808080';
|
||||||
|
elseif($colour == 'white'):
|
||||||
|
$hex = '#FFFFFF';
|
||||||
|
else:
|
||||||
|
// TODO: replace company_info settings page and lookup function
|
||||||
|
$hex = $this->values()[(string)$colour];
|
||||||
|
endif;
|
||||||
|
|
||||||
|
if($tint):
|
||||||
|
$tints = $this->tints();
|
||||||
|
$hex = $this->adjustBrightness($hex, $tints[$tint]);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
return $hex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function values()
|
||||||
|
{
|
||||||
|
$values = [];
|
||||||
|
|
||||||
|
if(function_exists('get_field')):
|
||||||
|
$colours = @get_field('badegg_colours', 'option');
|
||||||
|
|
||||||
|
if($colours):
|
||||||
|
foreach($colours as $index => $props):
|
||||||
|
$index = $index + 1;
|
||||||
|
$hex = @$props['hex'];
|
||||||
|
|
||||||
|
if($hex) $values[$this->latinate($index)] = $hex;
|
||||||
|
endforeach;
|
||||||
|
endif;
|
||||||
|
endif;
|
||||||
|
|
||||||
|
$values['white'] = '#FFFFFF';
|
||||||
|
$values['grey'] = '#808080';
|
||||||
|
$values['black'] = '#000000';
|
||||||
|
|
||||||
|
return $values;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tints()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'lightest' => 40,
|
||||||
|
'lighter' => 25,
|
||||||
|
'light' => 10,
|
||||||
|
'0' => 0,
|
||||||
|
'dark' => -10,
|
||||||
|
'darker' => -25,
|
||||||
|
'darkest' => -40,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function is_dark($colour = '#FFFFF', $tint = null, $override = null)
|
||||||
|
{
|
||||||
|
|
||||||
|
if($override == 'light') return true;
|
||||||
|
if($override == 'dark') return false;
|
||||||
|
|
||||||
|
// https://css-tricks.com/snippets/php/convert-hex-to-rgb/
|
||||||
|
|
||||||
|
if($tint) $colour = $this->adjustBrightness($colour, $this->tints()[$tint]);
|
||||||
|
|
||||||
|
if ( @$colour[0] == '#' ) {
|
||||||
|
$colour = substr( $colour, 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( strlen( $colour ) == 6 ) {
|
||||||
|
list( $r, $g, $b ) = [
|
||||||
|
$colour[0] . $colour[1],
|
||||||
|
$colour[2] . $colour[3],
|
||||||
|
$colour[4] . $colour[5],
|
||||||
|
];
|
||||||
|
|
||||||
|
} elseif ( strlen( $colour ) == 3 ) {
|
||||||
|
list( $r, $g, $b ) = [
|
||||||
|
$colour[0] . $colour[0],
|
||||||
|
$colour[1] . $colour[1],
|
||||||
|
$colour[2] . $colour[2],
|
||||||
|
];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$r = hexdec( $r );
|
||||||
|
$g = hexdec( $g );
|
||||||
|
$b = hexdec( $b );
|
||||||
|
// return array( 'red' => $r, 'green' => $g, 'blue' => $b );
|
||||||
|
|
||||||
|
$hsp = sqrt(
|
||||||
|
0.299 * ($r * $r) +
|
||||||
|
0.587 * ($g * $g) +
|
||||||
|
0.114 * ($b * $b)
|
||||||
|
);
|
||||||
|
|
||||||
|
if($hsp > 200) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function is_light($colour = '#000000', $tint = null)
|
||||||
|
{
|
||||||
|
if($this->is_dark($colour, $tint)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function adjustBrightness($hex, $steps)
|
||||||
|
{
|
||||||
|
// Steps should be between -255 and 255. Negative = darker, positive = lighter
|
||||||
|
$steps = max(-255, min(255, $steps));
|
||||||
|
|
||||||
|
// Normalize into a six character long hex string
|
||||||
|
$hex = str_replace('#', '', $hex);
|
||||||
|
if (strlen($hex) == 3) {
|
||||||
|
$hex = str_repeat(substr($hex,0,1), 2).str_repeat(substr($hex,1,1), 2).str_repeat(substr($hex,2,1), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Split into three parts: R, G and B
|
||||||
|
$color_parts = str_split($hex, 2);
|
||||||
|
$return = '#';
|
||||||
|
|
||||||
|
foreach ($color_parts as $color) {
|
||||||
|
$color = hexdec($color); // Convert to decimal
|
||||||
|
$color = max(0,min(255,$color + $steps)); // Adjust color
|
||||||
|
$return .= str_pad(dechex($color), 2, '0', STR_PAD_LEFT); // Make two char hex code
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function latinate($x = 0)
|
||||||
|
{
|
||||||
|
$latinate = [
|
||||||
|
1 => 'primary',
|
||||||
|
2 => 'secondary',
|
||||||
|
3 => 'tertiary',
|
||||||
|
4 => 'quaternary',
|
||||||
|
5 => 'quinary',
|
||||||
|
6 => 'senary',
|
||||||
|
7 => 'septenary',
|
||||||
|
8 => 'octonary',
|
||||||
|
9 => 'nonary',
|
||||||
|
10 => 'denary',
|
||||||
|
11 => 'undenary',
|
||||||
|
12 => 'duodenary',
|
||||||
|
];
|
||||||
|
|
||||||
|
if(array_key_exists($x, $latinate)):
|
||||||
|
return $latinate[$x];
|
||||||
|
else:
|
||||||
|
return 0;
|
||||||
|
endif;
|
||||||
|
}
|
||||||
|
}
|
||||||
144
app/Utilities/CssClasses.php
Normal file
144
app/Utilities/CssClasses.php
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Utilities;
|
||||||
|
|
||||||
|
class CssClasses {
|
||||||
|
public function section($props = [], $name = 'unnamed', $knockout = false)
|
||||||
|
{
|
||||||
|
$defaults = [
|
||||||
|
'padding_top' => null,
|
||||||
|
'padding_bottom' => null,
|
||||||
|
'bg_colour' => null,
|
||||||
|
'bg_tint' => null,
|
||||||
|
'contrast' => null,
|
||||||
|
'bg_image' => null,
|
||||||
|
];
|
||||||
|
|
||||||
|
$props = wp_parse_args($props, $defaults);
|
||||||
|
|
||||||
|
$Colour = new Colour;
|
||||||
|
$hex = $Colour->name2hex($props['bg_colour'], $props['bg_tint']);
|
||||||
|
|
||||||
|
$classes = [
|
||||||
|
'section',
|
||||||
|
'section-' . str_replace('/', '-', $name),
|
||||||
|
];
|
||||||
|
|
||||||
|
if($props['bg_colour'])
|
||||||
|
$classes[] = 'bg-' . $this->colourTint([
|
||||||
|
'colour' => $props['bg_colour'],
|
||||||
|
'tint' => $props['bg_tint'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
if(($props['contrast'] && $knockout))
|
||||||
|
$classes[] = 'knockout';
|
||||||
|
|
||||||
|
if(!$props['padding_top'])
|
||||||
|
$classes[] = 'section-zero-top';
|
||||||
|
|
||||||
|
if(!$props['padding_bottom'])
|
||||||
|
$classes[] = 'section-zero-bottom';
|
||||||
|
|
||||||
|
if($props['bg_image'])
|
||||||
|
$classes[] = "has-bg-image";
|
||||||
|
|
||||||
|
return $classes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function container($args = [], $bg_props = [])
|
||||||
|
{
|
||||||
|
$args = wp_parse_args($args, [
|
||||||
|
'width' => null,
|
||||||
|
'location' => null,
|
||||||
|
'section' => false,
|
||||||
|
'align' => null,
|
||||||
|
'wysiwyg' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$bg_props = wp_parse_args($bg_props, [
|
||||||
|
'bg_colour' => null,
|
||||||
|
'bg_tint' => null,
|
||||||
|
'contrast' => null,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$Colour = new Colour;
|
||||||
|
$hex = $Colour->name2hex($bg_props['bg_colour'], $bg_props['bg_tint']);
|
||||||
|
|
||||||
|
$classes = [
|
||||||
|
'container',
|
||||||
|
];
|
||||||
|
|
||||||
|
if($args['width'])
|
||||||
|
$classes[] = 'container-' . $args['width'];
|
||||||
|
|
||||||
|
if($args['location'])
|
||||||
|
$classes[] = $args['location'];
|
||||||
|
|
||||||
|
if($args['section'])
|
||||||
|
$classes[] = 'section';
|
||||||
|
|
||||||
|
if(str_contains($args['location'], 'intro'))
|
||||||
|
$classes[] = 'section-zero-top';
|
||||||
|
|
||||||
|
if(str_contains($args['location'], 'footer'))
|
||||||
|
$classes[] = 'section-zero-bottom';
|
||||||
|
|
||||||
|
if($args['wysiwyg'])
|
||||||
|
$classes[] = 'wysiwyg';
|
||||||
|
|
||||||
|
if($args['align'])
|
||||||
|
$classes[] = 'align-' . $args['align'];
|
||||||
|
|
||||||
|
if(($bg_props['contrast']))
|
||||||
|
$classes[] = 'knockout';
|
||||||
|
|
||||||
|
return $classes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function button($args = [])
|
||||||
|
{
|
||||||
|
$default_args = [
|
||||||
|
'colour' => null,
|
||||||
|
'style' => null,
|
||||||
|
];
|
||||||
|
|
||||||
|
$args = wp_parse_args($args, $default_args);
|
||||||
|
|
||||||
|
$classes = [
|
||||||
|
'button',
|
||||||
|
];
|
||||||
|
|
||||||
|
if($args['colour']) $classes[] = $args['colour'];
|
||||||
|
if($args['style']) $classes[] = $args['style'];
|
||||||
|
|
||||||
|
return $classes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function colourTint($props = [])
|
||||||
|
{
|
||||||
|
if(@$props['colour']):
|
||||||
|
$colour = $props['colour'];
|
||||||
|
|
||||||
|
if($props['colour'] != 'black' && @$props['tint']):
|
||||||
|
$colour .= '-' . $props['tint'];
|
||||||
|
endif;
|
||||||
|
else:
|
||||||
|
$colour = 'white';
|
||||||
|
endif;
|
||||||
|
|
||||||
|
return $colour;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function is_knockout_block($name = null)
|
||||||
|
{
|
||||||
|
$blacklist = [
|
||||||
|
'badegg/acfdemo',
|
||||||
|
];
|
||||||
|
|
||||||
|
if(in_array($name, $blacklist)):
|
||||||
|
return false;
|
||||||
|
else:
|
||||||
|
return true;
|
||||||
|
endif;
|
||||||
|
}
|
||||||
|
}
|
||||||
124
app/Utilities/ImageSrcset.php
Normal file
124
app/Utilities/ImageSrcset.php
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Utilities;
|
||||||
|
|
||||||
|
class ImageSrcset
|
||||||
|
{
|
||||||
|
public function add($args = [])
|
||||||
|
{
|
||||||
|
$args = wp_parse_args($args, $this->default_args());
|
||||||
|
$multipliers = $this->multipliers();
|
||||||
|
|
||||||
|
if(is_null($args['height'])) $args['height'] = $args['width'];
|
||||||
|
|
||||||
|
|
||||||
|
if($args['sizes'] < 5) $multipliers = array_slice($multipliers, 0, $args['sizes']);
|
||||||
|
|
||||||
|
foreach ( $multipliers as $slug => $scale ):
|
||||||
|
add_image_size (
|
||||||
|
$args['name'] . '-' . $slug,
|
||||||
|
round((int)$args['width'] * $scale),
|
||||||
|
round((int)$args['height'] * $scale),
|
||||||
|
$args['crop']
|
||||||
|
);
|
||||||
|
endforeach;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function default_args()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => 'hero',
|
||||||
|
'width' => 1920,
|
||||||
|
'height' => null,
|
||||||
|
'crop' => true,
|
||||||
|
'sizes' => 5,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function multipliers()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'xl' => 1,
|
||||||
|
'lg' => 0.75,
|
||||||
|
'md' => 0.52083333,
|
||||||
|
'sm' => 0.33333333,
|
||||||
|
'xs' => 0.20833333,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render($args = [])
|
||||||
|
{
|
||||||
|
global $_wp_additional_image_sizes;
|
||||||
|
|
||||||
|
$default_args = [
|
||||||
|
'name' => 'hero',
|
||||||
|
'image' => null,
|
||||||
|
'lazy' => true,
|
||||||
|
'sizes' => 5,
|
||||||
|
'class' => null,
|
||||||
|
];
|
||||||
|
|
||||||
|
$args = wp_parse_args($args, $default_args);
|
||||||
|
$name = $args['name'];
|
||||||
|
$image = ($args['image']) ? $args['image'] : get_post_thumbnail_id();
|
||||||
|
|
||||||
|
if(!$image) return false;
|
||||||
|
|
||||||
|
$properties = @$_wp_additional_image_sizes[$name . '-xl'];
|
||||||
|
$width = @$properties['width'];
|
||||||
|
$height = @$properties['height'];
|
||||||
|
|
||||||
|
$sizes = [
|
||||||
|
'xl' => 1,
|
||||||
|
'lg' => 0.75,
|
||||||
|
'md' => 0.52083333,
|
||||||
|
'sm' => 0.33333333,
|
||||||
|
'xs' => 0.20833333,
|
||||||
|
];
|
||||||
|
|
||||||
|
if($args['sizes'] < 5) $sizes = array_slice($sizes, 0, $args['sizes']);
|
||||||
|
|
||||||
|
$class = $name . '-image';
|
||||||
|
if($args['class']) $class .= ' ' . $args['class'];
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
$full = wp_get_attachment_image_src($image, $name . '-xl');
|
||||||
|
$lazy = wp_get_attachment_image_src($image, 'lazy');
|
||||||
|
$alt = get_post_meta( $image, '_wp_attachment_image_alt', true );
|
||||||
|
|
||||||
|
$srcsets = [];
|
||||||
|
foreach($sizes as $size => $multiplier) {
|
||||||
|
$file = wp_get_attachment_image_src($image, $name . '-' . $size);
|
||||||
|
$srcsets[] = $file[0] . ' ' . $file[1] . 'w';
|
||||||
|
}
|
||||||
|
|
||||||
|
$atts = [
|
||||||
|
'class' => $class,
|
||||||
|
'src' => $full[0],
|
||||||
|
'srcset' => implode(', ', $srcsets),
|
||||||
|
'width' => $width,
|
||||||
|
'height' => $height,
|
||||||
|
'alt' => $alt,
|
||||||
|
];
|
||||||
|
|
||||||
|
if($args['lazy']):
|
||||||
|
$atts['class'] .= ' lazy';
|
||||||
|
$atts['src'] = $lazy[0];
|
||||||
|
$atts['srcset'] = null;
|
||||||
|
$atts['data-src'] = $full[0];
|
||||||
|
$atts['data-srcset'] = implode(', ', $srcsets);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<img
|
||||||
|
<?php foreach($atts as $att => $value):
|
||||||
|
if($value) echo $att . '="' . $value . '" ';
|
||||||
|
endforeach; ?>
|
||||||
|
/>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
return ob_get_clean();
|
||||||
|
}
|
||||||
|
}
|
||||||
105
app/Utilities/RestAPI.php
Normal file
105
app/Utilities/RestAPI.php
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Utilities;
|
||||||
|
use ourcodeworld\NameThatColor\ColorInterpreter as NameThatColor;
|
||||||
|
|
||||||
|
class RestAPI
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
add_filter( 'wp_prepare_attachment_for_js', [$this, 'image_sizes'], 10, 3 );
|
||||||
|
add_action( 'rest_api_init', [$this, 'blocks']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function image_sizes( $response, $attachment, $meta )
|
||||||
|
{
|
||||||
|
if ( empty( $response['sizes'] ) || empty( $meta['sizes'] ) ) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$custom_sizes = [ 'hero', 'lazy' ];
|
||||||
|
|
||||||
|
foreach ( $custom_sizes as $size ) {
|
||||||
|
if ( ! empty( $meta['sizes'][ $size ] ) ) {
|
||||||
|
$response['sizes'][ $size ] = [
|
||||||
|
'url' => wp_get_attachment_image_url( $attachment->ID, $size ),
|
||||||
|
'width' => $meta['sizes'][ $size ]['width'],
|
||||||
|
'height' => $meta['sizes'][ $size ]['height'],
|
||||||
|
'orientation' =>
|
||||||
|
$meta['sizes'][ $size ]['height'] > $meta['sizes'][ $size ]['width']
|
||||||
|
? 'portrait'
|
||||||
|
: 'landscape',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function blocks( )
|
||||||
|
{
|
||||||
|
$restBase = 'badegg/v1';
|
||||||
|
|
||||||
|
register_rest_route($restBase, '/blocks/config', [
|
||||||
|
'methods' => 'GET',
|
||||||
|
'callback' => [ $this, 'config'],
|
||||||
|
'permission_callback' => function(){
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function config()
|
||||||
|
{
|
||||||
|
return rest_ensure_response([
|
||||||
|
'container' => $this->containerWidths(),
|
||||||
|
'colours' => $this->colours(),
|
||||||
|
'tints' => $this->tints(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function containerWidths()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[ 'label' => __('Auto', 'badegg'), 'value' => 0 ],
|
||||||
|
[ 'label' => __('Narrow', 'badegg'), 'value' => 'narrow' ],
|
||||||
|
[ 'label' => __('Small', 'badegg'), 'value' => 'small' ],
|
||||||
|
[ 'label' => __('Medium', 'badegg'), 'value' => 'medium' ],
|
||||||
|
[ 'label' => __('Large', 'badegg'), 'value' => 'large' ],
|
||||||
|
[ 'label' => __('Edge to edge', 'badegg'), 'value' => 'full' ],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function colours()
|
||||||
|
{
|
||||||
|
$colour = new Colour;
|
||||||
|
$NameThatColour = new NameThatColor;
|
||||||
|
|
||||||
|
$palette = [];
|
||||||
|
|
||||||
|
$colours = $colour->values();
|
||||||
|
|
||||||
|
foreach($colours as $slug => $hex) {
|
||||||
|
$palette[] = [
|
||||||
|
'name' => esc_html__(@$NameThatColour->name($hex)['name'], 'badegg'),
|
||||||
|
'slug' => $slug,
|
||||||
|
'color' => $hex,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $palette;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tints()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['label' => __('Lightest', 'badegg'), 'value' => 'lightest'],
|
||||||
|
['label' => __('Lighter', 'badegg'), 'value' => 'lighter' ],
|
||||||
|
['label' => __('Light', 'badegg'), 'value' => 'light' ],
|
||||||
|
['label' => __('None', 'badegg'), 'value' => 0 ],
|
||||||
|
['label' => __('Dark', 'badegg'), 'value' => 'dark' ],
|
||||||
|
['label' => __('Darker', 'badegg'), 'value' => 'darker' ],
|
||||||
|
['label' => __('Darkest', 'badegg'), 'value' => 'darkest' ],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
39
app/Utilities/VideoSrcset.php
Normal file
39
app/Utilities/VideoSrcset.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Utilities;
|
||||||
|
|
||||||
|
class VideoSrcset
|
||||||
|
{
|
||||||
|
public function sizes($video_srcset = [])
|
||||||
|
{
|
||||||
|
if(empty($video_srcset)) return false;
|
||||||
|
|
||||||
|
$sizes = [];
|
||||||
|
|
||||||
|
foreach($video_srcset as $size => $video):
|
||||||
|
if($video):
|
||||||
|
$sizes[$size] = $video['width'];
|
||||||
|
endif;
|
||||||
|
endforeach;
|
||||||
|
|
||||||
|
if(!empty($sizes)):
|
||||||
|
return json_encode($sizes);
|
||||||
|
else:
|
||||||
|
return false;
|
||||||
|
endif;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function smallest($video_srcset = [])
|
||||||
|
{
|
||||||
|
if(empty($video_srcset)) return false;
|
||||||
|
|
||||||
|
$smallest = null;
|
||||||
|
|
||||||
|
foreach($video_srcset as $size => $video):
|
||||||
|
if($smallest) continue;
|
||||||
|
if($video) $smallest = $size;
|
||||||
|
endforeach;
|
||||||
|
|
||||||
|
return $smallest;
|
||||||
|
}
|
||||||
|
}
|
||||||
36
app/View/Composers/App.php
Normal file
36
app/View/Composers/App.php
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Composers;
|
||||||
|
|
||||||
|
use Roots\Acorn\View\Composer;
|
||||||
|
use App\Utilities;
|
||||||
|
|
||||||
|
class App extends Composer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* List of views served by this composer.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $views = [
|
||||||
|
'*',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the site name.
|
||||||
|
*/
|
||||||
|
public function siteName(): string
|
||||||
|
{
|
||||||
|
return get_bloginfo('name', 'display');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function with()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'Colour' => new Utilities\Colour,
|
||||||
|
'VideoSrcset' => new Utilities\VideoSrcset,
|
||||||
|
'ImageSrcset' => new Utilities\ImageSrcset,
|
||||||
|
'siteName' => $this->siteName(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
31
app/View/Composers/Blocks.php
Normal file
31
app/View/Composers/Blocks.php
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Composers;
|
||||||
|
|
||||||
|
use Roots\Acorn\View\Composer;
|
||||||
|
use App\Utilities;
|
||||||
|
|
||||||
|
class Blocks extends Composer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* List of views served by this composer.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $views = [
|
||||||
|
'layouts.block-acf',
|
||||||
|
'partials.block-*',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data to be passed to view before rendering.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function with()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'CssClasses' => new Utilities\CssClasses,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
90
app/View/Composers/Comments.php
Normal file
90
app/View/Composers/Comments.php
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Composers;
|
||||||
|
|
||||||
|
use Roots\Acorn\View\Composer;
|
||||||
|
|
||||||
|
class Comments extends Composer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* List of views served by this composer.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $views = [
|
||||||
|
'partials.comments',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The comment title.
|
||||||
|
*/
|
||||||
|
public function title(): string
|
||||||
|
{
|
||||||
|
return sprintf(
|
||||||
|
/* translators: %1$s is replaced with the number of comments and %2$s with the post title */
|
||||||
|
_nx('%1$s response to “%2$s”', '%1$s responses to “%2$s”', get_comments_number(), 'comments title', 'sage'),
|
||||||
|
get_comments_number() === 1 ? _x('One', 'comments title', 'sage') : number_format_i18n(get_comments_number()),
|
||||||
|
get_the_title()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the comments.
|
||||||
|
*/
|
||||||
|
public function responses(): ?string
|
||||||
|
{
|
||||||
|
if (! have_comments()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wp_list_comments([
|
||||||
|
'style' => 'ol',
|
||||||
|
'short_ping' => true,
|
||||||
|
'echo' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The previous comments link.
|
||||||
|
*/
|
||||||
|
public function previous(): ?string
|
||||||
|
{
|
||||||
|
if (! get_previous_comments_link()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return get_previous_comments_link(
|
||||||
|
__('← Older comments', 'sage')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The next comments link.
|
||||||
|
*/
|
||||||
|
public function next(): ?string
|
||||||
|
{
|
||||||
|
if (! get_next_comments_link()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return get_next_comments_link(
|
||||||
|
__('Newer comments →', 'sage')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the comments are paginated.
|
||||||
|
*/
|
||||||
|
public function paginated(): bool
|
||||||
|
{
|
||||||
|
return get_comment_pages_count() > 1 && get_option('page_comments');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the comments are closed.
|
||||||
|
*/
|
||||||
|
public function closed(): bool
|
||||||
|
{
|
||||||
|
return ! comments_open() && get_comments_number() != '0' && post_type_supports(get_post_type(), 'comments');
|
||||||
|
}
|
||||||
|
}
|
||||||
67
app/View/Composers/Post.php
Normal file
67
app/View/Composers/Post.php
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Composers;
|
||||||
|
|
||||||
|
use Roots\Acorn\View\Composer;
|
||||||
|
|
||||||
|
class Post extends Composer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* List of views served by this composer.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $views = [
|
||||||
|
'partials.page-header',
|
||||||
|
'partials.content',
|
||||||
|
'partials.content-*',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the post title.
|
||||||
|
*/
|
||||||
|
public function title(): string
|
||||||
|
{
|
||||||
|
if ($this->view->name() !== 'partials.page-header') {
|
||||||
|
return get_the_title();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_home()) {
|
||||||
|
if ($home = get_option('page_for_posts', true)) {
|
||||||
|
return get_the_title($home);
|
||||||
|
}
|
||||||
|
|
||||||
|
return __('Latest Posts', 'sage');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_archive()) {
|
||||||
|
return get_the_archive_title();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_search()) {
|
||||||
|
return sprintf(
|
||||||
|
/* translators: %s is replaced with the search query */
|
||||||
|
__('Search Results for %s', 'sage'),
|
||||||
|
get_search_query()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_404()) {
|
||||||
|
return __('Not Found', 'sage');
|
||||||
|
}
|
||||||
|
|
||||||
|
return get_the_title();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the pagination links.
|
||||||
|
*/
|
||||||
|
public function pagination(): string
|
||||||
|
{
|
||||||
|
return wp_link_pages([
|
||||||
|
'echo' => 0,
|
||||||
|
'before' => '<p>'.__('Pages:', 'sage'),
|
||||||
|
'after' => '</p>',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/View/Composers/Socials.php
Normal file
35
app/View/Composers/Socials.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Composers;
|
||||||
|
|
||||||
|
use Roots\Acorn\View\Composer;
|
||||||
|
|
||||||
|
class Socials extends Composer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* List of views served by this composer.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected static $views = [
|
||||||
|
'components.socials',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data to be passed to view before rendering.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function with()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'socials' => get_posts([
|
||||||
|
'post_type' => 'social',
|
||||||
|
'order' => 'ASC',
|
||||||
|
'orderby' => 'menu_order name',
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids',
|
||||||
|
]),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Theme customizer
|
|
||||||
*/
|
|
||||||
add_action('customize_register', function (\WP_Customize_Manager $wp_customize) {
|
|
||||||
// Add postMessage support
|
|
||||||
$wp_customize->get_setting('blogname')->transport = 'postMessage';
|
|
||||||
$wp_customize->selective_refresh->add_partial('blogname', [
|
|
||||||
'selector' => '.brand',
|
|
||||||
'render_callback' => function () {
|
|
||||||
bloginfo('name');
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Customizer JS
|
|
||||||
*/
|
|
||||||
add_action('customize_preview_init', function () {
|
|
||||||
wp_enqueue_script('sage/customizer.js', asset_path('scripts/customizer.js'), ['customize-preview'], null, true);
|
|
||||||
});
|
|
||||||
328
app/blocks.php
Normal file
328
app/blocks.php
Normal file
@@ -0,0 +1,328 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Theme Blocks.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Blocks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable block styles in frontend
|
||||||
|
*/
|
||||||
|
add_filter( 'should_load_separate_core_block_assets', '__return_false', 99 );
|
||||||
|
add_filter( 'wp_img_tag_add_auto_sizes', '__return_false' );
|
||||||
|
add_action( 'init', __NAMESPACE__ . '\\remove_action_block_inline' );
|
||||||
|
add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\\disable_frontend_inline_css', 20 );
|
||||||
|
add_action( 'template_redirect', __NAMESPACE__ . '\\delete_block_support_inline_css' );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* block editor back end tweaks
|
||||||
|
* - Disable all core blocks except what we need as inner blocks
|
||||||
|
* - resources/js/editor.js handles hiding the inner blocks at the top level
|
||||||
|
*/
|
||||||
|
add_action( 'allowed_block_types_all', __NAMESPACE__ . '\\list_allowed', 100, 2 );
|
||||||
|
add_action( 'admin_init', __NAMESPACE__ . '\\admin_block_cleanup' );
|
||||||
|
add_filter( 'block_type_metadata', __NAMESPACE__ . '\\unset_core_supports' );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom blocks
|
||||||
|
*/
|
||||||
|
add_filter( 'block_categories_all' , __NAMESPACE__ . '\\add_categories' );
|
||||||
|
add_filter( 'badegg_block_types_allow', __NAMESPACE__ . '\\allowed_list' );
|
||||||
|
add_action( 'init', __NAMESPACE__ . '\\auto_register' );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Core Blocks
|
||||||
|
*/
|
||||||
|
add_filter( 'render_block_core/details', __NAMESPACE__ . '\\core_details_modified', 10, 2 );
|
||||||
|
add_filter( 'render_block_core/image', __NAMESPACE__ . '\\core_image_modified', 10, 2 );
|
||||||
|
|
||||||
|
|
||||||
|
function remove_action_block_inline()
|
||||||
|
{
|
||||||
|
remove_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles' );
|
||||||
|
remove_action( 'wp_enqueue_scripts', 'wp_enqueue_block_support_styles');
|
||||||
|
remove_action( 'wp_footer', 'wp_enqueue_global_styles', 1 );
|
||||||
|
remove_action( 'wp_body_open', 'wp_global_styles_render_svg_filters' );
|
||||||
|
}
|
||||||
|
|
||||||
|
function admin_block_cleanup()
|
||||||
|
{
|
||||||
|
remove_action( 'enqueue_block_editor_assets', 'wp_enqueue_editor_block_directory_assets' );
|
||||||
|
}
|
||||||
|
|
||||||
|
function disable_frontend_inline_css()
|
||||||
|
{
|
||||||
|
wp_dequeue_style( 'wp-block-library' );
|
||||||
|
wp_dequeue_style( 'wp-block-library-theme' );
|
||||||
|
wp_dequeue_style( 'classic-theme-styles' );
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete_block_support_inline_css ()
|
||||||
|
{
|
||||||
|
ob_start( function ( $html ) {
|
||||||
|
return preg_replace(
|
||||||
|
'#<style id=[\'"]core-block-supports-inline-css[\'"][^>]*>.*?</style>#s',
|
||||||
|
'',
|
||||||
|
$html
|
||||||
|
);
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
function unset_core_supports($metadata){
|
||||||
|
$name = $metadata['name'];
|
||||||
|
|
||||||
|
if (str_starts_with($name, 'core/') ) {
|
||||||
|
unset($metadata['supports']['color']);
|
||||||
|
unset($metadata['supports']['typography']);
|
||||||
|
unset($metadata['supports']['border']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $metadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function allowed_list($allowed){
|
||||||
|
return array_merge($allowed, [
|
||||||
|
// 'core/categories',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_categories( $categories ) {
|
||||||
|
|
||||||
|
// Adding a new category.
|
||||||
|
$categories = array_merge([
|
||||||
|
[
|
||||||
|
'slug' => 'badegg',
|
||||||
|
'title' => __('Provided by Bad Egg Digital'),
|
||||||
|
],
|
||||||
|
], $categories);
|
||||||
|
|
||||||
|
return $categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
function auto_register() {
|
||||||
|
$blocks = glob(get_theme_file_path('resources/views/blocks/*/block.json'));
|
||||||
|
|
||||||
|
foreach ($blocks as $block_json) {
|
||||||
|
$json = json_decode(file_get_contents($block_json));
|
||||||
|
$slug = basename(dirname($block_json));
|
||||||
|
$blockPath = "resources/views/blocks/{$slug}";
|
||||||
|
|
||||||
|
$viewScript = "{$blockPath}/view.js";
|
||||||
|
$script = "{$blockPath}/script.js";
|
||||||
|
$editorCSS = "{$blockPath}/editor.scss";
|
||||||
|
$style = "{$blockPath}/style.scss";
|
||||||
|
|
||||||
|
// editorStyle
|
||||||
|
if (file_exists(get_theme_file_path($editorCSS))) {
|
||||||
|
wp_register_style(
|
||||||
|
"{$slug}-editor-style",
|
||||||
|
\Vite::asset($editorCSS),
|
||||||
|
[],
|
||||||
|
null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// script
|
||||||
|
if(file_exists(get_theme_file_path($script))) {
|
||||||
|
wp_register_script(
|
||||||
|
"{$slug}-script",
|
||||||
|
\Vite::asset($script),
|
||||||
|
[],
|
||||||
|
null,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// style
|
||||||
|
if (file_exists(get_theme_file_path($style))) {
|
||||||
|
wp_register_style(
|
||||||
|
"{$slug}-style",
|
||||||
|
\Vite::asset($style),
|
||||||
|
[],
|
||||||
|
null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// viewScript
|
||||||
|
if(file_exists(get_theme_file_path($viewScript))) {
|
||||||
|
wp_register_script(
|
||||||
|
"{$slug}-view-script",
|
||||||
|
\Vite::asset($viewScript),
|
||||||
|
[],
|
||||||
|
null,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$props = [
|
||||||
|
'editor_style' => "{$slug}-editor-style",
|
||||||
|
'style' => "{$slug}-style",
|
||||||
|
'script' => "{$slug}-script",
|
||||||
|
'view_script' => "{$slug}-view-script",
|
||||||
|
'attributes' => attributes(),
|
||||||
|
];
|
||||||
|
|
||||||
|
if(!property_exists($json, 'acf') && \Roots\view()->exists("blocks.{$slug}.render")) {
|
||||||
|
$props['render_callback'] = function ($attributes, $content, $block) {
|
||||||
|
$slug = basename($block->name);
|
||||||
|
|
||||||
|
return \Roots\view("blocks.{$slug}.render", [
|
||||||
|
'attributes' => $attributes,
|
||||||
|
'content' => $content,
|
||||||
|
'block' => $block,
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
register_block_type($block_json, $props);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function list_inner()
|
||||||
|
{
|
||||||
|
$file = file_get_contents(get_theme_file_path("resources/json/block-core-whitelist.json"));
|
||||||
|
$json = json_decode($file);
|
||||||
|
|
||||||
|
return $json;
|
||||||
|
}
|
||||||
|
|
||||||
|
function attributes()
|
||||||
|
{
|
||||||
|
$file = file_get_contents(get_theme_file_path("resources/json/block-attributes.json"));
|
||||||
|
$json = json_decode($file, true);
|
||||||
|
|
||||||
|
return $json;
|
||||||
|
}
|
||||||
|
|
||||||
|
function list_all()
|
||||||
|
{
|
||||||
|
$blocks = array_map(function($block) {
|
||||||
|
$name = $block->name;
|
||||||
|
|
||||||
|
return $block->name;
|
||||||
|
|
||||||
|
}, \WP_Block_Type_Registry::get_instance()->get_all_registered());
|
||||||
|
|
||||||
|
return array_values($blocks);
|
||||||
|
}
|
||||||
|
|
||||||
|
function list_custom()
|
||||||
|
{
|
||||||
|
return array_filter(list_all(), function($value){
|
||||||
|
if (str_starts_with($value, 'acf/') || str_starts_with($value, 'badegg/')) return $value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function list_allowed()
|
||||||
|
{
|
||||||
|
$add_allowed = [];
|
||||||
|
|
||||||
|
return array_merge(
|
||||||
|
list_custom(),
|
||||||
|
list_inner(),
|
||||||
|
apply_filters('badegg_block_types_allow', $add_allowed),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function render_acf($block, $content = '', $is_preview = false, $post_id = 0, $wp_block = false, $context = false) {
|
||||||
|
$slug = basename($block['name']);
|
||||||
|
$block['slug'] = $slug;
|
||||||
|
|
||||||
|
$blade = \Roots\view(
|
||||||
|
"blocks.{$slug}.render",
|
||||||
|
[
|
||||||
|
'block' => $block,
|
||||||
|
'content' => $content,
|
||||||
|
'is_preview' => $is_preview,
|
||||||
|
'post_id' => $post_id,
|
||||||
|
'wp_block' => $wp_block,
|
||||||
|
'context' => $context,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
if($blade) {
|
||||||
|
echo $blade;
|
||||||
|
} else {
|
||||||
|
ob_start(); ?>
|
||||||
|
|
||||||
|
<section class="section bg-error knockout">
|
||||||
|
<div class="container container-small align-centre wysiwyg">
|
||||||
|
<h2>Missing Blade Template</h2>
|
||||||
|
<p>(resources/views/blocks/<?= $slug ?>/render.blade.php)</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<?php echo ob_get_clean();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function core_details_modified($content, $block)
|
||||||
|
{
|
||||||
|
$content = str_replace('</summary>', '</summary><div class="wp-block-details__inner inner inner-zero-x wysiwyg">', $content);
|
||||||
|
$content = str_replace('</details>', '</div></details>', $content);
|
||||||
|
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
|
|
||||||
|
function core_image_modified($content, $block)
|
||||||
|
{
|
||||||
|
if(!$content) return '';
|
||||||
|
|
||||||
|
$dom = new \DomDocument();
|
||||||
|
$dom->strictErrorChecking = false;
|
||||||
|
@$dom->loadHTML($content);
|
||||||
|
|
||||||
|
$images = @$dom->getElementsByTagName('img');
|
||||||
|
$figures = @$dom->getElementsByTagName('figure');
|
||||||
|
|
||||||
|
if(!$figures) return $content;
|
||||||
|
|
||||||
|
// get image data
|
||||||
|
$imageID = @$block['attrs']['id'];
|
||||||
|
$lazy = wp_get_attachment_image_src($imageID, 'lazy');
|
||||||
|
$specifiedSize = @wp_get_attachment_image_src($imageID, $block['sizeSlug']);
|
||||||
|
$large = wp_get_attachment_image_src($imageID, '2048x2048');
|
||||||
|
|
||||||
|
// create lightbox link node
|
||||||
|
$link = $dom->createElement('a');
|
||||||
|
$link->setAttribute('class', 'badegg-lightbox');
|
||||||
|
$link->setAttribute('target', '_blank');
|
||||||
|
$link->setAttribute('role', 'button');
|
||||||
|
$link->setAttribute('tabindex', '0');
|
||||||
|
$link->setAttribute('aria-label', __('expand image', 'badegg'));
|
||||||
|
|
||||||
|
foreach($images as $image) {
|
||||||
|
// define new image attributes
|
||||||
|
$src = $image->getAttribute('src');
|
||||||
|
$srcset = $image->getAttribute('srcset');
|
||||||
|
$class = $image->getAttribute('class');
|
||||||
|
|
||||||
|
// set image attributes
|
||||||
|
$image->setAttribute('src', $lazy[0]);
|
||||||
|
$image->setAttribute('srcset', '');
|
||||||
|
$image->setAttribute('data-src', $src);
|
||||||
|
$image->setAttribute('data-srcset', $srcset);
|
||||||
|
$image->setAttribute('class', $class . ' lazy');
|
||||||
|
|
||||||
|
if($specifiedSize) {
|
||||||
|
$image->setAttribute('width', $specifiedSize[1]);
|
||||||
|
$image->setAttribute('height', $specifiedSize[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// clone lightbox link
|
||||||
|
$linkClone = $link->cloneNode();
|
||||||
|
|
||||||
|
// set lightbox link attributes
|
||||||
|
$linkClone->setAttribute('href', $large[0]);
|
||||||
|
|
||||||
|
// replace image with lightbox link
|
||||||
|
$image->parentNode->replaceChild($linkClone, $image);
|
||||||
|
|
||||||
|
// append original image to lightbox link
|
||||||
|
$linkClone->appendChild($image);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $dom->saveHTML($figures[0]);
|
||||||
|
}
|
||||||
@@ -1,70 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Theme filters.
|
||||||
|
*/
|
||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add <body> classes
|
* Add "… Continued" to the excerpt.
|
||||||
*/
|
*
|
||||||
add_filter('body_class', function (array $classes) {
|
* @return string
|
||||||
/** Add page slug if it doesn't exist */
|
|
||||||
if (is_single() || is_page() && !is_front_page()) {
|
|
||||||
if (!in_array(basename(get_permalink()), $classes)) {
|
|
||||||
$classes[] = basename(get_permalink());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Add class if sidebar is active */
|
|
||||||
if (display_sidebar()) {
|
|
||||||
$classes[] = 'sidebar-primary';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Clean up class names for custom templates */
|
|
||||||
$classes = array_map(function ($class) {
|
|
||||||
return preg_replace(['/-blade(-php)?$/', '/^page-template-views/'], '', $class);
|
|
||||||
}, $classes);
|
|
||||||
|
|
||||||
return array_filter($classes);
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add "… Continued" to the excerpt
|
|
||||||
*/
|
*/
|
||||||
add_filter('excerpt_more', function () {
|
add_filter('excerpt_more', function () {
|
||||||
return ' … <a href="' . get_permalink() . '">' . __('Continued', 'sage') . '</a>';
|
return sprintf(' … <a href="%s">%s</a>', get_permalink(), __('Continued', 'sage'));
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Template Hierarchy should search for .blade.php files
|
|
||||||
*/
|
|
||||||
collect([
|
|
||||||
'index', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date', 'home',
|
|
||||||
'frontpage', 'page', 'paged', 'search', 'single', 'singular', 'attachment'
|
|
||||||
])->map(function ($type) {
|
|
||||||
add_filter("{$type}_template_hierarchy", __NAMESPACE__.'\\filter_templates');
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Render page using Blade
|
|
||||||
*/
|
|
||||||
add_filter('template_include', function ($template) {
|
|
||||||
$data = collect(get_body_class())->reduce(function ($data, $class) use ($template) {
|
|
||||||
return apply_filters("sage/template/{$class}/data", $data, $template);
|
|
||||||
}, []);
|
|
||||||
if ($template) {
|
|
||||||
echo template($template, $data);
|
|
||||||
return get_stylesheet_directory().'/index.php';
|
|
||||||
}
|
|
||||||
return $template;
|
|
||||||
}, PHP_INT_MAX);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tell WordPress how to find the compiled path of comments.blade.php
|
|
||||||
*/
|
|
||||||
add_filter('comments_template', function ($comments_template) {
|
|
||||||
$comments_template = str_replace(
|
|
||||||
[get_stylesheet_directory(), get_template_directory()],
|
|
||||||
'',
|
|
||||||
$comments_template
|
|
||||||
);
|
|
||||||
return template_path(locate_template(["views/{$comments_template}", $comments_template]) ?: $comments_template);
|
|
||||||
});
|
});
|
||||||
|
|||||||
160
app/helpers.php
160
app/helpers.php
@@ -1,160 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App;
|
|
||||||
|
|
||||||
use Roots\Sage\Container;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the sage container.
|
|
||||||
*
|
|
||||||
* @param string $abstract
|
|
||||||
* @param array $parameters
|
|
||||||
* @param Container $container
|
|
||||||
* @return Container|mixed
|
|
||||||
*/
|
|
||||||
function sage($abstract = null, $parameters = [], Container $container = null)
|
|
||||||
{
|
|
||||||
$container = $container ?: Container::getInstance();
|
|
||||||
if (!$abstract) {
|
|
||||||
return $container;
|
|
||||||
}
|
|
||||||
return $container->bound($abstract)
|
|
||||||
? $container->makeWith($abstract, $parameters)
|
|
||||||
: $container->makeWith("sage.{$abstract}", $parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get / set the specified configuration value.
|
|
||||||
*
|
|
||||||
* If an array is passed as the key, we will assume you want to set an array of values.
|
|
||||||
*
|
|
||||||
* @param array|string $key
|
|
||||||
* @param mixed $default
|
|
||||||
* @return mixed|\Roots\Sage\Config
|
|
||||||
* @copyright Taylor Otwell
|
|
||||||
* @link https://github.com/laravel/framework/blob/c0970285/src/Illuminate/Foundation/helpers.php#L254-L265
|
|
||||||
*/
|
|
||||||
function config($key = null, $default = null)
|
|
||||||
{
|
|
||||||
if (is_null($key)) {
|
|
||||||
return sage('config');
|
|
||||||
}
|
|
||||||
if (is_array($key)) {
|
|
||||||
return sage('config')->set($key);
|
|
||||||
}
|
|
||||||
return sage('config')->get($key, $default);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $file
|
|
||||||
* @param array $data
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function template($file, $data = [])
|
|
||||||
{
|
|
||||||
return sage('blade')->render($file, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve path to a compiled blade view
|
|
||||||
* @param $file
|
|
||||||
* @param array $data
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function template_path($file, $data = [])
|
|
||||||
{
|
|
||||||
return sage('blade')->compiledPath($file, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $asset
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function asset_path($asset)
|
|
||||||
{
|
|
||||||
return sage('assets')->getUri($asset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string|string[] $templates Possible template files
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
function filter_templates($templates)
|
|
||||||
{
|
|
||||||
$paths = apply_filters('sage/filter_templates/paths', [
|
|
||||||
'views',
|
|
||||||
'resources/views'
|
|
||||||
]);
|
|
||||||
$paths_pattern = "#^(" . implode('|', $paths) . ")/#";
|
|
||||||
|
|
||||||
return collect($templates)
|
|
||||||
->map(function ($template) use ($paths_pattern) {
|
|
||||||
/** Remove .blade.php/.blade/.php from template names */
|
|
||||||
$template = preg_replace('#\.(blade\.?)?(php)?$#', '', ltrim($template));
|
|
||||||
|
|
||||||
/** Remove partial $paths from the beginning of template names */
|
|
||||||
if (strpos($template, '/')) {
|
|
||||||
$template = preg_replace($paths_pattern, '', $template);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $template;
|
|
||||||
})
|
|
||||||
->flatMap(function ($template) use ($paths) {
|
|
||||||
return collect($paths)
|
|
||||||
->flatMap(function ($path) use ($template) {
|
|
||||||
return [
|
|
||||||
"{$path}/{$template}.blade.php",
|
|
||||||
"{$path}/{$template}.php",
|
|
||||||
"{$template}.blade.php",
|
|
||||||
"{$template}.php",
|
|
||||||
];
|
|
||||||
});
|
|
||||||
})
|
|
||||||
->filter()
|
|
||||||
->unique()
|
|
||||||
->all();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string|string[] $templates Relative path to possible template files
|
|
||||||
* @return string Location of the template
|
|
||||||
*/
|
|
||||||
function locate_template($templates)
|
|
||||||
{
|
|
||||||
return \locate_template(filter_templates($templates));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether to show the sidebar
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
function display_sidebar()
|
|
||||||
{
|
|
||||||
static $display;
|
|
||||||
isset($display) || $display = apply_filters('sage/display_sidebar', false);
|
|
||||||
return $display;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Page titles
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function title()
|
|
||||||
{
|
|
||||||
if (is_home()) {
|
|
||||||
if ($home = get_option('page_for_posts', true)) {
|
|
||||||
return get_the_title($home);
|
|
||||||
}
|
|
||||||
return __('Latest Posts', 'sage');
|
|
||||||
}
|
|
||||||
if (is_archive()) {
|
|
||||||
return get_the_archive_title();
|
|
||||||
}
|
|
||||||
if (is_search()) {
|
|
||||||
return sprintf(__('Search Results for %s', 'sage'), get_search_query());
|
|
||||||
}
|
|
||||||
if (is_404()) {
|
|
||||||
return __('Not Found', 'sage');
|
|
||||||
}
|
|
||||||
return get_the_title();
|
|
||||||
}
|
|
||||||
208
app/setup.php
208
app/setup.php
@@ -1,128 +1,180 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Theme setup.
|
||||||
|
*/
|
||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
use Roots\Sage\Container;
|
use Illuminate\Support\Facades\Vite;
|
||||||
use Roots\Sage\Assets\JsonManifest;
|
|
||||||
use Roots\Sage\Template\Blade;
|
|
||||||
use Roots\Sage\Template\BladeProvider;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Theme assets
|
* Inject styles into the block editor.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
*/
|
*/
|
||||||
add_action('wp_enqueue_scripts', function () {
|
add_filter('block_editor_settings_all', function ($settings) {
|
||||||
wp_enqueue_style('sage/main.css', asset_path('styles/main.css'), false, null);
|
$style = Vite::asset('resources/css/editor.scss');
|
||||||
wp_enqueue_script('sage/main.js', asset_path('scripts/main.js'), ['jquery'], null, true);
|
|
||||||
}, 100);
|
$settings['styles'][] = [
|
||||||
|
'css' => "@import url('{$style}')",
|
||||||
|
];
|
||||||
|
|
||||||
|
return $settings;
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Theme setup
|
* Inject scripts into the block editor.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
add_filter('admin_head', function () {
|
||||||
|
if (! get_current_screen()?->is_block_editor()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$dependencies = json_decode(Vite::content('editor.deps.json'));
|
||||||
|
|
||||||
|
foreach ($dependencies as $dependency) {
|
||||||
|
if (! wp_script_is($dependency)) {
|
||||||
|
wp_enqueue_script($dependency);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo Vite::withEntryPoints([
|
||||||
|
'resources/js/editor.js',
|
||||||
|
])->toHtml();
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the generated theme.json file.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
add_filter('theme_file_path', function ($path, $file) {
|
||||||
|
return $file === 'theme.json'
|
||||||
|
? public_path('build/assets/theme.json')
|
||||||
|
: $path;
|
||||||
|
}, 10, 2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the initial theme setup.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
add_action('after_setup_theme', function () {
|
add_action('after_setup_theme', function () {
|
||||||
/**
|
/**
|
||||||
* Enable features from Soil when plugin is activated
|
* Disable full-site editing support.
|
||||||
* @link https://roots.io/plugins/soil/
|
*
|
||||||
|
* @link https://wptavern.com/gutenberg-10-5-embeds-pdfs-adds-verse-block-color-options-and-introduces-new-patterns
|
||||||
*/
|
*/
|
||||||
add_theme_support('soil-clean-up');
|
remove_theme_support('block-templates');
|
||||||
add_theme_support('soil-jquery-cdn');
|
|
||||||
add_theme_support('soil-nav-walker');
|
|
||||||
add_theme_support('soil-nice-search');
|
|
||||||
add_theme_support('soil-relative-urls');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable plugins to manage the document title
|
* Register the navigation menus.
|
||||||
|
*
|
||||||
|
* @link https://developer.wordpress.org/reference/functions/register_nav_menus/
|
||||||
|
*/
|
||||||
|
register_nav_menus([
|
||||||
|
'primary_navigation' => __('Primary Navigation', 'sage'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable the default block patterns.
|
||||||
|
*
|
||||||
|
* @link https://developer.wordpress.org/block-editor/developers/themes/theme-support/#disabling-the-default-block-patterns
|
||||||
|
*/
|
||||||
|
remove_theme_support('core-block-patterns');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable plugins to manage the document title.
|
||||||
|
*
|
||||||
* @link https://developer.wordpress.org/reference/functions/add_theme_support/#title-tag
|
* @link https://developer.wordpress.org/reference/functions/add_theme_support/#title-tag
|
||||||
*/
|
*/
|
||||||
add_theme_support('title-tag');
|
add_theme_support('title-tag');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register navigation menus
|
* Enable post thumbnail support.
|
||||||
* @link https://developer.wordpress.org/reference/functions/register_nav_menus/
|
*
|
||||||
*/
|
|
||||||
register_nav_menus([
|
|
||||||
'primary_navigation' => __('Primary Navigation', 'sage')
|
|
||||||
]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable post thumbnails
|
|
||||||
* @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
|
* @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
|
||||||
*/
|
*/
|
||||||
add_theme_support('post-thumbnails');
|
add_theme_support('post-thumbnails');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable HTML5 markup support
|
* Enable responsive embed support.
|
||||||
|
*
|
||||||
|
* @link https://developer.wordpress.org/block-editor/how-to-guides/themes/theme-support/#responsive-embedded-content
|
||||||
|
*/
|
||||||
|
add_theme_support('responsive-embeds');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable HTML5 markup support.
|
||||||
|
*
|
||||||
* @link https://developer.wordpress.org/reference/functions/add_theme_support/#html5
|
* @link https://developer.wordpress.org/reference/functions/add_theme_support/#html5
|
||||||
*/
|
*/
|
||||||
add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);
|
add_theme_support('html5', [
|
||||||
|
'caption',
|
||||||
|
'comment-form',
|
||||||
|
'comment-list',
|
||||||
|
'gallery',
|
||||||
|
'search-form',
|
||||||
|
'script',
|
||||||
|
'style',
|
||||||
|
]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable selective refresh for widgets in customizer
|
* Enable selective refresh for widgets in customizer.
|
||||||
* @link https://developer.wordpress.org/themes/advanced-topics/customizer-api/#theme-support-in-sidebars
|
*
|
||||||
|
* @link https://developer.wordpress.org/reference/functions/add_theme_support/#customize-selective-refresh-widgets
|
||||||
*/
|
*/
|
||||||
add_theme_support('customize-selective-refresh-widgets');
|
add_theme_support('customize-selective-refresh-widgets');
|
||||||
|
|
||||||
/**
|
|
||||||
* Use main stylesheet for visual editor
|
|
||||||
* @see resources/assets/styles/layouts/_tinymce.scss
|
|
||||||
*/
|
|
||||||
add_editor_style(asset_path('styles/main.css'));
|
|
||||||
}, 20);
|
}, 20);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register sidebars
|
* Register the theme sidebars.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
add_action('widgets_init', function () {
|
add_action('widgets_init', function () {
|
||||||
$config = [
|
$config = [
|
||||||
'before_widget' => '<section class="widget %1$s %2$s">',
|
'before_widget' => '<section class="widget %1$s %2$s">',
|
||||||
'after_widget' => '</section>',
|
'after_widget' => '</section>',
|
||||||
'before_title' => '<h3>',
|
'before_title' => '<h3>',
|
||||||
'after_title' => '</h3>'
|
'after_title' => '</h3>',
|
||||||
];
|
];
|
||||||
|
|
||||||
register_sidebar([
|
register_sidebar([
|
||||||
'name' => __('Primary', 'sage'),
|
'name' => __('Primary', 'sage'),
|
||||||
'id' => 'sidebar-primary'
|
'id' => 'sidebar-primary',
|
||||||
] + $config);
|
] + $config);
|
||||||
|
|
||||||
register_sidebar([
|
register_sidebar([
|
||||||
'name' => __('Footer', 'sage'),
|
'name' => __('Footer', 'sage'),
|
||||||
'id' => 'sidebar-footer'
|
'id' => 'sidebar-footer',
|
||||||
] + $config);
|
] + $config);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
add_filter('admin_post_thumbnail_size', function(){
|
||||||
* Updates the `$post` variable on each iteration of the loop.
|
return "medium";
|
||||||
* Note: updated value is only available for subsequently loaded views, such as partials
|
|
||||||
*/
|
|
||||||
add_action('the_post', function ($post) {
|
|
||||||
sage('blade')->share('post', $post);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
add_action( 'init', __NAMESPACE__ . '\\cors', 15 );
|
||||||
* Setup Sage options
|
function cors() {
|
||||||
*/
|
|
||||||
add_action('after_setup_theme', function () {
|
|
||||||
/**
|
|
||||||
* Add JsonManifest to Sage container
|
|
||||||
*/
|
|
||||||
sage()->singleton('sage.assets', function () {
|
|
||||||
return new JsonManifest(config('assets.manifest'), config('assets.uri'));
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
if(WP_ENV == 'development'):
|
||||||
* Add Blade to Sage container
|
header( 'Access-Control-Allow-Origin: *' );
|
||||||
*/
|
endif;
|
||||||
sage()->singleton('sage.blade', function (Container $app) {
|
}
|
||||||
$cachePath = config('view.compiled');
|
|
||||||
if (!file_exists($cachePath)) {
|
|
||||||
wp_mkdir_p($cachePath);
|
|
||||||
}
|
|
||||||
(new BladeProvider($app))->register();
|
|
||||||
return new Blade($app['view']);
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
add_action('wp_head', function(){
|
||||||
* Create @asset() Blade directive
|
if(file_exists(get_theme_file_path('resources/images/favicon/site.webmanifest'))) {
|
||||||
*/
|
echo \Roots\view("partials.favicon")->render();
|
||||||
sage('blade')->compiler()->directive('asset', function ($asset) {
|
}
|
||||||
return "<?= " . __NAMESPACE__ . "\\asset_path({$asset}); ?>";
|
});
|
||||||
});
|
|
||||||
|
add_action('after_setup_theme', function(){
|
||||||
|
$image_srcset = new Utilities\ImageSrcset;
|
||||||
|
$image_srcset->add(['name' => 'hero', 'width' => 1920, 'height' => 1080]);
|
||||||
|
add_image_size('lazy', 50, 50);
|
||||||
|
add_image_size('hero', 1920, 1080, true);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,9 +14,21 @@
|
|||||||
"name": "Scott Walkinshaw",
|
"name": "Scott Walkinshaw",
|
||||||
"email": "scott.walkinshaw@gmail.com",
|
"email": "scott.walkinshaw@gmail.com",
|
||||||
"homepage": "https://github.com/swalkinshaw"
|
"homepage": "https://github.com/swalkinshaw"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "QWp6t",
|
||||||
|
"email": "hi@qwp6t.me",
|
||||||
|
"homepage": "https://github.com/qwp6t"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Brandon Nifong",
|
||||||
|
"email": "brandon@tendency.me",
|
||||||
|
"homepage": "https://github.com/log1x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"keywords": ["wordpress"],
|
"keywords": [
|
||||||
|
"wordpress"
|
||||||
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/roots/sage/issues",
|
"issues": "https://github.com/roots/sage/issues",
|
||||||
"forum": "https://discourse.roots.io/"
|
"forum": "https://discourse.roots.io/"
|
||||||
@@ -27,20 +39,26 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7",
|
"php": ">=8.2",
|
||||||
"composer/installers": "~1.0",
|
"roots/acorn": "^5.0",
|
||||||
"illuminate/support": "~5.4",
|
"ourcodeworld/name-that-color": "dev-master"
|
||||||
"roots/sage-lib": "~9.0.0-beta.3",
|
|
||||||
"soberwp/controller": "dev-master"
|
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"squizlabs/php_codesniffer": "^2.8.0",
|
"laravel/pint": "^1.20"
|
||||||
"roots/sage-installer": "~1.2"
|
|
||||||
},
|
},
|
||||||
|
"suggest": {
|
||||||
|
"log1x/sage-directives": "A collection of useful Blade directives for WordPress and Sage (^1.0)."
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"optimize-autoloader": true,
|
||||||
|
"preferred-install": "dist",
|
||||||
|
"sort-packages": true
|
||||||
|
},
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"prefer-stable": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": ["phpcs"],
|
"post-autoload-dump": [
|
||||||
"post-create-project-cmd": [
|
"Roots\\Acorn\\ComposerScripts::postAutoloadDump"
|
||||||
"Roots\\Sage\\Installer\\ComposerScript::postCreateProject"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
7056
composer.lock
generated
7056
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,31 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Assets Manifest
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Your asset manifest is used by Sage to assist WordPress and your views
|
|
||||||
| with rendering the correct URLs for your assets. This is especially
|
|
||||||
| useful for statically referencing assets with dynamically changing names
|
|
||||||
| as in the case of cache-busting.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'manifest' => get_theme_file_path().'/dist/assets.json',
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Assets Path URI
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| The asset manifest contains relative paths to your assets. This URI will
|
|
||||||
| be prepended when using Sage's asset management system. Change this if
|
|
||||||
| you are using a CDN.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'uri' => get_theme_file_uri().'/dist',
|
|
||||||
];
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Theme Directory
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This is the absolute path to your theme directory.
|
|
||||||
|
|
|
||||||
| Example:
|
|
||||||
| /srv/www/example.com/current/web/app/themes/sage
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'dir' => get_theme_file_path(),
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Theme Directory URI
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This is the web server URI to your theme directory.
|
|
||||||
|
|
|
||||||
| Example:
|
|
||||||
| https://example.com/app/themes/sage
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'uri' => get_theme_file_uri(),
|
|
||||||
];
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| View Storage Paths
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Most template systems load templates from disk. Here you may specify
|
|
||||||
| an array of paths that should be checked for your views.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'paths' => [
|
|
||||||
get_theme_file_path().'/resources/views',
|
|
||||||
get_parent_theme_file_path().'/resources/views',
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Compiled View Path
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This option determines where all the compiled Blade templates will be
|
|
||||||
| stored for your application. Typically, this is within the uploads
|
|
||||||
| directory. However, as usual, you are free to change this value.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'compiled' => wp_upload_dir()['basedir'].'/cache',
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| View Namespaces
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Blade has an underutilized feature that allows developers to add
|
|
||||||
| supplemental view paths that may contain conflictingly named views.
|
|
||||||
| These paths are prefixed with a namespace to get around the conflicts.
|
|
||||||
| A use case might be including views from within a plugin folder.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'namespaces' => [
|
|
||||||
/* Given the below example, in your views use something like: @include('WC::some.view.or.partial.here') */
|
|
||||||
// 'WC' => WP_PLUGIN_DIR.'/woocommerce/templates/',
|
|
||||||
],
|
|
||||||
];
|
|
||||||
82
functions.php
Normal file
82
functions.php
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Roots\Acorn\Application;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Register The Auto Loader
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Composer provides a convenient, automatically generated class loader for
|
||||||
|
| our theme. We will simply require it into the script here so that we
|
||||||
|
| don't have to worry about manually loading any of our classes later on.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (! file_exists($composer = __DIR__.'/vendor/autoload.php')) {
|
||||||
|
wp_die(__('Error locating autoloader. Please run <code>composer install</code>.', 'sage'));
|
||||||
|
}
|
||||||
|
|
||||||
|
require $composer;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Register The Bootloader
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The first thing we will do is schedule a new Acorn application container
|
||||||
|
| to boot when WordPress is finished loading the theme. The application
|
||||||
|
| serves as the "glue" for all the components of Laravel and is
|
||||||
|
| the IoC container for the system binding all of the various parts.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
Application::configure()
|
||||||
|
->withProviders([
|
||||||
|
App\Providers\ThemeServiceProvider::class,
|
||||||
|
])
|
||||||
|
->boot();
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Autoload PSR-4 files
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
function autoload_psr4($name) {
|
||||||
|
$path = __dir__ . '/app/' . $name . '/*.php';
|
||||||
|
$namespace = 'App\\' . $name;
|
||||||
|
|
||||||
|
foreach(glob($path) as $filename) {
|
||||||
|
$class = $namespace . '\\' . basename($filename, '.php');
|
||||||
|
new $class();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
autoload_psr4('PostTypes');
|
||||||
|
autoload_psr4('ACF');
|
||||||
|
autoload_psr4('Utilities');
|
||||||
|
autoload_psr4('Admin');
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Register Sage Theme Files
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Out of the box, Sage ships with categorically named theme files
|
||||||
|
| containing common functionality and setup to be bootstrapped with your
|
||||||
|
| theme. Simply add (or remove) files from the array below to change what
|
||||||
|
| is registered alongside Sage.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
collect(['setup', 'filters', 'blocks'])
|
||||||
|
->each(function ($file) {
|
||||||
|
if (! locate_template($file = "app/{$file}.php", true, true)) {
|
||||||
|
wp_die(
|
||||||
|
/* translators: %s is replaced with the relative file path */
|
||||||
|
sprintf(__('Error locating <code>%s</code> for inclusion.', 'sage'), $file)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
3
index.php
Normal file
3
index.php
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
echo view(app('sage.view'), app('sage.data'))->render();
|
||||||
11861
package-lock.json
generated
11861
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
141
package.json
141
package.json
@@ -1,132 +1,25 @@
|
|||||||
{
|
{
|
||||||
"name": "sage",
|
"name": "sage",
|
||||||
"version": "9.0.0-beta.3",
|
|
||||||
"author": "Roots <team@roots.io>",
|
|
||||||
"homepage": "https://roots.io/sage/",
|
|
||||||
"private": true,
|
"private": true,
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git://github.com/roots/sage.git"
|
|
||||||
},
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/roots/sage/issues"
|
|
||||||
},
|
|
||||||
"licenses": [
|
|
||||||
{
|
|
||||||
"type": "MIT",
|
|
||||||
"url": "http://opensource.org/licenses/MIT"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"browserslist": [
|
|
||||||
"last 2 versions",
|
|
||||||
"android 4",
|
|
||||||
"opera 12"
|
|
||||||
],
|
|
||||||
"eslintConfig": {
|
|
||||||
"root": true,
|
|
||||||
"extends": "eslint:recommended",
|
|
||||||
"globals": {
|
|
||||||
"wp": true
|
|
||||||
},
|
|
||||||
"env": {
|
|
||||||
"node": true,
|
|
||||||
"es6": true,
|
|
||||||
"amd": true,
|
|
||||||
"browser": true,
|
|
||||||
"jquery": true
|
|
||||||
},
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaFeatures": {
|
|
||||||
"globalReturn": true,
|
|
||||||
"generators": false,
|
|
||||||
"objectLiteralDuplicateProperties": false,
|
|
||||||
"experimentalObjectRestSpread": true
|
|
||||||
},
|
|
||||||
"ecmaVersion": 2017,
|
|
||||||
"sourceType": "module"
|
|
||||||
},
|
|
||||||
"plugins": [
|
|
||||||
"import"
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"import/core-modules": [],
|
|
||||||
"import/ignore": [
|
|
||||||
"node_modules",
|
|
||||||
"\\.(coffee|scss|css|less|hbs|svg|json)$"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
"comma-dangle": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"arrays": "always-multiline",
|
|
||||||
"objects": "always-multiline",
|
|
||||||
"imports": "always-multiline",
|
|
||||||
"exports": "always-multiline",
|
|
||||||
"functions": "ignore"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"stylelint": {
|
|
||||||
"extends": "stylelint-config-standard",
|
|
||||||
"rules": {
|
|
||||||
"no-empty-source": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"build": "webpack --progress --config resources/assets/build/webpack.config.js",
|
|
||||||
"build:production": "webpack --progress -p --config resources/assets/build/webpack.config.js",
|
|
||||||
"build:profile": "webpack --progress --profile --json --config resources/assets/build/webpack.config.js",
|
|
||||||
"start": "webpack --hide-modules --watch --config resources/assets/build/webpack.config.js",
|
|
||||||
"rmdist": "rimraf dist",
|
|
||||||
"lint": "npm run -s lint:scripts && npm run -s lint:styles",
|
|
||||||
"lint:scripts": "eslint resources/assets/scripts resources/assets/build",
|
|
||||||
"lint:styles": "stylelint resources/assets/styles/**/*.{css,sass,scss,sss,less}",
|
|
||||||
"test": "npm run -s lint"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6.9.4"
|
"node": ">=20.0.0"
|
||||||
|
},
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"translate": "npm run translate:pot && npm run translate:update",
|
||||||
|
"translate:pot": "wp i18n make-pot . ./resources/lang/sage.pot --include=\"theme.json,patterns,app,resources\"",
|
||||||
|
"translate:update": "for file in ./resources/lang/*.po; do wp i18n update-po ./resources/lang/sage.pot $file; done",
|
||||||
|
"translate:compile": "npm run translate:mo && npm run translate:js",
|
||||||
|
"translate:js": "wp i18n make-json ./resources/lang --pretty-print",
|
||||||
|
"translate:mo": "wp i18n make-mo ./resources/lang ./resources/lang"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "~7.1",
|
"@roots/vite-plugin": "^1.0.2",
|
||||||
"browser-sync": "~2.18",
|
"fast-glob": "^3.3.3",
|
||||||
"browsersync-webpack-plugin": "^0.6.0",
|
"laravel-vite-plugin": "^1.2.0",
|
||||||
"bs-html-injector": "~3.0",
|
"sass": "^1.93.2",
|
||||||
"buble-loader": "^0.4.1",
|
"vite": "^6.2.0"
|
||||||
"cache-loader": "~1.0",
|
|
||||||
"clean-webpack-plugin": "^0.1.16",
|
|
||||||
"copy-globs-webpack-plugin": "^0.2.0",
|
|
||||||
"css-loader": "^0.28.4",
|
|
||||||
"cssnano": "~4.0.0-rc.1",
|
|
||||||
"eslint": "~4.2",
|
|
||||||
"eslint-loader": "~1.9",
|
|
||||||
"eslint-plugin-import": "~2.7",
|
|
||||||
"extract-text-webpack-plugin": "~3.0",
|
|
||||||
"file-loader": "^0.11.2",
|
|
||||||
"imagemin-mozjpeg": "~6.0",
|
|
||||||
"imagemin-webpack-plugin": "~1.5.0-beta.0",
|
|
||||||
"import-glob": "~1.5",
|
|
||||||
"node-sass": "~4.5",
|
|
||||||
"postcss-loader": "~2.0",
|
|
||||||
"postcss-safe-parser": "~3.0",
|
|
||||||
"resolve-url-loader": "~2.1",
|
|
||||||
"rimraf": "~2.6",
|
|
||||||
"sass-loader": "~6.0",
|
|
||||||
"style-loader": "^0.18.2",
|
|
||||||
"stylelint": "~7.12",
|
|
||||||
"stylelint-config-standard": "~16.0",
|
|
||||||
"stylelint-webpack-plugin": "^0.8.0",
|
|
||||||
"url-loader": "^0.5.9",
|
|
||||||
"webpack": "~3.3",
|
|
||||||
"webpack-assets-manifest": "^0.7.0",
|
|
||||||
"webpack-dev-middleware": "~1.11",
|
|
||||||
"webpack-hot-middleware": "~2.18",
|
|
||||||
"webpack-merge": "~4.1",
|
|
||||||
"yargs": "~8.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"bootstrap": "^4.0.0-alpha.6",
|
|
||||||
"jquery": "1.12.4 - 3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
71
phpcs.xml
71
phpcs.xml
@@ -1,71 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<ruleset name="Roots">
|
|
||||||
<description>Roots Coding Standards</description>
|
|
||||||
|
|
||||||
<!-- Scan these files -->
|
|
||||||
<file>resources/functions.php</file>
|
|
||||||
<file>resources/index.php</file>
|
|
||||||
<file>app</file>
|
|
||||||
<file>resources/views</file>
|
|
||||||
|
|
||||||
<!-- Show colors in console -->
|
|
||||||
<arg value="-colors"/>
|
|
||||||
|
|
||||||
<!-- Show sniff codes in all reports -->
|
|
||||||
<arg value="s"/>
|
|
||||||
|
|
||||||
<!-- Use PSR-2 as a base -->
|
|
||||||
<rule ref="PSR2"/>
|
|
||||||
|
|
||||||
<!-- Exclusions below are for resources/views/ folder -->
|
|
||||||
|
|
||||||
<!-- Allow php files without any PHP in them -->
|
|
||||||
<rule ref="Internal.NoCodeFound">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Allow braces on same line for named functions -->
|
|
||||||
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Allow closing braces to be on the same line -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.ScopeClosingBrace">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Disable newline after opening brace -->
|
|
||||||
<rule ref="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Allow multiple PHP statements in the same line -->
|
|
||||||
<rule ref="Generic.Formatting.DisallowMultipleStatements.SameLine">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Disable PSR-2 indentation rules that are buggy with 2 spaces -->
|
|
||||||
<rule ref="PSR2.ControlStructures.SwitchDeclaration.BreakIndent">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Don't require a blank line after the last `use` -->
|
|
||||||
<rule ref="PSR2.Namespaces.UseDeclaration.SpaceAfterLastUse">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Allow long lines -->
|
|
||||||
<rule ref="Generic.Files.LineLength.TooLong">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Ignore indentation rules -->
|
|
||||||
<rule ref="Generic.WhiteSpace.ScopeIndent">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
|
|
||||||
<!-- Allow PHP closing tags -->
|
|
||||||
<rule ref="PSR2.Files.ClosingTag.NotAllowed">
|
|
||||||
<exclude-pattern>resources/views</exclude-pattern>
|
|
||||||
</rule>
|
|
||||||
</ruleset>
|
|
||||||
131
resources/acf/group_block_acfdemo.json
Normal file
131
resources/acf/group_block_acfdemo.json
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
{
|
||||||
|
"key": "group_block_acfdemo",
|
||||||
|
"title": "Block: ACF Demo",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_693d7783d862a",
|
||||||
|
"label": "Content",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "accordion",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"open": 1,
|
||||||
|
"multi_expand": 1,
|
||||||
|
"endpoint": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_693d779cd862b",
|
||||||
|
"label": "",
|
||||||
|
"name": "content",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "wysiwyg",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"tabs": "all",
|
||||||
|
"toolbar": "full",
|
||||||
|
"media_upload": 1,
|
||||||
|
"delay": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_693d7764938f3",
|
||||||
|
"label": "Introduction",
|
||||||
|
"name": "block_intro",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_clone_block_intro"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_6940187f74afb",
|
||||||
|
"label": "Footer",
|
||||||
|
"name": "block_footer",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_clone_block_footer"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_693d776493992",
|
||||||
|
"label": "Settings",
|
||||||
|
"name": "block_settings",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_clone_block_settings"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "block",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "badegg\/acfdemo"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"display_title": "",
|
||||||
|
"modified": 1765814950
|
||||||
|
}
|
||||||
109
resources/acf/group_block_editor.json
Normal file
109
resources/acf/group_block_editor.json
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"key": "group_block_editor",
|
||||||
|
"title": "Block: Editor",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_67659ad8dc795",
|
||||||
|
"label": "",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "message",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"message": "You can insert a variety of blocks inside of this one to build your page or post.",
|
||||||
|
"new_lines": "wpautop",
|
||||||
|
"esc_html": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67659a9bdc792",
|
||||||
|
"label": "Introduction",
|
||||||
|
"name": "introduction",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_block_intro"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67659bca78cfa",
|
||||||
|
"label": "Footer",
|
||||||
|
"name": "footer",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_block_footer"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67659ab5dc793",
|
||||||
|
"label": "Settings",
|
||||||
|
"name": "settings",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_clone_block_settings"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "block",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "acf\/badegg-editor"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"modified": 1763915024
|
||||||
|
}
|
||||||
137
resources/acf/group_clone_background_settings.json
Normal file
137
resources/acf/group_clone_background_settings.json
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
{
|
||||||
|
"key": "group_clone_background_settings",
|
||||||
|
"title": "Clone: Background Settings",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_67325dd23234e",
|
||||||
|
"label": "Colour",
|
||||||
|
"name": "bg_colour",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "50",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"0": "None",
|
||||||
|
"primary": "<i class=\"fas fa-circle\" style=\"color: #dd3333\"><\/i> Punch",
|
||||||
|
"secondary": "<i class=\"fas fa-circle\" style=\"color: #81d742\"><\/i> Atlantis",
|
||||||
|
"tertiary": "<i class=\"fas fa-circle\" style=\"color: #8224e3\"><\/i> Purple Heart",
|
||||||
|
"white": "<i class=\"fas fa-circle\" style=\"color: #FFFFFF\"><\/i> White",
|
||||||
|
"grey": "<i class=\"fas fa-circle\" style=\"color: #808080\"><\/i> Gray",
|
||||||
|
"black": "<i class=\"fas fa-circle\" style=\"color: #000000\"><\/i> Black"
|
||||||
|
},
|
||||||
|
"default_value": 0,
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 1,
|
||||||
|
"ui": 1,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67325e213234f",
|
||||||
|
"label": "Tint",
|
||||||
|
"name": "bg_tint",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67325dd23234e",
|
||||||
|
"operator": "!=",
|
||||||
|
"value": "0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67325dd23234e",
|
||||||
|
"operator": "!=",
|
||||||
|
"value": "black"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67325dd23234e",
|
||||||
|
"operator": "!=",
|
||||||
|
"value": "white"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"wrapper": {
|
||||||
|
"width": "50",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"lightest": "Lightest",
|
||||||
|
"lighter": "Lighter",
|
||||||
|
"light": "Light",
|
||||||
|
"0": "None",
|
||||||
|
"dark": "Dark",
|
||||||
|
"darker": "Darker",
|
||||||
|
"darkest": "Darkest"
|
||||||
|
},
|
||||||
|
"default_value": 0,
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 1,
|
||||||
|
"ui": 1,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67350f526abf1",
|
||||||
|
"label": "",
|
||||||
|
"name": "contrast",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "true_false",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"message": "Text Contrast",
|
||||||
|
"default_value": 0,
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"ui_on_text": "Light",
|
||||||
|
"ui_off_text": "Dark",
|
||||||
|
"ui": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "widget",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "rss"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"display_title": "",
|
||||||
|
"modified": 1767548180
|
||||||
|
}
|
||||||
210
resources/acf/group_clone_block_footer.json
Normal file
210
resources/acf/group_clone_block_footer.json
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
{
|
||||||
|
"key": "group_clone_block_footer",
|
||||||
|
"title": "Clone: Block Footer",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_694016b164221",
|
||||||
|
"label": "Footer",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "accordion",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"open": 0,
|
||||||
|
"multi_expand": 0,
|
||||||
|
"endpoint": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_694016b164272",
|
||||||
|
"label": "",
|
||||||
|
"name": "footer",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "group",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"layout": "block",
|
||||||
|
"sub_fields": [
|
||||||
|
{
|
||||||
|
"key": "field_694016b165315",
|
||||||
|
"label": "Blurb",
|
||||||
|
"name": "blurb",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "textarea",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"rows": 3,
|
||||||
|
"placeholder": "",
|
||||||
|
"new_lines": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_69401a2f06555",
|
||||||
|
"label": "Links",
|
||||||
|
"name": "links",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "repeater",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"layout": "block",
|
||||||
|
"pagination": 0,
|
||||||
|
"min": 0,
|
||||||
|
"max": 0,
|
||||||
|
"collapsed": "",
|
||||||
|
"button_label": "Add Row",
|
||||||
|
"rows_per_page": 20,
|
||||||
|
"sub_fields": [
|
||||||
|
{
|
||||||
|
"key": "field_69401a4006556",
|
||||||
|
"label": "Link",
|
||||||
|
"name": "link",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_clone_button"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0,
|
||||||
|
"parent_repeater": "field_69401a2f06555"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_694016b165337",
|
||||||
|
"label": "Alignment",
|
||||||
|
"name": "align",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"left": "Left",
|
||||||
|
"centre": "Centre",
|
||||||
|
"right": "Right"
|
||||||
|
},
|
||||||
|
"default_value": "centre",
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"ui": 0,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_694016b16537f",
|
||||||
|
"label": "Container width",
|
||||||
|
"name": "container_width",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"0": "Auto",
|
||||||
|
"narrow": "Narrow",
|
||||||
|
"small": "Small",
|
||||||
|
"medium": "Medium",
|
||||||
|
"large": "Large",
|
||||||
|
"full": "Edge to edge"
|
||||||
|
},
|
||||||
|
"default_value": "narrow",
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"ui": 0,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_694016b1642c5",
|
||||||
|
"label": "Footer (end)",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "accordion",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"open": 0,
|
||||||
|
"multi_expand": 0,
|
||||||
|
"endpoint": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "widget",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "rss"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"display_title": "",
|
||||||
|
"modified": 1765809897
|
||||||
|
}
|
||||||
184
resources/acf/group_clone_block_intro.json
Normal file
184
resources/acf/group_clone_block_intro.json
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
{
|
||||||
|
"key": "group_clone_block_intro",
|
||||||
|
"title": "Clone: Block Intro",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_67659970db415",
|
||||||
|
"label": "Introduction",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "accordion",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"open": 0,
|
||||||
|
"multi_expand": 0,
|
||||||
|
"endpoint": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_693f37ad7fa70",
|
||||||
|
"label": "",
|
||||||
|
"name": "intro",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "group",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"layout": "block",
|
||||||
|
"sub_fields": [
|
||||||
|
{
|
||||||
|
"key": "field_676599964d3cc",
|
||||||
|
"label": "Heading",
|
||||||
|
"name": "heading",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "text",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "hfont",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"prepend": "",
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_6765999d4d3cd",
|
||||||
|
"label": "Blurb",
|
||||||
|
"name": "blurb",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "textarea",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"rows": 3,
|
||||||
|
"placeholder": "",
|
||||||
|
"new_lines": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_69400cbafb964",
|
||||||
|
"label": "Alignment",
|
||||||
|
"name": "align",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"left": "Left",
|
||||||
|
"centre": "Centre",
|
||||||
|
"right": "Right"
|
||||||
|
},
|
||||||
|
"default_value": "centre",
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"ui": 0,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_693f3a7fae85e",
|
||||||
|
"label": "Container width",
|
||||||
|
"name": "container_width",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"0": "Auto",
|
||||||
|
"narrow": "Narrow",
|
||||||
|
"small": "Small",
|
||||||
|
"medium": "Medium",
|
||||||
|
"large": "Large",
|
||||||
|
"full": "Edge to edge"
|
||||||
|
},
|
||||||
|
"default_value": "narrow",
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"ui": 0,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_6828dae1d1bb0",
|
||||||
|
"label": "Intro (end)",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "accordion",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"open": 0,
|
||||||
|
"multi_expand": 0,
|
||||||
|
"endpoint": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "widget",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "rss"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"display_title": "",
|
||||||
|
"modified": 1765809893
|
||||||
|
}
|
||||||
195
resources/acf/group_clone_block_settings.json
Normal file
195
resources/acf/group_clone_block_settings.json
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
{
|
||||||
|
"key": "group_clone_block_settings",
|
||||||
|
"title": "Clone: Block Settings",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_69403228d2637",
|
||||||
|
"label": "Settings",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "accordion",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"open": 0,
|
||||||
|
"multi_expand": 1,
|
||||||
|
"endpoint": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_694031b513e66",
|
||||||
|
"label": "",
|
||||||
|
"name": "settings",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "group",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"layout": "block",
|
||||||
|
"sub_fields": [
|
||||||
|
{
|
||||||
|
"key": "field_6800097e61765",
|
||||||
|
"label": "Container Width",
|
||||||
|
"name": "container_width",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"0": "Auto",
|
||||||
|
"narrow": "Narrow",
|
||||||
|
"small": "Small",
|
||||||
|
"medium": "Medium",
|
||||||
|
"large": "Large",
|
||||||
|
"full": "Edge to edge"
|
||||||
|
},
|
||||||
|
"default_value": 0,
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 1,
|
||||||
|
"ui": 0,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67350eb62cdf9",
|
||||||
|
"label": "",
|
||||||
|
"name": "padding_top",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "true_false",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"message": "Top Padding",
|
||||||
|
"default_value": 1,
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"ui_on_text": "On",
|
||||||
|
"ui_off_text": "Off",
|
||||||
|
"ui": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_673510c1dc830",
|
||||||
|
"label": "",
|
||||||
|
"name": "padding_bottom",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "true_false",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"message": "Bottom Padding",
|
||||||
|
"default_value": 1,
|
||||||
|
"allow_in_bindings": 0,
|
||||||
|
"ui_on_text": "On",
|
||||||
|
"ui_off_text": "Off",
|
||||||
|
"ui": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_695aa550e16d4",
|
||||||
|
"label": "Background",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "message",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"message": "",
|
||||||
|
"new_lines": "wpautop",
|
||||||
|
"esc_html": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67350aeb146ca",
|
||||||
|
"label": "Background",
|
||||||
|
"name": "background",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "clone",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"clone": [
|
||||||
|
"group_clone_background_settings"
|
||||||
|
],
|
||||||
|
"display": "seamless",
|
||||||
|
"layout": "block",
|
||||||
|
"prefix_label": 0,
|
||||||
|
"prefix_name": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_69403239d2638",
|
||||||
|
"label": "Settings (end)",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "accordion",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"open": 0,
|
||||||
|
"multi_expand": 0,
|
||||||
|
"endpoint": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "widget",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "rss"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"display_title": "",
|
||||||
|
"modified": 1767548583
|
||||||
|
}
|
||||||
151
resources/acf/group_clone_button.json
Normal file
151
resources/acf/group_clone_button.json
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
{
|
||||||
|
"key": "group_clone_button",
|
||||||
|
"title": "Clone: Button",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_672d3d7b2c273",
|
||||||
|
"label": "Link",
|
||||||
|
"name": "link",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "link",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 1,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"return_format": "array",
|
||||||
|
"allow_in_bindings": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_673529a2a37a1",
|
||||||
|
"label": "Class",
|
||||||
|
"name": "class",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "text",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_672d3d7b2c273",
|
||||||
|
"operator": "!=empty"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"allow_in_bindings": 1,
|
||||||
|
"placeholder": "",
|
||||||
|
"prepend": "",
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_672d3db22c274",
|
||||||
|
"label": "Colour",
|
||||||
|
"name": "colour",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_672d3d7b2c273",
|
||||||
|
"operator": "!=empty"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"primary": "<i class=\"fas fa-circle\" style=\"color: #002448\"><\/i> Prussian Blue",
|
||||||
|
"secondary": "<i class=\"fas fa-circle\" style=\"color: #fc533e\"><\/i> Sunset Orange",
|
||||||
|
"tertiary": "<i class=\"fas fa-circle\" style=\"color: #fdd400\"><\/i> Gold",
|
||||||
|
"quaternary": "<i class=\"fas fa-circle\" style=\"color: #7d89d1\"><\/i> Moody Blue",
|
||||||
|
"quinary": "<i class=\"fas fa-circle\" style=\"color: #ffdab4\"><\/i> Frangipani",
|
||||||
|
"0": "<i class=\"fas fa-circle\" style=\"color: #FFFFFF\"><\/i> White",
|
||||||
|
"black": "<i class=\"fas fa-circle\" style=\"color: #000000\"><\/i> Black",
|
||||||
|
"quaternary-white": "<i class=\"fas fa-circle text-gradient text-gradient-quaternary-white\"><\/i> Moody Blue to White",
|
||||||
|
"quinary-white": "<i class=\"fas fa-circle text-gradient text-gradient-quinary-white\"><\/i> Frangipani to White",
|
||||||
|
"white-quaternary": "<i class=\"fas fa-circle text-gradient text-gradient-white-quaternary\"><\/i> White to Moody Blue",
|
||||||
|
"white-quinary": "<i class=\"fas fa-circle text-gradient text-gradient-white-quinary\"><\/i> White to Frangipani"
|
||||||
|
},
|
||||||
|
"default_value": "primary",
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 1,
|
||||||
|
"ui": 1,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_672d3dc52c275",
|
||||||
|
"label": "Style",
|
||||||
|
"name": "style",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_672d3d7b2c273",
|
||||||
|
"operator": "!=empty"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"0": "Solid",
|
||||||
|
"outline": "Outline"
|
||||||
|
},
|
||||||
|
"default_value": 0,
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"allow_in_bindings": 1,
|
||||||
|
"ui": 0,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "widget",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "rss"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"modified": 1748001311
|
||||||
|
}
|
||||||
463
resources/acf/group_options_global_settings.json
Normal file
463
resources/acf/group_options_global_settings.json
Normal file
@@ -0,0 +1,463 @@
|
|||||||
|
{
|
||||||
|
"key": "group_options_global_settings",
|
||||||
|
"title": "Options: Global Settings",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_67658e28aba4e",
|
||||||
|
"label": "Colours",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "tab",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"placement": "top",
|
||||||
|
"endpoint": 0,
|
||||||
|
"selected": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67658e49aba4f",
|
||||||
|
"label": "Brand Colours",
|
||||||
|
"name": "badegg_colours",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "repeater",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"layout": "block",
|
||||||
|
"pagination": 0,
|
||||||
|
"min": 0,
|
||||||
|
"max": 12,
|
||||||
|
"collapsed": "field_67658e96aba50",
|
||||||
|
"button_label": "Add Colour",
|
||||||
|
"rows_per_page": 20,
|
||||||
|
"sub_fields": [
|
||||||
|
{
|
||||||
|
"key": "field_67658e96aba50",
|
||||||
|
"label": "",
|
||||||
|
"name": "hex",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "color_picker",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"enable_opacity": 0,
|
||||||
|
"return_format": "string",
|
||||||
|
"parent_repeater": "field_67658e49aba4f",
|
||||||
|
"custom_palette_source": "",
|
||||||
|
"palette_colors": "",
|
||||||
|
"show_color_wheel": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67658fba41889",
|
||||||
|
"label": "Tints",
|
||||||
|
"name": "tints",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "radio",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67658e49aba4f",
|
||||||
|
"operator": "!=empty"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "field_67658e49aba4f",
|
||||||
|
"operator": "==empty"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"wrapper": {
|
||||||
|
"width": "15",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": [
|
||||||
|
"Auto",
|
||||||
|
"Manual"
|
||||||
|
],
|
||||||
|
"default_value": 0,
|
||||||
|
"return_format": "value",
|
||||||
|
"allow_null": 0,
|
||||||
|
"other_choice": 0,
|
||||||
|
"layout": "horizontal",
|
||||||
|
"save_other_choice": 0,
|
||||||
|
"parent_repeater": "field_67658e49aba4f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67658fe84188a",
|
||||||
|
"label": "Tint Selection",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "message",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67658fba41889",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67658e49aba4f",
|
||||||
|
"operator": "!=empty"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "field_67658e49aba4f",
|
||||||
|
"operator": "==empty"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"wrapper": {
|
||||||
|
"width": "70",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"message": "Colour tints are automatically set by mathematically adjusting the brightness.",
|
||||||
|
"new_lines": "wpautop",
|
||||||
|
"esc_html": 0,
|
||||||
|
"parent_repeater": "field_67658e49aba4f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_6765902f4188b",
|
||||||
|
"label": "Tint Selection",
|
||||||
|
"name": "tints",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "group",
|
||||||
|
"instructions": "Colour tints are automatically set by mathematically adjusting the brightness. Specify manual overrides here:",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67658fba41889",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"field": "field_67658e49aba4f",
|
||||||
|
"operator": "!=empty"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "field_67658e49aba4f",
|
||||||
|
"operator": "==empty"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"wrapper": {
|
||||||
|
"width": "70",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"layout": "block",
|
||||||
|
"parent_repeater": "field_67658e49aba4f",
|
||||||
|
"sub_fields": [
|
||||||
|
{
|
||||||
|
"key": "field_676590414188c",
|
||||||
|
"label": "Lightest",
|
||||||
|
"name": "lightest",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "color_picker",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "16.66",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"enable_opacity": 0,
|
||||||
|
"return_format": "string",
|
||||||
|
"custom_palette_source": "",
|
||||||
|
"palette_colors": "",
|
||||||
|
"show_color_wheel": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_676590684188d",
|
||||||
|
"label": "Lighter",
|
||||||
|
"name": "lighter",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "color_picker",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "16.66",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"enable_opacity": 0,
|
||||||
|
"return_format": "string",
|
||||||
|
"custom_palette_source": "",
|
||||||
|
"palette_colors": "",
|
||||||
|
"show_color_wheel": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_6765907f4188e",
|
||||||
|
"label": "Light",
|
||||||
|
"name": "light",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "color_picker",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "16.66",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"enable_opacity": 0,
|
||||||
|
"return_format": "string",
|
||||||
|
"custom_palette_source": "",
|
||||||
|
"palette_colors": "",
|
||||||
|
"show_color_wheel": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_676590924188f",
|
||||||
|
"label": "Dark",
|
||||||
|
"name": "dark",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "color_picker",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "16.66",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"enable_opacity": 0,
|
||||||
|
"return_format": "string",
|
||||||
|
"custom_palette_source": "",
|
||||||
|
"palette_colors": "",
|
||||||
|
"show_color_wheel": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_6765909941890",
|
||||||
|
"label": "Darker",
|
||||||
|
"name": "darker",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "color_picker",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "16.66",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"enable_opacity": 0,
|
||||||
|
"return_format": "string",
|
||||||
|
"custom_palette_source": "",
|
||||||
|
"palette_colors": "",
|
||||||
|
"show_color_wheel": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_6765909f41891",
|
||||||
|
"label": "Darkest",
|
||||||
|
"name": "darkest",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "color_picker",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "16.66",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"enable_opacity": 0,
|
||||||
|
"return_format": "string",
|
||||||
|
"custom_palette_source": "",
|
||||||
|
"palette_colors": "",
|
||||||
|
"show_color_wheel": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67659ca28081d",
|
||||||
|
"label": "Company",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "tab",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"placement": "top",
|
||||||
|
"endpoint": 0,
|
||||||
|
"selected": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67659cb08081e",
|
||||||
|
"label": "Legal Name",
|
||||||
|
"name": "badegg_company_legal",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "text",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"placeholder": "",
|
||||||
|
"prepend": "",
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67659cf08081f",
|
||||||
|
"label": "Telephone",
|
||||||
|
"name": "badegg_company_tel",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "text",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "50",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"placeholder": "",
|
||||||
|
"prepend": "",
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_67659d0780820",
|
||||||
|
"label": "Email",
|
||||||
|
"name": "badegg_company_email",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "email",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "50",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"placeholder": "",
|
||||||
|
"prepend": "",
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_676594565ead1",
|
||||||
|
"label": "Integrations",
|
||||||
|
"name": "",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "tab",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"placement": "top",
|
||||||
|
"endpoint": 0,
|
||||||
|
"selected": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_676594615ead2",
|
||||||
|
"label": "Fathom Analytics ID",
|
||||||
|
"name": "badegg_integrations_fathom_id",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "text",
|
||||||
|
"instructions": "A Google Analytics alternative that’s simple & privacy-first. <a href=\"https:\/\/usefathom.com\" target=\"_blank\" rel=\"noopener nofollow noindex\">Visit website<\/a>",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"placeholder": "",
|
||||||
|
"prepend": "",
|
||||||
|
"append": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_698b36010d055",
|
||||||
|
"label": "Font Awesome Kit ID",
|
||||||
|
"name": "badegg_integrations_fontawesome_kit",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "text",
|
||||||
|
"instructions": "The internet's icon library + toolkit. Used by millions of designers, devs, & content creators. Open-source. Always free. Always awesome. <a href=\"https:\/\/fontawesome.com\/\" target=\"_blank\" rel=\"noopener nofollow noindex\">Visit website<\/a>",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"maxlength": "",
|
||||||
|
"allow_in_bindings": 1,
|
||||||
|
"placeholder": "",
|
||||||
|
"prepend": "",
|
||||||
|
"append": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "options_page",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "theme-global-settings"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "seamless",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"display_title": "",
|
||||||
|
"modified": 1770736471
|
||||||
|
}
|
||||||
619
resources/acf/group_post_social.json
Normal file
619
resources/acf/group_post_social.json
Normal file
@@ -0,0 +1,619 @@
|
|||||||
|
{
|
||||||
|
"key": "group_post_social",
|
||||||
|
"title": "Social Channel Settings",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"key": "field_664c658853f1b",
|
||||||
|
"label": "Icon",
|
||||||
|
"name": "fontawesome_brands",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "select",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "20",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"choices": {
|
||||||
|
"0": "<i class=\"fa-solid\"><\/i> <span>Please select an icon<\/span>",
|
||||||
|
"11ty": "<i class=\"fa-brands fa-11ty\" style=\"color: #2271b1;\"><\/i> <span>11ty<\/span>",
|
||||||
|
"42-group": "<i class=\"fa-brands fa-42-group\" style=\"color: #2271b1;\"><\/i> <span>42 Group<\/span>",
|
||||||
|
"500px": "<i class=\"fa-brands fa-500px\" style=\"color: #2271b1;\"><\/i> <span>500px<\/span>",
|
||||||
|
"accessible-icon": "<i class=\"fa-brands fa-accessible-icon\" style=\"color: #2271b1;\"><\/i> <span>Accessible Icon<\/span>",
|
||||||
|
"accusoft": "<i class=\"fa-brands fa-accusoft\" style=\"color: #2271b1;\"><\/i> <span>Accusoft<\/span>",
|
||||||
|
"adn": "<i class=\"fa-brands fa-adn\" style=\"color: #2271b1;\"><\/i> <span>Adn<\/span>",
|
||||||
|
"adversal": "<i class=\"fa-brands fa-adversal\" style=\"color: #2271b1;\"><\/i> <span>Adversal<\/span>",
|
||||||
|
"affiliatetheme": "<i class=\"fa-brands fa-affiliatetheme\" style=\"color: #2271b1;\"><\/i> <span>Affiliatetheme<\/span>",
|
||||||
|
"airbnb": "<i class=\"fa-brands fa-airbnb\" style=\"color: #2271b1;\"><\/i> <span>Airbnb<\/span>",
|
||||||
|
"algolia": "<i class=\"fa-brands fa-algolia\" style=\"color: #2271b1;\"><\/i> <span>Algolia<\/span>",
|
||||||
|
"alipay": "<i class=\"fa-brands fa-alipay\" style=\"color: #2271b1;\"><\/i> <span>Alipay<\/span>",
|
||||||
|
"amazon-pay": "<i class=\"fa-brands fa-amazon-pay\" style=\"color: #2271b1;\"><\/i> <span>Amazon Pay<\/span>",
|
||||||
|
"amazon": "<i class=\"fa-brands fa-amazon\" style=\"color: #2271b1;\"><\/i> <span>Amazon<\/span>",
|
||||||
|
"amilia": "<i class=\"fa-brands fa-amilia\" style=\"color: #2271b1;\"><\/i> <span>Amilia<\/span>",
|
||||||
|
"android": "<i class=\"fa-brands fa-android\" style=\"color: #2271b1;\"><\/i> <span>Android<\/span>",
|
||||||
|
"angellist": "<i class=\"fa-brands fa-angellist\" style=\"color: #2271b1;\"><\/i> <span>Angellist<\/span>",
|
||||||
|
"angrycreative": "<i class=\"fa-brands fa-angrycreative\" style=\"color: #2271b1;\"><\/i> <span>Angrycreative<\/span>",
|
||||||
|
"angular": "<i class=\"fa-brands fa-angular\" style=\"color: #2271b1;\"><\/i> <span>Angular<\/span>",
|
||||||
|
"app-store-ios": "<i class=\"fa-brands fa-app-store-ios\" style=\"color: #2271b1;\"><\/i> <span>App Store Ios<\/span>",
|
||||||
|
"app-store": "<i class=\"fa-brands fa-app-store\" style=\"color: #2271b1;\"><\/i> <span>App Store<\/span>",
|
||||||
|
"apper": "<i class=\"fa-brands fa-apper\" style=\"color: #2271b1;\"><\/i> <span>Apper<\/span>",
|
||||||
|
"apple-pay": "<i class=\"fa-brands fa-apple-pay\" style=\"color: #2271b1;\"><\/i> <span>Apple Pay<\/span>",
|
||||||
|
"apple": "<i class=\"fa-brands fa-apple\" style=\"color: #2271b1;\"><\/i> <span>Apple<\/span>",
|
||||||
|
"artstation": "<i class=\"fa-brands fa-artstation\" style=\"color: #2271b1;\"><\/i> <span>Artstation<\/span>",
|
||||||
|
"asymmetrik": "<i class=\"fa-brands fa-asymmetrik\" style=\"color: #2271b1;\"><\/i> <span>Asymmetrik<\/span>",
|
||||||
|
"atlassian": "<i class=\"fa-brands fa-atlassian\" style=\"color: #2271b1;\"><\/i> <span>Atlassian<\/span>",
|
||||||
|
"audible": "<i class=\"fa-brands fa-audible\" style=\"color: #2271b1;\"><\/i> <span>Audible<\/span>",
|
||||||
|
"autoprefixer": "<i class=\"fa-brands fa-autoprefixer\" style=\"color: #2271b1;\"><\/i> <span>Autoprefixer<\/span>",
|
||||||
|
"avianex": "<i class=\"fa-brands fa-avianex\" style=\"color: #2271b1;\"><\/i> <span>Avianex<\/span>",
|
||||||
|
"aviato": "<i class=\"fa-brands fa-aviato\" style=\"color: #2271b1;\"><\/i> <span>Aviato<\/span>",
|
||||||
|
"aws": "<i class=\"fa-brands fa-aws\" style=\"color: #2271b1;\"><\/i> <span>Aws<\/span>",
|
||||||
|
"bandcamp": "<i class=\"fa-brands fa-bandcamp\" style=\"color: #2271b1;\"><\/i> <span>Bandcamp<\/span>",
|
||||||
|
"battle-net": "<i class=\"fa-brands fa-battle-net\" style=\"color: #2271b1;\"><\/i> <span>Battle Net<\/span>",
|
||||||
|
"behance-square": "<i class=\"fa-brands fa-behance-square\" style=\"color: #2271b1;\"><\/i> <span>Behance Square<\/span>",
|
||||||
|
"behance": "<i class=\"fa-brands fa-behance\" style=\"color: #2271b1;\"><\/i> <span>Behance<\/span>",
|
||||||
|
"bilibili": "<i class=\"fa-brands fa-bilibili\" style=\"color: #2271b1;\"><\/i> <span>Bilibili<\/span>",
|
||||||
|
"bimobject": "<i class=\"fa-brands fa-bimobject\" style=\"color: #2271b1;\"><\/i> <span>Bimobject<\/span>",
|
||||||
|
"bitbucket": "<i class=\"fa-brands fa-bitbucket\" style=\"color: #2271b1;\"><\/i> <span>Bitbucket<\/span>",
|
||||||
|
"bitcoin": "<i class=\"fa-brands fa-bitcoin\" style=\"color: #2271b1;\"><\/i> <span>Bitcoin<\/span>",
|
||||||
|
"bity": "<i class=\"fa-brands fa-bity\" style=\"color: #2271b1;\"><\/i> <span>Bity<\/span>",
|
||||||
|
"black-tie": "<i class=\"fa-brands fa-black-tie\" style=\"color: #2271b1;\"><\/i> <span>Black Tie<\/span>",
|
||||||
|
"blackberry": "<i class=\"fa-brands fa-blackberry\" style=\"color: #2271b1;\"><\/i> <span>Blackberry<\/span>",
|
||||||
|
"blogger-b": "<i class=\"fa-brands fa-blogger-b\" style=\"color: #2271b1;\"><\/i> <span>Blogger B<\/span>",
|
||||||
|
"blogger": "<i class=\"fa-brands fa-blogger\" style=\"color: #2271b1;\"><\/i> <span>Blogger<\/span>",
|
||||||
|
"bluesky": "<i class=\"fa-brands fa-bluesky\" style=\"color: #2271b1;\"><\/i> <span>Bluesky<\/span>",
|
||||||
|
"bluetooth-b": "<i class=\"fa-brands fa-bluetooth-b\" style=\"color: #2271b1;\"><\/i> <span>Bluetooth B<\/span>",
|
||||||
|
"bluetooth": "<i class=\"fa-brands fa-bluetooth\" style=\"color: #2271b1;\"><\/i> <span>Bluetooth<\/span>",
|
||||||
|
"bootstrap": "<i class=\"fa-brands fa-bootstrap\" style=\"color: #2271b1;\"><\/i> <span>Bootstrap<\/span>",
|
||||||
|
"bots": "<i class=\"fa-brands fa-bots\" style=\"color: #2271b1;\"><\/i> <span>Bots<\/span>",
|
||||||
|
"brave-reverse": "<i class=\"fa-brands fa-brave-reverse\" style=\"color: #2271b1;\"><\/i> <span>Brave Reverse<\/span>",
|
||||||
|
"brave": "<i class=\"fa-brands fa-brave\" style=\"color: #2271b1;\"><\/i> <span>Brave<\/span>",
|
||||||
|
"btc": "<i class=\"fa-brands fa-btc\" style=\"color: #2271b1;\"><\/i> <span>Btc<\/span>",
|
||||||
|
"buffer": "<i class=\"fa-brands fa-buffer\" style=\"color: #2271b1;\"><\/i> <span>Buffer<\/span>",
|
||||||
|
"buromobelexperte": "<i class=\"fa-brands fa-buromobelexperte\" style=\"color: #2271b1;\"><\/i> <span>Buromobelexperte<\/span>",
|
||||||
|
"buy-n-large": "<i class=\"fa-brands fa-buy-n-large\" style=\"color: #2271b1;\"><\/i> <span>Buy N Large<\/span>",
|
||||||
|
"buysellads": "<i class=\"fa-brands fa-buysellads\" style=\"color: #2271b1;\"><\/i> <span>Buysellads<\/span>",
|
||||||
|
"canadian-maple-leaf": "<i class=\"fa-brands fa-canadian-maple-leaf\" style=\"color: #2271b1;\"><\/i> <span>Canadian Maple Leaf<\/span>",
|
||||||
|
"cash-app": "<i class=\"fa-brands fa-cash-app\" style=\"color: #2271b1;\"><\/i> <span>Cash App<\/span>",
|
||||||
|
"cc-amazon-pay": "<i class=\"fa-brands fa-cc-amazon-pay\" style=\"color: #2271b1;\"><\/i> <span>Cc Amazon Pay<\/span>",
|
||||||
|
"cc-amex": "<i class=\"fa-brands fa-cc-amex\" style=\"color: #2271b1;\"><\/i> <span>Cc Amex<\/span>",
|
||||||
|
"cc-apple-pay": "<i class=\"fa-brands fa-cc-apple-pay\" style=\"color: #2271b1;\"><\/i> <span>Cc Apple Pay<\/span>",
|
||||||
|
"cc-diners-club": "<i class=\"fa-brands fa-cc-diners-club\" style=\"color: #2271b1;\"><\/i> <span>Cc Diners Club<\/span>",
|
||||||
|
"cc-discover": "<i class=\"fa-brands fa-cc-discover\" style=\"color: #2271b1;\"><\/i> <span>Cc Discover<\/span>",
|
||||||
|
"cc-jcb": "<i class=\"fa-brands fa-cc-jcb\" style=\"color: #2271b1;\"><\/i> <span>Cc Jcb<\/span>",
|
||||||
|
"cc-mastercard": "<i class=\"fa-brands fa-cc-mastercard\" style=\"color: #2271b1;\"><\/i> <span>Cc Mastercard<\/span>",
|
||||||
|
"cc-paypal": "<i class=\"fa-brands fa-cc-paypal\" style=\"color: #2271b1;\"><\/i> <span>Cc Paypal<\/span>",
|
||||||
|
"cc-stripe": "<i class=\"fa-brands fa-cc-stripe\" style=\"color: #2271b1;\"><\/i> <span>Cc Stripe<\/span>",
|
||||||
|
"cc-visa": "<i class=\"fa-brands fa-cc-visa\" style=\"color: #2271b1;\"><\/i> <span>Cc Visa<\/span>",
|
||||||
|
"centercode": "<i class=\"fa-brands fa-centercode\" style=\"color: #2271b1;\"><\/i> <span>Centercode<\/span>",
|
||||||
|
"centos": "<i class=\"fa-brands fa-centos\" style=\"color: #2271b1;\"><\/i> <span>Centos<\/span>",
|
||||||
|
"chrome": "<i class=\"fa-brands fa-chrome\" style=\"color: #2271b1;\"><\/i> <span>Chrome<\/span>",
|
||||||
|
"chromecast": "<i class=\"fa-brands fa-chromecast\" style=\"color: #2271b1;\"><\/i> <span>Chromecast<\/span>",
|
||||||
|
"cloudflare": "<i class=\"fa-brands fa-cloudflare\" style=\"color: #2271b1;\"><\/i> <span>Cloudflare<\/span>",
|
||||||
|
"cloudscale": "<i class=\"fa-brands fa-cloudscale\" style=\"color: #2271b1;\"><\/i> <span>Cloudscale<\/span>",
|
||||||
|
"cloudsmith": "<i class=\"fa-brands fa-cloudsmith\" style=\"color: #2271b1;\"><\/i> <span>Cloudsmith<\/span>",
|
||||||
|
"cloudversify": "<i class=\"fa-brands fa-cloudversify\" style=\"color: #2271b1;\"><\/i> <span>Cloudversify<\/span>",
|
||||||
|
"cmplid": "<i class=\"fa-brands fa-cmplid\" style=\"color: #2271b1;\"><\/i> <span>Cmplid<\/span>",
|
||||||
|
"codepen": "<i class=\"fa-brands fa-codepen\" style=\"color: #2271b1;\"><\/i> <span>Codepen<\/span>",
|
||||||
|
"codiepie": "<i class=\"fa-brands fa-codiepie\" style=\"color: #2271b1;\"><\/i> <span>Codiepie<\/span>",
|
||||||
|
"confluence": "<i class=\"fa-brands fa-confluence\" style=\"color: #2271b1;\"><\/i> <span>Confluence<\/span>",
|
||||||
|
"connectdevelop": "<i class=\"fa-brands fa-connectdevelop\" style=\"color: #2271b1;\"><\/i> <span>Connectdevelop<\/span>",
|
||||||
|
"contao": "<i class=\"fa-brands fa-contao\" style=\"color: #2271b1;\"><\/i> <span>Contao<\/span>",
|
||||||
|
"cotton-bureau": "<i class=\"fa-brands fa-cotton-bureau\" style=\"color: #2271b1;\"><\/i> <span>Cotton Bureau<\/span>",
|
||||||
|
"cpanel": "<i class=\"fa-brands fa-cpanel\" style=\"color: #2271b1;\"><\/i> <span>Cpanel<\/span>",
|
||||||
|
"creative-commons-by": "<i class=\"fa-brands fa-creative-commons-by\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons By<\/span>",
|
||||||
|
"creative-commons-nc-eu": "<i class=\"fa-brands fa-creative-commons-nc-eu\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Nc Eu<\/span>",
|
||||||
|
"creative-commons-nc-jp": "<i class=\"fa-brands fa-creative-commons-nc-jp\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Nc Jp<\/span>",
|
||||||
|
"creative-commons-nc": "<i class=\"fa-brands fa-creative-commons-nc\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Nc<\/span>",
|
||||||
|
"creative-commons-nd": "<i class=\"fa-brands fa-creative-commons-nd\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Nd<\/span>",
|
||||||
|
"creative-commons-pd-alt": "<i class=\"fa-brands fa-creative-commons-pd-alt\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Pd Alt<\/span>",
|
||||||
|
"creative-commons-pd": "<i class=\"fa-brands fa-creative-commons-pd\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Pd<\/span>",
|
||||||
|
"creative-commons-remix": "<i class=\"fa-brands fa-creative-commons-remix\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Remix<\/span>",
|
||||||
|
"creative-commons-sa": "<i class=\"fa-brands fa-creative-commons-sa\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Sa<\/span>",
|
||||||
|
"creative-commons-sampling-plus": "<i class=\"fa-brands fa-creative-commons-sampling-plus\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Sampling Plus<\/span>",
|
||||||
|
"creative-commons-sampling": "<i class=\"fa-brands fa-creative-commons-sampling\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Sampling<\/span>",
|
||||||
|
"creative-commons-share": "<i class=\"fa-brands fa-creative-commons-share\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Share<\/span>",
|
||||||
|
"creative-commons-zero": "<i class=\"fa-brands fa-creative-commons-zero\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons Zero<\/span>",
|
||||||
|
"creative-commons": "<i class=\"fa-brands fa-creative-commons\" style=\"color: #2271b1;\"><\/i> <span>Creative Commons<\/span>",
|
||||||
|
"critical-role": "<i class=\"fa-brands fa-critical-role\" style=\"color: #2271b1;\"><\/i> <span>Critical Role<\/span>",
|
||||||
|
"css": "<i class=\"fa-brands fa-css\" style=\"color: #2271b1;\"><\/i> <span>Css<\/span>",
|
||||||
|
"css3-alt": "<i class=\"fa-brands fa-css3-alt\" style=\"color: #2271b1;\"><\/i> <span>Css3 Alt<\/span>",
|
||||||
|
"css3": "<i class=\"fa-brands fa-css3\" style=\"color: #2271b1;\"><\/i> <span>Css3<\/span>",
|
||||||
|
"cuttlefish": "<i class=\"fa-brands fa-cuttlefish\" style=\"color: #2271b1;\"><\/i> <span>Cuttlefish<\/span>",
|
||||||
|
"d-and-d-beyond": "<i class=\"fa-brands fa-d-and-d-beyond\" style=\"color: #2271b1;\"><\/i> <span>D And D Beyond<\/span>",
|
||||||
|
"d-and-d": "<i class=\"fa-brands fa-d-and-d\" style=\"color: #2271b1;\"><\/i> <span>D And D<\/span>",
|
||||||
|
"dailymotion": "<i class=\"fa-brands fa-dailymotion\" style=\"color: #2271b1;\"><\/i> <span>Dailymotion<\/span>",
|
||||||
|
"dart-lang": "<i class=\"fa-brands fa-dart-lang\" style=\"color: #2271b1;\"><\/i> <span>Dart Lang<\/span>",
|
||||||
|
"dashcube": "<i class=\"fa-brands fa-dashcube\" style=\"color: #2271b1;\"><\/i> <span>Dashcube<\/span>",
|
||||||
|
"debian": "<i class=\"fa-brands fa-debian\" style=\"color: #2271b1;\"><\/i> <span>Debian<\/span>",
|
||||||
|
"deezer": "<i class=\"fa-brands fa-deezer\" style=\"color: #2271b1;\"><\/i> <span>Deezer<\/span>",
|
||||||
|
"delicious": "<i class=\"fa-brands fa-delicious\" style=\"color: #2271b1;\"><\/i> <span>Delicious<\/span>",
|
||||||
|
"deploydog": "<i class=\"fa-brands fa-deploydog\" style=\"color: #2271b1;\"><\/i> <span>Deploydog<\/span>",
|
||||||
|
"deskpro": "<i class=\"fa-brands fa-deskpro\" style=\"color: #2271b1;\"><\/i> <span>Deskpro<\/span>",
|
||||||
|
"dev": "<i class=\"fa-brands fa-dev\" style=\"color: #2271b1;\"><\/i> <span>Dev<\/span>",
|
||||||
|
"deviantart": "<i class=\"fa-brands fa-deviantart\" style=\"color: #2271b1;\"><\/i> <span>Deviantart<\/span>",
|
||||||
|
"dhl": "<i class=\"fa-brands fa-dhl\" style=\"color: #2271b1;\"><\/i> <span>Dhl<\/span>",
|
||||||
|
"diaspora": "<i class=\"fa-brands fa-diaspora\" style=\"color: #2271b1;\"><\/i> <span>Diaspora<\/span>",
|
||||||
|
"digg": "<i class=\"fa-brands fa-digg\" style=\"color: #2271b1;\"><\/i> <span>Digg<\/span>",
|
||||||
|
"digital-ocean": "<i class=\"fa-brands fa-digital-ocean\" style=\"color: #2271b1;\"><\/i> <span>Digital Ocean<\/span>",
|
||||||
|
"discord": "<i class=\"fa-brands fa-discord\" style=\"color: #2271b1;\"><\/i> <span>Discord<\/span>",
|
||||||
|
"discourse": "<i class=\"fa-brands fa-discourse\" style=\"color: #2271b1;\"><\/i> <span>Discourse<\/span>",
|
||||||
|
"disqus": "<i class=\"fa-brands fa-disqus\" style=\"color: #2271b1;\"><\/i> <span>Disqus<\/span>",
|
||||||
|
"dochub": "<i class=\"fa-brands fa-dochub\" style=\"color: #2271b1;\"><\/i> <span>Dochub<\/span>",
|
||||||
|
"docker": "<i class=\"fa-brands fa-docker\" style=\"color: #2271b1;\"><\/i> <span>Docker<\/span>",
|
||||||
|
"draft2digital": "<i class=\"fa-brands fa-draft2digital\" style=\"color: #2271b1;\"><\/i> <span>Draft2digital<\/span>",
|
||||||
|
"dribbble-square": "<i class=\"fa-brands fa-dribbble-square\" style=\"color: #2271b1;\"><\/i> <span>Dribbble Square<\/span>",
|
||||||
|
"dribbble": "<i class=\"fa-brands fa-dribbble\" style=\"color: #2271b1;\"><\/i> <span>Dribbble<\/span>",
|
||||||
|
"dropbox": "<i class=\"fa-brands fa-dropbox\" style=\"color: #2271b1;\"><\/i> <span>Dropbox<\/span>",
|
||||||
|
"drupal": "<i class=\"fa-brands fa-drupal\" style=\"color: #2271b1;\"><\/i> <span>Drupal<\/span>",
|
||||||
|
"duolingo": "<i class=\"fa-brands fa-duolingo\" style=\"color: #2271b1;\"><\/i> <span>Duolingo<\/span>",
|
||||||
|
"dyalog": "<i class=\"fa-brands fa-dyalog\" style=\"color: #2271b1;\"><\/i> <span>Dyalog<\/span>",
|
||||||
|
"earlybirds": "<i class=\"fa-brands fa-earlybirds\" style=\"color: #2271b1;\"><\/i> <span>Earlybirds<\/span>",
|
||||||
|
"ebay": "<i class=\"fa-brands fa-ebay\" style=\"color: #2271b1;\"><\/i> <span>Ebay<\/span>",
|
||||||
|
"edge-legacy": "<i class=\"fa-brands fa-edge-legacy\" style=\"color: #2271b1;\"><\/i> <span>Edge Legacy<\/span>",
|
||||||
|
"edge": "<i class=\"fa-brands fa-edge\" style=\"color: #2271b1;\"><\/i> <span>Edge<\/span>",
|
||||||
|
"elementor": "<i class=\"fa-brands fa-elementor\" style=\"color: #2271b1;\"><\/i> <span>Elementor<\/span>",
|
||||||
|
"eleventy": "<i class=\"fa-brands fa-eleventy\" style=\"color: #2271b1;\"><\/i> <span>Eleventy<\/span>",
|
||||||
|
"ello": "<i class=\"fa-brands fa-ello\" style=\"color: #2271b1;\"><\/i> <span>Ello<\/span>",
|
||||||
|
"ember": "<i class=\"fa-brands fa-ember\" style=\"color: #2271b1;\"><\/i> <span>Ember<\/span>",
|
||||||
|
"empire": "<i class=\"fa-brands fa-empire\" style=\"color: #2271b1;\"><\/i> <span>Empire<\/span>",
|
||||||
|
"envira": "<i class=\"fa-brands fa-envira\" style=\"color: #2271b1;\"><\/i> <span>Envira<\/span>",
|
||||||
|
"erlang": "<i class=\"fa-brands fa-erlang\" style=\"color: #2271b1;\"><\/i> <span>Erlang<\/span>",
|
||||||
|
"ethereum": "<i class=\"fa-brands fa-ethereum\" style=\"color: #2271b1;\"><\/i> <span>Ethereum<\/span>",
|
||||||
|
"etsy": "<i class=\"fa-brands fa-etsy\" style=\"color: #2271b1;\"><\/i> <span>Etsy<\/span>",
|
||||||
|
"evernote": "<i class=\"fa-brands fa-evernote\" style=\"color: #2271b1;\"><\/i> <span>Evernote<\/span>",
|
||||||
|
"expeditedssl": "<i class=\"fa-brands fa-expeditedssl\" style=\"color: #2271b1;\"><\/i> <span>Expeditedssl<\/span>",
|
||||||
|
"facebook-f": "<i class=\"fa-brands fa-facebook-f\" style=\"color: #2271b1;\"><\/i> <span>Facebook F<\/span>",
|
||||||
|
"facebook-messenger": "<i class=\"fa-brands fa-facebook-messenger\" style=\"color: #2271b1;\"><\/i> <span>Facebook Messenger<\/span>",
|
||||||
|
"facebook-square": "<i class=\"fa-brands fa-facebook-square\" style=\"color: #2271b1;\"><\/i> <span>Facebook Square<\/span>",
|
||||||
|
"facebook": "<i class=\"fa-brands fa-facebook\" style=\"color: #2271b1;\"><\/i> <span>Facebook<\/span>",
|
||||||
|
"fantasy-flight-games": "<i class=\"fa-brands fa-fantasy-flight-games\" style=\"color: #2271b1;\"><\/i> <span>Fantasy Flight Games<\/span>",
|
||||||
|
"fedex": "<i class=\"fa-brands fa-fedex\" style=\"color: #2271b1;\"><\/i> <span>Fedex<\/span>",
|
||||||
|
"fedora": "<i class=\"fa-brands fa-fedora\" style=\"color: #2271b1;\"><\/i> <span>Fedora<\/span>",
|
||||||
|
"figma": "<i class=\"fa-brands fa-figma\" style=\"color: #2271b1;\"><\/i> <span>Figma<\/span>",
|
||||||
|
"files-pinwheel": "<i class=\"fa-brands fa-files-pinwheel\" style=\"color: #2271b1;\"><\/i> <span>Files Pinwheel<\/span>",
|
||||||
|
"firefox-browser": "<i class=\"fa-brands fa-firefox-browser\" style=\"color: #2271b1;\"><\/i> <span>Firefox Browser<\/span>",
|
||||||
|
"firefox": "<i class=\"fa-brands fa-firefox\" style=\"color: #2271b1;\"><\/i> <span>Firefox<\/span>",
|
||||||
|
"first-order-alt": "<i class=\"fa-brands fa-first-order-alt\" style=\"color: #2271b1;\"><\/i> <span>First Order Alt<\/span>",
|
||||||
|
"first-order": "<i class=\"fa-brands fa-first-order\" style=\"color: #2271b1;\"><\/i> <span>First Order<\/span>",
|
||||||
|
"firstdraft": "<i class=\"fa-brands fa-firstdraft\" style=\"color: #2271b1;\"><\/i> <span>Firstdraft<\/span>",
|
||||||
|
"flickr": "<i class=\"fa-brands fa-flickr\" style=\"color: #2271b1;\"><\/i> <span>Flickr<\/span>",
|
||||||
|
"flipboard": "<i class=\"fa-brands fa-flipboard\" style=\"color: #2271b1;\"><\/i> <span>Flipboard<\/span>",
|
||||||
|
"flutter": "<i class=\"fa-brands fa-flutter\" style=\"color: #2271b1;\"><\/i> <span>Flutter<\/span>",
|
||||||
|
"fly": "<i class=\"fa-brands fa-fly\" style=\"color: #2271b1;\"><\/i> <span>Fly<\/span>",
|
||||||
|
"font-awesome-alt": "<i class=\"fa-brands fa-font-awesome-alt\" style=\"color: #2271b1;\"><\/i> <span>Font Awesome Alt<\/span>",
|
||||||
|
"font-awesome-flag": "<i class=\"fa-brands fa-font-awesome-flag\" style=\"color: #2271b1;\"><\/i> <span>Font Awesome Flag<\/span>",
|
||||||
|
"font-awesome-logo-full": "<i class=\"fa-brands fa-font-awesome-logo-full\" style=\"color: #2271b1;\"><\/i> <span>Font Awesome Logo Full<\/span>",
|
||||||
|
"font-awesome": "<i class=\"fa-brands fa-font-awesome\" style=\"color: #2271b1;\"><\/i> <span>Font Awesome<\/span>",
|
||||||
|
"fonticons-fi": "<i class=\"fa-brands fa-fonticons-fi\" style=\"color: #2271b1;\"><\/i> <span>Fonticons Fi<\/span>",
|
||||||
|
"fonticons": "<i class=\"fa-brands fa-fonticons\" style=\"color: #2271b1;\"><\/i> <span>Fonticons<\/span>",
|
||||||
|
"fort-awesome-alt": "<i class=\"fa-brands fa-fort-awesome-alt\" style=\"color: #2271b1;\"><\/i> <span>Fort Awesome Alt<\/span>",
|
||||||
|
"fort-awesome": "<i class=\"fa-brands fa-fort-awesome\" style=\"color: #2271b1;\"><\/i> <span>Fort Awesome<\/span>",
|
||||||
|
"forumbee": "<i class=\"fa-brands fa-forumbee\" style=\"color: #2271b1;\"><\/i> <span>Forumbee<\/span>",
|
||||||
|
"foursquare": "<i class=\"fa-brands fa-foursquare\" style=\"color: #2271b1;\"><\/i> <span>Foursquare<\/span>",
|
||||||
|
"free-code-camp": "<i class=\"fa-brands fa-free-code-camp\" style=\"color: #2271b1;\"><\/i> <span>Free Code Camp<\/span>",
|
||||||
|
"freebsd": "<i class=\"fa-brands fa-freebsd\" style=\"color: #2271b1;\"><\/i> <span>Freebsd<\/span>",
|
||||||
|
"fulcrum": "<i class=\"fa-brands fa-fulcrum\" style=\"color: #2271b1;\"><\/i> <span>Fulcrum<\/span>",
|
||||||
|
"galactic-republic": "<i class=\"fa-brands fa-galactic-republic\" style=\"color: #2271b1;\"><\/i> <span>Galactic Republic<\/span>",
|
||||||
|
"galactic-senate": "<i class=\"fa-brands fa-galactic-senate\" style=\"color: #2271b1;\"><\/i> <span>Galactic Senate<\/span>",
|
||||||
|
"get-pocket": "<i class=\"fa-brands fa-get-pocket\" style=\"color: #2271b1;\"><\/i> <span>Get Pocket<\/span>",
|
||||||
|
"gg-circle": "<i class=\"fa-brands fa-gg-circle\" style=\"color: #2271b1;\"><\/i> <span>Gg Circle<\/span>",
|
||||||
|
"gg": "<i class=\"fa-brands fa-gg\" style=\"color: #2271b1;\"><\/i> <span>Gg<\/span>",
|
||||||
|
"git-alt": "<i class=\"fa-brands fa-git-alt\" style=\"color: #2271b1;\"><\/i> <span>Git Alt<\/span>",
|
||||||
|
"git-square": "<i class=\"fa-brands fa-git-square\" style=\"color: #2271b1;\"><\/i> <span>Git Square<\/span>",
|
||||||
|
"git": "<i class=\"fa-brands fa-git\" style=\"color: #2271b1;\"><\/i> <span>Git<\/span>",
|
||||||
|
"github-alt": "<i class=\"fa-brands fa-github-alt\" style=\"color: #2271b1;\"><\/i> <span>Github Alt<\/span>",
|
||||||
|
"github-square": "<i class=\"fa-brands fa-github-square\" style=\"color: #2271b1;\"><\/i> <span>Github Square<\/span>",
|
||||||
|
"github": "<i class=\"fa-brands fa-github\" style=\"color: #2271b1;\"><\/i> <span>Github<\/span>",
|
||||||
|
"gitkraken": "<i class=\"fa-brands fa-gitkraken\" style=\"color: #2271b1;\"><\/i> <span>Gitkraken<\/span>",
|
||||||
|
"gitlab-square": "<i class=\"fa-brands fa-gitlab-square\" style=\"color: #2271b1;\"><\/i> <span>Gitlab Square<\/span>",
|
||||||
|
"gitlab": "<i class=\"fa-brands fa-gitlab\" style=\"color: #2271b1;\"><\/i> <span>Gitlab<\/span>",
|
||||||
|
"gitter": "<i class=\"fa-brands fa-gitter\" style=\"color: #2271b1;\"><\/i> <span>Gitter<\/span>",
|
||||||
|
"glide-g": "<i class=\"fa-brands fa-glide-g\" style=\"color: #2271b1;\"><\/i> <span>Glide G<\/span>",
|
||||||
|
"glide": "<i class=\"fa-brands fa-glide\" style=\"color: #2271b1;\"><\/i> <span>Glide<\/span>",
|
||||||
|
"gofore": "<i class=\"fa-brands fa-gofore\" style=\"color: #2271b1;\"><\/i> <span>Gofore<\/span>",
|
||||||
|
"golang": "<i class=\"fa-brands fa-golang\" style=\"color: #2271b1;\"><\/i> <span>Golang<\/span>",
|
||||||
|
"goodreads-g": "<i class=\"fa-brands fa-goodreads-g\" style=\"color: #2271b1;\"><\/i> <span>Goodreads G<\/span>",
|
||||||
|
"goodreads": "<i class=\"fa-brands fa-goodreads\" style=\"color: #2271b1;\"><\/i> <span>Goodreads<\/span>",
|
||||||
|
"google-drive": "<i class=\"fa-brands fa-google-drive\" style=\"color: #2271b1;\"><\/i> <span>Google Drive<\/span>",
|
||||||
|
"google-pay": "<i class=\"fa-brands fa-google-pay\" style=\"color: #2271b1;\"><\/i> <span>Google Pay<\/span>",
|
||||||
|
"google-play": "<i class=\"fa-brands fa-google-play\" style=\"color: #2271b1;\"><\/i> <span>Google Play<\/span>",
|
||||||
|
"google-plus-g": "<i class=\"fa-brands fa-google-plus-g\" style=\"color: #2271b1;\"><\/i> <span>Google Plus G<\/span>",
|
||||||
|
"google-plus-square": "<i class=\"fa-brands fa-google-plus-square\" style=\"color: #2271b1;\"><\/i> <span>Google Plus Square<\/span>",
|
||||||
|
"google-plus": "<i class=\"fa-brands fa-google-plus\" style=\"color: #2271b1;\"><\/i> <span>Google Plus<\/span>",
|
||||||
|
"google-scholar": "<i class=\"fa-brands fa-google-scholar\" style=\"color: #2271b1;\"><\/i> <span>Google Scholar<\/span>",
|
||||||
|
"google-wallet": "<i class=\"fa-brands fa-google-wallet\" style=\"color: #2271b1;\"><\/i> <span>Google Wallet<\/span>",
|
||||||
|
"google": "<i class=\"fa-brands fa-google\" style=\"color: #2271b1;\"><\/i> <span>Google<\/span>",
|
||||||
|
"gratipay": "<i class=\"fa-brands fa-gratipay\" style=\"color: #2271b1;\"><\/i> <span>Gratipay<\/span>",
|
||||||
|
"grav": "<i class=\"fa-brands fa-grav\" style=\"color: #2271b1;\"><\/i> <span>Grav<\/span>",
|
||||||
|
"gripfire": "<i class=\"fa-brands fa-gripfire\" style=\"color: #2271b1;\"><\/i> <span>Gripfire<\/span>",
|
||||||
|
"grunt": "<i class=\"fa-brands fa-grunt\" style=\"color: #2271b1;\"><\/i> <span>Grunt<\/span>",
|
||||||
|
"guilded": "<i class=\"fa-brands fa-guilded\" style=\"color: #2271b1;\"><\/i> <span>Guilded<\/span>",
|
||||||
|
"gulp": "<i class=\"fa-brands fa-gulp\" style=\"color: #2271b1;\"><\/i> <span>Gulp<\/span>",
|
||||||
|
"hacker-news-square": "<i class=\"fa-brands fa-hacker-news-square\" style=\"color: #2271b1;\"><\/i> <span>Hacker News Square<\/span>",
|
||||||
|
"hacker-news": "<i class=\"fa-brands fa-hacker-news\" style=\"color: #2271b1;\"><\/i> <span>Hacker News<\/span>",
|
||||||
|
"hackerrank": "<i class=\"fa-brands fa-hackerrank\" style=\"color: #2271b1;\"><\/i> <span>Hackerrank<\/span>",
|
||||||
|
"hashnode": "<i class=\"fa-brands fa-hashnode\" style=\"color: #2271b1;\"><\/i> <span>Hashnode<\/span>",
|
||||||
|
"hips": "<i class=\"fa-brands fa-hips\" style=\"color: #2271b1;\"><\/i> <span>Hips<\/span>",
|
||||||
|
"hire-a-helper": "<i class=\"fa-brands fa-hire-a-helper\" style=\"color: #2271b1;\"><\/i> <span>Hire A Helper<\/span>",
|
||||||
|
"hive": "<i class=\"fa-brands fa-hive\" style=\"color: #2271b1;\"><\/i> <span>Hive<\/span>",
|
||||||
|
"hooli": "<i class=\"fa-brands fa-hooli\" style=\"color: #2271b1;\"><\/i> <span>Hooli<\/span>",
|
||||||
|
"hornbill": "<i class=\"fa-brands fa-hornbill\" style=\"color: #2271b1;\"><\/i> <span>Hornbill<\/span>",
|
||||||
|
"hotjar": "<i class=\"fa-brands fa-hotjar\" style=\"color: #2271b1;\"><\/i> <span>Hotjar<\/span>",
|
||||||
|
"houzz": "<i class=\"fa-brands fa-houzz\" style=\"color: #2271b1;\"><\/i> <span>Houzz<\/span>",
|
||||||
|
"html5": "<i class=\"fa-brands fa-html5\" style=\"color: #2271b1;\"><\/i> <span>Html5<\/span>",
|
||||||
|
"hubspot": "<i class=\"fa-brands fa-hubspot\" style=\"color: #2271b1;\"><\/i> <span>Hubspot<\/span>",
|
||||||
|
"ideal": "<i class=\"fa-brands fa-ideal\" style=\"color: #2271b1;\"><\/i> <span>Ideal<\/span>",
|
||||||
|
"imdb": "<i class=\"fa-brands fa-imdb\" style=\"color: #2271b1;\"><\/i> <span>Imdb<\/span>",
|
||||||
|
"innosoft": "<i class=\"fa-brands fa-innosoft\" style=\"color: #2271b1;\"><\/i> <span>Innosoft<\/span>",
|
||||||
|
"instagram-square": "<i class=\"fa-brands fa-instagram-square\" style=\"color: #2271b1;\"><\/i> <span>Instagram Square<\/span>",
|
||||||
|
"instagram": "<i class=\"fa-brands fa-instagram\" style=\"color: #2271b1;\"><\/i> <span>Instagram<\/span>",
|
||||||
|
"instalod": "<i class=\"fa-brands fa-instalod\" style=\"color: #2271b1;\"><\/i> <span>Instalod<\/span>",
|
||||||
|
"intercom": "<i class=\"fa-brands fa-intercom\" style=\"color: #2271b1;\"><\/i> <span>Intercom<\/span>",
|
||||||
|
"internet-explorer": "<i class=\"fa-brands fa-internet-explorer\" style=\"color: #2271b1;\"><\/i> <span>Internet Explorer<\/span>",
|
||||||
|
"invision": "<i class=\"fa-brands fa-invision\" style=\"color: #2271b1;\"><\/i> <span>Invision<\/span>",
|
||||||
|
"ioxhost": "<i class=\"fa-brands fa-ioxhost\" style=\"color: #2271b1;\"><\/i> <span>Ioxhost<\/span>",
|
||||||
|
"itch-io": "<i class=\"fa-brands fa-itch-io\" style=\"color: #2271b1;\"><\/i> <span>Itch Io<\/span>",
|
||||||
|
"itunes-note": "<i class=\"fa-brands fa-itunes-note\" style=\"color: #2271b1;\"><\/i> <span>Itunes Note<\/span>",
|
||||||
|
"itunes": "<i class=\"fa-brands fa-itunes\" style=\"color: #2271b1;\"><\/i> <span>Itunes<\/span>",
|
||||||
|
"java": "<i class=\"fa-brands fa-java\" style=\"color: #2271b1;\"><\/i> <span>Java<\/span>",
|
||||||
|
"jedi-order": "<i class=\"fa-brands fa-jedi-order\" style=\"color: #2271b1;\"><\/i> <span>Jedi Order<\/span>",
|
||||||
|
"jenkins": "<i class=\"fa-brands fa-jenkins\" style=\"color: #2271b1;\"><\/i> <span>Jenkins<\/span>",
|
||||||
|
"jira": "<i class=\"fa-brands fa-jira\" style=\"color: #2271b1;\"><\/i> <span>Jira<\/span>",
|
||||||
|
"joget": "<i class=\"fa-brands fa-joget\" style=\"color: #2271b1;\"><\/i> <span>Joget<\/span>",
|
||||||
|
"joomla": "<i class=\"fa-brands fa-joomla\" style=\"color: #2271b1;\"><\/i> <span>Joomla<\/span>",
|
||||||
|
"js-square": "<i class=\"fa-brands fa-js-square\" style=\"color: #2271b1;\"><\/i> <span>Js Square<\/span>",
|
||||||
|
"js": "<i class=\"fa-brands fa-js\" style=\"color: #2271b1;\"><\/i> <span>Js<\/span>",
|
||||||
|
"jsfiddle": "<i class=\"fa-brands fa-jsfiddle\" style=\"color: #2271b1;\"><\/i> <span>Jsfiddle<\/span>",
|
||||||
|
"jxl": "<i class=\"fa-brands fa-jxl\" style=\"color: #2271b1;\"><\/i> <span>Jxl<\/span>",
|
||||||
|
"kaggle": "<i class=\"fa-brands fa-kaggle\" style=\"color: #2271b1;\"><\/i> <span>Kaggle<\/span>",
|
||||||
|
"kakao-talk": "<i class=\"fa-brands fa-kakao-talk\" style=\"color: #2271b1;\"><\/i> <span>Kakao Talk<\/span>",
|
||||||
|
"keybase": "<i class=\"fa-brands fa-keybase\" style=\"color: #2271b1;\"><\/i> <span>Keybase<\/span>",
|
||||||
|
"keycdn": "<i class=\"fa-brands fa-keycdn\" style=\"color: #2271b1;\"><\/i> <span>Keycdn<\/span>",
|
||||||
|
"kickstarter-k": "<i class=\"fa-brands fa-kickstarter-k\" style=\"color: #2271b1;\"><\/i> <span>Kickstarter K<\/span>",
|
||||||
|
"kickstarter": "<i class=\"fa-brands fa-kickstarter\" style=\"color: #2271b1;\"><\/i> <span>Kickstarter<\/span>",
|
||||||
|
"korvue": "<i class=\"fa-brands fa-korvue\" style=\"color: #2271b1;\"><\/i> <span>Korvue<\/span>",
|
||||||
|
"laravel": "<i class=\"fa-brands fa-laravel\" style=\"color: #2271b1;\"><\/i> <span>Laravel<\/span>",
|
||||||
|
"lastfm-square": "<i class=\"fa-brands fa-lastfm-square\" style=\"color: #2271b1;\"><\/i> <span>Lastfm Square<\/span>",
|
||||||
|
"lastfm": "<i class=\"fa-brands fa-lastfm\" style=\"color: #2271b1;\"><\/i> <span>Lastfm<\/span>",
|
||||||
|
"leanpub": "<i class=\"fa-brands fa-leanpub\" style=\"color: #2271b1;\"><\/i> <span>Leanpub<\/span>",
|
||||||
|
"less": "<i class=\"fa-brands fa-less\" style=\"color: #2271b1;\"><\/i> <span>Less<\/span>",
|
||||||
|
"letterboxd": "<i class=\"fa-brands fa-letterboxd\" style=\"color: #2271b1;\"><\/i> <span>Letterboxd<\/span>",
|
||||||
|
"line": "<i class=\"fa-brands fa-line\" style=\"color: #2271b1;\"><\/i> <span>Line<\/span>",
|
||||||
|
"linkedin-in": "<i class=\"fa-brands fa-linkedin-in\" style=\"color: #2271b1;\"><\/i> <span>Linkedin In<\/span>",
|
||||||
|
"linkedin": "<i class=\"fa-brands fa-linkedin\" style=\"color: #2271b1;\"><\/i> <span>Linkedin<\/span>",
|
||||||
|
"linktree": "<i class=\"fa-brands fa-linktree\" style=\"color: #2271b1;\"><\/i> <span>Linktree<\/span>",
|
||||||
|
"linode": "<i class=\"fa-brands fa-linode\" style=\"color: #2271b1;\"><\/i> <span>Linode<\/span>",
|
||||||
|
"linux": "<i class=\"fa-brands fa-linux\" style=\"color: #2271b1;\"><\/i> <span>Linux<\/span>",
|
||||||
|
"lumon-drop": "<i class=\"fa-brands fa-lumon-drop\" style=\"color: #2271b1;\"><\/i> <span>Lumon Drop<\/span>",
|
||||||
|
"lumon": "<i class=\"fa-brands fa-lumon\" style=\"color: #2271b1;\"><\/i> <span>Lumon<\/span>",
|
||||||
|
"lyft": "<i class=\"fa-brands fa-lyft\" style=\"color: #2271b1;\"><\/i> <span>Lyft<\/span>",
|
||||||
|
"magento": "<i class=\"fa-brands fa-magento\" style=\"color: #2271b1;\"><\/i> <span>Magento<\/span>",
|
||||||
|
"mailchimp": "<i class=\"fa-brands fa-mailchimp\" style=\"color: #2271b1;\"><\/i> <span>Mailchimp<\/span>",
|
||||||
|
"mandalorian": "<i class=\"fa-brands fa-mandalorian\" style=\"color: #2271b1;\"><\/i> <span>Mandalorian<\/span>",
|
||||||
|
"markdown": "<i class=\"fa-brands fa-markdown\" style=\"color: #2271b1;\"><\/i> <span>Markdown<\/span>",
|
||||||
|
"mastodon": "<i class=\"fa-brands fa-mastodon\" style=\"color: #2271b1;\"><\/i> <span>Mastodon<\/span>",
|
||||||
|
"maxcdn": "<i class=\"fa-brands fa-maxcdn\" style=\"color: #2271b1;\"><\/i> <span>Maxcdn<\/span>",
|
||||||
|
"mdb": "<i class=\"fa-brands fa-mdb\" style=\"color: #2271b1;\"><\/i> <span>Mdb<\/span>",
|
||||||
|
"medapps": "<i class=\"fa-brands fa-medapps\" style=\"color: #2271b1;\"><\/i> <span>Medapps<\/span>",
|
||||||
|
"medium-m": "<i class=\"fa-brands fa-medium-m\" style=\"color: #2271b1;\"><\/i> <span>Medium M<\/span>",
|
||||||
|
"medium": "<i class=\"fa-brands fa-medium\" style=\"color: #2271b1;\"><\/i> <span>Medium<\/span>",
|
||||||
|
"medrt": "<i class=\"fa-brands fa-medrt\" style=\"color: #2271b1;\"><\/i> <span>Medrt<\/span>",
|
||||||
|
"meetup": "<i class=\"fa-brands fa-meetup\" style=\"color: #2271b1;\"><\/i> <span>Meetup<\/span>",
|
||||||
|
"megaport": "<i class=\"fa-brands fa-megaport\" style=\"color: #2271b1;\"><\/i> <span>Megaport<\/span>",
|
||||||
|
"mendeley": "<i class=\"fa-brands fa-mendeley\" style=\"color: #2271b1;\"><\/i> <span>Mendeley<\/span>",
|
||||||
|
"meta": "<i class=\"fa-brands fa-meta\" style=\"color: #2271b1;\"><\/i> <span>Meta<\/span>",
|
||||||
|
"microblog": "<i class=\"fa-brands fa-microblog\" style=\"color: #2271b1;\"><\/i> <span>Microblog<\/span>",
|
||||||
|
"microsoft": "<i class=\"fa-brands fa-microsoft\" style=\"color: #2271b1;\"><\/i> <span>Microsoft<\/span>",
|
||||||
|
"mintbit": "<i class=\"fa-brands fa-mintbit\" style=\"color: #2271b1;\"><\/i> <span>Mintbit<\/span>",
|
||||||
|
"mix": "<i class=\"fa-brands fa-mix\" style=\"color: #2271b1;\"><\/i> <span>Mix<\/span>",
|
||||||
|
"mixcloud": "<i class=\"fa-brands fa-mixcloud\" style=\"color: #2271b1;\"><\/i> <span>Mixcloud<\/span>",
|
||||||
|
"mixer": "<i class=\"fa-brands fa-mixer\" style=\"color: #2271b1;\"><\/i> <span>Mixer<\/span>",
|
||||||
|
"mizuni": "<i class=\"fa-brands fa-mizuni\" style=\"color: #2271b1;\"><\/i> <span>Mizuni<\/span>",
|
||||||
|
"modx": "<i class=\"fa-brands fa-modx\" style=\"color: #2271b1;\"><\/i> <span>Modx<\/span>",
|
||||||
|
"monero": "<i class=\"fa-brands fa-monero\" style=\"color: #2271b1;\"><\/i> <span>Monero<\/span>",
|
||||||
|
"napster": "<i class=\"fa-brands fa-napster\" style=\"color: #2271b1;\"><\/i> <span>Napster<\/span>",
|
||||||
|
"neos": "<i class=\"fa-brands fa-neos\" style=\"color: #2271b1;\"><\/i> <span>Neos<\/span>",
|
||||||
|
"nfc-directional": "<i class=\"fa-brands fa-nfc-directional\" style=\"color: #2271b1;\"><\/i> <span>Nfc Directional<\/span>",
|
||||||
|
"nfc-symbol": "<i class=\"fa-brands fa-nfc-symbol\" style=\"color: #2271b1;\"><\/i> <span>Nfc Symbol<\/span>",
|
||||||
|
"nimblr": "<i class=\"fa-brands fa-nimblr\" style=\"color: #2271b1;\"><\/i> <span>Nimblr<\/span>",
|
||||||
|
"node-js": "<i class=\"fa-brands fa-node-js\" style=\"color: #2271b1;\"><\/i> <span>Node Js<\/span>",
|
||||||
|
"node": "<i class=\"fa-brands fa-node\" style=\"color: #2271b1;\"><\/i> <span>Node<\/span>",
|
||||||
|
"notion": "<i class=\"fa-brands fa-notion\" style=\"color: #2271b1;\"><\/i> <span>Notion<\/span>",
|
||||||
|
"npm": "<i class=\"fa-brands fa-npm\" style=\"color: #2271b1;\"><\/i> <span>Npm<\/span>",
|
||||||
|
"ns8": "<i class=\"fa-brands fa-ns8\" style=\"color: #2271b1;\"><\/i> <span>Ns8<\/span>",
|
||||||
|
"nutritionix": "<i class=\"fa-brands fa-nutritionix\" style=\"color: #2271b1;\"><\/i> <span>Nutritionix<\/span>",
|
||||||
|
"octopus-deploy": "<i class=\"fa-brands fa-octopus-deploy\" style=\"color: #2271b1;\"><\/i> <span>Octopus Deploy<\/span>",
|
||||||
|
"odnoklassniki-square": "<i class=\"fa-brands fa-odnoklassniki-square\" style=\"color: #2271b1;\"><\/i> <span>Odnoklassniki Square<\/span>",
|
||||||
|
"odnoklassniki": "<i class=\"fa-brands fa-odnoklassniki\" style=\"color: #2271b1;\"><\/i> <span>Odnoklassniki<\/span>",
|
||||||
|
"odysee": "<i class=\"fa-brands fa-odysee\" style=\"color: #2271b1;\"><\/i> <span>Odysee<\/span>",
|
||||||
|
"old-republic": "<i class=\"fa-brands fa-old-republic\" style=\"color: #2271b1;\"><\/i> <span>Old Republic<\/span>",
|
||||||
|
"openai": "<i class=\"fa-brands fa-openai\" style=\"color: #2271b1;\"><\/i> <span>Openai<\/span>",
|
||||||
|
"opencart": "<i class=\"fa-brands fa-opencart\" style=\"color: #2271b1;\"><\/i> <span>Opencart<\/span>",
|
||||||
|
"openid": "<i class=\"fa-brands fa-openid\" style=\"color: #2271b1;\"><\/i> <span>Openid<\/span>",
|
||||||
|
"opensuse": "<i class=\"fa-brands fa-opensuse\" style=\"color: #2271b1;\"><\/i> <span>Opensuse<\/span>",
|
||||||
|
"opera": "<i class=\"fa-brands fa-opera\" style=\"color: #2271b1;\"><\/i> <span>Opera<\/span>",
|
||||||
|
"optin-monster": "<i class=\"fa-brands fa-optin-monster\" style=\"color: #2271b1;\"><\/i> <span>Optin Monster<\/span>",
|
||||||
|
"orcid": "<i class=\"fa-brands fa-orcid\" style=\"color: #2271b1;\"><\/i> <span>Orcid<\/span>",
|
||||||
|
"osi": "<i class=\"fa-brands fa-osi\" style=\"color: #2271b1;\"><\/i> <span>Osi<\/span>",
|
||||||
|
"padlet": "<i class=\"fa-brands fa-padlet\" style=\"color: #2271b1;\"><\/i> <span>Padlet<\/span>",
|
||||||
|
"page4": "<i class=\"fa-brands fa-page4\" style=\"color: #2271b1;\"><\/i> <span>Page4<\/span>",
|
||||||
|
"pagelines": "<i class=\"fa-brands fa-pagelines\" style=\"color: #2271b1;\"><\/i> <span>Pagelines<\/span>",
|
||||||
|
"palfed": "<i class=\"fa-brands fa-palfed\" style=\"color: #2271b1;\"><\/i> <span>Palfed<\/span>",
|
||||||
|
"pandora": "<i class=\"fa-brands fa-pandora\" style=\"color: #2271b1;\"><\/i> <span>Pandora<\/span>",
|
||||||
|
"patreon": "<i class=\"fa-brands fa-patreon\" style=\"color: #2271b1;\"><\/i> <span>Patreon<\/span>",
|
||||||
|
"paypal": "<i class=\"fa-brands fa-paypal\" style=\"color: #2271b1;\"><\/i> <span>Paypal<\/span>",
|
||||||
|
"perbyte": "<i class=\"fa-brands fa-perbyte\" style=\"color: #2271b1;\"><\/i> <span>Perbyte<\/span>",
|
||||||
|
"periscope": "<i class=\"fa-brands fa-periscope\" style=\"color: #2271b1;\"><\/i> <span>Periscope<\/span>",
|
||||||
|
"phabricator": "<i class=\"fa-brands fa-phabricator\" style=\"color: #2271b1;\"><\/i> <span>Phabricator<\/span>",
|
||||||
|
"phoenix-framework": "<i class=\"fa-brands fa-phoenix-framework\" style=\"color: #2271b1;\"><\/i> <span>Phoenix Framework<\/span>",
|
||||||
|
"phoenix-squadron": "<i class=\"fa-brands fa-phoenix-squadron\" style=\"color: #2271b1;\"><\/i> <span>Phoenix Squadron<\/span>",
|
||||||
|
"php": "<i class=\"fa-brands fa-php\" style=\"color: #2271b1;\"><\/i> <span>Php<\/span>",
|
||||||
|
"pied-piper-alt": "<i class=\"fa-brands fa-pied-piper-alt\" style=\"color: #2271b1;\"><\/i> <span>Pied Piper Alt<\/span>",
|
||||||
|
"pied-piper-hat": "<i class=\"fa-brands fa-pied-piper-hat\" style=\"color: #2271b1;\"><\/i> <span>Pied Piper Hat<\/span>",
|
||||||
|
"pied-piper-pp": "<i class=\"fa-brands fa-pied-piper-pp\" style=\"color: #2271b1;\"><\/i> <span>Pied Piper Pp<\/span>",
|
||||||
|
"pied-piper-square": "<i class=\"fa-brands fa-pied-piper-square\" style=\"color: #2271b1;\"><\/i> <span>Pied Piper Square<\/span>",
|
||||||
|
"pied-piper": "<i class=\"fa-brands fa-pied-piper\" style=\"color: #2271b1;\"><\/i> <span>Pied Piper<\/span>",
|
||||||
|
"pinterest-p": "<i class=\"fa-brands fa-pinterest-p\" style=\"color: #2271b1;\"><\/i> <span>Pinterest P<\/span>",
|
||||||
|
"pinterest-square": "<i class=\"fa-brands fa-pinterest-square\" style=\"color: #2271b1;\"><\/i> <span>Pinterest Square<\/span>",
|
||||||
|
"pinterest": "<i class=\"fa-brands fa-pinterest\" style=\"color: #2271b1;\"><\/i> <span>Pinterest<\/span>",
|
||||||
|
"pix": "<i class=\"fa-brands fa-pix\" style=\"color: #2271b1;\"><\/i> <span>Pix<\/span>",
|
||||||
|
"pixelfed": "<i class=\"fa-brands fa-pixelfed\" style=\"color: #2271b1;\"><\/i> <span>Pixelfed<\/span>",
|
||||||
|
"pixiv": "<i class=\"fa-brands fa-pixiv\" style=\"color: #2271b1;\"><\/i> <span>Pixiv<\/span>",
|
||||||
|
"playstation": "<i class=\"fa-brands fa-playstation\" style=\"color: #2271b1;\"><\/i> <span>Playstation<\/span>",
|
||||||
|
"product-hunt": "<i class=\"fa-brands fa-product-hunt\" style=\"color: #2271b1;\"><\/i> <span>Product Hunt<\/span>",
|
||||||
|
"pushed": "<i class=\"fa-brands fa-pushed\" style=\"color: #2271b1;\"><\/i> <span>Pushed<\/span>",
|
||||||
|
"python": "<i class=\"fa-brands fa-python\" style=\"color: #2271b1;\"><\/i> <span>Python<\/span>",
|
||||||
|
"qq": "<i class=\"fa-brands fa-qq\" style=\"color: #2271b1;\"><\/i> <span>Qq<\/span>",
|
||||||
|
"quinscape": "<i class=\"fa-brands fa-quinscape\" style=\"color: #2271b1;\"><\/i> <span>Quinscape<\/span>",
|
||||||
|
"quora": "<i class=\"fa-brands fa-quora\" style=\"color: #2271b1;\"><\/i> <span>Quora<\/span>",
|
||||||
|
"r-project": "<i class=\"fa-brands fa-r-project\" style=\"color: #2271b1;\"><\/i> <span>R Project<\/span>",
|
||||||
|
"raspberry-pi": "<i class=\"fa-brands fa-raspberry-pi\" style=\"color: #2271b1;\"><\/i> <span>Raspberry Pi<\/span>",
|
||||||
|
"ravelry": "<i class=\"fa-brands fa-ravelry\" style=\"color: #2271b1;\"><\/i> <span>Ravelry<\/span>",
|
||||||
|
"react": "<i class=\"fa-brands fa-react\" style=\"color: #2271b1;\"><\/i> <span>React<\/span>",
|
||||||
|
"reacteurope": "<i class=\"fa-brands fa-reacteurope\" style=\"color: #2271b1;\"><\/i> <span>Reacteurope<\/span>",
|
||||||
|
"readme": "<i class=\"fa-brands fa-readme\" style=\"color: #2271b1;\"><\/i> <span>Readme<\/span>",
|
||||||
|
"rebel": "<i class=\"fa-brands fa-rebel\" style=\"color: #2271b1;\"><\/i> <span>Rebel<\/span>",
|
||||||
|
"red-river": "<i class=\"fa-brands fa-red-river\" style=\"color: #2271b1;\"><\/i> <span>Red River<\/span>",
|
||||||
|
"reddit-alien": "<i class=\"fa-brands fa-reddit-alien\" style=\"color: #2271b1;\"><\/i> <span>Reddit Alien<\/span>",
|
||||||
|
"reddit-square": "<i class=\"fa-brands fa-reddit-square\" style=\"color: #2271b1;\"><\/i> <span>Reddit Square<\/span>",
|
||||||
|
"reddit": "<i class=\"fa-brands fa-reddit\" style=\"color: #2271b1;\"><\/i> <span>Reddit<\/span>",
|
||||||
|
"redhat": "<i class=\"fa-brands fa-redhat\" style=\"color: #2271b1;\"><\/i> <span>Redhat<\/span>",
|
||||||
|
"rendact": "<i class=\"fa-brands fa-rendact\" style=\"color: #2271b1;\"><\/i> <span>Rendact<\/span>",
|
||||||
|
"renren": "<i class=\"fa-brands fa-renren\" style=\"color: #2271b1;\"><\/i> <span>Renren<\/span>",
|
||||||
|
"replyd": "<i class=\"fa-brands fa-replyd\" style=\"color: #2271b1;\"><\/i> <span>Replyd<\/span>",
|
||||||
|
"researchgate": "<i class=\"fa-brands fa-researchgate\" style=\"color: #2271b1;\"><\/i> <span>Researchgate<\/span>",
|
||||||
|
"resolving": "<i class=\"fa-brands fa-resolving\" style=\"color: #2271b1;\"><\/i> <span>Resolving<\/span>",
|
||||||
|
"rev": "<i class=\"fa-brands fa-rev\" style=\"color: #2271b1;\"><\/i> <span>Rev<\/span>",
|
||||||
|
"rocketchat": "<i class=\"fa-brands fa-rocketchat\" style=\"color: #2271b1;\"><\/i> <span>Rocketchat<\/span>",
|
||||||
|
"rockrms": "<i class=\"fa-brands fa-rockrms\" style=\"color: #2271b1;\"><\/i> <span>Rockrms<\/span>",
|
||||||
|
"rust": "<i class=\"fa-brands fa-rust\" style=\"color: #2271b1;\"><\/i> <span>Rust<\/span>",
|
||||||
|
"safari": "<i class=\"fa-brands fa-safari\" style=\"color: #2271b1;\"><\/i> <span>Safari<\/span>",
|
||||||
|
"salesforce": "<i class=\"fa-brands fa-salesforce\" style=\"color: #2271b1;\"><\/i> <span>Salesforce<\/span>",
|
||||||
|
"sass": "<i class=\"fa-brands fa-sass\" style=\"color: #2271b1;\"><\/i> <span>Sass<\/span>",
|
||||||
|
"schlix": "<i class=\"fa-brands fa-schlix\" style=\"color: #2271b1;\"><\/i> <span>Schlix<\/span>",
|
||||||
|
"screenpal": "<i class=\"fa-brands fa-screenpal\" style=\"color: #2271b1;\"><\/i> <span>Screenpal<\/span>",
|
||||||
|
"scribd": "<i class=\"fa-brands fa-scribd\" style=\"color: #2271b1;\"><\/i> <span>Scribd<\/span>",
|
||||||
|
"searchengin": "<i class=\"fa-brands fa-searchengin\" style=\"color: #2271b1;\"><\/i> <span>Searchengin<\/span>",
|
||||||
|
"sellcast": "<i class=\"fa-brands fa-sellcast\" style=\"color: #2271b1;\"><\/i> <span>Sellcast<\/span>",
|
||||||
|
"sellsy": "<i class=\"fa-brands fa-sellsy\" style=\"color: #2271b1;\"><\/i> <span>Sellsy<\/span>",
|
||||||
|
"servicestack": "<i class=\"fa-brands fa-servicestack\" style=\"color: #2271b1;\"><\/i> <span>Servicestack<\/span>",
|
||||||
|
"shirtsinbulk": "<i class=\"fa-brands fa-shirtsinbulk\" style=\"color: #2271b1;\"><\/i> <span>Shirtsinbulk<\/span>",
|
||||||
|
"shoelace": "<i class=\"fa-brands fa-shoelace\" style=\"color: #2271b1;\"><\/i> <span>Shoelace<\/span>",
|
||||||
|
"shopify": "<i class=\"fa-brands fa-shopify\" style=\"color: #2271b1;\"><\/i> <span>Shopify<\/span>",
|
||||||
|
"shopware": "<i class=\"fa-brands fa-shopware\" style=\"color: #2271b1;\"><\/i> <span>Shopware<\/span>",
|
||||||
|
"signal-messenger": "<i class=\"fa-brands fa-signal-messenger\" style=\"color: #2271b1;\"><\/i> <span>Signal Messenger<\/span>",
|
||||||
|
"simplybuilt": "<i class=\"fa-brands fa-simplybuilt\" style=\"color: #2271b1;\"><\/i> <span>Simplybuilt<\/span>",
|
||||||
|
"sistrix": "<i class=\"fa-brands fa-sistrix\" style=\"color: #2271b1;\"><\/i> <span>Sistrix<\/span>",
|
||||||
|
"sith": "<i class=\"fa-brands fa-sith\" style=\"color: #2271b1;\"><\/i> <span>Sith<\/span>",
|
||||||
|
"sitrox": "<i class=\"fa-brands fa-sitrox\" style=\"color: #2271b1;\"><\/i> <span>Sitrox<\/span>",
|
||||||
|
"sketch": "<i class=\"fa-brands fa-sketch\" style=\"color: #2271b1;\"><\/i> <span>Sketch<\/span>",
|
||||||
|
"skyatlas": "<i class=\"fa-brands fa-skyatlas\" style=\"color: #2271b1;\"><\/i> <span>Skyatlas<\/span>",
|
||||||
|
"skype": "<i class=\"fa-brands fa-skype\" style=\"color: #2271b1;\"><\/i> <span>Skype<\/span>",
|
||||||
|
"slack-hash": "<i class=\"fa-brands fa-slack-hash\" style=\"color: #2271b1;\"><\/i> <span>Slack Hash<\/span>",
|
||||||
|
"slack": "<i class=\"fa-brands fa-slack\" style=\"color: #2271b1;\"><\/i> <span>Slack<\/span>",
|
||||||
|
"slideshare": "<i class=\"fa-brands fa-slideshare\" style=\"color: #2271b1;\"><\/i> <span>Slideshare<\/span>",
|
||||||
|
"snapchat-ghost": "<i class=\"fa-brands fa-snapchat-ghost\" style=\"color: #2271b1;\"><\/i> <span>Snapchat Ghost<\/span>",
|
||||||
|
"snapchat-square": "<i class=\"fa-brands fa-snapchat-square\" style=\"color: #2271b1;\"><\/i> <span>Snapchat Square<\/span>",
|
||||||
|
"snapchat": "<i class=\"fa-brands fa-snapchat\" style=\"color: #2271b1;\"><\/i> <span>Snapchat<\/span>",
|
||||||
|
"soundcloud": "<i class=\"fa-brands fa-soundcloud\" style=\"color: #2271b1;\"><\/i> <span>Soundcloud<\/span>",
|
||||||
|
"sourcetree": "<i class=\"fa-brands fa-sourcetree\" style=\"color: #2271b1;\"><\/i> <span>Sourcetree<\/span>",
|
||||||
|
"space-awesome": "<i class=\"fa-brands fa-space-awesome\" style=\"color: #2271b1;\"><\/i> <span>Space Awesome<\/span>",
|
||||||
|
"speakap": "<i class=\"fa-brands fa-speakap\" style=\"color: #2271b1;\"><\/i> <span>Speakap<\/span>",
|
||||||
|
"speaker-deck": "<i class=\"fa-brands fa-speaker-deck\" style=\"color: #2271b1;\"><\/i> <span>Speaker Deck<\/span>",
|
||||||
|
"spotify": "<i class=\"fa-brands fa-spotify\" style=\"color: #2271b1;\"><\/i> <span>Spotify<\/span>",
|
||||||
|
"square-behance": "<i class=\"fa-brands fa-square-behance\" style=\"color: #2271b1;\"><\/i> <span>Square Behance<\/span>",
|
||||||
|
"square-bluesky": "<i class=\"fa-brands fa-square-bluesky\" style=\"color: #2271b1;\"><\/i> <span>Square Bluesky<\/span>",
|
||||||
|
"square-dribbble": "<i class=\"fa-brands fa-square-dribbble\" style=\"color: #2271b1;\"><\/i> <span>Square Dribbble<\/span>",
|
||||||
|
"square-facebook": "<i class=\"fa-brands fa-square-facebook\" style=\"color: #2271b1;\"><\/i> <span>Square Facebook<\/span>",
|
||||||
|
"square-figma": "<i class=\"fa-brands fa-square-figma\" style=\"color: #2271b1;\"><\/i> <span>Square Figma<\/span>",
|
||||||
|
"square-font-awesome-stroke": "<i class=\"fa-brands fa-square-font-awesome-stroke\" style=\"color: #2271b1;\"><\/i> <span>Square Font Awesome Stroke<\/span>",
|
||||||
|
"square-font-awesome": "<i class=\"fa-brands fa-square-font-awesome\" style=\"color: #2271b1;\"><\/i> <span>Square Font Awesome<\/span>",
|
||||||
|
"square-git": "<i class=\"fa-brands fa-square-git\" style=\"color: #2271b1;\"><\/i> <span>Square Git<\/span>",
|
||||||
|
"square-github": "<i class=\"fa-brands fa-square-github\" style=\"color: #2271b1;\"><\/i> <span>Square Github<\/span>",
|
||||||
|
"square-gitlab": "<i class=\"fa-brands fa-square-gitlab\" style=\"color: #2271b1;\"><\/i> <span>Square Gitlab<\/span>",
|
||||||
|
"square-google-plus": "<i class=\"fa-brands fa-square-google-plus\" style=\"color: #2271b1;\"><\/i> <span>Square Google Plus<\/span>",
|
||||||
|
"square-hacker-news": "<i class=\"fa-brands fa-square-hacker-news\" style=\"color: #2271b1;\"><\/i> <span>Square Hacker News<\/span>",
|
||||||
|
"square-instagram": "<i class=\"fa-brands fa-square-instagram\" style=\"color: #2271b1;\"><\/i> <span>Square Instagram<\/span>",
|
||||||
|
"square-js": "<i class=\"fa-brands fa-square-js\" style=\"color: #2271b1;\"><\/i> <span>Square Js<\/span>",
|
||||||
|
"square-kickstarter": "<i class=\"fa-brands fa-square-kickstarter\" style=\"color: #2271b1;\"><\/i> <span>Square Kickstarter<\/span>",
|
||||||
|
"square-lastfm": "<i class=\"fa-brands fa-square-lastfm\" style=\"color: #2271b1;\"><\/i> <span>Square Lastfm<\/span>",
|
||||||
|
"square-letterboxd": "<i class=\"fa-brands fa-square-letterboxd\" style=\"color: #2271b1;\"><\/i> <span>Square Letterboxd<\/span>",
|
||||||
|
"square-linkedin": "<i class=\"fa-brands fa-square-linkedin\" style=\"color: #2271b1;\"><\/i> <span>Square Linkedin<\/span>",
|
||||||
|
"square-odnoklassniki": "<i class=\"fa-brands fa-square-odnoklassniki\" style=\"color: #2271b1;\"><\/i> <span>Square Odnoklassniki<\/span>",
|
||||||
|
"square-pied-piper": "<i class=\"fa-brands fa-square-pied-piper\" style=\"color: #2271b1;\"><\/i> <span>Square Pied Piper<\/span>",
|
||||||
|
"square-pinterest": "<i class=\"fa-brands fa-square-pinterest\" style=\"color: #2271b1;\"><\/i> <span>Square Pinterest<\/span>",
|
||||||
|
"square-reddit": "<i class=\"fa-brands fa-square-reddit\" style=\"color: #2271b1;\"><\/i> <span>Square Reddit<\/span>",
|
||||||
|
"square-snapchat": "<i class=\"fa-brands fa-square-snapchat\" style=\"color: #2271b1;\"><\/i> <span>Square Snapchat<\/span>",
|
||||||
|
"square-steam": "<i class=\"fa-brands fa-square-steam\" style=\"color: #2271b1;\"><\/i> <span>Square Steam<\/span>",
|
||||||
|
"square-threads": "<i class=\"fa-brands fa-square-threads\" style=\"color: #2271b1;\"><\/i> <span>Square Threads<\/span>",
|
||||||
|
"square-tumblr": "<i class=\"fa-brands fa-square-tumblr\" style=\"color: #2271b1;\"><\/i> <span>Square Tumblr<\/span>",
|
||||||
|
"square-twitter": "<i class=\"fa-brands fa-square-twitter\" style=\"color: #2271b1;\"><\/i> <span>Square Twitter<\/span>",
|
||||||
|
"square-upwork": "<i class=\"fa-brands fa-square-upwork\" style=\"color: #2271b1;\"><\/i> <span>Square Upwork<\/span>",
|
||||||
|
"square-viadeo": "<i class=\"fa-brands fa-square-viadeo\" style=\"color: #2271b1;\"><\/i> <span>Square Viadeo<\/span>",
|
||||||
|
"square-vimeo": "<i class=\"fa-brands fa-square-vimeo\" style=\"color: #2271b1;\"><\/i> <span>Square Vimeo<\/span>",
|
||||||
|
"square-web-awesome-stroke": "<i class=\"fa-brands fa-square-web-awesome-stroke\" style=\"color: #2271b1;\"><\/i> <span>Square Web Awesome Stroke<\/span>",
|
||||||
|
"square-web-awesome": "<i class=\"fa-brands fa-square-web-awesome\" style=\"color: #2271b1;\"><\/i> <span>Square Web Awesome<\/span>",
|
||||||
|
"square-whatsapp": "<i class=\"fa-brands fa-square-whatsapp\" style=\"color: #2271b1;\"><\/i> <span>Square Whatsapp<\/span>",
|
||||||
|
"square-x-twitter": "<i class=\"fa-brands fa-square-x-twitter\" style=\"color: #2271b1;\"><\/i> <span>Square X Twitter<\/span>",
|
||||||
|
"square-xing": "<i class=\"fa-brands fa-square-xing\" style=\"color: #2271b1;\"><\/i> <span>Square Xing<\/span>",
|
||||||
|
"square-youtube": "<i class=\"fa-brands fa-square-youtube\" style=\"color: #2271b1;\"><\/i> <span>Square Youtube<\/span>",
|
||||||
|
"squarespace": "<i class=\"fa-brands fa-squarespace\" style=\"color: #2271b1;\"><\/i> <span>Squarespace<\/span>",
|
||||||
|
"stack-exchange": "<i class=\"fa-brands fa-stack-exchange\" style=\"color: #2271b1;\"><\/i> <span>Stack Exchange<\/span>",
|
||||||
|
"stack-overflow": "<i class=\"fa-brands fa-stack-overflow\" style=\"color: #2271b1;\"><\/i> <span>Stack Overflow<\/span>",
|
||||||
|
"stackpath": "<i class=\"fa-brands fa-stackpath\" style=\"color: #2271b1;\"><\/i> <span>Stackpath<\/span>",
|
||||||
|
"staylinked": "<i class=\"fa-brands fa-staylinked\" style=\"color: #2271b1;\"><\/i> <span>Staylinked<\/span>",
|
||||||
|
"steam-square": "<i class=\"fa-brands fa-steam-square\" style=\"color: #2271b1;\"><\/i> <span>Steam Square<\/span>",
|
||||||
|
"steam-symbol": "<i class=\"fa-brands fa-steam-symbol\" style=\"color: #2271b1;\"><\/i> <span>Steam Symbol<\/span>",
|
||||||
|
"steam": "<i class=\"fa-brands fa-steam\" style=\"color: #2271b1;\"><\/i> <span>Steam<\/span>",
|
||||||
|
"sticker-mule": "<i class=\"fa-brands fa-sticker-mule\" style=\"color: #2271b1;\"><\/i> <span>Sticker Mule<\/span>",
|
||||||
|
"strava": "<i class=\"fa-brands fa-strava\" style=\"color: #2271b1;\"><\/i> <span>Strava<\/span>",
|
||||||
|
"stripe-s": "<i class=\"fa-brands fa-stripe-s\" style=\"color: #2271b1;\"><\/i> <span>Stripe S<\/span>",
|
||||||
|
"stripe": "<i class=\"fa-brands fa-stripe\" style=\"color: #2271b1;\"><\/i> <span>Stripe<\/span>",
|
||||||
|
"stubber": "<i class=\"fa-brands fa-stubber\" style=\"color: #2271b1;\"><\/i> <span>Stubber<\/span>",
|
||||||
|
"studiovinari": "<i class=\"fa-brands fa-studiovinari\" style=\"color: #2271b1;\"><\/i> <span>Studiovinari<\/span>",
|
||||||
|
"stumbleupon-circle": "<i class=\"fa-brands fa-stumbleupon-circle\" style=\"color: #2271b1;\"><\/i> <span>Stumbleupon Circle<\/span>",
|
||||||
|
"stumbleupon": "<i class=\"fa-brands fa-stumbleupon\" style=\"color: #2271b1;\"><\/i> <span>Stumbleupon<\/span>",
|
||||||
|
"superpowers": "<i class=\"fa-brands fa-superpowers\" style=\"color: #2271b1;\"><\/i> <span>Superpowers<\/span>",
|
||||||
|
"supple": "<i class=\"fa-brands fa-supple\" style=\"color: #2271b1;\"><\/i> <span>Supple<\/span>",
|
||||||
|
"suse": "<i class=\"fa-brands fa-suse\" style=\"color: #2271b1;\"><\/i> <span>Suse<\/span>",
|
||||||
|
"swift": "<i class=\"fa-brands fa-swift\" style=\"color: #2271b1;\"><\/i> <span>Swift<\/span>",
|
||||||
|
"symfony": "<i class=\"fa-brands fa-symfony\" style=\"color: #2271b1;\"><\/i> <span>Symfony<\/span>",
|
||||||
|
"teamspeak": "<i class=\"fa-brands fa-teamspeak\" style=\"color: #2271b1;\"><\/i> <span>Teamspeak<\/span>",
|
||||||
|
"telegram-plane": "<i class=\"fa-brands fa-telegram-plane\" style=\"color: #2271b1;\"><\/i> <span>Telegram Plane<\/span>",
|
||||||
|
"telegram": "<i class=\"fa-brands fa-telegram\" style=\"color: #2271b1;\"><\/i> <span>Telegram<\/span>",
|
||||||
|
"tencent-weibo": "<i class=\"fa-brands fa-tencent-weibo\" style=\"color: #2271b1;\"><\/i> <span>Tencent Weibo<\/span>",
|
||||||
|
"tex": "<i class=\"fa-brands fa-tex\" style=\"color: #2271b1;\"><\/i> <span>Tex<\/span>",
|
||||||
|
"the-red-yeti": "<i class=\"fa-brands fa-the-red-yeti\" style=\"color: #2271b1;\"><\/i> <span>The Red Yeti<\/span>",
|
||||||
|
"themeco": "<i class=\"fa-brands fa-themeco\" style=\"color: #2271b1;\"><\/i> <span>Themeco<\/span>",
|
||||||
|
"themeisle": "<i class=\"fa-brands fa-themeisle\" style=\"color: #2271b1;\"><\/i> <span>Themeisle<\/span>",
|
||||||
|
"think-peaks": "<i class=\"fa-brands fa-think-peaks\" style=\"color: #2271b1;\"><\/i> <span>Think Peaks<\/span>",
|
||||||
|
"threads": "<i class=\"fa-brands fa-threads\" style=\"color: #2271b1;\"><\/i> <span>Threads<\/span>",
|
||||||
|
"tidal": "<i class=\"fa-brands fa-tidal\" style=\"color: #2271b1;\"><\/i> <span>Tidal<\/span>",
|
||||||
|
"tiktok": "<i class=\"fa-brands fa-tiktok\" style=\"color: #2271b1;\"><\/i> <span>Tiktok<\/span>",
|
||||||
|
"trade-federation": "<i class=\"fa-brands fa-trade-federation\" style=\"color: #2271b1;\"><\/i> <span>Trade Federation<\/span>",
|
||||||
|
"trello": "<i class=\"fa-brands fa-trello\" style=\"color: #2271b1;\"><\/i> <span>Trello<\/span>",
|
||||||
|
"tumblr-square": "<i class=\"fa-brands fa-tumblr-square\" style=\"color: #2271b1;\"><\/i> <span>Tumblr Square<\/span>",
|
||||||
|
"tumblr": "<i class=\"fa-brands fa-tumblr\" style=\"color: #2271b1;\"><\/i> <span>Tumblr<\/span>",
|
||||||
|
"twitch": "<i class=\"fa-brands fa-twitch\" style=\"color: #2271b1;\"><\/i> <span>Twitch<\/span>",
|
||||||
|
"twitter-square": "<i class=\"fa-brands fa-twitter-square\" style=\"color: #2271b1;\"><\/i> <span>Twitter Square<\/span>",
|
||||||
|
"twitter": "<i class=\"fa-brands fa-twitter\" style=\"color: #2271b1;\"><\/i> <span>Twitter<\/span>",
|
||||||
|
"typo3": "<i class=\"fa-brands fa-typo3\" style=\"color: #2271b1;\"><\/i> <span>Typo3<\/span>",
|
||||||
|
"uber": "<i class=\"fa-brands fa-uber\" style=\"color: #2271b1;\"><\/i> <span>Uber<\/span>",
|
||||||
|
"ubuntu": "<i class=\"fa-brands fa-ubuntu\" style=\"color: #2271b1;\"><\/i> <span>Ubuntu<\/span>",
|
||||||
|
"uikit": "<i class=\"fa-brands fa-uikit\" style=\"color: #2271b1;\"><\/i> <span>Uikit<\/span>",
|
||||||
|
"umbraco": "<i class=\"fa-brands fa-umbraco\" style=\"color: #2271b1;\"><\/i> <span>Umbraco<\/span>",
|
||||||
|
"uncharted": "<i class=\"fa-brands fa-uncharted\" style=\"color: #2271b1;\"><\/i> <span>Uncharted<\/span>",
|
||||||
|
"uniregistry": "<i class=\"fa-brands fa-uniregistry\" style=\"color: #2271b1;\"><\/i> <span>Uniregistry<\/span>",
|
||||||
|
"unity": "<i class=\"fa-brands fa-unity\" style=\"color: #2271b1;\"><\/i> <span>Unity<\/span>",
|
||||||
|
"unsplash": "<i class=\"fa-brands fa-unsplash\" style=\"color: #2271b1;\"><\/i> <span>Unsplash<\/span>",
|
||||||
|
"untappd": "<i class=\"fa-brands fa-untappd\" style=\"color: #2271b1;\"><\/i> <span>Untappd<\/span>",
|
||||||
|
"ups": "<i class=\"fa-brands fa-ups\" style=\"color: #2271b1;\"><\/i> <span>Ups<\/span>",
|
||||||
|
"upwork": "<i class=\"fa-brands fa-upwork\" style=\"color: #2271b1;\"><\/i> <span>Upwork<\/span>",
|
||||||
|
"usb": "<i class=\"fa-brands fa-usb\" style=\"color: #2271b1;\"><\/i> <span>Usb<\/span>",
|
||||||
|
"usps": "<i class=\"fa-brands fa-usps\" style=\"color: #2271b1;\"><\/i> <span>Usps<\/span>",
|
||||||
|
"ussunnah": "<i class=\"fa-brands fa-ussunnah\" style=\"color: #2271b1;\"><\/i> <span>Ussunnah<\/span>",
|
||||||
|
"vaadin": "<i class=\"fa-brands fa-vaadin\" style=\"color: #2271b1;\"><\/i> <span>Vaadin<\/span>",
|
||||||
|
"viacoin": "<i class=\"fa-brands fa-viacoin\" style=\"color: #2271b1;\"><\/i> <span>Viacoin<\/span>",
|
||||||
|
"viadeo-square": "<i class=\"fa-brands fa-viadeo-square\" style=\"color: #2271b1;\"><\/i> <span>Viadeo Square<\/span>",
|
||||||
|
"viadeo": "<i class=\"fa-brands fa-viadeo\" style=\"color: #2271b1;\"><\/i> <span>Viadeo<\/span>",
|
||||||
|
"viber": "<i class=\"fa-brands fa-viber\" style=\"color: #2271b1;\"><\/i> <span>Viber<\/span>",
|
||||||
|
"vimeo-square": "<i class=\"fa-brands fa-vimeo-square\" style=\"color: #2271b1;\"><\/i> <span>Vimeo Square<\/span>",
|
||||||
|
"vimeo-v": "<i class=\"fa-brands fa-vimeo-v\" style=\"color: #2271b1;\"><\/i> <span>Vimeo V<\/span>",
|
||||||
|
"vimeo": "<i class=\"fa-brands fa-vimeo\" style=\"color: #2271b1;\"><\/i> <span>Vimeo<\/span>",
|
||||||
|
"vine": "<i class=\"fa-brands fa-vine\" style=\"color: #2271b1;\"><\/i> <span>Vine<\/span>",
|
||||||
|
"vk": "<i class=\"fa-brands fa-vk\" style=\"color: #2271b1;\"><\/i> <span>Vk<\/span>",
|
||||||
|
"vnv": "<i class=\"fa-brands fa-vnv\" style=\"color: #2271b1;\"><\/i> <span>Vnv<\/span>",
|
||||||
|
"vsco": "<i class=\"fa-brands fa-vsco\" style=\"color: #2271b1;\"><\/i> <span>Vsco<\/span>",
|
||||||
|
"vuejs": "<i class=\"fa-brands fa-vuejs\" style=\"color: #2271b1;\"><\/i> <span>Vuejs<\/span>",
|
||||||
|
"w3c": "<i class=\"fa-brands fa-w3c\" style=\"color: #2271b1;\"><\/i> <span>W3c<\/span>",
|
||||||
|
"watchman-monitoring": "<i class=\"fa-brands fa-watchman-monitoring\" style=\"color: #2271b1;\"><\/i> <span>Watchman Monitoring<\/span>",
|
||||||
|
"waze": "<i class=\"fa-brands fa-waze\" style=\"color: #2271b1;\"><\/i> <span>Waze<\/span>",
|
||||||
|
"web-awesome": "<i class=\"fa-brands fa-web-awesome\" style=\"color: #2271b1;\"><\/i> <span>Web Awesome<\/span>",
|
||||||
|
"webflow": "<i class=\"fa-brands fa-webflow\" style=\"color: #2271b1;\"><\/i> <span>Webflow<\/span>",
|
||||||
|
"weebly": "<i class=\"fa-brands fa-weebly\" style=\"color: #2271b1;\"><\/i> <span>Weebly<\/span>",
|
||||||
|
"weibo": "<i class=\"fa-brands fa-weibo\" style=\"color: #2271b1;\"><\/i> <span>Weibo<\/span>",
|
||||||
|
"weixin": "<i class=\"fa-brands fa-weixin\" style=\"color: #2271b1;\"><\/i> <span>Weixin<\/span>",
|
||||||
|
"whatsapp-square": "<i class=\"fa-brands fa-whatsapp-square\" style=\"color: #2271b1;\"><\/i> <span>Whatsapp Square<\/span>",
|
||||||
|
"whatsapp": "<i class=\"fa-brands fa-whatsapp\" style=\"color: #2271b1;\"><\/i> <span>Whatsapp<\/span>",
|
||||||
|
"whmcs": "<i class=\"fa-brands fa-whmcs\" style=\"color: #2271b1;\"><\/i> <span>Whmcs<\/span>",
|
||||||
|
"wikipedia-w": "<i class=\"fa-brands fa-wikipedia-w\" style=\"color: #2271b1;\"><\/i> <span>Wikipedia W<\/span>",
|
||||||
|
"windows": "<i class=\"fa-brands fa-windows\" style=\"color: #2271b1;\"><\/i> <span>Windows<\/span>",
|
||||||
|
"wirsindhandwerk": "<i class=\"fa-brands fa-wirsindhandwerk\" style=\"color: #2271b1;\"><\/i> <span>Wirsindhandwerk<\/span>",
|
||||||
|
"wix": "<i class=\"fa-brands fa-wix\" style=\"color: #2271b1;\"><\/i> <span>Wix<\/span>",
|
||||||
|
"wizards-of-the-coast": "<i class=\"fa-brands fa-wizards-of-the-coast\" style=\"color: #2271b1;\"><\/i> <span>Wizards Of The Coast<\/span>",
|
||||||
|
"wodu": "<i class=\"fa-brands fa-wodu\" style=\"color: #2271b1;\"><\/i> <span>Wodu<\/span>",
|
||||||
|
"wolf-pack-battalion": "<i class=\"fa-brands fa-wolf-pack-battalion\" style=\"color: #2271b1;\"><\/i> <span>Wolf Pack Battalion<\/span>",
|
||||||
|
"wordpress-simple": "<i class=\"fa-brands fa-wordpress-simple\" style=\"color: #2271b1;\"><\/i> <span>Wordpress Simple<\/span>",
|
||||||
|
"wordpress": "<i class=\"fa-brands fa-wordpress\" style=\"color: #2271b1;\"><\/i> <span>Wordpress<\/span>",
|
||||||
|
"wpbeginner": "<i class=\"fa-brands fa-wpbeginner\" style=\"color: #2271b1;\"><\/i> <span>Wpbeginner<\/span>",
|
||||||
|
"wpexplorer": "<i class=\"fa-brands fa-wpexplorer\" style=\"color: #2271b1;\"><\/i> <span>Wpexplorer<\/span>",
|
||||||
|
"wpforms": "<i class=\"fa-brands fa-wpforms\" style=\"color: #2271b1;\"><\/i> <span>Wpforms<\/span>",
|
||||||
|
"wpressr": "<i class=\"fa-brands fa-wpressr\" style=\"color: #2271b1;\"><\/i> <span>Wpressr<\/span>",
|
||||||
|
"wsh": "<i class=\"fa-brands fa-wsh\" style=\"color: #2271b1;\"><\/i> <span>Wsh<\/span>",
|
||||||
|
"x-twitter": "<i class=\"fa-brands fa-x-twitter\" style=\"color: #2271b1;\"><\/i> <span>X Twitter<\/span>",
|
||||||
|
"xbox": "<i class=\"fa-brands fa-xbox\" style=\"color: #2271b1;\"><\/i> <span>Xbox<\/span>",
|
||||||
|
"xing-square": "<i class=\"fa-brands fa-xing-square\" style=\"color: #2271b1;\"><\/i> <span>Xing Square<\/span>",
|
||||||
|
"xing": "<i class=\"fa-brands fa-xing\" style=\"color: #2271b1;\"><\/i> <span>Xing<\/span>",
|
||||||
|
"y-combinator": "<i class=\"fa-brands fa-y-combinator\" style=\"color: #2271b1;\"><\/i> <span>Y Combinator<\/span>",
|
||||||
|
"yahoo": "<i class=\"fa-brands fa-yahoo\" style=\"color: #2271b1;\"><\/i> <span>Yahoo<\/span>",
|
||||||
|
"yammer": "<i class=\"fa-brands fa-yammer\" style=\"color: #2271b1;\"><\/i> <span>Yammer<\/span>",
|
||||||
|
"yandex-international": "<i class=\"fa-brands fa-yandex-international\" style=\"color: #2271b1;\"><\/i> <span>Yandex International<\/span>",
|
||||||
|
"yandex": "<i class=\"fa-brands fa-yandex\" style=\"color: #2271b1;\"><\/i> <span>Yandex<\/span>",
|
||||||
|
"yarn": "<i class=\"fa-brands fa-yarn\" style=\"color: #2271b1;\"><\/i> <span>Yarn<\/span>",
|
||||||
|
"yelp": "<i class=\"fa-brands fa-yelp\" style=\"color: #2271b1;\"><\/i> <span>Yelp<\/span>",
|
||||||
|
"yoast": "<i class=\"fa-brands fa-yoast\" style=\"color: #2271b1;\"><\/i> <span>Yoast<\/span>",
|
||||||
|
"youtube-square": "<i class=\"fa-brands fa-youtube-square\" style=\"color: #2271b1;\"><\/i> <span>Youtube Square<\/span>",
|
||||||
|
"youtube": "<i class=\"fa-brands fa-youtube\" style=\"color: #2271b1;\"><\/i> <span>Youtube<\/span>",
|
||||||
|
"zhihu": "<i class=\"fa-brands fa-zhihu\" style=\"color: #2271b1;\"><\/i> <span>Zhihu<\/span>"
|
||||||
|
},
|
||||||
|
"default_value": false,
|
||||||
|
"return_format": "value",
|
||||||
|
"multiple": 0,
|
||||||
|
"allow_null": 0,
|
||||||
|
"ui": 1,
|
||||||
|
"ajax": 0,
|
||||||
|
"placeholder": "",
|
||||||
|
"create_options": 0,
|
||||||
|
"save_options": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "field_664c65c653f1c",
|
||||||
|
"label": "URL",
|
||||||
|
"name": "url",
|
||||||
|
"aria-label": "",
|
||||||
|
"type": "url",
|
||||||
|
"instructions": "",
|
||||||
|
"required": 0,
|
||||||
|
"conditional_logic": 0,
|
||||||
|
"wrapper": {
|
||||||
|
"width": "80",
|
||||||
|
"class": "",
|
||||||
|
"id": ""
|
||||||
|
},
|
||||||
|
"default_value": "",
|
||||||
|
"placeholder": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"location": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"param": "post_type",
|
||||||
|
"operator": "==",
|
||||||
|
"value": "social"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"menu_order": 0,
|
||||||
|
"position": "normal",
|
||||||
|
"style": "default",
|
||||||
|
"label_placement": "top",
|
||||||
|
"instruction_placement": "label",
|
||||||
|
"hide_on_screen": "",
|
||||||
|
"active": true,
|
||||||
|
"description": "",
|
||||||
|
"show_in_rest": 0,
|
||||||
|
"display_title": "",
|
||||||
|
"modified": 1770733338
|
||||||
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"root": false,
|
|
||||||
"rules": {
|
|
||||||
"import/no-extraneous-dependencies": 0,
|
|
||||||
"prefer-rest-params": 0,
|
|
||||||
"comma-dangle": ["error", {
|
|
||||||
"arrays": "always-multiline",
|
|
||||||
"objects": "always-multiline",
|
|
||||||
"imports": "always-multiline",
|
|
||||||
"exports": "always-multiline",
|
|
||||||
"functions": "ignore"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
const path = require('path');
|
|
||||||
const { argv } = require('yargs');
|
|
||||||
const merge = require('webpack-merge');
|
|
||||||
|
|
||||||
const desire = require('./util/desire');
|
|
||||||
|
|
||||||
const userConfig = merge(desire(`${__dirname}/../config`), desire(`${__dirname}/../config-local`));
|
|
||||||
|
|
||||||
const isProduction = !!((argv.env && argv.env.production) || argv.p);
|
|
||||||
const rootPath = (userConfig.paths && userConfig.paths.root)
|
|
||||||
? userConfig.paths.root
|
|
||||||
: process.cwd();
|
|
||||||
|
|
||||||
const config = merge({
|
|
||||||
open: true,
|
|
||||||
copy: 'images/**/*',
|
|
||||||
proxyUrl: 'http://localhost:3000',
|
|
||||||
cacheBusting: '[name]_[hash]',
|
|
||||||
paths: {
|
|
||||||
root: rootPath,
|
|
||||||
assets: path.join(rootPath, 'resources/assets'),
|
|
||||||
dist: path.join(rootPath, 'dist'),
|
|
||||||
},
|
|
||||||
enabled: {
|
|
||||||
sourceMaps: !isProduction,
|
|
||||||
optimize: isProduction,
|
|
||||||
cacheBusting: isProduction,
|
|
||||||
watcher: !!argv.watch,
|
|
||||||
},
|
|
||||||
watch: [],
|
|
||||||
}, userConfig);
|
|
||||||
|
|
||||||
module.exports = merge(config, {
|
|
||||||
env: Object.assign({ production: isProduction, development: !isProduction }, argv.env),
|
|
||||||
publicPath: `${config.publicPath}/${path.basename(config.paths.dist)}/`,
|
|
||||||
manifest: {},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === undefined) {
|
|
||||||
process.env.NODE_ENV = isProduction ? 'production' : 'development';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If your publicPath differs between environments, but you know it at compile time,
|
|
||||||
* then set SAGE_DIST_PATH as an environment variable before compiling.
|
|
||||||
* Example:
|
|
||||||
* SAGE_DIST_PATH=/wp-content/themes/sage/dist yarn build:production
|
|
||||||
*/
|
|
||||||
if (process.env.SAGE_DIST_PATH) {
|
|
||||||
module.exports.publicPath = process.env.SAGE_DIST_PATH;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If you don't know your publicPath at compile time, then uncomment the lines
|
|
||||||
* below and use WordPress's wp_localize_script() to set SAGE_DIST_PATH global.
|
|
||||||
* Example:
|
|
||||||
* wp_localize_script('sage/main.js', 'SAGE_DIST_PATH', get_theme_file_uri('dist/'))
|
|
||||||
*/
|
|
||||||
// Object.keys(module.exports.entry).forEach(id =>
|
|
||||||
// module.exports.entry[id].unshift(path.join(__dirname, 'helpers/public-path.js')));
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
const hotMiddlewareScript = require('webpack-hot-middleware/client?noInfo=true&timeout=20000&reload=true');
|
|
||||||
|
|
||||||
hotMiddlewareScript.subscribe(event => {
|
|
||||||
if (event.action === 'reload') {
|
|
||||||
window.location.reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
/* eslint-env browser */
|
|
||||||
/* globals SAGE_DIST_PATH */
|
|
||||||
|
|
||||||
/** Dynamically set absolute public path from current protocol and host */
|
|
||||||
if (SAGE_DIST_PATH) {
|
|
||||||
__webpack_public_path__ = SAGE_DIST_PATH; // eslint-disable-line no-undef, camelcase
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
/* eslint-disable */
|
|
||||||
|
|
||||||
const cssnanoConfig = {
|
|
||||||
preset: ['default', { discardComments: { removeAll: true } }]
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = ({ file, options }) => {
|
|
||||||
return {
|
|
||||||
parser: options.enabled.optimize ? 'postcss-safe-parser' : undefined,
|
|
||||||
plugins: {
|
|
||||||
cssnano: options.enabled.optimize ? cssnanoConfig : false,
|
|
||||||
autoprefixer: true,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
/**
|
|
||||||
* Loop through webpack entry
|
|
||||||
* and add the hot middleware
|
|
||||||
* @param {Object} entry webpack entry
|
|
||||||
* @return {Object} entry with hot middleware
|
|
||||||
*/
|
|
||||||
module.exports = (entry) => {
|
|
||||||
const results = {};
|
|
||||||
|
|
||||||
Object.keys(entry).forEach((name) => {
|
|
||||||
results[name] = Array.isArray(entry[name]) ? entry[name].slice(0) : [entry[name]];
|
|
||||||
results[name].unshift(`${__dirname}/../helpers/hmr-client.js`);
|
|
||||||
});
|
|
||||||
return results;
|
|
||||||
};
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
const path = require('path');
|
|
||||||
|
|
||||||
module.exports = (key, value) => {
|
|
||||||
if (typeof value === 'string') {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
const manifest = value;
|
|
||||||
/**
|
|
||||||
* Hack to prepend scripts/ or styles/ to manifest keys
|
|
||||||
*
|
|
||||||
* This might need to be reworked at some point.
|
|
||||||
*
|
|
||||||
* Before:
|
|
||||||
* {
|
|
||||||
* "main.js": "scripts/main_abcdef.js"
|
|
||||||
* "main.css": "styles/main_abcdef.css"
|
|
||||||
* }
|
|
||||||
* After:
|
|
||||||
* {
|
|
||||||
* "scripts/main.js": "scripts/main_abcdef.js"
|
|
||||||
* "styles/main.css": "styles/main_abcdef.css"
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
Object.keys(manifest).forEach((src) => {
|
|
||||||
const sourcePath = path.basename(path.dirname(src));
|
|
||||||
const targetPath = path.basename(path.dirname(manifest[src]));
|
|
||||||
if (sourcePath === targetPath) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
manifest[`${targetPath}/${src}`] = manifest[src];
|
|
||||||
delete manifest[src];
|
|
||||||
});
|
|
||||||
return manifest;
|
|
||||||
};
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
/**
|
|
||||||
* @export
|
|
||||||
* @param {string} dependency
|
|
||||||
* @param {any} [fallback]
|
|
||||||
* @return {any}
|
|
||||||
*/
|
|
||||||
module.exports = (dependency, fallback) => {
|
|
||||||
try {
|
|
||||||
require.resolve(dependency);
|
|
||||||
} catch (err) {
|
|
||||||
return fallback;
|
|
||||||
}
|
|
||||||
return require(dependency); // eslint-disable-line import/no-dynamic-require
|
|
||||||
};
|
|
||||||
@@ -1,211 +0,0 @@
|
|||||||
'use strict'; // eslint-disable-line
|
|
||||||
|
|
||||||
const webpack = require('webpack');
|
|
||||||
const merge = require('webpack-merge');
|
|
||||||
const CleanPlugin = require('clean-webpack-plugin');
|
|
||||||
const ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
||||||
const StyleLintPlugin = require('stylelint-webpack-plugin');
|
|
||||||
const CopyGlobsPlugin = require('copy-globs-webpack-plugin');
|
|
||||||
|
|
||||||
const config = require('./config');
|
|
||||||
|
|
||||||
const assetsFilenames = (config.enabled.cacheBusting) ? config.cacheBusting : '[name]';
|
|
||||||
|
|
||||||
let webpackConfig = {
|
|
||||||
context: config.paths.assets,
|
|
||||||
entry: config.entry,
|
|
||||||
devtool: (config.enabled.sourceMaps ? '#source-map' : undefined),
|
|
||||||
output: {
|
|
||||||
path: config.paths.dist,
|
|
||||||
publicPath: config.publicPath,
|
|
||||||
filename: `scripts/${assetsFilenames}.js`,
|
|
||||||
},
|
|
||||||
stats: {
|
|
||||||
hash: false,
|
|
||||||
version: false,
|
|
||||||
timings: false,
|
|
||||||
children: false,
|
|
||||||
errors: false,
|
|
||||||
errorDetails: false,
|
|
||||||
warnings: false,
|
|
||||||
chunks: false,
|
|
||||||
modules: false,
|
|
||||||
reasons: false,
|
|
||||||
source: false,
|
|
||||||
publicPath: false,
|
|
||||||
},
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
enforce: 'pre',
|
|
||||||
test: /\.js$/,
|
|
||||||
include: config.paths.assets,
|
|
||||||
use: 'eslint',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
enforce: 'pre',
|
|
||||||
test: /\.(js|s?[ca]ss)$/,
|
|
||||||
include: config.paths.assets,
|
|
||||||
loader: 'import-glob',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.js$/,
|
|
||||||
exclude: [/(node_modules|bower_components)(?)/],
|
|
||||||
use: [
|
|
||||||
{ loader: 'cache' },
|
|
||||||
{ loader: 'buble', options: { objectAssign: 'Object.assign' } },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.css$/,
|
|
||||||
include: config.paths.assets,
|
|
||||||
use: ExtractTextPlugin.extract({
|
|
||||||
fallback: 'style',
|
|
||||||
use: [
|
|
||||||
{ loader: 'cache' },
|
|
||||||
{ loader: 'css', options: { sourceMap: config.enabled.sourceMaps } },
|
|
||||||
{
|
|
||||||
loader: 'postcss', options: {
|
|
||||||
config: { path: __dirname, ctx: config },
|
|
||||||
sourceMap: config.enabled.sourceMaps,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.scss$/,
|
|
||||||
include: config.paths.assets,
|
|
||||||
use: ExtractTextPlugin.extract({
|
|
||||||
fallback: 'style',
|
|
||||||
use: [
|
|
||||||
{ loader: 'cache' },
|
|
||||||
{ loader: 'css', options: { sourceMap: config.enabled.sourceMaps } },
|
|
||||||
{
|
|
||||||
loader: 'postcss', options: {
|
|
||||||
config: { path: __dirname, ctx: config },
|
|
||||||
sourceMap: config.enabled.sourceMaps,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ loader: 'resolve-url', options: { sourceMap: config.enabled.sourceMaps } },
|
|
||||||
{ loader: 'sass', options: { sourceMap: config.enabled.sourceMaps } },
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.(ttf|eot|woff2?|png|jpe?g|gif|svg|ico)$/,
|
|
||||||
include: config.paths.assets,
|
|
||||||
loader: 'url',
|
|
||||||
options: {
|
|
||||||
limit: 4096,
|
|
||||||
name: `[path]${assetsFilenames}.[ext]`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.(ttf|eot|woff2?|png|jpe?g|gif|svg|ico)$/,
|
|
||||||
include: /node_modules|bower_components/,
|
|
||||||
loader: 'url',
|
|
||||||
options: {
|
|
||||||
limit: 4096,
|
|
||||||
outputPath: 'vendor/',
|
|
||||||
name: `${config.cacheBusting}.[ext]`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
modules: [
|
|
||||||
config.paths.assets,
|
|
||||||
'node_modules',
|
|
||||||
'bower_components',
|
|
||||||
],
|
|
||||||
enforceExtension: false,
|
|
||||||
},
|
|
||||||
resolveLoader: {
|
|
||||||
moduleExtensions: ['-loader'],
|
|
||||||
},
|
|
||||||
externals: {
|
|
||||||
jquery: 'jQuery',
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new CleanPlugin([config.paths.dist], {
|
|
||||||
root: config.paths.root,
|
|
||||||
verbose: false,
|
|
||||||
}),
|
|
||||||
/**
|
|
||||||
* It would be nice to switch to copy-webpack-plugin, but
|
|
||||||
* unfortunately it doesn't provide a reliable way of
|
|
||||||
* tracking the before/after file names
|
|
||||||
*/
|
|
||||||
new CopyGlobsPlugin({
|
|
||||||
pattern: config.copy,
|
|
||||||
output: `[path]${assetsFilenames}.[ext]`,
|
|
||||||
manifest: config.manifest,
|
|
||||||
}),
|
|
||||||
new ExtractTextPlugin({
|
|
||||||
filename: `styles/${assetsFilenames}.css`,
|
|
||||||
allChunks: true,
|
|
||||||
disable: (config.enabled.watcher),
|
|
||||||
}),
|
|
||||||
new webpack.ProvidePlugin({
|
|
||||||
$: 'jquery',
|
|
||||||
jQuery: 'jquery',
|
|
||||||
'window.jQuery': 'jquery',
|
|
||||||
Tether: 'tether',
|
|
||||||
'window.Tether': 'tether',
|
|
||||||
}),
|
|
||||||
new webpack.LoaderOptionsPlugin({
|
|
||||||
minimize: config.enabled.optimize,
|
|
||||||
debug: config.enabled.watcher,
|
|
||||||
stats: { colors: true },
|
|
||||||
}),
|
|
||||||
new webpack.LoaderOptionsPlugin({
|
|
||||||
test: /\.s?css$/,
|
|
||||||
options: {
|
|
||||||
output: { path: config.paths.dist },
|
|
||||||
context: config.paths.assets,
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
new webpack.LoaderOptionsPlugin({
|
|
||||||
test: /\.js$/,
|
|
||||||
options: {
|
|
||||||
eslint: { failOnWarning: false, failOnError: true },
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
new StyleLintPlugin({
|
|
||||||
failOnError: !config.enabled.watcher,
|
|
||||||
syntax: 'scss',
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
/* eslint-disable global-require */ /** Let's only load dependencies as needed */
|
|
||||||
|
|
||||||
if (config.enabled.optimize) {
|
|
||||||
webpackConfig = merge(webpackConfig, require('./webpack.config.optimize'));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.env.production) {
|
|
||||||
webpackConfig.plugins.push(new webpack.NoEmitOnErrorsPlugin());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.enabled.cacheBusting) {
|
|
||||||
const WebpackAssetsManifest = require('webpack-assets-manifest');
|
|
||||||
|
|
||||||
webpackConfig.plugins.push(
|
|
||||||
new WebpackAssetsManifest({
|
|
||||||
output: 'assets.json',
|
|
||||||
space: 2,
|
|
||||||
writeToDisk: false,
|
|
||||||
assets: config.manifest,
|
|
||||||
replacer: require('./util/assetManifestsFormatter'),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.enabled.watcher) {
|
|
||||||
webpackConfig.entry = require('./util/addHotMiddleware')(webpackConfig.entry);
|
|
||||||
webpackConfig = merge(webpackConfig, require('./webpack.config.watch'));
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = webpackConfig;
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
'use strict'; // eslint-disable-line
|
|
||||||
|
|
||||||
const { default: ImageminPlugin } = require('imagemin-webpack-plugin');
|
|
||||||
const imageminMozjpeg = require('imagemin-mozjpeg');
|
|
||||||
|
|
||||||
const config = require('./config');
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
plugins: [
|
|
||||||
new ImageminPlugin({
|
|
||||||
optipng: { optimizationLevel: 7 },
|
|
||||||
gifsicle: { optimizationLevel: 3 },
|
|
||||||
pngquant: { quality: '65-90', speed: 4 },
|
|
||||||
svgo: { removeUnknownsAndDefaults: false, cleanupIDs: false },
|
|
||||||
plugins: [imageminMozjpeg({ quality: 75 })],
|
|
||||||
disable: (config.enabled.watcher),
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
};
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
const url = require('url');
|
|
||||||
const webpack = require('webpack');
|
|
||||||
const BrowserSyncPlugin = require('browsersync-webpack-plugin');
|
|
||||||
|
|
||||||
const config = require('./config');
|
|
||||||
|
|
||||||
const target = process.env.DEVURL || config.devUrl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* We do this to enable injection over SSL.
|
|
||||||
*/
|
|
||||||
if (url.parse(target).protocol === 'https:') {
|
|
||||||
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
output: {
|
|
||||||
pathinfo: true,
|
|
||||||
publicPath: config.proxyUrl + config.publicPath,
|
|
||||||
},
|
|
||||||
devtool: '#cheap-module-source-map',
|
|
||||||
stats: false,
|
|
||||||
plugins: [
|
|
||||||
new webpack.optimize.OccurrenceOrderPlugin(),
|
|
||||||
new webpack.HotModuleReplacementPlugin(),
|
|
||||||
new webpack.NoEmitOnErrorsPlugin(),
|
|
||||||
new BrowserSyncPlugin({
|
|
||||||
target,
|
|
||||||
open: config.open,
|
|
||||||
proxyUrl: config.proxyUrl,
|
|
||||||
watch: config.watch,
|
|
||||||
delay: 500,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
};
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"entry": {
|
|
||||||
"main": [
|
|
||||||
"./scripts/main.js",
|
|
||||||
"./styles/main.scss"
|
|
||||||
],
|
|
||||||
"customizer": [
|
|
||||||
"./scripts/customizer.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"publicPath": "/app/themes/sage",
|
|
||||||
"devUrl": "http://example.dev",
|
|
||||||
"proxyUrl": "http://localhost:3000",
|
|
||||||
"cacheBusting": "[name]_[hash:8]",
|
|
||||||
"watch": [
|
|
||||||
"app/**/*.php",
|
|
||||||
"config/**/*.php",
|
|
||||||
"resources/controllers/**/*.php",
|
|
||||||
"resources/views/**/*.php"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
import 'bootstrap';
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
import $ from 'jquery';
|
|
||||||
|
|
||||||
wp.customize('blogname', (value) => {
|
|
||||||
value.bind(to => $('.brand').text(to));
|
|
||||||
});
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
// import external dependencies
|
|
||||||
import 'jquery';
|
|
||||||
|
|
||||||
// Import everything from autoload
|
|
||||||
import "./autoload/**/*"
|
|
||||||
|
|
||||||
// import local dependencies
|
|
||||||
import Router from './util/Router';
|
|
||||||
import common from './routes/common';
|
|
||||||
import home from './routes/home';
|
|
||||||
import aboutUs from './routes/about';
|
|
||||||
|
|
||||||
/** Populate Router instance with DOM routes */
|
|
||||||
const routes = new Router({
|
|
||||||
// All pages
|
|
||||||
common,
|
|
||||||
// Home page
|
|
||||||
home,
|
|
||||||
// About Us page, note the change from about-us to aboutUs.
|
|
||||||
aboutUs,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Load Events
|
|
||||||
jQuery(document).ready(() => routes.loadEvents());
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
export default {
|
|
||||||
init() {
|
|
||||||
// JavaScript to be fired on the about us page
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
export default {
|
|
||||||
init() {
|
|
||||||
// JavaScript to be fired on all pages
|
|
||||||
},
|
|
||||||
finalize() {
|
|
||||||
// JavaScript to be fired on all pages, after page specific JS is fired
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
export default {
|
|
||||||
init() {
|
|
||||||
// JavaScript to be fired on the home page
|
|
||||||
},
|
|
||||||
finalize() {
|
|
||||||
// JavaScript to be fired on the home page, after the init JS
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
import camelCase from './camelCase';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DOM-based Routing
|
|
||||||
*
|
|
||||||
* Based on {@link http://goo.gl/EUTi53|Markup-based Unobtrusive Comprehensive DOM-ready Execution} by Paul Irish
|
|
||||||
*
|
|
||||||
* The routing fires all common scripts, followed by the page specific scripts.
|
|
||||||
* Add additional events for more control over timing e.g. a finalize event
|
|
||||||
*/
|
|
||||||
class Router {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new Router
|
|
||||||
* @param {Object} routes
|
|
||||||
*/
|
|
||||||
constructor(routes) {
|
|
||||||
this.routes = routes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fire Router events
|
|
||||||
* @param {string} route DOM-based route derived from body classes (`<body class="...">`)
|
|
||||||
* @param {string} [event] Events on the route. By default, `init` and `finalize` events are called.
|
|
||||||
* @param {string} [arg] Any custom argument to be passed to the event.
|
|
||||||
*/
|
|
||||||
fire(route, event = 'init', arg) {
|
|
||||||
const fire = route !== '' && this.routes[route] && typeof this.routes[route][event] === 'function';
|
|
||||||
if (fire) {
|
|
||||||
this.routes[route][event](arg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Automatically load and fire Router events
|
|
||||||
*
|
|
||||||
* Events are fired in the following order:
|
|
||||||
* * common init
|
|
||||||
* * page-specific init
|
|
||||||
* * page-specific finalize
|
|
||||||
* * common finalize
|
|
||||||
*/
|
|
||||||
loadEvents() {
|
|
||||||
// Fire common init JS
|
|
||||||
this.fire('common');
|
|
||||||
|
|
||||||
// Fire page-specific init JS, and then finalize JS
|
|
||||||
document.body.className
|
|
||||||
.toLowerCase()
|
|
||||||
.replace(/-/g, '_')
|
|
||||||
.split(/\s+/)
|
|
||||||
.map(camelCase)
|
|
||||||
.forEach((className) => {
|
|
||||||
this.fire(className);
|
|
||||||
this.fire(className, 'finalize');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Fire common finalize JS
|
|
||||||
this.fire('common', 'finalize');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Router
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
/**
|
|
||||||
* the most terrible camelizer on the internet, guaranteed!
|
|
||||||
* @param {string} str String that isn't camel-case, e.g., CAMeL_CaSEiS-harD
|
|
||||||
* @return {string} String converted to camel-case, e.g., camelCaseIsHard
|
|
||||||
*/
|
|
||||||
export default str => `${str.charAt(0).toLowerCase()}${str.replace(/[\W_]/g, '|').split('|')
|
|
||||||
.map(part => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)
|
|
||||||
.join('')
|
|
||||||
.slice(1)}`;
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
@import "~bootstrap/scss/bootstrap";
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/** Colors */
|
|
||||||
$brand-primary: #27ae60;
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
.comment-list {
|
|
||||||
@extend .list-unstyled;
|
|
||||||
}
|
|
||||||
|
|
||||||
.comment-list ol {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.comment-form p {
|
|
||||||
@extend .form-group;
|
|
||||||
}
|
|
||||||
|
|
||||||
.comment-form input[type="text"],
|
|
||||||
.comment-form input[type="email"],
|
|
||||||
.comment-form input[type="url"],
|
|
||||||
.comment-form textarea {
|
|
||||||
@extend .form-control;
|
|
||||||
}
|
|
||||||
|
|
||||||
.comment-form input[type="submit"] {
|
|
||||||
@extend .btn;
|
|
||||||
@extend .btn-secondary;
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
/** Search form */
|
|
||||||
.search-form {
|
|
||||||
@extend .form-inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-form label {
|
|
||||||
@extend .form-group;
|
|
||||||
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-form .search-field {
|
|
||||||
@extend .form-control;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-form .search-submit {
|
|
||||||
@extend .btn;
|
|
||||||
@extend .btn-secondary;
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
/**
|
|
||||||
* WordPress Generated Classes
|
|
||||||
* @see http://codex.wordpress.org/CSS#WordPress_Generated_Classes
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Media alignment */
|
|
||||||
.alignnone {
|
|
||||||
margin-left: 0;
|
|
||||||
margin-right: 0;
|
|
||||||
max-width: 100%;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.aligncenter {
|
|
||||||
display: block;
|
|
||||||
margin: ($spacer / 2) auto;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alignleft,
|
|
||||||
.alignright {
|
|
||||||
margin-bottom: ($spacer / 2);
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
.alignleft {
|
|
||||||
float: left;
|
|
||||||
margin-right: ($spacer / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.alignright {
|
|
||||||
float: right;
|
|
||||||
margin-left: ($spacer / 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Captions */
|
|
||||||
.wp-caption {
|
|
||||||
@extend .figure;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wp-caption img {
|
|
||||||
@extend .figure-img;
|
|
||||||
@extend .img-fluid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wp-caption-text {
|
|
||||||
@extend .figure-caption;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Text meant only for screen readers */
|
|
||||||
.screen-reader-text {
|
|
||||||
@extend .sr-only;
|
|
||||||
@extend .sr-only-focusable;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
.banner .nav li {
|
|
||||||
@extend .nav-item;
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner .nav a {
|
|
||||||
@extend .nav-link;
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
body#tinymce {
|
|
||||||
margin: 12px !important;
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
@import "common/variables";
|
|
||||||
|
|
||||||
/** Import everything from autoload */
|
|
||||||
@import "./autoload/**/*";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Import npm dependencies
|
|
||||||
*
|
|
||||||
* Prefix your imports with `~` to grab from node_modules/
|
|
||||||
* @see https://github.com/webpack-contrib/sass-loader#imports
|
|
||||||
*/
|
|
||||||
// @import "~some-node-module";
|
|
||||||
|
|
||||||
/** Import theme styles */
|
|
||||||
@import "common/global";
|
|
||||||
@import "components/buttons";
|
|
||||||
@import "components/comments";
|
|
||||||
@import "components/forms";
|
|
||||||
@import "components/wp-classes";
|
|
||||||
@import "layouts/header";
|
|
||||||
@import "layouts/sidebar";
|
|
||||||
@import "layouts/footer";
|
|
||||||
@import "layouts/pages";
|
|
||||||
@import "layouts/posts";
|
|
||||||
@import "layouts/tinymce";
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App;
|
|
||||||
|
|
||||||
use Sober\Controller\Controller;
|
|
||||||
|
|
||||||
class About extends Controller
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App;
|
|
||||||
|
|
||||||
use Sober\Controller\Controller;
|
|
||||||
|
|
||||||
class App extends Controller
|
|
||||||
{
|
|
||||||
public function siteName()
|
|
||||||
{
|
|
||||||
return get_bloginfo('name');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App;
|
|
||||||
|
|
||||||
use Sober\Controller\Controller;
|
|
||||||
|
|
||||||
class Home extends Controller
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
25
resources/css/app.scss
Normal file
25
resources/css/app.scss
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
// Global Variables, Mixins, and Framework
|
||||||
|
@forward "global/variables";
|
||||||
|
@forward "global/mixins";
|
||||||
|
@forward "global/fonts";
|
||||||
|
@forward "global/typography";
|
||||||
|
@forward "global/framework";
|
||||||
|
|
||||||
|
// Third Party Plugins
|
||||||
|
@forward "plugins/contact-form-7";
|
||||||
|
@forward "plugins/mce";
|
||||||
|
|
||||||
|
// Components
|
||||||
|
@forward "components/block";
|
||||||
|
@forward "components/forms";
|
||||||
|
@forward "components/button";
|
||||||
|
@forward "components/card";
|
||||||
|
@forward "components/BadEggLightbox";
|
||||||
|
|
||||||
|
// Sections
|
||||||
|
@forward "../views/sections/header/header";
|
||||||
|
@forward "../views/sections/footer/footer";
|
||||||
|
|
||||||
|
// Page Styles
|
||||||
|
@forward "views/page";
|
||||||
|
|
||||||
92
resources/css/components/_BadEggLightbox.scss
Normal file
92
resources/css/components/_BadEggLightbox.scss
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
#badegg-lightbox {
|
||||||
|
&-overlay,
|
||||||
|
&-image,
|
||||||
|
&-close {
|
||||||
|
transition: all 300ms ease;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-modal {
|
||||||
|
position: fixed;
|
||||||
|
inset: 0;
|
||||||
|
z-index: 9999;
|
||||||
|
padding: 3em;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-overlay {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
background: rgba(white, 0.5);
|
||||||
|
|
||||||
|
.open & {
|
||||||
|
opacity: 1;
|
||||||
|
backdrop-filter: blur(1em);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-image {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
object-fit: contain;
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
transform: scale(0.8);
|
||||||
|
|
||||||
|
.open & {
|
||||||
|
transform: none;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-close {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 3;
|
||||||
|
top: 1em;
|
||||||
|
right: 1em;
|
||||||
|
display: block;
|
||||||
|
appearance: none;
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
border: 2px solid black;
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 2em;
|
||||||
|
height: 2em;
|
||||||
|
cursor: pointer;
|
||||||
|
transform: scale(0.01) rotate(-360deg);
|
||||||
|
|
||||||
|
.open & {
|
||||||
|
opacity: 1;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
transform: scale(1.2) rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.admin-bar & {
|
||||||
|
top: calc(1em + 32px);
|
||||||
|
|
||||||
|
@media (max-width: 782px) {
|
||||||
|
top: calc(1em + 46px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 2px dashed red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
resources/css/components/_block.scss
Normal file
15
resources/css/components/_block.scss
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
|
||||||
|
.has-bg-image {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
>.container {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.badegg-block-background {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
111
resources/css/components/_button.scss
Normal file
111
resources/css/components/_button.scss
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
@use "../global/variables/fonts";
|
||||||
|
@use "../global/variables/colours";
|
||||||
|
|
||||||
|
button {
|
||||||
|
&%block,
|
||||||
|
&.block {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
font-size: 1em;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
input[type="submit"] {
|
||||||
|
&.btn {
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%button,
|
||||||
|
.btn {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.5em 1.25em;
|
||||||
|
border: 0.125em solid colours.$black;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
background-color: colours.$black;
|
||||||
|
color: colours.$white;
|
||||||
|
font-family: fonts.$font;
|
||||||
|
font-weight: 700;
|
||||||
|
text-decoration: none;
|
||||||
|
white-space: normal;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: 300ms ease all;
|
||||||
|
|
||||||
|
.knockout & {
|
||||||
|
background-color: colours.$white;
|
||||||
|
border-color: colours.$white;
|
||||||
|
color: currentcolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
color: colours.$white;
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: rgba(colours.$black, 0.5);
|
||||||
|
border-color: rgba(colours.$black, 0.5);
|
||||||
|
|
||||||
|
.knockout & {
|
||||||
|
background-color: rgba(colours.$white, 0.5);
|
||||||
|
border-color: rgba(colours.$white, 0.5);
|
||||||
|
color: currentcolor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.outline {
|
||||||
|
border-color: colours.$black;
|
||||||
|
background-color: transparent;
|
||||||
|
color: colours.$black;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background-color: colours.$black;
|
||||||
|
color: colours.$white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.knockout & {
|
||||||
|
@media screen {
|
||||||
|
border-color: colours.$white;
|
||||||
|
color: colours.$white;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background-color: colours.$white;
|
||||||
|
color: colours.$black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.wide {
|
||||||
|
padding-right: 3em;
|
||||||
|
padding-left: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.thin {
|
||||||
|
padding-top: 0.5em;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.full {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding-right: 0.625em;
|
||||||
|
padding-left: 0.625em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.small { font-size: 1em; }
|
||||||
|
&.smaller { font-size: 0.875em; }
|
||||||
|
&.big { font-size: 1.25em; }
|
||||||
|
&.bigger { font-size: 1.5em; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-wrap {
|
||||||
|
margin: 1.5em -0.25em -0.25em;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin: 0.25em;
|
||||||
|
}
|
||||||
|
}
|
||||||
13
resources/css/components/_card.scss
Normal file
13
resources/css/components/_card.scss
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
.card {
|
||||||
|
position: relative;
|
||||||
|
margin: 0.5em;
|
||||||
|
flex: 0 0 calc(100% - 1em);
|
||||||
|
|
||||||
|
&-wrap {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: -0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
286
resources/css/components/_forms.scss
Normal file
286
resources/css/components/_forms.scss
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
@use "../global/variables/fonts";
|
||||||
|
@use "../global/variables/breakpoints";
|
||||||
|
@use "../global/variables/colours";
|
||||||
|
|
||||||
|
input,
|
||||||
|
textarea {
|
||||||
|
color: colours.$grey;
|
||||||
|
background: white;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 1em;
|
||||||
|
font-family: fonts.$font;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.875em 1em;
|
||||||
|
margin: 0 0 1em;
|
||||||
|
// border-radius: 0.125em;
|
||||||
|
border: 0.0625em solid rgba(colours.$black, 0.1);
|
||||||
|
outline: none;
|
||||||
|
transition: all 300ms ease;
|
||||||
|
|
||||||
|
&::placeholder {
|
||||||
|
color: colours.$grey-light;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
box-shadow: 0 0.25em 0.5em rgba(colours.$black, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="radio"],
|
||||||
|
input[type="checkbox"] {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
width: auto;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-wrap {
|
||||||
|
flex: 1 1 calc(100% - 1em);
|
||||||
|
margin: 0 0.5em;
|
||||||
|
transition: all 300ms ease;
|
||||||
|
|
||||||
|
p {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
flex: 0 0 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
order: -1;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea,
|
||||||
|
input {
|
||||||
|
flex: 1 1 100%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable selector-class-pattern */
|
||||||
|
.mce_inline_error {
|
||||||
|
flex: 0 0 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
font-family: fonts.$font;
|
||||||
|
}
|
||||||
|
/* stylelint-enable selector-class-pattern */
|
||||||
|
|
||||||
|
@media (min-width: breakpoints.$screen-sm) {
|
||||||
|
&.half {
|
||||||
|
flex: 0 0 calc(50% - 1em);
|
||||||
|
max-width: calc(50% - 1em);
|
||||||
|
width: calc(50% - 1em);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-footer {
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
.button,
|
||||||
|
input[type="submit"] {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wpcf7-list-item {
|
||||||
|
margin: 0;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-footer-button {
|
||||||
|
flex: 1 1 100%;
|
||||||
|
display: block;
|
||||||
|
margin: 2em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: breakpoints.$screen-sm) {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.form-footer-button {
|
||||||
|
flex: 0 0 8.5em;
|
||||||
|
max-width: 8.5em;
|
||||||
|
width: 8.5em;
|
||||||
|
margin: 0 0 0 2em;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-footer-text {
|
||||||
|
flex: 1 1 5em;
|
||||||
|
margin: auto;
|
||||||
|
|
||||||
|
p {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-form {
|
||||||
|
button {
|
||||||
|
margin: 1em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.label {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.textarea-wrap {
|
||||||
|
span.label {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 1em -0.5em 0;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.wpcf7 {
|
||||||
|
.screen-reader-response {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-spinner {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: calc(50% - 12px);
|
||||||
|
left: calc(50% - 12px);
|
||||||
|
}
|
||||||
|
|
||||||
|
&-not-valid-tip {
|
||||||
|
background: colours.$error;
|
||||||
|
color: colours.$white;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
border-radius: 0 0 0.5em 0.5em;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-response-output {
|
||||||
|
margin: 1em 0.5em 0;
|
||||||
|
max-width: calc(100% - 1em);
|
||||||
|
width: calc(100% - 1em);
|
||||||
|
flex: 0 0 calc(100% - 1em);
|
||||||
|
text-align: center;
|
||||||
|
color: colours.$white;
|
||||||
|
font-family: fonts.$font;
|
||||||
|
font-weight: 700;
|
||||||
|
background: colours.$black;
|
||||||
|
border: 0.125em solid colours.$white;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-display-none {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-checkbox {
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
padding: 0 0 0 1.75em;
|
||||||
|
margin: 0;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"] {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
appearance: none;
|
||||||
|
display: block;
|
||||||
|
width: 1.25em;
|
||||||
|
height: 1.25em;
|
||||||
|
border: 0.125em solid colours.$black;
|
||||||
|
background: transparent;
|
||||||
|
color: currentcolor;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "\f00c";
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: 0;
|
||||||
|
left: 0.125em;
|
||||||
|
font-family: "Font Awesome 6 Free", serif;
|
||||||
|
font-weight: 900;
|
||||||
|
opacity: 0;
|
||||||
|
transition: all 300ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked {
|
||||||
|
&::before {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.submitting {
|
||||||
|
.field-wrap:not(.form-footer) {
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-footer {
|
||||||
|
.form-footer-text {
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-footer-button input {
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.sent {
|
||||||
|
.wpcf7-response-output {
|
||||||
|
background: colours.$success;
|
||||||
|
border-color: colours.$white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.invalid {
|
||||||
|
.wpcf7-response-output {
|
||||||
|
background: colours.$error;
|
||||||
|
border-color: colours.$white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ajax-loader {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: calc(50% - 12px);
|
||||||
|
right: calc(50% - 12px);
|
||||||
|
display: block;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.knockout {
|
||||||
|
form {
|
||||||
|
.wpcf7 {
|
||||||
|
&-checkbox {
|
||||||
|
input[type="checkbox"] {
|
||||||
|
border-color: colours.$white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
73
resources/css/editor.scss
Normal file
73
resources/css/editor.scss
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
@use "app";
|
||||||
|
@use "global/variables";
|
||||||
|
|
||||||
|
html :where(.wp-block) {
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-editor-block-list__layout .block-editor-block-list__block:not([contenteditable=true]) {
|
||||||
|
&:hover:after {
|
||||||
|
content: '';
|
||||||
|
outline: 2px solid variables.$wpblue;
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus:after {
|
||||||
|
outline-style: dashed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.editor-styles-wrapper {
|
||||||
|
padding: 0;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.editor-visual-editor {
|
||||||
|
&__post-title-wrapper {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 100;
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 0 !important;
|
||||||
|
background: white;
|
||||||
|
box-shadow: 0 0.5rem 1rem rgba(black, 0.15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.editor-styles-wrapper {
|
||||||
|
background: variables.$grey-lightest;
|
||||||
|
|
||||||
|
.block-list-appender {
|
||||||
|
width: 350px;
|
||||||
|
max-width: 90%;
|
||||||
|
margin: 1em auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.wp-block-post-title {
|
||||||
|
position: relative;
|
||||||
|
padding: 0.5rem;
|
||||||
|
border: 1px solid rgba(black, 0.3);
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: 'Page Title';
|
||||||
|
position: absolute;
|
||||||
|
top: -0.5rem;
|
||||||
|
left: 0.5rem;
|
||||||
|
color: rgba(black, 0.3);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
display: block;
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
margin: 0;
|
||||||
|
background: white;
|
||||||
|
line-height: 1;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-root-container > .wp-block:not(.block-list-appender) {
|
||||||
|
max-width: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
54
resources/css/global/_fonts.scss
Normal file
54
resources/css/global/_fonts.scss
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Roots Fonts Setup
|
||||||
|
* https://roots.io/sage/docs/fonts-setup/
|
||||||
|
*
|
||||||
|
* Self-Hosted Google Fonts (Ubuntu Demo)
|
||||||
|
* https://gwfh.mranftl.com/fonts/ubuntu?subsets=latin
|
||||||
|
*
|
||||||
|
* Add the font to your Tailwind config
|
||||||
|
* tailwind.config.cjs
|
||||||
|
*
|
||||||
|
* Configure theme.json to use the font with Bud
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* stylelint-disable */
|
||||||
|
|
||||||
|
/* ubuntu-regular - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Ubuntu';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url('../fonts/ubuntu-v20-latin-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */
|
||||||
|
url('../fonts/ubuntu-v20-latin-regular.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ubuntu-italic - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Ubuntu';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url('../fonts/ubuntu-v20-latin-italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */
|
||||||
|
url('../fonts/ubuntu-v20-latin-italic.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ubuntu-700 - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Ubuntu';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
src: url('../fonts/ubuntu-v20-latin-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */
|
||||||
|
url('../fonts/ubuntu-v20-latin-700.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ubuntu-700italic - latin */
|
||||||
|
@font-face {
|
||||||
|
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Ubuntu';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 700;
|
||||||
|
src: url('../fonts/ubuntu-v20-latin-700italic.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */
|
||||||
|
url('../fonts/ubuntu-v20-latin-700italic.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||||
|
}
|
||||||
4
resources/css/global/_framework.scss
Normal file
4
resources/css/global/_framework.scss
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
@forward "framework/breakpoints";
|
||||||
|
@forward "framework/normalise";
|
||||||
|
@forward "framework/colours";
|
||||||
|
@forward "framework/spacing";
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user