diff --git a/.github/workflows/generate-preview-link.yml b/.github/workflows/generate-preview-link.yml index 76401c28e24..e578beb9900 100644 --- a/.github/workflows/generate-preview-link.yml +++ b/.github/workflows/generate-preview-link.yml @@ -130,7 +130,7 @@ jobs: GATSBY_RUDDERSTACK_PRODUCTION_KEY: ${{ secrets.GATSBY_RUDDERSTACK_PRODUCTION_KEY }} GATSBY_STRAPI_TOKEN: ${{ secrets.GATSBY_STRAPI_TOKEN }} GATSBY_GOOGLE_TAG_MANAGER_TRACKING_ID: ${{ secrets.GATSBY_GOOGLE_TAG_MANAGER_TRACKING_ID }} - + GATSBY_TRUSTPILOT_API_KEY: ${{ secrets.GATSBY_TRUSTPILOT_API_KEY }} run: npm run build - name: Publish to Cloudflare Pages diff --git a/.github/workflows/pre-generate-preview-link.yml b/.github/workflows/pre-generate-preview-link.yml index b19afa74a46..7e0c400e6d6 100644 --- a/.github/workflows/pre-generate-preview-link.yml +++ b/.github/workflows/pre-generate-preview-link.yml @@ -6,9 +6,8 @@ permissions: on: pull_request: types: [opened, synchronize] - concurrency: - group: cloudflare-pages-verify-${{ github.head_ref }} + group: 'cloudflare-pages-verify-${{ github.head_ref }}' cancel-in-progress: true jobs: @@ -16,14 +15,20 @@ jobs: runs-on: Ubuntu-latest steps: - name: Retrieve PR information + env: + EVENT_NUMBER: ${{ github.event.number }} + EVENT_USERNAME: ${{ github.event.pull_request.user.login }} + HEAD_REF: ${{ github.head_ref }} run: | mkdir -p ./pr - echo ${{ github.event.number }} > ./pr/NR - echo ${{ github.event.pull_request.user.login }} > ./pr/USERNAME - echo ${{ github.head_ref }} > ./pr/BRANCHNAME + echo "$EVENT_NUMBER" > ./pr/NR + echo "$EVENT_USERNAME" > ./pr/USERNAME + echo "$HEAD_REF" > ./pr/BRANCHNAME - name: Upload PR information to artifact + env: + RUN_ID: ${{ github.run_id }} uses: actions/upload-artifact@v2 with: - name: 'pr-${{github.run_id}}' + name: 'pr-${{ env.RUN_ID }}' path: pr/ diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index b5491ab0ab9..33a790f8336 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -19,6 +19,7 @@ env: GATSBY_RUDDERSTACK_STAGING_KEY: ${{ secrets.GATSBY_RUDDERSTACK_STAGING_KEY }} GATSBY_RUDDERSTACK_PRODUCTION_KEY: ${{ secrets.GATSBY_RUDDERSTACK_PRODUCTION_KEY }} GATSBY_GOOGLE_TAG_MANAGER_TRACKING_ID: ${{ secrets.GATSBY_GOOGLE_TAG_MANAGER_TRACKING_ID }} + GATSBY_TRUSTPILOT_API_KEY: ${{ secrets.GATSBY_TRUSTPILOT_API_KEY }} jobs: release-production: diff --git a/.github/workflows/smoketests.yml b/.github/workflows/smoketests.yml index f6d63dee7a6..54837b2321d 100644 --- a/.github/workflows/smoketests.yml +++ b/.github/workflows/smoketests.yml @@ -48,7 +48,7 @@ jobs: - name: Cypress run # Uses the official Cypress GitHub action https://github.com/cypress-io/github-action - if: "!contains(steps.pr_information.outputs.branch_name, 'translation-new-homepage')" + if: "!contains(steps.pr_information.outputs.branch_name, 'quill')" uses: cypress-io/github-action@v6 with: # Records to Cypress Cloud @@ -71,7 +71,7 @@ jobs: - name: Set comments message id: set_msg - if: always() && !contains(steps.pr_information.outputs.branch_name, 'translation-new-homepage') + if: always() && !contains(steps.pr_information.outputs.branch_name, 'quill') run: | # Using shell script to conditionally set the message if [[ "${{ job.status }}" == "success" ]]; then @@ -81,7 +81,7 @@ jobs: fi - name: Leave comment - if: always() && !contains(steps.pr_information.outputs.branch_name, 'translation-new-homepage') + if: always() && !contains(steps.pr_information.outputs.branch_name, 'quill') uses: marocchino/sticky-pull-request-comment@v2 with: header: Smoke tests status update diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index 408d8dadde3..5c3d3ce02fd 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -24,7 +24,7 @@ env: GATSBY_RUDDERSTACK_PRODUCTION_KEY: ${{ secrets.GATSBY_RUDDERSTACK_PRODUCTION_KEY }} GATSBY_STRAPI_TOKEN: ${{ secrets.GATSBY_STRAPI_TOKEN }} GATSBY_GOOGLE_TAG_MANAGER_TRACKING_ID: ${{ secrets.GATSBY_GOOGLE_TAG_MANAGER_TRACKING_ID }} - + GATSBY_TRUSTPILOT_API_KEY: ${{ secrets.GATSBY_TRUSTPILOT_API_KEY }} jobs: release-staging: timeout-minutes: 30 diff --git a/.github/workflows/translation-sync.yml b/.github/workflows/translation-sync.yml index 921198a59f1..2868ee60cae 100644 --- a/.github/workflows/translation-sync.yml +++ b/.github/workflows/translation-sync.yml @@ -60,7 +60,9 @@ jobs: sudo apt install gh gh auth login --with-token <<< ${{ github.token }} + gh pr close "$branch_name" || true + pr_output=$(gh pr create --base "master" --title "[translations] New strings from crowdin 📚" --head "binary-com:$branch_name" -F ".github/translation_sync_template.md") echo "PR_URL=$pr_output" >> $GITHUB_ENV fi diff --git a/.gitignore b/.gitignore index f825f417935..012f71ded1e 100644 --- a/.gitignore +++ b/.gitignore @@ -90,3 +90,5 @@ static/CNAME #Webpack webpack-bundle-report + +static/~partytown \ No newline at end of file diff --git a/crowdin/messages.json b/crowdin/messages.json index e58084bc37c..180cf68332f 100644 --- a/crowdin/messages.json +++ b/crowdin/messages.json @@ -2,6 +2,7 @@ "3670321": "<0>IVV.US The iShares Core S&P 500 ETF tracks the performance of an index of large-capitalisation US equities.", "3965745": "Your payout can potentially grow by 1% or 5% on average per tick.", "4506932": "How do I add a Deriv X account?", + "5629598": "Company website/social media URL*", "5681962": "EUR/USD DFX10 Index", "6312314": "Deriv (V) Ltd (Company No. 014556), incorporated on the 17th February 2016, is registered in the Republic of Vanuatu with its registered office located at 1276, Govant Building, Kumul Highway, Port Vila, Republic of Vanuatu. Deriv (V) Ltd is licensed by the Vanuatu Financial Services Commission <0>(view licence) and is a member of the <1>Financial Markets Association.", "7128051": "How can I adjust or remove my self-exclusion limits?", @@ -117,7 +118,6 @@ "104744952": "Complete the form and click Submit.", "105613424": "What is the minimum amount to open a position on Deriv MT5?", "106492474": "high-close option trade", - "106560608": "Instagram", "109865596": "Enjoy weekend trading on Deriv and get the most out of your trades", "110140669": "If you are a professional trader, the MT5 trading signals service allows you to share your strategies with other traders for free or a subscription fee that you determine. When traders subscribe to your signal, your deals are automatically replicated on their accounts each time you place a trade.", "111464658": "<0>5 lots traded with DL on <0>BTC/USD is split between:", @@ -126,6 +126,7 @@ "115911783": "Of course, this list isn’t complete. Every day, impersonators come up with new ways to try to steal your information and money.", "117174749": "Can I close an open position before expiry?", "117273069": "<0>Wall Street 30 follows the stock performance of the top 30 listed companies in the US.", + "117318539": "Password should have lower and uppercase English letters with numbers.", "117920584": "As per <0>our terms, we only allow one account per client, which you can open in the currency of your choice (either fiat or crypto). If you want to trade with other currencies, you can add multiple cryptocurrency accounts to your profile.", "118164751": "This plan is available exclusively for EU-based clients. <0>Please note that according to regulations, you cannot have clients who reside in Portugal or Spain.", "119888059": "Who can apply", @@ -133,6 +134,7 @@ "120180174": "0–19.999%", "121961018": "If you're residing in the EU or UK, <0>contact us via live chat, and we'll help you with it.", "123005346": "No artificial barriers to customer withdrawals", + "127307725": "A politically exposed person (PEP) is someone appointed with a prominent public position. Close associates and family members of a PEP are also considered to be PEPs.", "128120244": "Since 1999, the Group has served traders around the world with integrity and reliability. We always hold ourselves to the highest ethical standards and regulatory requirements.", "131637194": "For <0>metals, there is a fixed commission of USD 4 per lot. A deal for 1 lot of XAU/USD will pay out USD 4 in commission based on the following formula:", "132319176": " take profit level", @@ -156,6 +158,7 @@ "152524253": "Trade the world’s markets with our popular user-friendly platform.", "154463429": "Our demo trading experience will represent real-money trading, especially with contract pricing and trading restrictions.", "154883335": "Exclusive access to innovative assets", + "155270236": "Deriv (FX) Ltd is licensed by the Labuan Financial Services Authority <0>(licence). Deriv (BVI) Ltd is licensed by the British Virgin Islands Financial Services Commission <1>(licence). Deriv (V) Ltd is licensed by the Vanuatu Financial Services Commission <2>(licence). Deriv (SVG) LLC has a registered office at First Floor, SVG Teachers Credit Union Uptown Building, Corner of James and Middle Street, Kingstown P.O., St Vincent and the Grenadines. Deriv.com Limited is the holding company for the above subsidiaries with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ.", "155518428": "graph", "155869362": "high low", "156487821": "DEX 1500 DOWN Index", @@ -178,9 +181,11 @@ "176773798": "0.5%", "176823932": "We may decline your verification documents if they are insufficiently clear, invalid, expired, or have cropped edges.", "176972763": "<0>GLD.US The SPDR Gold Shares ETF tracks the price of gold bullion in the over-the-counter (OTC) market.", + "177720589": "If you hit <0>Yes, the details you entered will be lost, and you’ll need to restart the registration process.", "179737767": "Our legacy options trading platform.", "180412186": "Predict whether the exit spot will be strictly higher or lower than the entry spot at the end of the contract period.", "181754600": "How can I identify emails from impersonators of Deriv customer support?", + "182234515": "Choose the type of partner account you want to register", "182438100": "Frequently asked questions - DBot", "183032954": "No, the High/Low Ticks options are only available on the SmartTrader and Deriv Bot trading platforms, and are available to trade on synthetics.", "186459036": "Your net profit will depend on how much the final price is above the predetermined strike price, with the maximum potential gains growing if the price of the underlying asset rises significantly. Your losses are limited to the initial stake required to purchase the call option.", @@ -198,6 +203,7 @@ "200347746": "You’ll be brought back to the <0>Cashier page. Click Review pending and select the transaction that you'd like to cancel.", "201096446": "UNG.US", "202712649": "Fast and secure deposit and withdrawal options", + "203271702": "Try again", "209516313": "The MT5 trading signals service allows you to copy the trades of more experienced traders to your MT5 account. Once you’ve subscribed to a signal, the provider’s deals will be automatically replicated on your Deriv MT5 trading account each time they place a trade.", "209799068": "A contract for difference (CFD) allows you to trade on the price movement of an asset, without buying the underlying asset.", "210989591": "Add a Deriv X real account.", @@ -258,7 +264,6 @@ "258310842": "Workspace", "259593484": "real account", "260003723": "Example 2", - "261542396": "We'll credit your commission for the previous month into your trading account after the 15th of every month. As an affiliate, you’ll earn commission when your referred clients trade on options and multipliers. To earn from your clients' MT5 trades, you'll need to sign up as an introducing broker. (see <0>How do I sign up as an introducing broker (IB)?)", "261878007": "If you select 'Matches', you receive the payout if the last digit of the exit price is the same as your prediction.", "262590832": "Open long and short positions, depending on your preferred trading strategy.", "263232709": "1 - 2 working days", @@ -281,6 +286,7 @@ "275316510": "Impersonators ask you to send confidential information over an unsecure platform, for example via SMS, WhatsApp, email, etc.", "276482397": "No, you can't.", "278499050": "Use your local currency to make deposits into and withdrawals from your Deriv account.", + "279593550": "Partner Signup Page | Deriv", "281247370": "Margin Calculator", "284321953": "Can I close a lookbacks contract before the expiry time?", "286667499": "Open a real account, make a deposit, and start trading derived FX and other markets.", @@ -318,6 +324,7 @@ "316920917": "Oops, sorry...", "317551740": "$ 8.00", "317744607": "Discover DBot now", + "317753588": "Second website/social media URL", "318239044": "Pfizer", "318433321": "Instruments available for options trading", "318815297": "Trade the way you like", @@ -376,6 +383,7 @@ "375485199": "24/7 customer support via live chat on our website", "376073087": "<0>Deriv MT5 (DMT5) and <1>Deriv X are both multi-asset trading platforms where you can trade CFDs with leverage on multiple asset classes. The major difference between them is the platform layout — MT5 has a simple all-in-one view, while on Deriv X you can customise the layout according to your preference.", "376358538": "- Select your preferred trading asset.", + "376773528": "Deriv Life", "378043056": "Each of these indices replicates the performance of top publicly traded companies in a financial market in the Asia/ Oceania region.", "379401010": "Partners", "381970124": "If you select 'Odd', you receive the payout if the last digit of the exit price is an odd number (e.g. 1, 3, 5, 7, 9).", @@ -403,6 +411,7 @@ "401498558": "Deriv (FX) Ltd (Company No. LL13394), incorporated on the 18th January 2017, is registered in the Federal Territory of Labuan (Malaysia) with its registered office located at Unit No. 3A-16, Level 3A, Labuan Times Square, Jalan Merdeka, 87000, Federal Territory of Labuan, Malaysia. Deriv (FX) Ltd is licensed by the Labuan Financial Services Authority <0>(view licence) and is a member of the <1>Labuan Fintech Association.", "403435120": "Trade the way you want with 2 flexible trade types.", "405110755": "You can trade forex, cryptocurrencies, and derived on Deriv Trader. Some markets may not be available in certain countries.", + "405259925": "Fast CFDs platform with inbuilt copy trading.", "406075956": "If you select ‘Odd’, you will win the payout if the last digit of the last tick is an odd number (i.e. 1, 3, 5, 7, or 9).", "406403062": "Can I change my growth rate after opening the contract?", "407739127": "A monthly service fee of USD 1,500 will be charged at the end of each month. The fee is accrued and only charged if the minimum volume requirements are not exceeded.", @@ -424,6 +433,7 @@ "421158556": "You may refer to <0>our terms for more information. If you need help getting into your account, <1>contact us via live chat.", "421232681": "Additional terms", "421563171": "What are vanilla options?", + "422844635": "Please read our <0>Terms and conditions, <1>Risk disclosure, and <2>Secure and responsible trading to fully understand the risks involved before using our services. The information on this website does not constitute investment advice.", "426355147": "<0> {{loss_percent}}% of retail investor accounts lose money when trading CFDs with Deriv, read our full Risk disclosure here.", "426923558": "The closer the barrier is to the spot price, the higher the chance for your turbo options contract to expire worthless (which means, your contract will expire without any payout or profit).", "427008206": "Be transparent", @@ -435,6 +445,7 @@ "431284069": "Your net profit will depend on how much the spot price falls below the barrier, with the maximum potential gains growing if the underlying price falls significantly. Your losses are limited to the initial stake required to purchase the short turbo option.", "432518896": "Client trust is our highest priority, and that’s why millions of users choose us. Here are some of the things that make us a leading online trading service provider.", "432775041": "Get Trading", + "433348384": "Real accounts are not available to politically exposed persons (PEPs).", "434113887": "Frequently asked questions - Deriv MT5", "434254071": "rc rp", "434669878": "Best forex spread award", @@ -535,7 +546,6 @@ "517286342": "

To place a vanilla options contract, you’ll need to:

", "517833647": "Volatility 50 (1s) Index", "517844699": "Alibaba Group Holding Ltd", - "518861708": "Open a demo Deriv MT5 or demo Deriv X account and practise with an unlimited amount of virtual funds.", "518906831": "Can I use the same address to make a cryptocurrency deposit?", "519988278": "Fox Corp Class B", "520136698": "Boom 500 Index", @@ -557,7 +567,6 @@ "533462850": "Who is Deriv Prime?", "534798809": "Our intelligent routing to servers worldwide ensures rapid execution speeds and a stable, uninterrupted price feed with 99.97% uptime.", "538228086": "Close-Low", - "538800329": "We'll credit your commission for the previous month into your trading account after the 15th of every month. You’ll earn a commission based on each successful referral when your referred client deposits the required minimum amount into their Deriv account.", "539261300": "OS icon", "539645627": "We aim to deliver market-leading products that are trusted around the world.", "540538076": "40+ stocks", @@ -643,6 +652,7 @@ "618098617": "Your IB commissions earned from MT5 and Deriv EZ are credited directly into your Deriv MT5 account daily. You can transfer the funds to your Deriv account and withdraw them via your preferred payment method.", "618453683": "On Deriv, you can trade CFDs with high leverage, enabling you to pay just a fraction of the contract’s value. It will amplify your potential gain and also increase your potential loss.", "619354706": "Max(6.83, -10) ", + "619481945": "Mobile number is required", "619610610": "Close your account at any time you want.", "621291584": "0.75", "622253642": "Save time – no need to open, monitor, and close trades.", @@ -659,8 +669,10 @@ "630831015": "Dtrader trading platform", "631600257": "Strong regulatory compliance that instils confidence in clients from all over the world.", "632417472": "Trade multipliers on synthetics 24/7, 365 days a year. Trade multipliers on forex and cryptocurrencies round the clock on weekdays.", + "633498400": "You should enter 8-13 numbers", "633640589": "${GENERAL}", "635121138": "Affiliate and IB programme | Deriv", + "635805347": "Dos and don'ts of promoting our products and services", "636073620": "Subscribe to Deriv MetaTrader 5 trading signals to copy the trades of experienced traders, or become a signal provider and share your strategies.", "636098452": "Deriv GO is our mobile app optimised for trading multipliers on the go. Trade on forex, derived indices, and cryptocurrencies, and maximise your potential profit without risking more than your stake.", "636857983": "Take advantage of a highly liquid market with round-the-clock trading. Profit from correctly predicting the movement of the world's most popular cryptocurrencies.", @@ -687,9 +699,9 @@ "655902997": "You may reactivate your account by <1>logging in with your email address and password. If you're unable to do so, please <0>contact us via live chat, and we'll help you further.", "656430237": "How do I rate or recommend my trade partners on Deriv P2P?", "657066292": "You can connect to your trusted bridge partner via a FIX API protocol connection.", - "657439941": "Deriv (FX) Ltd is licensed by the Labuan Financial Services Authority (<0>licence). Deriv (BVI) Ltd is licensed by the British Virgin Islands Financial Services Commission (<1>licence). Deriv (V) Ltd is licensed by the Vanuatu Financial Services Commission (<2>licence). Deriv (SVG) LLC has a registered office at First Floor, SVG Teachers Credit Union Uptown Building, Corner of James and Middle Street, Kingstown P.O., St Vincent and the Grenadines. Deriv.com Limited is the holding company for the above subsidiaries with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ.", "658337631": "Got a <0>Binary.com account? You can <1>log in to <0>Deriv with your <0>Binary.com username and password", "659338852": "Stop loss or ", + "661898204": "Deriv Investments (Europe) Limited is licensed and regulated by the Malta Financial Services Authority under the Investment Services Act <0>(licence). Deriv Holdings (Guernsey) Limited is the holding company for the above subsidiary with the registration number 71479 and the registered address of 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ.", "661969161": "Execution speed", "662615740": "10 world indices", "662679188": "DTrader | Online trading platform | Deriv", @@ -728,6 +740,7 @@ "699722384": "1. You must have an MQL5 community account to subscribe to trading signals. If you don't have an account yet, please go to <0>MQL5.com to register.", "700128691": "We’re steadfast in our commitment to high ethical standards. Find more reasons to know why Deriv is the choice of online traders.", "700971061": "You can find your Deriv MT5 server name on your <0>Deriv MT5 dashboard. Click Trade on your preferred MT5 account and look for the server below the broker name.", + "701236336": "Website url", "701775446": "Volatility 200 Index", "701840176": "Commission per USD 100k turnover", "702074152": "PARTNERS", @@ -735,10 +748,12 @@ "704465777": "After making your payment, share the receipt with the seller via the chat feature in Deriv P2P.", "704532260": "Sign up with just your email. No credit card or minimum deposit required.", "704777433": "Deep, reliable liquidity with fast execution for professionals, seasoned institutions, start-ups, and more", + "705397132": "Automated trading. No coding required.", "706043807": "A dedicated account manager to help you with any questions", "706069088": "About Deriv", "706434010": "Deriv X logo", "706931524": "When you purchase a 'High-Close' contract, your payout will be equal to the difference between the highest price and the exit price over the duration of the contract multiplied by the multiplier.", + "710137133": "Apply now", "712547410": "total trade turnover", "714321435": "laptop mt5", "714478782": "<0>AUD Basket measures the value of the Australian dollar against a basket of five global currencies (USD, EUR, GBP, JPY, CAD), each weighted by 20%.", @@ -758,12 +773,15 @@ "730281403": "Make instant bank transfers to all the major banks in your country.", "731382582": "BNB/USD", "731636050": "Can I open multiple turbo options contracts simultaneously?", + "732351316": "Step 3 : Address details (3 of 5)", "733057061": "Learn how to trade cryptocurrencies with Deriv", "733615113": "No, it isn’t. DP2P is a peer-to-peer service for our clients to make deposits and withdrawals using their local currency. As our payment agent, you can use the DP2P platform to offer your services to Deriv clients in your country", "733921210": "For instance, if you are trading the USD/JPY forex pair, the swap charge will be computed in Japanese Yen (JPY) which is the quote currency. On the other hand, if you are trading oil, then the swap charge will be computed in US Dollar (USD), which is the denomination of the underlying asset – oil.", "733955450": "Trading online can be exciting, but it’s important to keep in mind that there are risks involved including addiction and financial losses. To avoid the danger of addiction, it is important that you engage in a careful self-analysis to check if you are at risk, and follow some basic principles and guidelines.", "736376851": "If you select 'Higher', you receive the payout if the exit price is above the barrier.", + "736634601": "explore it on appgallery", "737466973": "The contract size is one standard lot of Volatility 75 Index = 1", + "737537871": "Mobile app for multipliers trading on the go.", "739412906": "<0>Stays Between/Goes Outside: Predict whether the market will stay inside or go outside two price targets at any time during the contract period.", "739759950": "Tick counters are available between consecutive barrier crosses to help you make smart trading decisions.", "740609768": "What should I do if I have a dispute with the trader I’m dealing with?", @@ -797,6 +815,7 @@ "763514492": "Get integrated help", "764856444": "We have a huge mission, an incredible team, and rapid growth.", "764879840": "GLD.US", + "764958509": "Trade on global financial markets and multiply your potential profit without losing more than your stake.", "768795461": "Start trading cryptocurrencies on Deriv in 3 simple steps", "769728384": "<0>USD 100 Volume", "770100372": "Instant access", @@ -893,10 +912,12 @@ "856928872": "Yes, as long as you pass our checks. Initially, you'll start with a 500 USD limit for buy and sell orders.", "860052562": "Airbnb", "861659702": "Easy-to-use platforms, superior charts", + "862283602": "Phone number*", "862480295": "Our swap calculator helps you to estimate the swap charges required to keep your positions open overnight on Deriv MT5.", "866130068": "product department", "866196404": "What are the major differences between DTrader, Deriv MT5 and Deriv X?", "867182964": "6,000 + 2,250 = USD 8,250", + "867244595": "We’re unable to process your sign-up request at this time. Please try again.", "867458310": "No, the trade barrier can only be set before you open a contract. Once your turbo options contract is opened, the barrier cannot be changed.", "867582421": "Help centre | Frequently asked questions | Account | Deriv", "868154618": "Accounts", @@ -942,6 +963,7 @@ "897732167": "Deriv MT5 logo", "898646134": "To see your account’s trading limits, go to Settings > Security and safety > <0>Account limits.", "899411431": "Once you’re shown options to select from, choose “Complaints”. You can also type \"complaint\".", + "899612897": "You should enter 8-13 numbers.", "901158881": "This feature allows you to set the level of profit that you are comfortable with when the market moves in your favour. Once the amount is reached, your position will be closed automatically and your earnings will be deposited into your Deriv account.", "902057285": "Click Yes to confirm the cancellation. Your funds will be returned to your Deriv account, and your account balance will be updated accordingly.", "903422317": "Get instant access to your trades wherever you are whenever you want.", @@ -972,11 +994,13 @@ "929514030": "Enjoy trading asset prices derived from simulated markets.", "929553858": "They ask you to download file attachments or remote access software (such as Teamviewer) to give them remote control of your device. For example, an impersonator may take control and install ransomware on your device and then demand a ransom. If the ransom isn’t paid, you may lose access to your device permanently.", "930211164": "24/7 trading", + "931595451": "Indices simulating real-world markets with 24/7 trading.", "931896911": "Go to the <0>History section.", "932190946": "Daily deposit limits", "934685291": "This helps you to set the stop loss and take profit level when the asset price moves in Up or Down direction.", "935167918": "3.75", "935645176": "Additional terms and restrictions for Deriv clients in certain countries", + "937831119": "Last name*", "938314093": "ARRK.US", "938692453": "Swaps charged upon rollover for short (sell) positions.", "938792466": "Customise your contracts to suit your style and risk appetite using innovative features like stop loss, take profit, and deal cancellation.", @@ -988,6 +1012,7 @@ "943716510": "Introduction to cryptocurrencies", "946654704": "Client trades with a stake of USD 10.", "947541466": "Trade 24/7 on our proprietary synthetics that simulate real-world market movements. These indices are unaffected by regular
market hours, global events, or market and liquidity risks. Manage your exposure by selecting the volatility level to suit your risk appetite.", + "947758334": "City is required", "948545552": "150+", "949495445": "even/odd option trade", "949617971": "Your Deriv X password is linked to the standalone Deriv X trading platform while your Deriv password gives you access to platforms hosted on our website such as DTrader and DBot.", @@ -1064,6 +1089,7 @@ "1025032938": "Do I have to pay any fees to become a payment agent for Deriv?", "1026160856": "Predict whether the last digit of the last tick of a contract will be an even number or an odd number.", "1026845997": "Endpoint", + "1027349186": "First Name", "1029179269": "Set profit level", "1030898603": "What is the maximum I can lose when I trade turbo options?", "1032907147": "AUD/NZD", @@ -1105,10 +1131,10 @@ "1067137194": "Explore <0>CFDs on Deriv MT5, and enjoy high leverage and low spreads to increase your returns when the market moves in your favour.", "1067372545": "2. Under CFDs, look for Deriv cTrader and select <0>Get.", "1068522332": "Deriv MT5 gives you access to multiple asset classes – forex, stocks & indices, cryptocurrencies, commodities, exchange-traded funds, and derived indices — on a single platform. With exclusive access to innovative trade types, Deriv brings the MT5 experience to a superior level for both new and experienced traders.", - "1069916328": "Youtube", "1070284669": "<0>Stop loss and take profit level in the Down direction = asset price × {(-stop loss OR take profit amount - commission) ÷ (stake × multiplier) + 1}", "1070403135": "weekend trading", "1070720669": "Enjoy trading asset prices derived from
simulated markets.", + "1072012627": "Country is required", "1072128975": "Once your identity has been verified, you can use Deriv P2P on desktop or mobile.", "1072571985": "If you created your Deriv account using Apple/Google/Facebook, try resetting your Apple/Google/Facebook password. After that, you should be able to log in to Deriv as usual.", "1076548216": "Leverage Deriv’s technology to launch your own trading app. Deliver an enhanced trading experience to your clients and earn from every trade executed on your app.", @@ -1122,6 +1148,7 @@ "1083621931": "Please note that the availability of early exit from your trading position depends on the specific trade type, or it may only be available within a certain timeframe.", "1084407062": "These indices correspond to simulated markets with <0>constant volatilities of 10%, 25%, 50%, 75%, and 100%. There is an equal probability of an up or down jump <0>every 20 minutes, on average. The jump size is <0>around 30 times the normal price movement, on average.", "1084960586": "Disclose the terms of all contracts", + "1086118495": "Traders Hub", "1088428939": "These indices correspond to financial markets with volatilities of 10% and 20%. One tick is generated for every tick of the corresponding forex pair.", "1089110190": "You accidentally gave us another email address (usually a work or a personal one instead of the one you meant).", "1089165018": "Get in touch", @@ -1199,6 +1226,7 @@ "1169889619": "Already have an account? <0>Log in", "1170266535": "<0>Deriv Trader offers multipliers trading on a range of underlying assets such as forex, cryptocurrencies, and derived. This platform allows you to open multipliers trades that offer the opportunity to multiply potential profit without risking more than your stake. You may find this platform more intuitive if you're new to the trading world.", "1171083830": "Hit <0>Get next to <0>Deriv account.", + "1171332705": "Username*", "1171765024": "Step 3", "1172611503": "If you select ‘Asian Fall’, you will win the payout if the last tick is lower than the average of the ticks.", "1172806588": "Make instant deposits using your local e-wallet.", @@ -1227,6 +1255,7 @@ "1196310280": "Intel", "1197939158": "Don't accept", "1197965598": "Accumulators (or accumulator options) allow you to heighten your potential profit exponentially without risking more than your stake. Your potential profit will increase regardless of market movement, as long as the price moves within the trade barriers.", + "1198529439": "Please enter a valid street", "1198781410": "We’ve designed a customer-centric and intuitive trading experience for Deriv that’s optimised to convert visitors into clients. We’ll also provide you with the tools and creative materials you need to drive traffic to Deriv.", "1199693297": "20 - 800", "1203468323": "- Set other optional contract parameters.", @@ -1317,7 +1346,6 @@ "1284380628": "ETF trades available on Deriv", "1284608813": "No, you cannot close an In/Out options trade before the trade duration's expiry. This is because the potential payout is defined based on the contract duration, selected barrier, and stake.", "1285517993": "Automate your trading ideas without writing code", - "1285554763": "Diversify your portfolio and enjoy low-cost intraday trading with ETFs.", "1286094280": "Withdraw", "1286648079": "Return to player for mulitplier options is in the range of 95.0-99.9% for all indices on an average. Using a different multiplier or duration may affect the RTP.", "1286733654": "Brokerage firms", @@ -1351,9 +1379,11 @@ "1312819271": "Let’s say you want to trade 2 lots of EUR/USD.", "1313291854": "If you select 'Reset Call', you receive the payout if the exit price is higher than either the entry price or the price at reset time.", "1316697520": "Markets available for multipliers trading", + "1319030942": "Signup failed", "1320418221": "Estimate the margin you need to hold your positions. The result depends on leverage, volume lot, and your Deriv MT5 account balance.", "1323941798": "Short", "1324376913": "Our values are the fabric of our culture", + "1325181938": "Street*", "1326142154": "high-low option trade", "1326235397": "These indices correspond to simulated markets with constant volatilities of 10%, 25%, 50%, 75%, and 100%.", "1327067520": "Deriv P2P makes withdrawals and deposits simple, it’s the best user-friendly app.", @@ -1396,6 +1426,7 @@ "1364972610": "How do High/Low Ticks contracts work?", "1365926355": "Deriv X trading paltform", "1367358043": "<0>USD 200 Volume", + "1367856592": "Choose which plan you would like to subscribe.", "1367990698": "Volatility 10 Index", "1370484308": "A chart illustrating a losing High Ticks trade type contract", "1370655673": "Affiliate and IB programmes | Partnership programmes | Deriv", @@ -1409,6 +1440,8 @@ "1376955476": "Swap charge", "1377692190": "1. Go to your Deriv X dashboard.", "1380047398": "Scan to download", + "1380676466": " is required", + "1383065219": "Please create a username and password for your affiliate account.", "1384321002": "If you are not satisfied with the outcome, you can escalate your complaint, provided that the <0>complaints policy associated with your account states that escalation is possible.", "1384941966": "Citigroup", "1385878133": "No money", @@ -1454,6 +1487,7 @@ "1413295628": "DIA.US", "1413567719": "What is payout per point?", "1413977299": "You can trade Digits contracts on the Deriv Trader, SmartTrader, and Deriv Bot trading platforms, on synthetics.", + "1414394793": "Country*", "1415101574": "We have a diverse suite of 7 trading platforms: <0>Deriv MT5, <1>Deriv X, <2>Deriv Trader, <3>Deriv Bot, <4>Deriv GO, <5>SmartTrader, and <6>Binary Bot. Each of these platforms is designed to fit any trading style, regardless of your trading experience.", "1416184764": "How can I identify Deriv customer support impersonators on Telegram?", "1416248668": "Choose the best rates", @@ -1478,6 +1512,8 @@ "1435321289": "Process all deposits and withdrawals quickly and accurately", "1435793182": "Predict whether the exit spot will be higher or lower than either the entry spot or the spot at reset time.", "1437505451": "Pip Calculator", + "1437672633": "Step 4 : Personal details (4 of 5)", + "1438632095": "Please enter a valid company registration number.", "1442199408": "Deriv MT5 trading platform", "1446857185": "
  1. Select the market and asset you want to trade.
  2. Choose which Digits contract to open (Matches/Differs; Even/Odd; Over/Under).
  3. Set your preferred tick duration and last digit prediction.
  4. Enter your stake or desired potential payout amount.
  5. Open your Digits trade.
", "1446914689": "Guernsey alt img", @@ -1560,6 +1596,7 @@ "1516021730": "20 - 1,000", "1516676261": "Deposit", "1518575473": "Uptime", + "1519951161": "Space not available", "1523687535": "We don’t pay commission, but you can set your own commission rate per transaction within reasonable thresholds. When you sign up, our team will be in touch to work out the details with you.", "1524248407": "Trade on financial markets plus our proprietary synthetics that are available 24/7.", "1524725659": "When will the commission be paid out?", @@ -1572,6 +1609,7 @@ "1529762880": "You must have a minimum balance in your Deriv account while your application is under review. The amount of this balance depends on your country of residence. You only need to maintain the minimum balance until your application is successful.", "1529770577": "Derived indices consist of asset prices generated from real-world and simulated markets and indices, with little to no influence from real-world events. You can trade from a variety of derived indices, including synthetic indices, derived FX indices, and baskets.", "1533284111": "What is a floating exchange rate?", + "1533452395": "Earn based on each contract's payout probability or client's trade. <0>Learn more", "1535175777": "Make deposits and withdrawals through your local bank in real-time.", "1536955851": "Options trading | Trading types | Deriv", "1537212469": "Spot price", @@ -1621,6 +1659,7 @@ "1573231398": "Why trade cryptocurrencies on Deriv", "1573429525": "Call/Put", "1573589662": "Do keep in mind that we do not allow unauthorised incentives, gifts, and payments to encourage client signups. Payment will be withheld if any suspicions or activity of this conduct is discovered.", + "1574365902": "Please enter a valid url", "1574476135": "Let’s say you predict that the market will go up.", "1575069722": "Here are some of the ways we ensure that Deriv P2P is as secure as possible:", "1575147178": "Only ups/Only downs | Digital options contract | Deriv", @@ -1651,6 +1690,7 @@ "1597478217": "No, you cannot close an Asians contract before it expires.", "1598664071": "List of directors", "1599891822": "Stop loss amount in Down direction", + "1602016750": "Company registration number*", "1602627054": "So your pip value is <0>2 USD.", "1602716515": "When you join our IB programme,", "1602800752": "Save your strategies", @@ -1670,8 +1710,10 @@ "1613233789": "Blog", "1613273277": "Real world market", "1614573899": "Open a digital options contract with an Asians trade type on Deriv’s trading platforms and earn payouts with accurate market predictions.", + "1614857155": "Please enter a valid city", "1616071522": "<0>France 40 tracks the performance of the 40 most traded stocks among the top 100 listed companies in France.", "1616502762": "<0>US Tech 100 follows the stock performance of the 100 largest non-financial companies in the US.", + "1617759657": "Already have a Deriv affiliate account? ", "1618280107": "Offer competitive prices on all our products", "1619070150": "You are being redirected to an external website.", "1619579199": "Why is my Deriv P2P balance different from my Deriv account balance?", @@ -1721,7 +1763,6 @@ "1653650288": "Market-based values with limited influence from real-world events", "1654085043": "A chart illustrating a losing Lower trade type contract", "1655763047": "Google", - "1657811871": "Do's and don’ts for partners when promoting our products and services", "1658508250": "What is the difference between Rise/Fall and Higher/Lower contracts?", "1658594963": "Can I change the tick duration for the High/Low Ticks contract type?", "1659675491": "Practise trading from the mobile app, desktop app, or through your web browser.", @@ -1729,6 +1770,7 @@ "1659687862": "Deriv.com Limited is the holding company for the above subsidiaries with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ.", "1661123842": "- Purchase the contract", "1661263248": "How can I download my Deriv MT5 history?", + "1662186269": "investors in people - gold", "1663880277": "Will I be required to pay a fee to become a premium payment agent?", "1664747386": "Paypal", "1665738338": "Balance", @@ -1742,6 +1784,7 @@ "1673824550": "Minimum stake", "1674164323": "<0>With a x500 multiplier, if the market goes down 2%, you'll <1>lose only $100. An automatic stop out kicks in if your loss reaches your stake amount.", "1674363165": "traders worldwide", + "1674798397": "Trade multipliers on our mobile app.", "1676292946": "Forex trading gives you the chance to profit from changes in the relative values of currencies on the forex market.", "1677027187": "Forex", "1677553724": "Want to learn more about Deriv P2P? Head to our <0>Help centre.", @@ -1759,6 +1802,7 @@ "1686378613": "DBot is a web-based strategy builder for trading digital options. It’s a platform where you can build your own trading bot using drag-and-drop 'blocks'.", "1688330506": "<0>221.5961", "1688556728": "European indices", + "1690730424": "Only Latin and Alphabet characters", "1691701175": "Stock & indices", "1691844143": " Based on the number of ticks and the accumulator value, your potential profit may exceed your set amount multiple times.", "1692056155": "Unsubscribe | Emails | Deriv", @@ -1768,6 +1812,7 @@ "1694777943": "A user-friendly trading platform", "1695892307": "Can I enter multiple lookbacks contracts simultaneously?", "1696396625": "google", + "1698515050": "Create partner account", "1700291683": "It’s completely free of charge to join the IB programme.", "1701577545": "The maximum duration for every contract is limited and differs according to the chosen accumulator value. When the maximum duration is reached, the contract will be automatically closed.", "1702295087": "Make easy deposits and withdrawals using Vietnam's famous banks.", @@ -1820,6 +1865,7 @@ "1748626120": "No hidden costs", "1748670878": "Can I use my Binance wallet to make the cryptocurrency deposit?", "1748925202": "How can I reactivate my Deriv MT5 account?", + "1752444975": "Company second website/social media URL", "1752586208": "What payment methods can I use to exchange with other traders?", "1752611984": "Open a digital options contract with an Up/Down trade type on Deriv’s trading platforms and earn payouts with accurate market predictions.", "1753559268": "We'll pay your IB commission into your MT5 Synthetic account daily.", @@ -1939,6 +1985,7 @@ "1862283751": "Trade forex, synthetic indices, and cryptocurrencies wherever, whenever you want and maximise your potential profit with multipliers on Deriv GO.", "1862328242": "success", "1867740000": "GBP/USD DFX10 Index", + "1868644151": "Partner with us as an affiliate. Earn commission from the total net revenue of your referred clients’ from option trading platforms.", "1868860566": "EUR/SEK", "1869230144": "<0>-7.23", "1869497149": "Enjoy a smooth trading experience with easy-to-use charts and a pleasant dark theme.", @@ -1947,6 +1994,7 @@ "1872216697": "Yes, you can choose the duration of your Asians contract anywhere between 5 and 10 ticks.", "1872568231": "GBP/TRY", "1872607463": "banner", + "1873174451": "Postcode is required", "1873182175": "Apple account sign in page", "1873188024": "A deal for 1 lot of the Volatility Index 75 for a price of USD 500,000 per USD 100,000 turnover will pay out a commission of USD 5. The minimum volume required to receive the minimum commission of USD 0.01 is determined using this formula:", "1874424045": "I lost my phone. How can I disable two-factor authentication (2FA)?", @@ -2003,7 +2051,6 @@ "1907562333": "You will receive a payout if the spot price remains below a predetermined barrier throughout the entire trade duration. If the spot price touches or breaches the barrier at any time before the contract expires, the initial stake (premium) is lost.", "1908121069": "Learn more about Deriv P2P", "1908933179": "

To place a turbo options trade on Deriv, you’ll need to:

", - "1909509169": "Principles", "1909647105": "TRX/USD", "1909809509": "Swap calculator", "1909980423": "Go to <0>Cashier > Deriv P2P and register.", @@ -2023,6 +2070,7 @@ "1923530212": "Flexible.", "1923747167": "Trading specifications for CFDs on Deriv", "1923836405": "Must be exactly 8 characters", + "1923984982": "Flagship options, accumulators, & multipliers trading platform.", "1924997360": "[ { 10", "1925717346": "The point value is derivied from the current digits of the asset. In this example, the digit is 5, so the point value is 0.00001.", "1926519171": "Limit the amount of money you may trade within a specified period.", @@ -2038,7 +2086,6 @@ "1935201826": "Earn based on the monthly net revenue generated by your clients.", "1935401816": "Narrow spreads", "1936980019": "<0>4 lots with 1,000 leverage:", - "1937982609": "Deriv Partners", "1938567033": "{ ( -7.54", "1939014728": "How do I remove blocks from the workspace?", "1939374383": "Earn", @@ -2084,6 +2131,7 @@ "1979304570": "Deriv Investments (Europe) Limited is licensed and regulated by the Malta Financial Services Authority under the Investment Services Act (<0>licence). Deriv (FX) Ltd is licensed by the Labuan Financial Services Authority (<1>licence). Deriv (BVI) Ltd is licensed by the British Virgin Islands Financial Services Commission (<2>licence). Deriv (V) Ltd is licensed by the Vanuatu Financial Services Commission (<3>licence). Deriv (SVG) LLC has a registered office at First Floor, SVG Teachers Credit Union Uptown Building, Corner of James and Middle Street, Kingstown P.O., St Vincent and the Grenadines. Deriv.com Limited is the holding company for the above subsidiaries with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ.", "1979503547": "Trading terms", "1980724783": "The point value is derived from the current digits of the asset. In this example, the digit is 5, so the point value is 0.00001.", + "1981714597": "The world’s most popular digital currencies.", "1982404952": "Get quote", "1983480826": "Sign in", "1983854834": "24/7 trading with the world’s top crypto assets.", @@ -2106,8 +2154,10 @@ "1995896523": "DMT5 is developed to give you the best CFD trading experience. You can access our MT5 trader through desktop and even mobile.", "1996332377": "1 ) }", "1997138507": "If the last tick is equal to the average of the ticks, you don't win the payout.", + "1997358332": "download deriv-go", "1998452473": "Earn up to 45% lifetime commission with an online trading provider that enables anyone to trade on several popular financial markets with the utmost convenience. Deriv Group Ltd — the owner of Deriv.com — has a proven track record of running successful referral programmes with prompt payouts.", "1999120464": "Forex (Minor)", + "2000568638": "World markets including precious metals and energies.", "2000965959": "Trading hours", "2002128854": "

No, early exits are not available for Reset Call/Reset Put contracts.

Please note that the availability of early exit from your trading position depends on the specific trade type, or it may only be available within a certain timeframe.

", "2003802343": "There is absolutely no requirement to withdraw your IB commissions.", @@ -2126,6 +2176,7 @@ "2011732553": "Is the accumulated payout correlated with the direction of the underlying index?", "2012239282": "In <0>Bot Builder, hit <0>Reset on the toolbar at the top. This will clear the workspace. Please note that any unsaved changes will be lost.", "2015114251": "What is the minimum / maximum I can deposit into my Deriv X account?", + "2017988148": "download on the app store", "2018198484": "Trading cryptocurrencies gives you the chance to earn profits from price movements without owning the underlying digital coins. In other words, you can earn by correctly predicting whether the price of a cryptocurrency will go up or down.", "2018600727": "Deriv Investments (Europe) Limited is entitled to provide services in any other EU member state through EU passporting rights. Above is a list of the EU countries that have access to Deriv.com via EU passporting rights.", "2019968401": "Why trade with Deriv X", @@ -2157,6 +2208,7 @@ "2045764916": "0.0006631", "2046788283": "What markets can I trade on DTrader?", "2048307729": "Help Deriv clients to make multiple deposits and withdrawals daily.", + "2049136184": "Username is required", "2049247194": "20-22 November 2023", "2049759467": "Can I customise the duration for an Only Ups/Only Downs contract?", "2051986867": "So you will require a swap charge of <0>0.24 USD to keep the position open for one night.", @@ -2186,6 +2238,8 @@ "2065278286": "Spread", "2067757832": "Derived Indices", "2068595952": "What is derived?", + "2069455291": "Date of Birth*", + "2069660515": "Postal/Zip code*", "2070356006": "Start earning based on your chosen commission plan –– up to 45% of the total net revenue generated by your referred clients.", "2070897729": "Trade CFDs on forex, commodities, cryptocurrencies, stocks, stock indices, and derived indices.", "2071458958": "The minimum volume for micro forex pairs is 0.1 lot.", @@ -2208,6 +2262,7 @@ "2089087110": "Basket indices", "2089257874": "internal audit department", "2092654058": "To onboard with Deriv Prime’s liquidity solution and trading services, you will need to follow a streamlined process:", + "2094921906": "Street is required", "2095230169": "Reliable", "2097023111": "A low-cost way to trade diverse asset groups", "2097310605": "Why trade synthetics on Deriv", @@ -2217,12 +2272,14 @@ "2100986179": "The CFD trading platform to fit your style.", "2102247413": "You’ll need the following documents to verify your account:", "2102489869": "ebook", + "2106640360": "Partners' guide", "2106955649": "<0>IJR.US The iShares Core S&P Small-Cap ETF tracks the investment results of an index of small-capitalisation US equities.", - "2107489068": "Affiliate & IB Log in", "2108009353": "IWM.US", "2108799022": "<0>Rise/Fall: Predict whether the exit spot will be strictly higher or lower than the entry spot at the end of the contract period.", "2109279238": "derived", "2109387636": "How many trading platforms do you offer?", + "2109960759": "Company name is required", + "2110013669": "Password*", "2112006652": "FIL/USD", "2112510770": "Check if your browser and device are updated. If they're not, compatibility issues may prevent the email from reaching you.", "2115934251": "When you open a turbo options contract, you’ll pay an initial stake amount. This is the cost of entering the turbo options trade. You’ll also need to determine a trade barrier. The spot price must not touch or breach this barrier throughout your contract duration, otherwise your contract will be terminated early without any gains.", @@ -2292,46 +2349,10 @@ "-151151292": "Asians", "-1237186896": "Only Ups/Only Downs", "-1386887449": "Lookbacks", - "-737399162": "Partnership programmes", - "-1829383827": "Contact us", - "-1236814682": "Deriv life", - "-2115275974": "CFDs", - "-1879666853": "Deriv MT5", - "-319687255": "Deriv GO", - "-1246992539": "Binary Bot", - "-145462920": "Deriv cTrader", - "-34495732": "Regulatory information", - "-634625185": "Terms & conditions", - "-258641121": "Deriv Prime", - "-890622347": "Affiliates and IBs", - "-1642457320": "Help centre", - "-1718500720": "Community", - "-1306639327": "Payment methods", - "-787291267": "Status page", - "-810716123": "Deriv Blog", - "-1086253633": "SUPPORT", - "-1845318986": "Facebook", - "-640204246": "Twitter", - "-2077109769": "Linkedin", - "-45792628": "Telegram", - "-1076138910": "Trade", - "-663862998": "Markets", - "-2045194514": "Secure and responsible trading", - "-58704987": "Trade the world’s largest financial market with popular forex pairs.", - "-260024315": "Predict broader market trends and diversify your risk with stocks & indices.", - "-1825471709": "A whole new trading experience on a powerful yet easy to use platform.", - "-204498543": "Trade with leverage and tight spreads for better returns on successful trades.", - "-910437768": "Earn a range of payouts without risking more than your initial stake.", - "-622923303": "Trade on Deriv MT5, the all-in-one CFD trading platform.", - "-1278432184": "A highly customisable and easy-to-use CFD trading platform.", - "-2052935063": "An intuitive, multi-asset CFD trading platform with copy trading and custom indicators.", - "-1109694579": "Trade multipliers on forex, cryptocurrencies, and synthetic indices with our mobile app.", - "-981017278": "Automated trading at your fingertips. No coding needed.", - "-1668315223": "Traders’ tools", - "-1639500260": "Deriv MT5 Signals", "-1028545578": "Start trading options on Deriv", "-1197864059": "Create free demo account", "-866630583": "Practise", + "-1076138910": "Trade", "-874422884": "Open a real account, make a deposit, and start trading options for real.", "-214202452": "Conveniently withdraw your funds through any of our supported withdrawal methods.", "-1101198978": "Don't have a Deriv account yet?", @@ -2712,6 +2733,8 @@ "-257221931": "<0>Log in to your dashboard.", "-1109489026": "Click the <0>Finances tab and select <0>Payment instructions.", "-1408956818": "Select your preferred payment method, enter the necessary details, and click <0>Update.", + "-1463235467": "We'll credit your commission for the previous month into your trading account after the 20th of every month. As an affiliate, you’ll earn commission when your referred clients trade on options and multipliers. To earn from your clients' MT5 trades, you'll need to sign up as an introducing broker. (see <0>How do I sign up as an introducing broker (IB)?)", + "-153186758": "We'll credit your commission for the previous month into your trading account after the 20th of every month. You’ll earn a commission based on each successful referral when your referred client deposits the required minimum amount into their Deriv account.", "-817404641": "Go to <0>Reports, and select <0>Detailed activity report.", "-1204121083": "Set the duration and filters and click <0>Display report or <0>Download report.", "-2082521397": "What type of reports will I have access to?", @@ -2753,6 +2776,7 @@ "-352345777": "What are the most popular strategies for automated trading?", "-1612801567": "Deposits and withdrawals", "-1315176976": "What payment methods can I use for deposits and withdrawals?", + "-1306639327": "Payment methods", "-346303383": "You can use debit and credit cards, e-wallets, cryptocurrency wallets, and payment agents for deposits and withdrawals (see our <0>payment methods page for a complete list). Once you log in to your Deriv account, you’ll be able to see payment methods available in your country on the <1>Cashier page.", "-1547685378": "How long does it take for my deposits and withdrawals to be processed?", "-1621585740": "We process your deposits and withdrawals internally within 24 hours (depending on your payment method and internal checks). It may take longer for your funds to reach you due to the different processing times by banks and payment service providers. See our <0>Payment methods page for a complete list of the processing times for each payment method.", @@ -2854,6 +2878,7 @@ "-221487154": "For example,", "-441341442": "If you already have an active ad with a minimum order limit of 10 USD and a maximum order limit of 50 USD, you can't have another active ad with a minimum order limit of 40 USD and a maximum order limit of 100 USD because the range overlaps with the first ad.", "-440154832": "<0>Deriv Trader is one of our trading platforms. It offers multipliers on a variety of assets in financial and synthetic markets.", + "-663862998": "Markets", "-1952371760": "Contracts", "-1278591610": "You can trade multipliers on Deriv Trader.", "-830065103": "These contracts are available on Deriv Trader:", @@ -2885,6 +2910,7 @@ "-1282647933": "To deposit funds into your Deriv X account, you’ll need to transfer the funds from your Deriv account to your Deriv X account. Go to Cashier, click <0>Transfer, and follow the instructions on the screen.", "-213523513": "Transfers are instant. Once you’ve completed all the steps, your Deriv X account balance will be updated.", "-1170098215": "After the withdrawal is fully processed from the respective payment method, your funds will be deposited into your personal account. You can check processing times on our <0>Payment methods page.", + "-1879666853": "Deriv MT5", "-1663990628": "Deriv MT5 is a CFD trading platform that gives you access to forex, stocks, stock indices, commodities, cryptocurrencies, and derived indices. Learn more about Deriv MT5 <0>here.", "-2103351541": "Deriv MT5 is a CFD trading platform that gives you access to forex, stocks, stock indices, commodities, cryptocurrencies, and derived. Learn more about Deriv MT5 <0>here.", "-1288798840": "What are the main differences between your digital options and CFD platforms?", @@ -3026,6 +3052,7 @@ "-442294935": "Discover DTrader now", "-215905387": "DBot", "-632890841": "Dbot for auto trading", + "-981017278": "Automated trading at your fingertips. No coding needed.", "-1808797601": "Discover Deriv MT5 now", "-255994121": "Trade on the Deriv MT5 platform, the choice of professionals.", "-1793883644": "Trade FX and CFDs on a customisable, easy-to-use trading platform.", @@ -3033,13 +3060,32 @@ "-279398477": "Trade the world’s markets on <0>Binary.com’s classic platform.", "-1781881664": "Check out our other platform", "-2130720993": "Check out our other platforms", + "-1825471709": "A whole new trading experience on a powerful yet easy to use platform.", + "-204498543": "Trade with leverage and tight spreads for better returns on successful trades.", + "-2115275974": "CFDs", "-41978244": "Options trade type", + "-910437768": "Earn a range of payouts without risking more than your initial stake.", "-130611510": "Multipliers trade type", + "-622923303": "Trade on Deriv MT5, the all-in-one CFD trading platform.", + "-1278432184": "A highly customisable and easy-to-use CFD trading platform.", + "-1109694579": "Trade multipliers on forex, cryptocurrencies, and synthetic indices with our mobile app.", + "-319687255": "Deriv GO", + "-1246992539": "Binary Bot", + "-58704987": "Trade the world’s largest financial market with popular forex pairs.", "-1308346982": "Derived", + "-260024315": "Predict broader market trends and diversify your risk with stocks & indices.", + "-34495732": "Regulatory information", "-543115239": "why choose us", + "-737399162": "Partnership programmes", "-576138563": "contact us", + "-1829383827": "Contact us", "-244722850": "careers", + "-1236814682": "Deriv life", + "-1642457320": "Help centre", + "-1718500720": "Community", "-1951335212": "traders’ tools", + "-1668315223": "Traders’ tools", + "-1639500260": "Deriv MT5 Signals", "-1072344765": "blog", "-1467371190": "Didn't receive your email?", "-110978957": "Minus", @@ -3047,8 +3093,11 @@ "-667423170": "arrow", "-1342720542": "Enjoy trading asset prices derived from real-world
or simulated markets.", "-269790876": "partners", + "-787291267": "Status page", + "-2045194514": "Secure and responsible trading", "-23722102": "Partner", "-1750297019": "affiliates and IBs", + "-890622347": "Affiliates and IBs", "-1433497542": "payment agents", "-1153226820": "bug bounty", "-199351188": "Bug bounty", @@ -3067,20 +3116,32 @@ "-1307341240": "extra info icon", "-1244234227": "Digital options allow you to predict the outcome from two possible results and earn a fixed payout if your prediction is correct.", "-1070571484": "Digital options available on Deriv", - "-819894788": "Deriv Investments (Europe) Limited is licensed and regulated by the Malta Financial Services Authority under the Investment Services Act <0>(licence). Deriv.com Limited is the holding company for the above subsidiary with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ.", - "-99908951": "Please read our <0>Terms and conditions,<1> Risk disclosure, and <2>Secure and responsible trading to fully understand the risks involved before using our services. The information on this website does not constitute investment advice.", + "-223886724": "Our principles", + "-145462920": "Deriv cTrader", + "-1086253633": "SUPPORT", + "-810716123": "Deriv Blog", + "-634625185": "Terms & conditions", + "-258641121": "Deriv Prime", "-1353183095": "CFDs and other products offered on this website are complex instruments with high risk of losing money rapidly owing to leverage. You should consider whether you understand how these products work and whether you can afford to risk losing your money.", + "-1898146227": "get it on google play", "-773544978": "Home", "-1793603559": "Locations", - "-1871016038": "Deriv Careers", "-1174851024": "Explore jobs", - "-53881046": "deriv-logo", - "-674205520": "Affiliate log in", - "-1547132756": "Affiliate sign up", - "-1788474476": "Affiliate & IB sign up", + "-167548267": "Trade with leverage, unbeatable spreads, and fast execution on the widest range of markets.", + "-1416031190": "Trade diverse vanilla and exotic options across platforms and markets without risking more than your initial stake.", + "-591857861": "The most popular and comprehensive CFDs platform.", + "-2055020841": "User-friendly and customisable CFDs platform.", + "-1123792363": "Options trading platform with easy navigation.", + "-1098228973": "Major, minor, and exotic currency pairs.", + "-1120049888": "Leading company stocks and top global indices.", + "-1960027144": "Diverse exchange-traded funds for broad market exposure.", + "-1939560439": "Traders' tools", + "-1124845179": "Open demo account", + "-1154249172": "Deriv API", "-373212993": "Deriv website", "-1151648694": "Google account sign in page", "-1753467119": "Facebook account sign in page", + "-1845318986": "Facebook", "-1816672668": "Please enter your corporate email.", "-1387776242": "Please enter your full name.", "-115645240": "Please enter your mobile number.", @@ -3216,8 +3277,6 @@ "-187586473": "Trade forex", "-828546225": "Trade cryptocurrencies", "-904662996": "Trade commodities", - "-1120049888": "Leading company stocks and top global indices.", - "-1960027144": "Diverse exchange-traded funds for broad market exposure.", "-550487473": "Trade ETFs", "-1580384961": "Deriv Prime is the institutional arm of Deriv Group, and staying true to its guiding principles, effectively democratises liquidity provision to financial institutions.", "-1895596299": "- Investment funds", @@ -3326,7 +3385,7 @@ "-2048678807": "DBot Trading | Auto Trading Robot | Deriv", "-490244393": "pre-built strategies included", "-410563285": "Start with a popular strategy", - "-1612626587": "Martingale, D'Alembert, and Oscar's Grind — load and customise proven strategies or create your own from scratch.", + "-2090265979": "Martingale, D'Alembert, Oscar's Grind, and more — load and customise proven strategies or create your own from scratch.", "-1171659940": "Build your strategy visually", "-1855708032": "Simply drag, drop, and configure pre-built blocks and indicators onto a canvas to build your bot. No coding needed.", "-1502830211": "Increase your profits", @@ -3841,7 +3900,6 @@ "-1356010780": "Implement policies to prevent vulnerable persons from trading", "-1186213423": "We will refuse underage persons’ access and implement processes to identify customers who are trading beyond their financial capacity.", "-220003669": "We will implement know-your-customer (KYC) controls and prevent money laundering and other unlawful activities on our platforms.", - "-223886724": "Our principles", "-586716383": "Our principles | Deriv", "-141169956": "Deriv P2P – peer-to-peer deposit and withdrawal service", "-1451760391": "With Deriv P2P your deposits and withdrawals are easy, fast, and efficient. Access now via the desktop or mobile app.", @@ -3915,7 +3973,7 @@ "-1735413007": "A trading expert or someone who can provide tips and opinions on online trading sites.", "-486221103": "A referred client is the customer who signed up using your tracking link. Once they start trading on our platforms with real money, you will stand to earn commissions from the trades placed by them.", "-1629979446": "How and when will I receive my Deriv affiliate commissions?", - "-1554471493": "Commissions are paid out around the 15th of every month into your selected payment method.", + "-1675671577": "We’ll deposit your commissions directly into your account as soon as practicable after the 20th of every month.", "-1940955647": "Please note that we will not credit your commission if you did not set any payment method or if it is below your desired payment threshold.", "-330627599": "I forgot my account password. What should I do?", "-1843624113": "live chat.", @@ -4111,9 +4169,6 @@ "-2121510827": "Sweden", "-1357648282": "For fair resolution of any complaints, please <0>chat with us. To learn more, see our <1>complaint policy.", "-1838458999": "For fair resolution of any complaints, please <0>chat with us.", - "-1131400885": "Deriv Investments (Europe) Limited", - "-1231248751": "Deriv Investments (Europe) Limited (Company No. C 70156), incorporated on the 22nd April 2015, is registered in Malta with its registered office located at Level 3, W Business Centre, Triq Dun Karm, Birkirkara BKR9033, Malta. Deriv Investments (Europe) Ltd is licensed in Malta and regulated by the Malta Financial Services Authority under the Investments Services Act <0>(view licence) to provide investment services.", - "-2051445931": "Clients in the European Union who wish to trade financial instruments can have accounts under Deriv Investments (Europe) Limited.", "-1446148261": "CFDs - Forex", "-1121949345": "CFDs - Stock indices", "-33096025": "CFDs - Cryptocurrencies", @@ -4121,6 +4176,9 @@ "-1238176624": "CFDs - Synthetics: Volatility 250 (1s) Index", "-1076679821": "Multipliers - Cryptocurrencies", "-812435767": "Multipliers - Synthetics: Crash 300 Index", + "-1131400885": "Deriv Investments (Europe) Limited", + "-1231248751": "Deriv Investments (Europe) Limited (Company No. C 70156), incorporated on the 22nd April 2015, is registered in Malta with its registered office located at Level 3, W Business Centre, Triq Dun Karm, Birkirkara BKR9033, Malta. Deriv Investments (Europe) Ltd is licensed in Malta and regulated by the Malta Financial Services Authority under the Investments Services Act <0>(view licence) to provide investment services.", + "-2051445931": "Clients in the European Union who wish to trade financial instruments can have accounts under Deriv Investments (Europe) Limited.", "-112814932": "Deriv (FX) Ltd", "-1269257733": "Clients in the rest of the world (except for restricted countries such as the USA, Canada, and Hong Kong) who wish to trade CFDs on forex and cryptocurrencies can have MT5 Financial STP accounts under Deriv (FX) Ltd.", "-2019617323": "Deriv (BVI) Ltd", @@ -4156,8 +4214,60 @@ "-880201385": "info", "-771133354": "For more details on our products and the risks involved in online trading, read our <0>key information documents (KIDs) on forex, stocks, stock indices, commodities, synthetic indices, and cryptocurrencies.", "-466084206": "Read our guidelines on secure and responsible trading. Understand the risks involved in online trading and how you can manage them.", - "-706927392": "Important Guidelines", - "-2086585870": "Partners Guide", + "-333013269": "Personal address", + "-794179340": "Company address", + "-136976514": "Country of residence*", + "-1474274516": "State/province*", + "-1253349870": "Town/city*", + "-1120954663": "First name*", + "-1929304521": "Website/social media URL*", + "-1113902570": "Details", + "-303056592": "Affiliate account details", + "-1441847447": "Earn based on the monthly net revenue generated by your client. <0>Learn more", + "-1674476166": "Earn based on each successful referral. <0>Learn more", + "-63489872": "<0>Note: This plan is available exclusively for EU-based clients only.", + "-2068229627": "I am not a PEP, and I have not been a PEP in the last 12 months.", + "-1841395447": "I have read and accepted <0>Deriv’s terms and conditions", + "-412683223": "I have read and accepted <0>Deriv’s general terms of use and affiliates and introducing brokers’ terms and conditions", + "-1805422644": "I consent to receive promotional materials and notifications regarding your partnership program.", + "-925958201": "Individual", + "-1468933628": "Register for an individual account.", + "-2147340077": "Company", + "-1412113272": "Register for a company account.", + "-1808676023": "Deriv Affiliate", + "-1918023753": "Our introducing broker programme is available to all Deriv affiliates. Earn commission from your clients' trades on Deriv's CFD trading platforms.", + "-498923246": "Want to sign up as a trader?", + "-1760596315": "Create a Deriv account", + "-573454478": "User name", + "-1986150937": "Thank you for signing up", + "-1598032031": "Your application has been received. We’re processing your application. You can expect to hear back from us within 3 to 5 business days.", + "-2017825013": "Got it", + "-1588894283": "Are you sure you want to cancel your registration?", + "-1057336268": "No, continue", + "-1830091000": "Username already exists. Please enter another:", + "-260364285": "Change username", + "-830224473": "Your website is not a valid entry. Please enter another:", + "-1129605560": "Change website url", + "-1754713622": "Step 1 : Account type (1 of 5)", + "-1691254967": "Step 2 : Subscription plan (2 of 5)", + "-1085862265": "Subscription plan", + "-730447440": "Address details", + "-1823540512": "Personal details", + "-1130147753": " Details", + "-990526713": "Step 5 : Terms of use (5 of 5)", + "-204765990": "Terms of use", + "-1541554430": "Next", + "-26610045": "Add an affiliate account", + "-435672026": "Wrong email", + "-265889213": "Empty input not available", + "-1787546919": "You should enter ${min_digit}-${max_digit} characters.", + "-442533603": "Incorrect company name", + "-840841662": "Only Latin characters", + "-1430656728": "Password is required", + "-1049534775": "Please enter a valid postcode with Latin characters.", + "-420140433": "Company registration number is required", + "-1857429287": "Last Name", + "-1702877392": "Important guidelines", "-776458472": "General terms of use", "-2083825503": "Affiliates & introducing brokers (IBs)", "-28284335": "Additional terms for our affiliates and introducing brokers", @@ -4210,6 +4320,9 @@ "-943253121": "The term ‘margin’ refers to the deposit needed to open a leveraged position, which is a position larger than your capital investment and leads to increased market exposure.", "-339497727": "Trade types margin market", "-1009744297": "Use our margin calculator to calculate the margin required to increase your market exposure (the market value of your position) on Deriv’s CFD trading platforms.", + "-1603400333": "Open a demo CFDs account and practise with an unlimited amount of virtual funds.", + "-446423672": "Open a demo Deriv MT5, Deriv X, or Deriv cTrader account and practise with an unlimited amount of virtual funds.", + "-1978157334": "Trade with a real Deriv MT5, Deriv X, or Deriv cTrader account and get access to high leverage to trade positions larger than your existing capital.", "-1207172200": "Start trading CFDs on Deriv", "-1703690406": "When you trade CFDs on margin, you increase your market exposure, thus amplifying both your potential profit and potential loss.", "-843831637": "Stop loss", @@ -4246,8 +4359,6 @@ "-894512007": "favourite markets icon", "-252740007": "instant access icon", "-1156092900": "flexible icon", - "-1603400333": "Open a demo CFDs account and practise with an unlimited amount of virtual funds.", - "-1242544018": "Trade with a real Deriv MT5 or real Deriv X account and get access to high leverage to trade positions larger than your existing capital.", "-544150655": "Markets available for margin trading", "-867909844": "Access over 30 assets and also trade with up to 1:30 leverage and zero commission on trades.", "-309438223": "Trade synthetic indices on margin 24/7 without being affected by natural events and liquidity risks.", @@ -4371,7 +4482,6 @@ "-470690579": "Stop loss and take profit for multipliers", "-1217327947": "Try multipliers calculator", "-1382112538": "PnL multipliers", - "-1939560439": "Traders' tools", "-626406870": "right arrow", "-66889773": "Our margin calculator helps you to estimate the margin required to keep your positions open overnight on Deriv MT5.", "-1788261316": "Margin required", diff --git a/gatsby-browser.js b/gatsby-browser.js index 2d680539170..37efbcdb2eb 100644 --- a/gatsby-browser.js +++ b/gatsby-browser.js @@ -15,9 +15,11 @@ import { getLanguage, updateURLAsPerUserLanguage, } from 'common/utility' -import './static/css/ibm-plex-sans-var.css' import './static/css/noto-sans-arabic.css' import './static/css/ubuntu.css' +import './static/css/global.css' +import '@deriv-com/blocks/style.css' +import '@deriv-com/components/style.css' const is_browser = typeof window !== 'undefined' @@ -91,8 +93,7 @@ export const onClientEntry = () => { Analytics?.initialise({ growthbookKey: process.env.GATSBY_GROWTHBOOK_CLIENT_KEY, growthbookDecryptionKey: process.env.GATSBY_GROWTHBOOK_DECRYPTION_KEY, - enableDevMode: window?.location.hostname.includes('localhost'), - rudderstackKey: ['.pages.dev', 'git-fork', 'localhost'].some((condition) => + rudderstackKey: ['.pages.dev', 'git-fork', 'localhost', 'staging'].some((condition) => window.location.hostname.includes(condition), ) ? process.env.GATSBY_RUDDERSTACK_STAGING_KEY @@ -104,8 +105,7 @@ export const onClientEntry = () => { device_language: navigator?.language || ' ', device_type: isMobile ? 'mobile' : 'desktop', }) - const { tracking } = Analytics.getInstances() - tracking.identifyEvent(Analytics?.getId(), { language: getLanguage() }) + Analytics?.identifyEvent() //datadog const dd_options = { clientToken: process.env.GATSBY_DATADOG_CLIENT_TOKEN, diff --git a/gatsby-config.js b/gatsby-config.js index 66d97899414..f0b9729d8b1 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -56,6 +56,7 @@ module.exports = { // // precachePages: [`/`], // }, // }, + 'gatsby-plugin-postcss', { resolve: 'gatsby-plugin-sass', options: { diff --git a/gatsby-node.js b/gatsby-node.js index 2a22e22c3db..75a5d4fbaae 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -10,12 +10,9 @@ exports.onPreBuild = async () => { await copyLibFiles(path.join(__dirname, 'static', '~partytown')) } // Based upon https://github.com/gatsbyjs/gatsby/tree/master/examples/using-i18n -exports.onCreatePage = ({ page, actions }) => { - const { createRedirect, createPage, deletePage } = actions - // First delete the incoming page that was automatically created by Gatsby - // So everything in src/pages/ - deletePage(page) +const BuildPage = (page, actions) => { + const { createRedirect, createPage } = actions const is_responsible_trading = /responsible/g.test(page.path) const is_contact_us = /contact_us/g.test(page.path) const is_careers = /careers/g.test(page.path) @@ -349,6 +346,48 @@ exports.onCreatePage = ({ page, actions }) => { return current_page }) } +exports.onCreatePage = ({ page, actions }) => { + const { deletePage } = actions + const isProduction = process.env.GATSBY_ENV === 'production' + const pagesToBuild = process.env.GATSBY_BUILD_PAGES || 'all' + + // First delete the incoming page that was automatically created by Gatsby + // So everything in src/pages/ + deletePage(page) + + const pagesCategory = { + all: [''], + 'no-affiliates': ['signup-affiliates', 'landing', 'ctrader', 'partners'], + 'no-help-centre': ['help-centre'], + 'no-tools': ['trader-tools'], + fast: [ + 'signup-affiliates', + 'landing', + 'ctrader', + 'partners', + 'help-centre', + 'trader-tools', + 'careers', + // 'markets', + // 'trade-types' Note: Feel free to adjust pages you want to skip building for faster local development + ], + } + + const disallowedPages = pagesCategory[pagesToBuild] || [] + + const regex = new RegExp(`/${disallowedPages.join('|') + '|'}/g`) + + const isMatch = regex.test(page.path) + + if (isProduction) { + return BuildPage(page, actions) + } else { + if (!isMatch || pagesToBuild === 'all') { + console.log(`\x1b[32mcreating\x1b[0m [${pagesToBuild}] ${page.path}`) + return BuildPage(page, actions) + } + } +} const StylelintPlugin = require('stylelint-webpack-plugin') const TerserPlugin = require('terser-webpack-plugin') diff --git a/package-lock.json b/package-lock.json index 1b6e6d33ada..c4ecf40d145 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,141 +9,152 @@ "version": "0.1.0", "license": "Apache License 2.0", "dependencies": { - "@artsy/fresnel": "^6.1.0", + "@artsy/fresnel": "^6.2.1", "@builder.io/partytown": "^0.8.1", - "@deriv/analytics": "^1.3.4", - "@deriv/deriv-api": "^1.0.11", - "@hookform/resolvers": "^3.0.1", - "@livechat/customer-sdk": "^3.1.0", - "@loadable/component": "^5.15.2", - "@radix-ui/react-accordion": "^1.1.0", - "@radix-ui/react-alert-dialog": "^1.0.3", - "@radix-ui/react-dropdown-menu": "^2.0.2", - "@radix-ui/react-navigation-menu": "^1.1.2", - "@svgr/webpack": "^8.0.1", - "@tanstack/react-table": "^8.8.5", + "@deriv-com/blocks": "^0.66.0", + "@deriv-com/components": "^0.37.0", + "@deriv-com/hooks": "^0.10.0", + "@deriv-com/providers": "^0.10.0", + "@deriv/analytics": "^1.4.3", + "@deriv/deriv-api": "^1.0.13", + "@deriv/quill-design": "^1.3.2", + "@deriv/quill-icons": "^1.1.5", + "@hookform/resolvers": "^3.3.2", + "@livechat/customer-sdk": "^3.1.5", + "@loadable/component": "^5.15.3", + "@radix-ui/react-accordion": "^1.1.2", + "@radix-ui/react-alert-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-navigation-menu": "^1.1.4", + "@svgr/webpack": "^8.1.0", + "@tanstack/react-table": "^8.10.7", "@vercel/gatsby-plugin-vercel-builder": "^0.1.2", "cli-select": "^1.1.2", "clsx": "^1.2.1", "commander": "^8.3.0", - "crc-32": "^1.2.0", + "crc-32": "^1.2.2", "cssnano": "^5.1.15", "deriv-api-ts": "^1.0.7", "embla-carousel-autoplay": "^6.2.0", "embla-carousel-react": "8.0.0-rc11", - "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-node": "^0.3.9", "extend": "^3.0.2", - "firebase": "^9.22.1", - "formik": "^2.2.9", - "gatsby": "^5.11.0", + "firebase": "^9.23.0", + "formik": "^2.4.5", + "gatsby": "^5.12.11", "gatsby-plugin-anchor-links": "^1.2.1", - "gatsby-plugin-canonical-urls": "^5.11.0", + "gatsby-plugin-canonical-urls": "^5.12.0", "gatsby-plugin-image": "3.11.0", - "gatsby-plugin-manifest": "^5.11.0", + "gatsby-plugin-manifest": "^5.12.3", "gatsby-plugin-robots-txt": "^1.8.0", - "gatsby-plugin-sass": "^6.11.0", - "gatsby-plugin-sharp": "^5.11.0", - "gatsby-plugin-sitemap": "^6.11.0", + "gatsby-plugin-sass": "^6.12.3", + "gatsby-plugin-sharp": "^5.12.3", + "gatsby-plugin-sitemap": "^6.12.3", "gatsby-plugin-svgr": "^3.0.0-beta.0", "gatsby-plugin-use-query-params": "^1.0.1", - "gatsby-source-filesystem": "^5.11.0", + "gatsby-source-filesystem": "^5.12.1", "gatsby-source-strapi": "^3.3.1", - "gatsby-transformer-sharp": "^5.11.0", - "i18next": "^21.6.5", + "gatsby-transformer-sharp": "^5.12.3", + "i18next": "^21.10.0", "install": "^0.13.0", "js-cookie": "^2.2.1", - "lottie-web": "^5.8.1", + "lottie-web": "^5.12.2", "match-sorter": "^6.3.1", - "npm": "^9.6.2", + "npm": "^9.9.2", "p-min-delay": "^4.0.2", - "postcss": "^8.4.5", "postcss-discard-duplicates": "^5.1.0", "postcss-ts-classnames": "^0.3.0", "prompt-sync": "^4.2.0", "prop-types": "^15.8.1", "react": "^18.2.0", + "react-date-picker": "8.4.0", "react-device-detect": "^2.2.2", "react-dom": "^18.2.0", - "react-hook-form": "^7.43.9", - "react-i18next": "^11.15.3", - "react-intersection-observer": "^9.4.3", + "react-hook-form": "^7.48.2", + "react-i18next": "^11.18.6", + "react-intersection-observer": "^9.5.3", "react-is": "^17.0.2", "react-ticker": "^1.3.2", "react-tiny-popover": "^7.2.4", "remove": "^0.1.5", - "rxjs": "^7.8.0", - "sass": "^1.58.3", - "swiper": "^9.1.1", + "rxjs": "^7.8.1", + "sass": "^1.69.5", + "swiper": "^9.4.1", "use-query-params": "^1.2.3", "usehooks-ts": "^2.9.1", - "webpack": "^5.65.0", - "yup": "^1.0.2" + "webpack": "^5.89.0", + "yup": "^1.3.2" }, "devDependencies": { - "@commitlint/cli": "^16.2.1", - "@commitlint/config-conventional": "^16.2.1", - "@deriv/api-types": "^1.0.94", - "@graphql-codegen/cli": "^2.6.2", - "@graphql-codegen/typescript": "^2.4.5", - "@graphql-codegen/typescript-operations": "^2.3.2", - "@loadable/babel-plugin": "^5.15.3", + "@commitlint/cli": "^16.3.0", + "@commitlint/config-conventional": "^16.2.4", + "@deriv/api-types": "^1.0.137", + "@graphql-codegen/cli": "^2.16.5", + "@graphql-codegen/typescript": "^2.8.8", + "@graphql-codegen/typescript-operations": "^2.5.13", + "@loadable/babel-plugin": "^5.16.1", + "@parcel/watcher": "^2.3.0", "@storybook/addon-actions": "^6.4.9", - "@storybook/addon-essentials": "^6.4.9", - "@storybook/addon-links": "^6.4.9", - "@storybook/builder-webpack5": "^6.4.9", - "@storybook/manager-webpack5": "^6.4.9", - "@storybook/react": "^6.4.9", + "@storybook/addon-essentials": "^6.5.16", + "@storybook/addon-links": "^6.5.16", + "@storybook/builder-webpack5": "^6.5.16", + "@storybook/manager-webpack5": "^6.5.16", + "@storybook/react": "^6.5.16", "@stylelint/postcss-css-in-js": "^0.38.0", - "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.4.3", - "@types/jest": "^29.5.3", - "@types/js-cookie": "^3.0.3", - "@types/node": "^20.4.8", - "@types/react": "^18.2.18", - "@types/react-dom": "^18.2.7", - "@types/react-test-renderer": "^18.0.0", - "@types/styled-components": "^5.1.26", - "@typescript-eslint/eslint-plugin": "^5.9.0", - "@typescript-eslint/parser": "^5.9.0", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.1", + "@types/jest": "^29.5.10", + "@types/js-cookie": "^3.0.6", + "@types/node": "^20.10.0", + "@types/react": "^18.2.38", + "@types/react-dom": "^18.2.17", + "@types/react-test-renderer": "^18.0.7", + "@types/styled-components": "^5.1.32", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "autoprefixer": "^10.4.16", "babel-eslint": "10.1.0", - "babel-jest": "^29.5.0", - "babel-plugin-styled-components": "^2.0.2", + "babel-jest": "^29.7.0", + "babel-plugin-styled-components": "^2.1.4", "babel-preset-gatsby": "^2.25.0", "eslint": "^7.32.0", "eslint-loader": "^4.0.2", - "eslint-plugin-deprecation": "^1.3.2", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.5.0", - "eslint-webpack-plugin": "^3.1.1", + "eslint-plugin-deprecation": "^1.5.0", + "eslint-plugin-import": "^2.29.0", + "eslint-plugin-jest": "^27.6.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-webpack-plugin": "^3.2.0", "gatsby-plugin-env-variables": "^2.3.0", - "gatsby-plugin-eslint": "^4.0.2", - "gatsby-plugin-styled-components": "^6.11.0", - "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.31", + "gatsby-plugin-eslint": "^4.0.4", + "gatsby-plugin-postcss": "^6.12.0", + "gatsby-plugin-styled-components": "^6.12.0", + "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.32", "gh-pages": "^3.2.3", "husky": "^7.0.4", "identity-obj-proxy": "^3.0.0", - "jest": "^29.5.0", + "jest": "^29.7.0", "jest-chain": "^1.1.6", - "jest-config": "^29.5.0", - "jest-environment-jsdom": "^29.5.0", - "jest-extended": "^4.0.0", - "lint-staged": "^12.1.5", + "jest-config": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "jest-extended": "^4.0.2", + "lint-staged": "^12.5.0", "npm-force-resolutions": "0.0.10", - "prettier": "^2.5.1", - "query-string": "^7.0.1", + "postcss": "^8.4.31", + "prettier": "^2.8.8", + "query-string": "^7.1.3", "react-test-renderer": "^18.2.0", - "styled-components": "^5.3.3", - "stylelint": "^14.2.0", - "stylelint-config-prettier": "^9.0.3", + "styled-components": "^5.3.11", + "stylelint": "^14.16.1", + "stylelint-config-prettier": "^9.0.5", "stylelint-config-standard": "^24.0.0", "stylelint-config-styled-components": "^0.1.1", "stylelint-processor-styled-components": "^1.10.0", - "stylelint-webpack-plugin": "^3.1.0", - "typescript": "^4.5.4", - "typescript-plugin-css-modules": "^4.2.2" + "stylelint-webpack-plugin": "^3.3.0", + "tailwindcss": "^3.3.5", + "typescript": "^5.3.2", + "typescript-plugin-css-modules": "^4.2.3" }, "engines": { "node": "18.x", @@ -164,6 +175,18 @@ "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -2445,6 +2468,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, "optional": true, "engines": { "node": ">=0.1.90" @@ -2756,6 +2780,19 @@ "node": ">=8" } }, + "node_modules/@commitlint/load/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/@commitlint/message": { "version": "16.2.1", "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-16.2.1.tgz", @@ -2966,10 +3003,30 @@ "postcss-selector-parser": "^6.0.10" } }, + "node_modules/@deriv-com/blocks": { + "version": "0.66.0", + "resolved": "https://npm.pkg.github.com/download/@deriv-com/blocks/0.66.0/1f7dbb4bb03dcf0f1fd4f6a5225dd1b9db069f10", + "integrity": "sha512-0w8eBFlEV72pmumTV9nHjcBpeym3gvgbbBq5XCNDCz025l5uDbjKx/V8gxw8jiRNvqfWsq0KpCxfZ3Knxpt7hw==" + }, + "node_modules/@deriv-com/components": { + "version": "0.37.0", + "resolved": "https://npm.pkg.github.com/download/@deriv-com/components/0.37.0/6bc9cc289ed7471e58639e164dc3723dd091361d", + "integrity": "sha512-nPFy1cNaS66fzNko7AGPCm81qoi91KJEdF4rSXL+/HWHnlyCv9IxI02C6gGM52pd2OuaDRsFhzUM3V9dbFVw/A==" + }, + "node_modules/@deriv-com/hooks": { + "version": "0.10.0", + "resolved": "https://npm.pkg.github.com/download/@deriv-com/hooks/0.10.0/8e9f71a103b896618566a4505f74c93de107ecc6", + "integrity": "sha512-8BpA5OPjaFx55LDp6BFhqW6gBsP63X7E4GstdD1HAh8h9Dy1tq6nztJC0bSY9O9tjAZ0/hFrshGALv2L9ak6Sw==" + }, + "node_modules/@deriv-com/providers": { + "version": "0.10.0", + "resolved": "https://npm.pkg.github.com/download/@deriv-com/providers/0.10.0/8e77bc95f5058c59ba665e58585091f270e4d94b", + "integrity": "sha512-FE40EqmS6cmi4JWQurThE/mQDZesg6iBDRfTTwE5YKnc4w+2EqsO8Eigm4vO79elV3iUkvLLeU5Eawv66uwzqQ==" + }, "node_modules/@deriv/analytics": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@deriv/analytics/-/analytics-1.4.4.tgz", - "integrity": "sha512-brMCtAel5z4GOnDA32dM93buNu9obtqz6+SlzQuXnKdsonF/YaY+XjNC+rmURnV4NqTUq5nRJyIxY6h9kitsrw==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@deriv/analytics/-/analytics-1.4.6.tgz", + "integrity": "sha512-KpWjnqXs1S2bPenfyBlVMeP1vOj68XCe+2gOTvPGb/1XZ8rFat43AkqiRpdxngMIklPsHxjxT/cMyy/eBRtLBw==", "dependencies": { "@growthbook/growthbook": "^0.29.0", "rudder-sdk-js": "^2.35.0" @@ -2980,9 +3037,9 @@ } }, "node_modules/@deriv/api-types": { - "version": "1.0.141", - "resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.141.tgz", - "integrity": "sha512-Q/7bm4Xc/nD4djvBXGdPCbY5Tr/Ce7KM6wVJtYn8pTtW5bdVDffAk9i0DdgFh66gZeTL4IPQ9CwcZOcpvuXrrw==" + "version": "1.0.144", + "resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.144.tgz", + "integrity": "sha512-hlEH95LHZHmPft+K1Edi+XmI5PVBnWtL6FvaLWxb6uirbjpKZ+ZFnuY9zqdg63BcbG1ZhQCjb5opzK5zzFyReQ==" }, "node_modules/@deriv/deriv-api": { "version": "1.0.13", @@ -3010,6 +3067,31 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@deriv/quill-design": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@deriv/quill-design/-/quill-design-1.3.2.tgz", + "integrity": "sha512-YTM2jS0EJ6QaruciFX/yYFK50KbmYpWK+WwZRGgZnRuhCJD9pXcsAtQEjMHFRFUFUC3sEvB5wR4cPt5VUW0xAw==", + "peerDependencies": { + "@deriv/quill-icons": "^1.1.3", + "@headlessui/react": "^1.7.17", + "@types/react": "^17.x || ^18.x", + "@use-gesture/react": "^10.3.0", + "class-variance-authority": "^0.7.0", + "react": "^17.x || ^18.x", + "react-dom": "^17.x || ^18.x", + "tailwind-merge": "^1.14.0", + "usehooks-ts": "^2.9.1" + } + }, + "node_modules/@deriv/quill-icons": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@deriv/quill-icons/-/quill-icons-1.1.5.tgz", + "integrity": "sha512-Ze5qr9ZG3UGb+99612HV2gyscE/42Kg6UiHoXQxqWqhqKEzfisiDydiVO9e0yalQ4X/YTgELXTurff8lxH6WJQ==", + "peerDependencies": { + "react": ">= 16", + "react-dom": ">= 16" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -3064,51 +3146,6 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", "dev": true }, - "node_modules/@esbuild/android-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", - "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", - "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", - "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.16.17", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", @@ -3124,276 +3161,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", - "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", - "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", - "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", - "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", - "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", - "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", - "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", - "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", - "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", - "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", - "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", - "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", - "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", - "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", - "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", - "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", - "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -4156,9 +3923,9 @@ "integrity": "sha512-Dq5rYfEpdeel0bLVN+nfD1VWmzCkK+pJbSjIawGE+RY4+NIJqhbUDDQjvV0NUK84fMfwxvtFoCtEe70HfZjFcw==" }, "node_modules/@floating-ui/core": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.1.tgz", - "integrity": "sha512-QgcKYwzcc8vvZ4n/5uklchy8KVdjJwcOeI+HnnTNclJjs2nYsy23DOCf+sSV1kBwD9yDAoVKCkv/gEPzgQU3Pw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", "dependencies": { "@floating-ui/utils": "^0.1.3" } @@ -4192,7 +3959,8 @@ "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@gatsbyjs/parcel-namer-relative-to-cwd": { "version": "2.12.1", @@ -5268,6 +5036,22 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@headlessui/react": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.17.tgz", + "integrity": "sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==", + "peer": true, + "dependencies": { + "client-only": "^0.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, "node_modules/@hookform/resolvers": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.3.2.tgz", @@ -7286,9 +7070,9 @@ } }, "node_modules/@livechat/platform-client/node_modules/@livechat/data-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@livechat/data-utils/-/data-utils-1.0.3.tgz", - "integrity": "sha512-Ao0b6UMxJ1CmqRhFjMsd2n6gM4fmfbwe2gZTbTLdvU2u5OQHj008T20mjQ+NOPwbcT+8dMj8wF5TrftMu4oA1w==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@livechat/data-utils/-/data-utils-1.0.4.tgz", + "integrity": "sha512-LhSgNVrNqfa37pajGCv96jvsEwuUKoTmb4NXLr2Mk4gN2YYYkmqzHWqGAcGzENFeSar4R/P3LohZO8tkbmnb6g==" }, "node_modules/@livechat/promise-try": { "version": "0.1.0", @@ -7318,9 +7102,9 @@ } }, "node_modules/@livechat/url-utils/node_modules/@livechat/data-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@livechat/data-utils/-/data-utils-1.0.3.tgz", - "integrity": "sha512-Ao0b6UMxJ1CmqRhFjMsd2n6gM4fmfbwe2gZTbTLdvU2u5OQHj008T20mjQ+NOPwbcT+8dMj8wF5TrftMu4oA1w==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@livechat/data-utils/-/data-utils-1.0.4.tgz", + "integrity": "sha512-LhSgNVrNqfa37pajGCv96jvsEwuUKoTmb4NXLr2Mk4gN2YYYkmqzHWqGAcGzENFeSar4R/P3LohZO8tkbmnb6g==" }, "node_modules/@livechat/websocket-manager": { "version": "0.1.1", @@ -7344,66 +7128,6 @@ "darwin" ] }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.3.tgz", - "integrity": "sha512-337dNzh5yCdNCTk8kPfoU7jR3otibSlPDGW0vKZT97rKnQMb9tNdto3RtWoGPsQ8hKmlRZpojOJtmwjncq1MoA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.3.tgz", - "integrity": "sha512-mU2HFJDGwECkoD9dHQEfeTG5mp8hNS2BCfwoiOpVPMeapjYpQz9Uw3FkUjRZ4dGHWKbin40oWHuL0bk2bCx+Sg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.3.tgz", - "integrity": "sha512-VJw60Mdgb4n+L0fO1PqfB0C7TyEQolJAC8qpqvG3JoQwvyOv6LH7Ib/WE3wxEW9nuHmVz9jkK7lk5HfWWgoO1Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.3.tgz", - "integrity": "sha512-qaReO5aV8griBDsBr8uBF/faO3ieGjY1RY4p8JvTL6Mu1ylLrTVvOONqKFlNaCwrmUjWw5jnf7VafxDAeQHTow==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz", - "integrity": "sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@loadable/babel-plugin": { "version": "5.16.1", "resolved": "https://registry.npmjs.org/@loadable/babel-plugin/-/babel-plugin-5.16.1.tgz", @@ -7619,66 +7343,6 @@ "darwin" ] }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@mswjs/cookies": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", @@ -7782,6 +7446,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -7791,6 +7456,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -7802,6 +7468,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -7815,13 +7482,15 @@ "node_modules/@npmcli/fs/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -7834,6 +7503,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -7900,66 +7570,6 @@ "darwin" ] }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@parcel/cache/node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@parcel/cache/node_modules/lmdb": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", @@ -10696,9 +10306,9 @@ "dev": true }, "node_modules/@storybook/builder-webpack4/node_modules/@types/node": { - "version": "16.18.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.67.tgz", - "integrity": "sha512-gUa0tDO9oxyAYO9V9tqxDJguVMDpqUwH5I5Q9ASYBCso+8CUdJlKPKDYS1YSS9kyZWIduDafZvucGM0zGNKFjg==", + "version": "16.18.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", + "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==", "dev": true }, "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/ast": { @@ -10844,6 +10454,28 @@ "node": ">=0.4.0" } }, + "node_modules/@storybook/builder-webpack4/node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, "node_modules/@storybook/builder-webpack4/node_modules/braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", @@ -11381,6 +11013,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@storybook/builder-webpack4/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "node_modules/@storybook/builder-webpack4/node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -11968,9 +11606,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.18.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.67.tgz", - "integrity": "sha512-gUa0tDO9oxyAYO9V9tqxDJguVMDpqUwH5I5Q9ASYBCso+8CUdJlKPKDYS1YSS9kyZWIduDafZvucGM0zGNKFjg==", + "version": "16.18.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", + "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==", "dev": true }, "node_modules/@storybook/channel-postmessage": { @@ -12298,9 +11936,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "16.18.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.67.tgz", - "integrity": "sha512-gUa0tDO9oxyAYO9V9tqxDJguVMDpqUwH5I5Q9ASYBCso+8CUdJlKPKDYS1YSS9kyZWIduDafZvucGM0zGNKFjg==", + "version": "16.18.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", + "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==", "dev": true }, "node_modules/@storybook/core-common/node_modules/@webassemblyjs/ast": { @@ -13047,9 +12685,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.18.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.67.tgz", - "integrity": "sha512-gUa0tDO9oxyAYO9V9tqxDJguVMDpqUwH5I5Q9ASYBCso+8CUdJlKPKDYS1YSS9kyZWIduDafZvucGM0zGNKFjg==", + "version": "16.18.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", + "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==", "dev": true }, "node_modules/@storybook/core-server/node_modules/@webassemblyjs/ast": { @@ -13864,9 +13502,9 @@ "dev": true }, "node_modules/@storybook/manager-webpack4/node_modules/@types/node": { - "version": "16.18.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.67.tgz", - "integrity": "sha512-gUa0tDO9oxyAYO9V9tqxDJguVMDpqUwH5I5Q9ASYBCso+8CUdJlKPKDYS1YSS9kyZWIduDafZvucGM0zGNKFjg==", + "version": "16.18.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", + "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==", "dev": true }, "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/ast": { @@ -14585,6 +14223,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@storybook/manager-webpack4/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "node_modules/@storybook/manager-webpack4/node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -15160,9 +14804,9 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@types/node": { - "version": "16.18.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.67.tgz", - "integrity": "sha512-gUa0tDO9oxyAYO9V9tqxDJguVMDpqUwH5I5Q9ASYBCso+8CUdJlKPKDYS1YSS9kyZWIduDafZvucGM0zGNKFjg==", + "version": "16.18.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", + "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==", "dev": true }, "node_modules/@storybook/manager-webpack5/node_modules/ansi-styles": { @@ -15622,9 +15266,9 @@ } }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.18.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.67.tgz", - "integrity": "sha512-gUa0tDO9oxyAYO9V9tqxDJguVMDpqUwH5I5Q9ASYBCso+8CUdJlKPKDYS1YSS9kyZWIduDafZvucGM0zGNKFjg==", + "version": "16.18.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", + "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==", "dev": true }, "node_modules/@storybook/react/node_modules/fs-extra": { @@ -16872,9 +16516,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -17020,9 +16664,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", - "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dependencies": { "undici-types": "~5.26.4" } @@ -17114,6 +16758,14 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-calendar": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@types/react-calendar/-/react-calendar-3.9.0.tgz", + "integrity": "sha512-KpAu1MKAGFw5hNwlDnWsHWqI9i/igAB+8jH97YV7QpC2v7rlwNEU5i6VMFb73lGRacuejM/Zd2LklnEzkFV3XA==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react-dom": { "version": "18.2.17", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", @@ -17133,9 +16785,9 @@ } }, "node_modules/@types/react/node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/@types/responselike": { "version": "1.0.3", @@ -17193,9 +16845,9 @@ "dev": true }, "node_modules/@types/styled-components": { - "version": "5.1.32", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.32.tgz", - "integrity": "sha512-DqVpl8R0vbhVSop4120UHtGrFmHuPeoDwF4hDT0kPJTY8ty0SI38RV3VhCMsWigMUXG+kCXu7vMRqMFNy6eQgA==", + "version": "5.1.34", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.34.tgz", + "integrity": "sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==", "dev": true, "dependencies": { "@types/hoist-non-react-statics": "*", @@ -17204,9 +16856,9 @@ } }, "node_modules/@types/styled-components/node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, "node_modules/@types/tapable": { @@ -17589,6 +17241,24 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@use-gesture/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.0.tgz", + "integrity": "sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A==", + "peer": true + }, + "node_modules/@use-gesture/react": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.0.tgz", + "integrity": "sha512-3zc+Ve99z4usVP6l9knYVbVnZgfqhKah7sIG+PS2w+vpig2v2OLct05vs+ZXMzwxdNCMka8B+8WlOo0z6Pn6DA==", + "peer": true, + "dependencies": { + "@use-gesture/core": "10.3.0" + }, + "peerDependencies": { + "react": ">= 16.8.0" + } + }, "node_modules/@vercel/build-utils": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.9.0.tgz", @@ -18065,9 +17735,9 @@ } }, "node_modules/@whatwg-node/fetch/node_modules/@types/node": { - "version": "18.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.2.tgz", - "integrity": "sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==", + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", "dev": true, "peer": true, "dependencies": { @@ -18107,6 +17777,14 @@ "tslib": "^2.3.1" } }, + "node_modules/@wojtekmaj/date-utils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.5.1.tgz", + "integrity": "sha512-+i7+JmNiE/3c9FKxzWFi2IjRJ+KzZl1QPu6QNrsgaa2MuBgXvUy4gA1TVzf/JMdIIloB76xSKikTWuyYAIVLww==", + "funding": { + "url": "https://github.com/wojtekmaj/date-utils?sponsor=1" + } + }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", @@ -18189,9 +17867,9 @@ } }, "node_modules/acorn-globals/node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -18272,6 +17950,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -18459,6 +18138,12 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -18490,7 +18175,8 @@ "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, "node_modules/arch": { "version": "2.2.0", @@ -18515,6 +18201,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -18527,6 +18214,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -18963,42 +18651,39 @@ } }, "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" }, "bin": { "autoprefixer": "bin/autoprefixer" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/autoprefixer/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/available-typed-arrays": { @@ -20442,6 +20127,7 @@ "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -20470,6 +20156,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -20481,6 +20168,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -20492,6 +20180,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -20505,7 +20194,8 @@ "node_modules/cacache/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/cache-base": { "version": "1.0.1", @@ -20901,6 +20591,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, "engines": { "node": ">=10" } @@ -20974,6 +20665,27 @@ "node": ">= 0.4" } }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "peer": true, + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/clean-css": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", @@ -20990,6 +20702,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, "engines": { "node": ">=6" } @@ -21039,6 +20752,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, "dependencies": { "string-width": "^4.2.0" }, @@ -21117,6 +20831,12 @@ "node": ">= 10" } }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true + }, "node_modules/clipboardy": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", @@ -21373,6 +21093,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, "bin": { "color-support": "bin.js" } @@ -21614,7 +21335,8 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/constant-case": { "version": "3.0.4", @@ -21797,9 +21519,9 @@ } }, "node_modules/core-js": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz", - "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.34.0.tgz", + "integrity": "sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -21807,11 +21529,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -21819,9 +21541,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.3.tgz", - "integrity": "sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.34.0.tgz", + "integrity": "sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -23395,7 +23117,8 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, "node_modules/depd": { "version": "2.0.0", @@ -23465,6 +23188,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/detect-element-overflow": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/detect-element-overflow/-/detect-element-overflow-1.4.2.tgz", + "integrity": "sha512-4m6cVOtvm/GJLjo7WFkPfwXoEIIbM7GQwIh4WEa4g7IsNi1YzwUsGL5ApNLrrHL29bHeNeQ+/iZhw+YHqgE2Fw==", + "funding": { + "url": "https://github.com/wojtekmaj/detect-element-overflow?sponsor=1" + } + }, "node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", @@ -23623,6 +23354,12 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -23668,6 +23405,12 @@ "node": ">=8" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -23877,20 +23620,15 @@ "edge-runtime": "dist/cli/index.js" } }, - "node_modules/edge-runtime/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.603", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.603.tgz", - "integrity": "sha512-Dvo5OGjnl7AZTU632dFJtWj0uJK835eeOVQIuRcmBmsFsTNn3cL05FqOyHAfGQDIoHfLhyJ1Tya3PJ0ceMz54g==" + "version": "1.4.607", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.607.tgz", + "integrity": "sha512-YUlnPwE6eYxzwBnFmawA8LiLRfm70R2aJRIUv0n03uHt/cUzzYACOogmvk8M2+hVzt/kB80KJXx7d5f5JofPvQ==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -24426,51 +24164,6 @@ "@esbuild/win32-x64": "0.16.17" } }, - "node_modules/esbuild-android-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.47.tgz", - "integrity": "sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.47.tgz", - "integrity": "sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.47.tgz", - "integrity": "sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/esbuild-darwin-arm64": { "version": "0.14.47", "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.47.tgz", @@ -24486,246 +24179,6 @@ "node": ">=12" } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.47.tgz", - "integrity": "sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.47.tgz", - "integrity": "sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.47.tgz", - "integrity": "sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.47.tgz", - "integrity": "sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.47.tgz", - "integrity": "sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.47.tgz", - "integrity": "sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.47.tgz", - "integrity": "sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.47.tgz", - "integrity": "sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.47.tgz", - "integrity": "sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.47.tgz", - "integrity": "sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.47.tgz", - "integrity": "sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.47.tgz", - "integrity": "sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.47.tgz", - "integrity": "sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.47.tgz", - "integrity": "sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.47.tgz", - "integrity": "sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.47", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.47.tgz", - "integrity": "sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -26994,6 +26447,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -28005,6 +27459,113 @@ "node": ">=18.0.0" } }, + "node_modules/gatsby-plugin-postcss": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-postcss/-/gatsby-plugin-postcss-6.12.0.tgz", + "integrity": "sha512-uzlmFvPcsYKbyyMMsBR0W1iWGOiJPJVNiVwut7h3ah0mL0ooMO5ANO+E7Sv0crEXrSJ/4QymFRX4kHDBfVn87g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.13", + "postcss-loader": "^7.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "gatsby": "^5.0.0-next", + "postcss": "^8.0.5" + } + }, + "node_modules/gatsby-plugin-postcss/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gatsby-plugin-postcss/node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/gatsby-plugin-postcss/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby-plugin-postcss/node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/gatsby-plugin-postcss/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby-plugin-postcss/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/gatsby-plugin-robots-txt": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/gatsby-plugin-robots-txt/-/gatsby-plugin-robots-txt-1.8.0.tgz", @@ -28693,9 +28254,9 @@ } }, "node_modules/gatsby/node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "engines": { "node": ">=0.4.0" } @@ -28714,42 +28275,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/gatsby/node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/gatsby/node_modules/babel-preset-gatsby": { "version": "3.12.1", "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-3.12.1.tgz", @@ -29164,11 +28689,6 @@ "node": ">=8" } }, - "node_modules/gatsby/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/gatsby/node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -29286,6 +28806,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -29519,6 +29040,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-user-locale": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-1.5.1.tgz", + "integrity": "sha512-WiNpoFRcHn1qxP9VabQljzGwkAQDrcpqUtaP0rNBEkFxJdh4f3tik6MfZsMYZc+UgQJdGCxWEjL9wnCUlRQXag==", + "dependencies": { + "lodash.memoize": "^4.1.1" + }, + "funding": { + "url": "https://github.com/wojtekmaj/get-user-locale?sponsor=1" + } + }, "node_modules/get-value": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", @@ -30241,7 +29773,8 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/has-value": { "version": "1.0.0", @@ -30690,9 +30223,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.4.tgz", + "integrity": "sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -31139,7 +30672,8 @@ "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", @@ -37178,6 +36712,14 @@ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, + "node_modules/make-event-props": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", + "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==", + "funding": { + "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -37472,11 +37014,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/merge-class-names": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/merge-class-names/-/merge-class-names-1.4.2.tgz", + "integrity": "sha512-bOl98VzwCGi25Gcn3xKxnR5p/WrhWFQB59MS/aGENcmUc6iSm96yrFDF0XSNurX9qN4LbJm0R9kfvsQ17i8zCw==", + "funding": { + "url": "https://github.com/wojtekmaj/merge-class-names?sponsor=1" + } + }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "node_modules/merge-refs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz", + "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==", + "funding": { + "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -37691,6 +37257,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -37702,6 +37269,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -37713,6 +37281,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -37724,6 +37293,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -37734,12 +37304,14 @@ "node_modules/minipass/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -37751,7 +37323,8 @@ "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mississippi": { "version": "3.0.0", @@ -37920,139 +37493,6 @@ "node-gyp-build-optional-packages-test": "build-test.js" } }, - "node_modules/msw": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/msw/-/msw-1.3.2.tgz", - "integrity": "sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==", - "hasInstallScript": true, - "dependencies": { - "@mswjs/cookies": "^0.2.2", - "@mswjs/interceptors": "^0.17.10", - "@open-draft/until": "^1.0.3", - "@types/cookie": "^0.4.1", - "@types/js-levenshtein": "^1.1.1", - "chalk": "^4.1.1", - "chokidar": "^3.4.2", - "cookie": "^0.4.2", - "graphql": "^16.8.1", - "headers-polyfill": "3.2.5", - "inquirer": "^8.2.0", - "is-node-process": "^1.2.0", - "js-levenshtein": "^1.1.6", - "node-fetch": "^2.6.7", - "outvariant": "^1.4.0", - "path-to-regexp": "^6.2.0", - "strict-event-emitter": "^0.4.3", - "type-fest": "^2.19.0", - "yargs": "^17.3.1" - }, - "bin": { - "msw": "cli/index.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mswjs" - }, - "peerDependencies": { - "typescript": ">= 4.4.x <= 5.2.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/msw/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/msw/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/msw/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/msw/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/msw/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/msw/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/msw/node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" - }, - "node_modules/msw/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/msw/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/multer": { "version": "1.4.5-lts.1", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", @@ -38075,6 +37515,17 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nan": { "version": "2.18.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", @@ -38360,12 +37811,6 @@ "isarray": "^1.0.0" } }, - "node_modules/node-libs-browser/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, "node_modules/node-libs-browser/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -38384,15 +37829,6 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, - "node_modules/node-libs-browser/node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, "node_modules/node-object-hash": { "version": "2.3.10", "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.10.tgz", @@ -38410,6 +37846,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -38424,6 +37861,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -38435,6 +37873,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -38446,6 +37885,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -38459,7 +37899,8 @@ "node_modules/normalize-package-data/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -41414,6 +40855,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -42036,6 +41478,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -42579,9 +42022,9 @@ "integrity": "sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g==" }, "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -42886,6 +42329,12 @@ "postcss": "^7.0.26" } }, + "node_modules/postcss-flexbugs-fixes/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "node_modules/postcss-flexbugs-fixes/node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -42903,22 +42352,64 @@ "url": "https://opencollective.com/postcss/" } }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" }, "engines": { - "node": ">= 10" + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/postcss/" }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" @@ -42932,6 +42423,24 @@ } } }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/postcss-loader": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", @@ -43142,6 +42651,25 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, "node_modules/postcss-normalize-charset": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", @@ -43396,11 +42924,6 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" }, - "node_modules/postcss-svgo/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/postcss-svgo/node_modules/svgo": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", @@ -43441,6 +42964,11 @@ "postcss-selector-parser": "^6.0.2" } }, + "node_modules/postcss-ts-classnames/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, "node_modules/postcss-ts-classnames/node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -43476,11 +43004,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, - "node_modules/postcss/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", @@ -43693,7 +43216,8 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise.allsettled": { "version": "1.0.7", @@ -44186,6 +43710,48 @@ "node": ">=0.10.0" } }, + "node_modules/react-calendar": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-3.9.0.tgz", + "integrity": "sha512-g6RJCEaPovHTiV2bMhBUfm0a1YoMj4bOUpL8hQSLmR1Glhc7lgRLtZBd4mcC4jkoGsb+hv9uA/QH4pZcm5l9lQ==", + "dependencies": { + "@wojtekmaj/date-utils": "^1.0.2", + "get-user-locale": "^1.2.0", + "merge-class-names": "^1.1.1", + "prop-types": "^15.6.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-calendar?sponsor=1" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-date-picker": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/react-date-picker/-/react-date-picker-8.4.0.tgz", + "integrity": "sha512-zocntugDUyiHmV2Nq1qnsk4kDQuhBLUsDTz7akfIEJ0jVX925w0K5Ai5oZzWFNQOzXL/ITxafmDMuSbzlpBt/A==", + "dependencies": { + "@types/react-calendar": "^3.0.0", + "@wojtekmaj/date-utils": "^1.0.3", + "get-user-locale": "^1.2.0", + "make-event-props": "^1.1.0", + "merge-class-names": "^1.1.1", + "merge-refs": "^1.0.0", + "prop-types": "^15.6.0", + "react-calendar": "^3.3.1", + "react-fit": "^1.4.0", + "update-input-width": "^1.2.2" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-date-picker?sponsor=1" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -44376,6 +43942,33 @@ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" }, + "node_modules/react-fit": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/react-fit/-/react-fit-1.7.1.tgz", + "integrity": "sha512-y/TYovCCBzfIwRJsbLj0rH4Es40wPQhU5GPPq9GlbdF09b0OdzTdMSkBza0QixSlgFzTm6dkM7oTFzaVvaBx+w==", + "dependencies": { + "detect-element-overflow": "^1.4.0", + "prop-types": "^15.6.0", + "tiny-warning": "^1.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-fit?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "@types/react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/react-hook-form": { "version": "7.48.2", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.48.2.tgz", @@ -44595,6 +44188,24 @@ "node": ">=0.8" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -45581,6 +45192,117 @@ "ramda": "0.29.1" } }, + "node_modules/rudder-sdk-js/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/rudder-sdk-js/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/rudder-sdk-js/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/rudder-sdk-js/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/rudder-sdk-js/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rudder-sdk-js/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/rudder-sdk-js/node_modules/msw": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/msw/-/msw-1.3.2.tgz", + "integrity": "sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==", + "hasInstallScript": true, + "dependencies": { + "@mswjs/cookies": "^0.2.2", + "@mswjs/interceptors": "^0.17.10", + "@open-draft/until": "^1.0.3", + "@types/cookie": "^0.4.1", + "@types/js-levenshtein": "^1.1.1", + "chalk": "^4.1.1", + "chokidar": "^3.4.2", + "cookie": "^0.4.2", + "graphql": "^16.8.1", + "headers-polyfill": "3.2.5", + "inquirer": "^8.2.0", + "is-node-process": "^1.2.0", + "js-levenshtein": "^1.1.6", + "node-fetch": "^2.6.7", + "outvariant": "^1.4.0", + "path-to-regexp": "^6.2.0", + "strict-event-emitter": "^0.4.3", + "type-fest": "^2.19.0", + "yargs": "^17.3.1" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.4.x <= 5.2.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/rudder-sdk-js/node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + }, "node_modules/rudder-sdk-js/node_modules/ramda": { "version": "0.29.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz", @@ -45590,6 +45312,42 @@ "url": "https://opencollective.com/ramda" } }, + "node_modules/rudder-sdk-js/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rudder-sdk-js/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rudder-sdk-js/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -46009,9 +45767,9 @@ } }, "node_modules/sass-loader": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.4.1.tgz", - "integrity": "sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.5.0.tgz", + "integrity": "sha512-VsU71W7VR6SChMJZUqtrfLeMSA8ns7QTHbnA7cfevtjb3c392mX93lr0Dmr4uU1ch5uIbEmfmHjdrDYcXXkQ7w==", "dependencies": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -46028,7 +45786,7 @@ }, "peerDependencies": { "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "webpack": "^4.36.0 || ^5.0.0" }, @@ -47027,6 +46785,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, "dependencies": { "minipass": "^3.1.1" }, @@ -47693,6 +47452,12 @@ "postcss": "^7.0.26" } }, + "node_modules/stylelint-processor-styled-components/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "node_modules/stylelint-processor-styled-components/node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -47828,12 +47593,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "node_modules/stylelint/node_modules/type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", @@ -47896,6 +47655,57 @@ "node": ">= 8" } }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sudo-prompt": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", @@ -48055,11 +47865,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/svgo/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/swap-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", @@ -48213,6 +48018,83 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/tailwind-merge": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.14.0.tgz", + "integrity": "sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.6.tgz", + "integrity": "sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/tailwindcss/node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -48225,6 +48107,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -48261,6 +48144,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -48269,6 +48153,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -48279,7 +48164,8 @@ "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/telejson": { "version": "6.0.8", @@ -48443,6 +48329,27 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -48753,6 +48660,12 @@ "node": ">=6.10" } }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/ts-log": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", @@ -48822,9 +48735,9 @@ } }, "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "engines": { "node": ">=0.4.0" } @@ -49052,15 +48965,15 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/typescript-plugin-css-modules": { @@ -49090,6 +49003,35 @@ "typescript": ">=3.9.0" } }, + "node_modules/typescript-plugin-css-modules/node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, "node_modules/typescript-plugin-css-modules/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -49294,6 +49236,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, "dependencies": { "unique-slug": "^2.0.0" } @@ -49302,6 +49245,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" } @@ -49584,6 +49528,14 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, + "node_modules/update-input-width": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/update-input-width/-/update-input-width-1.4.2.tgz", + "integrity": "sha512-/p0XLhrQQQ4bMWD7bL9duYObwYCO1qGr8R19xcMmoMSmXuQ7/1//veUnCObQ7/iW6E2pGS6rFkS4TfH4ur7e/g==", + "funding": { + "url": "https://github.com/wojtekmaj/update-input-width?sponsor=1" + } + }, "node_modules/upper-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", @@ -49752,15 +49704,12 @@ } }, "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "inherits": "2.0.3" } }, "node_modules/util-deprecate": { @@ -49778,6 +49727,12 @@ "object.getownpropertydescriptors": "^2.0.3" } }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", @@ -50264,6 +50219,18 @@ "@zxing/text-encoding": "0.9.0" } }, + "node_modules/web-encoding/node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/web-namespaces": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", @@ -50391,9 +50358,9 @@ } }, "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -50429,12 +50396,6 @@ "node": ">=0.10.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", @@ -50762,6 +50723,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } diff --git a/package.json b/package.json index 0033f4a57ba..f31806b1a2b 100644 --- a/package.json +++ b/package.json @@ -4,141 +4,152 @@ "version": "0.1.0", "author": "Deriv", "dependencies": { - "@artsy/fresnel": "^6.1.0", + "@artsy/fresnel": "^6.2.1", "@builder.io/partytown": "^0.8.1", - "@deriv/analytics": "^1.3.4", - "@deriv/deriv-api": "^1.0.11", - "@hookform/resolvers": "^3.0.1", - "@livechat/customer-sdk": "^3.1.0", - "@loadable/component": "^5.15.2", - "@radix-ui/react-accordion": "^1.1.0", - "@radix-ui/react-alert-dialog": "^1.0.3", - "@radix-ui/react-dropdown-menu": "^2.0.2", - "@radix-ui/react-navigation-menu": "^1.1.2", - "@svgr/webpack": "^8.0.1", - "@tanstack/react-table": "^8.8.5", + "@deriv-com/blocks": "^0.66.0", + "@deriv-com/components": "^0.37.0", + "@deriv-com/hooks": "^0.10.0", + "@deriv-com/providers": "^0.10.0", + "@deriv/analytics": "^1.4.3", + "@deriv/deriv-api": "^1.0.13", + "@deriv/quill-design": "^1.3.2", + "@deriv/quill-icons": "^1.1.5", + "@hookform/resolvers": "^3.3.2", + "@livechat/customer-sdk": "^3.1.5", + "@loadable/component": "^5.15.3", + "@radix-ui/react-accordion": "^1.1.2", + "@radix-ui/react-alert-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-navigation-menu": "^1.1.4", + "@svgr/webpack": "^8.1.0", + "@tanstack/react-table": "^8.10.7", "@vercel/gatsby-plugin-vercel-builder": "^0.1.2", "cli-select": "^1.1.2", "clsx": "^1.2.1", "commander": "^8.3.0", - "crc-32": "^1.2.0", + "crc-32": "^1.2.2", "cssnano": "^5.1.15", "deriv-api-ts": "^1.0.7", "embla-carousel-autoplay": "^6.2.0", "embla-carousel-react": "8.0.0-rc11", - "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-node": "^0.3.9", "extend": "^3.0.2", - "firebase": "^9.22.1", - "formik": "^2.2.9", - "gatsby": "^5.11.0", + "firebase": "^9.23.0", + "formik": "^2.4.5", + "gatsby": "^5.12.11", "gatsby-plugin-anchor-links": "^1.2.1", - "gatsby-plugin-canonical-urls": "^5.11.0", + "gatsby-plugin-canonical-urls": "^5.12.0", "gatsby-plugin-image": "3.11.0", - "gatsby-plugin-manifest": "^5.11.0", + "gatsby-plugin-manifest": "^5.12.3", "gatsby-plugin-robots-txt": "^1.8.0", - "gatsby-plugin-sass": "^6.11.0", - "gatsby-plugin-sharp": "^5.11.0", - "gatsby-plugin-sitemap": "^6.11.0", + "gatsby-plugin-sass": "^6.12.3", + "gatsby-plugin-sharp": "^5.12.3", + "gatsby-plugin-sitemap": "^6.12.3", "gatsby-plugin-svgr": "^3.0.0-beta.0", "gatsby-plugin-use-query-params": "^1.0.1", - "gatsby-source-filesystem": "^5.11.0", + "gatsby-source-filesystem": "^5.12.1", "gatsby-source-strapi": "^3.3.1", - "gatsby-transformer-sharp": "^5.11.0", - "i18next": "^21.6.5", + "gatsby-transformer-sharp": "^5.12.3", + "i18next": "^21.10.0", "install": "^0.13.0", "js-cookie": "^2.2.1", - "lottie-web": "^5.8.1", + "lottie-web": "^5.12.2", "match-sorter": "^6.3.1", - "npm": "^9.6.2", + "npm": "^9.9.2", "p-min-delay": "^4.0.2", - "postcss": "^8.4.5", "postcss-discard-duplicates": "^5.1.0", "postcss-ts-classnames": "^0.3.0", "prompt-sync": "^4.2.0", "prop-types": "^15.8.1", "react": "^18.2.0", + "react-date-picker": "8.4.0", "react-device-detect": "^2.2.2", "react-dom": "^18.2.0", - "react-hook-form": "^7.43.9", - "react-i18next": "^11.15.3", - "react-intersection-observer": "^9.4.3", + "react-hook-form": "^7.48.2", + "react-i18next": "^11.18.6", + "react-intersection-observer": "^9.5.3", "react-is": "^17.0.2", "react-ticker": "^1.3.2", "react-tiny-popover": "^7.2.4", "remove": "^0.1.5", - "rxjs": "^7.8.0", - "sass": "^1.58.3", - "swiper": "^9.1.1", + "rxjs": "^7.8.1", + "sass": "^1.69.5", + "swiper": "^9.4.1", "use-query-params": "^1.2.3", "usehooks-ts": "^2.9.1", - "webpack": "^5.65.0", - "yup": "^1.0.2" + "webpack": "^5.89.0", + "yup": "^1.3.2" }, "devDependencies": { - "@commitlint/cli": "^16.2.1", - "@commitlint/config-conventional": "^16.2.1", - "@deriv/api-types": "^1.0.94", - "@graphql-codegen/cli": "^2.6.2", - "@graphql-codegen/typescript": "^2.4.5", - "@graphql-codegen/typescript-operations": "^2.3.2", - "@loadable/babel-plugin": "^5.15.3", + "@commitlint/cli": "^16.3.0", + "@commitlint/config-conventional": "^16.2.4", + "@deriv/api-types": "^1.0.137", + "@graphql-codegen/cli": "^2.16.5", + "@graphql-codegen/typescript": "^2.8.8", + "@graphql-codegen/typescript-operations": "^2.5.13", + "@loadable/babel-plugin": "^5.16.1", + "@parcel/watcher": "^2.3.0", "@storybook/addon-actions": "^6.4.9", - "@storybook/addon-essentials": "^6.4.9", - "@storybook/addon-links": "^6.4.9", - "@storybook/builder-webpack5": "^6.4.9", - "@storybook/manager-webpack5": "^6.4.9", - "@storybook/react": "^6.4.9", + "@storybook/addon-essentials": "^6.5.16", + "@storybook/addon-links": "^6.5.16", + "@storybook/builder-webpack5": "^6.5.16", + "@storybook/manager-webpack5": "^6.5.16", + "@storybook/react": "^6.5.16", "@stylelint/postcss-css-in-js": "^0.38.0", - "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^14.0.0", - "@testing-library/user-event": "^14.4.3", - "@types/jest": "^29.5.3", - "@types/js-cookie": "^3.0.3", - "@types/node": "^20.4.8", - "@types/react": "^18.2.18", - "@types/react-dom": "^18.2.7", - "@types/react-test-renderer": "^18.0.0", - "@types/styled-components": "^5.1.26", - "@typescript-eslint/eslint-plugin": "^5.9.0", - "@typescript-eslint/parser": "^5.9.0", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.1", + "@types/jest": "^29.5.10", + "@types/js-cookie": "^3.0.6", + "@types/node": "^20.10.0", + "@types/react": "^18.2.38", + "@types/react-dom": "^18.2.17", + "@types/react-test-renderer": "^18.0.7", + "@types/styled-components": "^5.1.32", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "autoprefixer": "^10.4.16", "babel-eslint": "10.1.0", - "babel-jest": "^29.5.0", - "babel-plugin-styled-components": "^2.0.2", + "babel-jest": "^29.7.0", + "babel-plugin-styled-components": "^2.1.4", "babel-preset-gatsby": "^2.25.0", "eslint": "^7.32.0", "eslint-loader": "^4.0.2", - "eslint-plugin-deprecation": "^1.3.2", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.5.0", - "eslint-webpack-plugin": "^3.1.1", + "eslint-plugin-deprecation": "^1.5.0", + "eslint-plugin-import": "^2.29.0", + "eslint-plugin-jest": "^27.6.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-webpack-plugin": "^3.2.0", "gatsby-plugin-env-variables": "^2.3.0", - "gatsby-plugin-eslint": "^4.0.2", - "gatsby-plugin-styled-components": "^6.11.0", - "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.31", + "gatsby-plugin-eslint": "^4.0.4", + "gatsby-plugin-postcss": "^6.12.0", + "gatsby-plugin-styled-components": "^6.12.0", + "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.32", "gh-pages": "^3.2.3", "husky": "^7.0.4", "identity-obj-proxy": "^3.0.0", - "jest": "^29.5.0", + "jest": "^29.7.0", "jest-chain": "^1.1.6", - "jest-config": "^29.5.0", - "jest-environment-jsdom": "^29.5.0", - "jest-extended": "^4.0.0", - "lint-staged": "^12.1.5", + "jest-config": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "jest-extended": "^4.0.2", + "lint-staged": "^12.5.0", "npm-force-resolutions": "0.0.10", - "prettier": "^2.5.1", - "query-string": "^7.0.1", + "postcss": "^8.4.31", + "prettier": "^2.8.8", + "query-string": "^7.1.3", "react-test-renderer": "^18.2.0", - "styled-components": "^5.3.3", - "stylelint": "^14.2.0", - "stylelint-config-prettier": "^9.0.3", + "styled-components": "^5.3.11", + "stylelint": "^14.16.1", + "stylelint-config-prettier": "^9.0.5", "stylelint-config-standard": "^24.0.0", "stylelint-config-styled-components": "^0.1.1", "stylelint-processor-styled-components": "^1.10.0", - "stylelint-webpack-plugin": "^3.1.0", - "typescript": "^4.5.4", - "typescript-plugin-css-modules": "^4.2.2" + "stylelint-webpack-plugin": "^3.3.0", + "tailwindcss": "^3.3.5", + "typescript": "^5.3.2", + "typescript-plugin-css-modules": "^4.2.3" }, "keywords": [ "deriv", @@ -148,6 +159,7 @@ "scripts": { "analyze-bundle": "GENERATE_JSON_STATS=true gatsby build && npx webpack-bundle-analyzer -m static -r ./webpack-bundle-report/report.html ./public/stats.json", "build": "GATSBY_CPU_COUNT=2 gatsby build --log-pages", + "update:deriv-com-libs": "npm i @deriv-com/blocks@latest @deriv-com/components@latest @deriv-com/hooks@latest @deriv-com/providers@latest", "partytown": "partytown copylib public/~partytown", "develop": "GATSBY_CPU_COUNT=2 gatsby develop -o", "format": "prettier --write '**/*.js' '*.js'", diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000000..96bb01e7dd1 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/src/components/custom/_dhero-dmt5.tsx b/src/components/custom/_dhero-dmt5.tsx index 12ae506cd0d..df37843195f 100644 --- a/src/components/custom/_dhero-dmt5.tsx +++ b/src/components/custom/_dhero-dmt5.tsx @@ -1,7 +1,7 @@ import React from 'react' import styled from 'styled-components' import { StaticImage } from 'gatsby-plugin-image' -import { handleGetTrading } from './utils' +import { handleRedirectToTradersHub } from './utils' import CommonHeaderSection from 'components/elements/common-header-section' import DerivMT5Logo from 'images/svg/dmt5/dmt5-banner-logo.svg' import device from 'themes/device' @@ -150,7 +150,7 @@ const DCommonBanner = () => { {is_logged_in ? ( { + setDropdownItems([...items]) + }, [items]) + const handleInputChange = (e) => { setInputValue(e.target.value) toggleListVisibility(e) diff --git a/src/components/elements/dropdown.tsx b/src/components/elements/dropdown.tsx index f6df0bcf1c9..0d3b9a611ae 100644 --- a/src/components/elements/dropdown.tsx +++ b/src/components/elements/dropdown.tsx @@ -247,7 +247,6 @@ const UnorderedList = styled.ul` position: absolute; left: 0; top: 0.8rem; - border-radius: 4px; box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.16); transition: opacity 0.1s cubic-bezier(0, 0, 0.38, 0.9), max-height 0.25s cubic-bezier(0, 0, 0.38, 0.9); @@ -313,7 +312,7 @@ export const StyledLabel = styled.label` color: var(--color-green); transform: translate(-0.6rem, -2.2rem) scale(0.7); @media ${device.tabletL} { - top: 9px; + top: 15px; } ` }} diff --git a/src/components/elements/market-tab/index.tsx b/src/components/elements/market-tab/index.tsx index 9cc0a58a62c..08bc52c97a5 100644 --- a/src/components/elements/market-tab/index.tsx +++ b/src/components/elements/market-tab/index.tsx @@ -7,7 +7,6 @@ import { Header } from 'components/elements' import AvailablePlatform from 'pages/trading-specification/components/_available-platform' import { Localize } from 'components/localization' import TradingSpecificationTable from 'pages/trading-specification/components/_trading_spec_table' -import useRegion from 'components/hooks/use-region' const TabStyledHeader = styled(Header)` font-family: 'Ubuntu'; @@ -17,10 +16,10 @@ const MarketIcon = styled.img<{ is_selected?: boolean }>` inline-size: 24px; block-size: 24px; margin-block-end: 10px; + margin-inline: auto; ` const MarketTab = () => { - const { is_row } = useRegion() const [selected_market, setSelectedMarket] = useState('forex') const onMarketButtonClick = (selected) => { setSelectedMarket(selected) diff --git a/src/components/form/input.tsx b/src/components/form/input.tsx index 479d74a42a0..7de2314369f 100644 --- a/src/components/form/input.tsx +++ b/src/components/form/input.tsx @@ -22,7 +22,7 @@ interface ReactInput extends React.ComponentPropsWithoutRef<'input'> { ) => void } -type InputProps = ReactInput & InputWrapperProps & StyledInputProps & StyledLabelProps +export type InputProps = ReactInput & InputWrapperProps & StyledInputProps & StyledLabelProps type InputWrapperProps = { border?: string @@ -53,10 +53,10 @@ type StyledLabelProps = { htmlFor?: string } -const RelativeWrapper = styled.div` +export const RelativeWrapper = styled.div` position: relative; ` -const InputWrapper = styled.div` +export const InputWrapper = styled.div` /* prettier-ignore */ width: 100%; border: ${(props) => props.border || '1px solid var(--color-grey-2)'}; @@ -96,7 +96,7 @@ const InputWrapper = styled.div` `} ` -const StyledError = styled.img` +export const StyledError = styled.img` position: absolute; right: 0.8rem; top: 1.2rem; @@ -112,7 +112,7 @@ const StyledError = styled.img` } ` -const StyledInput = styled.input` +export const StyledInput = styled.input` color: ${({ inputColor }) => inputColor ? `var(--color-${inputColor})` : 'var(--color-black)'}; font-size: var(--text-size-s); @@ -130,7 +130,7 @@ const StyledInput = styled.input` & ~ label { font-size: 1.75rem; - top: 1.95rem; + top: 15px; } } @media ${device.mobileL} { @@ -154,7 +154,7 @@ const StyledInput = styled.input` background-color: ${({ background }) => background ? `var(--color-${background})` : 'var(--color-grey-1)'}; - @media ${device.mobileL} { + @media ${device.tablet} { transform: translate(-0.6rem, -20px) scale(0.7); } } @@ -179,21 +179,21 @@ const StyledInput = styled.input` background ? `var(--color-${background})` : 'var(--color-grey-1)'}; @media ${device.tabletL} { - top: 9px; + top: 15px; } } `} } ` -const ErrorMessages = styled(Text)` +export const ErrorMessages = styled(Text)` padding: 6px; font-size: 1.2rem; min-height: 16px; color: var(--color-red-1); ` -const StyledLabel = styled.label` +export const StyledLabel = styled.label` color: ${({ label_color }) => label_color ? `var(--color-${label_color})` : 'var(--color-grey)'}; font-size: var(--text-size-xs); diff --git a/src/components/layout/layout.tsx b/src/components/layout/layout.tsx index fd5cf15bfcd..3fd9576488f 100644 --- a/src/components/layout/layout.tsx +++ b/src/components/layout/layout.tsx @@ -1,6 +1,8 @@ -import React, { ReactNode, Ref } from 'react' +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import React, { ReactNode, Ref, useCallback } from 'react' import loadable from '@loadable/component' import styled from 'styled-components' +import { LanguageProvider, SharedLinkProvider } from '@deriv-com/providers' import { LocationProvider } from './location-context' import LayoutOverlay from 'features/components/molecules/layout-overlay' import EURedirect, { useModal } from 'components/custom/_eu-redirect-modal' @@ -8,15 +10,20 @@ import { usePlatformQueryParam } from 'components/hooks/use-platform-query-param import { usePageLoaded } from 'components/hooks/use-page-loaded' import { getLanguage, isBrowser } from 'common/utility' import apiManager from 'common/websocket' -import MainNav from 'features/components/templates/navigation/main-nav' import StaticNav from 'features/components/templates/navigation/static-nav' -import PaymentAgentAffiliateNav from 'features/components/templates/navigation/payment-agent-nav' import BugBountyNav from 'features/components/templates/navigation/bug-bounty-nav' import CareerNav from 'features/components/templates/navigation/career-nav' -import MarketNav from 'features/components/templates/navigation/market-nav' import PpcProvider from 'features/contexts/ppc-campaign/ppc.provider' +import AffiliateNav from 'features/components/templates/navigation/affiliates-nav' import BannerAlert from 'components/custom/_banner-alert' import { bannerTypes } from 'common/constants' +import MainRowNavigation from 'features/components/templates/navigation/main-nav' +import { useLangDirection } from 'components/hooks/use-lang-direction' +import { LocaleContext } from 'components/localization' +import useLangSwitcher from 'features/components/molecules/language-switcher/useLangSwitcher' +import { langItemsROW } from 'features/components/templates/layout/data' +import PartnersNav from 'features/components/templates/navigation/partners-nav' +import GatsbySharedLink from 'features/components/quill/shared-link' const RebrandingFooter = loadable(() => import('features/components/templates/footer')) @@ -32,6 +39,7 @@ type LayoutProps = { type MainType = { is_static?: boolean padding_top?: string + type?: string } export type ModalPayloadType = { @@ -43,7 +51,8 @@ export type ModalPayloadType = { } const Main = styled.main` - padding-top: ${({ padding_top }) => (padding_top && `${padding_top}rem`) || '7rem'}; + padding-top: ${({ padding_top, type }) => + padding_top ? `${padding_top}rem` : type === 'careers' ? '11rem' : '8rem'}; background: var(--color-white); height: 100%; position: relative; @@ -59,13 +68,13 @@ if (isBrowser()) { const Navs = { noNav: null, - default: , + default: , static: , interim: , - partners: , + partners: , - markets: , + markets: , security: , @@ -79,7 +88,9 @@ const Navs = { careers: , - 'payment-methods': , + 'payment-methods': , + + affiliates: , } const Layout = ({ @@ -97,6 +108,27 @@ const Layout = ({ const is_static = type === 'static' + const lang_direction = useLangDirection() + const { locale } = React.useContext(LocaleContext) + const formatted_lang = locale.replace('_', '-') + + React.useEffect(() => { + document.body.dir = lang_direction + document.documentElement.lang = formatted_lang + }, [lang_direction, formatted_lang]) + + //need to update the language data and type + //here using langauge data from `i18n-config.js` + const { onSwitchLanguage, currentLang } = useLangSwitcher() + const activeLang = langItemsROW[currentLang.path.replace('-', '')] + + const onLanguageChange = useCallback( + (event) => { + onSwitchLanguage(`/${event.path}/`) + }, + [onSwitchLanguage], + ) + //Handle page layout when redirection from mobile app. if (has_platform) { return ( @@ -106,33 +138,41 @@ const Layout = ({ ) } return ( - - {Navs[type]} - -
-
- {children} -
- - - -
-
- {show_footer && } -
+ + + + {Navs[type]} + +
+
+ {children} +
+ + + +
+
+ {show_footer && } +
+
+
) } diff --git a/src/features/components/molecules/timeline-item/index.tsx b/src/features/components/molecules/timeline-item/index.tsx index aa101390078..1d6ff85fcbf 100644 --- a/src/features/components/molecules/timeline-item/index.tsx +++ b/src/features/components/molecules/timeline-item/index.tsx @@ -30,9 +30,7 @@ const TimelineItem = ({ data, isLastItem, ...rest }: TimelineItemProps) => { check icon
diff --git a/src/features/components/organisms/markets/market-banner/styles.module.scss b/src/features/components/organisms/markets/market-banner/styles.module.scss index 8375de27302..a89a4d9556a 100644 --- a/src/features/components/organisms/markets/market-banner/styles.module.scss +++ b/src/features/components/organisms/markets/market-banner/styles.module.scss @@ -14,7 +14,7 @@ } } .flex_container { - padding-block-start: 7rem; + padding-block-start: 8rem; @include breakpoints(tablet) { position: relative; min-block-size: 36rem; diff --git a/src/features/components/quill/alert/index.tsx b/src/features/components/quill/alert/index.tsx new file mode 100644 index 00000000000..77ede2dde0e --- /dev/null +++ b/src/features/components/quill/alert/index.tsx @@ -0,0 +1,79 @@ +import React from 'react' +import * as AlertDialog from '@radix-ui/react-alert-dialog' +import { Button, Text, Heading } from '@deriv/quill-design' +import { TString } from 'types/generics' +import { Localize } from 'components/localization' + +type AlertButtonProps = { + text: TString + onClick?: React.MouseEventHandler +} + +export interface AlertProps { + title?: TString + description: TString + cancel_button?: AlertButtonProps + action_button: AlertButtonProps +} + +const Alert = ({ + title = '_t_Alert_t_', + description, + cancel_button, + action_button, +}: AlertProps) => { + return ( + + + + + +
+ + + +
+
+ +
+ + + +
+
+ +
+ + {cancel_button && ( + + + + )} + + + + + + +
+
+
+
+ ) +} + +export default Alert diff --git a/src/features/components/quill/shared-link/external.tsx b/src/features/components/quill/shared-link/external.tsx new file mode 100644 index 00000000000..fb2a7cb1b0d --- /dev/null +++ b/src/features/components/quill/shared-link/external.tsx @@ -0,0 +1,56 @@ +import React, { ComponentProps, useState } from 'react' +import Alert from '../alert' +import useRegion from 'components/hooks/use-region' + +export type ExternalLinkProps = ComponentProps<'a'> & { + show_eu_modal?: boolean +} + +const ExternalLink = ({ href, onClick, target, show_eu_modal, ...rest }: ExternalLinkProps) => { + const [is_redirect_modal_visible, setIsRedirectModalVisible] = useState(false) + const { is_eu } = useRegion() + const show_modal = is_eu && show_eu_modal + + const handleCancel = () => { + setIsRedirectModalVisible(false) + } + + const handleProceed = () => { + if (target === '_blank') { + window.open(href) + } else { + window.location.href = href + } + setIsRedirectModalVisible(false) + } + + const handleClick: React.MouseEventHandler = (event) => { + if (show_modal) { + event.preventDefault() + setIsRedirectModalVisible(true) + } + onClick?.(event) + } + + return ( + <> + + {is_redirect_modal_visible && ( + + )} + + ) +} + +export default ExternalLink diff --git a/src/features/components/quill/shared-link/index.tsx b/src/features/components/quill/shared-link/index.tsx new file mode 100644 index 00000000000..0312e2bd435 --- /dev/null +++ b/src/features/components/quill/shared-link/index.tsx @@ -0,0 +1,22 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import React from 'react' +import { SharedLinkProps, SharedLink } from '@deriv-com/providers' +import ExternalLink from './external' +import { LocalizedLink } from 'components/localization' + +const GatsbySharedLink: SharedLink = ({ href = '/', ...rest }: SharedLinkProps) => { + const link = href as `/${string}` + const isExternalUrl = /(http(s?)):\/\//i.test(link.toString()) + if (isExternalUrl) { + return ( + // @ts-ignore + + ) + } + return ( + // @ts-ignore + + ) +} + +export default GatsbySharedLink diff --git a/src/features/components/templates/banners/deriv-products-hero/products-signup.tsx b/src/features/components/templates/banners/deriv-products-hero/products-signup.tsx index 892e362d9cd..5b783dc3a24 100644 --- a/src/features/components/templates/banners/deriv-products-hero/products-signup.tsx +++ b/src/features/components/templates/banners/deriv-products-hero/products-signup.tsx @@ -4,7 +4,7 @@ import { Localize } from 'components/localization' import useAuthCheck from 'components/hooks/use-auth-check' import Button from 'features/components/atoms/button' import useHandleSignup from 'components/hooks/use-handle-signup' -import { handleGetTrading } from 'components/custom/utils' +import { handleRedirectToTradersHub } from 'components/custom/utils' const HeroMainButton = () => { const [is_logged_in] = useAuthCheck() @@ -12,7 +12,11 @@ const HeroMainButton = () => { if (is_logged_in) { return ( - + ) diff --git a/src/features/components/templates/footer/banner-and-awards.tsx b/src/features/components/templates/footer/banner-and-awards.tsx new file mode 100644 index 00000000000..38f3784ca4f --- /dev/null +++ b/src/features/components/templates/footer/banner-and-awards.tsx @@ -0,0 +1,71 @@ +import React from 'react' +import { CaptionText, Heading, Text } from '@deriv/quill-design' +// eslint-disable-next-line import/no-unresolved +import { DerivProductDerivGoBrandLightLogoHorizontalIcon } from '@deriv/quill-icons/Logo' +import { StaticImage } from 'gatsby-plugin-image' +import DownloadBadges from './download' +import { Localize, localize } from 'components/localization' +import useRegion from 'components/hooks/use-region' + +export const DerivGoBannerAndAwards = () => { + const { is_row } = useRegion() + return ( +
+ {is_row && ( +
+
+
+
+ + + + +
+ + + +
+
+
+ + + + +
+
+
+ +
+ )} +
+
+ +
+
+ +
+
+
+ ) +} diff --git a/src/features/components/templates/footer/data.ts b/src/features/components/templates/footer/data.ts deleted file mode 100644 index f2e133933f5..00000000000 --- a/src/features/components/templates/footer/data.ts +++ /dev/null @@ -1,368 +0,0 @@ -import { SmartFooterLink, SmartFooterLinkColumn } from './types' -import { deriv_status_page_url } from 'common/constants' - -const aboutUsLinks: SmartFooterLink[] = [ - { - id: 0, - data: { - text: '_t_Who we are_t_', - url: { type: 'internal', to: '/who-we-are/' }, - }, - }, - { - id: 1, - data: { - text: '_t_Why choose us_t_', - url: { type: 'internal', to: '/why-choose-us/' }, - }, - }, - { - id: 2, - data: { - text: '_t_Principles_t_', - url: { type: 'internal', to: '/our-principles/' }, - }, - }, - { - id: 3, - data: { - text: '_t_Partnership programmes_t_', - url: { type: 'internal', to: '/partners/' }, - }, - }, - { - id: 4, - data: { - text: '_t_Contact us_t_', - url: { type: 'internal', to: '/contact_us/' }, - }, - }, - { - id: 5, - data: { - text: '_t_Careers_t_', - url: { type: 'internal', to: '/careers/' }, - }, - }, - { - id: 6, - data: { - text: '_t_Deriv life_t_', - url: { type: 'company', url_name: 'derivlife' }, - }, - }, -] - -const tradesLinks: SmartFooterLink[] = [ - { - id: 0, - data: { - text: '_t_CFDs_t_', - url: { type: 'internal', to: '/trade-types/cfds/' }, - }, - }, - { - id: 1, - data: { - text: '_t_Options_t_', - url: { type: 'internal', to: '/trade-types/options/digital-options/up-and-down/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 2, - data: { - text: '_t_Multipliers_t_', - url: { type: 'internal', to: '/trade-types/multiplier/' }, - }, - }, -] - -const marketsLinks: SmartFooterLink[] = [ - { - id: 0, - data: { - text: '_t_Forex_t_', - url: { type: 'internal', to: '/markets/forex/' }, - }, - }, - { - id: 1, - data: { - text: '_t_Derived indices_t_', - url: { type: 'internal', to: '/markets/synthetic/' }, - }, - }, - { - id: 2, - data: { - text: '_t_Stocks & indices_t_', - url: { type: 'internal', to: '/markets/stock/' }, - }, - }, - { - id: 3, - data: { - text: '_t_ETFs_t_', - url: { type: 'internal', to: '/markets/exchange-traded-funds/' }, - }, - }, - { - id: 4, - data: { - text: '_t_Cryptocurrencies_t_', - url: { type: 'internal', to: '/markets/cryptocurrencies/' }, - }, - }, - { - id: 5, - data: { - text: '_t_Commodities_t_', - url: { type: 'internal', to: '/markets/commodities/' }, - }, - }, -] - -const platformsLinks: SmartFooterLink[] = [ - { - id: 0, - data: { - text: '_t_Deriv MT5_t_', - url: ({ is_ppc_redirect }) => ({ - type: 'internal', - to: is_ppc_redirect ? '/landing/dmt5/' : '/dmt5/', - }), - }, - }, - { - id: 1, - data: { - text: '_t_Deriv X_t_', - url: { type: 'internal', to: '/derivx/' }, - }, - visibility: { - is_row: true, - }, - }, - - { - id: 2, - data: { - text: '_t_Deriv GO_t_', - url: { type: 'internal', to: '/deriv-go/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 3, - data: { - text: '_t_Deriv Trader_t_', - url: { type: 'internal', to: '/dtrader/' }, - }, - }, - { - id: 4, - data: { - text: '_t_SmartTrader_t_', - url: { type: 'company', url_name: 'smart_trader', target: '_blank' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 5, - data: { - text: '_t_Deriv Bot_t_', - url: { type: 'internal', to: '/dbot/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 6, - data: { - text: '_t_Binary Bot_t_', - url: { type: 'company', url_name: 'binary_bot', target: '_blank' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 7, - data: { - text: '_t_Deriv cTrader_t_', - url: { type: 'internal', to: '/deriv-ctrader/' }, - }, - visibility: { - is_row: true, - }, - }, -] - -const legalLinks: SmartFooterLink[] = [ - { - id: 0, - data: { - text: '_t_Regulatory information_t_', - url: { type: 'internal', to: '/regulatory/' }, - }, - }, - { - id: 1, - data: { - text: '_t_Terms & conditions_t_', - url: { type: 'internal', to: '/terms-and-conditions/#clients' }, - }, - }, - { - id: 2, - data: { - text: '_t_Secure & responsible trading_t_', - url: { type: 'internal', to: '/responsible/' }, - }, - }, -] - -const partnerLinks: SmartFooterLink[] = [ - { - id: 0, - data: { - text: '_t_Deriv Prime_t_', - url: { type: 'internal', to: '/partners/deriv-prime/' }, - }, - }, - { - id: 1, - data: { - text: '_t_Affiliates and IBs_t_', - url: { type: 'internal', to: '/partners/affiliate-ib/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 2, - data: { - text: '_t_Affiliates_t_', - url: { type: 'internal', to: '/partners/affiliate-ib/' }, - }, - visibility: { - is_row: false, - }, - }, - { - id: 3, - data: { - text: '_t_Payment agents_t_', - url: { type: 'internal', to: '/partners/payment-agent/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 4, - data: { - text: '_t_API_t_', - url: { type: 'company', url_name: 'api' }, - }, - }, -] - -const supportLinks: SmartFooterLink[] = [ - { - id: 0, - data: { - text: '_t_Help centre_t_', - url: { type: 'internal', to: '/help-centre/' }, - }, - }, - { - id: 1, - data: { - text: '_t_Community_t_', - url: { type: 'company', url_name: 'community' }, - }, - }, - { - id: 2, - data: { - text: '_t_Payment methods_t_', - url: { type: 'internal', to: '/payment-methods/' }, - }, - }, - { - id: 3, - data: { - text: '_t_Status page_t_', - url: { type: 'non-company', href: deriv_status_page_url }, - }, - }, - { - id: 4, - data: { - text: '_t_Deriv Blog_t_', - url: { type: 'company', url_name: 'blog' }, - }, - }, -] - -export const footerLinks: SmartFooterLinkColumn[] = [ - { - id: 0, - data: { - title: '_t_ABOUT US_t_', - links: aboutUsLinks, - }, - }, - { - id: 1, - data: { - title: '_t_TRADE TYPES_t_', - links: tradesLinks, - }, - }, - { - id: 2, - data: { - title: '_t_MARKETS_t_', - links: marketsLinks, - }, - }, - { - id: 3, - data: { - title: '_t_PLATFORMS_t_', - links: platformsLinks, - }, - }, - { - id: 4, - data: { - title: '_t_LEGAL_t_', - links: legalLinks, - }, - }, - { - id: 5, - data: { - title: '_t_PARTNERS_t_', - links: partnerLinks, - }, - }, - { - id: 7, - data: { - title: '_t_SUPPORT_t_', - links: supportLinks, - }, - }, -] diff --git a/src/features/components/templates/footer/data.tsx b/src/features/components/templates/footer/data.tsx new file mode 100644 index 00000000000..5f4285b37db --- /dev/null +++ b/src/features/components/templates/footer/data.tsx @@ -0,0 +1,562 @@ +import React from 'react' +import { FooterItems } from '@deriv-com/blocks' +import { + StandaloneFacebookIcon, + StandaloneInstagramIcon, + StandaloneLinkedinIcon, + StandaloneXTwitterIcon, + StandaloneYoutubeIcon, + // eslint-disable-next-line import/no-unresolved +} from '@deriv/quill-icons/Standalone' +import { DerivGoBannerAndAwards } from './banner-and-awards' +import { Localize } from 'components/localization' + +export const RowFooterNavData: FooterItems[] = [ + { + id: 0, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/who-we-are', + text: , + }, + { + id: 1, + href: '/why-choose-us', + text: , + }, + { + id: 3, + href: '/our-principles', + text: , + }, + { + id: 4, + href: '/partners', + text: , + }, + { + id: 5, + href: '/contact_us', + text: , + }, + { id: 6, href: '/careers', text: }, + { + id: 7, + href: 'https://derivlife.com', + text: , + }, + ], + }, + ], + }, + { + id: 1, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/trade-types/cfds', + text: , + }, + { + id: 1, + href: '/trade-types/options', + text: , + }, + { + id: 2, + href: '/trade-types/multiplier', + text: , + }, + ], + }, + { + id: 1, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/markets/forex', + text: , + }, + { + id: 1, + href: '/markets/synthetic', + text: , + }, + { + id: 2, + href: '/markets/stock', + text: , + }, + { + id: 3, + href: '/markets/exchange-traded-funds', + text: , + }, + { + id: 4, + href: '/markets/cryptocurrencies', + text: , + }, + { + id: 5, + href: '/markets/commodities', + text: , + }, + ], + }, + ], + }, + { + id: 2, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { id: 0, href: '/dmt5', text: }, + { id: 1, href: '/derivx', text: }, + { + id: 2, + href: '/deriv-ctrader', + text: , + }, + { + id: 3, + href: '/deriv-go', + text: , + }, + { + id: 4, + href: '/dtrader', + text: , + }, + { + id: 5, + href: 'https://smarttrader.deriv.com/', + text: , + target: '_blank', + }, + { id: 6, href: '/dbot', text: }, + { + id: 7, + href: 'https://bot.deriv.com/', + text: , + target: '_blank', + }, + ], + }, + ], + }, + { + id: 3, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/help-centre', + text: , + }, + { + id: 1, + href: 'https://community.deriv.com/', + text: , + }, + { + id: 2, + href: '/payment-methods', + text: , + }, + { + id: 3, + href: 'https://deriv.statuspage.io/', + text: , + }, + { + id: 4, + href: 'https://blog.deriv.com/', + text: , + }, + ], + }, + ], + }, + { + id: 4, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/regulatory', + text: , + }, + { + id: 1, + href: '/terms-and-conditions/#clients', + text: , + }, + { + id: 2, + href: '/responsible', + text: , + }, + ], + }, + { + id: 1, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/partners/deriv-prime', + text: , + }, + { + id: 1, + href: '/partners/affiliate-ib', + text: , + }, + { + id: 2, + href: '/partners/payment-agent', + text: , + }, + { + id: 3, + href: 'https://api.deriv.com/', + text: , + }, + ], + }, + ], + }, + { + id: 5, + layers: [ + { + id: 0, + type: 'node', + node: , + }, + ], + }, +] + +export const EuFooterNavData: FooterItems[] = [ + { + id: 0, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/who-we-are', + text: , + }, + { + id: 1, + href: '/why-choose-us', + text: , + }, + { + id: 3, + href: '/our-principles', + text: , + }, + { + id: 4, + href: '/partners', + text: , + }, + { + id: 5, + href: '/contact_us', + text: , + }, + { id: 6, href: '/careers', text: }, + { + id: 7, + href: 'https://derivlife.com', + text: , + }, + ], + }, + ], + }, + { + id: 1, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/trade-types/cfds', + text: , + }, + { + id: 1, + href: '/trade-types/multiplier', + text: , + }, + ], + }, + { + id: 1, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/markets/forex', + text: , + }, + { + id: 1, + href: '/markets/synthetic', + text: , + }, + { + id: 2, + href: '/markets/stock', + text: , + }, + { + id: 3, + href: '/markets/exchange-traded-funds', + text: , + }, + { + id: 4, + href: '/markets/cryptocurrencies', + text: , + }, + { + id: 5, + href: '/markets/commodities', + text: , + }, + ], + }, + ], + }, + { + id: 2, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { id: 0, href: '/dmt5', text: }, + { + id: 1, + href: '/dtrader', + text: , + }, + ], + }, + ], + }, + { + id: 3, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/help-centre', + text: , + }, + { + id: 1, + href: 'https://community.deriv.com/', + text: , + }, + { + id: 2, + href: '/payment-methods', + text: , + }, + { + id: 3, + href: 'https://deriv.statuspage.io/', + text: , + }, + { + id: 4, + href: 'https://blog.deriv.com/', + text: , + }, + ], + }, + ], + }, + { + id: 4, + layers: [ + { + id: 0, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/regulatory', + text: , + }, + { + id: 1, + href: '/terms-and-conditions/#clients', + text: , + }, + { + id: 2, + href: '/responsible', + text: , + }, + ], + }, + { + id: 1, + header: , + type: 'link', + items: [ + { + id: 0, + href: '/partners/deriv-prime', + text: , + }, + { + id: 1, + href: '/partners/affiliate-ib', + text: , + }, + { + id: 3, + href: 'https://api.deriv.com/', + text: , + }, + ], + }, + ], + }, + { + id: 5, + layers: [ + { + id: 0, + type: 'node', + node: , + }, + ], + }, +] + +export const warnText = ( + +) + +export const socialButtonsROW = [ + { + icon: , + href: 'https://www.facebook.com/derivdotcom', + 'data-cy': 'facebook', + }, + { + icon: , + href: 'https://www.instagram.com/deriv_official', + 'data-cy': 'instagram', + }, + { + icon: , + href: 'https://twitter.com/derivdotcom/', + 'data-cy': 'twitter', + }, + { + icon: , + href: 'https://www.youtube.com/@deriv', + 'data-cy': 'youtube', + }, + { + icon: , + href: 'https://www.linkedin.com/company/derivdotcom/', + 'data-cy': 'linkedin', + }, +] + +export const socialButtonsEU = [ + { + icon: , + href: 'https://www.facebook.com/DerivEU', + 'data-cy': 'facebook', + }, + { + icon: , + href: 'https://www.instagram.com/deriv_eu/', + 'data-cy': 'instagram', + }, + { + icon: , + href: 'https://twitter.com/deriv_eu/', + 'data-cy': 'twitter', + }, + { + icon: , + href: 'https://www.youtube.com/@deriv', + 'data-cy': 'youtube', + }, + { + icon: , + href: 'https://www.linkedin.com/company/derivdotcom/', + 'data-cy': 'linkedin', + }, +] + +export const socialButtonsCareers = [ + { + icon: , + href: 'https://www.facebook.com/derivcareers', + 'data-cy': 'facebook', + }, + { + icon: , + href: 'https://www.instagram.com/derivcareers/', + 'data-cy': 'instagram', + }, + { + icon: , + href: 'https://www.linkedin.com/company/derivdotcom/life/', + 'data-cy': 'linkedin', + }, +] diff --git a/src/features/components/templates/footer/description.tsx b/src/features/components/templates/footer/description.tsx new file mode 100644 index 00000000000..c75a69c50fd --- /dev/null +++ b/src/features/components/templates/footer/description.tsx @@ -0,0 +1,153 @@ +import React from 'react' +import { Text } from '@deriv/quill-design' +import clsx from 'clsx' +import { Localize } from 'components/localization' + +const sharedClasses = 'inline font-bold underline hover:text-typography-prominent' + +export const DescriptionContent = () => { + return ( + <> + + , +
, + , + ]} + /> + + + , + , + , + ]} + /> + + + ) +} + +export const DescriptionContentEU = () => { + return ( + <> + + , + ]} + /> + + + , + , + , + ]} + /> + + + ) +} + +export const DescriptionContentCPA = () => { + return ( + <> + + , + , + , + , + ]} + /> + + + , + , + , + ]} + /> + + + ) +} diff --git a/src/features/components/templates/footer/disclaimer/data.tsx b/src/features/components/templates/footer/disclaimer/data.tsx deleted file mode 100644 index 66bf10c0a2f..00000000000 --- a/src/features/components/templates/footer/disclaimer/data.tsx +++ /dev/null @@ -1,208 +0,0 @@ -import React from 'react' -import { SmartDisclaimerParagraph } from './types' -import Link from 'features/components/atoms/link' - -export const disclaimerContent: SmartDisclaimerParagraph[] = [ - { - id: 0, - data: { - text: '_t_Deriv Investments (Europe) Limited is licensed and regulated by the Malta Financial Services Authority under the Investment Services Act <0>(licence). Deriv.com Limited is the holding company for the above subsidiary with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ._t_', - components: [ - , - ], - }, - visibility: { - is_eu: true, - }, - }, - { - id: 1, - data: { - text: '_t_Deriv Investments (Europe) Limited is licensed and regulated by the Malta Financial Services Authority under the Investment Services Act (<0>licence). Deriv (FX) Ltd is licensed by the Labuan Financial Services Authority (<1>licence). Deriv (BVI) Ltd is licensed by the British Virgin Islands Financial Services Commission (<2>licence). Deriv (V) Ltd is licensed by the Vanuatu Financial Services Commission (<3>licence). Deriv (SVG) LLC has a registered office at First Floor, SVG Teachers Credit Union Uptown Building, Corner of James and Middle Street, Kingstown P.O., St Vincent and the Grenadines. Deriv.com Limited is the holding company for the above subsidiaries with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ._t_', - components: [ - , - , - , - , - ], - }, - visibility: { - is_cpa_plan: true, - }, - }, - { - id: 2, - data: { - text: '_t_Deriv (FX) Ltd is licensed by the Labuan Financial Services Authority (<0>licence). Deriv (BVI) Ltd is licensed by the British Virgin Islands Financial Services Commission (<1>licence). Deriv (V) Ltd is licensed by the Vanuatu Financial Services Commission (<2>licence). Deriv (SVG) LLC has a registered office at First Floor, SVG Teachers Credit Union Uptown Building, Corner of James and Middle Street, Kingstown P.O., St Vincent and the Grenadines. Deriv.com Limited is the holding company for the above subsidiaries with the registration number 71479 and the registered address is located at 2nd Floor, 1 Cornet Street, St Peter Port, Guernsey, GY1 1BZ._t_', - components: [ - , - , - , - ], - }, - visibility: { - is_eu: false, - is_cpa_plan: false, - }, - }, - { - id: 3, - data: { - text: '_t_Please read our <0>Terms and conditions,<1> Risk disclosure, and <2>Secure and responsible trading to fully understand the risks involved before using our services. The information on this website does not constitute investment advice._t_', - components: [ - , - , - , - ], - }, - visibility: { - is_non_eu: true, - }, - }, - { - id: 4, - data: { - text: '_t_Please read our <0>Terms and conditions,<1> Risk disclosure, and <2>Secure and responsible trading to fully understand the risks involved before using our services. The information on this website does not constitute investment advice._t_', - components: [ - , - , - , - ], - }, - visibility: { - is_eu: true, - }, - }, -] - -export const riskWarningContent: SmartDisclaimerParagraph[] = [ - { - id: 0, - data: { - text: '_t_CFDs and other products offered on this website are complex instruments with high risk of losing money rapidly owing to leverage. You should consider whether you understand how these products work and whether you can afford to risk losing your money._t_', - }, - visibility: { - is_non_eu: true, - }, - }, -] diff --git a/src/features/components/templates/footer/disclaimer/disclaimer.module.scss b/src/features/components/templates/footer/disclaimer/disclaimer.module.scss deleted file mode 100644 index be6678eda7e..00000000000 --- a/src/features/components/templates/footer/disclaimer/disclaimer.module.scss +++ /dev/null @@ -1,3 +0,0 @@ -.risk_warning_container { - border-radius: 1.5rem; -} diff --git a/src/features/components/templates/footer/disclaimer/index.tsx b/src/features/components/templates/footer/disclaimer/index.tsx deleted file mode 100644 index e3883e5ac54..00000000000 --- a/src/features/components/templates/footer/disclaimer/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import React, { useMemo } from 'react' -import { risk_warning_container } from './disclaimer.module.scss' -import { disclaimerContent, riskWarningContent } from './data' -import { DisclaimerParagraphConfig } from './types' -import Typography from 'features/components/atoms/typography' -import { Localize } from 'components/localization' -import useVisibleContent from 'components/hooks/use-visible-content' -import useRegion from 'components/hooks/use-region' -import Container from 'features/components/atoms/container' - -const Disclaimer = () => { - const { is_eu, is_non_eu, is_cpa_plan, is_row, is_region_loading } = useRegion() - - const visibility_config: DisclaimerParagraphConfig = useMemo(() => { - return { - is_cpa_plan, - is_eu, - is_non_eu, - is_non_eu_or_cpa_plan: is_non_eu || is_cpa_plan, - } - }, [is_cpa_plan, is_eu, is_non_eu]) - - const visible_disclaimer_content = useVisibleContent({ - content: disclaimerContent, - config: visibility_config, - }) - - const visible_risk_content = useVisibleContent({ - content: riskWarningContent, - config: visibility_config, - }) - - return ( - - {!is_region_loading && - visible_disclaimer_content.map((item) => ( - - - - ))} - {is_row && !is_cpa_plan && ( - - {visible_risk_content.map((item, index) => { - const not_last_item = - index !== visible_risk_content.length - 1 ? 'small' : undefined - return ( - - - - ) - })} - - )} - - ) -} - -export default Disclaimer diff --git a/src/features/components/templates/footer/disclaimer/types.ts b/src/features/components/templates/footer/disclaimer/types.ts deleted file mode 100644 index 9e031367bef..00000000000 --- a/src/features/components/templates/footer/disclaimer/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ReactElement } from 'react' -import { TSmartContent, TString } from 'types/generics' - -export type DisclaimerParagraph = { - text: TString - components?: ReactElement[] -} - -export type DisclaimerParagraphConfig = { - is_eu: boolean - is_non_eu: boolean - is_cpa_plan: boolean - is_non_eu_or_cpa_plan: boolean -} - -export type SmartDisclaimerParagraph = TSmartContent diff --git a/src/features/components/templates/footer/download.tsx b/src/features/components/templates/footer/download.tsx new file mode 100644 index 00000000000..d456643bbe6 --- /dev/null +++ b/src/features/components/templates/footer/download.tsx @@ -0,0 +1,65 @@ +import React from 'react' +import { + LabelPairedAppleLgIcon, + LabelPairedGooglePlayLgIcon, + LabelPairedHuaweiAppGalleryLgIcon, + // eslint-disable-next-line import/no-unresolved +} from '@deriv/quill-icons/LabelPaired' +import clsx from 'clsx' +import { StaticImage } from 'gatsby-plugin-image' +import { CustomLink } from '@deriv-com/components' +import { localize } from 'components/localization' + +const sharedClasses = + 'flex items-center justify-center gap-gap-md p-general-sm rounded-[4px] border-solid border-xs border-opacity-black-100' + +const DownloadBadges = () => { + return ( +
+ + + + + + + + + + + + +
+ ) +} + +export default DownloadBadges diff --git a/src/features/components/templates/footer/footer-icons/index.tsx b/src/features/components/templates/footer/footer-icons/index.tsx deleted file mode 100644 index f56af318f66..00000000000 --- a/src/features/components/templates/footer/footer-icons/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react' -import FooterSocialIcons from '../social-icons' -import DerivFooterLogo from 'images/svg/layout/deriv_footer_logo.svg' -import Image from 'features/components/atoms/image' -import Flex from 'features/components/atoms/flex-box' - -const FooterIcons = () => { - return ( - - - deriv logo image - - - - ) -} - -export default FooterIcons diff --git a/src/features/components/templates/footer/footer.module.scss b/src/features/components/templates/footer/footer.module.scss deleted file mode 100644 index 7ad947d0921..00000000000 --- a/src/features/components/templates/footer/footer.module.scss +++ /dev/null @@ -1,20 +0,0 @@ -@use 'features/styles/theme/theme-mixins' as *; -@import 'features/styles/theme/variables'; - -.footer { - opacity: 0.8; - - @include breakpoints(tablet) { - border-block-start: 1px solid $color-grey-44; - } -} - -.footer_grid { - display: grid; - inline-size: 100%; - grid-template-columns: 1fr; - - @include breakpoints(tablet) { - grid-template-columns: 2fr; - } -} diff --git a/src/features/components/templates/footer/index.tsx b/src/features/components/templates/footer/index.tsx index 825331c6aa8..f6a190a23eb 100644 --- a/src/features/components/templates/footer/index.tsx +++ b/src/features/components/templates/footer/index.tsx @@ -1,56 +1,53 @@ -import React from 'react' -import { footer_grid, footer } from './footer.module.scss' -import { footerLinks } from './data' -import FooterLinksColumn from './links-column' -import Disclaimer from './disclaimer' -import FooterIcons from './footer-icons' -import usePpc from 'features/hooks/use-ppc' -import Flex from 'features/components/atoms/flex-box' -import useVisibleContent from 'components/hooks/use-visible-content' -import Container from 'features/components/atoms/container' +import React, { useEffect, useState } from 'react' +import { Footer } from '@deriv-com/blocks' +import { qtMerge } from '@deriv/quill-design' +import { + EuFooterNavData, + RowFooterNavData, + socialButtonsCareers, + socialButtonsEU, + socialButtonsROW, + warnText, +} from './data' +import { DerivGoBannerAndAwards } from './banner-and-awards' +import { DescriptionContent, DescriptionContentCPA, DescriptionContentEU } from './description' import useRegion from 'components/hooks/use-region' +import { getLocationPathname } from 'common/utility' -interface FooterProps { - no_footer_links?: boolean -} - -const Footer = ({ no_footer_links = false }: FooterProps) => { - const { is_ppc } = usePpc() +export const MainFooter = () => { + const [is_career, setIsCareer] = useState(false) const { is_eu, is_cpa_plan } = useRegion() - const content = useVisibleContent({ content: footerLinks, config: { is_ppc } }) + useEffect(() => { + const current_path = getLocationPathname() + const splitted_path = current_path.split('/') + const is_career_page = splitted_path.includes('careers') + setIsCareer(is_career_page) + }, []) + + const socialButtons = is_career + ? socialButtonsCareers + : is_eu + ? socialButtonsEU + : socialButtonsROW return ( - - - - - {!no_footer_links && ( - - {content?.map((contentItem) => ( - - ))} - - )} - - - - + + ) } -export default Footer +export default MainFooter diff --git a/src/features/components/templates/footer/link-item/index.tsx b/src/features/components/templates/footer/link-item/index.tsx deleted file mode 100644 index 0860d9de8d9..00000000000 --- a/src/features/components/templates/footer/link-item/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react' -import { SmartFooterLink } from '../types' -import usePpc from 'features/hooks/use-ppc' -import useRegion from 'components/hooks/use-region' -import Link from 'features/components/atoms/link' -import { Localize } from 'components/localization' - -interface FooterLinkProps { - item: SmartFooterLink -} - -const FooterLink = ({ item: { data } }: FooterLinkProps) => { - const { is_ppc, is_ppc_redirect } = usePpc() - const { is_row } = useRegion() - const { url } = data - - const visible_url = typeof url === 'function' ? url({ is_ppc, is_ppc_redirect, is_row }) : url - - return ( - - - - ) -} - -export default FooterLink diff --git a/src/features/components/templates/footer/links-column/index.tsx b/src/features/components/templates/footer/links-column/index.tsx deleted file mode 100644 index 92deff95a84..00000000000 --- a/src/features/components/templates/footer/links-column/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react' -import { SmartFooterLinkColumn } from '../types' -import FooterLink from '../link-item' -import Flex from 'features/components/atoms/flex-box' -import Typography from 'features/components/atoms/typography' -import { Localize } from 'components/localization' -import useVisibleContent from 'components/hooks/use-visible-content' -import usePpc from 'features/hooks/use-ppc' -import useRegion from 'components/hooks/use-region' - -interface FooterLinksColumnProps { - item: SmartFooterLinkColumn -} - -const FooterLinksColumn = ({ item: { data } }: FooterLinksColumnProps) => { - const { is_ppc, is_ppc_redirect } = usePpc() - const { is_row } = useRegion() - - const links = useVisibleContent({ - content: data.links, - config: { is_ppc, is_ppc_redirect, is_row }, - }) - - return ( - - - - - {links.map((linkItem) => ( - - ))} - - ) -} - -export default FooterLinksColumn diff --git a/src/features/components/templates/footer/social-icons/data.ts b/src/features/components/templates/footer/social-icons/data.ts deleted file mode 100644 index 128c642262c..00000000000 --- a/src/features/components/templates/footer/social-icons/data.ts +++ /dev/null @@ -1,353 +0,0 @@ -import Telegram from 'images/svg/footer/telegram_icon.svg' -import Twitter from 'images/svg/footer/twitter_icon.svg' -import Youtube from 'images/svg/footer/youtube_icon.svg' -import Instagram from 'images/svg/footer/instagram_icon.svg' -import Facebook from 'images/svg/footer/facebook_icon.svg' -import Linkedin from 'images/svg/footer/linkedin_icon.svg' -import { TSmartContent, TString } from 'types/generics' -import { LinkUrlType } from 'features/types' - -export type SocialMediaAccount = { - url: ((config: Config) => LinkUrlType) | LinkUrlType - icon: string - image_alt?: TString -} - -export type Config = { - is_eu?: boolean - is_career_page?: boolean - is_ar?: boolean - is_es?: boolean -} - -export type SmartSocialAccount = TSmartContent - -export const socialMediaAccounts: SmartSocialAccount[] = [ - { - id: 0, - data: { - url: ({ is_ar, is_es }) => { - if (is_es) { - return { - type: 'non-company', - target: '_blank', - href: 'https://www.facebook.com/derivespanol', - } - } else if (is_ar) { - return { - type: 'non-company', - target: '_blank', - href: 'https://www.facebook.com/derivarabic', - } - } - return { - type: 'non-company', - target: '_blank', - href: 'https://www.facebook.com/derivdotcom', - } - }, - icon: Facebook, - image_alt: '_t_Facebook_t_', - }, - visibility: { - is_eu: false, - is_career_page: false, - }, - }, - { - id: 1, - data: { - url: ({ is_ar, is_es }) => { - if (is_es) { - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://www.facebook.com/derivespanol', - } - } else if (is_ar) { - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://www.facebook.com/derivarabic', - } - } - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://www.facebook.com/derivEU/', - } - }, - icon: Facebook, - image_alt: '_t_Facebook_t_', - }, - visibility: { - is_eu: true, - is_career_page: false, - }, - }, - { - id: 2, - data: { - url: { - type: 'non-company', - target: '_blank', - href: 'https://www.facebook.com/derivcareers', - show_eu_modal: true, - }, - icon: Facebook, - image_alt: '_t_Facebook_t_', - }, - visibility: { - is_career_page: true, - }, - }, - { - id: 3, - data: { - url: ({ is_ar, is_es }) => { - if (is_es) { - return { - type: 'non-company', - target: '_blank', - href: 'https://www.instagram.com/deriv_espanol/', - } - } else if (is_ar) { - return { - type: 'non-company', - target: '_blank', - href: 'https://www.instagram.com/deriv_ar/', - } - } - return { - type: 'non-company', - target: '_blank', - href: 'https://www.instagram.com/deriv_official/', - } - }, - icon: Instagram, - image_alt: '_t_Instagram_t_', - }, - visibility: { - is_eu: false, - is_career_page: false, - }, - }, - { - id: 4, - data: { - url: ({ is_ar, is_es }) => { - if (is_es) { - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://www.instagram.com/deriv_espanol/', - } - } else if (is_ar) { - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://www.instagram.com/deriv_ar/', - } - } - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://www.instagram.com/deriv_eu/', - } - }, - icon: Instagram, - image_alt: '_t_Instagram_t_', - }, - visibility: { - is_career_page: false, - is_eu: true, - }, - }, - { - id: 5, - data: { - url: { - type: 'non-company', - target: '_blank', - href: 'https://www.instagram.com/derivcareers/', - show_eu_modal: true, - }, - icon: Instagram, - image_alt: '_t_Instagram_t_', - }, - visibility: { - is_career_page: true, - }, - }, - { - id: 6, - data: { - url: ({ is_ar, is_es }) => { - if (is_es) { - return { - type: 'non-company', - target: '_blank', - href: 'https://twitter.com/DerivEspanol', - } - } else if (is_ar) { - return { - type: 'non-company', - target: '_blank', - href: 'https://twitter.com/DerivArabic', - } - } - return { - type: 'non-company', - target: '_blank', - href: 'https://twitter.com/derivdotcom/', - } - }, - icon: Twitter, - image_alt: '_t_Twitter_t_', - }, - visibility: { - is_career_page: false, - is_eu: false, - }, - }, - { - id: 7, - data: { - url: ({ is_ar, is_es }) => { - if (is_es) { - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://twitter.com/DerivEspanol', - } - } else if (is_ar) { - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://twitter.com/DerivArabic', - } - } - return { - type: 'non-company', - show_eu_modal: true, - target: '_blank', - href: 'https://www.twitter.com/deriv_eu/', - } - }, - icon: Twitter, - image_alt: '_t_Twitter_t_', - }, - visibility: { - is_career_page: false, - is_eu: true, - }, - }, - { - id: 8, - data: { - url: { - type: 'non-company', - target: '_blank', - href: 'https://www.youtube.com/@deriv', - }, - icon: Youtube, - image_alt: '_t_Youtube_t_', - }, - visibility: { - is_career_page: false, - is_eu: false, - }, - }, - { - id: 9, - data: { - url: { - type: 'non-company', - target: '_blank', - href: 'https://www.youtube.com/@deriv', - show_eu_modal: true, - }, - icon: Youtube, - image_alt: '_t_Youtube_t_', - }, - visibility: { - is_career_page: false, - is_eu: true, - }, - }, - { - id: 10, - data: { - url: { - type: 'non-company', - target: '_blank', - href: 'https://www.linkedin.com/company/derivdotcom/', - }, - icon: Linkedin, - image_alt: '_t_Linkedin_t_', - }, - visibility: { - is_career_page: false, - is_eu: false, - }, - }, - { - id: 11, - data: { - url: { - type: 'non-company', - target: '_blank', - href: 'https://www.linkedin.com/company/derivdotcom/', - show_eu_modal: true, - }, - icon: Linkedin, - image_alt: '_t_Linkedin_t_', - }, - visibility: { - is_career_page: false, - is_eu: true, - }, - }, - { - id: 12, - data: { - url: { - type: 'non-company', - target: '_blank', - href: 'https://www.linkedin.com/company/derivdotcom/life/', - show_eu_modal: true, - }, - icon: Linkedin, - image_alt: '_t_Linkedin_t_', - }, - visibility: { - is_career_page: true, - }, - }, - //temp removal of telegram : Start - // { - // id: 13, - // data: { - // url: { - // type: 'non-company', - // target: '_blank', - // href: 'https://t.me/derivdotcomofficial', - // }, - // icon: Telegram, - // image_alt: '_t_Telegram_t_', - // }, - // visibility: { - // is_eu: false, - // is_career_page: false, - // }, - // }, - //temp removal of telegram : End -] diff --git a/src/features/components/templates/footer/social-icons/index.tsx b/src/features/components/templates/footer/social-icons/index.tsx deleted file mode 100644 index 2d2b33dfd2e..00000000000 --- a/src/features/components/templates/footer/social-icons/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { socialMediaAccounts } from './data' -import Flex from 'features/components/atoms/flex-box' -import { getLocationPathname } from 'common/utility' -import Image from 'features/components/atoms/image' -import Link from 'features/components/atoms/link' -import useVisibleContent from 'components/hooks/use-visible-content' -import useRegion from 'components/hooks/use-region' - -const FooterSocialIcons = () => { - const [is_career, setIsCareer] = useState(false) - const { is_eu } = useRegion() - const { i18n } = useTranslation() - const { language } = i18n - - useEffect(() => { - const current_path = getLocationPathname() - const splitted_path = current_path.split('/') - const is_career_page = splitted_path.includes('careers') - setIsCareer(is_career_page) - }, []) - - const config = { - is_career_page: is_career, - is_eu, - is_ar: language === 'ar', - is_es: language === 'es', - } - - const icons = useVisibleContent({ - content: socialMediaAccounts, - config, - }) - - return ( - - {icons.map(({ data, id }) => { - const iconUrl = typeof data.url === 'function' ? data.url(config) : data.url - return ( - - {data.image_alt} - - ) - })} - - ) -} - -export default FooterSocialIcons diff --git a/src/features/components/templates/footer/types.ts b/src/features/components/templates/footer/types.ts deleted file mode 100644 index c68420548a4..00000000000 --- a/src/features/components/templates/footer/types.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { LinkUrlType } from 'features/types' -import { TSmartContent, TString } from 'types/generics' - -export interface FooterLinkConfig { - is_ppc: boolean - is_ppc_redirect: boolean - is_row: boolean -} - -export interface FooterLink { - text: TString - url: LinkUrlType | ((config: Partial) => LinkUrlType) -} - -export type SmartFooterLink = TSmartContent - -export interface FooterLinkColumn { - title: TString - links: SmartFooterLink[] -} - -export type SmartFooterLinkColumn = TSmartContent diff --git a/src/features/components/templates/hero-banners/trade/trade-hero.module.scss b/src/features/components/templates/hero-banners/trade/trade-hero.module.scss index cc5335ec88b..23c0142e4a7 100644 --- a/src/features/components/templates/hero-banners/trade/trade-hero.module.scss +++ b/src/features/components/templates/hero-banners/trade/trade-hero.module.scss @@ -3,7 +3,7 @@ .trade_hero { position: relative; - padding-block-start: 8rem; + padding-block-start: 9rem; direction: ltr; @include breakpoints(tablet) { diff --git a/src/features/components/templates/layout/data.ts b/src/features/components/templates/layout/data.ts new file mode 100644 index 00000000000..01966ba5b6d --- /dev/null +++ b/src/features/components/templates/layout/data.ts @@ -0,0 +1,106 @@ +import { LangItems } from '@deriv-com/providers' + +export const langItemsROW: LangItems = { + en: { + isDefault: true, + path: 'en', + displayName: 'English', + shortName: 'EN', + affiliateLang: 0, + }, + es: { + path: 'es', + displayName: 'Español', + shortName: 'ES', + affiliateLang: 8, + }, + fr: { + path: 'fr', + displayName: 'Français', + shortName: 'FR', + affiliateLang: 2, + }, + it: { + path: 'it', + displayName: 'Italiano', + shortName: 'IT', + affiliateLang: 3, + }, + pl: { + path: 'pl', + displayName: 'Polski', + shortName: 'PL', + affiliateLang: 5, + }, + pt: { + path: 'pt', + displayName: 'Português', + shortName: 'PT', + affiliateLang: 9, + }, + ru: { + path: 'ru', + displayName: 'Русский', + shortName: 'RU', + affiliateLang: 1, + }, + th: { + path: 'th', + displayName: 'Thai', + shortName: 'TH', + affiliateLang: 12, + }, + vi: { + path: 'vi', + displayName: 'Tiếng Việt', + shortName: 'VI', + affiliateLang: 6, + }, + tr: { + path: 'tr', + displayName: 'Türkçe', + shortName: 'TR', + affiliateLang: 14, + }, + zhcn: { + path: 'zh-cn', + displayName: '简体中文', + shortName: '简体', + affiliateLang: 10, + }, + zhtw: { + path: 'zh-tw', + displayName: '繁體中文', + shortName: '繁體', + affiliateLang: 11, + }, + bn: { + path: 'bn', + displayName: 'বাংলা', + shortName: 'BN', + affiliateLang: 15, + }, + ar: { + path: 'ar', + displayName: 'العربية', + shortName: 'AR', + }, + ko: { + path: 'ko', + displayName: '한국어', + shortName: 'KO', + affiliateLang: 16, + }, + de: { + path: 'de', + displayName: 'Deutsch', + shortName: 'DE', + affiliateLang: 16, + }, + si: { + path: 'si', + displayName: 'සිංහල', + shortName: 'SI', + affiliateLang: 17, + }, +} diff --git a/src/features/components/templates/layout/index.tsx b/src/features/components/templates/layout/index.tsx index 7174a2d83fa..3e481ef83f1 100644 --- a/src/features/components/templates/layout/index.tsx +++ b/src/features/components/templates/layout/index.tsx @@ -1,5 +1,8 @@ -import React, { ReactNode } from 'react' +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import React, { ReactNode, useCallback } from 'react' +import { LanguageProvider, SharedLinkProvider } from '@deriv-com/providers' import { main_wrapper } from './style.module.scss' +import { langItemsROW } from './data' import { usePlatformQueryParam } from 'components/hooks/use-platform-query-param' import PpcProvider from 'features/contexts/ppc-campaign/ppc.provider' import { getLanguage, isBrowser } from 'common/utility' @@ -8,6 +11,10 @@ import BrowserUpdateAlert from 'features/components/molecules/browser-update-ale import apiManager from 'common/websocket' import 'swiper/swiper-bundle.min.css' import 'features/styles/app.scss' +import { useLangDirection } from 'components/hooks/use-lang-direction' +import { LocaleContext } from 'components/localization' +import useLangSwitcher from 'features/components/molecules/language-switcher/useLangSwitcher' +import GatsbySharedLink from 'features/components/quill/shared-link' interface LayoutProps { is_ppc?: boolean is_ppc_redirect?: boolean @@ -28,17 +35,46 @@ const Layout = ({ }: LayoutProps) => { const { has_platform } = usePlatformQueryParam() + const lang_direction = useLangDirection() + const { locale } = React.useContext(LocaleContext) + const formatted_lang = locale.replace('_', '-') + + React.useEffect(() => { + document.body.dir = lang_direction + document.documentElement.lang = formatted_lang + }, [lang_direction, formatted_lang]) + + //need to update the language data and type + //here using langauge data from `i18n-config.js` + const { onSwitchLanguage, currentLang } = useLangSwitcher() + const activeLang = langItemsROW[currentLang.path.replace('-', '')] + + const onLanguageChange = useCallback( + (event) => { + onSwitchLanguage(`/${event.path}/`) + }, + [onSwitchLanguage], + ) + //Handle page layout when redirection from mobile app. if (has_platform) { return <>{children} } return ( - -
{children}
- - {!hide_layout_overlay && } -
+ + + +
{children}
+ + {!hide_layout_overlay && } +
+
+
) } diff --git a/src/features/components/templates/navigation/affiliates-nav/index.tsx b/src/features/components/templates/navigation/affiliates-nav/index.tsx new file mode 100644 index 00000000000..73eda7ef687 --- /dev/null +++ b/src/features/components/templates/navigation/affiliates-nav/index.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import { partners_nav_logo } from './nav.module.scss' +import Link from 'features/components/atoms/link' +import Image from 'features/components/atoms/image' +import NavTemplate from 'features/components/templates/navigation/template' +import LanguageSwitcher from 'features/components/molecules/language-switcher' +import PartnerNavLogo from 'images/svg/partner-nav-logo.svg' + +const AffiliateNav = () => { + return ( + ( + + {'nav + + )} + > + + + ) +} + +export default AffiliateNav diff --git a/src/features/components/templates/navigation/payment-agent-nav/payment-agent-nav.module.scss b/src/features/components/templates/navigation/affiliates-nav/nav.module.scss similarity index 74% rename from src/features/components/templates/navigation/payment-agent-nav/payment-agent-nav.module.scss rename to src/features/components/templates/navigation/affiliates-nav/nav.module.scss index 4e57b7afe32..50c03c72a18 100644 --- a/src/features/components/templates/navigation/payment-agent-nav/payment-agent-nav.module.scss +++ b/src/features/components/templates/navigation/affiliates-nav/nav.module.scss @@ -3,12 +3,9 @@ .partners_nav_logo { inline-size: 12rem; block-size: 2rem; + @include breakpoints(tablet) { inline-size: 19rem; block-size: 3.2rem; } -} - -html:not([lang='en']) .partners_buttons { - max-inline-size: 17rem; -} +} \ No newline at end of file diff --git a/src/features/components/templates/navigation/career-nav/career-nav.module.scss b/src/features/components/templates/navigation/career-nav/career-nav.module.scss deleted file mode 100644 index 113e22678ec..00000000000 --- a/src/features/components/templates/navigation/career-nav/career-nav.module.scss +++ /dev/null @@ -1,11 +0,0 @@ -@use 'features/styles/theme/theme-mixins' as *; - -.careers_nav_logo { - inline-size: 10.5rem; - block-size: 1.6rem; - - @include breakpoints(tablet) { - inline-size: 19rem; - block-size: 3.2rem; - } -} diff --git a/src/features/components/templates/navigation/career-nav/data.tsx b/src/features/components/templates/navigation/career-nav/data.tsx index f4b3c6d204d..df2e09146d5 100644 --- a/src/features/components/templates/navigation/career-nav/data.tsx +++ b/src/features/components/templates/navigation/career-nav/data.tsx @@ -1,28 +1,20 @@ -import { NavItems } from '../types' +import React from 'react' +import { NavLinkItems } from '@deriv-com/providers' +import { Localize } from 'components/localization' -const career_nav_items: NavItems = [ - { +export const career_nav_items: NavLinkItems = { + home: { id: 0, - data: { - type: 'single-item', - title: '_t_Home_t_', - content: { - type: 'internal', - to: '/careers/', - }, - }, + type: 'direct', + href: '/careers', + text: , }, - { + trade: { id: 1, - data: { - type: 'single-item', - title: '_t_Locations_t_', - content: { - type: 'internal', - to: '/careers/locations/', - }, - }, + type: 'direct', + href: '/careers/locations', + text: , }, -] +} export default career_nav_items diff --git a/src/features/components/templates/navigation/career-nav/index.tsx b/src/features/components/templates/navigation/career-nav/index.tsx index 1665cab0b1a..28bd6e4a528 100644 --- a/src/features/components/templates/navigation/career-nav/index.tsx +++ b/src/features/components/templates/navigation/career-nav/index.tsx @@ -1,48 +1,50 @@ import React from 'react' -import NavTemplate from '../template' -import career_nav_items from './data' -import { careers_nav_logo } from './career-nav.module.scss' -import Image from 'features/components/atoms/image' -import CareerNavLogo from 'images/svg/career-nav-icon.svg' -import Button from 'features/components/atoms/button' -import { Localize } from 'components/localization/localize' -import LanguageSwitcher from 'features/components/molecules/language-switcher' -import Link from 'features/components/atoms/link' -import Flex from 'features/components/atoms/flex-box' -import { localize } from 'components/localization' +import { MobileNavToggle, NavigationBlock } from '@deriv-com/blocks' +// eslint-disable-next-line import/no-unresolved +import { SubBrandDerivCareersBrandLightIcon } from '@deriv/quill-icons/Logo' +import { CustomLink } from '@deriv-com/components' +import { Button } from '@deriv/quill-design' +import TopNavigation from '../partners-nav/top-navigation' +import { career_nav_items } from './data' +import { Localize } from 'components/localization' + +const CareersButtons = () => { + return ( +
+ + + +
+ ) +} const CareerNav = () => { return ( - ( - - {localize('_t_Deriv - + + + )} items={career_nav_items} - has_centered_items - > - - - window.open('https://deriv.zohorecruit.eu/jobs/Careers', '_blank') - } - > - - - - + hasLanguageSwitch={false} + /> ) } diff --git a/src/features/components/templates/navigation/main-nav/content/about/index.ts b/src/features/components/templates/navigation/main-nav/content/about/index.ts deleted file mode 100644 index 15537f4485d..00000000000 --- a/src/features/components/templates/navigation/main-nav/content/about/index.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { SmartNavContent } from '../../../types' - -export const aboutUsNavSectionContent: SmartNavContent[] = [ - { - id: 0, - data: { - title: '_t_Who we are_t_', - url: { type: 'internal', to: '/who-we-are/' }, - }, - }, - { - id: 1, - data: { - title: '_t_Regulatory information_t_', - url: { type: 'internal', to: '/regulatory/' }, - }, - }, - { - id: 2, - data: { - title: '_t_Why choose us_t_', - url: { type: 'internal', to: '/why-choose-us/' }, - }, - }, - { - id: 3, - data: { - title: '_t_Partnership programmes_t_', - url: { type: 'internal', to: '/partners/' }, - }, - }, - { - id: 4, - data: { - title: '_t_Contact us_t_', - url: { type: 'internal', to: '/contact_us/' }, - }, - }, - { - id: 5, - data: { - title: '_t_Careers_t_', - url: { type: 'internal', to: '/careers/' }, - }, - }, - { - id: 6, - data: { - url: { type: 'company', url_name: 'derivlife', target: '_blank' }, - title: '_t_Deriv life_t_', - }, - }, -] - -export const aboutUsNavSectionContentMobile: SmartNavContent[] = [ - { - id: 0, - data: { - title: '_t_Who we are_t_', - url: { type: 'internal', to: '/who-we-are/' }, - }, - }, - { - id: 2, - data: { - title: '_t_Why choose us_t_', - url: { type: 'internal', to: '/why-choose-us/' }, - }, - }, - { - id: 3, - data: { - title: '_t_Partnership programmes_t_', - url: { type: 'internal', to: '/partners/' }, - }, - }, - { - id: 4, - data: { - title: '_t_Contact us_t_', - url: { type: 'internal', to: '/contact_us/' }, - }, - }, - { - id: 5, - data: { - title: '_t_Careers_t_', - url: { type: 'internal', to: '/careers/' }, - }, - }, - { - id: 6, - data: { - url: { type: 'company', url_name: 'derivlife', target: '_blank' }, - title: '_t_Deriv life_t_', - }, - }, -] diff --git a/src/features/components/templates/navigation/main-nav/content/index.ts b/src/features/components/templates/navigation/main-nav/content/index.ts deleted file mode 100644 index 1afd9659e02..00000000000 --- a/src/features/components/templates/navigation/main-nav/content/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { NavItems } from '../../types' -import { aboutUsNavSectionContent, aboutUsNavSectionContentMobile } from './about' -import { legalNavSectionContent } from './legal' -import { marketSectionContent } from './market' -import { partnerNavSectionContent } from './partner' -import { trade_nav_section_items } from './platform' -import { resourcesNavSectionContent } from './resources/data' - -export const mainItems: NavItems = [ - { - id: 0, - data: { - title: '_t_Trade_t_', - type: 'multi-column', - content: trade_nav_section_items, - }, - }, - { - id: 1, - data: { - title: '_t_Markets_t_', - type: 'multi-column', - content: marketSectionContent, - }, - }, - { - id: 2, - data: { - title: '_t_About us_t_', - type: 'single-column', - content: aboutUsNavSectionContent, - }, - visibility: { - is_mobile: false, - }, - }, - { - id: 22, - data: { - title: '_t_About us_t_', - type: 'single-column', - content: aboutUsNavSectionContentMobile, - }, - visibility: { - is_mobile: true, - }, - }, - - { - id: 3, - data: { - title: '_t_Resources_t_', - type: 'single-column', - content: resourcesNavSectionContent, - }, - }, - { - id: 4, - data: { - title: '_t_Legal_t_', - type: 'single-column', - content: legalNavSectionContent, - }, - visibility: { - is_mobile: true, - }, - }, - { - id: 5, - data: { - title: '_t_Partners_t_', - type: 'single-column', - content: partnerNavSectionContent, - }, - visibility: { - is_mobile: true, - }, - }, -] diff --git a/src/features/components/templates/navigation/main-nav/content/legal/index.ts b/src/features/components/templates/navigation/main-nav/content/legal/index.ts deleted file mode 100644 index f662c5088bf..00000000000 --- a/src/features/components/templates/navigation/main-nav/content/legal/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { SmartNavContent } from '../../../types' - -export const legalNavSectionContent: SmartNavContent[] = [ - { - id: 0, - data: { - title: '_t_Regulatory information_t_', - url: { type: 'internal', to: '/regulatory/' }, - }, - }, - { - id: 1, - data: { - title: '_t_Terms and conditions_t_', - url: { type: 'internal', to: '/terms-and-conditions/#clients' }, - }, - }, - { - id: 2, - data: { - title: '_t_Secure and responsible trading_t_', - url: { type: 'internal', to: '/responsible/' }, - }, - }, -] diff --git a/src/features/components/templates/navigation/main-nav/content/market/index.ts b/src/features/components/templates/navigation/main-nav/content/market/index.ts deleted file mode 100644 index fc10176bfd4..00000000000 --- a/src/features/components/templates/navigation/main-nav/content/market/index.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { SmartNavSectionColumns } from '../../../types' -import Commodities from 'images/svg/custom/rebranding/commodities-icon.svg' -import Cryptocurrencies from 'images/svg/custom/rebranding/cryptocurrencies-icon.svg' -import DerivedFX from 'images/svg/custom/rebranding/derived-fx-icon.svg' -import Forex from 'images/svg/custom/rebranding/forex-icon.svg' -import ETF from 'images/svg/custom/rebranding/etf-icon.svg' -import StockIndices from 'images/svg/custom/rebranding/stock-indices-icon.svg' - -export const marketSectionContent: SmartNavSectionColumns[] = [ - { - id: 0, - data: { - section: [ - { - id: 0, - data: { - aria_label: 'Forex', - icon: { - src: Forex, - alt: 'Forex', - }, - content: - '_t_Trade the world’s largest financial market with popular forex pairs._t_', - title: '_t_Forex_t_', - url: { type: 'internal', to: '/markets/forex/' }, - }, - }, - { - id: 1, - data: { - aria_label: 'Derived indices', - icon: { - src: DerivedFX, - alt: 'Synthetic indices', - }, - content: ({ is_eu }) => { - return is_eu - ? '_t_Enjoy trading asset prices derived from simulated markets._t_' - : '_t_Enjoy trading asset prices derived from real-world or simulated markets._t_' - }, - title: '_t_Derived indices_t_', - url: { type: 'internal', to: '/markets/synthetic/' }, - }, - }, - { - id: 2, - data: { - aria_label: 'Stocks & indices', - icon: { - src: StockIndices, - alt: 'Stocks & indices', - }, - content: - '_t_Predict broader market trends and diversify your risk with stocks & indices._t_', - title: '_t_Stocks & indices_t_', - url: { type: 'internal', to: '/markets/stock/' }, - }, - }, - ], - no_divider: true, - no_title: true, - }, - }, - { - id: 1, - data: { - section: [ - { - id: 3, - data: { - aria_label: 'Commodities', - icon: { - src: Commodities, - alt: 'Commodities', - }, - content: - "_t_Trade natural resources that are central to the world's economy._t_", - title: '_t_Commodities_t_', - url: { type: 'internal', to: '/markets/commodities/' }, - }, - }, - { - id: 4, - data: { - aria_label: 'Cryptocurrencies', - icon: { - src: Cryptocurrencies, - alt: 'Cryptocurrencies', - }, - content: - '_t_Trade with leverage on the price movement of popular crypto-fiat pairs._t_', - title: '_t_Cryptocurrencies_t_', - url: { type: 'internal', to: '/markets/cryptocurrencies/' }, - }, - }, - { - id: 3, - data: { - aria_label: 'Exchange-traded funds (ETFs)', - icon: { - src: ETF, - alt: 'Exchange-traded funds (ETFs)', - }, - content: - '_t_Diversify your portfolio and enjoy low-cost intraday trading with ETFs._t_', - title: '_t_Exchange-traded funds (ETFs)_t_', - url: { type: 'internal', to: '/markets/exchange-traded-funds/' }, - }, - }, - ], - no_divider: true, - no_title: true, - }, - }, -] diff --git a/src/features/components/templates/navigation/main-nav/content/partner/index.ts b/src/features/components/templates/navigation/main-nav/content/partner/index.ts deleted file mode 100644 index 82d568a130e..00000000000 --- a/src/features/components/templates/navigation/main-nav/content/partner/index.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { SmartNavContent } from '../../../types' - -export const partnerNavSectionContent: SmartNavContent[] = [ - { - id: 0, - data: { - title: '_t_Deriv Prime_t_', - url: { type: 'internal', to: '/partners/deriv-prime/' }, - }, - }, - { - id: 1, - data: { - title: '_t_Affiliates and IBs_t_', - url: { type: 'internal', to: '/partners/affiliate-ib/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 2, - data: { - title: '_t_Affiliates_t_', - url: { type: 'internal', to: '/partners/affiliate-ib/' }, - }, - visibility: { - is_eu: true, - }, - }, - { - id: 3, - data: { - title: '_t_Payment agents_t_', - url: { type: 'internal', to: '/partners/payment-agent/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 4, - data: { - title: '_t_API_t_', - url: { type: 'company', url_name: 'api', target: '_blank' }, - }, - }, -] diff --git a/src/features/components/templates/navigation/main-nav/content/platform/index.ts b/src/features/components/templates/navigation/main-nav/content/platform/index.ts deleted file mode 100644 index 04e7a333b4a..00000000000 --- a/src/features/components/templates/navigation/main-nav/content/platform/index.ts +++ /dev/null @@ -1,266 +0,0 @@ -import { SmartNavContent, SmartNavSectionColumns } from '../../../types' -import DerivcTrader from 'images/svg/custom/rebranding/deriv-ctrader-icon.svg' -import BinaryBot from 'images/svg/custom/rebranding/binarybot-icon.svg' -import DerivX from 'images/svg/custom/rebranding/deriv-x-icon.svg' -import CFD from 'images/svg/custom/rebranding/cfds-icon.svg' -import Multipliers from 'images/svg/custom/rebranding/multipliers-icon.svg' -import Options from 'images/svg/custom/rebranding/options-icon.svg' -import Smarttrader from 'images/svg/custom/rebranding/smarttrader-icon.svg' -import DerivGo from 'images/svg/custom/rebranding/deriv-go-icon.svg' -import DMT5 from 'images/svg/custom/rebranding/dmt5-icon.svg' -import DTrader from 'images/svg/custom/rebranding/dtrader-icon.svg' -import DerivBot from 'images/svg/custom/rebranding/deriv-bot-icon.svg' - -export const tradeTypesContent: SmartNavContent[] = [ - { - id: 0, - data: { - aria_label: 'Deriv Trader', - icon: { - src: DTrader, - alt: 'Dtrader trading platform', - }, - content: '_t_A whole new trading experience on a powerful yet easy to use platform._t_', - title: '_t_Deriv Trader_t_', - url: { type: 'internal', to: '/dtrader/' }, - }, - visibility: { - is_eu: true, - is_ppc: false, - is_row: true, - }, - }, - { - id: 1, - data: { - aria_label: 'CFDs', - icon: { - src: CFD, - alt: 'CFDs trade type', - }, - content: - '_t_Trade with leverage and tight spreads for better returns on successful trades._t_', - title: '_t_CFDs_t_', - url: { type: 'internal', to: '/trade-types/cfds/' }, - }, - visibility: { - is_ppc: false, - }, - }, - { - id: 2, - data: { - aria_label: 'Options', - icon: { - src: Options, - alt: 'Options trade type', - }, - content: '_t_Earn a range of payouts without risking more than your initial stake._t_', - title: '_t_Options_t_', - url: { type: 'internal', to: '/trade-types/options/digital-options/up-and-down/' }, - }, - visibility: { - is_ppc: false, - is_row: true, - }, - }, - { - id: 3, - data: { - aria_label: 'Multipliers', - icon: { - src: Multipliers, - alt: 'Multipliers trade type', - }, - content: - '_t_Get the upside of CFDs without the downside of losing more than your stake._t_', - title: '_t_Multipliers_t_', - url: { type: 'internal', to: '/trade-types/multiplier/' }, - }, - visibility: { - is_ppc: false, - }, - }, -] - -export const tradingPlatformsContent: SmartNavContent[] = [ - { - id: 0, - data: { - aria_label: 'Deriv MT5', - icon: { - src: DMT5, - alt: 'Deriv MT5 trading platform', - }, - content: '_t_Trade on Deriv MT5, the all-in-one CFD trading platform._t_', - title: '_t_Deriv MT5_t_', - url: ({ is_ppc_redirect }) => ({ - type: 'internal', - to: is_ppc_redirect ? '/landing/dmt5/' : '/dmt5/', - }), - }, - visibility: {}, - }, - { - id: 1, - data: { - aria_label: 'Derivx', - icon: { - src: DerivX, - alt: 'Deriv X trading paltform', - }, - content: '_t_A highly customisable and easy-to-use CFD trading platform._t_', - title: '_t_Deriv X_t_', - url: { type: 'internal', to: '/derivx/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 2, - data: { - aria_label: 'SmartTrader', - icon: { - src: Smarttrader, - alt: 'SmartTrader trading platform', - }, - content: '_t_Trade the world’s markets with our popular user-friendly platform._t_', - title: '_t_SmartTrader_t_', - url: { type: 'company', url_name: 'smart_trader', target: '_blank' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 3, - data: { - aria_label: 'Deriv Trader', - icon: { - src: DTrader, - alt: 'Deriv trader trading platform', - }, - content: '_t_A whole new trading experience on a powerful yet easy to use platform._t_', - title: '_t_Deriv Trader_t_', - url: { type: 'internal', to: '/dtrader/' }, - }, - visibility: { - is_eu: true, - }, - }, - { - id: 4, - data: { - aria_label: 'Deriv cTrader', - icon: { - src: DerivcTrader, - alt: 'Deriv cTrader trading platform', - }, - content: - '_t_An intuitive, multi-asset CFD trading platform with copy trading and custom indicators._t_', - title: '_t_Deriv cTrader_t_', - url: { type: 'internal', to: '/deriv-ctrader/' }, - }, - visibility: { - is_row: true, - }, - }, -] - -export const noTitleSection: SmartNavContent[] = [ - { - id: 0, - data: { - aria_label: 'Dtrader', - icon: { - src: DTrader, - alt: 'Dtrader trading platform', - }, - content: '_t_A whole new trading experience on a powerful yet easy to use platform._t_', - title: '_t_Deriv Trader_t_', - url: { type: 'internal', to: '/dtrader/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 1, - data: { - aria_label: 'Deriv GO', - icon: { - src: DerivGo, - alt: 'Deriv GO mobile trading app', - }, - content: - '_t_Trade multipliers on forex, cryptocurrencies, and synthetic indices with our mobile app._t_', - title: '_t_Deriv GO_t_', - - url: { type: 'internal', to: '/deriv-go/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 2, - data: { - aria_label: 'Deriv Bot', - icon: { - src: DerivBot, - alt: 'Deriv Bot Automated trading', - }, - content: '_t_Automated trading at your fingertips. No coding needed._t_', - title: '_t_Deriv Bot_t_', - - url: { type: 'internal', to: '/dbot/' }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 3, - data: { - aria_label: 'Binary Bot', - icon: { - src: BinaryBot, - alt: 'Binary bot for creating trading bot', - }, - content: - '_t_Our classic "drag-and-drop" tool for creating trading bots, featuring pop-up trading charts, for advanced users._t_', - title: '_t_Binary Bot_t_', - url: { type: 'company', url_name: 'binary_bot', target: '_blank' }, - }, - visibility: { - is_row: true, - }, - }, -] - -export const trade_nav_section_items: SmartNavSectionColumns[] = [ - { - id: 0, - data: { - title: '_t_Trade types_t_', - section: tradeTypesContent, - }, - }, - { - id: 1, - data: { - title: '_t_Trading platforms_t_', - section: tradingPlatformsContent, - }, - }, - { - id: 3, - data: { - section: noTitleSection, - }, - visibility: { - is_row: true, - }, - }, -] diff --git a/src/features/components/templates/navigation/main-nav/content/resources/data.ts b/src/features/components/templates/navigation/main-nav/content/resources/data.ts deleted file mode 100644 index b95809d063b..00000000000 --- a/src/features/components/templates/navigation/main-nav/content/resources/data.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { SmartNavContent } from '../../../types' - -export const resourcesNavSectionContent: SmartNavContent[] = [ - { - id: 0, - data: { - title: '_t_Help centre_t_', - url: { type: 'internal', to: '/help-centre/' }, - }, - }, - { - id: 1, - data: { - title: '_t_Community_t_', - url: { type: 'company', url_name: 'community', target: '_blank' }, - }, - }, - { - id: 2, - data: { - title: '_t_Traders’ tools_t_', - url: { type: 'internal', to: '/trader-tools/' }, - }, - }, - { - id: 3, - data: { - title: '_t_Payment methods_t_', - url: { type: 'internal', to: '/payment-methods/' }, - }, - }, - { - id: 4, - data: { - title: '_t_Deriv MT5 Signals_t_', - url: { type: 'internal', to: '/dmt5-trading-signals/#signal-subscriber/' }, - }, - }, - { - id: 5, - data: { - title: '_t_Status page_t_', - url: { type: 'non-company', href: 'https://deriv.statuspage.io', show_eu_modal: true }, - }, - visibility: { - is_mobile: true, - }, - }, - { - id: 6, - data: { - title: '_t_Deriv Blog_t_', - url: { type: 'company', url_name: 'blog', target: '_blank' }, - }, - }, -] diff --git a/src/features/components/templates/navigation/main-nav/data.tsx b/src/features/components/templates/navigation/main-nav/data.tsx new file mode 100644 index 00000000000..0fb0ee3727c --- /dev/null +++ b/src/features/components/templates/navigation/main-nav/data.tsx @@ -0,0 +1,821 @@ +import React from 'react' +import { NavLinkItems } from '@deriv-com/providers' +import { + IllustrativeCfdsIcon, + IllustrativeDerivedIcon, + IllustrativeMultipliersIcon, + IllustrativeOptionsIcon, + IllustrativeForexIcon, + IllustrativeStocksAndIndicesIcon, + IllustrativeCommoditiesIcon, + IllustrativeCryptocurrenciesIcon, + IllustrativeEtfIcon, + // eslint-disable-next-line import/no-unresolved +} from '@deriv/quill-icons/Illustrative' +import { + DerivProductDerivBotBrandDarkLogoHorizontalIcon, + DerivProductDerivGoBrandDarkLogoHorizontalIcon, + DerivProductDerivTraderBrandDarkLogoHorizontalIcon, + DerivProductDerivXBrandDarkLogoIcon, + PartnersProductDerivCtraderBrandDarkLogoHorizontalIcon, + PartnersProductDerivMt5BrandDarkLogoHorizontalIcon, + PartnersProductSmarttraderBrandDarkLogoIcon, + PartnersProductBinaryBotBrandDarkLogoHorizontalIcon, + // eslint-disable-next-line import/no-unresolved +} from '@deriv/quill-icons/Logo' +import { Localize } from 'components/localization' + +export const mainRowNavItems: NavLinkItems = { + trade: { + id: 0, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + header: { + text: , + type: 'text', + }, + items: [ + { + id: 0, + href: '/trade-types/cfds', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 1, + href: '/trade-types/options', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 2, + href: '/trade-types/multiplier', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + ], + }, + { + id: 1, + header: { + text: , + type: 'text', + }, + items: [ + { + id: 0, + href: '/dmt5', + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + }, + { + id: 1, + href: '/derivx', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 2, + href: '/deriv-ctrader', + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + }, + { + id: 3, + href: 'https://smarttrader.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + target: '_blank', + }, + ], + }, + { + id: 2, + header: { + text: null, + type: 'text', + }, + items: [ + { + id: 0, + href: '/dtrader', + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + }, + { + id: 1, + href: '/deriv-go', + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + }, + { + id: 2, + href: '/dbot', + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + }, + { + id: 3, + href: 'https://bot.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + target: '_blank', + }, + ], + }, + ], + }, + markets: { + id: 1, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/markets/forex', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 1, + href: '/markets/synthetic', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 2, + href: '/markets/stock', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + ], + }, + { + id: 1, + items: [ + { + id: 0, + href: '/markets/commodities', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 1, + href: '/markets/cryptocurrencies', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 2, + href: '/markets/exchange-traded-funds', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + ], + }, + ], + }, + 'about-us': { + id: 2, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/who-we-are', + text: , + type: 'direct', + }, + { + id: 1, + href: '/regulatory', + text: , + type: 'direct', + isDesktopNavOnly: true, + }, + { + id: 2, + href: '/why-choose-us', + text: , + type: 'direct', + }, + { + id: 3, + href: '/partners', + text: , + type: 'direct', + }, + ], + }, + { + id: 1, + items: [ + { + id: 0, + href: '/contact_us', + text: , + type: 'direct', + }, + { + id: 1, + href: '/careers', + text: , + type: 'direct', + }, + { + id: 2, + href: 'https://derivlife.com', //need to update target/type in link component + text: , + type: 'direct', + external: true, + target: '_blank', + }, + ], + }, + ], + }, + resources: { + id: 3, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/help-centre', + text: , + type: 'direct', + }, + { + id: 1, + href: 'https://community.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + external: true, + target: '_blank', + }, + { + id: 2, + href: '/trader-tools', + text: , + type: 'direct', + }, + { + id: 3, + href: '/payment-methods', + text: , + type: 'direct', + }, + ], + }, + { + id: 1, + items: [ + { + id: 0, + href: '/dmt5-trading-signals', + text: , + type: 'direct', + }, + { + id: 1, + href: 'https://deriv.statuspage.io/', //need to update target/type in link component + text: , + type: 'direct', + isMobileNavOnly: true, + }, + { + id: 2, + href: 'https://blog.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + external: true, + target: '_blank', + }, + ], + }, + ], + }, + legal: { + id: 4, + type: 'nav-dropdown', + text: , + isMobileNavOnly: true, + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/regulatory', + text: , + type: 'direct', + }, + { + id: 1, + href: '/terms-and-conditions', + text: , + type: 'direct', + }, + { + id: 2, + href: '/responsible', + text: , + type: 'direct', + }, + ], + }, + ], + }, + partners: { + id: 5, + type: 'nav-dropdown', + text: , + isMobileNavOnly: true, + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/partners/deriv-prime', + text: , + type: 'direct', + }, + { + id: 1, + href: '/partners/affiliate-ib', + text: , + type: 'direct', + }, + { + id: 2, + href: '/partners/payment-agent', + text: , + type: 'direct', + }, + { + id: 3, + href: 'https://api.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + }, + ], + }, + ], + }, +} + +export const mainEuNavItems: NavLinkItems = { + trade: { + id: 0, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + header: { + text: , + type: 'text', + }, + items: [ + { + id: 0, + href: '/trade-types/cfds', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 2, + href: '/trade-types/multiplier', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + ], + }, + { + id: 1, + header: { + text: , + type: 'text', + }, + items: [ + { + id: 0, + href: '/dmt5', + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + }, + { + id: 1, + href: '/dtrader', + text: , + type: 'direct', + icon: ( + + ), + description: ( + + ), + }, + ], + }, + ], + }, + markets: { + id: 1, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/markets/forex', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 1, + href: '/markets/synthetic', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 2, + href: '/markets/stock', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + ], + }, + { + id: 1, + items: [ + { + id: 0, + href: '/markets/commodities', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 1, + href: '/markets/cryptocurrencies', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + { + id: 2, + href: '/markets/exchange-traded-funds', + text: , + type: 'direct', + icon: , + description: ( + + ), + }, + ], + }, + ], + }, + 'about-us': { + id: 2, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/who-we-are', + text: , + type: 'direct', + }, + { + id: 1, + href: '/regulatory', + text: , + type: 'direct', + isDesktopNavOnly: true, + }, + { + id: 2, + href: '/why-choose-us', + text: , + type: 'direct', + }, + { + id: 3, + href: '/partners', + text: , + type: 'direct', + }, + ], + }, + { + id: 1, + items: [ + { + id: 0, + href: '/contact_us', + text: , + type: 'direct', + }, + { + id: 1, + href: '/careers', + text: , + type: 'direct', + }, + { + id: 2, + href: 'https://derivlife.com', //need to update target/type in link component + text: , + type: 'direct', + external: true, + target: '_blank', + }, + ], + }, + ], + }, + resources: { + id: 3, + type: 'nav-dropdown', + text: , + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/help-centre', + text: , + type: 'direct', + }, + { + id: 1, + href: 'https://community.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + external: true, + target: '_blank', + }, + { + id: 2, + href: '/trader-tools', + text: , + type: 'direct', + }, + { + id: 3, + href: '/payment-methods', + text: , + type: 'direct', + }, + ], + }, + { + id: 1, + items: [ + { + id: 0, + href: '/dmt5-trading-signals', + text: , + type: 'direct', + }, + { + id: 1, + href: 'https://deriv.statuspage.io/', //need to update target/type in link component + text: , + type: 'direct', + isMobileNavOnly: true, + }, + { + id: 2, + href: 'https://blog.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + external: true, + target: '_blank', + }, + ], + }, + ], + }, + legal: { + id: 4, + type: 'nav-dropdown', + text: , + isMobileNavOnly: true, + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/regulatory', + text: , + type: 'direct', + }, + { + id: 1, + href: '/terms-and-conditions', + text: , + type: 'direct', + }, + { + id: 2, + href: '/responsible', + text: , + type: 'direct', + }, + ], + }, + ], + }, + partners: { + id: 5, + type: 'nav-dropdown', + text: , + isMobileNavOnly: true, + columns: [ + { + id: 0, + items: [ + { + id: 0, + href: '/partners/deriv-prime', + text: , + type: 'direct', + }, + { + id: 1, + href: '/partners/affiliate-ib', + text: , + type: 'direct', + }, + { + id: 3, + href: 'https://api.deriv.com/', //need to update target/type in link component + text: , + type: 'direct', + }, + ], + }, + ], + }, +} diff --git a/src/features/components/templates/navigation/main-nav/index.tsx b/src/features/components/templates/navigation/main-nav/index.tsx index 607aef50b47..b3a8a607c16 100644 --- a/src/features/components/templates/navigation/main-nav/index.tsx +++ b/src/features/components/templates/navigation/main-nav/index.tsx @@ -1,25 +1,19 @@ import React from 'react' -import NavTemplate from '../template' -import MainNavButtons from './main-nav-buttons' -import { main_nav_logo } from './main-nav.module.scss' -import { mainItems } from './content' -import Image from 'features/components/atoms/image' -import LogoImage from 'images/common/rebranding_logo.svg' -import Link from 'features/components/atoms/link' +import { NavigationBlock } from '@deriv-com/blocks' +import MainNavigationButtons from './nav.buttons' +import MainNavigationLogo from './nav.logo' +import { mainEuNavItems, mainRowNavItems } from './data' +import useRegion from 'components/hooks/use-region' -const MainNav = () => { +const MainRowNavigation = () => { + const { is_eu } = useRegion() return ( - ( - - deriv-logo - - )} - items={mainItems} - > - - + ) } -export default MainNav +export default MainRowNavigation diff --git a/src/features/components/templates/navigation/main-nav/main-nav-buttons/index.tsx b/src/features/components/templates/navigation/main-nav/main-nav-buttons/index.tsx deleted file mode 100644 index 325998fb7fd..00000000000 --- a/src/features/components/templates/navigation/main-nav/main-nav-buttons/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react' -import useAuthCheck from 'components/hooks/use-auth-check' -import { Localize } from 'components/localization' -import Button from 'features/components/atoms/button' -import useHandleLogin from 'components/hooks/use-handle-login' -import useHandleSignup from 'components/hooks/use-handle-signup' -import usePpc from 'features/hooks/use-ppc' -import LanguageSwitcher from 'features/components/molecules/language-switcher' -import Flex from 'features/components/atoms/flex-box' -import { handleRedirectToTradersHub } from 'components/custom/utils' - -const MainNavButtons = () => { - const [is_logged_in] = useAuthCheck() - const { is_ppc_redirect } = usePpc() - - const handleLogin = useHandleLogin() - const handleSignup = useHandleSignup(is_ppc_redirect) - - return ( - - {is_logged_in ? ( - - - - ) : ( - <> - - - - - - - - )} - - - ) -} - -export default MainNavButtons diff --git a/src/features/components/templates/navigation/main-nav/main-nav.module.scss b/src/features/components/templates/navigation/main-nav/main-nav.module.scss deleted file mode 100644 index 56061fe826d..00000000000 --- a/src/features/components/templates/navigation/main-nav/main-nav.module.scss +++ /dev/null @@ -1,11 +0,0 @@ -@use 'features/styles/theme/theme-mixins' as *; - -.main_nav_logo { - inline-size: 7rem; - block-size: 2.4rem; - - @include breakpoints(tablet) { - inline-size: 9.6rem; - block-size: 3.6rem; - } -} diff --git a/src/features/components/templates/navigation/main-nav/nav.buttons.tsx b/src/features/components/templates/navigation/main-nav/nav.buttons.tsx new file mode 100644 index 00000000000..d867140aad3 --- /dev/null +++ b/src/features/components/templates/navigation/main-nav/nav.buttons.tsx @@ -0,0 +1,48 @@ +import React from 'react' +import { MobileNavToggle } from '@deriv-com/blocks' +import { Button } from '@deriv/quill-design' +// eslint-disable-next-line import/no-unresolved +import { LabelPairedGridLgBoldIcon } from '@deriv/quill-icons/LabelPaired' +import { Localize } from 'components/localization' +import { handleRedirectToTradersHub } from 'components/custom/utils' +import useAuthCheck from 'components/hooks/use-auth-check' +import useHandleLogin from 'components/hooks/use-handle-login' +import useHandleSignup from 'components/hooks/use-handle-signup' +import usePpc from 'features/hooks/use-ppc' + +export const MainNavigationButtons = () => { + const [is_logged_in] = useAuthCheck() + const { is_ppc_redirect } = usePpc() + + const handleLogin = useHandleLogin() + const handleSignup = useHandleSignup(is_ppc_redirect) + + return ( +
+ {is_logged_in ? ( + + ) : ( + <> + + + + )} + +
+ ) +} + +export default MainNavigationButtons diff --git a/src/features/components/templates/navigation/main-nav/nav.logo.tsx b/src/features/components/templates/navigation/main-nav/nav.logo.tsx new file mode 100644 index 00000000000..ab2ffd0c113 --- /dev/null +++ b/src/features/components/templates/navigation/main-nav/nav.logo.tsx @@ -0,0 +1,14 @@ +import React from 'react' +import { CustomLink } from '@deriv-com/components' +// eslint-disable-next-line import/no-unresolved +import { BrandDerivWordmarkCoralIcon } from '@deriv/quill-icons/Logo' + +export const MainNavigationLogo = () => { + return ( + + + + ) +} + +export default MainNavigationLogo diff --git a/src/features/components/templates/navigation/market-nav/index.tsx b/src/features/components/templates/navigation/market-nav/index.tsx deleted file mode 100644 index ac5f90ef165..00000000000 --- a/src/features/components/templates/navigation/market-nav/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { StringParam, useQueryParam } from 'use-query-params' -import NavTemplate from '../template' -import { mainItems } from '../main-nav/content' -import MainNavButtons from '../main-nav/main-nav-buttons' -import MarketBottomNav from '../template/market-bottom-nav' -import { market_nav_logo } from './market-nav.module.scss' -import Image from 'features/components/atoms/image' -import LogoImage from 'images/common/rebranding_logo.svg' -import Link from 'features/components/atoms/link' -import { localize } from 'components/localization' - -const MarketNav = () => { - const [platform] = useQueryParam('platform', StringParam) - const [is_deriv_go, setIsDerivGo] = useState(false) - - useEffect(() => { - setIsDerivGo(platform === 'derivgo') - }, [platform]) - - return ( - <> - {is_deriv_go ? null : ( - } - renderLogo={() => ( - - {localize('_t_deriv-logo_t_')} - - )} - items={mainItems} - > - - - )} - - ) -} - -export default MarketNav diff --git a/src/features/components/templates/navigation/market-nav/market-nav.module.scss b/src/features/components/templates/navigation/market-nav/market-nav.module.scss deleted file mode 100644 index 30cc73afc59..00000000000 --- a/src/features/components/templates/navigation/market-nav/market-nav.module.scss +++ /dev/null @@ -1,11 +0,0 @@ -@use 'features/styles/theme/theme-mixins' as *; - -.market_nav_logo { - inline-size: 7rem; - block-size: 2.4rem; - - @include breakpoints(tablet) { - inline-size: 9.6rem; - block-size: 3.6rem; - } -} diff --git a/src/features/components/templates/navigation/partners-nav/data.tsx b/src/features/components/templates/navigation/partners-nav/data.tsx new file mode 100644 index 00000000000..5b423b719b6 --- /dev/null +++ b/src/features/components/templates/navigation/partners-nav/data.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import { NavLinkItems } from '@deriv-com/providers' +import { Localize } from 'components/localization' +import { deriv_api_url } from 'common/constants' + +export const partnersItems: NavLinkItems = { + trade: { + id: 0, + type: 'direct', + href: '/partners/deriv-prime', + text: , + }, + affiliates: { + id: 1, + href: '/partners/affiliate-ib', + text: , + type: 'direct', + }, + 'payment-agents': { + id: 2, + href: '/partners/payment-agent', + text: , + type: 'direct', + }, + 'deriv-api': { + id: 3, + href: deriv_api_url, + text: , + type: 'direct', + }, +} + +export const partnersEUItems: NavLinkItems = { + trade: { + id: 0, + type: 'direct', + href: '/partners/deriv-prime', + text: , + }, + affiliates: { + id: 1, + href: '/partners/affiliate-ib', + text: , + type: 'direct', + }, + 'deriv-api': { + id: 3, + href: deriv_api_url, + text: , + type: 'direct', + }, +} diff --git a/src/features/components/templates/navigation/partners-nav/index.tsx b/src/features/components/templates/navigation/partners-nav/index.tsx new file mode 100644 index 00000000000..dacfc236968 --- /dev/null +++ b/src/features/components/templates/navigation/partners-nav/index.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import { NavigationBlock } from '@deriv-com/blocks' +// eslint-disable-next-line import/no-unresolved +import { SubBrandDerivPartnersBrandLightIcon } from '@deriv/quill-icons/Logo' +import { CustomLink } from '@deriv-com/components' +import TopNavigation from './top-navigation' +import { partnersItems, partnersEUItems } from './data' +import PartnersNavButtons from './nav.buttons' +import useRegion from 'components/hooks/use-region' + +const PartnersNav = () => { + const { is_eu } = useRegion() + + return ( + ( + + + + )} + items={is_eu ? partnersEUItems : partnersItems} + /> + ) +} + +export default PartnersNav diff --git a/src/features/components/templates/navigation/partners-nav/nav.buttons.tsx b/src/features/components/templates/navigation/partners-nav/nav.buttons.tsx new file mode 100644 index 00000000000..ad85ba9fb79 --- /dev/null +++ b/src/features/components/templates/navigation/partners-nav/nav.buttons.tsx @@ -0,0 +1,72 @@ +import React, { useMemo } from 'react' +import { MobileNavToggle } from '@deriv-com/blocks' +import { Button } from '@deriv/quill-design' +import { getLocationPathname } from 'common/utility' +import useRegion from 'components/hooks/use-region' +import { Localize, LocalizedLink } from 'components/localization' +import useAffiliateSignupLink from 'features/hooks/ab-testing/use-partners-signup-link' + +const AffiliateButtons = () => { + const { affiliate_signup_link } = useAffiliateSignupLink() + return ( + <> + + + + ) +} + +const PaymentAgentButtons = () => { + return ( +
+ + + + +
+ ) +} + +const PartnersNavButtons = () => { + const { is_eu } = useRegion() + const path_name = getLocationPathname() + + const affiliate_buttons = useMemo(() => { + return !path_name ? null : path_name.includes('affiliate-ib') ? ( + + ) : path_name.includes('payment-agent') && !is_eu ? ( + + ) : null + }, [is_eu, path_name]) + + return ( +
+ {affiliate_buttons} + +
+ ) +} + +export default PartnersNavButtons diff --git a/src/features/components/templates/navigation/partners-nav/prime-nav.tsx b/src/features/components/templates/navigation/partners-nav/prime-nav.tsx new file mode 100644 index 00000000000..569c38ec846 --- /dev/null +++ b/src/features/components/templates/navigation/partners-nav/prime-nav.tsx @@ -0,0 +1,54 @@ +import React from 'react' +import { MobileNavToggle, NavigationBlock } from '@deriv-com/blocks' +// eslint-disable-next-line import/no-unresolved +import { SubBrandDerivPrimeBrandLightIcon } from '@deriv/quill-icons/Logo' +import { Button } from '@deriv/quill-design' +import { CustomLink } from '@deriv-com/components' +import { partnersEUItems, partnersItems } from './data' +import TopNavigation from './top-navigation' +import useRegion from 'components/hooks/use-region' +import { Localize } from 'components/localization' +import useScrollToElement from 'features/hooks/use-scroll-to-element' + +const PrimeNavButtons = () => { + return ( +
+ + + +
+ ) +} + +const PrimeNav = () => { + const { is_eu } = useRegion() + return ( + ( + + + + )} + items={is_eu ? partnersEUItems : partnersItems} + /> + ) +} + +export default PrimeNav diff --git a/src/features/components/templates/navigation/partners-nav/top-navigation.tsx b/src/features/components/templates/navigation/partners-nav/top-navigation.tsx new file mode 100644 index 00000000000..1b56c5ebc77 --- /dev/null +++ b/src/features/components/templates/navigation/partners-nav/top-navigation.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { CustomLink } from '@deriv-com/components' +import clsx from 'clsx' + +export const TopNavigation = () => { + const sharedClasses = 'text-body-sm hover:text-typography-prominent hover:no-underline' + return ( +
+ + Deriv website + + + Who we are + + + Contact us + +
+ ) +} + +export default TopNavigation diff --git a/src/features/components/templates/navigation/payment-agent-nav/data.tsx b/src/features/components/templates/navigation/payment-agent-nav/data.tsx deleted file mode 100644 index 41b97b0905d..00000000000 --- a/src/features/components/templates/navigation/payment-agent-nav/data.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { NavItems } from '../types' - -const affiliateNavItems: NavItems = [ - { - id: 0, - data: { - type: 'single-item', - title: '_t_Deriv Prime_t_', - content: { - type: 'internal', - to: '/partners/deriv-prime/', - }, - }, - }, - { - id: 1, - data: { - type: 'single-item', - title: '_t_Affiliates and IBs_t_', - content: { - type: 'internal', - to: '/partners/affiliate-ib/', - }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 2, - data: { - type: 'single-item', - title: '_t_Affiliates_t_', - content: { - type: 'internal', - to: '/partners/affiliate-ib/', - }, - }, - visibility: { - is_eu: true, - }, - }, - { - id: 3, - data: { - type: 'single-item', - title: '_t_Payment agents_t_', - content: { - type: 'internal', - to: '/partners/payment-agent/', - }, - }, - visibility: { - is_row: true, - }, - }, - { - id: 4, - data: { - type: 'single-item', - title: '_t_API_t_', - content: { - type: 'company', - url_name: 'api', - }, - }, - }, -] -export default affiliateNavItems diff --git a/src/features/components/templates/navigation/payment-agent-nav/index.tsx b/src/features/components/templates/navigation/payment-agent-nav/index.tsx deleted file mode 100644 index 11905ae6eba..00000000000 --- a/src/features/components/templates/navigation/payment-agent-nav/index.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { useMemo } from 'react' -import NavTemplate from '../template' -import affiliateNavItems from './data' -import { partners_nav_logo, partners_buttons } from './payment-agent-nav.module.scss' -import PrimeLogo from 'images/svg/deriv-prime/deriv-prime-logo.svg' -import PartnerNavLogo from 'images/svg/partner-nav-logo.svg' -import Image from 'features/components/atoms/image' -import Button from 'features/components/atoms/button' -import { Localize } from 'components/localization/localize' -import LanguageSwitcher from 'features/components/molecules/language-switcher' -import Link from 'features/components/atoms/link' -import Flex from 'features/components/atoms/flex-box' -import { getLocationPathname } from 'common/utility' -import useScrollToElement from 'features/hooks/use-scroll-to-element' -import useRegion from 'components/hooks/use-region' -import { TString } from 'types/generics' -import { localize } from 'components/localization' - -type contentType = { - [T: string]: TString -} - -const PaymentAgentAffiliateNav = ({ is_prime_page = false }: { is_prime_page?: boolean }) => { - const path_name = getLocationPathname() - const clickToScrollHandler = useScrollToElement('getintouch') - - const { is_eu } = useRegion() - const texts: contentType = is_eu - ? { - login: '_t_Affiliate log in_t_', - sign_up: '_t_Affiliate sign up_t_', - } - : { - login: '_t_Affiliate & IB Log in_t_', - sign_up: '_t_Affiliate & IB sign up_t_', - } - - const generate_buttons = useMemo(() => { - return !path_name ? null : path_name.includes('deriv-prime') ? ( - - - - ) : ( - <> - - window.open('https://login.deriv.com/signin.php?lang=0', '_blank') - } - outlined - visible={'larger-than-tablet'} - className={partners_buttons} - > - - - - window.open('https://login.deriv.com/signin.php?lang=0', '_blank') - } - outlined - visible={'phone-and-tablet'} - > - - - window.open('https://login.deriv.com/signup.php', '_blank')} - visible={'larger-than-tablet'} - className={partners_buttons} - > - - - - ) - }, [path_name]) - - return ( - ( - - {is_prime_page ? ( - {localize('_t_Deriv - ) : ( - {localize('_t_Deriv - )} - - )} - items={affiliateNavItems} - has_top_nav - has_centered_items - > - - {generate_buttons} - - - - ) -} - -export default PaymentAgentAffiliateNav diff --git a/src/features/components/templates/navigation/tab-nav-without-border/index.tsx b/src/features/components/templates/navigation/tab-nav-without-border/index.tsx index f777ccc7925..d346ca030f6 100644 --- a/src/features/components/templates/navigation/tab-nav-without-border/index.tsx +++ b/src/features/components/templates/navigation/tab-nav-without-border/index.tsx @@ -45,7 +45,7 @@ const NavigationTabWithoutBorder = ({ tab_data }: NavigationTabWithoutBorderType }, [pathname]) return ( - + { return ( - + -