From d6c4293912f12341ff192079446a3309d6ff3f56 Mon Sep 17 00:00:00 2001 From: Drylian <109999325+drylian@users.noreply.github.com> Date: Mon, 25 Dec 2023 15:06:30 -0300 Subject: [PATCH] test --- .../Admin/Jexactyl/StoreController.php | 3 + .../Admin/Jexactyl/StoreFormRequest.php | 4 + app/Http/ViewComposers/StoreComposer.php | 5 + package.json | 2 +- .../scripts/assets/css/GlobalStylesheet.ts | 8 +- resources/scripts/components/App.tsx | 24 +- resources/scripts/state/storefront.ts | 5 + resources/scripts/theme.ts | 9 + tailwind.config.js | 6 +- yarn.lock | 346 +++++++++++++----- 10 files changed, 310 insertions(+), 102 deletions(-) diff --git a/app/Http/Controllers/Admin/Jexactyl/StoreController.php b/app/Http/Controllers/Admin/Jexactyl/StoreController.php index 77731d06c..9a3a3477c 100644 --- a/app/Http/Controllers/Admin/Jexactyl/StoreController.php +++ b/app/Http/Controllers/Admin/Jexactyl/StoreController.php @@ -41,6 +41,9 @@ public function index(): View 'mpago_enabled' => $this->settings->get($prefix . 'mpago:enabled', false), 'mpago_discord_webhook' => $this->settings->get($prefix . 'mpago:discord:webhook', 0), 'mpago_discord_enabled' => $this->settings->get($prefix . 'mpago:discord:enabled', false), + 'store_images_one' => $this->settings->get($prefix . 'images:one', 0), + 'store_images_two' => $this->settings->get($prefix . 'images:two', 0), + 'store_images_three' => $this->settings->get($prefix . 'images:three', 0), 'selected_currency' => $this->settings->get($prefix . 'currency', 'BRL'), 'currencies' => $currencies, diff --git a/app/Http/Requests/Admin/Jexactyl/StoreFormRequest.php b/app/Http/Requests/Admin/Jexactyl/StoreFormRequest.php index 5b078ab69..1aca34ae6 100644 --- a/app/Http/Requests/Admin/Jexactyl/StoreFormRequest.php +++ b/app/Http/Requests/Admin/Jexactyl/StoreFormRequest.php @@ -35,6 +35,10 @@ public function rules(): array 'store:limit:port' => 'required|int|min:1', 'store:limit:backup' => 'required|int|min:1', 'store:limit:database' => 'required|int|min:1', + + 'store:images:one' => 'string|nullable', + 'store:images:two' => 'string|nullable', + 'store:images:three' => 'string|nullable', ]; } } diff --git a/app/Http/ViewComposers/StoreComposer.php b/app/Http/ViewComposers/StoreComposer.php index 00b9cfc46..e854f726e 100644 --- a/app/Http/ViewComposers/StoreComposer.php +++ b/app/Http/ViewComposers/StoreComposer.php @@ -48,6 +48,11 @@ public function compose(View $view) 'enabled' => $this->setting('earn:enabled', Composer::TYPE_BOOL), 'amount' => $this->setting('earn:amount', Composer::TYPE_INT), ], + 'images' => [ + 'one' => $this->setting('store:images:one', Composer::TYPE_STR), + 'two' => $this->setting('store:images:two', Composer::TYPE_STR), + 'three' => $this->setting('store:images:three', Composer::TYPE_STR), + ] ]); } } diff --git a/package.json b/package.json index 9f11efc37..287ce5fee 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "reaptcha": "^1.7.2", "sockette": "^2.0.6", "strip-ansi": "^7.0.1", - "styled-components": "^5.2.1", + "styled-components": "^6.1.0", "styled-components-breakpoint": "^3.0.0-preview.20", "swr": "^0.2.3", "tailwindcss": "^3.0.24", diff --git a/resources/scripts/assets/css/GlobalStylesheet.ts b/resources/scripts/assets/css/GlobalStylesheet.ts index 890d3583c..415769d09 100644 --- a/resources/scripts/assets/css/GlobalStylesheet.ts +++ b/resources/scripts/assets/css/GlobalStylesheet.ts @@ -1,11 +1,17 @@ import tw from 'twin.macro'; -import { createGlobalStyle } from 'styled-components/macro'; +import { createGlobalStyle } from 'styled-components'; export default createGlobalStyle` body { ${tw`bg-neutral-900 font-sans font-medium text-gray-200`}; } + *{ + --jexactyl_image_store_one: ${(props) => `url(${props.theme.one})`} + --jexactyl_image_store_two: ${(props) => `url(${props.theme.two})`} + --jexactyl_image_store_three: ${(props) => `url(${props.theme.three})`} + } + h1, h2, h3, h4, h5, h6 { ${tw`tracking-normal`}; } diff --git a/resources/scripts/components/App.tsx b/resources/scripts/components/App.tsx index f4efc4a50..554bcc0a1 100644 --- a/resources/scripts/components/App.tsx +++ b/resources/scripts/components/App.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import tw from 'twin.macro'; import '@/assets/tailwind.css'; import { store } from '@/state'; @@ -7,10 +7,12 @@ import { hot } from 'react-hot-loader/root'; import { history } from '@/components/history'; import { SiteSettings } from '@/state/settings'; import IndexRouter from '@/routers/IndexRouter'; +import { ThemeProvider } from "styled-components"; import earnCredits from '@/api/account/earnCredits'; import { setupInterceptors } from '@/api/interceptors'; import { StorefrontSettings } from '@/state/storefront'; import GlobalStylesheet from '@/assets/css/GlobalStylesheet'; +import { Theme } from '@/theme'; interface ExtendedWindow extends Window { SiteConfiguration?: SiteSettings; @@ -37,7 +39,7 @@ setupInterceptors(history); const App = () => { const { JexactylUser, SiteConfiguration, StoreConfiguration } = window as ExtendedWindow; - + const [theme, setTheme] = useState() if (JexactylUser && !store.getState().user.data) { store.getActions().user.setUserData({ uuid: JexactylUser.uuid, @@ -70,15 +72,19 @@ const App = () => { } } earn(); - + if (!theme) { + setTheme(Theme(store.getState().storefront.data!)) + } return ( <> - - -
- -
-
+ + + +
+ +
+
+
); }; diff --git a/resources/scripts/state/storefront.ts b/resources/scripts/state/storefront.ts index 76b20b1ce..466de2ada 100644 --- a/resources/scripts/state/storefront.ts +++ b/resources/scripts/state/storefront.ts @@ -33,6 +33,11 @@ export interface StorefrontSettings { enabled: boolean; amount: number; }; + images: { + one: string; + two: string; + three: string; + } } export interface StorefrontStore { diff --git a/resources/scripts/theme.ts b/resources/scripts/theme.ts index 43fb79d87..0e18b8a93 100644 --- a/resources/scripts/theme.ts +++ b/resources/scripts/theme.ts @@ -1,4 +1,5 @@ import { BreakpointFunction, createBreakpoint } from 'styled-components-breakpoint'; +import { StorefrontSettings } from './state/storefront'; type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; @@ -9,3 +10,11 @@ export const breakpoint: BreakpointFunction = createBreakpoint= 1", babel-plugin-styled-components@^2.0.7: +babel-plugin-styled-components@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== @@ -2487,6 +2621,7 @@ babel-plugin-macros@^2.8.0: babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -2848,8 +2983,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== camelize@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001358: version "1.0.30001359" @@ -3340,6 +3476,7 @@ css-blank-pseudo@^3.0.3: css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== css-color-names@^0.0.4: version "0.0.4" @@ -3374,10 +3511,10 @@ css-prefers-color-scheme@^6.0.3: resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== -css-to-react-native@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" - integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== +css-to-react-native@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== dependencies: camelize "^1.0.0" css-color-keywords "^1.0.0" @@ -3410,14 +3547,19 @@ cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" +csstype@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + csstype@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" csstype@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.5.tgz#7fdec6a28a67ae18647c51668a9ff95bb2fa7bb8" - integrity sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== cyclist@~0.2.2: version "0.2.2" @@ -4731,6 +4873,7 @@ global@^4.3.0: globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.15.0: version "13.15.0" @@ -4904,7 +5047,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -5905,8 +6048,9 @@ js-yaml@^4.1.0: argparse "^2.0.1" jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" @@ -6464,6 +6608,11 @@ nanoid@^3.3.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + nanomatch@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" @@ -7364,6 +7513,15 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@^8.1.6, postcss@^8.1.8, postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.12, postcss@^8.4.14: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" @@ -8244,9 +8402,10 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallowequal@^1.1.0: +shallowequal@1.1.0, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== shebang-command@^1.2.0: version "1.2.0" @@ -8699,25 +8858,30 @@ styled-components-breakpoint@^3.0.0-preview.20: version "3.0.0-preview.20" resolved "https://registry.yarnpkg.com/styled-components-breakpoint/-/styled-components-breakpoint-3.0.0-preview.20.tgz#877e88a00c0cf66976f610a1d347839a1a0b6d70" -styled-components@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.1.tgz#6ed7fad2dc233825f64c719ffbdedd84ad79101a" - integrity sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^0.8.8" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1" - css-to-react-native "^3.0.0" - hoist-non-react-statics "^3.0.0" - shallowequal "^1.1.0" - supports-color "^5.5.0" +styled-components@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.3.tgz#d3ffea630800f4486e79f6264826dad9426474e3" + integrity sha512-kLerFjTAABuEZ870O4q4dyT/VCOJC/HA08+VeIGhkiOKkwJLP17HAWHCiqZWnUMV19m3axlOKR/+/EbCbuJAZg== + dependencies: + "@emotion/is-prop-valid" "1.2.1" + "@emotion/unitless" "0.8.0" + "@types/stylis" "4.2.0" + css-to-react-native "3.2.0" + csstype "3.1.2" + postcss "8.4.31" + shallowequal "1.1.0" + stylis "4.3.0" + tslib "2.5.0" + +stylis@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" + integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" @@ -9000,6 +9164,7 @@ to-arraybuffer@^1.0.0: to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-object-path@^0.3.0: version "0.3.0" @@ -9078,6 +9243,11 @@ ts-toolbelt@^8.0.7: resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-8.0.7.tgz#4dad2928831a811ee17dbdab6eb1919fc0a295bf" integrity sha512-KICHyKxc5Nu34kyoODrEe2+zvuQQaubTJz7pnC5RQ19TH/Jged1xv+h8LBrouaSD310m75oAljYs59LNHkLDkQ== +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tslib@^1.0.0, tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -9770,4 +9940,4 @@ yup@^0.29.1: lodash-es "^4.17.11" property-expr "^2.0.2" synchronous-promise "^2.0.10" - toposort "^2.0.2" \ No newline at end of file + toposort "^2.0.2"